Repository: andy-man/ps4-wee-tools
Branch: master
Commit: 3941ac87e1d9
Files: 40
Total size: 932.3 KB
Directory structure:
gitextract_00zrpl40/
├── LICENSE
├── README.md
├── assets/
│ └── hw/
│ ├── mobo_pinout/
│ │ └── uart_v0.1_teensy2.0.hex
│ ├── spiway/
│ │ └── spiway_v0.60_teensy2.0.hex
│ ├── syscon_flasher/
│ │ ├── syscon_flasher_v2.05_teensy++2.0.hex
│ │ ├── syscon_flasher_v2.05_teensy_3.0.hex
│ │ ├── syscon_flasher_v2.05_teensy_3.2.hex
│ │ ├── syscon_flasher_v2.05_teensy_3.5.hex
│ │ ├── syscon_flasher_v2.05_teensy_3.6.hex
│ │ ├── syscon_flasher_v2.05_teensy_4.0.hex
│ │ ├── syscon_flasher_v2.05_teensy_4.1.hex
│ │ └── syscon_flasher_v2.05_teensy_lc.hex
│ └── syscon_reader/
│ ├── syscon_reader.hex
│ └── syscon_reader.ino
├── config.ini
├── data/
│ ├── data.py
│ ├── genData.py
│ └── md5.txt
├── fws/
│ └── README.md
├── lang/
│ ├── _i18n_.py
│ ├── en.py
│ ├── es.py
│ ├── pl.py
│ ├── pt.py
│ └── ru.py
├── ps4-wee-tools.py
├── run.bat
├── tools/
│ ├── AdvSFlashTools.py
│ ├── AdvSysconTools.py
│ ├── SFlashTools.py
│ ├── SysconTools.py
│ └── Tools.py
└── utils/
├── encdec.py
├── scflasher.py
├── serial.py
├── sflash.py
├── slb2.py
├── spiway.py
├── syscon.py
└── utils.py
================================================
FILE CONTENTS
================================================
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
.
================================================
FILE: README.md
================================================

# PS4 Wee Tools
PS4 wee tools is free open source app, that helps to work with PS4 sflash(NOR) / syscon dumps.
Written in Python to keep it simple.
Was tested with Python 3.8
There is also **[PS4 WeeTools PRO](https://ko-fi.com/andymandev)** with some extra functions _(only for donators/contributors)_
**Dependencies**
If you want to run python script directly you need these libs
(It can be easily installed with help of pip)
`pip install pycryptodome` since v0.7
`pip install pyserial` since v0.8.5
Teensy Loader Application - can be found **[here](https://www.pjrc.com/teensy/loader.html)**
**Documentation**
Visit our [WIKI](https://github.com/andy-man/ps4-wee-tools/wiki)
## Features
**NOR tool**
* PS4 Nor dump info
* MD5, SKU, Region, SN / Mobo SN, Southbridge, Board ID
* Torus (WiFi), MAC, HDD, FW (current, minimal), FW2 ver probability
* Flags toggle:
* boot mode, safe boot, update mode, arcade mode, kiosk mode (idu)
* registry recovery, manu, button swap, memory budget, slow hdd mode
* System flags cleaning
* Memory clock editing (GDDR5)
* SAMU boot flag edit
* Downgrade by slot switch (FW revert)
* Legitimate CoreOS Patch
* Southbridge patcher
* Torus (WiFi+BT) patcher
* Additional tools
* Extract NOR's partitions
* Build dump from extracted files
* View / Recover NVS areas (1C9, 1CA)
* View / Recover HDD EAP keys
* Get HDD EAP keys [keys.bin]
* EMC CFW for Aeolia
* Base validation and entropy stats
* Recovery corrupted partition
**Syscon tool**
* Syscon check
* Debug flag toggle
* Patchable status check
* SNVS blocks viewer (records and flatdata)
* Manual SNVS patch
* Auto SNVS patch (3 modes)
* SNVS rebuilding
* Boot mode selection
**Common**
* File browser
* Batch file rename (extract dump info to filename)
* Terminal (UART) with highlighting
* SPIway flasher
* Syscon r/w tool by Abkarino & EgyCnq
* Syscon reader by DarkNESmonk
* Multy files compare
* Pack / Unpack 2BLS files
* Language selection
Don't use if you don't understand what is it for!
## Credits
[Abkarino](https://github.com/AbkarinoMHM),
[zecoxao](https://github.com/zecoxao),
[EgyCnq](https://github.com/egycnq),
[Al-Azif](https://github.com/Al-Azif),
[Judges](https://github.com/hjudges),
[pearlxcore](https://github.com/pearlxcore),
[fail0verflow](https://github.com/fail0verflow),
[MSX-Celulares](https://github.com/MSXCelulares),
DarkNESmonk,
BwE
And of course [PSDevWiki](https://www.psdevwiki.com/ps4/)
## Donate
* **[Ko-fi/Paypal](https://ko-fi.com/andymandev)**
* **[Patreon](https://patreon.com/andy_man)**
* **[Boosty](https://boosty.to/andy_man/donate)**
* **[YandexMoney](https://yoomoney.ru/to/410011555252085)**
* **Bitcoin**: 39VaMnFqCQo751mvDc3M7ADVty71q2tWDm
* **TronLink**: TSYe254HXFapEwAAbZFkTHGewezZmnCKnU
## Links
* [X/Twitter](https://twitter.com/AndyManDev)
## Changelog
### v1.0.4
* 13.04 support
* Syscon Flasher 2.05
* boot modes bug-fix
### v1.0.3
* 13.00, 13.02 support
### v1.0.2
* 12.50, 12.52 support
* Polish language
### v1.0.1
* [fix] Syscon SNVS lib (active volume)
* 11.52 support
* Portuguese language
### v1.0.0
* [fix] FW detection
* [fix] syscon patch
* Syscon Flasher 2.02
* 11.50 support
* Spanish Language
* Russian Language
* Some code from PRO
### v0.9.9
* VS bug fix
* MBR magic check - fixed
* Warning for manual patch
* 11.02 support
### v0.9.8
* NVS areas recovery
* More info for validation
### v0.9.7
* Lang optimization
* Flag: resolution
* UART bugfix
* Assets update
* Root path bugfix (for exe)
### v0.9.5
* Quick/Expert mode for partition recovery
* Southbridge patcher
* Torus (WiFi+BT) patcher
* Util lib update
### v0.9.4
* Partition analyze and recovery
* Flags: active slot
* Code optimization
### v0.9.3
* SCFlasher: Safe syscon erase
* NOR: quick legitimate patch (drag&drop 2 dumps on run.bat)
* SC: "full" clean
* SC: autopatch now works with any* syscon
* SC: Method B bugfix
* SC: manual patch now works with flatdata
* SC: shows line counter
* utils bugfix
### v0.9.0
* Syscon Flasher
* Legitimate CoreOS Patch
* Terminal: title shows rx/tx bytes, show hidden bytes (switch), log to file
* Syscon tool: Added FW md5 check, patchable status bugfix
* Batch rename (extract dump info to filename)
* Code optimization
* Some bugfixes
### v0.8.9
* SPIway bug fix
* Mobo detecting update
* Quick slot switch (jump to spiway)
### v0.8.8
* SPIway flasher
* Flags toggler update (uart second offset)
* Minor bug fixes
### v0.8.7
* New md5 hashes (11.00)
* Board_id info
### v0.8.6
* EMC cmd mode
### v0.8.5
* UART terminal with syntax highlighting
* Integrated syscon reader (Arduino Nano V3)
* Preps for integrated flasher (SPIway & syscon)
* Accurate syscon patch and check
* Syscon boot mode selection
* Syscon flatdata viewer
* FW 10.70 md5
* bug fixes
### v0.8
* SNVS rebuilding (Syscon)
* Manual syscon patch allows to remove entire block
* Tips for syscon patching
* Extra syscon patch (stuck on FW update)
* NVStorage class improvements
### v0.7.9
* EAP key recovery
* Some optimization
### v0.7.8
* Added 6 patterns to slot switcher
* EMC CFW patcher for Aeolia
* UI bugs fixed
### v0.7.7
* SLB2 pack / unpack
* File selection screen upgrade
* Preparations for EMC cfw (Aeolia)
### v0.7.6
* FW2 version assumption
* Validation screen update
### v0.7.5
* Base validation (header, mbrs, emc, eap, wifi)
* Southbridge and torus Info
* Code refactoring
* Minor bugs fix
### v0.7
* Extract NOR's partitions
* Build dump from extracted files
* Get HDD EAP keys [keys.bin]
* File selection screen fix
### v0.6
* Now with color highlighting
* Dialog improvements
### v0.5
* New screen "Flags toggle"
* boot mode, safe boot, update mode, arcade mode, kiosk mode (idu)
* registry recovery, manu, button swap, memory budget, slow hdd mode
* Syscon auto SNVS patch (4 modes)
* New FW detection (experemental)
* Region info
* Minor improvements
### v0.4
* Syscon patchable check
* Manual patch bug fix
* Minor errors fix
### v0.3
* NOR Entropy stats
* Syscon manual patch
* Minor errors fix
### v0.2
* Syscon DEBUG toggle
* Syscon NVStorage class
* Syscon show active slot
### v0.1
* Files compare
* UART, Memtest toggle
* Sys flags clean
* Edit mem clock and SAMU
* Downgrade switch patterns
* Syscon base check
================================================
FILE: assets/hw/mobo_pinout/uart_v0.1_teensy2.0.hex
================================================
:10000000E2C0000009C1000007C1000005C10000F6
:1000100003C1000001C10000FFC00000FDC00000DE
:10002000FBC00000F9C0000008C6000083C6000045
:10003000F3C00000F1C00000EFC00000EDC0000000
:10004000EBC00000E9C00000E7C00000E5C0000010
:10005000E3C00000E1C00000DFC000004DC50000AB
:10006000DBC00000B4C20000DDC200000CC3000011
:10007000D3C00000D1C00000CFC00000CDC0000040
:10008000CBC00000C9C00000C7C00000C5C0000050
:10009000C3C00000C1C000000129022904290829A9
:1000A0001029202940298029012C022C0126022612
:1000B000042608261026202640268026402C802C48
:1000C0000123022304230823102320234023802319
:1000D0000120022004200820102020204020802021
:1000E000102C202C012F022F042F082F102F202F2F
:1000F000402F802F00010000A501120002000062C5
:100100000143000300005E010401030904440118D7
:10011000020309042C0116030309041E010C0C033D
:100120003100320033003400350000001603550062
:100130005300420020005300650072006900610016
:100140006C00000018035400650065006E00730029
:1001500079006400750069006E006F000000040300
:10016000090409024300020100C032090400000131
:1001700002020100052400100105240100010424ED
:100180000206052406000107058203080040090451
:100190000100020A000000070503024000000705F5
:1001A00084024000001201000202000020C01683F9
:1001B000047202010203010001C1020180360181C3
:1001C00036006103A10A11241FBECFEFD0E2DEBFCB
:1001D000CDBF11E0A0E0B1E0E2ECF5E100E00BBF43
:1001E00002C007900D92A033B107D9F722E0A0E337
:1001F000B1E001C01D92A031B207E1F710E0C3EEFB
:10020000D0E004C02197FE010E94D60AC13ED1076A
:10021000C9F7F7D20C94DF0AF3CE569A5E985C9A2F
:10022000549A409100015091010160910201709136
:10023000030186E092E00E949A092091000130912A
:1002400001014091020150910301CA01B901969543
:1002500087957795679560587B47814E9F4F0E94A1
:10026000B40AB9014FEF85E891E078C10F931F936D
:10027000CF93DF9386E092E0E2D6EC0118161906E0
:1002800084F585E891E0E4D01816190654F5AE011E
:10029000C135D10514F040E550E0841795070CF402
:1002A000AC0161E371E086E092E00E94EB09AC01F1
:1002B00061E371E085E891E015D25E9A0FB6F8949B
:1002C0008091FB019091FC01A091FD01B091FE0194
:1002D0000FBE8093810190938201A0938301B0931C
:1002E000840185E891E0A4D0EC01181619067CF58C
:1002F00086E092E00CD7181619064CF5AE01C13510
:10030000D10514F040E550E0841795070CF4AC01DA
:1003100061E371E085E891E049D2AC0161E371E00D
:1003200086E092E007D75E9A0FB6F8948091FB01C1
:100330009091FC01A091FD01B091FE010FBE809350
:10034000810190938201A0938301B093840186E0A0
:1003500092E00E949D0A882351F090913001911102
:1003600006C05C98E8EEF3E03197F1F75C9A809371
:1003700030010FB6F8948091FB019091FC01A0919F
:10038000FD01B091FE010FBE4091810150918201AB
:100390006091830170918401841B950BA60BB70BB0
:1003A0000497A105B10508F05E9886E092E00E94EE
:1003B0008D0A0091000110910101209102013091FC
:1003C0000301601771078207930769F186E092E0E5
:1003D0000E948D0A9B01AC01209300013093010122
:1003E0004093020150930301211581EE3807410526
:1003F000510551F44FEF62E270E085E891E0DF9142
:10040000CF911F910F91AAC0CA01B9019695879506
:100410007795679560587B47814E9F4F0E94B40A3D
:10042000B9014FEFEACFDF91CF911F910F9108955E
:100430005091B9014091B801852F90E0242F30E010
:10044000541718F0821B930B0895805C9F4FFACFCE
:1004500050918F0140918E01252F30E0842F90E044
:10046000821B930B541710F08796089501970895F7
:100470008091B901E091B8018E1751F0EF5FE0343F
:1004800008F0E0E0F0E0E654FE4F808190E008954F
:100490008FEF9FEF08959091B9018091B80198175F
:1004A00079F09091B8019F5F903408F090E0E92FC7
:1004B000F0E0E654FE4F80819093B80190E00895FB
:1004C0008FEF9FEF089580918D018111FCCF0895EA
:1004D0002091C90023FD06C021E0FC01228390E0A9
:1004E00080E00895809104018F3F41F080918D015B
:1004F000811104C0E0910401F0E0DFD190918F01FF
:1005000080918E01981304C08091C80085FD19C0A8
:1005100080918F018F5F8832F8F490918E01981747
:10052000E1F3E82FF0E0E057FE4F608391E0909315
:100530008D0180938F018091C90080628093C900F2
:1005400008C08FB7F8946093CE0091E090938D012E
:100550008FBF81E090E0089580E0DFCF1F93CF93BD
:10056000DF93EB01142F409304014F3F29F0842FB8
:1005700093D1E12FF0E0A7D1C0FF24C0C13080E1CA
:10058000D80700F582E08093C8002197D093CD0072
:10059000C093CC008091C90083FD10C01092B901B6
:1005A0001092B80110928F0110928E0110928D015D
:1005B00086E08093CA0088ED8093C900DF91CF91D7
:1005C0001F9108951092C800D695C795DECF1F924F
:1005D0000F920FB60F9211240BB60F922F938F9399
:1005E0009F93EF93FF939091CE008091B9018F5F1D
:1005F000803408F080E02091B801281739F0E82F06
:10060000F0E0E654FE4F90838093B901FF91EF91A3
:100610009F918F912F910F900BBE0F900FBE0F9057
:100620001F9018951F920F920FB60F9211240BB6C0
:100630000F928F939F93EF93FF9390918F018091EF
:100640008E01981310C08091C9008F7D8093C900DE
:10065000FF91EF919F918F910F900BBE0F900FBE66
:100660000F901F90189580918E018F5F883208F04F
:1006700080E0E82FF0E0E057FE4F90819093CE00AD
:1006800080938E01E5CF1F920F920FB60F92112427
:100690000BB60F928F93EF93FF9310928D01809181
:1006A00004018F3F21F0E0910401F0E00CD1FF91B3
:1006B000EF918F910F900BBE0F900FBE0F901F9078
:1006C0001895E5E8F1E0128288EE93E0A0E0B0E052
:1006D00083839483A583B683178280E191E091831D
:1006E00080830895CF92DF92EF92FF920F931F9332
:1006F000CF93DF936C01EB017B01E40EF51E10E05C
:1007000000E0CE15DF0561F06991D601ED91FC9115
:100710000190F081E02DC6010995080F191FF1CF56
:10072000C801DF91CF911F910F91FF90EF90DF9063
:10073000CF900895CF92DF92EF92FF92CF93DF9305
:10074000EC010FB6F894C090FB01D090FC01E09052
:10075000FD01F090FE010FBEE881F9810284F3856E
:10076000E02DCE01099597FF1AC00FB6F89480913D
:10077000FB019091FC01A091FD01B091FE010FBE23
:100780008C199D09AE09BF094B815C816D817E8109
:1007900084179507A607B707F8F28FEF9FEFDF9151
:1007A000CF91FF90EF90DF90CF900895AF92BF92DE
:1007B000CF92DF92EF92FF920F931F93CF93DF932D
:1007C0005C017B018B01040F151FEB016E01CE183C
:1007D000DF08C017D10739F0C501ACDF97FF0FC0A4
:1007E00081E0F5018783C601DF91CF911F910F91C1
:1007F000FF90EF90DF90CF90BF90AF9008958993D6
:10080000E5CF24D00ADD32DDFECF1DBA109268009C
:100810001CBC10BE1FBA10927A0010926E0010928B
:100820006F0010927000109271001092C900109227
:10083000BC0011B814B817B81AB81DB810BA12B85D
:1008400015B818B81BB81EB811BA0895F894E1E6A7
:10085000F0E020E82083108283E084BD85BDEEE6D1
:10086000F0E080818160808391E09093800082E05D
:10087000809381009093B0008093B100909390009A
:100880008093910086E880937A0020937B001092F9
:100890007E00B1D1789408958E3270F4E8E9F0E0EA
:1008A000880FE80FF11D2591E491F0E09FB7F894CF
:1008B0008181822B81839FBF0895EE3250F4EE0F29
:1008C000E659FB4F0994EE3220F4EE0FEA53FB4F4A
:1008D00009940895589AB6C0599AD0C05A9A089562
:1008E0005B9A08955C9A08955D9A08955E9A0895BA
:1008F0005F9A0895709A0895719A0895409A08959C
:10090000419A0895429A0895439A0895449AC8C016
:10091000459AC0C0469AB8C0479A0895769A0895F5
:10092000779A0895289A0895299A08952A9A0895F9
:100930002B9A08952C9A9CC02D9A88C02E9A8CC010
:100940002F9A90C0109A0895119A0895129A0895B6
:10095000139A0895149A0895159A0895169A089569
:10096000179A0895749A0895759A0895889A089523
:10097000899A08958A9A08958B9A08958C9A089571
:100980008D9A08958E9A08958F9A089558985AC00E
:10099000599874C05A9808955B9808955C98089582
:1009A0005D9808955E9808955F98089570980895E9
:1009B000719808954098089541980895429808952F
:1009C0004398089544986CC0459864C046985CC0AC
:1009D00047980895769808957798089528980895E7
:1009E000299808952A9808952B9808952C9840C026
:1009F0002D982CC02E9830C02F9834C01098089590
:100A000011980895129808951398089514980895C8
:100A1000159808951698089517980895749808954C
:100A20007598089588980895899808958A980895E2
:100A30008B9808958C9808958D9808958E980895B0
:100A40008F980895E4B5EF7DE4BD0895E0918000AE
:100A5000EF77E09380000895E0918000EF7DE093D0
:100A600080000895E0918000E77FE0938000089582
:100A7000E091B000EF77E093B0000895E091B0000E
:100A8000EF7DE093B0000895E0919000EF77E09360
:100A900090000895E0919000EF7DE093900008951C
:100AA000E0919000E77FE09390000895F89484B778
:100AB000877F84BF80916000806180936000109286
:100AC000600080E29EE40197F1F781E08093E0000E
:100AD00080E28093D80080E69AEE0197F1F795DEE8
:100AE0000C9400FEFFCFF89490DE80E69AEE01971A
:100AF000F1F70C940000FFCF8F938FB78F93809105
:100B0000FA018D5F8D37D0F48093FA018091FB015B
:100B10008F5F8093FB01D8F08091FC018F4F809311
:100B2000FC01A8F08091FD018F4F8093FD0178F0CA
:100B30008091FE018F4F8093FE0109C08D578093F5
:100B4000FA018091FB018E5F8093FB0128F7809171
:100B5000FF018C5F8093FF0158F0809100028F4F5E
:100B60008093000228F0809101028F4F8093010250
:100B70008F918FBF8F911895CF92DF92EF92FF9256
:100B80006B017C0119D09B01C114D104E104F10473
:100B900029F4FF90EF90DF90CF9008950DD0621B65
:100BA000730B683E734080F381E0C81AD108E108F6
:100BB000F10828513C4FE8CF0FB6F89466B515B24E
:100BC0007091FF0180910002909101020FBE10FE12
:100BD00005C06F3F19F07C5F8F4F9F4F1124002499
:100BE000660F001C660F001C702908958091E800B4
:100BF00080FFFCCF08958091D80087FF02C085FF59
:100C00001BC081E88093D70080EA8093D80086E1FA
:100C100089BD09B400FEFDCF80E98093D800109211
:100C2000E000109212021092110210921002109223
:100C3000E1008DE08093E20008951F920F920FB6BD
:100C40000F9211240BB60F922F933F934F935F9304
:100C50006F937F938F939F93AF93BF93EF93FF9384
:100C60009091E1001092E10093FF11C01092E90011
:100C700081E08093EB001092EC0082E28093ED0023
:100C800088E08093F000109212021092100292FFFE
:100C90001DC0809112028823C9F08091050288232B
:100CA00059F0815080930502811106C084E0809341
:100CB000E9008AE38093E80080910402882331F000
:100CC000815080930402811101C0F0DE90FF0CC0BE
:100CD00080E18093E2001092120281E08093110281
:100CE00080EA8093D80019BC80911102882379F0A2
:100CF00094FF0DC086E189BD09B400FEFDCF80E9F7
:100D00008093D8008DE08093E20010921102FF9151
:100D1000EF91BF91AF919F918F917F916F915F9173
:100D20004F913F912F910F900BBE0F900FBE0F90E0
:100D30001F9018951F920F920FB60F9211240BB6A9
:100D40000F92EF92FF920F931F932F933F934F9326
:100D50005F936F937F938F939F93AF93BF93CF9343
:100D6000DF93EF93FF931092E9008091E80083FFF7
:100D700020C0D091F100C091F100E090F100F0901E
:100D8000F1000091F1001091F1002091F1003091FB
:100D9000F10082EF8093E800C63009F05BC0E4EF19
:100DA000F0E085919591E816F90639F03596C15035
:100DB000C1F781E28093EB002BC0859195910817D4
:100DC000190711F03396F3CF4591559184912F3F38
:100DD000310519F010F02FEF30E0821708F4282FBA
:100DE0003EEF8091E800982F9570D9F382FD10C0F6
:100DF000822F213208F080E2982F911124C0922F87
:100E0000981B892F3093E80091111BC02032C8F441
:100E1000FF91EF91DF91CF91BF91AF919F918F9112
:100E20007F916F915F914F913F912F911F910F9102
:100E3000FF90EF900F900BBE0F900FBE0F901F9082
:100E40001895282FCECFFA0145914093F100AF01BC
:100E50009150D3CFC53049F48EEF8093E800C6DEC1
:100E60008E2D80688093E300D3CFC93021F5D11156
:100E7000A0CFE092120210921002109205028EEFA3
:100E80008093E80081E0E7EBF1E08093E900959141
:100E90009093EB00992331F095919093EC0095910C
:100EA0009093ED008F5F853081F78EE18093EA00AB
:100EB0001092EA00ADCFC83061F4D03809F079CF94
:100EC00095DE809112028093F1008EEF8093E8000E
:100ED0009FCFC13279F4D13A09F06BCF87DEE5E0DC
:100EE000F1E080818093F100319681E0EC30F807E9
:100EF000C1F7EBCFC03209F047C0D13209F059CF6A
:100F00008091E80082FFFCCFE5E0F1E08091F10004
:100F10008083319691E0EC30F907C1F78BEF809335
:100F2000E8008EEF8093E8003091050140910601C2
:100F3000809107012091080190E0B0E0A0E0DC0181
:100F400099278827942B832BB22B86389105A105EE
:100F5000B10521F48FE0809304025ACF86399105C0
:100F6000A105B10509F054CF84E08093E9009FEF1B
:100F70008091EE00837009F4B6DD9093E8008091D3
:100F8000E80082FDFCCFF4CFC23239F4D13209F04F
:100F900010CFE09210022ADE98CFC33221F4D13272
:100FA00009F007CFF8CFC11111C020DED23849F4C3
:100FB0000093E900C091EB00C5FBCC27C0F910926B
:100FC000E900C093F1001092F1007FCF8C2F8D7F4C
:100FD000813009F0EECED23009F0EBCEEF2809F0E7
:100FE000E8CE0F778FEF800F863008F0E2CE8EEFDD
:100FF0008093E8000093E900C33009F4DACE89E178
:101000008093EB0081E090E001C0880F0A95EAF739
:101010004DCFCF93DF931F92CDB7DEB76983DC014D
:10102000ED91FC910280F381E02D41E050E0BE01A2
:101030006F5F7F4F09950F90DF91CF910895FC016D
:101040008FB7F8949091120291110CC090E08FBF6D
:101050002085318537FD03C09F3F09F09F5F892FB1
:1010600090E0089593E09093E9009091F20091113F
:10107000EECF2091E80022FFE9CF25FDE7CF2BE658
:101080002093E800E4CFCF93DF93EC018885998526
:1010900097FF09C0E881F9810284F385E02DCE0134
:1010A00009959987888788859985DF91CF910895DB
:1010B000FC012085318537FD07C04FEF5FEF518779
:1010C0004087C901992708959FB7F894809112022B
:1010D000811104C09FBF8FEF9FEF089583E080933D
:1010E000E9002BE68091E80085FD05C082FFF2CF84
:1010F0002093E800F7CF8091F1002091E80025FDD2
:1011000003C02BE62093E8009FBF90E008958091F4
:101110001202882361F08FB7F89494E09093E9006D
:101120009091F2008FBF80E4891B90E0089590E0D9
:1011300080E00895BF92CF92DF92EF92FF920F93DB
:101140001F93CF93DF937C0180911202811110C015
:1011500081E0F701828310E000E0C801DF91CF91C8
:101160001F910F91FF90EF90DF90CF90BF90089567
:101170002FB7F89484E08093E900809103028823DC
:1011800041F08091E80085FD02C02FBFE1CF1092B1
:10119000030210E000E084E0D82E90E4C92EA1EF15
:1011A000B0E03AE3B32E33E04115510509F4C0C075
:1011B0008091E400815F9091E80095FD16C02FBFFB
:1011C0009091E400891306C081E080930302F70147
:1011D0008283C3CF90911202911102C081E0F7CFB8
:1011E0002FB7F894D092E900E6CF8091F2009C2DC1
:1011F000981B9417150611F008F0942FE92FF0E0D2
:101200004E1B5F0B0E0F1F1FEB01E0E4E91BE034E8
:1012100028F4EE0FFF27E15FF64F099480C0999103
:101220009C9399919C9399919C9399919C9399915A
:101230009C9399919C9399919C9399919C9399914A
:101240009C9399919C9399919C9399919C9399913A
:101250009C9399919C9399919C9399919C9399912A
:101260009C9399919C9399919C9399919C9399911A
:101270009C9399919C9399919C9399919C9399910A
:101280009C9399919C9399919C9399919C939991FA
:101290009C9399919C9399919C9399919C939991EA
:1012A0009C9399919C9399919C9399919C939991DA
:1012B0009C9399919C9399919C9399919C939991CA
:1012C0009C9399919C9399919C9399919C939991BA
:1012D0009C9399919C9399919C9399919C939991AA
:1012E0009C9399919C9399919C9399919C9399919A
:1012F0009C9399919C9399919C9399919C9399918A
:101300009C9399919C9399919C9399919C93999179
:101310009C9399919C9399919C9399919C93BE01D4
:101320008091E80085FFB092E800309305023CCF41
:101330002FBF13CF2FEF3FEFFC01318720875BDCFE
:101340000FB6F8948091FB019091FC01A091FD01F2
:10135000B091FE010FBE9C0180911202882329F0FA
:1013600068EC70E080E090E007CC80911102882367
:1013700001F10FB6F8944091FB015091FC0160918E
:10138000FD017091FE010FBE80911102882389F04A
:101390000FB6F8948091FB019091FC01A091FD01A2
:1013A000B091FE010FBE841B950B8B3F910560F33E
:1013B00008950FB6F8948091FB019091FC01A091E3
:1013C000FD01B091FE010FBE821B930B853C99403D
:1013D00008F4C2CF08958F929F92AF92BF92CF929E
:1013E000DF92EF92FF920F931F93CF93DF93EC0165
:1013F0000FB6F894C090FB01D090FC01E090FD0185
:10140000F090FE010FBE4115510529F1888599859F
:1014100097FD11C0FB0180838FEF9FEF998788872D
:10142000415051096F5F7F4F91E04115510521F403
:1014300041E050E010C090E080E0FA01492F582FC1
:1014400013E00BE68FB7F89490911202911111C03E
:101450008FBF81E08F83CA01DF91CF911F910F91E0
:10146000FF90EF90DF90CF90BF90AF909F908F90C4
:1014700008951093E9009091E80092FFE9CF209140
:10148000F2002E171F0611F008F02E2F362FDB0169
:101490009A2F931B921720F49091F1009D93F8CF0F
:1014A00030E0620F731F9091E80095FF0093E80011
:1014B0008FBF420F531FE21BF30B69F20FB6F89474
:1014C0008091FB019091FC01A091FD01B091FE0182
:1014D0000FBE8C199D09AE09BF098B809C80AD8021
:1014E000BE8088159905AA05BB0508F4ABCFB1CF1E
:1014F0008FB7F89490911202992361F090910502B0
:10150000992341F094E09093E9009AE39093E800E6
:10151000109205028FBF0895EBCFE5E0F1E0308136
:1015200041816281238170E090E080E0CB017727E8
:101530006627742B632B922B089580911002817083
:101540000895E6E0F2E011861086128288EE93E0BC
:10155000A0E0B0E083839483A583B683178282E200
:1015600091E0918380830895A1E21A2EAA1BBB1BF0
:10157000FD010DC0AA1FBB1FEE1FFF1FA217B3075F
:10158000E407F50720F0A21BB30BE40BF50B661F75
:10159000771F881F991F1A9469F760957095809539
:1015A00090959B01AC01BD01CF010895EE0FFF1F87
:1015B0000024001C0BBE0790F691E02D0994F894CE
:0215C000FFCF5B
:1015C20000C20100FF00E10000000008000000006E
:1015D200680272032802630218024B0238020000FA
:1015E200000009089A0887088C0A1F08580843084F
:00000001FF
================================================
FILE: assets/hw/spiway/spiway_v0.60_teensy2.0.hex
================================================
:1000000098C00000B3C00000B1C00000AFC0000045
:10001000ADC00000ABC00000A9C00000A7C0000038
:10002000A5C00000A3C00000CEC2000006C30000AF
:100030009DC000009BC0000099C0000097C0000058
:1000400095C0000093C0000091C000008FC0000068
:100050008DC000008BC0000089C0000087C0000078
:1000600085C0000083C0000081C000007FC0000088
:100070007DC000007BC0000079C0000077C0000098
:1000800075C0000073C0000071C000006FC00000A8
:100090006DC000006BC000000001000015011200DF
:1000A000020000D2004300030000CE000401030957
:1000B00004CA002002030904C6004A03030904C25B
:1000C000000C0C030D014A03190120036301040312
:1000D000090409024300020100C0FA0904000001FA
:1000E000020201000524001001052401010104247D
:1000F00002060524060001070582031000400904DA
:100100000100020A00000007050302400000070585
:1001100084024000001201000202000010C0167AA2
:10012000040001010203010001C1120180360181B6
:10013000360011241FBECFEFD0E2DEBFCDBF11E0ED
:10014000A0E0B1E0EAEAFFE000E00BBF02C00790E8
:100150000D92A438B107D9F721E1A4E8B1E001C0BC
:100160001D92A239B207E1F79CD61DC749CF8091F5
:10017000E80080FFFCCF089581E88093D70080EAF3
:100180008093D80086E189BD09B400FEFDCF80E9E7
:100190008093D8001092E00010928F1110928C1171
:1001A0008CE08093E200789408959FB7F894809152
:1001B0008F11811104C09FBF8FEF9FEF089583E0DF
:1001C0008093E9002BE68091E80085FD05C082FF61
:1001D000F2CF2093E800F7CF8091F1002091E80062
:1001E00025FD03C02BE62093E8009FBF90E0089513
:1001F00080918F11882371F08FB7F89493E09093DA
:10020000E9009BE62091E80025FF03C09093E800F9
:10021000F9CF8FBF089590918F11911102C08FEF88
:1002200008959FB7F89424E02093E90020918D1160
:10023000222341F02091E80025FD02C09FBFEFCFAF
:1002400010928D112091E400205F34E04091E8008D
:1002500045FD12C09FBF9091E400921304C081E05D
:1002600080938D11DCCF90918F119923C1F29FB7AC
:10027000F8943093E900EACF8093F1008091E80090
:1002800085FD03C08AE38093E80085E080938E11AA
:100290009FBF80E00895DC0180918F11882371F069
:1002A0008FB7F89494E09093E90090918D11992381
:1002B00049F09091E80095FD03C08FBF8FEF08953E
:1002C00010928D1134E040E45AE325E06115710588
:1002D00009F477C19091E400905FE091E800E5FDBA
:1002E00012C08FBF8091E400891304C081E0809325
:1002F0008D11E4CF80918F11882301F38FB7F8948B
:100300003093E900EACF9091F200E42FE91B9E2F91
:10031000E617170611F008F0962FE92FF0E06E1B94
:100320007F0B913408F040C1E956FE4F33C6D80226
:10033000D402D002CC02C802C402C002BC02B8027D
:10034000B402B002AC02A802A402A0029C0298026D
:10035000940290028C028802840280027C0278025D
:10036000740270026C026802640260025C0258024D
:10037000540250024C024802440240023C0238023D
:10038000340230022C022802240220021C0218022D
:10039000140210020C02080204020002FC01F8011F
:1003A000F401F001EC01E801E401E001DC01D80115
:1003B0009C919093F10011969C919093F10011966D
:1003C0009C919093F10011969C919093F10011965D
:1003D0009C919093F10011969C919093F10011964D
:1003E0009C919093F10011969C919093F10011963D
:1003F0009C919093F10011969C919093F10011962D
:100400009C919093F10011969C919093F10011961C
:100410009C919093F10011969C919093F10011960C
:100420009C919093F10011969C919093F1001196FC
:100430009C919093F10011969C919093F1001196EC
:100440009C919093F10011969C919093F1001196DC
:100450009C919093F10011969C919093F1001196CC
:100460009C919093F10011969C919093F1001196BC
:100470009C919093F10011969C919093F1001196AC
:100480009C919093F10011969C919093F10011969C
:100490009C919093F10011969C919093F10011968C
:1004A0009C919093F10011969C919093F10011967C
:1004B0009C919093F10011969C919093F10011966C
:1004C0009C919093F10011969C919093F10011965C
:1004D0009C919093F10011969C919093F10011964C
:1004E0009C919093F10011969C919093F10011963C
:1004F0009C919093F10011969C919093F10011962C
:100500009C919093F10011969C919093F10011961B
:100510009C919093F10011969C919093F10011960B
:100520009C919093F10011969C919093F1001196FB
:100530009C919093F10011969C919093F1001196EB
:100540009C919093F10011969C919093F1001196DB
:100550009C919093F10011969C919093F1001196CB
:100560009C919093F10011969C919093F1001196BB
:100570009C919093F10011969C919093F1001196AB
:100580009C919093F10011969C919093F10011969B
:100590009C919093F10011969C919093F10011968B
:1005A0009C919093F10011969C919093F10011967B
:1005B0009091E80095FF5093E80020938E118FBF33
:1005C00085CE80E008951F920F920FB60F921124EE
:1005D0008F939F938091E1001092E10083FF11C0FF
:1005E0001092E90091E09093EB001092EC0092E100
:1005F0009093ED0098E09093F00010928F1110927C
:100600008C1182FF13C080918F11882379F0809123
:100610008E11882359F0815080938E11811106C06C
:1006200084E08093E9008AE38093E8009F918F91B2
:100630000F900FBE0F901F9018951F920F920FB63C
:100640000F9211240BB60F92EF92FF920F931F930C
:100650002F933F934F935F936F937F938F939F93CA
:10066000AF93BF93CF93DF93EF93FF931092E90083
:100670008091E80083FF56C0D091F100C091F10055
:100680008091F100E090F100FE2CE82E8091F100C5
:100690000091F100102F082F8091F1009091F1004E
:1006A00022EF2093E800C63009F066C028E930E068
:1006B000F90145915491E416F50669F5F901329670
:1006C000459154910417150731F5F9013496459178
:1006D0005491F9013696E4918F3F910519F010F08D
:1006E0008FEF90E0E81708F48E2F3EEF9091E8002E
:1006F000292F2570D9F392FD26C0982F813108F05B
:1007000090E1FA01292F222399F064916093F1007E
:1007100021503196F8CF295F3F4F40E0223C34070B
:1007200009F0C6CF81E28093EB000DC0892FDECFA8
:10073000490F511DE82FE91B9E2F3093E800E1116E
:10074000F5CF803198F7FF91EF91DF91CF91BF9175
:10075000AF919F918F917F916F915F914F913F9159
:100760002F911F910F91FF90EF900F900BBE0F9064
:100770000FBE0F901F901895C53049F48EEF8093EF
:10078000E800F5DC8E2D80688093E300DCCFC93073
:1007900069F5D111C7CFE0928F1110928C11109290
:1007A0008E118EEF8093E80021E087E291E02093A4
:1007B000E900AC014F5F5F4FFC0134913093EB00D7
:1007C000332391F0FA0144914093EC003196E49187
:1007D0000396E093ED002F5F253049F78EE180937B
:1007E000EA001092EA00AFCFCA01F5CFC83061F439
:1007F000D03809F097CFBBDC80918F118093F10046
:100800008EEF8093E8009FCFC13279F4D13A09F09E
:1008100089CFADDCE6E0F1E08DE091E0219120931D
:10082000F1008E179F07D1F7EBCFC032A9F4D13278
:1008300009F078CF8091E80082FFFCCFE6E0F1E09C
:100840008DE091E02091F10021938E179F07D1F761
:100850008BEF8093E800D4CFC23239F4D13209F063
:1008600061CFE0928C1183DCCBCFC11111C07FDC52
:10087000D23849F40093E900C091EB00C5FBCC27C6
:10088000C0F91092E900C093F1001092F100B8CFC6
:100890008C2F8D7F813009F045CFD23009F042CFC7
:1008A000EF2809F03FCF0F778FEF800F843008F0EB
:1008B00039CF8EEF8093E8000093E900C33009F44C
:1008C00031CF89E18093EB0081E090E001C0880F97
:1008D0000A95EAF784CF84B1806784B92E9A2C9860
:1008E0002D9A089511B814B817B81AB81DB810BACF
:1008F00012B815B818B81BB81EB811BA08952898C0
:100900008FE98EBD0DB407FEFDCF1EBC0DB407FEF2
:10091000FDCF8EB5809386011EBC0DB407FEFDCFC2
:100920008EB5809385011EBC0DB407FEFDCF8EB53C
:1009300080938401289A81E008950F931F93CF93A9
:10094000DF9380918B11882359F0809101018430CD
:1009500039F4289887EB8EBD0DB407FEFDCF289A99
:10096000DFB7F894289880918B11811105C0809190
:100970000101833009F04FC083E08EBD0DB407FE46
:10098000FDCF80910101843031F4809187018EBDCB
:100990000DB407FEFDCF809188018EBD0DB407FE1A
:1009A000FDCF809189018EBD0DB407FEFDCF8091F2
:1009B0008A018EBD0DB407FEFDCFC0E0809102011B
:1009C00090910301A0910401B09105014C2F50E0DA
:1009D00070E060E08C019D01ECE03695279517955D
:1009E0000795EA95D1F74017510762077307C8F4D6
:1009F000EBE8F1E01EBC0DB407FEFDCF8EB5819390
:100A000081E1EB38F807B1F760E070E18BE891E045
:100A100042DCCF5FD3CF83E18EBD0DB407FEFDCFA7
:100A2000B0CFBC017F70EBE8F1E09F012B58314063
:100A30002617370738F41EBC0DB407FEFDCF2EB5C0
:100A40002193F3CF289A8BE891E025DCDFBF81E08A
:100A5000DF91CF911F910F910895289885E08EBD69
:100A60000DB407FEFDCF1EBC0DB407FEFDCF8EB545
:100A7000289A089528988BE28EBD0DB407FEFDCF0D
:100A80001EBC0DB407FEFDCF8EB5289A0895CF92F7
:100A9000DF92EF92FF920F931F93CF93DF9380919A
:100AA0008B11882359F080910101843039F4289802
:100AB00087EB8EBD0DB407FEFDCF289A2C9AC1E0BE
:100AC000D0E086E0F82E92E0E92E22E1D22E35E049
:100AD000C32E2898FEBC0DB407FEFDCF289ABDDFBB
:100AE00081FFF7CF289880918B11811105C08091EB
:100AF0000101833009F058C0EEBC0DB407FEFDCFF4
:100B000080910101843031F4809187018EBD0DB454
:100B100007FEFDCF809188018EBD0DB407FEFDCF8D
:100B2000809189018D2B8EBD0DB407FEFDCF809184
:100B30008A018EBD0DB407FEFDCF00E011E035DB6C
:100B40008F3F9807B1F18EBD0DB407FEFDCF015068
:100B50001109A9F7289A2898CEBC0DB407FEFDCF3D
:100B60001EBC0DB407FEFDCF0EB400FCF9CF289AD1
:100B7000CF3F79F080918601823C39F480918501E4
:100B8000883119F477DF85FDC0E0DF5FD03109F0EF
:100B9000A0CF2C988C2FDF91CF911F910F91FF90B8
:100BA000EF90DF90CF900895DEBC0DB407FEFDCF2F
:100BB000A7CFCFEFCFCFCF932C9AC6E02898CEBD4A
:100BC0000DB407FEFDCF289A48DF81FFF7CF2898A4
:100BD00080E68EBD0DB407FEFDCF289A289885E0EB
:100BE0008EBD0DB407FEFDCF1EBC0DB407FEFDCFBC
:100BF0000EB400FCF9CF289A2C982FDF8C7B81F45F
:100C000080918601823C71F480918501883151F494
:100C100031DF982F907C81E009F080E0CF9108953A
:100C20008FEFFCCF81E0FACFCF9380918B11882397
:100C300059F080910101843039F4289887EB8EBDFA
:100C40000DB407FEFDCF289A2C9AC6E02898CEBD99
:100C50000DB407FEFDCF289A00DF81FFF7CF28985B
:100C600080918B11811105C080910101833009F0C1
:100C700044C088ED8EBD0DB407FEFDCF809101010B
:100C8000843031F4809187018EBD0DB407FEFDCF15
:100C9000809188018EBD0DB407FEFDCF8091890142
:100CA0008EBD0DB407FEFDCF80918A018EBD0DB4BF
:100CB00007FEFDCF289A289885E08EBD0DB407FE6B
:100CC000FDCF1EBC0DB407FEFDCF0EB400FCF9CF66
:100CD000289A2C98C2DE8C7BB1F480918601823CEC
:100CE000A1F480918501883181F4C4DE982F907C35
:100CF00081E009F080E0CF9108958CED8EBD0DB4B8
:100D000007FEFDCFBBCF8FEFF6CF81E0F4CF0F937F
:100D10001F93CF93DF93C7E8D1E00BE811E045DAEA
:100D20008F3F980759F089930C171D07C1F78BE483
:100D300072DADF91CF911F910F91FFCD82E5DF91A4
:100D4000CF911F910F9167CA0F931F93CF93DF939A
:100D5000C7E8D1E00BE811E028DA8F3F980779F077
:100D600089930C171D07C1F792DE181634F48BE433
:100D7000DF91CF911F910F914ECA882311F082E528
:100D8000F7CF86E5F5CF17DF181614F48BE443CAC6
:100D9000882311F080E5FBCF86E5F9CF0F931F93F1
:100DA000CF93DF93C7E8D1E00BE811E0FED98F3F86
:100DB000980799F089930C171D07C1F735DF1816AE
:100DC00034F48BE4DF91CF911F910F9124CA8823D3
:100DD00011F080E5F7CF86E5F5CF82E5F3CF8FDD23
:100DE000882349F08091860116DA8091850113DA13
:100DF0008091840110CA80E00EDA80E00CDA80E095
:100E0000F9CFF89481E08093E00080E28093D800ED
:100E100029EC30E0F90110828FE996E8A1E0B0E01A
:100E20000197A109B109000001F0D1F7C8950000B0
:100E30001DBA109268001CBC10BE1FBA10927A0036
:100E400010926E0010926F0010927000109271005C
:100E500010821092BC0011B814B817B81AB81DB897
:100E600010BA12B815B818B81BB81EB811BA0C943D
:100E700000FE0895CF93DF9300D0CDB7DEB7209169
:100E80009011309191112115310511F422E931E1D0
:100E9000CE010196821B930B0F900F90DF91CF91A3
:100EA000089580E88093610091E09093610091E85B
:100EB00095BF85BF17DD1CBC209A289A80E18CBDA8
:100EC00084B1866084B923982B9A8DB581608DBDDD
:100ED00080E58CBD00DD50D980918F118823E1F32E
:100EE0008FE794E8AEE1B0E00197A109B1090000F5
:100EF00001F0D1F7C8950000C1E0D4E013E00FEF96
:100F000077D980918F118823D9F34FD98F3F9807D4
:100F1000C1F380319105A8F78057984FFC013AC082
:100F2000A007A307AC0781078107AE07B107B40785
:100F3000B607B807BA07BC07BE07C107C407C7078B
:100F400080E069D9DECF96DFF82EE92E8CE363D9F5
:100F50008E2D61D98F2DF5CF54DFD3CF10920001A4
:100F6000D0CF00930001CDCF3ADFCBCFD0DEC9CFB9
:100F7000EBDEC7CF13DFC5CF06DFC3CF1093010170
:100F8000C0CFD0930101BDCFC0938B11BACF1092C7
:100F90008B11B7CFEE0FFF1F0024001C0BBE079074
:0A0FA000F691E02D0994F894FFCFBC
:100FAA00FF040000010000E10000000008310032E7
:100FBA000033003400350000005300500049005748
:100FCA0000610079002000500053003400200053D3
:100FDA000046006C00610073006800200046006C47
:100FEA00006100730068006500720020005500531C
:100FFA000042002000530065007200690061006C25
:10100A000000006A00750064006700650073002F25
:10101A0000410062006B006100720069006E006F9F
:04102A0000000000C2
:00000001FF
================================================
FILE: assets/hw/syscon_flasher/syscon_flasher_v2.05_teensy++2.0.hex
================================================
:10000000E2C000000AC1000008C1000006C10000F3
:1000100004C1000002C1000000C10000FEC00000D9
:10002000FCC00000FAC000000C9426120C94A3122D
:10003000F4C00000F2C00000F0C00000EEC00000FC
:10004000ECC00000EAC00000E8C00000E6C000000C
:10005000E4C00000E2C00000E0C000000C94851184
:10006000DCC000000C94890D0C94B40D0C94E50DCB
:10007000D4C00000D2C00000D0C00000CEC000003C
:10008000CCC00000CAC00000C8C00000C6C000004C
:10009000C4C00000C2C000000129022904290829A7
:1000A0001029202940298029012C022C0126022612
:1000B000042608261026202640268026402C802C48
:1000C0000123022304230823102320234023802319
:1000D0000120022004200820102020204020802021
:1000E000102C202C012F022F042F082F102F202F2F
:1000F000402F802F00010000A501120002000062C5
:100100000143000300005E010401030904440118D7
:10011000020309042C0116030309041E010C0C033D
:100120003100320033003400350000001603550062
:100130005300420020005300650072006900610016
:100140006C00000018035400650065006E00730029
:1001500079006400750069006E006F000000040300
:10016000090409024300020100C032090400000131
:1001700002020100052400100105240100010424ED
:100180000206052406000107058203080040090451
:100190000100020A000000070503024000000705F5
:1001A00084024000001201000202000020C01683F9
:1001B000047202010203010001C1020180360181C3
:1001C0003600030E8B1611241FBECFEFD0E2DEBF28
:1001D000CDBF12E0A0E0B1E0E8E4FFE200E00BBF39
:1001E00002C007900D92AC38B107D9F723E0ACE814
:1001F000B2E001C01D92A332B207E1F710E0C3EEF6
:10020000D0E004C02197FE010E94DC16C13ED10758
:10021000C9F70E94E00E0C94A217F2CECF93DF93A1
:100220001F92CDB7DEB76983DC01ED91FC910280AE
:10023000F381E02D41E050E0BE016F5F7F4F0995F3
:100240000F90DF91CF910895813029F4109293029D
:1002500080919302089590919302823021F49195B8
:1002600090939302F5CF833099F79150F9CF0F9384
:100270001F93CF93DF9300D000D0CDB7DEB781E0DE
:1002800090E00E94E50E8C010E94850FCE01019640
:10029000801B910B0F900F900F900F90DF91CF91DB
:1002A0001F910F9108954FEF61E170E084E992E0B2
:1002B0000E94450D44E650E060E070E084E992E081
:1002C0000E94780E40E052EC61E070E087E193E03C
:1002D0000E948D15569A559A549A539A52985A9844
:1002E0005D985B985A985C9A87E193E00E9480162B
:1002F0008823D1F35E9A089590919302980F90937A
:100300009302682F84E992E00E94FF0C80E991E05B
:100310000197F1F70895682F87E193E07FDF80E987
:1003200091E00197F1F787E193E00E94121418160B
:1003300019062CF487E193E00E944B14F4CF5E98E9
:1003400008958F929F92AF92BF92CF92DF92EF92D9
:10035000FF920F931F93CF93DF934A015B015E9A45
:10036000EC01C12CD12C760100E911E0C814D904AC
:10037000EA04FB0491F0699184E992E00E94FF0C89
:10038000C8010197F1F784E992E00E94E20C8FEF37
:10039000C81AD80AE80AF80AE9CF80E991E001977B
:1003A000F1F75E98DF91CF911F910F91FF90EF9041
:1003B000DF90CF90BF90AF909F908F9008955E9AFE
:1003C00045E050E060E070E08CED91E0BADF84E958
:1003D00092E00E94E20C811180EE0895CF92DF92AC
:1003E000EF92FF9245E050E060E070E082EE91E035
:1003F000A8DF0FB6F894C0900C03D0900D03E090E6
:100400000E03F0900F030FBE84E992E00E94AF0C40
:1004100018161906B4F00FB6F89480910C03909159
:100420000D03A0910E03B0910F030FBE8C199D090F
:10043000AE09BF0981319742A105B10528F38FEEBE
:1004400004C084E992E00E94E20CFF90EF90DF90FC
:10045000CF9008955E9A45E050E060E070E088EE4D
:1004600091E06FDF84E992E00E94E20C811142C0CA
:1004700046E050E060E070E08EEE91E062DF84E9FB
:1004800092E00E94E20C811135C046E050E060E04D
:1004900070E085EF91E055DF84E992E00E94E20C84
:1004A000811128C046E050E060E070E08CEF91E000
:1004B00048DF84E992E00E94E20C81111BC047E012
:1004C00050E060E070E083E092E03BDF84E992E09E
:1004D0000E94E20C81110EC046E050E060E070E046
:1004E00085E492E02EDF84E992E00E94E20C811123
:1004F00001C074CF80EE08952F923F924F925F9289
:100500006F927F928F929F92AF92BF92CF92DF9223
:10051000EF92FF920F931F93CF93DF93CDB7DEB788
:1005200062970FB6F894DEBF0FBECDBF0FB6F8943A
:10053000C0900C03D0900D03E0900E03F0900F03D9
:100540000FBE87E193E00E9412140497B4F40FB633
:10055000F89480910C0390910D03A0910E03B0913B
:100560000F030FBE8C199D09AE09BF098131974257
:10057000A105B10530F38BEE59C08E010F5F1F4FFF
:100580008EE0D8011D928A95E9F744E050E0B80169
:1005900087E193E00E94DE15C9808C2D90E0982FB2
:1005A0008827CA80C80ED92ED11CF12CE12C3AE044
:1005B000CC0CDD1CEE1CFF1C3A95D1F78B81282F4B
:1005C00030E0322F22278C81820F932F911D0196CC
:1005D000B0E0A0E04C015D015AE0880C991CAA1C17
:1005E000BB1C5A95D1F71E01B5E02B0E311CC81467
:1005F000D904EA04FB0408F060C04D2C5E2C6F2C7B
:100600007724C701AA27BB278F87988BA98BBA8B22
:1006100046E050E060E070E08CE492E092DE84E935
:1006200092E00E94E20C8823D1F084EE62960FB62D
:10063000F894DEBF0FBECDBFDF91CF911F910F9118
:10064000FF90EF90DF90CF90BF90AF909F908F90F2
:100650007F906F905F904F903F902F900895D101C1
:10066000EAE01D92EA95E9F785E0EBE0F2E0D801D7
:1006700001900D928A95E1F74F82FF85F88785E01A
:10068000E1E1F2E0DE01199601900D928A95E1F721
:100690004DE050E060E070E0C80153DE84E992E094
:1006A0000E94E20C8111C1CF99DE8111BFCF33DEF0
:1006B00024E0D20EE11CF11C9ACF80E0B7CF2F923C
:1006C0003F924F925F926F927F928F929F92AF92E2
:1006D000BF92CF92DF92EF92FF920F931F93CF932F
:1006E000DF93CDB7DEB762970FB6F894DEBF0FBECB
:1006F000CDBF0FB6F894C0900C03D0900D03E090DE
:100700000E03F0900F030FBE87E193E00E941214D6
:100710000497B4F40FB6F89480910C0390910D03F4
:10072000A0910E03B0910F030FBE8C199D09AE0965
:10073000BF0981319742A105B10530F38BEE89C025
:100740008E010F5F1F4F8EE0D8011D928A95E9F749
:1007500044E050E0B80187E193E00E94DE15C980D3
:100760008C2D90E0982F8827CA80C80ED92ED11CD6
:10077000F12CE12C3AE0CC0CDD1CEE1CFF1C3A9570
:10078000D1F78B81282F30E0322F22278C81820FE6
:10079000932F911D0196B0E0A0E04C015D015AE05D
:1007A000880C991CAA1CBB1C5A95D1F71E01B5E0F8
:1007B0002B0E311CC814D904EA04FB0408F048C00D
:1007C0004D2C5E2C6F2C7724C701AA27BB278F875F
:1007D000988BA98BBA8B46E050E060E070E083E52F
:1007E00092E0AFDD84E992E00E94E20C81114AC000
:1007F000D101EAE01D92EA95E9F785E0EBE0F2E04D
:10080000D80101900D928A95E1F74F82FF85F88714
:1008100085E0E1E1F2E0DE01199601900D928A9502
:10082000E1F74DE050E060E070E0C8018ADD84E966
:1008300092E00E94E20C811127C0D0DD882311F0E4
:100840008B3139F468DD24E0D20EE11CF11CB2CF0B
:1008500080E062960FB6F894DEBF0FBECDBFDF9189
:10086000CF911F910F91FF90EF90DF90CF90BF90AD
:10087000AF909F908F907F906F905F904F903F9040
:100880002F90089588EEE5CF84EEE3CF1F93CF93AA
:10089000DF9300D01F92CDB7DEB746E050E060E0B6
:1008A00070E08AE592E04DDD84E992E00E94E20C7E
:1008B00081115BC083E0FE013196DF011D928A95B4
:1008C000E9F74DE050E060E070E087E192E039DD6B
:1008D00084E992E00E94E20C882349F014EE812F13
:1008E0000F900F900F90DF91CF911F91089576DDBB
:1008F000182F8111F4CF84E992E00E94E20C8983E1
:1009000084E992E00E94E20C8A8346E050E060E0D5
:1009100070E08AE592E015DD84E992E00E94E20C45
:10092000811123C04DE050E060E070E085E292E08C
:1009300008DD84E992E00E94E20C8111CFCF4EDD08
:10094000182F8111CCCF84E992E00E94E20C8B83B6
:10095000698187E193E062DC6A8187E193E05EDC94
:100960006B8187E193E05ADCBACF18EEB8CF5F9283
:100970006F927F928F929F92AF92BF92CF92DF92AF
:10098000EF92FF920F931F93CF93DF9300D000D08D
:100990001F92CDB7DEB725E0722E8E010F5F1F4F7D
:1009A00030EA632E44E1542EF801872D11928A9586
:1009B000E9F75E9A20E43FE140E050E060ED77E047
:1009C00080E090E00E94C30E4B0128E030E040E060
:1009D00050E061E070E080E090E00E94C30E6B01A7
:1009E0005D98862D81500000E9F784E992E00E942D
:1009F0007E0D65E070E080E090E00E94C5115D9A98
:100A000065E070E080E090E00E94C5114FEF61E189
:100A100070E084E992E00E94450D44E650E060E019
:100A200070E084E992E00E94780E61E070E080E07E
:100A300090E00E94C51185EC5FDC81E05DDC1092E6
:100A4000930283E059DC8AE957DC80E055DC84E1DD
:100A500053DC82E0F9DB50DC84E992E080D71816A1
:100A6000190624F484E992E0ADD7F6CF83E044DCA4
:100A700084E992E0A7D745E050E0B80184E992E02C
:100A80000E947E0E8B81863009F453C08031C1F004
:100A90008EEE32DC80E00F900F900F900F900F9051
:100AA000DF91CF911F910F91FF90EF90DF90CF904A
:100AB000BF90AF909F908F907F906F905F900895C0
:100AC000C401029738F031F0880F991F880F991FE1
:100AD0000197F1F75C98C601029738F031F0880F62
:100AE000991F880F991F0197F1F75C9A84E992E0AA
:100AF00036D71816190624F484E992E063D7F6CFA6
:100B000098EEE92E93E0F92EE1E0EE1AF10809F4EF
:100B10004BCF84E992E023D7181619062CF0852DC7
:100B200081500000E9F7F0CF84E992E04BD78230A2
:100B3000B1F765E070E080E090E00E94C51181E9C6
:100B4000DBDB61E070E080E090E00E94C511109274
:100B500093028AE3D1DB8EE4CFDB8FE6CDDB84E743
:100B6000CBDB8AE3C9DB85E5C7DB83E7C5DB85E64D
:100B7000C3DB84E6C1DB8AE3BFDB83E065DBBCDB90
:100B800061E070E080E090E00E94C51183E9B4DB91
:100B900061E070E080E090E00E94C51104E011E0A7
:100BA00087ECE82E81E0F82EF80181918F01A4DB1B
:100BB000E016F106C9F761E070E080E090E00E9485
:100BC000C51183E999DB61E070E080E090E00E946C
:100BD000C51107EC11E0F80181918F018DDBF1E087
:100BE0000E3C1F07C1F761E070E080E090E00E94DA
:100BF000C51164E984E992E002D765E070E080E025
:100C000090E00E94C51184E992E0A9D61816190651
:100C100024F484E992E0D6D6F6CF5E9881E03BCF0B
:100C20008F929F92AF92BF92CF92DF92EF92FF92FC
:100C30000F931F93CF93DF9300D000D01F92CDB7B7
:100C4000DEB7C12CD12C760182E7982E90E8892E50
:100C500020E9A22EBB24B3949982CA82DB82EC8263
:100C60008D8245E050E060E070E0CE01019669DBE6
:100C700000E810E084E992E072D6892B21F4C501E6
:100C80000197F1F7F7CF84E992E09CD6682F87E1CE
:100C900093E0C4DA0150110969F780E8C80ED11C4D
:100CA000E11CF11CC114D10488E0E806F104A1F6AE
:100CB00080E00F900F900F900F900F90DF91CF91E9
:100CC0001F910F91FF90EF90DF90CF90BF90AF906A
:100CD0009F908F9008952F923F924F925F926F92C4
:100CE0007F928F929F92AF92BF92CF92DF92EF92BC
:100CF000FF920F931F93CF93DF93CDB7DEB72E975D
:100D00000FB6F894DEBF0FBECDBF0FB6F894C090FB
:100D10000C03D0900D03E0900E03F0900F030FBE74
:100D200087E193E00E9412140497B4F40FB6F8948C
:100D300080910C0390910D03A0910E03B0910F03CD
:100D40000FBE8C199D09AE09BF0981319742A105DB
:100D5000B10530F38BEE80C08E010F5F1F4F8EE028
:100D6000F80111928A95E9F744E050E0B80187E173
:100D700093E00E94DE158980882D90E0982F8827C7
:100D80008A80880E992E911CB12CA12C3AE0880CF7
:100D9000991CAA1CBB1C3A95D1F74B80842D90E07E
:100DA000982F88274C80480E592E511CFFEF4F1A60
:100DB0005F0A712C612C5AE0440C551C661C771C90
:100DC0005A95D1F71E0125E0220E311C60E9C62E8E
:100DD000DD24D39484149504A604B70478F5F101B6
:100DE0002AE011922A95E9F782E789838A829B8219
:100DF000AC82E0E8ED8345E050E060E070E0C801DF
:100E0000A0DA80E8E82EF12C84E992E0A8D5892BBD
:100E100021F4C6010197F1F7F7CF84E992E0D2D52A
:100E2000682F87E193E0FAD9F1E0EF1AF10861F752
:100E300020E8820E911CA11CB11CCCCF87E193E06D
:100E40000E941214181619062CF487E193E00E94F0
:100E50004B14F4CF5E9880E02E960FB6F894DEBF68
:100E60000FBECDBFDF91CF911F910F91FF90EF90FB
:100E7000DF90CF90BF90AF909F908F907F906F90BA
:100E80005F904F903F902F9008952F923F924F92F6
:100E90005F926F927F928F929F92AF92BF92CF920A
:100EA000DF92EF92FF920F931F93CF93DF93CDB713
:100EB000DEB7CD50D4400FB6F894DEBF0FBECDBF25
:100EC0008E010F5F1B4F8DE0D8011D928A95E9F7C7
:100ED000FE0131967F0180E094E0DF01FC011D926C
:100EE0003197E9F70FB6F89480900C0390900D03BA
:100EF000A0900E03B0900F030FBE87E193E00E9415
:100F000012140297B4F40FB6F89480910C039091E8
:100F10000D03A0910E03B0910F030FBE881999091C
:100F2000AA09BB0981319742A105B10530F38BEEC7
:100F30007EC08DE0D8011D928A95E9F742E050E02D
:100F4000B80187E193E00E94DE15F801308021802E
:100F50005E9A0FB6F89440900C0350900D03609089
:100F60000E0370900F030FBED12CC12C812C64E0B6
:100F7000962EC114F4E0DF0678F50FB6F894809150
:100F80000C0390910D03A0910E03B0910F030FBEBF
:100F900084199509A609B70981329E44A105B105B6
:100FA00008F064C187E193E00E9412145C0100978D
:100FB00001F38C0D9D1D8130944018F05401AC1844
:100FC000BD08B7016C0D7D1DA50187E193E00E946E
:100FD000DE15CA0CDB1CCDCF45E050E060E070E0D0
:100FE00083E392E0AED94E0181E0880E981E67013E
:100FF00050E9A52EBB24B394D6016D916D0184E90F
:1010000092E0FDD4C5010197F1F784E992E0DAD4CA
:10101000C814D90489F784E992E0ECD4C50101979A
:10102000F1F784E992E0CED48823D9F081EEC35F52
:10103000DB4F0FB6F894DEBF0FBECDBFDF91CF916F
:101040001F910F91FF90EF90DF90CF90BF90AF90E6
:101050009F908F907F906F905F904F903F902F90D8
:10106000089545E050E060E070E089E392E069D9DE
:101070004701BEEF9B1A40E9A42EBB24B394F601AE
:1010800061916F0184E992E0BAD4C5010197F1F74B
:1010900084E992E097D4C814D90489F784E992E0EE
:1010A000A9D4C5010197F1F784E992E08BD4882394
:1010B00011F082EEBCCF46E050E060E070E081E6E7
:1010C00092E03FD984E992E07DD4882311F086EE46
:1010D000AECF432C512C542C4424420C511C712C67
:1010E000612C3AE0440C551C661C771C3A95D1F7EC
:1010F00083E0F8013496DF011D928A95E9F785E0D7
:10110000EBE0F2E0D80101900D928A95E1F7F80149
:101110005682678285E0EFE3F2E0D80118960190ED
:101120000D928A95E1F74DE050E060E070E0C80173
:1011300008D984E992E046D48111C9CF4FD98111F1
:1011400076CF45E050E060E070E083E392E0F9D8CC
:101150005E01FFEFAF1AFDEFBF0A47012DEF921AB4
:1011600090E9C92EDD24D394D5016D915D0184E908
:1011700092E045D4C6010197F1F784E992E022D4C8
:101180008A149B0489F784E992E034D4C60101975C
:10119000F1F784E992E016D4811148CF45E050E0A0
:1011A00060E070E089E392E0CCD86E01BFEFCB1A2B
:1011B000BCEFDB0A5701ECEFBE1A80E9E82EFF24F2
:1011C000F394D6016D916D0184E992E018D4C701C2
:1011D0000197F1F784E992E0F5D3AC14BD0489F7E7
:1011E00084E992E007D4C7010197F1F784E992E01E
:1011F000E9D381115ECF46E050E060E070E081E627
:1012000092E09FD884E992E0DDD3811160CFB2E013
:101210005B0E611C711CF801349683E0DF011D92A6
:101220008A95E9F785E0EBE0F2E0D80101900D92B4
:101230008A95E1F7F80156826782D801189685E011
:10124000EFE3F2E001900D928A95E1F74DE050E076
:1012500060E070E0C80175D884E992E0B3D38111F1
:1012600036CFBCD88111E3CE5E98E1CE8CEEDFCED6
:101270002F923F924F925F926F927F928F929F92A6
:10128000AF92BF92CF92DF92EF92FF920F931F9394
:10129000CF93DF93CDB7DEB7C551D4400FB6F894E6
:1012A000DEBF0FBECDBF8E010F5F1B4F8DE0D8019B
:1012B0001D928A95E9F7FE0131967F0180E094E066
:1012C000DF01FC011D923197E9F70FB6F894809089
:1012D0000C0390900D03A0900E03B0900F030FBE6F
:1012E00087E193E00E9412140297B4F40FB6F894C9
:1012F00080910C0390910D03A0910E03B0910F0308
:101300000FBE88199909AA09BB0981319742A10525
:10131000B10530F38BEEB4C08DE0D8011D928A95F3
:10132000E9F742E050E0B80187E193E00E94DE1562
:10133000F801908081805E9A0FB6F89420900C039B
:1013400030900D0340900E0350900F030FBED12C30
:10135000C12C612C64E0762EC114F4E0DF0678F530
:101360000FB6F89480910C0390910D03A0910E0399
:10137000B0910F030FBE82199309A409B5098132F8
:101380009E44A105B10508F02FC287E193E00E94B9
:1013900012145C01009701F38C0D9D1D8130944067
:1013A00018F05301AC18BD08B7016C0D7D1DA501E7
:1013B00087E193E00E94DE15CA0CDB1CCDCF46E02E
:1013C00050E060E070E083E592E00E94A10184E9D2
:1013D00092E0F8D281110AC2892D90E0982F8827D7
:1013E000880E992E911CB12CA12C3AE0880C991CE6
:1013F000AA1CBB1C3A95D1F7492C5A2C6B2C77248C
:10140000C501AA27BB27C05FDB4F88839983AA83C6
:10141000BB83C051D440180194E0290E311CD10186
:10142000E3E01D92EA95E9F785E0EBE0F2E0D80110
:1014300001900D928A95E1F7D80116964C92169775
:10144000C05FDB4FE881C051D4401796EC93680130
:10145000F8E0CF0ED11C85E0E1E1F2E0D601019089
:101460000D928A95E1F74DE050E060E070E0C80130
:101470000E94A10184E992E0A5D28823D9F084EEEC
:10148000CB5EDB4F0FB6F894DEBF0FBECDBFDF9152
:10149000CF911F910F91FF90EF90DF90CF90BF9071
:1014A000AF909F908F907F906F905F904F903F9004
:1014B0002F9008950E94EE01811139C045E050E05F
:1014C00060E070E083E392E00E94A1019E012F5F43
:1014D0003E4FC25FDB4F39832883CE50D440670133
:1014E00090E9292E33243394D6016D916D0184E95E
:1014F00092E085D2C1010197F1F784E992E062D2CE
:10150000C25FDB4FE881F981CE50D440CE16DF06B2
:1015100059F784E992E06ED2C1010197F1F784E9AD
:1015200092E050D2882309F444C081EEA9CF8B31D8
:1015300009F0A6CF46E050E060E070E08CE492E075
:101540000E94A10184E992E03DD2811198CFD1019E
:10155000E3E01D92EA95E9F785E0EBE0F2E0D801DF
:1015600001900D928A95E1F7D80116964C92169744
:10157000C05FDB4FE881C051D4401796EC9385E003
:10158000E1E1F2E0D60101900D928A95E1F74DE09C
:1015900050E060E070E0C8010E94A10184E992E09F
:1015A00011D281116CCF0E94EE01882309F486CFFD
:1015B00067CF45E050E060E070E089E392E00E9490
:1015C000A10197013E5FCC5EDB4F39832883C45174
:1015D000D44080E9282E33243394D6016D916D01D7
:1015E00084E992E00CD2C1010197F1F784E992E01D
:1015F000E9D1CC5EDB4FE881F981C451D440EC15D0
:10160000FD0559F784E992E0F5D1C1010197F1F7A1
:1016100084E992E0D7D1882311F082EE31CF46E001
:1016200050E060E070E081E692E00E94A10184E970
:1016300092E0C8D1882311F086EE22CFF8013496CB
:1016400083E0DF011D928A95E9F785E0EBE0F2E0A7
:10165000D80101900D928A95E1F7F8014682C05FAA
:10166000DB4F2881C051D4402783D801189685E0EC
:10167000EFE3F2E001900D928A95E1F74DE050E042
:1016800060E070E0C8010E94A10184E992E09AD173
:101690008111D2CF0E94EE018111F2CE45E050E0DF
:1016A00060E070E083E392E00E94A1016E013FEFF1
:1016B000C31A3DEFD30A37018DEF781A00E911E024
:1016C000D6016D916D0184E992E099D1C80101972D
:1016D000F1F784E992E076D16C147D0489F784E90E
:1016E00092E088D1C8010197F1F784E992E06AD1CC
:1016F00081111BCF45E050E060E070E089E392E0AB
:101700000E94A1016E01BFEFCB1ABCEFDB0AECEF28
:10171000FE1A00E911E0D6016D916D0184E992E0B5
:101720006ED1C8010197F1F784E992E04BD1EC1436
:10173000FD0489F784E992E05DD1C8010197F1F7D2
:1017400084E992E03FD1811168CF46E050E060E04B
:1017500070E081E692E00E94A10184E992E032D13A
:1017600081116ACFB2E09B0EA11CB11CE1E0F4E054
:10177000EC0FFD1F349683E0DF011D928A95E9F797
:1017800085E0EBE0F2E0DE01AF5FBB4F01900D9230
:101790008A95E1F7C95FDB4F9882C750D440C85F94
:1017A000DB4FA882C850D440A1E0B4E0AC0FBD1F0D
:1017B000189685E0EFE3F2E001900D928A95E1F74B
:1017C0004DE050E060E070E0CE018F5F9B4F0E94E3
:1017D000A10184E992E0F6D081112ECF0E94EE01A2
:1017E00081114ECE5E984CCE8CEE4ACE88EE48CE1D
:1017F000CF93DF935E9AC1EED1E087E193E00E9440
:101800001214892B09F4A8C087E193E00E944B14BD
:10181000809390028230A0F0803109F475C080324C
:1018200009F449C0803809F48BC0803F09F44CC0EA
:1018300090919102911104C080EE0E948B01DDCF46
:10184000873009F45CC020F5823009F44FC0C0F441
:101850008823A1F1813089F60E94370190938F028D
:1018600080938E0265E087E193E00E940E01609113
:101870008F0287E193E00E940E0160918E021FC0EB
:101880008430C1F1A8F1863009F0B7CFFEDA34C058
:101890008031D1F140F48830A1F18A3009F0ADCF28
:1018A0000E94460429C0803809F44AC0803F61F094
:1018B000803209F0A2CF0E94DF011EC062E087E102
:1018C00093E00E940E0199CF0E94370190938F02FE
:1018D00080938E0262E087E193E00E940E0165E052
:1018E00087E193E00E940E0161E2BDCFF4D985CF7C
:1018F00097D983CF0E947C02809392029ECFB8DC5E
:10190000FBCF0E945F03F8CF109292028091910268
:1019100081110DC02CD880939202882371F00E940F
:101920002A0280939202811105C0D0939102809186
:10193000920283CF10929102FACFC0939202F7CF16
:101940005E9864EF71E080E090E01FD5E0918C023A
:10195000F0918D02099551CFDF91CF91089550916B
:10196000C8024091C702852F90E0242F30E0541721
:1019700018F0821B930B0895805C9F4FFACF509113
:101980009E0240919D02252F30E0842F90E0821B23
:10199000930B541710F0879608950197089580913E
:1019A000C802E091C7028E1751F0EF5FE03408F0F3
:1019B000E0E0F0E0E753FD4F808190E008958FEF85
:1019C0009FEF08959091C8028091C702981779F00F
:1019D0009091C7029F5F903408F090E0E92FF0E00B
:1019E000E753FD4F80819093C70290E008958FEFF9
:1019F0009FEF089580919C028111FCCF0895209162
:101A0000C90023FD06C021E0FC01228390E080E0B4
:101A100008958091CE018F3F41F080919C02811109
:101A200004C0E091CE01F0E051D390919E028091EC
:101A30009D02981304C08091C80085FD19C0809153
:101A40009E028F5F8832F8F490919D029817E1F31F
:101A5000E82FF0E0E156FD4F608391E090939C0207
:101A600080939E028091C90080628093C90008C063
:101A70008FB7F8946093CE0091E090939C028FBF53
:101A800081E090E0089580E0DFCF1F93CF93DF9354
:101A9000EB01142F4093CE014F3F29F0842F05D343
:101AA000E12FF0E019D3C0FF24C0C13080E1D80796
:101AB00000F582E08093C8002197D093CD00C093B9
:101AC000CC008091C90083FD10C01092C802109212
:101AD000C70210929E0210929D0210929C0286E014
:101AE0008093CA0088ED8093C900DF91CF911F9148
:101AF00008951092C800D695C795DECF80919C02BC
:101B00008111FCCF1092C9001092C8021092C70236
:101B100008951F920F920FB60F9211240BB60F92D9
:101B20002F938F939F93EF93FF939091CE0080918B
:101B3000C8028F5F803408F080E02091C702281728
:101B400039F0E82FF0E0E753FD4F90838093C8020F
:101B5000FF91EF919F918F912F910F900BBE0F905E
:101B60000FBE0F901F9018951F920F920FB60F92F5
:101B700011240BB60F928F939F93EF93FF93909145
:101B80009E0280919D02981310C08091C9008F7DA4
:101B90008093C900FF91EF919F918F910F900BBEA1
:101BA0000F900FBE0F901F90189580919D028F5F30
:101BB000883208F080E0E82FF0E0E156FD4F908198
:101BC0009093CE0080939D02E5CF1F920F920FB6A7
:101BD0000F9211240BB60F928F93EF93FF931092F5
:101BE0009C028091CE018F3F21F0E091CE01F0E088
:101BF00073D2FF91EF918F910F900BBE0F900FBE9C
:101C00000F901F901895E4E9F2E0128288EE93E0BD
:101C1000A0E0B0E083839483A583B68317828CE62B
:101C200092E0918380830895CF92DF92EF92FF92AA
:101C30000F931F93CF93DF936C01EB017B01E40EB5
:101C4000F51E10E000E0CE15DF0561F06991D601C8
:101C5000ED91FC910190F081E02DC6010995080FEE
:101C6000191FF1CFC801DF91CF911F910F91FF9004
:101C7000EF90DF90CF900895CF92DF92EF92FF9296
:101C8000CF93DF93EC010FB6F894C0900C03D09083
:101C90000D03E0900E03F0900F030FBEE881F98171
:101CA0000284F385E02DCE01099597FF1AC00FB687
:101CB000F89480910C0390910D03A0910E03B091C4
:101CC0000F030FBE8C199D09AE09BF094B815C81C2
:101CD0006D817E8184179507A607B707F8F28FEF0D
:101CE0009FEFDF91CF91FF90EF90DF90CF9008951D
:101CF000FC0143835483658376830895AF92BF923A
:101D0000CF92DF92EF92FF920F931F93CF93DF93C7
:101D10005C017B018B01040F151FEB016E01CE18D6
:101D2000DF08C017D10739F0C501A6DF97FF0FC044
:101D300081E0F5018783C601DF91CF911F910F915B
:101D4000FF90EF90DF90CF90BF90AF900895899370
:101D5000E5CFCF92DF92EF92FF926B017C01C1142D
:101D6000D104E104F10441F00E944717A701960154
:101D70000E94C0166B017C01C701B601FF90EF9075
:101D8000DF90CF900895CF92DF92EF92FF926B0198
:101D90007C01C216D306E406F5065CF4CA01B9015B
:101DA0006C197D098E099F09D4DFC60ED71EE81E67
:101DB000F91EC701B601FF90EF90DF90CF90089514
:101DC0004ED10E94530114DDFECF0F931F93CF938A
:101DD000DF938230910510F482E090E0E0912103DE
:101DE000F091220330E020E070E060E0D0E0C0E05D
:101DF000B0E0A0E0309799F42115310509F44AC00C
:101E0000281B390B24303105D8F58A819B81611557
:101E1000710589F1FB0193838283FE0111C040812A
:101E200051810281138148175907E0F0481759077B
:101E300099F4109761F012960C93129713961C93D5
:101E40003296CF01DF91CF911F910F9108950093AA
:101E5000210310932203F4CF2115310551F04217CD
:101E6000530738F0A901DB019A01BD01DF01F80138
:101E7000C1CFEF01F9CF9093220380932103CDCFFF
:101E8000FE01E20FF31F81939193225031093983B0
:101E90002883D7CF2091090330910A03232B41F4E3
:101EA0002091D1013091D20130930A03209309038C
:101EB0002091CF013091D0012115310541F42DB78A
:101EC0003EB74091D3015091D401241B350BE091D2
:101ED0000903F0910A03E217F307A0F42E1B3F0B4E
:101EE0002817390778F0AC014E5F5F4F241735078C
:101EF00048F04E0F5F1F50930A03409309038193EC
:101F000091939FCFF0E0E0E09CCFCF93DF930097D9
:101F1000E9F0FC01329713821282A0912103B09163
:101F20002203ED0130E020E01097A1F420813181FF
:101F3000820F931F2091090330910A032817390754
:101F400009F061C0F0930A03E0930903DF91CF9198
:101F50000895EA01CE17DF07E8F54A815B819E010B
:101F600041155105B1F7E901FB83EA834991599184
:101F7000C40FD51FEC17FD0761F480819181029693
:101F8000840F951FE90199838883828193819B83C4
:101F90008A83F0E0E0E012968D919C911397009770
:101FA000B9F52D913C911197CD010296820F931FA7
:101FB0002091090330910A032817390739F6309721
:101FC00051F51092220310922103B0930A03A093BB
:101FD0000903BCCFD383C28340815181840F951FF5
:101FE000C817D90761F44E5F5F4F88819981480F08
:101FF000591F518340838A819B819383828321155A
:10200000310509F0B0CFF0932203E09321039ECF76
:10201000FD01DC01C0CF13821282D7CF1DBA10920E
:1020200068001CBC10BE1FBA10927A0010926E009D
:1020300010926F0010927000109271001092C900FF
:102040001092BC0011B814B817B81AB81DB810BA5D
:1020500012B815B818B81BB81EB811BA0895F8947C
:10206000E1E6F0E020E82083108283E084BD85BDB6
:10207000EEE6F0E080818160808391E090938000C3
:1020800082E0809381009093B0008093B1009093A0
:1020900090008093910086E880937A0020937B00E3
:1020A00010927E00B1D1789408958E3270F4E8E9F0
:1020B000F0E0880FE80FF11D2591E491F0E09FB763
:1020C000F8948181822B81839FBF0895EE3250F472
:1020D000EE0FED58FF4E0994EE3220F4EE0FE1536F
:1020E000FF4E09940895589AB6C0599AD0C05A9A8A
:1020F00008955B9A08955C9A08955D9A08955E9A92
:1021000008955F9A0895709A0895719A0895409A73
:102110000895419A0895429A0895439A0895449AD9
:10212000C8C0459AC0C0469AB8C0479A0895769AE2
:102130000895779A0895289A0895299A08952A9AD1
:1021400008952B9A08952C9A9CC02D9A88C02E9A97
:102150008CC02F9A90C0109A0895119A0895129ADF
:102160000895139A0895149A0895159A0895169A41
:102170000895179A0895749A0895759A0895889AFB
:102180000895899A08958A9A08958B9A08958C9A49
:1021900008958D9A08958E9A08958F9A0895589863
:1021A0005AC0599874C05A9808955B9808955C98DD
:1021B00008955D9808955E9808955F9808957098C1
:1021C0000895719808954098089541980895429807
:1021D00008954398089544986CC0459864C0469803
:1021E0005CC0479808957698089577980895289840
:1021F0000895299808952A9808952B9808952C9861
:1022000040C02D982CC02E9830C02F9834C0109804
:1022100008951198089512980895139808951498A0
:102220000895159808951698089517980895749824
:1022300008957598089588980895899808958A98BA
:1022400008958B9808958C9808958D9808958E9888
:1022500008958F980895E4B5EF7DE4BD0895E09169
:102260008000EF77E09380000895E0918000EF7D9B
:10227000E09380000895E0918000E77FE093800084
:102280000895E091B000EF77E093B0000895E091F9
:10229000B000EF7DE093B0000895E0919000EF77FB
:1022A000E09390000895E0919000EF7DE09390001E
:1022B0000895E0919000E77FE09390000895F894EE
:1022C00084B7877F84BF80916000806180936000C5
:1022D0001092600080E29EE40197F1F781E0809324
:1022E000E00080E28093D80080E69AEE0197F1F753
:1022F00095DE0C9400FEFFCFF89490DE80E69AEE17
:102300000197F1F70C940000FFCF8F938FB78F9355
:1023100080910B038D5F8D37D0F480930B038091F8
:102320000C038F5F80930C03D8F080910D038F4FC7
:1023300080930D03A8F080910E038F4F80930E03BE
:1023400078F080910F038F4F80930F0309C08D5752
:1023500080930B0380910C038E5F80930C0328F70E
:10236000809110038C5F8093100358F080911103CB
:102370008F4F8093110328F0809112038F4F809329
:1023800012038F918FBF8F911895CF92DF92EF92AA
:10239000FF926B017C0119D09B01C114D104E104AF
:1023A000F10429F4FF90EF90DF90CF9008950DD0C5
:1023B000621B730B683E734080F381E0C81AD1083A
:1023C000E108F10828513C4FE8CF0FB6F89466B504
:1023D00015B27091100380911103909112030FBEFA
:1023E00010FE05C06F3F19F07C5F8F4F9F4F112487
:1023F0000024660F001C660F001C70290895809150
:10240000E80080FFFCCF08958091D80087FF02C0CC
:1024100085FF1BC081E88093D70080EA8093D800B5
:1024200086E189BD09B400FEFDCF80E98093D80024
:102430001092E000109225031092240310922303BF
:102440001092E1008DE08093E20008951F920F92B8
:102450000FB60F9211240BB60F922F933F934F9309
:102460005F936F937F938F939F93AF93BF93EF93FC
:10247000FF939091E1001092E10093FF11C0109240
:10248000E90081E08093EB001092EC0082E28093FF
:10249000ED0088E08093F000109225031092230352
:1024A00092FF1DC0809125038823C9F080911603F7
:1024B000882359F0815080931603811106C084E06F
:1024C0008093E9008AE38093E800809115038823D4
:1024D00031F0815080931503811101C0F0DE90FF2F
:1024E0000CC080E18093E2001092250381E080938C
:1024F000240380EA8093D80019BC809124038823A8
:1025000079F094FF0DC086E189BD09B400FEFDCFCE
:1025100080E98093D8008DE08093E200109224033C
:10252000FF91EF91BF91AF919F918F917F916F91AB
:102530005F914F913F912F910F900BBE0F900FBE67
:102540000F901F9018951F920F920FB60F921124A3
:102550000BB60F92EF92FF920F931F932F933F931F
:102560004F935F936F937F938F939F93AF93BF939B
:10257000CF93DF93EF93FF931092E9008091E800EF
:1025800083FF20C0D091F100C091F100E090F100F4
:10259000F090F1000091F1001091F1002091F10014
:1025A0003091F10082EF8093E800C63009F05BC003
:1025B000E4EFF0E085919591E816F90639F035964B
:1025C000C150C1F781E28093EB002BC085919591BA
:1025D0000817190711F03396F3CF4591559184915F
:1025E0002F3F310519F010F02FEF30E0821708F47B
:1025F000282F3EEF8091E800982F9570D9F382FD47
:1026000010C0822F213208F080E2982F911124C04F
:10261000922F981B892F3093E80091111BC0203214
:10262000C8F4FF91EF91DF91CF91BF91AF919F914E
:102630008F917F916F915F914F913F912F911F915A
:102640000F91FF90EF900F900BBE0F900FBE0F9069
:102650001F901895282FCECFFA0145914093F10095
:10266000AF019150D3CFC53049F48EEF8093E8008D
:10267000C6DE8E2D80688093E300D3CFC93021F56C
:10268000D111A0CFE09225031092230310921603DC
:102690008EEF8093E80081E0E7EBF1E08093E900C2
:1026A00095919093EB00992331F095919093EC00E4
:1026B00095919093ED008F5F853081F78EE1809347
:1026C000EA001092EA00ADCFC83061F4D03809F0CA
:1026D00079CF95DE809125038093F1008EEF809372
:1026E000E8009FCFC13279F4D13A09F06BCF87DE91
:1026F000E5EDF1E080818093F100319681E0EC3DE1
:10270000F807C1F7EBCFC03209F047C0D13209F06A
:1027100059CF8091E80082FFFCCFE5EDF1E0809198
:10272000F1008083319691E0EC3DF907C1F78BEF22
:102730008093E8008EEF8093E8003091D5014091BE
:10274000D6018091D7012091D80190E0B0E0A0E0BF
:10275000DC0199278827942B832BB22B863891058F
:10276000A105B10521F48FE0809315035ACF863976
:102770009105A105B10509F054CF84E08093E900EB
:102780009FEF8091EE00837009F4B6DD9093E8002E
:102790008091E80082FDFCCFF4CFC23239F4D1320F
:1027A00009F010CFE09223032ADE98CFC33221F440
:1027B000D13209F007CFF8CFC11111C020DED238D5
:1027C00049F40093E900C091EB00C5FBCC27C0F9A8
:1027D0001092E900C093F1001092F1007FCF8C2F8E
:1027E0008D7F813009F0EECED23009F0EBCEEF28AC
:1027F00009F0E8CE0F778FEF800F863008F0E2CE39
:102800008EEF8093E8000093E900C33009F4DACE3C
:1028100089E18093EB0081E090E001C0880F0A9588
:10282000EAF74DCFFC018FB7F894909125039111F1
:102830000CC090E08FBF2085318537FD03C09F3FDE
:1028400009F09F5F892F90E0089593E09093E9004D
:102850009091F2009111EECF2091E80022FFE9CF94
:1028600025FDE7CF2BE62093E800E4CFCF93DF935D
:10287000EC018885998597FF09C0E881F981028478
:10288000F385E02DCE0109959987888788859985FC
:10289000DF91CF910895FC012085318537FD07C078
:1028A0004FEF5FEF51874087C901992708959FB780
:1028B000F89480912503811104C09FBF8FEF9FEF93
:1028C000089583E08093E9002BE68091E80085FD80
:1028D00005C082FFF2CF2093E800F7CF8091F1008E
:1028E0002091E80025FD03C02BE62093E8009FBF60
:1028F00090E0089580912503882361F08FB7F894C4
:1029000094E09093E9009091F2008FBF80E4891BDE
:1029100090E0089590E080E00895BF92CF92DF921A
:10292000EF92FF920F931F93CF93DF937C018091DF
:102930002503811110C081E0F701828310E000E0DF
:10294000C801DF91CF911F910F91FF90EF90DF9021
:10295000CF90BF9008952FB7F89484E08093E9005A
:1029600080911403882341F08091E80085FD02C026
:102970002FBFE1CF1092140310E000E084E0D82EC6
:1029800090E4C92EA1EFB0E03AE3B32E33E0411555
:10299000510509F4C0C08091E400815F9091E80086
:1029A00095FD16C02FBF9091E400891306C081E009
:1029B00080931403F7018283C3CF90912503911173
:1029C00002C081E0F7CF2FB7F894D092E900E6CFAC
:1029D0008091F2009C2D981B9417150611F008F0B9
:1029E000942FE92FF0E04E1B5F0B0E0F1F1FEB0122
:1029F000E0E4E91BE03428F4EE0FFF27EE5FFA4E27
:102A0000099480C099919C9399919C9399919C93DE
:102A100099919C9399919C9399919C9399919C9352
:102A200099919C9399919C9399919C9399919C9342
:102A300099919C9399919C9399919C9399919C9332
:102A400099919C9399919C9399919C9399919C9322
:102A500099919C9399919C9399919C9399919C9312
:102A600099919C9399919C9399919C9399919C9302
:102A700099919C9399919C9399919C9399919C93F2
:102A800099919C9399919C9399919C9399919C93E2
:102A900099919C9399919C9399919C9399919C93D2
:102AA00099919C9399919C9399919C9399919C93C2
:102AB00099919C9399919C9399919C9399919C93B2
:102AC00099919C9399919C9399919C9399919C93A2
:102AD00099919C9399919C9399919C9399919C9392
:102AE00099919C9399919C9399919C9399919C9382
:102AF00099919C9399919C9399919C9399919C9372
:102B000099919C93BE018091E80085FFB092E80006
:102B1000309316033CCF2FBF13CF2FEF3FEFFC01B5
:102B20003187208771DC0FB6F89480910C03909167
:102B30000D03A0910E03B0910F030FBE9C01809175
:102B40002503882329F068EC70E080E090E01DCC3C
:102B500080912403882301F10FB6F89440910C036F
:102B600050910D0360910E0370910F030FBE809181
:102B70002403882389F00FB6F89480910C03909178
:102B80000D03A0910E03B0910F030FBE841B950B94
:102B90008B3F910560F308950FB6F89480910C0374
:102BA00090910D03A0910E03B0910F030FBE821BF5
:102BB000930B853C994008F4C2CF08958F929F9261
:102BC000AF92BF92CF92DF92EF92FF920F931F933B
:102BD000CF93DF93EC010FB6F894C0900C03D09024
:102BE0000D03E0900E03F0900F030FBE4115510549
:102BF00029F18885998597FD11C0FB0180838FEFAE
:102C00009FEF99878887415051096F5F7F4F91E00F
:102C10004115510521F441E050E010C090E080E002
:102C2000FA01492F582F13E00BE68FB7F8949091D3
:102C30002503911111C08FBF81E08F83CA01DF91FD
:102C4000CF911F910F91FF90EF90DF90CF90BF90A9
:102C5000AF909F908F9008951093E9009091E800B5
:102C600092FFE9CF2091F2002E171F0611F008F015
:102C70002E2F362FDB019A2F931B921720F4909161
:102C8000F1009D93F8CF30E0620F731F9091E80040
:102C900095FF0093E8008FBF420F531FE21BF30B19
:102CA00069F20FB6F89480910C0390910D03A091F6
:102CB0000E03B0910F030FBE8C199D09AE09BF0919
:102CC0008B809C80AD80BE8088159905AA05BB05C8
:102CD00008F4ABCFB1CF8FB7F89490912503992327
:102CE00061F090911603992341F094E09093E900EC
:102CF0009AE39093E800109216038FBF0895EBCFEC
:102D000080912503882329F090912303937081E01B
:102D100009F480E00895E7E1F3E01186108612825D
:102D200088EE93E0A0E0B0E083839483A583B6832C
:102D300017828EE792E0918380830895A1E21A2E94
:102D4000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F4F
:102D5000A217B307E407F50720F0A21BB30BE40B9F
:102D6000F50B661F771F881F991F1A9469F76095E6
:102D70007095809590959B01AC01BD01CF010895A0
:102D8000052E97FB16F400940FD057FD05D0D6DF23
:102D900007FC02D046F408C0509540953095219527
:102DA0003F4F4F4F5F4F0895909580957095619577
:102DB0007F4F8F4F9F4F0895EE0FFF1F0024001C81
:102DC0000BBE0790F691E02D099409D0A59F900DB8
:102DD000B49F900DA49F800D911D11240895A29F72
:102DE000B001B39FC001A39F700D811D1124911DDF
:102DF000B29F700D811D1124911D08958F929F9295
:102E0000AF92BF92CF92DF92EF92FF92CF93DF9378
:102E1000EC01688179818A819B8161157105810549
:102E2000910521F464E279ED8BE597E02DE133EF34
:102E300041E050E0A5DF49015A019B01AC01A7EA3E
:102E4000B1E4C3DF6B017C01ACEEB4EFA5019401EA
:102E500075D0C60ED71EE81EF91EF7FE06C081E02B
:102E6000C81AD108E10880E8F80AC882D982EA8243
:102E7000FB82C701B6019F77DF91CF91FF90EF9062
:102E8000DF90CF90BF90AF909F908F9008958F92DA
:102E90009F92AF92BF92CF92DF92EF92FF9260919A
:102EA000000170910101809102019091030161156F
:102EB00071058105910521F464E279ED8BE597E0D8
:102EC0002DE133EF41E050E05BDF49015A019B0106
:102ED000AC01A7EAB1E479DF6B017C01ACEEB4EFA1
:102EE000A50194012BD0C60ED71EE81EF91EF7FED1
:102EF00006C081E0C81AD108E10880E8F80AC0924B
:102F00000001D0920101E0920201F0920301C70199
:102F1000B6019F77FF90EF90DF90CF90BF90AF907A
:102F20009F908F90089560930001709301018093AA
:102F30000201909303010895B7FF47CF46DF821B3C
:082F4000930B0895F894FFCFF4
:102F48000100000000FBC013BFE607C0BFEC07C0CC
:102F5800BFEE07CFEB07ECF5EA07FCB2FF0E72FCF9
:102F6800B2FF0E76FCB2FF0E77FCB2FF0E9EFDFCA0
:102F7800B2FF0E73624C69DD6D4C77DD1D4C72DD5E
:102F8800294C65DD324C75DD62FCA1FF0ED5EA07E0
:102F9800DFC8AFE60712ECEB070FFCB2FF0E119B80
:102FA800A793DFF6FE4C00EEE3FF118BFCA1FF0EAA
:102FB800A793DFF6EED6FF61FFFCF8FF0E8F02083D
:102FC8004C0FDD0B624CFFDF11FCC4080FEFF562FC
:102FD8004CFFDF06FC04F00EEFF5C361CFC262FCC4
:102FE800A1FF0EEEA7FFE5EA07EF03E5EA07FE02F9
:102FF80000EF9A5100FCA1FF0ED7FFFFFFFFFFFF74
:10300800FFFFFFFFFFFFFFE00704EC00FB0FFF00DF
:10301800002603800000E1000000000875000000A1
:103028000000650000000000690000000000770053
:10303800FC0F01010077E2FE0F0100007703080F83
:103048000100007704080F0200FC007700080F0851
:10305800000000000004007700080F0803000000CB
:1030680000FC0200007700080F08040000000000C0
:103078000100007700FC0F00007700FD0F00000042
:1030880000FC0002007701080F01010077E2FE0F43
:1030980001030077E2FE0F01080077E2FE0F010945
:1030A8000077E2FE0F01040000000000FF0C140E80
:1030B800BF0CFA0CAF0CE20CCF0C000000000E01A4
:0C30C8008D147A147F1612144B14361469
:00000001FF
================================================
FILE: assets/hw/syscon_flasher/syscon_flasher_v2.05_teensy_3.0.hex
================================================
:1000000000200020F9000000492300000523000023
:100010000523000005230000052300000523000040
:1000200005230000052300000523000049230000EC
:100030004923000005230000913E0000953E00008A
:100040004923000049230000492300004923000000
:1000500049230000492300004923000049230000F0
:1000600049230000492300004923000049230000E0
:1000700049230000492300004923000049230000D0
:10008000D52D00004923000049230000492300002A
:1000900049230000492300004923000049230000B0
:1000A00049230000492300004923000049230000A0
:1000B0004923000049230000492300004923000090
:1000C0004923000049230000492300002D3100008E
:1000D0004923000049230000492300004923000070
:1000E0004923000049230000492300004923000060
:1000F0004923000049230000554B4CF2205210B513
:10010000DA814DF62812DA8100BF00BF02F020F933
:10011000504B514A9A63514ADA63514A136913F4B6
:10012000807303D153614FF4A85313614D4B9A78F8
:10013000110703D59A7842F008029A704A4B4B484F
:100140002A221A704A4BDA1C121AC11E22F003022C
:10015000994288BF0022474902F000F8464B4748C1
:10016000DA1C121AC11E22F00302994288BF002233
:10017000002104F027FA42494248F82201F0EEFF3C
:10018000414B424A802103F8011B9342FBD14FF0BF
:10019000E0233C4AC3F8082D3D4B8A221A70A3F590
:1001A000805324225A70A0221A709A799207FCD5A3
:1001B0009A79D406FCD4374B9A7902F00C02082ABB
:1001C000FAD103221A7140225A719A799006FCD50D
:1001D000304A93795906FCD51E4B2F4959640221A8
:1001E000996420211170917901F00C010C29FAD148
:1001F0002A4A5A604FF0E023294A5A6100229A6144
:1002000007221A61274AC3F8202D62B602F01AF9B4
:10021000134B5B69DA0705D5234802F007F9234B36
:10022000234ADA61234B1B785B0609D51F4C204B10
:10023000E2699A4204D11C4802F0F8F80023E36115
:1002400002F08CF804F028FA01F080FFFEE700BF0E
:100250000020054000800440823F04000100002B84
:1002600000D0034000D0074000E0074058E5FF1FE2
:1002700048ECFF1F144E000058F1FF1F48ECFF1F11
:100280000000000000E1FF1F00E400E02EE400E0B9
:10029000005006400040064000000301C010050069
:1002A000FF76010000002020E011896800E0034093
:1002B000A5C3945A00F00740FFFFFFFFFFFFFFFFB9
:1002C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:1002D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
:1002E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:1002F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
:10030000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:10031000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
:10032000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:10033000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
:10034000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:10035000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
:10036000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:10037000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10039000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1003B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1003D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1003F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:10040000FFFFFFFFFFFFFFFFFFFFFFFFDEF9FFFF23
:100410000548064B1B1AD90F01EBA301491002D066
:10042000034B03B11847704748ECFF1F48ECFF1F10
:100430000000000008B5054B1BB105490548AFF3A6
:100440000080BDE80840FFF7E3BF00BF00000000E8
:1004500048ECFF1F144E000070B51A4C0D2082B0FE
:10046000012102F039F8261D65204FF4486501E0AE
:1004700014F8010F02F054FB2B46013BFDD102F0B2
:1004800019FCB442F4D1013DFDD10F4C00210D20E7
:1004900002F022F823680093009E42F2107505E0F6
:1004A00023680193019B9B1BAB4208D802F0EEFB33
:1004B0000028F5DD02F0FEFBC0B202B070BDEF20F7
:1004C00002B070BD804B000074ECFF1F70B50121BD
:1004D0000D20644C02F000F80D20012101F0FCFF1A
:1004E000261D69204FF4486501E014F8010F02F061
:1004F00017FB2B46013BFDD102F0DCFBB442F4D1EB
:10050000013DFDD100210D2001F0E6FF02F0D2FBFC
:10051000C0B2002840F0A380534C0D20012101F00F
:10052000DBFF661D77204FF4486501E014F8010FEA
:1005300002F0F6FA2B46013BFDD102F0BBFBB442C0
:10054000F4D1013DFDD100210D2001F0C5FF02F0E5
:10055000B1FBC0B2002840F08280444C0D20012144
:1005600001F0BAFF661D77204FF4486501E014F8EA
:10057000010F02F0D5FA2B46013BFDD102F09AFBA8
:10058000B442F4D1013DFDD100210D2001F0A4FFC2
:1005900002F090FBC0B2002861D1354C0D20012142
:1005A00001F09AFF661D77204FF4486501E014F8CA
:1005B000010F02F0B5FA2B46013BFDD102F07AFBA8
:1005C000B442F4D1013DFDD100210D2001F084FFA2
:1005D00002F070FBC0B2002841D1264C0D20012151
:1005E00001F07AFFA61D77204FF4486501E014F86A
:1005F000010F02F095FA2B46013BFDD102F05AFBA8
:10060000B442F4D1013DFDD100210D2001F064FF81
:1006100002F050FBC0B210BB174C0D20012101F0BD
:100620005BFF661D77204FF4486501E014F8010F69
:1006300002F076FA2B46013BFDD102F03BFBA642CD
:10064000F4D1013DFDD100210D2001F045FF02F064
:1006500031FBC0B218B9BDE87040FFF7FDBEE02025
:1006600070BD00BF884B0000904B0000984B00000D
:10067000A04B0000A84B0000584B00002DE9F041B2
:1006800082B0002701AE4FF448644FF072083A0A76
:100690003B0C80250D2001218DF804508DF8008041
:1006A0008DF801708DF802208DF803306D4601F051
:1006B00013FF404601E015F8010F02F031FA23461E
:1006C000013BFDD102F0F6FAB542F4D12346013BDD
:1006D000FDD100210D2001F0FFFE802502E0234620
:1006E000013BFDD102F0D2FA0028F8D002F0E2FA84
:1006F000C0B203F0B1FA013DF4D18037B7F5002F55
:10070000C3D1284602B0BDE8F08100BF2DE9F04317
:100710004F4D89B02B680093009C42F2107605E0A3
:100720000193019B1B1BB34200F28D8003F094F9EF
:1007300003282B68F4DD00240393CDE90444039FD0
:10074000444E0694ADF81C4006E02B680293029BD1
:10075000B268DB1B934273D204ABC4F104011819D5
:1007600003F090F90444032CEFD99DF812009DF892
:1007700013309DF810109DF8112003EB002302EBBD
:1007800001229BB292B201339A424FEA82274FEA8A
:10079000832949D20DF115064FF000084FF4486443
:1007A00072213A0A3B0C80258DF810100D20012192
:1007B000CDF81480CDF818808DF81450ADF81C8059
:1007C0008DF811708DF812208DF8133001F084FE31
:1007D00004AD15F8010B02F0A3F92346013BFDD14E
:1007E00002F068FAB542F4D12346013BFDD1002165
:1007F0000D2001F071FE802502E02346013BFDD172
:1008000002F044FA0028F8D002F054FAC0B203F023
:1008100023FA013DF4D18037B945C1D803F01CF962
:10082000002805DD03F0DCF803F016F90028F9DCF8
:1008300000210D2001F050FE002009B0BDE8F0833A
:100840000123337391E7EB2009B0BDE8F08300BFCB
:1008500074ECFF1F50E6FF1F2DE9F04F624D89B089
:100860002B680093009C42F2107605E00193019BF7
:100870001B1BB34200F2AA8003F0EEF803282B689A
:10088000F4DD00240393CDE90444039E574F0694FE
:10089000ADF81C4007E02B680293029BBA689B1BD3
:1008A000934280F09D8004ABC4F10401181903F059
:1008B000E9F80444032CEED99DF812009DF813309A
:1008C0009DF810109DF8112003EB002302EB01228C
:1008D0009BB292B201339A424FEA82264FEA832AB0
:1008E0006FD2434B434D03F108080D20012101F065
:1008F000F3FD414FC6F3072BC6F3074977204FF4AA
:10090000486401E017F8010F02F00AF92346013BA1
:10091000FDD102F0CFF9AF42F4D1013CFDD100216D
:100920000D2001F0D9FD02F0C5F910F0FF0352D1FE
:100930002F4A059392E8030004908DF8141098E86C
:100940000300ADF81C3006908DF81C100D2001211D
:100950008DF816B08DF8179001F0BEFD04AC0DF1C6
:100960001D0B4FF4486914F8010B02F0D9F84B46FF
:10097000013BFDD102F09EF95C45F4D14B46013BB1
:10098000FDD100210D2001F0A7FD02F093F9C0B2C6
:1009900008BBFFF761FD0346A0B903F05DF9B9F1AB
:1009A0000109FCD101E003F01BF803F055F8002821
:1009B000F9DC00210D2006F5806601F08DFDB245C1
:1009C00093D80023184609B0BDE8F08FEB231846F2
:1009D00009B0BDE8F08FE423184609B0BDE8F08FF8
:1009E00001233B7368E700BF74ECFF1F50E6FF1F55
:1009F000B04B0000654B0000604B00002DE9F04F4C
:100A0000634D89B02B680093009C42F2107605E09C
:100A10000193019B1B1BB34200F2AB8003F01CF857
:100A200003282B68F4DD00240393CDE90444039EDE
:100A3000584F0694ADF81C4007E02B680293029BC8
:100A4000BA689B1B934280F0988004ABC4F1040108
:100A5000181903F017F80444032CEED99DF812007E
:100A60009DF813309DF810109DF8112003EB002322
:100A700002EB01229BB292B201339A424FEA8226E4
:100A80004FEA832A71D2444B444D03F108080D20EC
:100A9000012101F021FD424FC6F3072BC6F30749A0
:100AA00077204FF4486401E017F8010F02F038F89E
:100AB0002346013BFDD102F0FDF8AF42F4D1013CE9
:100AC000FDD100210D2001F007FD02F0F3F810F038
:100AD000FF0355D1304A059392E8030004908DF846
:100AE000141098E80300ADF81C3006908DF81C1027
:100AF0000D2001218DF816B08DF8179001F0ECFC57
:100B000004AC0DF11D0B4FF4486914F8010B02F011
:100B100007F84B46013BFDD102F0CCF8A345F4D1D8
:100B2000B9F10109FCD100210D2001F0D5FC02F042
:100B3000C1F8C0B240BBFFF78FFC08B11B2815D12C
:100B400003F08AF84FF44863013BFDD101E002F065
:100B500047FF02F081FF0028F9DC00210D2006F597
:100B6000806601F0B9FCB24591D8002009B0BDE81B
:100B7000F08FEB2009B0BDE8F08F01233B736DE7E8
:100B8000E82009B0BDE8F08FE42009B0BDE8F08F9F
:100B900074ECFF1F50E6FF1FB04B00006D4B0000D0
:100BA000684B00002DE9F041584F0D2082B0012123
:100BB00001F092FC7E1D3C4677204FF4486501E031
:100BC00014F8010F01F0ACFF2B46013BFDD102F000
:100BD00071F8B442F4D1013DFDD100210D2001F0A6
:100BE0007BFC02F067F810F0FF0340F08980484C6E
:100BF000ADF804300D2001218DF8063004F10C0809
:100C000001F06AFC4FF44865772001E014F8010F09
:100C100001F086FF2B46013BFDD102F04BF8444525
:100C2000F4D1013DFDD100210D2001F055FC02F071
:100C300041F8C0B200285ED1FFF70EFC0446002840
:100C40005AD102F037F85FFA80F88DF8048002F08C
:100C500031F80121C5B20D208DF805504FF44864DC
:100C600001F03AFC772001E017F8010F01F058FF7E
:100C70002346013BFDD102F01DF8B742F4D1013CFF
:100C8000FDD100210D2001F027FC02F013F8C0B2C5
:100C9000002835D11F4C0D20012101F01DFC04F16D
:100CA0000C0777204FF4486601E014F8010F01F0BB
:100CB00037FF3346013BFDD101F0FCFFA742F4D1E1
:100CC000013EFDD100210D2001F006FC01F0F2FFF4
:100CD000C0B280B9FFF7C0FB044668B901F0EAFF73
:100CE0000646404602F0B8FF284602F0B5FFF0B2D3
:100CF00002F0B2FF00E0E424204602B0BDE8F0813B
:100D0000E824204602B0BDE8F08100BF704B00002F
:100D1000C04B0000D04B00002DE9F04FA04CADF2CD
:100D2000444D00214FF47F7211A8CDE90C110E91B2
:100D30008DF83C10109103F045FC23680493049E49
:100D400042F2107506E023680593059B9B1BAB429E
:100D500000F2EE8102F080FE0128F4DD23680993A1
:100D60000025CDE90C55099E8E4F0E958DF83C500F
:100D700007E023680893089BBA689B1B934280F0A6
:100D8000E3810CABC5F10201581902F07BFE05446A
:100D9000012DEED99DF83030019301219DF83130BD
:100DA00002930D2001F098FB23680693069FDFF85D
:100DB000F481002544F620660EE023680793079B24
:100DC000DB1BB34200F2BA8102F046FE1FFA80F943
:100DD000B9F1000F40F0BB81B5F5806FEDD3724FD4
:100DE0000D20012101F078FB3C1D3D4677204FF49A
:100DF000486601E015F8010F01F092FE3346013B11
:100E0000FDD101F057FFA542F4D1013EFDD10021F3
:100E10000D2001F061FB0DF13F050DF23F194FF47C
:100E2000486815F8010F01F07BFE4346013BFDD1F8
:100E300001F040FF4D45F4D101F004FFB8F1010885
:100E4000FCD101F037FFC0B2002840F0A981DFF8E3
:100E50005CA10D20012101F03FFB0AF1040556467B
:100E600077204FF4486801E016F8010F01F058FEB2
:100E70004346013BFDD101F01DFFAE42F4D1B8F174
:100E80000108FCD100210D2001F026FB0DF23F26C8
:100E90004FF4486819F8010F01F042FE4346013B48
:100EA000FDD101F007FFB145F4D101F0CBFEB8F15F
:100EB0000108FCD101F0FEFEC0B2002840F07D81A7
:100EC000DFF8EC90CDF80C900D20012101F004FB2F
:100ED00009F1050877204FF4486601E019F8010F81
:100EE00001F01EFE3346013BFDD101F0E3FEC1459A
:100EF000F4D1013EFDD100210D2001F0EDFA01F009
:100F0000D9FE10F0FF0040F05181019A029B8DF84C
:100F1000350003EB02239BB29A008DF836209A0924
:100F20009B0201930CAB02939B46224B8DF837201A
:100F300093E8030040330C908DF8341093E80300DD
:100F40000E908DF83C100D2001210DF13D094FF45C
:100F5000486601F0C1FA1BF8010B01F0E1FD3346D0
:100F6000013BFDD101F0A6FECB45F4D1013EFDD100
:100F700000210D2001F0B0FA01F09CFEC0B2002863
:100F800040F01481FFF768FA0646002840F0D1804F
:100F90000D20012101F0A0FA4FF4486677200DE002
:100FA00074ECFF1F50E6FF1FE04B0000E84B000011
:100FB000784B0000B04B000017F8010F01F0B0FDB6
:100FC0003346013BFDD101F075FEA742F4D1013E4D
:100FD000FDD100210D2001F07FFA0DF23F270DF227
:100FE0003F364FF4486417F8010F01F099FD23468E
:100FF000013BFDD101F05EFEB742F4D101F022FECB
:10100000013CFDD101F056FEC0B2002840F0C8807E
:101010000D20012101F060FA4FF44864772001E0CF
:101020001AF8010F01F07CFD2346013BFDD101F0D0
:1010300041FEAA45F4D1013CFDD100210D2001F073
:101040004BFA0DF23F440DF23F364FF4486516F867
:10105000010F01F065FD2B46013BFDD101F02AFE99
:10106000A642F4D101F0EEFD013DFDD101F022FEDA
:10107000C0B2002840F0A1800D20012101F02CFA1F
:101080004FF44864039D772001E015F8010F01F04B
:1010900047FD2346013BFDD101F00CFE4545F4D14F
:1010A000013CFDD100210D2001F016FA01F002FEF5
:1010B00010F0FF007AD1424A8DF8350092E8030023
:1010C0004032019B8DF834100C9092E8030003F538
:1010D00000731A0A0E908DF83C101B0C01210D2094
:1010E0008DF836208DF8373001F0F6F9029D4FF477
:1010F000486415F8010B01F013FD2346013BFDD1B7
:1011000001F0D8FD4D45F4D1013CFDD100210D2069
:1011100001F0E2F901F0CEFDC0B2002846D1FFF7A0
:101120009BF9064628B901460D2001F0D5F900E0EB
:10113000EB2630460DF2444DBDE8F08FEC263046EC
:101140000DF2444DBDE8F08F01233B7322E615FA02
:1011500080F0B0F5806F1CDC1FFA80FB23680B93D6
:10116000DDF82CA0002608E023680A930A9BD8F833
:101170000820A3EB0A0393421AD2A81910ABA9EBDB
:101180000601184402F07EFC0644B145ECD85D46E9
:1011900010E6C5F580691FFA89F94FF4806BDDE729
:1011A000E12630460DF2444DBDE8F08FE626C0E75B
:1011B000012388F80C305D46FCE5E226B9E700BF64
:1011C000B04B00002DE9F04F994DADF24C4D002190
:1011D0004FF47F7213A8CDE90E1110918DF84410D1
:1011E000129103F0EFF92B680693069E42F21074F9
:1011F00006E02B680793079B9B1BA34200F2B68275
:1012000002F02AFC0128F4DD2B680B930024CDE9C1
:101210000E440B9E874F10948DF8444007E02B68D6
:101220000A930A9BBA689B1B934280F0AD820EAB77
:10123000C4F10201181902F025FC0444012CEED976
:101240009DF83830009301210D209DF83990DFF88A
:10125000E48101F041F92B680893089F002444F6CB
:1012600020660EE02B680993099BDB1BB34200F25A
:10127000848202F0F1FB1FFA80FABAF1000F40F00D
:101280008682B4F5806FEDD36B4C0D20012101F007
:1012900023F9661D77204FF4486501E014F8010F2B
:1012A00001F03EFC2B46013BFDD101F003FDB442B1
:1012B000F4D1013DFDD100210D2001F00DF901F027
:1012C000F9FC10F0FF0040F08C825C4D8DF83D0081
:1012D00095E80300009B0E9005F1080709EB032930
:1012E0008DF83C1097E803001FFA89F3C3F38712C7
:1012F0009E009B02F6B2019310900EAB8DF8441045
:101300000D2001218DF83E6000928DF83F20029360
:101310000DF145049A464FF4486801F0DDF81AF8DB
:10132000010B01F0FDFB4346013BFDD101F0C2FC86
:10133000A245F4D1B8F10108FCD100210D2001F043
:10134000CBF801F0B7FCC0B2002840F05282FFF7A2
:1013500083F8824600285DD01B2840F00982DFF820
:10136000E0B00D20012101F0B7F80BF1050A77205C
:101370004FF4486801E01BF8010F01F0D1FB434630
:10138000013BFDD101F096FCD345F4D1B8F1010841
:10139000FCD100210D2001F09FF801F08BFC10F032
:1013A000FF0040F026828DF83D0095E803000E9086
:1013B0008DF83C1097E80300009B10908DF84410C6
:1013C0000D2001218DF83E608DF83F300DF1380A77
:1013D0004FF4486801F080F81AF8010B01F0A0FB07
:1013E0004346013BFDD101F065FCA245F4D1B8F1C3
:1013F0000108FCD100210D2001F06EF801F05AFC2B
:10140000C0B2002840F0F581FFF726F88246002898
:1014100040F0AE810B4B03931F460D20012101F0DC
:101420005BF83B469A46043777204FF448680DE056
:1014300074ECFF1F50E6FF1F684B0000B04B00002C
:10144000604B0000E04B00001AF8010F01F068FB50
:101450004346013BFDD101F02DFCBA45F4D1B8F172
:101460000108FCD100210D2001F036F80DF1470BE9
:101470000DF247184FF4486A1BF8010F01F050FBBA
:101480005346013BFDD101F015FCC345F4D101F0F9
:10149000D9FBBAF1010AFCD101F00CFCC0B2002862
:1014A00040F0AA81DFF814B2CDF810B00D20012170
:1014B00001F012F80BF1040977204FF4486A01E0BB
:1014C0001BF8010F01F02CFB5346013BFDD101F04D
:1014D000F1FBCB45F4D1BAF1010AFCD100210D207A
:1014E00000F0FAFF0DF2472B4FF4486A18F8010F8D
:1014F00001F016FB5346013BFDD101F0DBFBD84563
:10150000F4D101F09FFBBAF1010AFCD101F0D2FB4A
:10151000C0B2002840F07681DFF8A481CDF81480B5
:101520000D20012100F0D8FF08F1050B77204FF4C2
:10153000486A01E018F8010F01F0F2FA5346013B46
:10154000FDD101F0B7FBC345F4D1BAF1010AFCD1DA
:1015500000210D2000F0C0FF01F0ACFB10F0FF00F7
:1015600040F04D818DF83D0095E80300DFF854B15F
:101570000E908DF83C109BE80300009B10908DF8B6
:1015800044100D2001218DF83E608DF83F300DF1A3
:10159000380A4FF4486600F09FFF1AF8010B01F07B
:1015A000BFFA3346013BFDD101F084FBA245F4D1E3
:1015B000013EFDD100210D2000F08EFF01F07AFBED
:1015C000C0B2002840F01B81FEF746FF824600288B
:1015D00040F0CE800D20012100F07EFF4FF44866E0
:1015E000DDF80CA0772001E01AF8010F01F098FA5D
:1015F0003346013BFDD101F05DFBBA45F4D1013E1C
:10160000FDD100210D2000F067FF0DF2472A0DF2F9
:1016100047374FF448661AF8010F01F081FA334654
:10162000013BFDD101F046FBBA45F4D101F00AFBC4
:10163000013EFDD101F03EFBC0B2002840F0DC804D
:101640000D20012100F048FF4FF44866049F7720E9
:1016500001E017F8010F01F063FA3346013BFDD1B9
:1016600001F028FB4F45F4D1013EFDD100210D20B2
:1016700000F032FF0DF247460DF2473A4FF448674B
:101680001AF8010F01F04CFA3B46013BFDD101F085
:1016900011FBB245F4D101F0D5FA013FFDD101F0C3
:1016A00009FBC0B2002840F0AD800D20012100F000
:1016B00013FF4FF44866059F772007E0E84B0000D2
:1016C000784B0000F04B000017F8010F01F028FAEA
:1016D0003346013BFDD101F0EDFA4745F4D1013E1F
:1016E000FDD100210D2000F0F7FE01F0E3FA10F02B
:1016F000FF0040F084808DF83D0095E80300019BD9
:101700008DF83C100E909BE8030003F500731A0A55
:1017100010908DF844101B0C01210D208DF83E20F7
:101720008DF83F3000F0D8FE029E4FF4486516F861
:10173000010B01F0F5F92B46013BFDD101F0BAFA9E
:10174000A642F4D1013DFDD100210D2000F0C4FEE0
:1017500001F0B0FAC0B2002851D1FEF77DFE8246FA
:1017600030B901460D2000F0B7FE01E04FF0EB0A62
:1017700050460DF24C4DBDE8F08F4FF0EC0A50464C
:101780000DF24C4DBDE8F08F01233B7358E514FA80
:1017900080F0B0F5806F1CDC83B201932B680D9351
:1017A0000D9E4FF0000B07E02A680C920C9AD8F8B7
:1017B0000810921B8A4217D204EB0B0012ABAAEB63
:1017C0000B01184402F05EF98344DA45ECD8019C21
:1017D00045E5C4F5806A4FF480631FFA8AFA0193E5
:1017E000DCE74FF0E80AC3E70123019C88F80C30DE
:1017F00035E54FF0E40ABBE74FF0E10AB8E74FF0F8
:10180000E60AB5E74FF0E20AB2E700BF2DE9F04380
:10181000574F584D83B04FF0000901210D20CDF8EE
:1018200000908DF8049000F057FE4FF4FA514FF4F9
:10183000FA6000F059FC08218046012000F054FCB9
:1018400049460646052000F047FE4FF4A063013BE1
:10185000FDD101F02FF8052000F0A0FE01210520A8
:1018600000F03AFE052000F099FE4FF4E1313846D1
:1018700000F086FB6423BB60012000F08FFE2B7814
:10188000C5203B3B4FF448642B7001F049F92346D7
:10189000013BFDD12B78012001332B7001F040F981
:1018A0002346013BFDD10320287001F039F923467E
:1018B000013BFDD12B789A20663B2B7001F030F96B
:1018C0002346013BFDD1484601F02AF92346013B5E
:1018D000FDD12B78142014332B7001F021F923460D
:1018E000013BFDD12B785842C0B2C31A2B7001F0D6
:1018F00017F9013CFDD101E001F0DCF901F0C6F976
:101900000028F9DC2B78032003444FF448642B7043
:1019100001F006F92346013BFDD101F0CBF9052288
:101920006946384600F0C4FB9DF80230062B32D0E1
:10193000102B40F0F8805FEA481802D0B8F1010897
:10194000FCD10021042000F0C7FD760101D0013E4A
:10195000FDD10121042000F0BFFD01E001F0AAF952
:1019600001F094F90028F9DC40F2E734A02609E000
:1019700024E6FF1F61ECFF1F3346013BFDD1013C14
:101980003FF449AF01F082F90028F5DD01F092F94A
:10199000C0B20228F0D1052000F000FE2B78912083
:1019A0006F3B4FF448662B7001F0BAF83346013BA9
:1019B000FDD13A24012000F0F1FD20462C7001F009
:1019C000AFF83346013BFDD12B784E2003442B70FA
:1019D00001F0A6F83346013BFDD12B786F2003447C
:1019E0002B7001F09DF83346013BFDD12B7874201C
:1019F00003442B7001F094F83346013BFDD12B7862
:101A0000204623442B7001F08BF83346013BFDD177
:101A10002B78552003442B7001F082F83346013BAC
:101A2000FDD12B78732003442B7001F079F83346F5
:101A3000013BFDD12B78652003442B7001F070F839
:101A40003346013BFDD12B78642003442B7001F019
:101A500067F83346013BFDD12B78204623442B7099
:101A600001F05EF83346013BFDD128780138C0B261
:101A700043002B7001F054F83346013BFDD10120A7
:101A800000F08CFD2B7893206D3B2B7001F048F813
:101A90003346013BFDD10120284C00F07FFD04F1CD
:101AA000C3072B7814F8010F03442B7001F038F8AA
:101AB0003346013BFDD1BC42F3D1012000F06EFD65
:101AC0002B7893206D3B2B7001F02AF8013EFDD15D
:101AD00001201B4C00F062FDE71D4FF448662B7897
:101AE00014F8010F03442B7001F01AF83346013B40
:101AF000FDD1A742F3D1012000F050FD942001F068
:101B00000FF8052000F04AFD01E001F0D3F801F0E4
:101B1000BDF80028F9DC0D20002100F0DDFC0120DB
:101B200003B0BDE8F0832B78EE20123B2B7000F061
:101B3000F7FF013CFDD10020F2E700BF5FE5FF1F8A
:101B400057E5FF1F2DE9F043012183B00D2000F080
:101B5000C3FCB74DB74EB84F01F07EFF002800F030
:101B60009D8001F03DFFC0B20128287010D91028D7
:101B700000F09780202853D0802800F04681F0287C
:101B800000F030813B78002B00F05E812028E3D804
:101B90002028E1D801A353F820F000BFDD1D00008C
:101BA000B11D0000AB1D0000A51D00007B1D000045
:101BB000591B0000511D0000271D0000FD1C0000E6
:101BC000591B0000D31C0000591B0000591B0000CA
:101BD000591B0000591B0000591B0000A31C0000EA
:101BE000591B0000591B0000591B0000591B000025
:101BF000591B0000591B0000591B0000591B000015
:101C0000591B0000591B0000591B0000591B000004
:101C1000591B0000591B0000591B0000211C00002B
:101C200001210D20854C00F057FC0D20012100F012
:101C300053FC04F1040975204FF4486801E014F8DE
:101C4000010F00F06DFF4346013BFDD101F032F87A
:101C50004C45F4D1B8F10108FCD100210D2000F071
:101C60003BFC01F027F810F0FF0018BFE0203070B7
:101C700001F0F2FF4FF44863013BFDD101E001F0B8
:101C8000AFFE01F0E9FE0028F9DC00210D2000F094
:101C900023FC01F0E1FE00287FF463AF03B0BDE850
:101CA000F0833C7800203070002C00F0BA8001F006
:101CB000D3FF4FF44863013BFDD101E001F090FEFA
:101CC00001F0CAFE0028F9DC00210D2000F004FC20
:101CD000DFE7FEF767FF307001F0BEFF4FF44863A7
:101CE000013BFDD101E001F07BFE01F0B5FE0028D3
:101CF000F9DC00210D2000F0EFFBCAE7FEF77EFEC5
:101D0000307001F0A9FF4FF44863013BFDD101E0C1
:101D100001F066FE01F0A0FE0028F9DC00210D2094
:101D200000F0DAFBB5E7FFF74DFA307001F094FFF1
:101D30004FF44863013BFDD101E001F051FE01F099
:101D40008BFE0028F9DC00210D2000F0C5FBA0E788
:101D5000FEF7E2FF307001F07FFF4FF44863013B74
:101D6000FDD101E001F03CFE01F076FE0028F9DC37
:101D700000210D2000F0B0FB8BE7FEF76DFD307009
:101D800001F06AFF4FF44863013BFDD101E001F02F
:101D900027FE01F061FE0028F9DC00210D2000F093
:101DA0009BFB76E7FEF76AFCD6E6FEF7AFFCD3E6D0
:101DB000012002F03BF9224C804602F03FF901ABD2
:101DC000A3EB08032380052001F046FF2088000ACA
:101DD00001F042FF207801F03FFFBDE6022001F054
:101DE0003BFFB9E6012002F021F9154C804602F0D4
:101DF00025F901ABA3EB08030220238001F02CFF9F
:101E0000052001F029FF3020DEE700210D2000F041
:101E100063FB4FF4FA7000F0C1FB0A4B1B68984754
:101E20009AE6FFF7F3FC307008BBE12030703EE724
:101E300060ECFF1F6CECFF1F64ECFF1FF84B000011
:101E400062ECFF1F68ECFF1FE02001F005FF4FF47C
:101E50004863013BFDD101E001F0C2FD01F0FCFD52
:101E60000028F9DC00210D2000F036FB11E7FEF719
:101E70002DFB307010B901233B7018E73C7016E75A
:101E80002DE9F843314F324D324CDFF8CC903846D3
:101E90004FF4E13100F074F86423BB602E682F4FDB
:101EA00040F2EE2801F05AFF2378002B40D03B7817
:101EB000DA073DD52B68D9F800209B1A0E2B37D9AD
:101EC00001210D2000F02EFB0121052000F02AFB4E
:101ED0000121042000F026FB0121084600F022FB2E
:101EE0000021084600F01EFB0021052000F0F4FA56
:101EF0000021012000F0F0FA0021084600F0ECFA81
:101F00000121042000F0E8FA01F028FF2378002BDB
:101F1000FAD03B78DB07F7D52B68D9F800209B1A5D
:101F20000E2BF1D9BDE8F84301210D2000F0D4BA01
:101F30002B6822789B1B2AB1B3F5FA6FC0D801F049
:101F40000DFFAFE74345FAD9BAE700BF24E6FF1F0C
:101F500074ECFF1FF8EDFF1F20EEFF1F1CEEFF1FAC
:101F60000368C9B21B6818470368C9B21B681847E1
:101F70000368C9B21B6818470368C9B21B681847D1
:101F80004B0803F1376303F5D83310B50446B3FBB0
:101F9000F1F000F0C5FB044B1B7803B110BD2046E7
:101FA000BDE8104001F07EBF4DE6FF1F08B50846B2
:101FB00000F0B6FD012008BD08B5084600F0B0FDF0
:101FC000012008BD38B508460D4602F099FB0446CD
:101FD0000146284600F0AEFD204638BD10B5084643
:101FE0001446114600F0A6FD204610BD08461146D5
:101FF00000F0CEBF0846114600F0AEBF00F0C6BEEE
:1020000008B5084600F062FD003818BF012008BD81
:1020100008B5084600F038FD003818BF012008BD9B
:102020000846114600F0C8BC084600F003BD00BFDA
:10203000084600F0A5BC00BF00F03CBC10B54B0842
:1020400003F13763144603F5D833B3FBF1F000F026
:1020500067FB2046BDE8104000F0CEBB00F070BE2C
:1020600000F028BE00F012BE00F0ECBD00F0F6BD9E
:1020700070B50E4D82B02B680093009E044608E0B8
:1020800001F06CFE2B680193019BA2689B1B93429D
:1020900007D2236820465B6998470028F0DB02B02E
:1020A00070BD4FF0FF3002B070BD00BF74ECFF1F79
:1020B000F8B50D4691B116469AB10746002404E0E2
:1020C0000134A64205F8010B06D03846FFF7D0FFD1
:1020D0000028F5DA01233B732046F8BD0C46204664
:1020E000F8BD1446F8E700BF884200DB704770B4C3
:1020F000114C2268091AEAB1104B114E114D83FBA5
:10210000023C9444D317C3EB2C4306FB132244F246
:10211000A71C05FB03F30CFB0233002B02DA03F1CF
:102120000043013BB3FBF1F201FB12322360104488
:1021300070BC7047044BF5E770ECFF1F5F0B4E83DC
:102140001DF30100ECF4FFFF42CE0C1F08B5FFF7B2
:1021500097FEFFF7F7FC01F001FEFAE701B441EA50
:10216000000313F003036FD1403A41D351F8043B0D
:1021700040F8043B51F8043B40F8043B51F8043B61
:1021800040F8043B51F8043B40F8043B51F8043B51
:1021900040F8043B51F8043B40F8043B51F8043B41
:1021A00040F8043B51F8043B40F8043B51F8043B31
:1021B00040F8043B51F8043B40F8043B51F8043B21
:1021C00040F8043B51F8043B40F8043B51F8043B11
:1021D00040F8043B51F8043B40F8043B51F8043B01
:1021E00040F8043B51F8043B40F8043B403ABDD270
:1021F000303211D351F8043B40F8043B51F8043B12
:1022000040F8043B51F8043B40F8043B51F8043BD0
:1022100040F8043B103AEDD20C3205D351F8043BA0
:1022200040F8043B043AF9D204320AD0D2071CBF6A
:1022300011F8013B00F8013B03D30B7803704B7896
:10224000437001BC704700BF0C2A4AD310F003034F
:1022500011D0C3F10403D21ADB071CBF11F8013BF4
:1022600000F8013B07D311F8013B00F8013B11F8DE
:10227000013B00F8013B11F003033FF475AF30B4AC
:10228000043AC91AC3F1040C51F8044B022B19D0BB
:10229000032B0BD0240A51F8043B1D0644EA050425
:1022A00040F8044B1C46043AF4D216E0240E51F8D0
:1022B000043B1D0244EA050440F8044B1C46043A62
:1022C000F4D20AE0240C51F8043B1D0444EA05044E
:1022D00040F8044B1C46043AF4D20432B1EB0C0132
:1022E00030BC043AA0D3013A11F8013B00F8013B9D
:1022F000F9D20B7803704B7843708B78837001BCF4
:10230000704700BF08B50F4C636B58030DD4636B67
:1023100059050FD4636B1A0511D4636BDB04F3D535
:1023200000F012F8636B5803F1D500F0FFFE636B09
:102330005905EFD500F04EFD636B1A05EDD500F0A1
:1023400003F8EAE70080044008B5FFF7DBFF00BFB1
:10235000014B10221A80704700200540704700BFD3
:10236000094A08B50346106833B169460344A1F52C
:1023700080618B4201D2136008BD02F087F90C2303
:1023800003604FF0FF3008BD38E6FF1FEFF3138303
:10239000CBB9EFF31080A0B9EFF3058343B94FF445
:1023A0008070EFF311835BB1984228BF18467047E5
:1023B0000F2BF6D9054AD05CEFF31183002BF3D134
:1023C0007047184670474FF0FF307047F0E300E069
:1023D00001F1FF3C70B56546002401E07046013410
:1023E000B0FBF2FE02FB1E03092B03F130068ABF8D
:1023F0003733F3B2DBB2904205F8013FEED2631CF3
:102400000022CA54C8187CB162461CF8015F10F85B
:1024100001ED8CF800E0A1EB0C030232013B521AF3
:1024200023449A420570EFDB084670BD034B00223F
:1024300010215A615A6018605961704700D00340FA
:10244000704700BFF0B54FF0E0204FF480744FF4B8
:102450000077C0F80441C0F804714FF48067C0F8F9
:1024600004711A4B1A494FF40067C0F8047128220E
:10247000092400264BF6FF754FF48057C0F804710D
:1024800083B05E609D60DA605A61DA615A62DA6236
:102490005A63DA635A641C604E608D60CA604A6198
:1024A0000C6001F027FDFFF7CBFF0A4C2368009377
:1024B000009B132BFAD901F0F3F923680193019BD8
:1024C000B3F5967FF9D303B0F0BD00BF00800340A1
:1024D0000090034074ECFF1F212816D810B4104B55
:1024E00053F8302092F880422CB1012371B982F860
:1024F000003110BC704703EBC0035B681A6849B138
:1025000042F0030210BC1A607047704782F88030B6
:1025100010BC704722F0020210BC1A60704700BF66
:10252000684C0000212820D81B4A02EBC003012977
:102530005B680FD004291DD052F83000002280F8CB
:10254000802299B1022922D003290DD14FF4817242
:102550001A60704752F830004FF4A27280F880126F
:102560001A601A6822F020021A6070474FF48072D5
:102570001A60704752F830104FF4A272012081F8AF
:1025800080021A601A6842F020021A60704740F216
:1025900003121A60704700BF684C00002DE9F84331
:1025A000044672B6204F4FF0E02293693D68D2F89E
:1025B000042D62B6520102D5322B88BF01350CB909
:1025C000BDE8F883DFF86490DFF86480A9EB0303CB
:1025D000A8FB03234FF47A7202FB05F505EB931574
:1025E0004FF0E02672B6B1693A68D6F804CD62B60B
:1025F000A9EB0103A8FB03031CF0806FC5EB931349
:102600004FF47A7002D0322988BF013200FB0233C6
:10261000B3F57A7F04D3013CD2D005F57A75E1E7B2
:1026200001F09CFBDEE700BF74ECFF1FFF760100AA
:10263000ABAAAAAA2DE9F84F314B1B6807460BB18C
:1026400001221A70DFF8BC90DFF8BC8099F80040D6
:10265000D8F800302D4D01349C422B782AD303F05A
:10266000FF0A002B3ED15446294EDFF8A8B005E002
:1026700033791B0623D42B78A3420AD1FFF786FEB9
:102680004028F5DDFF28F6DD01F068FB2B78A3423A
:10269000F4D03F2C29D9204B403C1B68FFB21F557A
:1026A0001E4A1B4B01211170BC2289F800A0DA7070
:1026B000BDE8F88F9C425FFA84FAD5D0E9E72B7821
:1026C000D8F800105A1C8A42DBB203D23F2A10D835
:1026D000D1B201E000210A461BF80230DBB2F371EF
:1026E0002970C8E74FF0000A54460A4BFFB21F5545
:1026F000D6E7D1B2084A3F3B1268D35CDBB2EEE7C3
:10270000C8ECFF1F10EDFF1F48E6FF1F18EDFF1F6D
:1027100000A00640D0ECFF1F14EDFF1FCCECFF1F04
:10272000294A2A49536B70B443F48063284D53639C
:1027300000232B70274E0B70274C284923703278CA
:102740000B7027490B7092B3152A03D1254B40F229
:1027500013329A61244B1B78012B30D0052B03D107
:10276000204B4FF45172DA612028204B204C38BFA7
:102770002020C0F3443C83F800C0C0F3471C00F0A5
:102780001F0083F801C00422987202209A70D87446
:1027900088205A754FF0E021187440223C20D870F0
:1027A00022744FF4803370BCC1F800317047114B74
:1027B00040F213321A640C4B1B78012BCED10D4B17
:1027C0004FF451725A64CFE700800440C4ECFF1FFD
:1027D000BCECFF1FC5ECFF1F10EDFF1F18EDFF1F26
:1027E000CCECFF1F00C004404CE6FF1F00A00640D9
:1027F00000E400E000A00440294B29499B7800F048
:10280000030203F0EC031343420700F00F0248BF3A
:1028100043F01003042A8B7003D18B7943F04003FB
:102820008B711F4B5A79C30602F0EF021C4B48BF55
:1028300042F010025A719A79810602F0EF0211D526
:1028400042F0100281059A710FD59A78154942F02D
:10285000A0029A700978144B03EBC10340F2463290
:102860005B6814E09A71820505D4104B104A196810
:10287000914211D070479A780A4942F0A0029A70AA
:102880000978094B03EBC10340F247325B68074903
:1028900007481A600860704700221A60704700BF3E
:1028A00000A006404CE6FF1F684C0000C8ECFF1F6C
:1028B000D400D442284B5B6B5B054CD510B5274C3C
:1028C000237823B101F04AFA2378002BFAD1244A65
:1028D000244B4FF0E0204FF480340021C0F88041B9
:1028E000D1701B7863B3152B1BD01F4B1B7803F0E3
:1028F0007F03012B1FD0052B0ED01C4B184A1C4CFC
:102900001C48196892F804C0D27900232370037020
:1029100009B101230B7010BD174B40F20312DA61AD
:10292000EBE7154B40F203129A610F4B1B7803F053
:102930007F03012BDFD1114B40F203125A64DCE715
:102940000E4B40F203121A64074B1B7803F07F030F
:10295000012BD0D1EFE7704700800440CCECFF1F83
:1029600000A00640C5ECFF1F4CE6FF1F78ECFF1FE0
:10297000BCECFF1FC4ECFF1F00C0044000A00440DB
:102980000A4A38B50546137803F0FF04002BFAD144
:1029900001212846FFF7C6FD21462846FFF79CFD8A
:1029A000034A044B52F835201A6038BDCCECFF1FA7
:1029B000684C0000C8ECFF1F09B140F08000194AC4
:1029C0001378834217D010B4174C646B64050FD58D
:1029D00003F07F03012B21D0052B14D0002900F038
:1029E0007F0314BF60214421012B10D0052B03D09D
:1029F000107010BC704770470C4B41F44071D961A6
:102A0000107010BC7047094B0024DC61E6E7084BEE
:102A100041F440715964107010BC7047044B00249D
:102A20005C64DBE74CE6FF1F0080044000C004400C
:102A300000A00440104A137883420AD00F49496B22
:102A4000490505D5ABB1152B09D068B1152801D0C2
:102A5000107070470A4B40F213319961F8E7084B48
:102A6000002199610028F1D1064B40F2133119641D
:102A7000EEE704490B64E8E7C5ECFF1F0080044063
:102A800000C0044000A004400D4B5B6B13F4806356
:102A900013D0212803D90B4B0020186070470A4B34
:102AA00010B5084C53F8303023600121FFF73AFD90
:102AB000236800221A70012010BD1846704700BF1D
:102AC0000080044078ECFF1F684C0000104B5B6BEB
:102AD00013F4806312D012280BD0142810D10D4BA0
:102AE00040F202325A610C4A537B01200343537374
:102AF00070470A4B40F20232DA60F4E7184670473A
:102B0000054A537B03F0FE0300205373704700BF58
:102B10000080044000C0044000A0064000A0044023
:102B2000034B5B6B5B0501D5FFF784BD704700BFAE
:102B3000008004402DE9F84F394B5B6B5A053CD5BA
:102B4000384B1B680BB101221A704718B84231D2BA
:102B5000354EDFF8D880364CDFF8D89000F1010A06
:102B600013E003F0FF0B53B34FF0000B5D46324A06
:102B70001AF8013C5355524630490123BA420B70B2
:102B80000AF1010A86F800B014D23578D8F800307E
:102B90000135AB422378E4D9AB425FFA85FB0FD015
:102BA0003F2DE4D9264B1AF8012C1B68403D5A559D
:102BB0005246E1E71F4BBC22DA70BDE8F88F5D4654
:102BC0006FF0430389F8033006E099F804301B06E0
:102BD0000BD42378AB42E3D1FFF7D8FB4028F4DDD8
:102BE000FF28F6DD01F0BAF8F3E72378D8F80010F3
:102BF0005A1C9142DBB203D93F2A0AD8D1B201E074
:102C000000210A460C4B9B5CDBB289F8073021702F
:102C1000DFE7D1B20A4A3F3B1268D35CDBB2F4E78C
:102C200000800440C8ECFF1F10EDFF1F48E6FF1FA7
:102C300018EDFF1F00A00640D0ECFF1FCCECFF1FDB
:102C400014EDFF1F10B5044C237823B101F086F872
:102C50002378002BFAD110BDCCECFF1F084A094B9A
:102C600011781A789142C8B2D3B202D2013B181A35
:102C70007047054A1268013A1344181A704700BF9A
:102C800010EDFF1F18EDFF1F48E6FF1F064A074B18
:102C900011781A789142D0B23CBF054A1268CBB283
:102CA00038BF9B18181A7047BCECFF1FC4ECFF1FFD
:102CB00044E6FF1F1B4B1C491A780B789A422ED012
:102CC00010B55FFA82FE194AD8B21268431C9A42C4
:102CD00019D93F2B1BD85FFA83FC1548C05CC0B2E2
:102CE00081F800C01349096861B19E453CBF724438
:102CF000D31A114A126828BFAEEB03039A4201D3DC
:102D000000230B7010BD4FF0000C6346E5E70B4C41
:102D10003F382468205C5FFA83FCC0B2E0E74FF0E4
:102D2000FF307047BCECFF1FC4ECFF1F44E6FF1FE1
:102D30007CECFF1F78ECFF1F40E6FF1FC0ECFF1F7D
:102D40000D4A0E4B11781B789942DAB211D00C491A
:102D50000968531C994207D93F2B06D9094B3F3AC2
:102D60001B68985CC0B270470023074AD05CC0B2B1
:102D700070474FF0FF307047BCECFF1FC4ECFF1FE3
:102D800044E6FF1FC0ECFF1F7CECFF1F0C4B5B6B8E
:102D90005B0514D50B4B0C48DA78402102F0CB02CE
:102DA000DA705974DA78094942F03402DA70084A64
:102DB00003781268DBB20B700AB1002313707047FE
:102DC0000080044000A00640C4ECFF1FBCECFF1FC5
:102DD00078ECFF1F2DE9F041504C237913F0300FB0
:102DE00047D072B6A37D03F0FF01002B58D062B626
:102DF000DFF82C814B4898F800304B4A057816686C
:102E00004A4F5FFA83FC4A4BEDB2D3F800E008E08A
:102E10001DB14FF0000C07F80C304A1E12F0FF01F4
:102E200012D0E3790CF101029642DBB2F0D995425F
:102E3000ACF13F00F1D03F2A6DD994464A1E12F002
:102E4000FF010EF80030ECD15FFA8CF388F8003007
:102E5000384B196869B1AC453CBF721B02EB0C03DF
:102E6000354A126828BFACEB05039A429CBF012388
:102E70000B702A48C3781E06DDB216D46A060DD53B
:102E8000264B1B795B0609D52C4B2D491B6800226C
:102E90000A7003B11A70214B3C22DA70BDE8F08150
:102EA0004023E279637462B6E3E703791C06E5D553
:102EB000244B254ADFF894E01C7816689EF8003011
:102EC000234A244FD2F800C0E4B2DBB207E0037912
:102ED0000023FA5CD2B2C271027D072A11D8A34244
:102EE00003F101010ED08E42F1D93F290279A3F1FD
:102EF0003F0301D80B46ECE71CF803200B46D2B287
:102F0000E9E7DCB2054B8EF800401A79110644BFA0
:102F10007C22DA70B2E794467DE700BF00A006404D
:102F2000BCECFF1FC4ECFF1F44E6FF1F7CECFF1F3F
:102F3000C0ECFF1F78ECFF1F3CE6FF1FC8ECFF1F33
:102F4000CCECFF1F10EDFF1F48E6FF1F18EDFF1F21
:102F500014EDFF1FD0ECFF1F094B10B4186060B1D7
:102F600001F14004074B084801F11A021A60074BAF
:102F70000460283110BC196070474024F2E700BF9C
:102F8000C0ECFF1F40E6FF1F44E6FF1F3CE6FF1FAB
:102F9000054B186018B1054B403119607047034B61
:102FA00040211960704700BF14EDFF1F48E6FF1F66
:102FB000704700BF431E032B17D872B60C4951F857
:102FC000230080B110B40B4CB0F800C034F81320CB
:102FD000A2EB0C02D0F804C041F823C024F813205F
:102FE00062B610BC704762B670470020704700BFE1
:102FF000ACEDFF1FFCEDFF1F013803280BD872B6A4
:10300000074B53F8203043B100205B680130002BA0
:10301000FBD162B67047002070471846F9E700BF41
:10302000D4EDFF1F10B472B6194A1A4C042312F8DB
:10303000011B090743F0010C05D554F8331061B1A9
:1030400054F83C10B9B10433142BF0D162B6124BD2
:1030500000221A7010BC00F09BBC0F4904EBC302A5
:10306000083050600A780D4844F83300013A0A707D
:1030700062B610BC7047084A094904EBCC0308301B
:103080005860137844F83C10013B137062B6F0E7C7
:10309000F84D000000E0FF1F04EEFF1F8800400015
:1030A000C8004000421E032A0ED81C4B400140F0CD
:1030B000100010B4034472B6194CA05C03281CD84D
:1030C000DFE800F01315031870470520A05413F033
:1030D000080F088814BFC8228822083142EA00423B
:1030E00059601A6062B610BC70470320EEE70833DF
:1030F0000220EBE708330420E8E70A4B53F82200EC
:1031000038B1094B53F82200416043F8221062B6EF
:10311000E9E743F82210044BF7E700BF00E0FF1F88
:10312000F4EDFF1FD4EDFF1FE4EDFF1F2DE9F04F7D
:10313000DFF8CCA2DFF8CCB285B03DE0B24D9E08FE
:1031400005EBC607013A796813F00803D4B2A1F180
:10315000080040F0B88055F836204FEA124C120CA7
:1031600021F808CC00F0A78021F8063C41F8043C87
:10317000A64B53F82420002A00F00182A44B53F8F8
:103180002420506043F82400A24B33F814209444C8
:1031900023F814C000F0DCFB002800F0E98117F0F0
:1031A000080F9D4B00F1080018BF5B46786045F89A
:1031B000363008238AF880309AF880305907DCB21C
:1031C0001BD5964B1B78ABB195490A7802F0FF03EB
:1031D0002AB1013BDBB20B70002B00F04683914912
:1031E0000A7802F0FF032AB1013BDBB20B70002B1F
:1031F00000F0EB8104238AF8803014F0080200F01C
:10320000CC819AF89020D3B2120997D1DFF8F891C7
:103210009B0809EBC30459F833006468C0F38300CA
:1032200009287CD00FD80138012808D87E4A158893
:1032300042F22100854200F0FB8149F833B00123BE
:103240008AF89430B5E70D28F9D1D4E90007774D15
:1032500049F833B0744E764CC9F8102083B240F26E
:10326000816CC9F818202A6063454FF00102C6E955
:103270000007227000F2FF80B3F5D06F80F0CB82A0
:10328000B3F5817F00F0268240F2DE8040F2023208
:1032900093427BD107F07F07042F00F20881020CD4
:1032A00040F00581634911F8273043F0020301F82B
:1032B0002730134670E017F0080F574B18BF5B46D6
:1032C00045F8363075E700F063FB5B495B4A51F81F
:1032D0002430002B00F05781586841F82400115D1C
:1032E00003F108007860032905D8DFE801F0120F28
:1032F0001502042111551A8817F0080F14BFC823AE
:10330000882343EA024345F8363052E7022111553B
:10331000F1E703211155EEE705211155EBE7434D88
:103320002A683AB34649424C0F88464894F800E070
:103330000678402F3B4628BF4023BEF1000F8EF099
:10334000010E84F800E046F0020486F001060670E3
:1033500009EBC400426014BFC820882040EA034043
:103360001A44FB1A9BB249F834000B80002B00F082
:1033700036812A602C4B1A88B2F5A06F7FF45FAFBC
:103380009A788AF8982000225A7058E7B3F5A06F0F
:1033900040F08D8000221346B6F806C029489445B7
:1033A00028BF944667460278402F28BF402742F046
:1033B000020E3E0409EBCE0846F0C806C8F80430F9
:1033C00049F83E6000263B442670BCEB070782F0BC
:1033D0000106067040F01181BCF13F0F4FF001056E
:1033E00009D946F00206027009EBC6022570536047
:1033F000882349F8363001238AF894301FE700BF4C
:1034000000200740C800400000E0FF1FACEDFF1F98
:10341000BCEDFF1FFCEDFF1F88004000F8EDFF1F13
:10342000F9EDFF1F24EEFF1FCCEDFF1FA0EDFF1FE6
:103430009DEDFF1FC0200740D4EDFF1FF4EDFF1FDF
:103440009EEDFF1F9CEDFF1F802B00F08B81822BD8
:103450002DD107F07F07042F29D8A74A0023138016
:10346000A64B13F827309F0740F1FC81012313700E
:10347000A14B022290E742F2210C6345BBD01DD93B
:1034800042F2212293420DD1BFB2002F82D19C4B38
:103490001A689C4B1A609C4BC0F3074000221870BE
:1034A000134679E742F2213293423FF473AF0F2380
:1034B0008AF8C03001238AF89430C0E6B3F5086F6B
:1034C00000F04A81B3F5106FF1D1904BC0F3074083
:1034D0000425187059F835301A0606D40135142D14
:1034E0000CD059F835301A06F8D509EBC50301356B
:1034F0005868083800F04CFA142DF2D1844A854BF4
:103500000292854A0192854E854ADFF8188203941B
:10351000009200251C4656F8047B2FB138467F6880
:1035200000F036FA002FF9D1009BD8F8007043F86C
:10353000045B46F8045C00932FB138467F6800F0C6
:1035400027FA002FF9D1029B48F8045B43F8045B8B
:103550000293019B23F8025B01932378023B032B28
:1035600000F20981DFE813F03F0104013F0104018B
:103570006D4A45F8360013780133137019E643F8A5
:103580002400674BFEE5115D022926D07FF611AEBF
:1035900003291DD1012313550BE6E0076ED4210644
:1035A00021D4A20708D5614B93F888200221D2B21A
:1035B00083F8882083F88010E30603D55B4B102244
:1035C00083F8802005B0BDE8F08F00F0A3FB11E682
:1035D00017F0080F14BF032302231355E9E53F2F0B
:1035E00098BF0022C5E6514B80220D2183F8C01000
:1035F00083F88020A207DFD5D5E746F002060270E7
:10360000402F09EBC6003A4628BF40224360100411
:10361000134440F088000121BA1A49F8360021709D
:1036200055D02B60424B1A8001238AF8943006E66D
:1036300092885AB93F4AE51D14F8011B02F8011F90
:10364000AC42F9D13C4A1268862A3CD03B4C3C48FB
:1036500025780278002D85F00105257042F00204DE
:1036600082F00102027009EBC4024FF000005060CA
:1036700014BFC822882249F83420DEE52B4B30489D
:103680003049314C022583F8945002702F480C6069
:103690002F4D48608C600D24CD60FF200A618A6147
:1036A00083F8C04001219F2483F8880083F88000BC
:1036B00083F8982083F88C0083F8844083F8941072
:1036C00005B0BDE8F08F234A0F201070BEE73F2FF2
:1036D000A7D890E607F07F07042F3FF6E8AE000C6E
:1036E0007FF4E5AE054A12F8273023F0020302F812
:1036F0002730002213464FE6A4EDFF1FC0200740ED
:1037000074ECFF1F20EEFF1F1CEEFF1FF8EDFF1FE4
:10371000E4EDFF1FF4EDFF1FFCEDFF1FACEDFF1FFD
:10372000BCEDFF1FD4EDFF1F04EEFF1F002007407C
:103730009EEDFF1F13EEFF1F14EEFF1F9DEDFF1FF9
:103740009CEDFF1F00E0FF1F880040001CEDFF1FE5
:103750005CEDFF1FF9EDFF1F484B49491B780B70CB
:103760000B4619E6464A00231380454B022213E616
:103770004FF001032370434BB34204F101047FF483
:10378000CAAE414E039CDFF80481414F00233370E1
:10379000042518F8013B3F4AAB541B0725D445F0DC
:1037A000020145F0030204350023142D49F831309D
:1037B00049F83230EDD1384F25783A7842F002009E
:1037C00009EBC00C85F00106CCF80430002D4DD17A
:1037D000882382F0010226703A7049F830300123C4
:1037E0008AF894302BE52570C5E700F0B1F8002881
:1037F00032D009EBC5030830586049F8357000F045
:10380000A7F808B345F0010309EBC3020830506084
:1038100049F833B0C3E7214A5368002B3FF447AE61
:10382000000CBFB204E013690C32002B3FF43FAE32
:1038300011888142F7D15188B942F4D1000A032896
:103840000CBF1A781289A7E533780133337045F03D
:10385000010349F83300A2E7337849F83500013312
:103860003370CCE7064B022296E500BE2670C823D3
:1038700082F001063E7049F83030BCE5F8EDFF1FDC
:10388000A4EDFF1FBCEDFF1F04EEFF1FF84D00006D
:1038900088004000C02007409CEDFF1FA44D0000A1
:1038A00070B500F08BFB00231A4A194642F833101A
:1038B00002EBC3000133142B4160F7D1164C174BB8
:1038C000606B174D40F480206063C2F3072483F8D7
:1038D0009C40144CFF204FF0010CC2F30746120E1F
:1038E00083F8B0604FF0E02E83F8B42083F88000B6
:1038F00083F88800187483F894C0217083F884C01A
:10390000702385F8233008221023CEF80421237277
:1039100070BD00BF00E0FF1F008004400020074092
:1039200000E400E00021074000F0F6B800F07CB8A9
:1039300000F056B800F090B800F0C0B900F09AB9A5
:103940000846114600F004B9084600F085B900BFEA
:1039500072B60D490B68B3FA83F00B2810DC4FF0F8
:103960000042C24023EA02030B6062B6074A00EB42
:10397000C000C10002EBC0000023535043607047F9
:1039800062B60020704700BF60E6FF1FF8E1FF1F2E
:103990000E4BC31AB3F5587F10D20D4A127872B984
:1039A00072B60C4A0C49A2FB032308684FF0004290
:1039B0001B0922FA03F303430B6062B67047074A00
:1039C0001278002AECD0FFF72DBB00BFF8E1FF1FF3
:1039D00004EEFF1F398EE33860E6FF1FF8EDFF1F8E
:1039E00038B50F4C206878B143880288C11801337C
:1039F0009A420D7A02D94380284638BDFFF7C8FFA6
:103A000000232360284638BD064B1B782BB10320CA
:103A1000FFF7D0FA20600028E6D14FF0FF35EBE742
:103A200008EEFF1FF8EDFF1F10B5094C206818B114
:103A300043881844007A10BD064B1B782BB1032035
:103A4000FFF7B8FA20600028F2D14FF0FF3010BD28
:103A500008EEFF1FF8EDFF1F084B094A1B6810B561
:103A600094881BB11A885B88D31A1C440CB1204679
:103A700010BD00F073F9204610BD00BF08EEFF1F17
:103A8000FCEDFF1F2DE9F84F0D4600293ED04FF009
:103A90000008DFF87C901F4E0746C24699F80030B8
:103AA000E3B1346814B322886388A2EB030BAB45FF
:103AB00028BFAB4604F1080138465A461944FEF7C0
:103AC0004DFB638822885B449BB29A4263805F44CB
:103AD000D844A5EB0B0511D9002DDFD14046BDE838
:103AE000F88F0288002ADFD1FFF752FF0320FFF78B
:103AF00061FA044630600028F3D1EFE72046FFF773
:103B000047FFC6F800A0002DC8D1E7E70846E6E762
:103B1000F8EDFF1F08EEFF1F0B4B1B789BB110B594
:103B20000A4C206848B1FFF733FF002303202360CD
:103B3000FFF740FA30B1FFF72BFF0320FFF73AFA07
:103B40000028F8D110BD7047F8EDFF1F08EEFF1FE9
:103B50002DE9F04FDFF8EC9083B0012289F80020C6
:103B6000019179B3384FDFF8E480019D384EDFF8DA
:103B7000E4A083463968A1B3B1F802E0CEF1400C6D
:103B8000AC4528BFAC460EEB0C040022A4B2327048
:103B9000A5EB0C054C8001F10802BCF1000F0AD026
:103BA0000EF1FF3E7244DC441BF8014B02F8014F5A
:103BB000DC45F9D14C883F2C0BD805228AF800202F
:103BC000002DD7D10198002389F8003003B0BDE85B
:103BD000F08F40220A800420FFF764FA00223A6046
:103BE000EBE798F800202AB34AF2F92408E0013CF8
:103BF00019D03278BAB900F0B1F898F80020CAB1FB
:103C00000420FFF7F9F90728F1D84FF0010389F8EC
:103C10000030FFF79DFE014638600028ACD1013C22
:103C200089F80000E5D101234FF0FF30337003B075
:103C3000BDE8F08F00234FF0FF3089F8003003B06B
:103C4000BDE8F08F0DEEFF1F10EEFF1FF8EDFF1F18
:103C50000CEEFF1F24EEFF1F00B583B003460121C9
:103C60000DF107008DF80730FFF772FF03B05DF824
:103C700004FB00BF38B50E4D0E4C2868012323709D
:103C800028B140880023C0F14000237038BD0A4BA2
:103C90001B7813B90020207038BD0420FFF7ACF961
:103CA0000728F7D8FFF754FE28600028E9D1F1E78C
:103CB00010EEFF1F0DEEFF1FF8EDFF1FF8B5114BC3
:103CC0001B788BB1104E114D346801272F7064B1F1
:103CD0000F4B00271F706388238021460420FFF7C5
:103CE000E1F9376000232B70F8BDFFF731FE084B78
:103CF000014620B104201C70FFF7D4F9F2E71F70D1
:103D0000F0E700BFF8EDFF1F10EEFF1F0DEEFF1FE5
:103D100024EEFF1F38B50E4B1B7853B90D4C2168AC
:103D200041B103F0FF054B880B800420FFF7BAF97F
:103D3000256038BDFFF70CFE014620B1BDE83840D4
:103D40000420FFF7AFB9044B01221A7038BD00BF41
:103D50000DEEFF1F10EEFF1F24EEFF1F2DE9F843AD
:103D6000324E337863B1324F3A784AB90122D907DB
:103D70003A7043D49A0726D400225B073A7001D4E4
:103D8000BDE8F8832B4B1A68002AF9D0EFF30582BF
:103D9000002AF5D1EFF3108572B6186800283AD0E2
:103DA000254C2178002936D142691A6001232370FD
:103DB000002A37D0916105B962B60025836845773E
:103DC00098472570DCE7DFF8748098F80020002A17
:103DD000D2D00025DFF868902B4659F8234023689D
:103DE00020461B690135984708B12369984798F820
:103DF0000020EBB29A42F0D83378BDE7FFF72CFEF3
:103E000068B9104B1B780BB93378B3E7337803F0FC
:103E1000FE033370AEE7002DB2D162B6B0E700F01A
:103E2000CBF8EEE7084B1A60C5E700BF64E6FF1F5A
:103E300025EEFF1F28EEFF1F34EEFF1F48EEFF1F89
:103E40003CEEFF1FA04D000038EEFF1F70B5EFF3F2
:103E5000108272B60C4C206880B10C4E002543696C
:103E6000236073B19D6102B962B683684577984754
:103E7000EFF3108272B620680028F0D102B962B662
:103E800070BD3360EFE700BF30EEFF1F2CEEFF1F69
:103E9000FFF7DCBF024A136801331360704700BFAD
:103EA00074ECFF1F70B4104E104D3478D4B1621E04
:103EB000D2B2291D2B4601EB820101E08B4205D0D5
:103EC00053F8042B8242F9D170BC7047631CDBB2FB
:103ED000074A3370137845F8240043F00203137047
:103EE00070BC70470123F3E748EEFF1F3CEEFF1F55
:103EF00064E6FF1F2A4B2B4A6020E121187059709D
:103F00001378082B32D00A2B1AD00C2B264B0CBF5F
:103F100035213D2112229960DA60244B1B78C3B110
:103F2000214B01221A62224B1B78012B17D9042B3B
:103F300022D81D4B84225A621E4B01221A707047F0
:103F4000194B392113229960DA60184B1B78002B2A
:103F5000E6D1154A1362164B1B78012BE7D8124B9A
:103F600080225A62134B01221A7070470E4B0121B6
:103F700013229960DA60D0E7082B06D80A4B852215
:103F80005A620C4B01221A707047102B064B94BFDB
:103F9000862287225A62074B01221A70704700BF9F
:103FA0000040074065E6FF1F00B0034049EEFF1FD9
:103FB00066E6FF1F4AEEFF1F704700BF10B584B0D2
:103FC00072B6174A702441200F2180231470D071DB
:103FD0009171137013781B06FCD5906862B6114B73
:103FE000114C984238BF00EB800001A938BF400057
:103FF0000A22FEF7EDF901A92046002311F8012B52
:1040000001333AB10A2B20F8022FF7D1162323707F
:1040100004B010BD5B00DBB2237004B010BD00BF64
:104020000000024080969800F4E6FF1F024B014614
:10403000186800F00BB800BF40ECFF1F024B0146B0
:10404000186800F02BBC00BF40ECFF1F2DE9F04FBB
:1040500001F10B06162E83B0044624D8102900F275
:10406000BA8000F0A3FA102618220220B54F3A4475
:10407000A2F1080153688B4200F0BA805A68D968EF
:1040800022F003021A449D68E9608D60516841F096
:1040900001012046516003F1080500F08DFA284621
:1040A00003B0BDE8F08F36F0070600F19480B1420E
:1040B00000F2918000F07AFAB6F5FC7FC0F09A81A8
:1040C000730A00F08F80042B00F26F81B30903F1B3
:1040D000390003F1380CC3009A4F3B44A3F10805A3
:1040E0005B689D4206D10CE0002980F22781DB68E5
:1040F0009D4206D05A6822F00302911B0F29F3DD7E
:1041000060463D69DFF840C265457CD06A6822F0B0
:104110000302931B0F2B00F37B81002BC7E904CC18
:1041200080F26C81B2F5007F80F01A81D308796843
:1041300001334FEA521E012202FA0EF20A4357F8E7
:1041400033E0C5F808E007EBC3010839E9607A609D
:1041500047F83350CEF80C5083100121994091421A
:1041600057D8114206D120F003004900114200F156
:104170000400FAD007EBC0094D468646D5F80C80FE
:10418000454508D11DE1002B80F22481D8F80C8030
:10419000454500F01681D8F8042022F00302931B55
:1041A0000F2BF0DD2046D8E9025408EB060146F05B
:1041B0000106C8F80460EC60A56043F00104C7E99B
:1041C0000411C1E902CC4C6048F8023000F0F4F967
:1041D00008F1080502E00C2323600025284603B0FF
:1041E000BDE8F08F4FF4007340204FF03F0C73E7B1
:1041F000D3689A4208BF02307FF440AF3D69DFF8D0
:1042000048C1654582D17A68831001219940914265
:10421000A7D9BD686B6823F003094E4503D8A9EB05
:1042200006030F2B7ADCDFF824B1494BDBF80020C2
:104230001B680132334405EB090A00F0338103F5B2
:1042400080530F3323F47F6828F00F08414620463F
:1042500000F00AFA411C024600F0F380824500F2A9
:10426000EE803C4B196841441960084600F04E81CD
:10427000DBF80010019301311BBFA2EB0A01091802
:10428000CBF80020196012F0070B00F01781CBF17A
:1042900008010A44CBF5805190440831A1EB080194
:1042A000C1F30B0A51462046009200F0DDF9421C92
:1042B000DDE9002300F04F81801A00EB0A0819683D
:1042C000BA6048F001005144BD425060196000F0EE
:1042D0002981B9F10F0F40F227816868A9F10C0C10
:1042E0002CF0070C00F0010040EA0C0068604FF071
:1042F000050E05EB0C00BCF10F0FC0E901EE00F25A
:10430000328150681546144B1A688A4238BF1960CA
:10431000124B1A688A4238BF196094E0AA1943F018
:10432000010346F001066E602046BA60536000F05B
:1043300043F90835284603B0BDE8F08FD9681A4420
:10434000A1E600BF0CE7FF1F14E7FF1F14EBFF1FE0
:104350007CEEFF1F4CEEFF1F74EEFF1F78EEFF1F79
:10436000B2F5206F4FEA522363D3142B00F2B780CB
:1043700003F15C01C9005B3307EB010E7958AEF124
:10438000080E8E4500F091804B6823F003039342A2
:1043900002D989688E45F7D1D1F80CE07A68C5E971
:1043A000021ECEF80850CD60D6E6142B59D9542BF6
:1043B00000F29D80330B03F16F0003F16E0CC3001C
:1043C0008AE60EF1010E1EF0030F05F108057FF4D9
:1043D000D5AE51E0424445465368D8F80C1043F03E
:1043E0000103536055F8083F2046D9608B6000F008
:1043F000E3F8F3E6F00806F1080237E62A4420461F
:10440000536843F001035360083500F0D5F8E5E642
:10441000A919204646F0010643F001046E60C7E981
:104420000411C1E902CC4C60AB5000F0C5F808356E
:10443000D4E6930903F13901C90038339CE7BD4242
:104440005FD0BD68686820F003084645A8EB060306
:1044500002D80F2B3FF762AF204600F0ADF80025E1
:10446000BCE603F15C0003F15B0CC30034E659F8D1
:1044700008394B4540F0968010F0030F00F1FF30F3
:10448000F5D17B6823EA01037B60490099423FF63E
:10449000C0AE19B9BDE649000EF1040E1942FAD0BA
:1044A000704667E603F11008D0E69A104FF0010855
:1044B0007B6808FA02F21A437A6070E702EB08019F
:1044C0004942C1F30B0A51462046009200F0CCF855
:1044D000431CDDE900237FF4EFAEDA46EFE6542B10
:1044E00025D8130B03F16F01C9006E3344E7B3F510
:1044F000AA7F25D8F30B03F1780003F1770CC300F2
:10450000EAE5294B186840441860B1E6CAF30B0C81
:10451000BCF1000F7FF4ACAEBD68C84448F00100A8
:104520006860F0E61546EEE60123536094E7B3F5C4
:10453000AA7F23D8D30B03F17801C90077331BE797
:1045400040F25452934223D8B30C03F17D0003F19F
:104550007C0CC300C0E5ABF1080BD844A8EB020803
:104560004FF0000AABE605F108012046009300F089
:1045700095F9BD68009B68681968C4E640F254511B
:104580008B420BD8930C03F17D01C9007C33F3E619
:104590004FF47E737F204FF07E0C9DE54FF47E71CB
:1045A0007E23E9E67B6870E74CEEFF1F014800F0D0
:1045B00097B800BFC0EFFF1F014800F093B800BFDD
:1045C000C0EFFF1F830730B548D0541E002A3FD0EC
:1045D000CAB2034601E0013C3AD303F8012B9D0720
:1045E000F9D1032C2DD9CDB245EA05250F2C45EA8A
:1045F000054536D9A4F1100222F00F0C03F1200E6C
:10460000E6444FEA121C03F1100242E9045542E964
:10461000025510327245F8D10CF1010214F00C0F62
:1046200003EB021204F00F0C13D0ACF1040323F0DF
:1046300003030433134442F8045B9342FBD10CF0B0
:1046400003042CB1C9B21C4403F8011B9C42FBD1EA
:1046500030BD64461346002CF4D1F9E703461446F6
:10466000BFE71A46A446E0E738B5074D00220446E6
:1046700008462A60FDF774FE431C00D038BD2B6845
:10468000002BFBD0236038BDB8EFFF1F014B18682B
:10469000704700BF40ECFF1F70B50D4E0D4D761BEF
:1046A000B61006D0002455F8043B01349847A642C2
:1046B000F9D1094E094D761B00F0A0FBB61006D0CB
:1046C000002455F8043B01349847A642F9D170BD47
:1046D000084E0000084E0000104E0000084E00007A
:1046E000704700BF704700BFFFFFFFFFFFFFFFFFE6
:1046F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
:1047000090F800F06DE9024520F007016FF0000C11
:1047100010F0070491F820F040F049804FF00004B9
:104720006FF00700D1E9002391F840F000F1080094
:1047300082FA4CF2A4FA8CF283FA4CF3A2FA8CF3CC
:104740004BBBD1E9022382FA4CF200F10800A4FA33
:104750008CF283FA4CF3A2FA8CF3E3B9D1E9042387
:1047600082FA4CF200F10800A4FA8CF283FA4CF3BE
:10477000A2FA8CF37BB9D1E9062301F1200182FA78
:104780004CF200F10800A4FA8CF283FA4CF3A2FA7E
:104790008CF3002BC6D0002A04BF04301A4612BA8C
:1047A000B2FA82F2FDE8024500EBD2007047D1E98F
:1047B000002304F00305C4F100004FEAC50514F01E
:1047C000040F91F840F00CFA05F562EA05021CBFEF
:1047D00063EA050362464FF00004A9E7024B13B1F8
:1047E000024800F005B8704700000000A94A000028
:1047F000002301461A46184600F06AB9F8B5244F5E
:104800000C460646FFF7D2FEBB685D68C4F57E61C4
:104810000F3125F003054B1923F47F6323F00F03B9
:10482000A3F58054B4F5805F07DB00213046FFF725
:104830001BFFBB682B44984204D03046FFF7BCFEF8
:104840000020F8BD61423046FFF70EFF01300DD069
:10485000104ABB682D1B45F001055D6013683046AA
:104860001B1B1360FFF7A8FE0120F8BD0021304696
:10487000FFF7FAFEBA68831A0F2BDEDD43F001035F
:104880005360054B03491B68C01A0860D5E700BF99
:104890000CE7FF1F4CEEFF1F14EBFF1F002961D038
:1048A000F8B50C460646FFF781FE54F8042C7B4F02
:1048B000A4F1080522F0010105EB010CB868DCF851
:1048C0000430604523F0030300F08B80D207CCF85E
:1048D000043032D454F8082CAD1A1144AA6807F1F8
:1048E000080082426AD00CEB0304D4F804E0EC68C0
:1048F000D4601EF0010FA26000F0978041F0010328
:104900006B60CCF80010B1F5007F35D27868CB0829
:104910000122490901338A40024357F833107A6073
:1049200007EBC302083AC5E9021247F83350CD60DD
:104930003046BDE8F840FFF73FBE0CEB030252687B
:10494000D00710D4194407F10800DCF8083083427E
:1049500073D0DCF80C20DA60936041F001036B60E7
:104960006950D0E7704741F00103B1F5007F44F88A
:10497000043CCCF80010C9D3B1F5206F4FEA5123A5
:1049800048D28B0903F1390003F13802C300F8184B
:10499000FB580838984259D05A6822F003028A42DC
:1049A00002D99B689842F7D1D868C5E90230856082
:1049B000DD603046BDE8F840FFF7FEBD0CEB0302BA
:1049C0005268D20763D40B44DCE90212CA609160DA
:1049D00043F001026A603046EB50BDE8F840FFF753
:1049E000EBBD0B44D10707D454F8082CAD1A13447F
:1049F000D5E90212CA60916043F001026A60284A58
:104A0000BD6012689A4293D8264B30461968FFF76A
:104A1000F5FE8DE7142B0AD9542B1FD80B0B03F18D
:104A20006F0003F16E02C300B1E719448DE703F193
:104A30005C0003F15B02C300A9E741F00103C7E991
:104A40000455C5E902006B60695071E779689210FE
:104A5000012404FA02F20A437A60A6E7B3F5AA7FBA
:104A600006D8CB0B03F1780003F17702C3008EE781
:104A700040F25452934206D88B0C03F17D0003F1AF
:104A80007C02C30083E74FF47E737E227FE741F010
:104A900001036B60CCF800104AE700BF0CE7FF1F72
:104AA00018EBFF1F7CEEFF1F38B5074D074C2C1B82
:104AB000A41005D0013C55F8043D9847002CF9D1CD
:104AC000BDE8384000F0A4B900000000000000007C
:104AD0002DE9F047DFF874A00646DAF800009846A2
:104AE0000F469146FFF7FCFD194B1C6824B365681F
:104AF0001F2D24DC5EB96B1C0235DAF80000636000
:104B000044F82570FFF7EEFD0020BDE8F08704EBC8
:104B100085010123C1F88890D4F88821AB401A435D
:104B2000022EC4F88821C1F80881E4D1D4F88C2180
:104B30001A43C4F88C21DEE7064C1C60D7E7DAF88C
:104B40000000FFF7CFFD4FF0FF30DEE744ECFF1F22
:104B5000C4EFFF1FC8EFFF1F7701080F010100FF1F
:104B600077E2FE0F010300FF77E2FE0F010800FF6E
:104B700077E2FE0F010900FF77E2FE0F010400FF5C
:104B80006500000000000000690000000000000057
:104B90007700FC0F0101000077E2FE0F010000002A
:104BA0007703080F010000007704080F0200FC00E3
:104BB0007700080F0800000000000000040000005B
:104BC0007700080F080300000000FC02000000004E
:104BD0007700080F0804000000000001000000003A
:104BE0007700FC0F000000007700FD0F00000000C0
:104BF0000000FC0002000000750000000000FFFF44
:104C00000000000000000000B91F0000DD1F0000D0
:104C10006D20000069200000652000006120000078
:104C20005D200000811F00003D20000039200000B1
:104C30003120000029200000212000001120000068
:104C400001200000FD1F0000F51F0000ED1F000007
:104C5000611F0000691F0000711F0000791F000024
:104C6000C51F0000AD1F00004008FE4340A00440E7
:104C70004408FE4344A004400018FE4300C0044022
:104C80003000FE43309004403400FE433490044032
:104C90001C18FE431CC004401018FE4310C0044002
:104CA0000818FE4308C004400C18FE430CC0044022
:104CB0000C10FE430CB004401010FE4310B0044032
:104CC0001810FE4318B004401C10FE431CB00440F2
:104CD0001410FE4314B004400418FE4304C0044002
:104CE0000010FE4300B004400008FE4300A0044052
:104CF0000408FE4304A004400C08FE430CA004403A
:104D00000808FE4308A004401418FE4314C00440E1
:104D10001818FE4318C004400410FE4304B00440B9
:104D20000810FE4308B004401400FE4314900440F1
:104D30004C08FE434CA004400420FE4304D0044031
:104D40002410FE4324B004402010FE4320B0044051
:104D50002810FE4328B004402C10FE432CB0044021
:104D60000020FE4300D004404808FE4348A0044011
:104D70001000FE43109004400000000000000000FE
:104D800049390000413900003D390000393900003F
:104D900035390000313900002D3900002939000073
:104DA00000FFFFFF00010000ACE6FF1F1200000043
:104DB0000002000068E6FF1F43000000000300003F
:104DC000C0E6FF1F0000000001030904C4E6FF1F46
:104DD0000000000002030904DCE6FF1F00000000E1
:104DE00003030904F4E6FF1F0000000000000000B8
:104DF000000000000000000000151915F8B500BF04
:104E0000F8BC08BC9E467047DD4700003504000032
:044E1000F8B500BF32
:104E1400E00704EC00FB0F0000FBC013BFE607C073
:104E2400BFEC07C0BFEE07CFEB07ECF5EA07FCB217
:104E3400FF0E72FCB2FF0E76FCB2FF0E77FCB2FFDF
:104E44000E9EFDFCB2FF0E73624C69DD6D4C77DD86
:104E54001D4C72DD294C65DD324C75DD62FCA1FF11
:104E64000ED5EA07DFC8AFE60712ECEB070FFCB27A
:104E7400FF0E119BA793DFF6FE4C00EEE3FF118BB0
:104E8400FCA1FF0EA793DFF6EED6FF61FFFCF8FF4F
:104E94000E8F02084C0FDD0B624CFFDF11FCC408BF
:104EA4000FEFF5624CFFDF06FC04F00EEFF5C36173
:104EB400CFC262FCA1FF0EEEA7FFE5EA07EF03E510
:104EC400EA07FE0200EF9A5100FCA1FF0ED7FFFF94
:104ED400FFFFFFFFFFFFFFFFFFFFFF00084C000085
:104EE40000000000E803000000000000B12F0000F3
:104EF40058F1FF1F280000001A00000040000000C5
:104F04004000000001010000804D0000000000008E
:104F1400E803000000000000FFFFFFFF010A040097
:104F240009024300020100C0320904000001020228
:104F340001000524001001052401010104240206D6
:104F4400052406000107058203100040090401003E
:104F5400020A00000007050302400000070584025E
:104F6400400000001201100102000040C01683043A
:104F7400740201020301000004030904180354002D
:104F8400650065006E0073007900640075006900B7
:104F94006E006F00160355005300420020005300BA
:104FA40065007200690061006C0000000C030000E1
:104FB40000000000000000000000000000000000ED
:104FC4000000000000000000000000000CE7FF1FCC
:104FD4000CE7FF1F14E7FF1F14E7FF1F1CE7FF1F69
:104FE4001CE7FF1F24E7FF1F24E7FF1F2CE7FF1F19
:104FF4002CE7FF1F34E7FF1F34E7FF1F3CE7FF1FC9
:105004003CE7FF1F44E7FF1F44E7FF1F4CE7FF1F78
:105014004CE7FF1F54E7FF1F54E7FF1F5CE7FF1F28
:105024005CE7FF1F64E7FF1F64E7FF1F6CE7FF1FD8
:105034006CE7FF1F74E7FF1F74E7FF1F7CE7FF1F88
:105044007CE7FF1F84E7FF1F84E7FF1F8CE7FF1F38
:105054008CE7FF1F94E7FF1F94E7FF1F9CE7FF1FE8
:105064009CE7FF1FA4E7FF1FA4E7FF1FACE7FF1F98
:10507400ACE7FF1FB4E7FF1FB4E7FF1FBCE7FF1F48
:10508400BCE7FF1FC4E7FF1FC4E7FF1FCCE7FF1FF8
:10509400CCE7FF1FD4E7FF1FD4E7FF1FDCE7FF1FA8
:1050A400DCE7FF1FE4E7FF1FE4E7FF1FECE7FF1F58
:1050B400ECE7FF1FF4E7FF1FF4E7FF1FFCE7FF1F08
:1050C400FCE7FF1F04E8FF1F04E8FF1F0CE8FF1FB5
:1050D4000CE8FF1F14E8FF1F14E8FF1F1CE8FF1F64
:1050E4001CE8FF1F24E8FF1F24E8FF1F2CE8FF1F14
:1050F4002CE8FF1F34E8FF1F34E8FF1F3CE8FF1FC4
:105104003CE8FF1F44E8FF1F44E8FF1F4CE8FF1F73
:105114004CE8FF1F54E8FF1F54E8FF1F5CE8FF1F23
:105124005CE8FF1F64E8FF1F64E8FF1F6CE8FF1FD3
:105134006CE8FF1F74E8FF1F74E8FF1F7CE8FF1F83
:105144007CE8FF1F84E8FF1F84E8FF1F8CE8FF1F33
:105154008CE8FF1F94E8FF1F94E8FF1F9CE8FF1FE3
:105164009CE8FF1FA4E8FF1FA4E8FF1FACE8FF1F93
:10517400ACE8FF1FB4E8FF1FB4E8FF1FBCE8FF1F43
:10518400BCE8FF1FC4E8FF1FC4E8FF1FCCE8FF1FF3
:10519400CCE8FF1FD4E8FF1FD4E8FF1FDCE8FF1FA3
:1051A400DCE8FF1FE4E8FF1FE4E8FF1FECE8FF1F53
:1051B400ECE8FF1FF4E8FF1FF4E8FF1FFCE8FF1F03
:1051C400FCE8FF1F04E9FF1F04E9FF1F0CE9FF1FB0
:1051D4000CE9FF1F14E9FF1F14E9FF1F1CE9FF1F5F
:1051E4001CE9FF1F24E9FF1F24E9FF1F2CE9FF1F0F
:1051F4002CE9FF1F34E9FF1F34E9FF1F3CE9FF1FBF
:105204003CE9FF1F44E9FF1F44E9FF1F4CE9FF1F6E
:105214004CE9FF1F54E9FF1F54E9FF1F5CE9FF1F1E
:105224005CE9FF1F64E9FF1F64E9FF1F6CE9FF1FCE
:105234006CE9FF1F74E9FF1F74E9FF1F7CE9FF1F7E
:105244007CE9FF1F84E9FF1F84E9FF1F8CE9FF1F2E
:105254008CE9FF1F94E9FF1F94E9FF1F9CE9FF1FDE
:105264009CE9FF1FA4E9FF1FA4E9FF1FACE9FF1F8E
:10527400ACE9FF1FB4E9FF1FB4E9FF1FBCE9FF1F3E
:10528400BCE9FF1FC4E9FF1FC4E9FF1FCCE9FF1FEE
:10529400CCE9FF1FD4E9FF1FD4E9FF1FDCE9FF1F9E
:1052A400DCE9FF1FE4E9FF1FE4E9FF1FECE9FF1F4E
:1052B400ECE9FF1FF4E9FF1FF4E9FF1FFCE9FF1FFE
:1052C400FCE9FF1F04EAFF1F04EAFF1F0CEAFF1FAB
:1052D4000CEAFF1F14EAFF1F14EAFF1F1CEAFF1F5A
:1052E4001CEAFF1F24EAFF1F24EAFF1F2CEAFF1F0A
:1052F4002CEAFF1F34EAFF1F34EAFF1F3CEAFF1FBA
:105304003CEAFF1F44EAFF1F44EAFF1F4CEAFF1F69
:105314004CEAFF1F54EAFF1F54EAFF1F5CEAFF1F19
:105324005CEAFF1F64EAFF1F64EAFF1F6CEAFF1FC9
:105334006CEAFF1F74EAFF1F74EAFF1F7CEAFF1F79
:105344007CEAFF1F84EAFF1F84EAFF1F8CEAFF1F29
:105354008CEAFF1F94EAFF1F94EAFF1F9CEAFF1FD9
:105364009CEAFF1FA4EAFF1FA4EAFF1FACEAFF1F89
:10537400ACEAFF1FB4EAFF1FB4EAFF1FBCEAFF1F39
:10538400BCEAFF1FC4EAFF1FC4EAFF1FCCEAFF1FE9
:10539400CCEAFF1FD4EAFF1FD4EAFF1FDCEAFF1F99
:1053A400DCEAFF1FE4EAFF1FE4EAFF1FECEAFF1F49
:1053B400ECEAFF1FF4EAFF1FF4EAFF1FFCEAFF1FF9
:1053C400FCEAFF1F04EBFF1F04EBFF1FFFFFFFFFBF
:1053D40000000200000000000000000080EEFF1F3B
:1053E400E8EEFF1F50EFFF1F000000000000000068
:1053F40000000000000000000000000000000000A9
:105404000000000000000000000000000000000098
:105414000000000000000000000000000000000088
:105424000000000000000000000000000000000078
:105434000000000000000000000000000000000068
:105444000000000000000000000000000000000058
:105454000000000000000000000000000000000048
:105464000000000000000000000000000000000038
:1054740001000000000000000E33CDAB34126DE6D5
:10548400ECDE05000B00000000000000000000003E
:105494000000000000000000000000000000000008
:1054A40000000000000000000000000000000000F8
:1054B40000000000000000000000000000000000E8
:1054C40000000000000000000000000000000000D8
:1054D40000000000000000000000000000000000C8
:1054E40000000000000000000000000000000000B8
:1054F400000000000000000020EBFF1FBCEFFF1FB6
:00000001FF
================================================
FILE: assets/hw/syscon_flasher/syscon_flasher_v2.05_teensy_3.2.hex
================================================
:1000000000800020BD0100004923000005230000FE
:100010000523000005230000052300000523000040
:1000200005230000052300000523000049230000EC
:100030004923000005230000A53E0000A93E000062
:100040004923000049230000492300004923000000
:1000500049230000492300004923000049230000F0
:1000600049230000492300004923000049230000E0
:1000700049230000492300004923000049230000D0
:1000800049230000492300004923000049230000C0
:1000900049230000492300004923000049230000B0
:1000A00049230000492300004923000049230000A0
:1000B0004923000049230000492300004923000090
:1000C0004923000049230000492300004923000080
:1000D0004923000049230000492300004923000070
:1000E0004923000049230000492300004923000060
:1000F00049230000E92D00004923000049230000A6
:10010000492300004923000049230000492300003F
:10011000492300004923000049230000492300002F
:10012000492300004923000049230000492300001F
:10013000492300004923000049230000492300000F
:1001400049230000492300004923000049230000FF
:1001500049230000492300004923000049230000EF
:1001600049230000413100004923000049230000D9
:1001700049230000492300004923000049230000CF
:1001800049230000492300004923000049230000BF
:1001900049230000492300004923000049230000AF
:1001A000492300004923000049230000492300009F
:1001B000492300004923000049230000574B4CF21B
:1001C000205210B5DA814DF62812DA8100BF00BF47
:1001D00002F0BEF8524B4FF010621A63514A9A6314
:1001E000514ADA63514A136913F4807303D153619E
:1001F0004FF4A85313614E4B9A78110703D59A78A0
:1002000042F008029A704B4B4B482A221A704B4B13
:10021000DA1C121AC11E22F00302994288BF002282
:10022000474901F09BFF474B4748DA1C121AC11E91
:1002300022F00302994288BF0022002104F0CEF987
:10024000424943484FF4DE7201F088FF414B424A75
:10025000802103F8011B9342FBD14FF0E0233C4A7D
:10026000C3F8082D3D4B8A221A70A3F5805324222F
:100270005A70A0221A709A799207FCD59A79D406FE
:10028000FCD4374B9A7902F00C02082AFAD10322E7
:100290001A7140225A719A799006FCD5304A9379A6
:1002A0005906FCD51E4B2F4959640221996420211F
:1002B0001170917901F00C010C29FAD12A4A5A6087
:1002C0004FF0E023294A5A6100229A6107221A61FD
:1002D000274AC3F8202D62B602F0B4F8134B5B69CD
:1002E000DA0705D5234802F0A1F8234B234ADA6147
:1002F000234B1B785B0609D51F4C204BE2699A42C1
:1003000004D11C4802F092F80023E36102F026F8C1
:1003100004F0CEF901F01AFFFEE700BF002005400F
:1003200000800440823F04000100002B00D0034005
:1003300000D0074000E007402087FF1F108EFF1FFE
:10034000144E00002093FF1F108EFF1F00000000BE
:100350000082FF1F00E400E05FE400E00050064080
:100360000040064000000301C0100500FF760100B8
:10037000000020209511896800E00340A5C3945A2D
:1003800000F00740FFFFFFFFFFFFFFFFFFFFFFFF42
:10039000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1003B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1003D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1003F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:10040000FFFFFFFFFFFFFFFFFFFFFFFFDEF9FFFF23
:100410000548064B1B1AD90F01EBA301491002D066
:10042000034B03B118477047108EFF1F108EFF1F3C
:100430000000000008B5054B1BB105490548AFF3A6
:100440000080BDE80840FFF7E3BF00BF00000000E8
:10045000108EFF1F144E000070B51A4C0D2082B094
:10046000012102F041F8261D65204FF4486501E0A6
:1004700014F8010F02F05EFB2B46013BFDD102F0A8
:1004800023FCB442F4D1013DFDD10F4C00210D20DD
:1004900002F02AF823680093009E42F2107505E0EE
:1004A00023680193019B9B1BAB4208D802F0F8FB29
:1004B0000028F5DD02F008FCC0B202B070BDEF20EC
:1004C00002B070BD804B00003C8EFF1F70B5012153
:1004D0000D20644C02F008F80D20012102F004F810
:1004E000261D69204FF4486501E014F8010F02F061
:1004F00021FB2B46013BFDD102F0E6FBB442F4D1D7
:10050000013DFDD100210D2001F0EEFF02F0DCFBEA
:10051000C0B2002840F0A380534C0D20012101F00F
:10052000E3FF661D77204FF4486501E014F8010FE2
:1005300002F000FB2B46013BFDD102F0C5FBB442AB
:10054000F4D1013DFDD100210D2001F0CDFF02F0DD
:10055000BBFBC0B2002840F08280444C0D2001213A
:1005600001F0C2FF661D77204FF4486501E014F8E2
:10057000010F02F0DFFA2B46013BFDD102F0A4FB94
:10058000B442F4D1013DFDD100210D2001F0ACFFBA
:1005900002F09AFBC0B2002861D1354C0D20012138
:1005A00001F0A2FF661D77204FF4486501E014F8C2
:1005B000010F02F0BFFA2B46013BFDD102F084FB94
:1005C000B442F4D1013DFDD100210D2001F08CFF9A
:1005D00002F07AFBC0B2002841D1264C0D20012147
:1005E00001F082FFA61D77204FF4486501E014F862
:1005F000010F02F09FFA2B46013BFDD102F064FB94
:10060000B442F4D1013DFDD100210D2001F06CFF79
:1006100002F05AFBC0B210BB174C0D20012101F0B3
:1006200063FF661D77204FF4486501E014F8010F61
:1006300002F080FA2B46013BFDD102F045FBA642B9
:10064000F4D1013DFDD100210D2001F04DFF02F05C
:100650003BFBC0B218B9BDE87040FFF7FDBEE0201B
:1006600070BD00BF884B0000904B0000984B00000D
:10067000A04B0000A84B0000584B00002DE9F041B2
:1006800082B0002701AE4FF448644FF072083A0A76
:100690003B0C80250D2001218DF804508DF8008041
:1006A0008DF801708DF802208DF803306D4601F051
:1006B0001BFF404601E015F8010F02F03BFA23460C
:1006C000013BFDD102F000FBB542F4D12346013BD2
:1006D000FDD100210D2001F007FF802502E0234617
:1006E000013BFDD102F0DCFA0028F8D002F0ECFA70
:1006F000C0B203F0BBFA013DF4D18037B7F5002F4B
:10070000C3D1284602B0BDE8F08100BF2DE9F04317
:100710004F4D89B02B680093009C42F2107605E0A3
:100720000193019B1B1BB34200F28D8003F09EF9E5
:1007300003282B68F4DD00240393CDE90444039FD0
:10074000444E0694ADF81C4006E02B680293029BD1
:10075000B268DB1B934273D204ABC4F104011819D5
:1007600003F09AF90444032CEFD99DF812009DF888
:1007700013309DF810109DF8112003EB002302EBBD
:1007800001229BB292B201339A424FEA82274FEA8A
:10079000832949D20DF115064FF000084FF4486443
:1007A00072213A0A3B0C80258DF810100D20012192
:1007B000CDF81480CDF818808DF81450ADF81C8059
:1007C0008DF811708DF812208DF8133001F08CFE29
:1007D00004AD15F8010B02F0ADF92346013BFDD144
:1007E00002F072FAB542F4D12346013BFDD100215B
:1007F0000D2001F079FE802502E02346013BFDD16A
:1008000002F04EFA0028F8D002F05EFAC0B203F00F
:100810002DFA013DF4D18037B945C1D803F026F94E
:10082000002805DD03F0E6F803F020F90028F9DCE4
:1008300000210D2001F058FE002009B0BDE8F08332
:100840000123337391E7EB2009B0BDE8F08300BFCB
:100850003C8EFF1F1888FF1F2DE9F04F624D89B0B5
:100860002B680093009C42F2107605E00193019BF7
:100870001B1BB34200F2AA8003F0F8F803282B6890
:10088000F4DD00240393CDE90444039E574F0694FE
:10089000ADF81C4007E02B680293029BBA689B1BD3
:1008A000934280F09D8004ABC4F10401181903F059
:1008B000F3F80444032CEED99DF812009DF8133090
:1008C0009DF810109DF8112003EB002302EB01228C
:1008D0009BB292B201339A424FEA82264FEA832AB0
:1008E0006FD2434B434D03F108080D20012101F065
:1008F000FBFD414FC6F3072BC6F3074977204FF4A2
:10090000486401E017F8010F02F014F92346013B97
:10091000FDD102F0D9F9AF42F4D1013CFDD1002163
:100920000D2001F0E1FD02F0CFF910F0FF0352D1EC
:100930002F4A059392E8030004908DF8141098E86C
:100940000300ADF81C3006908DF81C100D2001211D
:100950008DF816B08DF8179001F0C6FD04AC0DF1BE
:100960001D0B4FF4486914F8010B02F0E3F84B46F5
:10097000013BFDD102F0A8F95C45F4D14B46013BA7
:10098000FDD100210D2001F0AFFD02F09DF9C0B2B4
:1009900008BBFFF761FD0346A0B903F067F9B9F1A1
:1009A0000109FCD101E003F025F803F05FF800280D
:1009B000F9DC00210D2006F5806601F095FDB245B9
:1009C00093D80023184609B0BDE8F08FEB231846F2
:1009D00009B0BDE8F08FE423184609B0BDE8F08FF8
:1009E00001233B7368E700BF3C8EFF1F1888FF1F81
:1009F000B04B0000654B0000604B00002DE9F04F4C
:100A0000634D89B02B680093009C42F2107605E09C
:100A10000193019B1B1BB34200F2AB8003F026F84D
:100A200003282B68F4DD00240393CDE90444039EDE
:100A3000584F0694ADF81C4007E02B680293029BC8
:100A4000BA689B1B934280F0988004ABC4F1040108
:100A5000181903F021F80444032CEED99DF8120074
:100A60009DF813309DF810109DF8112003EB002322
:100A700002EB01229BB292B201339A424FEA8226E4
:100A80004FEA832A71D2444B444D03F108080D20EC
:100A9000012101F029FD424FC6F3072BC6F3074998
:100AA00077204FF4486401E017F8010F02F042F894
:100AB0002346013BFDD102F007F9AF42F4D1013CDE
:100AC000FDD100210D2001F00FFD02F0FDF810F026
:100AD000FF0355D1304A059392E8030004908DF846
:100AE000141098E80300ADF81C3006908DF81C1027
:100AF0000D2001218DF816B08DF8179001F0F4FC4F
:100B000004AC0DF11D0B4FF4486914F8010B02F011
:100B100011F84B46013BFDD102F0D6F8A345F4D1C4
:100B2000B9F10109FCD100210D2001F0DDFC02F03A
:100B3000CBF8C0B240BBFFF78FFC08B11B2815D122
:100B400003F094F84FF44863013BFDD101E002F05B
:100B500051FF02F08BFF0028F9DC00210D2006F583
:100B6000806601F0C1FCB24591D8002009B0BDE813
:100B7000F08FEB2009B0BDE8F08F01233B736DE7E8
:100B8000E82009B0BDE8F08FE42009B0BDE8F08F9F
:100B90003C8EFF1F1888FF1FB04B00006D4B0000FC
:100BA000684B00002DE9F041584F0D2082B0012123
:100BB00001F09AFC7E1D3C4677204FF4486501E029
:100BC00014F8010F01F0B6FF2B46013BFDD102F0F6
:100BD0007BF8B442F4D1013DFDD100210D2001F09C
:100BE00083FC02F071F810F0FF0340F08980484C5C
:100BF000ADF804300D2001218DF8063004F10C0809
:100C000001F072FC4FF44865772001E014F8010F01
:100C100001F090FF2B46013BFDD102F055F8444511
:100C2000F4D1013DFDD100210D2001F05DFC02F069
:100C30004BF8C0B200285ED1FFF70EFC0446002836
:100C40005AD102F041F85FFA80F88DF8048002F082
:100C50003BF80121C5B20D208DF805504FF44864D2
:100C600001F042FC772001E017F8010F01F062FF6C
:100C70002346013BFDD102F027F8B742F4D1013CF5
:100C8000FDD100210D2001F02FFC02F01DF8C0B2B3
:100C9000002835D11F4C0D20012101F025FC04F165
:100CA0000C0777204FF4486601E014F8010F01F0BB
:100CB00041FF3346013BFDD102F006F8A742F4D1D3
:100CC000013EFDD100210D2001F00EFC01F0FCFFE2
:100CD000C0B280B9FFF7C0FB044668B901F0F4FF69
:100CE0000646404602F0C2FF284602F0BFFFF0B2BF
:100CF00002F0BCFF00E0E424204602B0BDE8F08131
:100D0000E824204602B0BDE8F08100BF704B00002F
:100D1000C04B0000D04B00002DE9F04FA04CADF2CD
:100D2000444D00214FF47F7211A8CDE90C110E91B2
:100D30008DF83C10109103F051FC23680493049E3D
:100D400042F2107506E023680593059B9B1BAB429E
:100D500000F2EE8102F08AFE0128F4DD2368099397
:100D60000025CDE90C55099E8E4F0E958DF83C500F
:100D700007E023680893089BBA689B1B934280F0A6
:100D8000E3810CABC5F10201581902F085FE054460
:100D9000012DEED99DF83030019301219DF83130BD
:100DA00002930D2001F0A0FB23680693069FDFF855
:100DB000F481002544F620660EE023680793079B24
:100DC000DB1BB34200F2BA8102F050FE1FFA80F939
:100DD000B9F1000F40F0BB81B5F5806FEDD3724FD4
:100DE0000D20012101F080FB3C1D3D4677204FF492
:100DF000486601E015F8010F01F09CFE3346013B07
:100E0000FDD101F061FFA542F4D1013EFDD10021E9
:100E10000D2001F069FB0DF13F050DF23F194FF474
:100E2000486815F8010F01F085FE4346013BFDD1EE
:100E300001F04AFF4D45F4D101F00EFFB8F1010871
:100E4000FCD101F041FFC0B2002840F0A981DFF8D9
:100E50005CA10D20012101F047FB0AF10405564673
:100E600077204FF4486801E016F8010F01F062FEA8
:100E70004346013BFDD101F027FFAE42F4D1B8F16A
:100E80000108FCD100210D2001F02EFB0DF23F26C0
:100E90004FF4486819F8010F01F04CFE4346013B3E
:100EA000FDD101F011FFB145F4D101F0D5FEB8F14B
:100EB0000108FCD101F008FFC0B2002840F07D819C
:100EC000DFF8EC90CDF80C900D20012101F00CFB27
:100ED00009F1050877204FF4486601E019F8010F81
:100EE00001F028FE3346013BFDD101F0EDFEC14586
:100EF000F4D1013EFDD100210D2001F0F5FA01F001
:100F0000E3FE10F0FF0040F05181019A029B8DF842
:100F1000350003EB02239BB29A008DF836209A0924
:100F20009B0201930CAB02939B46224B8DF837201A
:100F300093E8030040330C908DF8341093E80300DD
:100F40000E908DF83C100D2001210DF13D094FF45C
:100F5000486601F0C9FA1BF8010B01F0EBFD3346BE
:100F6000013BFDD101F0B0FECB45F4D1013EFDD1F6
:100F700000210D2001F0B8FA01F0A6FEC0B2002851
:100F800040F01481FFF768FA0646002840F0D1804F
:100F90000D20012101F0A8FA4FF4486677200DE0FA
:100FA0003C8EFF1F1888FF1FE04B0000E84B00003D
:100FB000784B0000B04B000017F8010F01F0BAFDAC
:100FC0003346013BFDD101F07FFEA742F4D1013E43
:100FD000FDD100210D2001F087FA0DF23F270DF21F
:100FE0003F364FF4486417F8010F01F0A3FD234684
:100FF000013BFDD101F068FEB742F4D101F02CFEB7
:10100000013CFDD101F060FEC0B2002840F0C88074
:101010000D20012101F068FA4FF44864772001E0C7
:101020001AF8010F01F086FD2346013BFDD101F0C6
:101030004BFEAA45F4D1013CFDD100210D2001F069
:1010400053FA0DF23F440DF23F364FF4486516F85F
:10105000010F01F06FFD2B46013BFDD101F034FE85
:10106000A642F4D101F0F8FD013DFDD101F02CFEC6
:10107000C0B2002840F0A1800D20012101F034FA17
:101080004FF44864039D772001E015F8010F01F04B
:1010900051FD2346013BFDD101F016FE4545F4D13B
:1010A000013CFDD100210D2001F01EFA01F00CFEE3
:1010B00010F0FF007AD1424A8DF8350092E8030023
:1010C0004032019B8DF834100C9092E8030003F538
:1010D00000731A0A0E908DF83C101B0C01210D2094
:1010E0008DF836208DF8373001F0FEF9029D4FF46F
:1010F000486415F8010B01F01DFD2346013BFDD1AD
:1011000001F0E2FD4D45F4D1013CFDD100210D205F
:1011100001F0EAF901F0D8FDC0B2002846D1FFF78E
:101120009BF9064628B901460D2001F0DDF900E0E3
:10113000EB2630460DF2444DBDE8F08FEC263046EC
:101140000DF2444DBDE8F08F01233B7322E615FA02
:1011500080F0B0F5806F1CDC1FFA80FB23680B93D6
:10116000DDF82CA0002608E023680A930A9BD8F833
:101170000820A3EB0A0393421AD2A81910ABA9EBDB
:101180000601184402F088FC0644B145ECD85D46DF
:1011900010E6C5F580691FFA89F94FF4806BDDE729
:1011A000E12630460DF2444DBDE8F08FE626C0E75B
:1011B000012388F80C305D46FCE5E226B9E700BF64
:1011C000B04B00002DE9F04F994DADF24C4D002190
:1011D0004FF47F7213A8CDE90E1110918DF84410D1
:1011E000129103F0FBF92B680693069E42F21074ED
:1011F00006E02B680793079B9B1BA34200F2B68275
:1012000002F034FC0128F4DD2B680B930024CDE9B7
:101210000E440B9E874F10948DF8444007E02B68D6
:101220000A930A9BBA689B1B934280F0AD820EAB77
:10123000C4F10201181902F02FFC0444012CEED96C
:101240009DF83830009301210D209DF83990DFF88A
:10125000E48101F049F92B680893089F002444F6C3
:1012600020660EE02B680993099BDB1BB34200F25A
:10127000848202F0FBFB1FFA80FABAF1000F40F003
:101280008682B4F5806FEDD36B4C0D20012101F007
:101290002BF9661D77204FF4486501E014F8010F23
:1012A00001F048FC2B46013BFDD101F00DFDB4429D
:1012B000F4D1013DFDD100210D2001F015F901F01F
:1012C00003FD10F0FF0040F08C825C4D8DF83D0076
:1012D00095E80300009B0E9005F1080709EB032930
:1012E0008DF83C1097E803001FFA89F3C3F38712C7
:1012F0009E009B02F6B2019310900EAB8DF8441045
:101300000D2001218DF83E6000928DF83F20029360
:101310000DF145049A464FF4486801F0E5F81AF8D3
:10132000010B01F007FC4346013BFDD101F0CCFC71
:10133000A245F4D1B8F10108FCD100210D2001F043
:10134000D3F801F0C1FCC0B2002840F05282FFF790
:1013500083F8824600285DD01B2840F00982DFF820
:10136000E0B00D20012101F0BFF80BF1050A772054
:101370004FF4486801E01BF8010F01F0DBFB434626
:10138000013BFDD101F0A0FCD345F4D1B8F1010837
:10139000FCD100210D2001F0A7F801F095FC10F020
:1013A000FF0040F026828DF83D0095E803000E9086
:1013B0008DF83C1097E80300009B10908DF84410C6
:1013C0000D2001218DF83E608DF83F300DF1380A77
:1013D0004FF4486801F088F81AF8010B01F0AAFBF5
:1013E0004346013BFDD101F06FFCA245F4D1B8F1B9
:1013F0000108FCD100210D2001F076F801F064FC19
:10140000C0B2002840F0F581FFF726F88246002898
:1014100040F0AE810B4B03931F460D20012101F0DC
:1014200063F83B469A46043777204FF448680DE04E
:101430003C8EFF1F1888FF1F684B0000B04B000058
:10144000604B0000E04B00001AF8010F01F072FB46
:101450004346013BFDD101F037FCBA45F4D1B8F168
:101460000108FCD100210D2001F03EF80DF1470BE1
:101470000DF247184FF4486A1BF8010F01F05AFBB0
:101480005346013BFDD101F01FFCC345F4D101F0EF
:10149000E3FBBAF1010AFCD101F016FCC0B200284E
:1014A00040F0AA81DFF814B2CDF810B00D20012170
:1014B00001F01AF80BF1040977204FF4486A01E0B3
:1014C0001BF8010F01F036FB5346013BFDD101F043
:1014D000FBFBCB45F4D1BAF1010AFCD100210D2070
:1014E00001F002F80DF2472B4FF4486A18F8010F8B
:1014F00001F020FB5346013BFDD101F0E5FBD8454F
:10150000F4D101F0A9FBBAF1010AFCD101F0DCFB36
:10151000C0B2002840F07681DFF8A481CDF81480B5
:101520000D20012100F0E0FF08F1050B77204FF4BA
:10153000486A01E018F8010F01F0FCFA5346013B3C
:10154000FDD101F0C1FBC345F4D1BAF1010AFCD1D0
:1015500000210D2000F0C8FF01F0B6FB10F0FF00E5
:1015600040F04D818DF83D0095E80300DFF854B15F
:101570000E908DF83C109BE80300009B10908DF8B6
:1015800044100D2001218DF83E608DF83F300DF1A3
:10159000380A4FF4486600F0A7FF1AF8010B01F073
:1015A000C9FA3346013BFDD101F08EFBA245F4D1CF
:1015B000013EFDD100210D2000F096FF01F084FBDB
:1015C000C0B2002840F01B81FEF746FF824600288B
:1015D00040F0CE800D20012100F086FF4FF44866D8
:1015E000DDF80CA0772001E01AF8010F01F0A2FA53
:1015F0003346013BFDD101F067FBBA45F4D1013E12
:10160000FDD100210D2000F06FFF0DF2472A0DF2F1
:1016100047374FF448661AF8010F01F08BFA33464A
:10162000013BFDD101F050FBBA45F4D101F014FBB0
:10163000013EFDD101F048FBC0B2002840F0DC8043
:101640000D20012100F050FF4FF44866049F7720E1
:1016500001E017F8010F01F06DFA3346013BFDD1AF
:1016600001F032FB4F45F4D1013EFDD100210D20A8
:1016700000F03AFF0DF247460DF2473A4FF4486743
:101680001AF8010F01F056FA3B46013BFDD101F07B
:101690001BFBB245F4D101F0DFFA013FFDD101F0AF
:1016A00013FBC0B2002840F0AD800D20012100F0F6
:1016B0001BFF4FF44866059F772007E0E84B0000CA
:1016C000784B0000F04B000017F8010F01F032FAE0
:1016D0003346013BFDD101F0F7FA4745F4D1013E15
:1016E000FDD100210D2000F0FFFE01F0EDFA10F019
:1016F000FF0040F084808DF83D0095E80300019BD9
:101700008DF83C100E909BE8030003F500731A0A55
:1017100010908DF844101B0C01210D208DF83E20F7
:101720008DF83F3000F0E0FE029E4FF4486516F859
:10173000010B01F0FFF92B46013BFDD101F0C4FA8A
:10174000A642F4D1013DFDD100210D2000F0CCFED8
:1017500001F0BAFAC0B2002851D1FEF77DFE8246F0
:1017600030B901460D2000F0BFFE01E04FF0EB0A5A
:1017700050460DF24C4DBDE8F08F4FF0EC0A50464C
:101780000DF24C4DBDE8F08F01233B7358E514FA80
:1017900080F0B0F5806F1CDC83B201932B680D9351
:1017A0000D9E4FF0000B07E02A680C920C9AD8F8B7
:1017B0000810921B8A4217D204EB0B0012ABAAEB63
:1017C0000B01184402F068F98344DA45ECD8019C17
:1017D00045E5C4F5806A4FF480631FFA8AFA0193E5
:1017E000DCE74FF0E80AC3E70123019C88F80C30DE
:1017F00035E54FF0E40ABBE74FF0E10AB8E74FF0F8
:10180000E60AB5E74FF0E20AB2E700BF2DE9F04380
:10181000574F584D83B04FF0000901210D20CDF8EE
:1018200000908DF8049000F05FFE4FF4FA514FF4F1
:10183000FA6000F059FC08218046012000F054FCB9
:1018400049460646052000F04FFE4FF4A063013BD9
:10185000FDD101F039F8052000F0A8FE0121052096
:1018600000F042FE052000F0A1FE4FF4E1313846C1
:1018700000F086FB6423BB60012000F097FE2B780C
:10188000C5203B3B4FF448642B7001F053F92346CD
:10189000013BFDD12B78012001332B7001F04AF977
:1018A0002346013BFDD10320287001F043F9234674
:1018B000013BFDD12B789A20663B2B7001F03AF961
:1018C0002346013BFDD1484601F034F92346013B54
:1018D000FDD12B78142014332B7001F02BF9234603
:1018E000013BFDD12B785842C0B2C31A2B7001F0D6
:1018F00021F9013CFDD101E001F0E6F901F0D0F958
:101900000028F9DC2B78032003444FF448642B7043
:1019100001F010F92346013BFDD101F0D5F9052274
:101920006946384600F0C4FB9DF80230062B32D0E1
:10193000102B40F0F8805FEA481802D0B8F1010897
:10194000FCD10021042000F0CFFD760101D0013E42
:10195000FDD10121042000F0C7FD01E001F0B4F940
:1019600001F09EF90028F9DC40F2E734A02609E0F6
:10197000EC87FF1F298EFF1F3346013BFDD1013C41
:101980003FF449AF01F08CF90028F5DD01F09CF936
:10199000C0B20228F0D1052000F008FE2B7891207B
:1019A0006F3B4FF448662B7001F0C4F83346013B9F
:1019B000FDD13A24012000F0F9FD20462C7001F001
:1019C000B9F83346013BFDD12B784E2003442B70F0
:1019D00001F0B0F83346013BFDD12B786F20034472
:1019E0002B7001F0A7F83346013BFDD12B78742012
:1019F00003442B7001F09EF83346013BFDD12B7858
:101A0000204623442B7001F095F83346013BFDD16D
:101A10002B78552003442B7001F08CF83346013BA2
:101A2000FDD12B78732003442B7001F083F83346EB
:101A3000013BFDD12B78652003442B7001F07AF82F
:101A40003346013BFDD12B78642003442B7001F019
:101A500071F83346013BFDD12B78204623442B708F
:101A600001F068F83346013BFDD128780138C0B257
:101A700043002B7001F05EF83346013BFDD101209D
:101A800000F094FD2B7893206D3B2B7001F052F801
:101A90003346013BFDD10120284C00F087FD04F1C5
:101AA000C3072B7814F8010F03442B7001F042F8A0
:101AB0003346013BFDD1BC42F3D1012000F076FD5D
:101AC0002B7893206D3B2B7001F034F8013EFDD153
:101AD00001201B4C00F06AFDE71D4FF448662B788F
:101AE00014F8010F03442B7001F024F83346013B36
:101AF000FDD1A742F3D1012000F058FD942001F060
:101B000019F8052000F052FD01E001F0DDF801F0C8
:101B1000C7F80028F9DC0D20002100F0E5FC0120C9
:101B200003B0BDE8F0832B78EE20123B2B7001F060
:101B300001F8013CFDD10020F2E700BF2787FF1F1D
:101B40001F87FF1F2DE9F043012183B00D2000F016
:101B5000CBFCB74DB74EB84F01F088FF002800F01E
:101B60009D8001F047FFC0B20128287010D91028CD
:101B700000F09780202853D0802800F04681F0287C
:101B800000F030813B78002B00F05E812028E3D804
:101B90002028E1D801A353F820F000BFDD1D00008C
:101BA000B11D0000AB1D0000A51D00007B1D000045
:101BB000591B0000511D0000271D0000FD1C0000E6
:101BC000591B0000D31C0000591B0000591B0000CA
:101BD000591B0000591B0000591B0000A31C0000EA
:101BE000591B0000591B0000591B0000591B000025
:101BF000591B0000591B0000591B0000591B000015
:101C0000591B0000591B0000591B0000591B000004
:101C1000591B0000591B0000591B0000211C00002B
:101C200001210D20854C00F05FFC0D20012100F00A
:101C30005BFC04F1040975204FF4486801E014F8D6
:101C4000010F00F077FF4346013BFDD101F03CF866
:101C50004C45F4D1B8F10108FCD100210D2000F071
:101C600043FC01F031F810F0FF0018BFE0203070A5
:101C700001F0FCFF4FF44863013BFDD101E001F0AE
:101C8000B9FE01F0F3FE0028F9DC00210D2000F080
:101C90002BFC01F0EBFE00287FF463AF03B0BDE83E
:101CA000F0833C7800203070002C00F0BA8001F006
:101CB000DDFF4FF44863013BFDD101E001F09AFEE6
:101CC00001F0D4FE0028F9DC00210D2000F00CFC0E
:101CD000DFE7FEF767FF307001F0C8FF4FF448639D
:101CE000013BFDD101E001F085FE01F0BFFE0028BF
:101CF000F9DC00210D2000F0F7FBCAE7FEF77EFEBD
:101D0000307001F0B3FF4FF44863013BFDD101E0B7
:101D100001F070FE01F0AAFE0028F9DC00210D2080
:101D200000F0E2FBB5E7FFF74DFA307001F09EFFDF
:101D30004FF44863013BFDD101E001F05BFE01F08F
:101D400095FE0028F9DC00210D2000F0CDFBA0E776
:101D5000FEF7E2FF307001F089FF4FF44863013B6A
:101D6000FDD101E001F046FE01F080FE0028F9DC23
:101D700000210D2000F0B8FB8BE7FEF76DFD307001
:101D800001F074FF4FF44863013BFDD101E001F025
:101D900031FE01F06BFE0028F9DC00210D2000F07F
:101DA000A3FB76E7FEF76AFCD6E6FEF7AFFCD3E6C8
:101DB000012002F047F9224C804602F04BF901ABBA
:101DC000A3EB08032380052001F050FF2088000AC0
:101DD00001F04CFF207801F049FFBDE6022001F040
:101DE00045FFB9E6012002F02DF9154C804602F0BE
:101DF00031F901ABA3EB08030220238001F036FF89
:101E0000052001F033FF3220DEE700210D2000F035
:101E10006BFB4FF4FA7000F0C9FB0A4B1B68984744
:101E20009AE6FFF7F3FC307008BBE12030703EE724
:101E3000288EFF1F348EFF1F2C8EFF1FF84B0000D3
:101E40002A8EFF1F308EFF1FE02001F00FFF4FF49E
:101E50004863013BFDD101E001F0CCFD01F006FE3D
:101E60000028F9DC00210D2000F03EFB11E7FEF711
:101E70002DFB307010B901233B7018E73C7016E75A
:101E80002DE9F843314F324D324CDFF8CC903846D3
:101E90004FF4E13100F074F86423BB602E682F4FDB
:101EA00040F2EE2801F064FF2378002B40D03B780D
:101EB000DA073DD52B68D9F800209B1A0E2B37D9AD
:101EC00001210D2000F036FB0121052000F032FB3E
:101ED0000121042000F02EFB0121084600F02AFB1E
:101EE0000021084600F026FB0021052000F0FCFA46
:101EF0000021012000F0F8FA0021084600F0F4FA71
:101F00000121042000F0F0FA01F032FF2378002BC9
:101F1000FAD03B78DB07F7D52B68D9F800209B1A5D
:101F20000E2BF1D9BDE8F84301210D2000F0DCBAF9
:101F30002B6822789B1B2AB1B3F5FA6FC0D801F049
:101F400017FFAFE74345FAD9BAE700BFEC87FF1F99
:101F50003C8EFF1FC08FFF1FE88FFF1FE48FFF1F06
:101F60000368C9B21B6818470368C9B21B681847E1
:101F70000368C9B21B6818470368C9B21B681847D1
:101F80004B0803F1376303F5D83310B50446B3FBB0
:101F9000F1F000F0CDFB044B1B7803B110BD2046DF
:101FA000BDE8104001F088BF1588FF1F08B508463E
:101FB00000F0C0FD012008BD08B5084600F0BAFDDC
:101FC000012008BD38B508460D4602F099FB0446CD
:101FD0000146284600F0B8FD204638BD10B5084639
:101FE0001446114600F0B0FD204610BD08461146CB
:101FF00000F0D8BF0846114600F0B8BF00F0D0BED0
:1020000008B5084600F06CFD003818BF012008BD77
:1020100008B5084600F042FD003818BF012008BD91
:102020000846114600F0D2BC084600F00DBD00BFC6
:10203000084600F0AFBC00BF00F046BC10B54B082E
:1020400003F13763144603F5D833B3FBF1F000F026
:102050006FFB2046BDE8104000F0D8BB00F07ABE10
:1020600000F032BE00F01CBE00F0F6BD00F000BE75
:1020700070B50E4D82B02B680093009E044608E0B8
:1020800001F076FE2B680193019BA2689B1B934293
:1020900007D2236820465B6998470028F0DB02B02E
:1020A00070BD4FF0FF3002B070BD00BF3C8EFF1F0F
:1020B000F8B50D4691B116469AB10746002404E0E2
:1020C0000134A64205F8010B06D03846FFF7D0FFD1
:1020D0000028F5DA01233B732046F8BD0C46204664
:1020E000F8BD1446F8E700BF884200DB704770B4C3
:1020F000114C2268091AEAB1104B114E114D83FBA5
:10210000023C9444D317C3EB2C4306FB132244F246
:10211000A71C05FB03F30CFB0233002B02DA03F1CF
:102120000043013BB3FBF1F201FB12322360104488
:1021300070BC7047044BF5E7388EFF1F5F0B4E8372
:102140001DF30100ECF4FFFF42CE0C1F08B5FFF7B2
:1021500097FEFFF7F7FC01F00BFEFAE701B441EA46
:10216000000313F003036FD1403A41D351F8043B0D
:1021700040F8043B51F8043B40F8043B51F8043B61
:1021800040F8043B51F8043B40F8043B51F8043B51
:1021900040F8043B51F8043B40F8043B51F8043B41
:1021A00040F8043B51F8043B40F8043B51F8043B31
:1021B00040F8043B51F8043B40F8043B51F8043B21
:1021C00040F8043B51F8043B40F8043B51F8043B11
:1021D00040F8043B51F8043B40F8043B51F8043B01
:1021E00040F8043B51F8043B40F8043B403ABDD270
:1021F000303211D351F8043B40F8043B51F8043B12
:1022000040F8043B51F8043B40F8043B51F8043BD0
:1022100040F8043B103AEDD20C3205D351F8043BA0
:1022200040F8043B043AF9D204320AD0D2071CBF6A
:1022300011F8013B00F8013B03D30B7803704B7896
:10224000437001BC704700BF0C2A4AD310F003034F
:1022500011D0C3F10403D21ADB071CBF11F8013BF4
:1022600000F8013B07D311F8013B00F8013B11F8DE
:10227000013B00F8013B11F003033FF475AF30B4AC
:10228000043AC91AC3F1040C51F8044B022B19D0BB
:10229000032B0BD0240A51F8043B1D0644EA050425
:1022A00040F8044B1C46043AF4D216E0240E51F8D0
:1022B000043B1D0244EA050440F8044B1C46043A62
:1022C000F4D20AE0240C51F8043B1D0444EA05044E
:1022D00040F8044B1C46043AF4D20432B1EB0C0132
:1022E00030BC043AA0D3013A11F8013B00F8013B9D
:1022F000F9D20B7803704B7843708B78837001BCF4
:10230000704700BF08B50F4C636B58030DD4636B67
:1023100059050FD4636B1A0511D4636BDB04F3D535
:1023200000F012F8636B5803F1D500F009FF636BFE
:102330005905EFD500F058FD636B1A05EDD500F097
:1023400003F8EAE70080044008B5FFF7DBFF00BFB1
:10235000014B10221A80704700200540704700BFD3
:10236000094A08B50346106833B169460344A1F52C
:1023700080518B4201D2136008BD02F093F90C2307
:1023800003604FF0FF3008BD0088FF1FEFF3138399
:10239000CBB9EFF31080A0B9EFF3058343B94FF445
:1023A0008070EFF311835BB1984228BF18467047E5
:1023B0000F2BF6D9054AD05CEFF31183002BF3D134
:1023C0007047184670474FF0FF307047F0E300E069
:1023D00001F1FF3C70B56546002401E07046013410
:1023E000B0FBF2FE02FB1E03092B03F130068ABF8D
:1023F0003733F3B2DBB2904205F8013FEED2631CF3
:102400000022CA54C8187CB162461CF8015F10F85B
:1024100001ED8CF800E0A1EB0C030232013B521AF3
:1024200023449A420570EFDB084670BD034B00223F
:1024300010215A615A6018605961704700D00340FA
:10244000704700BFF0B54FF0E0244FF400054FF0A7
:10245000807CC4F80851C4F808C14FF0007CC4F86F
:1024600008C11D4A1D481E494FF0806CC4F808C1C0
:10247000282300274BF6FF7609254FF0006CC4F89F
:1024800008C183B057609660D3605361D3615362D3
:10249000D3625363D3635364156047608660C3603F
:1024A000436105604F608E60CB604B610D6001F051
:1024B0002BFDFFF7C5FF0B4C23680093009B132BEC
:1024C000FAD901F0F7F923680193019BB3F5967FE0
:1024D000F9D303B0F0BD00BF00800340009003407B
:1024E00000800B403C8EFF1F212816D810B4104BE3
:1024F00053F8302092F880422CB1012371B982F850
:10250000003110BC704703EBC0035B681A6849B127
:1025100042F0030210BC1A607047704782F88030A6
:1025200010BC704722F0020210BC1A60704700BF56
:10253000684C0000212820D81B4A02EBC003012967
:102540005B680FD004291DD052F83000002280F8BB
:10255000802299B1022922D003290DD14FF4817232
:102560001A60704752F830004FF4A27280F880125F
:102570001A601A6822F020021A6070474FF48072C5
:102580001A60704752F830104FF4A272012081F89F
:1025900080021A601A6842F020021A60704740F206
:1025A00003121A60704700BF684C00002DE9F84321
:1025B000044672B6204F4FF0E02293693D68D2F88E
:1025C000042D62B6520102D5322B88BF01350CB9F9
:1025D000BDE8F883DFF86490DFF86480A9EB0303BB
:1025E000A8FB03234FF47A7202FB05F505EB931564
:1025F0004FF0E02672B6B1693A68D6F804CD62B6FB
:10260000A9EB0103A8FB03031CF0806FC5EB931338
:102610004FF47A7002D0322988BF013200FB0233B6
:10262000B3F57A7F04D3013CD2D005F57A75E1E7A2
:1026300001F09EFBDEE700BF3C8EFF1FFF7601002E
:10264000ABAAAAAA2DE9F84F314B1B6807460BB17C
:1026500001221A70DFF8BC90DFF8BC8099F80040C6
:10266000D8F800302D4D01349C422B782AD303F04A
:10267000FF0A002B3ED15446294EDFF8A8B005E0F2
:1026800033791B0623D42B78A3420AD1FFF77EFEB1
:102690004028F5DDFF28F6DD01F06AFB2B78A34228
:1026A000F4D03F2C29D9204B403C1B68FFB21F556A
:1026B0001E4A1B4B01211170BC2289F800A0DA7060
:1026C000BDE8F88F9C425FFA84FAD5D0E9E72B7811
:1026D000D8F800105A1C8A42DBB203D23F2A10D825
:1026E000D1B201E000210A461BF80230DBB2F371DF
:1026F0002970C8E74FF0000A54460A4BFFB21F5535
:10270000D6E7D1B2084A3F3B1268D35CDBB2EEE7B2
:10271000908EFF1FD88EFF1F1088FF1FE08EFF1FB7
:1027200000A00640988EFF1FDC8EFF1F948EFF1FB7
:102730002A4A2B49536B70B443F48063294D536389
:1027400000232B70284E0B70284C294923703278B7
:102750000B7028490B709AB3152A03D1264B40F20F
:1027600013329A61254B1B78012B31D0052B03D1F5
:10277000214B4FF45172DA612028214B214C38BF94
:102780002020C0F3443C83F800C0C0F3471C00F095
:102790001F0083F801C00422987202209A70D87436
:1027A00088205A754FF0E021187440223C20D870E0
:1027B00084F82D204FF4005370BCC1F804317047E9
:1027C000114B40F213321A640C4B1B78012BCDD104
:1027D0000D4B4FF451725A64CEE700BF00800440A5
:1027E0008C8EFF1F848EFF1F8D8EFF1FD88EFF1FC4
:1027F000E08EFF1F948EFF1F00C004401488FF1F4F
:1028000000A0064000E400E000A00440294B294954
:102810009B7800F0030203F0EC031343420700F03F
:102820000F0248BF43F01003042A8B7003D18B7949
:1028300043F040038B711F4B5A79C30602F0EF023D
:102840001C4B48BF42F010025A719A79810602F07F
:10285000EF0211D542F0100281059A710FD59A78D6
:10286000154942F0A0029A700978144B03EBC1039A
:1028700040F246325B6814E09A71820505D4104B31
:10288000104A1968914211D070479A780A4942F06B
:10289000A0029A700978094B03EBC10340F247325A
:1028A0005B68074907481A600860704700221A6091
:1028B000704700BF00A006401488FF1F684C00004E
:1028C000908EFF1FD400D442284B5B6B5B054CD528
:1028D00010B5274C237823B101F04AFA2378002B56
:1028E000FAD1244A244B4FF0E0204FF40054002149
:1028F000C0F88441D1701B7863B3152B1BD01F4BDC
:102900001B7803F07F03012B1FD0052B0ED01C4B2F
:10291000184A1C4C1C48196892F804C0D27900234C
:102920002370037009B101230B7010BD174B40F2E7
:102930000312DA61EBE7154B40F203129A610F4B79
:102940001B7803F07F03012BDFD1114B40F2031200
:102950005A64DCE70E4B40F203121A64074B1B78F3
:1029600003F07F03012BD0D1EFE7704700800440D4
:10297000948EFF1F00A006408D8EFF1F1488FF1F3E
:10298000408EFF1F848EFF1F8C8EFF1F00C00440EF
:1029900000A004400A4A38B50546137803F0FF0446
:1029A000002BFAD101212846FFF7C4FD2146284615
:1029B000FFF79AFD034A044B52F835201A6038BDE0
:1029C000948EFF1F684C0000908EFF1F09B140F0ED
:1029D0008000194A1378834217D010B4174C646BE7
:1029E00064050FD503F07F03012B21D0052B14D0F4
:1029F000002900F07F0314BF60214421012B10D077
:102A0000052B03D0107010BC704770470C4B41F47D
:102A10004071D961107010BC7047094B0024DC6113
:102A2000E6E7084B41F440715964107010BC7047E0
:102A3000044B00245C64DBE71488FF1F0080044023
:102A400000C0044000A00440104A137883420AD01A
:102A50000F49496B490505D5ABB1152B09D068B1B4
:102A6000152801D0107070470A4B40F2133199615C
:102A7000F8E7084B002199610028F1D1064B40F29C
:102A800013311964EEE704490B64E8E78D8EFF1FEC
:102A90000080044000C0044000A004400D4B5B6B6C
:102AA00013F4806313D0212803D90B4B0020186046
:102AB00070470A4B10B5084C53F8303023600121A1
:102AC000FFF738FD236800221A70012010BD184658
:102AD000704700BF00800440408EFF1F684C00001C
:102AE000104B5B6B13F4806312D012280BD01428A8
:102AF00010D10D4B40F202325A610C4A537B012037
:102B00000343537370470A4B40F20232DA60F4E732
:102B100018467047054A537B03F0FE0300205373A9
:102B2000704700BF0080044000C0044000A0064081
:102B300000A00440034B5B6B5B0501D5FFF782BD32
:102B4000704700BF008004402DE9F84F394B5B6BA4
:102B50005A053CD5384B1B680BB101221A70471837
:102B6000B84231D2354EDFF8D880364CDFF8D890F5
:102B700000F1010A13E003F0FF0B53B34FF0000B19
:102B80005D46324A1AF8013C5355524630490123FA
:102B9000BA420B700AF1010A86F800B014D23578F7
:102BA000D8F800300135AB422378E4D9AB425FFA64
:102BB00085FB0FD03F2DE4D9264B1AF8012C1B685A
:102BC000403D5A555246E1E71F4BBC22DA70BDE842
:102BD000F88F5D466FF0430389F8033006E099F8FB
:102BE00004301B060BD42378AB42E3D1FFF7CEFBB6
:102BF0004028F4DDFF28F6DD01F0BAF8F3E723788A
:102C0000D8F800105A1C9142DBB203D93F2A0AD8E7
:102C1000D1B201E000210A460C4B9B5CDBB289F883
:102C200007302170DFE7D1B20A4A3F3B1268D35C1C
:102C3000DBB2F4E700800440908EFF1FD88EFF1FA8
:102C40001088FF1FE08EFF1F00A00640988EFF1F18
:102C5000948EFF1FDC8EFF1F10B5044C237823B128
:102C600001F086F82378002BFAD110BD948EFF1F57
:102C7000084A094B11781A789142C8B2D3B202D2ED
:102C8000013B181A7047054A1268013A1344181A92
:102C9000704700BFD88EFF1FE08EFF1F1088FF1FF8
:102CA000064A074B11781A789142D0B23CBF054AC8
:102CB0001268CBB238BF9B18181A7047848EFF1F5A
:102CC0008C8EFF1F0C88FF1F1B4B1C491A780B783A
:102CD0009A422ED010B55FFA82FE194AD8B2126815
:102CE000431C9A4219D93F2B1BD85FFA83FC154825
:102CF000C05CC0B281F800C01349096861B19E454B
:102D00003CBF7244D31A114A126828BFAEEB0303CA
:102D10009A4201D300230B7010BD4FF0000C6346A4
:102D2000E5E70B4C3F382468205C5FFA83FCC0B2B7
:102D3000E0E74FF0FF307047848EFF1F8C8EFF1F3F
:102D40000C88FF1F448EFF1F408EFF1F0888FF1F47
:102D5000888EFF1F0D4A0E4B11781B789942DAB20C
:102D600011D00C490968531C994207D93F2B06D949
:102D7000094B3F3A1B68985CC0B270470023074A72
:102D8000D05CC0B270474FF0FF307047848EFF1F99
:102D90008C8EFF1F0C88FF1F888EFF1F448EFF1F25
:102DA0000C4B5B6B5B0514D50B4B0C48DA78402160
:102DB00002F0CB02DA705974DA78094942F0340231
:102DC000DA70084A03781268DBB20B700AB100238C
:102DD000137070470080044000A006408C8EFF1FD7
:102DE000848EFF1F408EFF1F2DE9F041504C237948
:102DF00013F0300F47D072B6A37D03F0FF01002B14
:102E000058D062B6DFF82C814B4898F800304B4A16
:102E1000057816684A4F5FFA83FC4A4BEDB2D3F847
:102E200000E008E01DB14FF0000C07F80C304A1E1E
:102E300012F0FF0112D0E3790CF101029642DBB2ED
:102E4000F0D99542ACF13F00F1D03F2A6DD99446BC
:102E50004A1E12F0FF010EF80030ECD15FFA8CF33D
:102E600088F80030384B196869B1AC453CBF721B1B
:102E700002EB0C03354A126828BFACEB05039A42FB
:102E80009CBF01230B702A48C3781E06DDB216D4FE
:102E90006A060DD5264B1B795B0609D52C4B2D49AF
:102EA0001B6800220A7003B11A70214B3C22DA70B1
:102EB000BDE8F0814023E279637462B6E3E7037909
:102EC0001C06E5D5244B254ADFF894E01C781668EB
:102ED0009EF80030234A244FD2F800C0E4B2DBB29F
:102EE00007E003790023FA5CD2B2C271027D072A9F
:102EF00011D8A34203F101010ED08E42F1D93F292E
:102F00000279A3F13F0301D80B46ECE71CF803203C
:102F10000B46D2B2E9E7DCB2054B8EF800401A79D5
:102F2000110644BF7C22DA70B2E794467DE700BF09
:102F300000A00640848EFF1F8C8EFF1F0C88FF1F91
:102F4000448EFF1F888EFF1F408EFF1F0488FF1FC7
:102F5000908EFF1F948EFF1FD88EFF1F1088FF1FBB
:102F6000E08EFF1FDC8EFF1F988EFF1F094B10B4F1
:102F7000186060B101F14004074B084801F11A02E2
:102F80001A60074B0460283110BC19607047402458
:102F9000F2E700BF888EFF1F0888FF1F0C88FF1F05
:102FA0000488FF1F054B186018B1054B40311960AC
:102FB0007047034B40211960704700BFDC8EFF1F34
:102FC0001088FF1F704700BF431E032B17D872B62F
:102FD0000C4951F8230080B110B40B4CB0F800C07C
:102FE00034F81320A2EB0C02D0F804C041F823C03F
:102FF00024F8132062B610BC704762B670470020F8
:10300000704700BF748FFF1FC48FFF1F0138032854
:103010000BD872B6074B53F8203043B100205B68E1
:103020000130002BFBD162B6704700207047184674
:10303000F9E700BF9C8FFF1F10B472B6194A1A4CF3
:10304000042312F8011B090743F0010C05D554F8BD
:10305000331061B154F83C10B9B10433142BF0D1E2
:1030600062B6124B00221A7010BC00F09BBC0F49D4
:1030700004EBC302083050600A780D4844F833006E
:10308000013A0A7062B610BC7047084A094904EB5D
:10309000CC0308305860137844F83C10013B13709F
:1030A00062B6F0E7F84D00000080FF1FCC8FFF1FD5
:1030B00088004000C8004000421E032A0ED81C4B66
:1030C000400140F0100010B4034472B6194CA05CEB
:1030D00003281CD8DFE800F01315031870470520FB
:1030E000A05413F0080F088814BFC82288220831A2
:1030F00042EA004259601A6062B610BC7047032071
:10310000EEE708330220EBE708330420E8E70A4B38
:1031100053F8220038B1094B53F82200416043F8BC
:10312000221062B6E9E743F82210044BF7E700BF2C
:103130000080FF1FBC8FFF1F9C8FFF1FAC8FFF1FE6
:103140002DE9F04FDFF8CCA2DFF8CCB285B03DE03E
:10315000B24D9E0805EBC607013A796813F00803E3
:10316000D4B2A1F1080040F0B88055F836204FEAFB
:10317000124C120C21F808CC00F0A78021F8063C74
:1031800041F8043CA64B53F82420002A00F00182A9
:10319000A44B53F82420506043F82400A24B33F88A
:1031A0001420944423F814C000F0DCFB002800F045
:1031B000E98117F0080F9D4B00F1080018BF5B462E
:1031C000786045F8363008238AF880309AF88030E5
:1031D0005907DCB21BD5964B1B78ABB195490A78E1
:1031E00002F0FF032AB1013BDBB20B70002B00F0B1
:1031F000468391490A7802F0FF032AB1013BDBB212
:103200000B70002B00F0EB8104238AF8803014F05F
:10321000080200F0CC819AF89020D3B2120997D11D
:10322000DFF8F8919B0809EBC30459F83300646890
:10323000C0F3830009287CD00FD80138012808D8B2
:103240007E4A158842F22100854200F0FB8149F850
:1032500033B001238AF89430B5E70D28F9D1D4E9C9
:103260000007774D49F833B0744E764CC9F81020FA
:1032700083B240F2816CC9F818202A6063454FF090
:103280000102C6E90007227000F2FF80B3F5D06F9B
:1032900080F0CB82B3F5817F00F0268240F2DE80A1
:1032A00040F2023293427BD107F07F07042F00F2F5
:1032B0000881020C40F00581634911F8273043F082
:1032C000020301F82730134670E017F0080F574B40
:1032D00018BF5B4645F8363075E700F063FB5B4985
:1032E0005B4A51F82430002B00F05781586841F8B0
:1032F0002400115D03F108007860032905D8DFE898
:1033000001F0120F1502042111551A8817F0080F49
:1033100014BFC823882343EA024345F8363052E7F6
:1033200002211155F1E703211155EEE70521115551
:10333000EBE7434D2A683AB34649424C0F8846486A
:1033400094F800E00678402F3B4628BF4023BEF1AA
:10335000000F8EF0010E84F800E046F0020486F0C3
:103360000106067009EBC400426014BFC820882023
:1033700040EA03401A44FB1A9BB249F834000B8020
:10338000002B00F036812A602C4B1A88B2F5A06F12
:103390007FF45FAF9A788AF8982000225A7058E735
:1033A000B3F5A06F40F08D8000221346B6F806C03A
:1033B0002948944528BF944667460278402F28BF85
:1033C000402742F0020E3E0409EBCE0846F0C80644
:1033D000C8F8043049F83E6000263B442670BCEB38
:1033E000070782F00106067040F01181BCF13F0F23
:1033F0004FF0010509D946F00206027009EBC6023A
:1034000025705360882349F8363001238AF89430B8
:103410001FE700BF00200740C80040000080FF1FDA
:10342000748FFF1F848FFF1FC48FFF1F8800400011
:10343000C08FFF1FC18FFF1FEC8FFF1F948FFF1FD7
:10344000688FFF1F658FFF1FC02007409C8FFF1FE5
:10345000BC8FFF1F668FFF1F648FFF1F802B00F044
:103460008B81822B2DD107F07F07042F29D8A74A03
:1034700000231380A64B13F827309F0740F1FC81EF
:1034800001231370A14B022290E742F2210C634505
:10349000BBD01DD942F2212293420DD1BFB2002FE1
:1034A00082D19C4B1A689C4B1A609C4BC0F307401E
:1034B00000221870134679E742F2213293423FF41A
:1034C00073AF0F238AF8C03001238AF89430C0E626
:1034D000B3F5086F00F04A81B3F5106FF1D1904B4E
:1034E000C0F307400425187059F835301A0606D481
:1034F0000135142D0CD059F835301A06F8D509EBE2
:10350000C50301355868083800F04CFA142DF2D183
:10351000844A854B0292854A0192854E854ADFF89E
:1035200018820394009200251C4656F8047B2FB1A4
:1035300038467F6800F036FA002FF9D1009BD8F8A2
:10354000007043F8045B46F8045C00932FB13846E2
:103550007F6800F027FA002FF9D1029B48F8045B3E
:1035600043F8045B0293019B23F8025B01932378E9
:10357000023B032B00F20981DFE813F03F01040155
:103580003F0104016D4A45F836001378013313708A
:1035900019E643F82400674BFEE5115D022926D0A9
:1035A0007FF611AE03291DD1012313550BE6E00769
:1035B0006ED4210621D4A20708D5614B93F8882048
:1035C0000221D2B283F8882083F88010E30603D565
:1035D0005B4B102283F8802005B0BDE8F08F00F02F
:1035E000A3FB11E617F0080F14BF032302231355A2
:1035F000E9E53F2F98BF0022C5E6514B80220D21FF
:1036000083F8C01083F88020A207DFD5D5E746F005
:1036100002060270402F09EBC6003A4628BF40223E
:1036200043601004134440F088000121BA1A49F89D
:103630003600217055D02B60424B1A8001238AF846
:10364000943006E692885AB93F4AE51D14F8011BEA
:1036500002F8011FAC42F9D13C4A1268862A3CD0DC
:103660003B4C3C4825780278002D85F001052570FB
:1036700042F0020482F00102027009EBC4024FF032
:103680000000506014BFC822882249F83420DEE5CB
:103690002B4B30483049314C022583F8945002704E
:1036A0002F480C602F4D48608C600D24CD60FF20AA
:1036B0000A618A6183F8C04001219F2483F8880051
:1036C00083F8800083F8982083F88C0083F8844086
:1036D00083F8941005B0BDE8F08F234A0F201070D6
:1036E000BEE73F2FA7D890E607F07F07042F3FF6ED
:1036F000E8AE000C7FF4E5AE054A12F8273023F05F
:10370000020302F82730002213464FE66C8FFF1F9A
:10371000C02007403C8EFF1FE88FFF1FE48FFF1F74
:10372000C08FFF1FAC8FFF1FBC8FFF1FC48FFF1FF9
:10373000748FFF1F848FFF1F9C8FFF1FCC8FFF1F75
:1037400000200740668FFF1FDB8FFF1FDC8FFF1FEE
:10375000658FFF1F648FFF1F0080FF1F88004000E0
:10376000E48EFF1F248FFF1FC18FFF1F484B494965
:103770001B780B700B4619E6464A00231380454B15
:10378000022213E64FF001032370434BB34204F1CE
:1037900001047FF4CAAE414E039CDFF80481414F1F
:1037A00000233370042518F8013B3F4AAB541B0734
:1037B00025D445F0020145F0030204350023142D01
:1037C00049F8313049F83230EDD1384F25783A7820
:1037D00042F0020009EBC00C85F00106CCF8043081
:1037E000002D4DD1882382F0010226703A7049F8ED
:1037F000303001238AF894302BE52570C5E700F0BE
:10380000B1F8002832D009EBC5030830586049F8F8
:10381000357000F0A7F808B345F0010309EBC302C7
:103820000830506049F833B0C3E7214A5368002B91
:103830003FF447AE000CBFB204E013690C32002B1A
:103840003FF43FAE11888142F7D15188B942F4D19B
:10385000000A03280CBF1A781289A7E533780133D0
:10386000337045F0010349F83300A2E7337849F893
:10387000350001333370CCE7064B022296E500BEDB
:103880002670C82382F001063E7049F83030BCE54E
:10389000C08FFF1F6C8FFF1F848FFF1FCC8FFF1FF8
:1038A000F84D000088004000C0200740648FFF1FD3
:1038B000A44D000070B500F08DFB00231A4A194694
:1038C00042F8331002EBC3000133142B4160F7D1EF
:1038D000164C174B606B174D40F480206063C2F3A9
:1038E000072483F89C40144CFF204FF0010CC2F3D6
:1038F0000746120E83F8B0604FF0E02E83F8B42034
:1039000083F8800083F88800187483F894C02170CD
:1039100083F884C0702385F849304FF40072102377
:10392000CEF80821237270BD0080FF1F0080044084
:103930000020074000E400E00021074000F0F6B856
:1039400000F07CB800F056B800F090B800F0C0B9B4
:1039500000F09AB90846114600F004B9084600F094
:1039600085B900BF72B60D490B68B3FA83F00B2816
:1039700010DC4FF00042C24023EA02030B6062B643
:10398000074A00EBC000C10002EBC0000023535007
:103990004360704762B60020704700BF2888FF1F51
:1039A000BC83FF1F0E4BC31AB3F5587F10D20D4ACC
:1039B000127872B972B60C4A0C49A2FB032308684C
:1039C0004FF000421B0922FA03F303430B6062B677
:1039D0007047074A1278002AECD0FFF72DBB00BFD2
:1039E000BC83FF1FCC8FFF1F398EE3382888FF1F51
:1039F000C08FFF1F38B50F4C206878B1438802880C
:103A0000C11801339A420D7A02D94380284638BD45
:103A1000FFF7C8FF00232360284638BD064B1B78FC
:103A20002BB10320FFF7D0FA20600028E6D14FF039
:103A3000FF35EBE7D08FFF1FC08FFF1F10B5094C7C
:103A4000206818B143881844007A10BD064B1B78D3
:103A50002BB10320FFF7B8FA20600028F2D14FF015
:103A6000FF3010BDD08FFF1FC08FFF1F084B094ACA
:103A70001B6810B594881BB11A885B88D31A1C4444
:103A80000CB1204610BD00F073F9204610BD00BFF8
:103A9000D08FFF1FC48FFF1F2DE9F84F0D4600295F
:103AA0003ED04FF00008DFF87C901F4E0746C2461C
:103AB00099F80030E3B1346814B322886388A2EB2C
:103AC000030BAB4528BFAB4604F1080138465A4604
:103AD0001944FEF743FB638822885B449BB29A42F9
:103AE00063805F44D844A5EB0B0511D9002DDFD1CD
:103AF0004046BDE8F88F0288002ADFD1FFF752FF69
:103B00000320FFF761FA044630600028F3D1EFE7A5
:103B10002046FFF747FFC6F800A0002DC8D1E7E711
:103B20000846E6E7C08FFF1FD08FFF1F0B4B1B78A7
:103B30009BB110B50A4C206848B1FFF733FF002352
:103B400003202360FFF740FA30B1FFF72BFF03207B
:103B5000FFF73AFA0028F8D110BD7047C08FFF1F59
:103B6000D08FFF1F2DE9F04FDFF8EC9083B00122DA
:103B700089F80020019179B3384FDFF8E480019D86
:103B8000384EDFF8E4A083463968A1B3B1F802E00B
:103B9000CEF1400CAC4528BFAC460EEB0C04002225
:103BA000A4B23270A5EB0C054C8001F10802BCF107
:103BB000000F0AD00EF1FF3E7244DC441BF8014BAB
:103BC00002F8014FDC45F9D14C883F2C0BD8052277
:103BD0008AF80020002DD7D10198002389F8003001
:103BE00003B0BDE8F08F40220A800420FFF764FA9A
:103BF00000223A60EBE798F800202AB34AF2F92451
:103C000008E0013C19D03278BAB900F0B1F898F860
:103C10000020CAB10420FFF7F9F90728F1D84FF0C6
:103C2000010389F80030FFF79DFE01463860002847
:103C3000ACD1013C89F80000E5D101234FF0FF3001
:103C4000337003B0BDE8F08F00234FF0FF3089F8E8
:103C5000003003B0BDE8F08FD58FFF1FD88FFF1F56
:103C6000C08FFF1FD48FFF1FEC8FFF1F00B583B0E5
:103C7000034601210DF107008DF80730FFF772FFB1
:103C800003B05DF804FB00BF38B50E4D0E4C28683C
:103C90000123237028B140880023C0F14000237025
:103CA00038BD0A4B1B7813B90020207038BD0420A2
:103CB000FFF7ACF90728F7D8FFF754FE2860002873
:103CC000E9D1F1E7D88FFF1FD58FFF1FC08FFF1FEE
:103CD000F8B5114B1B788BB1104E114D346801278C
:103CE0002F7064B10F4B00271F706388238021461B
:103CF0000420FFF7E1F9376000232B70F8BDFFF7D0
:103D000031FE084B014620B104201C70FFF7D4F9A6
:103D1000F2E71F70F0E700BFC08FFF1FD88FFF1FB3
:103D2000D58FFF1FEC8FFF1F38B50E4B1B7853B993
:103D30000D4C216841B103F0FF054B880B80042036
:103D4000FFF7BAF9256038BDFFF70CFE014620B138
:103D5000BDE838400420FFF7AFB9044B01221A70C8
:103D600038BD00BFD58FFF1FD88FFF1FEC8FFF1FFF
:103D70002DE9F843324E337863B1324F3A784AB97D
:103D80000122D9073A7043D49A0726D400225B0750
:103D90003A7001D4BDE8F8832B4B1A68002AF9D099
:103DA000EFF30582002AF5D1EFF3108572B618689B
:103DB00000283AD0254C2178002936D142691A6072
:103DC00001232370002A37D0916105B962B600251E
:103DD0008368457798472570DCE7DFF8748098F8AA
:103DE0000020002AD2D00025DFF868902B4659F831
:103DF0002340236820461B690135984708B1236991
:103E0000984798F80020EBB29A42F0D83378BDE793
:103E1000FFF72CFE68B9104B1B780BB93378B3E76A
:103E2000337803F0FE033370AEE7002DB2D162B6F3
:103E3000B0E700F0CDF8EEE7084B1A60C5E700BF29
:103E40002C88FF1FED8FFF1FF08FFF1FFC8FFF1FC0
:103E50001090FF1F0490FF1FA04D00000090FF1F57
:103E600070B5EFF3108272B60C4C206880B10C4E26
:103E700000254369236073B19D6102B962B683680E
:103E800045779847EFF3108272B620680028F0D18A
:103E900002B962B670BD3360EFE700BFF88FFF1F55
:103EA000F48FFF1FFFF7DCBF024A13680133136072
:103EB000704700BF3C8EFF1F70B4104E104D347819
:103EC000D4B1621ED2B2291D2B4601EB820101E062
:103ED0008B4205D053F8042B8242F9D170BC704755
:103EE000631CDBB2074A3370137845F8240043F0B3
:103EF0000203137070BC70470123F3E71090FF1F9B
:103F00000490FF1F2C88FF1F2A4B2B4A6020E121C1
:103F10001870597013782948082B34D00A2B20D0F8
:103F20000C2B274B0CBF35213D2112228160C26032
:103F30009960DA60234B21491B78214ACBB10123D8
:103F40000B621362204B1D491B781D4A012B13D9AC
:103F5000042B1BD884234B6253621C4B01221A7022
:103F60007047174B392113228160C2609960DA6073
:103F7000E0E70B621362E5E780234B625362134B69
:103F800001221A7070470E4B0121ECE7082B06D86E
:103F900085234B6253620D4B01221A707047102B20
:103FA00094BF862387234B625362084B01221A7009
:103FB000704700BF004007402D88FF1F00B003403E
:103FC00000B00B401190FF1F2E88FF1F1290FF1FA3
:103FD000704700BF10B584B072B6174A70244120F4
:103FE0000F2180231470D0719171137013781B0608
:103FF000FCD5906862B6114B114C984238BF00EB6B
:10400000800001A938BF40000A22FEF7E1F901A9AA
:104010002046002311F8012B01333AB10A2B20F876
:10402000022FF7D11623237004B010BD5B00DBB262
:10403000237004B010BD00BF0000024080969800BD
:10404000BC88FF1F024B0146186800F00BB800BF88
:10405000088EFF1F024B0146186800F01FBC00BF0E
:10406000088EFF1F2DE9F04F01F10B06162E83B0CD
:10407000044624D8102900F2BA8000F0A3FA1026D2
:1040800018220220B54F3A44A2F1080153688B422E
:1040900000F0BA805A68D96822F003021A449D6879
:1040A000E9608D60516841F001012046516003F1E3
:1040B000080500F08DFA284603B0BDE8F08F36F011
:1040C000070600F19480B14200F2918000F07AFA84
:1040D000B6F5FC7FC0F09A81730A00F08F80042B44
:1040E00000F26F81B30903F1390003F1380CC3000A
:1040F0009A4F3B44A3F108055B689D4206D10CE052
:10410000002980F22781DB689D4206D05A6822F0A0
:104110000302911B0F29F3DD60463D69DFF840C2C1
:1041200065457CD06A6822F00302931B0F2B00F3D5
:104130007B81002BC7E904CC80F26C81B2F5007F53
:1041400080F01A81D308796801334FEA521E0122A8
:1041500002FA0EF20A4357F833E0C5F808E007EB1D
:10416000C3010839E9607A6047F83350CEF80C5043
:10417000831001219940914257D8114206D120F075
:1041800003004900114200F10400FAD007EBC00916
:104190004D468646D5F80C80454508D11DE1002BDB
:1041A00080F22481D8F80C80454500F01681D8F8BB
:1041B000042022F00302931B0F2BF0DD2046D8E9E8
:1041C000025408EB060146F00106C8F80460EC60F2
:1041D000A56043F00104C7E90411C1E902CC4C60B9
:1041E00048F8023000F0F4F908F1080502E00C2369
:1041F00023600025284603B0BDE8F08F4FF400731C
:1042000040204FF03F0C73E7D3689A4208BF02305A
:104210007FF440AF3D69DFF848C1654582D17A68D7
:104220008310012199409142A7D9BD686B6823F0A2
:1042300003094E4503D8A9EB06030F2B7ADCDFF800
:1042400024B1494BDBF800201B680132334405EBF5
:10425000090A00F0338103F580530F3323F47F689C
:1042600028F00F084146204600F00AFA411C024699
:1042700000F0F380824500F2EE803C4B1968414427
:104280001960084600F04E81DBF8001001930131FF
:104290001BBFA2EB0A010918CBF80020196012F02D
:1042A000070B00F01781CBF108010A44CBF58051D0
:1042B00090440831A1EB0801C1F30B0A5146204696
:1042C000009200F0DDF9421CDDE9002300F04F818F
:1042D000801A00EB0A081968BA6048F001005144DE
:1042E000BD425060196000F02981B9F10F0F40F212
:1042F00027816868A9F10C0C2CF0070C00F0010074
:1043000040EA0C0068604FF0050E05EB0C00BCF1B4
:104310000F0FC0E901EE00F2328150681546144BD0
:104320001A688A4238BF1960124B1A688A4238BF2D
:10433000196094E0AA1943F0010346F001066E608B
:104340002046BA60536000F043F90835284603B0B0
:10435000BDE8F08FD9681A44A1E600BFD488FF1FDA
:10436000DC88FF1FDC8CFF1F4490FF1F1490FF1F91
:104370003C90FF1F4090FF1FB2F5206F4FEA522381
:1043800063D3142B00F2B78003F15C01C9005B33E7
:1043900007EB010E7958AEF1080E8E4500F09180C2
:1043A0004B6823F00303934202D989688E45F7D105
:1043B000D1F80CE07A68C5E9021ECEF80850CD604D
:1043C000D6E6142B59D9542B00F29D80330B03F100
:1043D0006F0003F16E0CC3008AE60EF1010E1EF0B1
:1043E000030F05F108057FF4D5AE51E04244454680
:1043F0005368D8F80C1043F00103536055F8083F98
:104400002046D9608B6000F0E3F8F3E6F00806F18F
:10441000080237E62A442046536843F001035360FC
:10442000083500F0D5F8E5E6A919204646F0010662
:1044300043F001046E60C7E90411C1E902CC4C608D
:10444000AB5000F0C5F80835D4E6930903F1390103
:10445000C90038339CE7BD425FD0BD68686820F072
:1044600003084645A8EB060302D80F2B3FF762AFBF
:10447000204600F0ADF80025BCE603F15C0003F136
:104480005B0CC30034E659F808394B4540F0968080
:1044900010F0030F00F1FF30F5D17B6823EA010330
:1044A0007B60490099423FF6C0AE19B9BDE64900AC
:1044B0000EF1040E1942FAD0704667E603F11008B7
:1044C000D0E69A104FF001087B6808FA02F21A430E
:1044D0007A6070E702EB08014942C1F30B0A5146CA
:1044E0002046009200F0CCF8431CDDE900237FF465
:1044F000EFAEDA46EFE6542B25D8130B03F16F012C
:10450000C9006E3344E7B3F5AA7F25D8F30B03F156
:10451000780003F1770CC300EAE5294B18684044A2
:104520001860B1E6CAF30B0CBCF1000F7FF4ACAE1F
:10453000BD68C84448F001006860F0E61546EEE644
:104540000123536094E7B3F5AA7F23D8D30B03F17B
:104550007801C90077331BE740F25452934223D8C5
:10456000B30C03F17D0003F17C0CC300C0E5ABF19B
:10457000080BD844A8EB02084FF0000AABE605F19F
:1045800008012046009300F089F9BD68009B686827
:104590001968C4E640F254518B420BD8930C03F1D6
:1045A0007D01C9007C33F3E64FF47E737F204FF02A
:1045B0007E0C9DE54FF47E717E23E9E67B6870E713
:1045C0001490FF1F014800F097B800BF8891FF1FAB
:1045D000014800F093B800BF8891FF1F830730B5F2
:1045E00048D0541E002A3FD0CAB2034601E0013C25
:1045F0003AD303F8012B9D07F9D1032C2DD9CDB265
:1046000045EA05250F2C45EA054536D9A4F11002E7
:1046100022F00F0C03F1200EE6444FEA121C03F1C6
:10462000100242E9045542E9025510327245F8D1B0
:104630000CF1010214F00C0F03EB021204F00F0C4A
:1046400013D0ACF1040323F003030433134442F802
:10465000045B9342FBD10CF003042CB1C9B21C449F
:1046600003F8011B9C42FBD130BD64461346002C6D
:10467000F4D1F9E703461446BFE71A46A446E0E73B
:1046800038B5074D0022044608462A60FDF768FE4B
:10469000431C00D038BD2B68002BFBD0236038BDF5
:1046A0008091FF1F014B1868704700BF088EFF1FE5
:1046B00070B50D4E0D4D761BB61006D0002455F882
:1046C000043B01349847A642F9D1094E094D761BA7
:1046D00000F094FBB61006D0002455F8043B0134DA
:1046E0009847A642F9D170BD084E0000084E000060
:1046F000104E0000084E0000704700BF704700BF1A
:1047000090F800F06DE9024520F007016FF0000C11
:1047100010F0070491F820F040F049804FF00004B9
:104720006FF00700D1E9002391F840F000F1080094
:1047300082FA4CF2A4FA8CF283FA4CF3A2FA8CF3CC
:104740004BBBD1E9022382FA4CF200F10800A4FA33
:104750008CF283FA4CF3A2FA8CF3E3B9D1E9042387
:1047600082FA4CF200F10800A4FA8CF283FA4CF3BE
:10477000A2FA8CF37BB9D1E9062301F1200182FA78
:104780004CF200F10800A4FA8CF283FA4CF3A2FA7E
:104790008CF3002BC6D0002A04BF04301A4612BA8C
:1047A000B2FA82F2FDE8024500EBD2007047D1E98F
:1047B000002304F00305C4F100004FEAC50514F01E
:1047C000040F91F840F00CFA05F562EA05021CBFEF
:1047D00063EA050362464FF00004A9E7024B13B1F8
:1047E000024800F005B8704700000000A94A000028
:1047F000002301461A46184600F06AB9F8B5244F5E
:104800000C460646FFF7DEFEBB685D68C4F57E61B8
:104810000F3125F003054B1923F47F6323F00F03B9
:10482000A3F58054B4F5805F07DB00213046FFF725
:1048300027FFBB682B44984204D03046FFF7C8FEE0
:104840000020F8BD61423046FFF71AFF01300DD05D
:10485000104ABB682D1B45F001055D6013683046AA
:104860001B1B1360FFF7B4FE0120F8BD002130468A
:10487000FFF706FFBA68831A0F2BDEDD43F0010352
:104880005360054B03491B68C01A0860D5E700BF99
:10489000D488FF1F1490FF1FDC8CFF1F002961D0FC
:1048A000F8B50C460646FFF78DFE54F8042C7B4FF6
:1048B000A4F1080522F0010105EB010CB868DCF851
:1048C0000430604523F0030300F08B80D207CCF85E
:1048D000043032D454F8082CAD1A1144AA6807F1F8
:1048E000080082426AD00CEB0304D4F804E0EC68C0
:1048F000D4601EF0010FA26000F0978041F0010328
:104900006B60CCF80010B1F5007F35D27868CB0829
:104910000122490901338A40024357F833107A6073
:1049200007EBC302083AC5E9021247F83350CD60DD
:104930003046BDE8F840FFF74BBE0CEB030252686F
:10494000D00710D4194407F10800DCF8083083427E
:1049500073D0DCF80C20DA60936041F001036B60E7
:104960006950D0E7704741F00103B1F5007F44F88A
:10497000043CCCF80010C9D3B1F5206F4FEA5123A5
:1049800048D28B0903F1390003F13802C300F8184B
:10499000FB580838984259D05A6822F003028A42DC
:1049A00002D99B689842F7D1D868C5E90230856082
:1049B000DD603046BDE8F840FFF70ABE0CEB0302AD
:1049C0005268D20763D40B44DCE90212CA609160DA
:1049D00043F001026A603046EB50BDE8F840FFF753
:1049E000F7BD0B44D10707D454F8082CAD1A134473
:1049F000D5E90212CA60916043F001026A60284A58
:104A0000BD6012689A4293D8264B30461968FFF76A
:104A1000F5FE8DE7142B0AD9542B1FD80B0B03F18D
:104A20006F0003F16E02C300B1E719448DE703F193
:104A30005C0003F15B02C300A9E741F00103C7E991
:104A40000455C5E902006B60695071E779689210FE
:104A5000012404FA02F20A437A60A6E7B3F5AA7FBA
:104A600006D8CB0B03F1780003F17702C3008EE781
:104A700040F25452934206D88B0C03F17D0003F1AF
:104A80007C02C30083E74FF47E737E227FE741F010
:104A900001036B60CCF800104AE700BFD488FF1F09
:104AA000E08CFF1F4490FF1F38B5074D074C2C1BAF
:104AB000A41005D0013C55F8043D9847002CF9D1CD
:104AC000BDE8384000F0A4B900000000000000007C
:104AD0002DE9F047DFF874A00646DAF800009846A2
:104AE0000F469146FFF708FE194B1C6824B3656812
:104AF0001F2D24DC5EB96B1C0235DAF80000636000
:104B000044F82570FFF7FAFD0020BDE8F08704EBBC
:104B100085010123C1F88890D4F88821AB401A435D
:104B2000022EC4F88821C1F80881E4D1D4F88C2180
:104B30001A43C4F88C21DEE7064C1C60D7E7DAF88C
:104B40000000FFF7DBFD4FF0FF30DEE70C8EFF1FAC
:104B50008C91FF1F9091FF1F7701080F010100FF4B
:104B600077E2FE0F010300FF77E2FE0F010800FF6E
:104B700077E2FE0F010900FF77E2FE0F010400FF5C
:104B80006500000000000000690000000000000057
:104B90007700FC0F0101000077E2FE0F010000002A
:104BA0007703080F010000007704080F0200FC00E3
:104BB0007700080F0800000000000000040000005B
:104BC0007700080F080300000000FC02000000004E
:104BD0007700080F0804000000000001000000003A
:104BE0007700FC0F000000007700FD0F00000000C0
:104BF0000000FC0002000000750000000000FFFF44
:104C00000000000000000000B91F0000DD1F0000D0
:104C10006D20000069200000652000006120000078
:104C20005D200000811F00003D20000039200000B1
:104C30003120000029200000212000001120000068
:104C400001200000FD1F0000F51F0000ED1F000007
:104C5000611F0000691F0000711F0000791F000024
:104C6000C51F0000AD1F00004008FE4340A00440E7
:104C70004408FE4344A004400018FE4300C0044022
:104C80003000FE43309004403400FE433490044032
:104C90001C18FE431CC004401018FE4310C0044002
:104CA0000818FE4308C004400C18FE430CC0044022
:104CB0000C10FE430CB004401010FE4310B0044032
:104CC0001810FE4318B004401C10FE431CB00440F2
:104CD0001410FE4314B004400418FE4304C0044002
:104CE0000010FE4300B004400008FE4300A0044052
:104CF0000408FE4304A004400C08FE430CA004403A
:104D00000808FE4308A004401418FE4314C00440E1
:104D10001818FE4318C004400410FE4304B00440B9
:104D20000810FE4308B004401400FE4314900440F1
:104D30004C08FE434CA004400420FE4304D0044031
:104D40002410FE4324B004402010FE4320B0044051
:104D50002810FE4328B004402C10FE432CB0044021
:104D60000020FE4300D004404808FE4348A0044011
:104D70001000FE43109004400000000000000000FE
:104D80005D39000055390000513900004D390000EF
:104D90004939000045390000413900003D39000023
:104DA00000FFFFFF000100007488FF1F12000000D9
:104DB000000200003088FF1F4300000000030000D5
:104DC0008888FF1F00000000010309048C88FF1F72
:104DD0000000000002030904A488FF1F0000000077
:104DE00003030904BC88FF1F00000000000000004E
:104DF000000000000000000000151915F8B500BF04
:104E0000F8BC08BC9E467047DD4700003504000032
:044E1000F8B500BF32
:104E1400E00704EC00FB0F0000FBC013BFE607C073
:104E2400BFEC07C0BFEE07CFEB07ECF5EA07FCB217
:104E3400FF0E72FCB2FF0E76FCB2FF0E77FCB2FFDF
:104E44000E9EFDFCB2FF0E73624C69DD6D4C77DD86
:104E54001D4C72DD294C65DD324C75DD62FCA1FF11
:104E64000ED5EA07DFC8AFE60712ECEB070FFCB27A
:104E7400FF0E119BA793DFF6FE4C00EEE3FF118BB0
:104E8400FCA1FF0EA793DFF6EED6FF61FFFCF8FF4F
:104E94000E8F02084C0FDD0B624CFFDF11FCC408BF
:104EA4000FEFF5624CFFDF06FC04F00EEFF5C36173
:104EB400CFC262FCA1FF0EEEA7FFE5EA07EF03E510
:104EC400EA07FE0200EF9A5100FCA1FF0ED7FFFF94
:104ED400FFFFFFFFFFFFFFFFFFFFFF00084C000085
:104EE40000000000E803000000000000C52F0000DF
:104EF4002093FF1F280000001A000000400000005B
:104F04004000000001010000804D0000000000008E
:104F1400E803000000000000FFFFFFFF010A040097
:104F240009024300020100C0320904000001020228
:104F340001000524001001052401010104240206D6
:104F4400052406000107058203100040090401003E
:104F5400020A00000007050302400000070584025E
:104F6400400000001201100102000040C01683043A
:104F7400750201020301000004030904180354002C
:104F8400650065006E0073007900640075006900B7
:104F94006E006F00160355005300420020005300BA
:104FA40065007200690061006C0000000C030000E1
:104FB40000000000000000000000000000000000ED
:104FC400000000000000000000000000D488FF1F63
:104FD400D488FF1FDC88FF1FDC88FF1FE488FF1FC5
:104FE400E488FF1FEC88FF1FEC88FF1FF488FF1F75
:104FF400F488FF1FFC88FF1FFC88FF1F0489FF1F24
:105004000489FF1F0C89FF1F0C89FF1F1489FF1FD0
:105014001489FF1F1C89FF1F1C89FF1F2489FF1F80
:105024002489FF1F2C89FF1F2C89FF1F3489FF1F30
:105034003489FF1F3C89FF1F3C89FF1F4489FF1FE0
:105044004489FF1F4C89FF1F4C89FF1F5489FF1F90
:105054005489FF1F5C89FF1F5C89FF1F6489FF1F40
:105064006489FF1F6C89FF1F6C89FF1F7489FF1FF0
:105074007489FF1F7C89FF1F7C89FF1F8489FF1FA0
:105084008489FF1F8C89FF1F8C89FF1F9489FF1F50
:105094009489FF1F9C89FF1F9C89FF1FA489FF1F00
:1050A400A489FF1FAC89FF1FAC89FF1FB489FF1FB0
:1050B400B489FF1FBC89FF1FBC89FF1FC489FF1F60
:1050C400C489FF1FCC89FF1FCC89FF1FD489FF1F10
:1050D400D489FF1FDC89FF1FDC89FF1FE489FF1FC0
:1050E400E489FF1FEC89FF1FEC89FF1FF489FF1F70
:1050F400F489FF1FFC89FF1FFC89FF1F048AFF1F1F
:10510400048AFF1F0C8AFF1F0C8AFF1F148AFF1FCB
:10511400148AFF1F1C8AFF1F1C8AFF1F248AFF1F7B
:10512400248AFF1F2C8AFF1F2C8AFF1F348AFF1F2B
:10513400348AFF1F3C8AFF1F3C8AFF1F448AFF1FDB
:10514400448AFF1F4C8AFF1F4C8AFF1F548AFF1F8B
:10515400548AFF1F5C8AFF1F5C8AFF1F648AFF1F3B
:10516400648AFF1F6C8AFF1F6C8AFF1F748AFF1FEB
:10517400748AFF1F7C8AFF1F7C8AFF1F848AFF1F9B
:10518400848AFF1F8C8AFF1F8C8AFF1F948AFF1F4B
:10519400948AFF1F9C8AFF1F9C8AFF1FA48AFF1FFB
:1051A400A48AFF1FAC8AFF1FAC8AFF1FB48AFF1FAB
:1051B400B48AFF1FBC8AFF1FBC8AFF1FC48AFF1F5B
:1051C400C48AFF1FCC8AFF1FCC8AFF1FD48AFF1F0B
:1051D400D48AFF1FDC8AFF1FDC8AFF1FE48AFF1FBB
:1051E400E48AFF1FEC8AFF1FEC8AFF1FF48AFF1F6B
:1051F400F48AFF1FFC8AFF1FFC8AFF1F048BFF1F1A
:10520400048BFF1F0C8BFF1F0C8BFF1F148BFF1FC6
:10521400148BFF1F1C8BFF1F1C8BFF1F248BFF1F76
:10522400248BFF1F2C8BFF1F2C8BFF1F348BFF1F26
:10523400348BFF1F3C8BFF1F3C8BFF1F448BFF1FD6
:10524400448BFF1F4C8BFF1F4C8BFF1F548BFF1F86
:10525400548BFF1F5C8BFF1F5C8BFF1F648BFF1F36
:10526400648BFF1F6C8BFF1F6C8BFF1F748BFF1FE6
:10527400748BFF1F7C8BFF1F7C8BFF1F848BFF1F96
:10528400848BFF1F8C8BFF1F8C8BFF1F948BFF1F46
:10529400948BFF1F9C8BFF1F9C8BFF1FA48BFF1FF6
:1052A400A48BFF1FAC8BFF1FAC8BFF1FB48BFF1FA6
:1052B400B48BFF1FBC8BFF1FBC8BFF1FC48BFF1F56
:1052C400C48BFF1FCC8BFF1FCC8BFF1FD48BFF1F06
:1052D400D48BFF1FDC8BFF1FDC8BFF1FE48BFF1FB6
:1052E400E48BFF1FEC8BFF1FEC8BFF1FF48BFF1F66
:1052F400F48BFF1FFC8BFF1FFC8BFF1F048CFF1F15
:10530400048CFF1F0C8CFF1F0C8CFF1F148CFF1FC1
:10531400148CFF1F1C8CFF1F1C8CFF1F248CFF1F71
:10532400248CFF1F2C8CFF1F2C8CFF1F348CFF1F21
:10533400348CFF1F3C8CFF1F3C8CFF1F448CFF1FD1
:10534400448CFF1F4C8CFF1F4C8CFF1F548CFF1F81
:10535400548CFF1F5C8CFF1F5C8CFF1F648CFF1F31
:10536400648CFF1F6C8CFF1F6C8CFF1F748CFF1FE1
:10537400748CFF1F7C8CFF1F7C8CFF1F848CFF1F91
:10538400848CFF1F8C8CFF1F8C8CFF1F948CFF1F41
:10539400948CFF1F9C8CFF1F9C8CFF1FA48CFF1FF1
:1053A400A48CFF1FAC8CFF1FAC8CFF1FB48CFF1FA1
:1053B400B48CFF1FBC8CFF1FBC8CFF1FC48CFF1F51
:1053C400C48CFF1FCC8CFF1FCC8CFF1FFFFFFFFF83
:1053D4000000020000000000000000004890FF1FD1
:1053E400B090FF1F1891FF1F000000000000000094
:1053F40000000000000000000000000000000000A9
:105404000000000000000000000000000000000098
:105414000000000000000000000000000000000088
:105424000000000000000000000000000000000078
:105434000000000000000000000000000000000068
:105444000000000000000000000000000000000058
:105454000000000000000000000000000000000048
:105464000000000000000000000000000000000038
:1054740001000000000000000E33CDAB34126DE6D5
:10548400ECDE05000B00000000000000000000003E
:105494000000000000000000000000000000000008
:1054A40000000000000000000000000000000000F8
:1054B40000000000000000000000000000000000E8
:1054C40000000000000000000000000000000000D8
:1054D40000000000000000000000000000000000C8
:1054E40000000000000000000000000000000000B8
:1054F4000000000000000000E88CFF1F8491FF1FE3
:00000001FF
================================================
FILE: assets/hw/syscon_flasher/syscon_flasher_v2.05_teensy_3.5.hex
================================================
:10000000F8FF022099010000512300000D23000099
:100010000D2300000D2300000D2300000D23000020
:100020000D2300000D2300000D23000051230000CC
:10003000512300000D230000753F0000793F0000B0
:1000400051230000512300005123000051230000E0
:1000500051230000512300005123000051230000D0
:1000600051230000512300005123000051230000C0
:1000700051230000512300005123000051230000B0
:1000800051230000512300005123000051230000A0
:100090005123000051230000512300005123000090
:1000A0005123000051230000512300005123000080
:1000B000512300005123000051230000A52E000011
:1000C0005123000051230000512300005123000060
:1000D0005123000051230000512300005123000050
:1000E0005123000051230000512300005123000040
:1000F0005123000051230000512300005123000030
:10010000512300005123000051230000512300001F
:1001100051230000FD310000512300005123000055
:1001200051230000512300005123000051230000FF
:1001300051230000512300005123000051230000EF
:1001400051230000512300005123000051230000DF
:1001500051230000512300005123000051230000CF
:1001600051230000512300005123000051230000BF
:1001700051230000512300005123000051230000AF
:10018000512300005123000051230000512300009F
:1001900051230000512300005A4B4CF2205210B55D
:1001A000DA814DF62812DA8100BF00BF02F0D4F8E0
:1001B000554B4FF030621A63544A9A63544ADA63DB
:1001C0004FF0E0234FF47002C3F8882D514A1369B1
:1001D00013F4807303D153614FF4A85313614E4B52
:1001E0009A78110703D59A7842F008029A704B4B1F
:1001F0004B482A221A704B4BDA1C121AC11E22F0ED
:100200000302994288BF0022474901F0ABFF474BE8
:100210004748DA1C121AC11E22F00302994288BF15
:100220000022002104F042FA424943484FF4CC72C4
:1002300001F098FF414B424A802103F8011B934291
:10024000FBD14FF0E0233C4AC3F8082D3D4B8A22F6
:100250001A70A3F5805324225A70A0221A709A793A
:100260009207FCD59A79D406FCD4374B9A7902F0E0
:100270000C02082AFAD103221A7146225A719A797D
:100280009006FCD5304A93795906FCD51E4B4FF0A9
:10029000827159640921996420211170917901F0CA
:1002A0000C010C29FAD1294A5A604FF0E023284A60
:1002B0005A6100229A6107221A61264AC3F8202D4A
:1002C00062B602F0C7F8134B5B69DA0705D522481E
:1002D00002F0B4F8214B224ADA61224B1B785B060C
:1002E00009D51E4C1E4BE2699A4204D11A4802F00D
:1002F000A5F80023E36102F035F804F041FA01F0BB
:1003000029FFFEE70020054000800440823F0400F2
:100310000100002B00D0034000D0074000E0074060
:10032000F806FF1FE80DFF1F045000000413FF1F15
:10033000E80DFF1F000000000002FF1F00E400E0C6
:1003400056E400E00050064000400640C0100500A2
:10035000BFD40100000020205010896800E0034055
:10036000A5C3945A00F00740FFFFFFFFFFFFFFFF08
:10037000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10039000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1003B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1003D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1003F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:10040000FFFFFFFFFFFFFFFFFFFFFFFFDEF9FFFF23
:100410000548064B1B1AD90F01EBA301491002D066
:10042000034B03B118477047E80DFF1FE80DFF1F8E
:100430000000000008B5054B1BB105490548AFF3A6
:100440000080BDE80840FFF7E3BF00BF00000000E8
:10045000E80DFF1F0450000070B51A4C0D2082B04B
:10046000012102F059F8261D65204FF47A6501E05C
:1004700014F8010F02F0BCFB2B46013BFDD102F04A
:1004800081FCB442F4D1013DFDD10F4C00210D207F
:1004900002F042F823680093009E42F2107505E0D6
:1004A00023680193019B9B1BAB4208D802F056FCCA
:1004B0000028F5DD02F066FCC0B202B070BDEF208E
:1004C00002B070BD804C0000140EFF1F70B50121FA
:1004D0000D20644C02F020F80D20012102F01CF8E0
:1004E000261D69204FF47A6501E014F8010F02F02F
:1004F0007FFB2B46013BFDD102F044FCB442F4D11A
:10050000013DFDD100210D2002F006F802F03AFC79
:10051000C0B2002840F0A380534C0D20012101F00F
:10052000FBFF661D77204FF47A6501E014F8010F98
:1005300002F05EFB2B46013BFDD102F023FCB442EE
:10054000F4D1013DFDD100210D2001F0E5FF02F0C5
:1005500019FCC0B2002840F08280444C0D200121DB
:1005600001F0DAFF661D77204FF47A6501E014F898
:10057000010F02F03DFB2B46013BFDD102F002FCD6
:10058000B442F4D1013DFDD100210D2001F0C4FFA2
:1005900002F0F8FBC0B2002861D1354C0D200121DA
:1005A00001F0BAFF661D77204FF47A6501E014F878
:1005B000010F02F01DFB2B46013BFDD102F0E2FBD7
:1005C000B442F4D1013DFDD100210D2001F0A4FF82
:1005D00002F0D8FBC0B2002841D1264C0D200121E9
:1005E00001F09AFFA61D77204FF47A6501E014F818
:1005F000010F02F0FDFA2B46013BFDD102F0C2FBD8
:10060000B442F4D1013DFDD100210D2001F084FF61
:1006100002F0B8FBC0B210BB174C0D20012101F055
:100620007BFF661D77204FF47A6501E014F8010F17
:1006300002F0DEFA2B46013BFDD102F0A3FBA642FD
:10064000F4D1013DFDD100210D2001F065FF02F044
:1006500099FBC0B218B9BDE87040FFF7FDBEE020BD
:1006600070BD00BF884C0000904C0000984C00000A
:10067000A04C0000A84C0000584C00002DE9F041AF
:1006800082B0002701AE4FF47A644FF072083A0A44
:100690003B0C80250D2001218DF804508DF8008041
:1006A0008DF801708DF802208DF803306D4601F051
:1006B00033FF404601E015F8010F02F099FA234696
:1006C000013BFDD102F05EFBB542F4D12346013B74
:1006D000FDD100210D2001F01FFF802502E02346FF
:1006E000013BFDD102F03AFB0028F8D002F04AFBB2
:1006F000C0B203F023FB013DF4D18037B7F5002FE2
:10070000C3D1284602B0BDE8F08100BF2DE9F04317
:100710004F4D89B02B680093009C42F2107605E0A3
:100720000193019B1B1BB34200F28D8003F006FA7C
:1007300003282B68F4DD00240393CDE90444039FD0
:10074000444E0694ADF81C4006E02B680293029BD1
:10075000B268DB1B934273D204ABC4F104011819D5
:1007600003F002FA0444032CEFD99DF812009DF81F
:1007700013309DF810109DF8112003EB002302EBBD
:1007800001229BB292B201339A424FEA82274FEA8A
:10079000832949D20DF115064FF000084FF47A6411
:1007A00072213A0A3B0C80258DF810100D20012192
:1007B000CDF81480CDF818808DF81450ADF81C8059
:1007C0008DF811708DF812208DF8133001F0A4FE11
:1007D00004AD15F8010B02F00BFA2346013BFDD1E5
:1007E00002F0D0FAB542F4D12346013BFDD10021FD
:1007F0000D2001F091FE802502E02346013BFDD152
:1008000002F0ACFA0028F8D002F0BCFAC0B203F053
:1008100095FA013DF4D18037B945C1D803F08EF97E
:10082000002805DD03F04EF903F088F90028F9DC13
:1008300000210D2001F070FE002009B0BDE8F0831A
:100840000123337391E7EB2009B0BDE8F08300BFCB
:10085000140EFF1FF007FF1F2DE9F04F624D89B006
:100860002B680093009C42F2107605E00193019BF7
:100870001B1BB34200F2AA8003F060F903282B6827
:10088000F4DD00240393CDE90444039E574F0694FE
:10089000ADF81C4007E02B680293029BBA689B1BD3
:1008A000934280F09D8004ABC4F10401181903F059
:1008B0005BF90444032CEED99DF812009DF8133027
:1008C0009DF810109DF8112003EB002302EB01228C
:1008D0009BB292B201339A424FEA82264FEA832AB0
:1008E0006FD2434B434D03F108080D20012101F065
:1008F00013FE414FC6F3072BC6F3074977204FF489
:100900007A6401E017F8010F02F072F92346013B07
:10091000FDD102F037FAAF42F4D1013CFDD1002104
:100920000D2001F0F9FD02F02DFA10F0FF0352D175
:100930002F4A059392E8030004908DF8141098E86C
:100940000300ADF81C3006908DF81C100D2001211D
:100950008DF816B08DF8179001F0DEFD04AC0DF1A6
:100960001D0B4FF47A6914F8010B02F041F94B4664
:10097000013BFDD102F006FA5C45F4D14B46013B48
:10098000FDD100210D2001F0C7FD02F0FBF9C0B23E
:1009900008BBFFF761FD0346A0B903F0CFF9B9F139
:1009A0000109FCD101E003F08DF803F0C7F800283D
:1009B000F9DC00210D2006F5806601F0ADFDB245A1
:1009C00093D80023184609B0BDE8F08FEB231846F2
:1009D00009B0BDE8F08FE423184609B0BDE8F08FF8
:1009E00001233B7368E700BF140EFF1FF007FF1FD2
:1009F000B04C0000654C0000604C00002DE9F04F49
:100A0000634D89B02B680093009C42F2107605E09C
:100A10000193019B1B1BB34200F2AB8003F08EF8E5
:100A200003282B68F4DD00240393CDE90444039EDE
:100A3000584F0694ADF81C4007E02B680293029BC8
:100A4000BA689B1B934280F0988004ABC4F1040108
:100A5000181903F089F80444032CEED99DF812000C
:100A60009DF813309DF810109DF8112003EB002322
:100A700002EB01229BB292B201339A424FEA8226E4
:100A80004FEA832A71D2444B444D03F108080D20EC
:100A9000012101F041FD424FC6F3072BC6F3074980
:100AA00077204FF47A6401E017F8010F02F0A0F804
:100AB0002346013BFDD102F065F9AF42F4D1013C80
:100AC000FDD100210D2001F027FD02F05BF910F0AF
:100AD000FF0355D1304A059392E8030004908DF846
:100AE000141098E80300ADF81C3006908DF81C1027
:100AF0000D2001218DF816B08DF8179001F00CFD36
:100B000004AC0DF11D0B4FF47A6914F8010B02F0DF
:100B10006FF84B46013BFDD102F034F9A345F4D107
:100B2000B9F10109FCD100210D2001F0F5FC02F022
:100B300029F9C0B240BBFFF78FFC08B11B2815D1C3
:100B400003F0FCF84FF47A63013BFDD101E002F0C1
:100B5000B9FF02F0F3FF0028F9DC00210D2006F5B3
:100B6000806601F0D9FCB24591D8002009B0BDE8FB
:100B7000F08FEB2009B0BDE8F08F01233B736DE7E8
:100B8000E82009B0BDE8F08FE42009B0BDE8F08F9F
:100B9000140EFF1FF007FF1FB04C00006D4C00004B
:100BA000684C00002DE9F041584F0D2082B0012122
:100BB00001F0B2FC7E1D3C4677204FF47A6501E0DF
:100BC00014F8010F02F014F82B46013BFDD102F09E
:100BD000D9F8B442F4D1013DFDD100210D2001F03E
:100BE0009BFC02F0CFF810F0FF0340F08980484CE6
:100BF000ADF804300D2001218DF8063004F10C0809
:100C000001F08AFC4FF47A65772001E014F8010FB7
:100C100001F0EEFF2B46013BFDD102F0B3F8444555
:100C2000F4D1013DFDD100210D2001F075FC02F051
:100C3000A9F8C0B200285ED1FFF70EFC04460028D8
:100C40005AD102F09FF85FFA80F88DF8048002F024
:100C500099F80121C5B20D208DF805504FF47A6442
:100C600001F05AFC772001E017F8010F01F0C0FFF6
:100C70002346013BFDD102F085F8B742F4D1013C97
:100C8000FDD100210D2001F047FC02F07BF8C0B23D
:100C9000002835D11F4C0D20012101F03DFC04F14D
:100CA0000C0777204FF47A6601E014F8010F01F089
:100CB0009FFF3346013BFDD102F064F8A742F4D117
:100CC000013EFDD100210D2001F026FC02F05AF872
:100CD000C0B280B9FFF7C0FB044668B902F052F811
:100CE0000646404603F02AF8284603F027F8F0B2FB
:100CF00003F024F800E0E424204602B0BDE8F081CF
:100D0000E824204602B0BDE8F08100BF704C00002E
:100D1000C04C0000D04C00002DE9F04FA04CADF2CB
:100D2000444D00214FF47F7211A8CDE90C110E91B2
:100D30008DF83C10109103F0B9FC23680493049ED5
:100D400042F2107506E023680593059B9B1BAB429E
:100D500000F2EE8102F0F2FE0128F4DD236809932F
:100D60000025CDE90C55099E8E4F0E958DF83C500F
:100D700007E023680893089BBA689B1B934280F0A6
:100D8000E3810CABC5F10201581902F0EDFE0544F8
:100D9000012DEED99DF83030019301219DF83130BD
:100DA00002930D2001F0B8FB23680693069FDFF83D
:100DB000F481002544F620660EE023680793079B24
:100DC000DB1BB34200F2BA8102F0B8FE1FFA80F9D1
:100DD000B9F1000F40F0BB81B5F5806FEDD3724FD4
:100DE0000D20012101F098FB3C1D3D4677204FF47A
:100DF0007A6601E015F8010F01F0FAFE3346013B77
:100E0000FDD101F0BFFFA542F4D1013EFDD100218B
:100E10000D2001F081FB0DF13F050DF23F194FF45C
:100E20007A6815F8010F01F0E3FE4346013BFDD15E
:100E300001F0A8FF4D45F4D101F06CFFB8F10108B5
:100E4000FCD101F09FFFC0B2002840F0A981DFF87B
:100E500064A10D20012101F05FFB0AF10405564653
:100E600077204FF47A6801E016F8010F01F0C0FE18
:100E70004346013BFDD101F085FFAE42F4D1B8F10C
:100E80000108FCD100210D2001F046FB0DF23F26A8
:100E90004FF47A6819F8010F01F0AAFE4346013BAE
:100EA000FDD101F06FFFB145F4D101F033FFB8F18E
:100EB0000108FCD101F066FFC0B2002840F07D813E
:100EC0003A4B03931E460D20012101F025FB06F14C
:100ED0000508B14677204FF47A6601E019F8010F52
:100EE00001F086FE3346013BFDD101F04BFFC145C9
:100EF000F4D1013EFDD100210D2001F00DFB01F0E8
:100F000041FF10F0FF0040F05181019A029B8DF8E3
:100F1000350003EB02239BB29A008DF836209A0924
:100F20009B0201930CAB02939B46214B8DF837201B
:100F300093E8030040330C908DF8341093E80300DD
:100F40000E908DF83C100D2001210DF13D094FF45C
:100F50007A6601F0E1FA1BF8010B01F049FE334615
:100F6000013BFDD101F00EFFCB45F4D1013EFDD197
:100F700000210D2001F0D0FA01F004FFC0B20028DA
:100F800040F01481FFF768FA0646002840F0D1804F
:100F90000D20012101F0C0FA4FF47A6677200DE0B0
:100FA000140EFF1FF007FF1FE04C0000784C0000FC
:100FB000B04C0000E84C000017F8010F01F018FEDB
:100FC0003346013BFDD101F0DDFEA742F4D1013EE5
:100FD000FDD100210D2001F09FFA0DF23F270DF207
:100FE0003F364FF47A6417F8010F01F001FE2346F3
:100FF000013BFDD101F0C6FEB742F4D101F08AFEFB
:10100000013CFDD101F0BEFEC0B2002840F0C88016
:101010000D20012101F080FA4FF47A64772001E07D
:101020001AF8010F01F0E4FD2346013BFDD101F068
:10103000A9FEAA45F4D1013CFDD100210D2001F00B
:101040006BFA0DF23F440DF23F364FF47A6516F815
:10105000010F01F0CDFD2B46013BFDD101F092FEC9
:10106000A642F4D101F056FE013DFDD101F08AFE09
:10107000C0B2002840F0A1800D20012101F04CFAFF
:101080004FF47A64039D772001E015F8010F01F019
:10109000AFFD2346013BFDD101F074FE4545F4D17F
:1010A000013CFDD100210D2001F036FA01F06AFE6D
:1010B00010F0FF007AD1424A8DF8350092E8030023
:1010C0004032019B8DF834100C9092E8030003F538
:1010D00000731A0A0E908DF83C101B0C01210D2094
:1010E0008DF836208DF8373001F016FA029D4FF456
:1010F0007A6415F8010B01F07BFD2346013BFDD11D
:1011000001F040FE4D45F4D1013CFDD100210D2000
:1011100001F002FA01F036FEC0B2002846D1FFF716
:101120009BF9064628B901460D2001F0F5F900E0CB
:10113000EB2630460DF2444DBDE8F08FEC263046EC
:101140000DF2444DBDE8F08F01233B7322E615FA02
:1011500080F0B0F5806F1CDC1FFA80FB23680B93D6
:10116000DDF82CA0002608E023680A930A9BD8F833
:101170000820A3EB0A0393421AD2A81910ABA9EBDB
:101180000601184402F0F0FC0644B145ECD85D4677
:1011900010E6C5F580691FFA89F94FF4806BDDE729
:1011A000E12630460DF2444DBDE8F08FE626C0E75B
:1011B000012388F80C305D46FCE5E226B9E700BF64
:1011C000B04C00002DE9F04F994DADF24C4D00218F
:1011D0004FF47F7213A8CDE90E1110918DF84410D1
:1011E000129103F063FA2B680693069E42F2107484
:1011F00006E02B680793079B9B1BA34200F2B68275
:1012000002F09CFC0128F4DD2B680B930024CDE94F
:101210000E440B9E874F10948DF8444007E02B68D6
:101220000A930A9BBA689B1B934280F0AD820EAB77
:10123000C4F10201181902F097FC0444012CEED904
:101240009DF83830009301210D209DF83990DFF88A
:10125000E48101F061F92B680893089F002444F6AB
:1012600020660EE02B680993099BDB1BB34200F25A
:10127000848202F063FC1FFA80FABAF1000F40F09A
:101280008682B4F5806FEDD36B4C0D20012101F007
:1012900043F9661D77204FF47A6501E014F8010FD9
:1012A00001F0A6FC2B46013BFDD101F06BFDB442E1
:1012B000F4D1013DFDD100210D2001F02DF901F007
:1012C00061FD10F0FF0040F08C825C4D8DF83D0018
:1012D00095E80300009B0E9005F1080709EB032930
:1012E0008DF83C1097E803001FFA89F3C3F38712C7
:1012F0009E009B02F6B2019310900EAB8DF8441045
:101300000D2001218DF83E6000928DF83F20029360
:101310000DF145049A464FF47A6801F0FDF81AF889
:10132000010B01F065FC4346013BFDD101F02AFDB4
:10133000A245F4D1B8F10108FCD100210D2001F043
:10134000EBF801F01FFDC0B2002840F05282FFF719
:1013500083F8824600285DD01B2840F00982DFF820
:10136000E4B00D20012101F0D7F80BF1050A772038
:101370004FF47A6801E01BF8010F01F039FC434695
:10138000013BFDD101F0FEFCD345F4D1B8F10108D9
:10139000FCD100210D2001F0BFF801F0F3FC10F0AA
:1013A000FF0040F026828DF83D0095E803000E9086
:1013B0008DF83C1097E80300009B10908DF84410C6
:1013C0000D2001218DF83E608DF83F300DF1380A77
:1013D0004FF47A6801F0A0F81AF8010B01F008FC4C
:1013E0004346013BFDD101F0CDFCA245F4D1B8F15B
:1013F0000108FCD100210D2001F08EF801F0C2FCA3
:10140000C0B2002840F0F581FFF726F88246002898
:1014100040F0AE810A4B03931F460D20012101F0DD
:101420007BF83B469A46043777204FF47A680DE004
:10143000140EFF1FF007FF1F684C0000B04C0000A7
:10144000E04C0000604C00001AF8010F01F0D0FBE6
:101450004346013BFDD101F095FCBA45F4D1B8F10A
:101460000108FCD100210D2001F056F80DF1470BC9
:101470000DF247184FF47A6A1BF8010F01F0B8FB20
:101480005346013BFDD101F07DFCC345F4D101F091
:1014900041FCBAF1010AFCD101F074FCC0B2002891
:1014A00040F0AA81854B04930D20012101F034F80E
:1014B000824B772003F104099B464FF47A6A01E0DE
:1014C0001BF8010F01F094FB5346013BFDD101F0E5
:1014D00059FCCB45F4D1BAF1010AFCD100210D2011
:1014E00001F01AF80DF2472B4FF47A6A18F8010F41
:1014F00001F07EFB5346013BFDD101F043FCD84592
:10150000F4D101F007FCBAF1010AFCD101F03AFC78
:10151000C0B2002840F07681694B05930D2001216F
:1015200000F0FAFF664B772003F1050B98464FF465
:101530007A6A01E018F8010F01F05AFB5346013BAB
:10154000FDD101F01FFCC345F4D1BAF1010AFCD171
:1015500000210D2000F0E0FF01F014FC10F0FF006E
:1015600040F04D818DF83D0095E80300DFF854B15F
:101570000E908DF83C109BE80300009B10908DF8B6
:1015800044100D2001218DF83E608DF83F300DF1A3
:10159000380A4FF47A6600F0BFFF1AF8010B01F029
:1015A00027FB3346013BFDD101F0ECFBA245F4D112
:1015B000013EFDD100210D2000F0AEFF01F0E2FB65
:1015C000C0B2002840F01B81FEF746FF824600288B
:1015D00040F0CE800D20012100F09EFF4FF47A668E
:1015E000DDF80CA0772001E01AF8010F01F000FBF4
:1015F0003346013BFDD101F0C5FBBA45F4D1013EB4
:10160000FDD100210D2000F087FF0DF2472A0DF2D9
:1016100047374FF47A661AF8010F01F0E9FA3346BA
:10162000013BFDD101F0AEFBBA45F4D101F072FBF4
:10163000013EFDD101F0A6FBC0B2002840F0DC80E5
:101640000D20012100F068FF4FF47A66049F772097
:1016500001E017F8010F01F0CBFA3346013BFDD151
:1016600001F090FB4F45F4D1013EFDD100210D204A
:1016700000F052FF0DF247460DF2473A4FF47A67F9
:101680001AF8010F01F0B4FA3B46013BFDD101F01D
:1016900079FBB245F4D101F03DFB013FFDD101F0F2
:1016A00071FBC0B2002840F0AD800D20012100F098
:1016B00033FF4FF47A66059F772007E0E84C00007F
:1016C000784C0000F04C000017F8010F01F090FA80
:1016D0003346013BFDD101F055FB4745F4D1013EB6
:1016E000FDD100210D2000F017FF01F04BFB10F0A1
:1016F000FF0040F084808DF83D0095E80300019BD9
:101700008DF83C100E909BE8030003F500731A0A55
:1017100010908DF844101B0C01210D208DF83E20F7
:101720008DF83F3000F0F8FE029E4FF47A6516F80F
:10173000010B01F05DFA2B46013BFDD101F022FBCC
:10174000A642F4D1013DFDD100210D2000F0E4FEC0
:1017500001F018FBC0B2002851D1FEF77DFE824691
:1017600030B901460D2000F0D7FE01E04FF0EB0A42
:1017700050460DF24C4DBDE8F08F4FF0EC0A50464C
:101780000DF24C4DBDE8F08F01233B7358E514FA80
:1017900080F0B0F5806F1CDC83B201932B680D9351
:1017A0000D9E4FF0000B07E02A680C920C9AD8F8B7
:1017B0000810921B8A4217D204EB0B0012ABAAEB63
:1017C0000B01184402F0D0F98344DA45ECD8019CAF
:1017D00045E5C4F5806A4FF480631FFA8AFA0193E5
:1017E000DCE74FF0E80AC3E70123019C88F80C30DE
:1017F00035E54FF0E40ABBE74FF0E10AB8E74FF0F8
:10180000E60AB5E74FF0E20AB2E700BF2DE9F04380
:10181000594F5A4D83B04FF0000901210D20CDF8EA
:1018200000908DF8049000F077FE4FF4FA514FF4D9
:10183000FA6000F05DFC08210646012000F058FC2B
:1018400049460446052000F067FE4FF4C863013B9B
:10185000FDD101F067F8052000F0C4FE012105204C
:1018600000F05AFE052000F0BDFE4FF4E13138468D
:1018700000F08AFB6423BB60012000F0B3FE2B78EC
:10188000C5203B3B4FF47A682B7001F0B1F9434619
:10189000013BFDD12B78012001332B7001F0A8F919
:1018A0004346013BFDD10320287001F0A1F94346D6
:1018B000013BFDD12B789A20663B2B7001F098F903
:1018C0004346013BFDD1484601F092F94346013BB6
:1018D000FDD12B78142014332B7001F089F9434685
:1018E000013BFDD12B785842C0B2C31A2B7001F0D6
:1018F0007FF9B8F10108FCD101E001F043FA01F0F1
:101900002DFA0028F9DC2B78032003444FF47A6881
:101910002B7001F06DF94346013BFDD101F032FA25
:1019200005226946384600F0C7FB9DF80230062BB9
:1019300035D0102B40F0FB8006EB8606F60001D078
:10194000013EFDD10021042004EB840400F0E4FDFD
:10195000E40001D0013CFDD10121042000F0DCFDB8
:1019600001E001F00FFA01F0F9F90028F9DC40F28A
:10197000E734C8260AE000BFC407FF1F010EFF1F9F
:101980003346013BFDD1013C3FF445AF01F0E6F9A0
:101990000028F5DD01F0F6F9C0B20228F0D10520EB
:1019A00000F020FE2B7891206F3B4FF47A662B706D
:1019B00001F01EF93346013BFDD13A24012000F02D
:1019C00011FE20462C7001F013F93346013BFDD186
:1019D0002B784E2003442B7001F00AF93346013B6B
:1019E000FDD12B786F2003442B7001F001F93346B1
:1019F000013BFDD12B78742003442B7001F0F8F8E3
:101A00003346013BFDD12B78204623442B7001F057
:101A1000EFF83346013BFDD12B78552003442B7062
:101A200001F0E6F83346013BFDD12B7873200344E7
:101A30002B7001F0DDF83346013BFDD12B7865209A
:101A400003442B7001F0D4F83346013BFDD12B78D1
:101A5000642003442B7001F0CBF83346013BFDD1E9
:101A60002B78204623442B7001F0C2F83346013B0B
:101A7000FDD128780138C0B243002B7001F0B8F8CE
:101A80003346013BFDD1012000F0ACFD2B789320C3
:101A90006D3B2B7001F0ACF83346013BFDD10120CA
:101AA000284C00F09FFD04F1C3072B7814F8010FB8
:101AB00003442B7001F09CF83346013BFDD1BC423E
:101AC000F3D1012000F08EFD2B7893206D3B2B701D
:101AD00001F08EF8013EFDD101201B4C00F082FD8B
:101AE000E71D4FF47A662B7814F8010F03442B702E
:101AF00001F07EF83346013BFDD1A742F3D101202E
:101B000000F070FD942001F073F8052000F06AFDEC
:101B100001E001F037F901F021F90028F9DC0D208E
:101B2000002100F0F9FC012003B0BDE8F0832B7820
:101B3000EE20123B2B7001F05BF8B8F10108FCD1EC
:101B40000020F1E7FF06FF1FF706FF1F2DE9F04316
:101B5000012183B00D2000F0DFFCB74DB74EB84F28
:101B600001F0ECFF002800F09D8001F0ABFFC0B257
:101B70000128287010D9102800F09780202853D011
:101B8000802800F04681F02800F030813B78002B5F
:101B900000F05E812028E3D82028E1D801A353F883
:101BA00020F000BFE51D0000B91D0000B31D0000BE
:101BB000AD1D0000831D0000611B0000591D0000C9
:101BC0002F1D0000051D0000611B0000DB1C000034
:101BD000611B0000611B0000611B0000611B000015
:101BE000611B0000AB1C0000611B0000611B0000BA
:101BF000611B0000611B0000611B0000611B0000F5
:101C0000611B0000611B0000611B0000611B0000E4
:101C1000611B0000611B0000611B0000611B0000D4
:101C2000611B0000291C000001210D20854C00F0E3
:101C300073FC0D20012100F06FFC04F104097520F4
:101C40004FF47A6801E014F8010F00F0D1FF434629
:101C5000013BFDD101F096F84C45F4D1B8F10108F3
:101C6000FCD100210D2000F057FC01F08BF810F0A2
:101C7000FF0018BFE020307002F060F84FF47A6384
:101C8000013BFDD101E001F01DFF01F057FF0028ED
:101C9000F9DC00210D2000F03FFC01F04FFF00288F
:101CA0007FF463AF03B0BDE8F0833C780020307070
:101CB000002C00F0BA8002F041F84FF47A63013B47
:101CC000FDD101E001F0FEFE01F038FF0028F9DC53
:101CD00000210D2000F020FCDFE7FEF763FF3070ED
:101CE00002F02CF84FF47A63013BFDD101E001F0E2
:101CF000E9FE01F023FF0028F9DC00210D2000F0AF
:101D00000BFCCAE7FEF77AFE307002F017F84FF4CA
:101D10007A63013BFDD101E001F0D4FE01F00EFF3A
:101D20000028F9DC00210D2000F0F6FBB5E7FFF7F5
:101D300049FA307002F002F84FF47A63013BFDD1AA
:101D400001E001F0BFFE01F0F9FE0028F9DC0021FE
:101D50000D2000F0E1FBA0E7FEF7DEFF307001F0A0
:101D6000EDFF4FF47A63013BFDD101E001F0AAFEE3
:101D700001F0E4FE0028F9DC00210D2000F0CCFB8E
:101D80008BE7FEF769FD307001F0D8FF4FF47A63FE
:101D9000013BFDD101E001F095FE01F0CFFE0028EE
:101DA000F9DC00210D2000F0B7FB76E7FEF766FCBA
:101DB000D6E6FEF7ABFCD3E6012002F0ABF9224CED
:101DC000804602F0AFF901ABA3EB080323800520A6
:101DD00001F0B4FF2088000A01F0B0FF207801F084
:101DE000ADFFBDE6022001F0A9FFB9E6012002F037
:101DF00091F9154C804602F095F901ABA3EB08036D
:101E00000220238001F09AFF052001F097FF352082
:101E1000DEE700210D2000F07FFB4FF4FA7000F0A8
:101E2000E1FB0A4B1B6898479AE6FFF7EFFC30701E
:101E300008BBE12030703EE7000EFF1F0C0EFF1FB5
:101E4000040EFF1FF84C0000020EFF1F080EFF1FBC
:101E5000E02001F073FF4FF47A63013BFDD101E014
:101E600001F030FE01F06AFE0028F9DC00210D20AF
:101E700000F052FB11E7FEF729FB307010B9012387
:101E80003B7018E73C7016E72DE9F843314F324DAF
:101E9000324CDFF8D09038464FF4E13100F074F85E
:101EA0006423BB602E682E4F40F2EE2801F0C8FF7D
:101EB0002378002B40D03B78DA073DD52B68D9F842
:101EC00000209B1A0E2B37D901210D2000F04EFB6C
:101ED0000121052000F04AFB0121042000F046FB0F
:101EE0000121084600F042FB0021084600F03EFBBD
:101EF0000021052000F010FB0021012000F00CFB68
:101F00000021084600F008FB0121042000F004FB3A
:101F100001F096FF2378002BFAD03B78DB07F7D54A
:101F20002B68D9F800209B1A0E2BF1D9BDE8F84395
:101F300001210D2000F0F0BA2B6822789B1B2AB1FA
:101F4000B3F5FA6FC0D801F07BFFAFE74345FAD98C
:101F5000BAE700BFC407FF1F140EFF1F980FFF1F33
:101F6000BC0FFF1FC00FFF1F0368C9B21B681847D3
:101F70000368C9B21B6818470368C9B21B681847D1
:101F80000368C9B21B681847084B10B503EB51032F
:101F90000446B3FBF1F000F0E7FB054B1B7803B1FF
:101FA00010BD2046BDE8104001F0EEBF001C4E0EF3
:101FB000ED07FF1F08B5084600F01AFE012008BD16
:101FC00008B5084600F014FE012008BD38B50846E3
:101FD0000D4602F015FC04460146284600F012FEAC
:101FE000204638BD10B508461446114600F00AFEDA
:101FF000204610BD0846114601F032B80846114689
:1020000001F012B800F02ABF08B5084600F0C6FD7E
:10201000003818BF012008BD08B5084600F09CFD37
:10202000003818BF012008BD0846114600F012BD57
:10203000084600F059BD00BF084600F0EFBC00BFE5
:1020400000F070BC10B50648144600EB5100B0FB20
:10205000F1F000F089FB2046BDE8104000F004BC20
:10206000001C4E0E00F0D4BE00F08CBE00F076BE18
:1020700000F050BE00F05ABE70B50E4D82B02B6815
:102080000093009E044608E001F0DAFE2B680193FD
:10209000019BA2689B1B934207D2236820465B6981
:1020A00098470028F0DB02B070BD4FF0FF3002B05F
:1020B00070BD00BF140EFF1FF8B50D4691B1164656
:1020C0009AB10746002404E00134A64205F8013B1A
:1020D00006D03846FFF7D0FF031EF5DA01233B7325
:1020E0002046F8BD0C462046F8BD1446F8E700BF70
:1020F000884200DB704770B4114C2268091AEAB1BB
:10210000104B114E114D83FB023C9444D317C3EB8B
:102110002C4306FB132244F2A71C05FB03F30CFB24
:102120000233002B02DA03F10043013BB3FBF1F26F
:1021300001FB12322360104470BC7047044BF5E77A
:10214000100EFF1F5F0B4E831DF30100ECF4FFFF29
:1021500042CE0C1F08B5FFF797FEFFF7F7FC01F022
:102160006FFEFAE701B441EA000313F003036FD1F5
:10217000403A41D351F8043B40F8043B51F8043B4A
:1021800040F8043B51F8043B40F8043B51F8043B51
:1021900040F8043B51F8043B40F8043B51F8043B41
:1021A00040F8043B51F8043B40F8043B51F8043B31
:1021B00040F8043B51F8043B40F8043B51F8043B21
:1021C00040F8043B51F8043B40F8043B51F8043B11
:1021D00040F8043B51F8043B40F8043B51F8043B01
:1021E00040F8043B51F8043B40F8043B51F8043BF1
:1021F00040F8043B403ABDD2303211D351F8043B91
:1022000040F8043B51F8043B40F8043B51F8043BD0
:1022100040F8043B51F8043B40F8043B103AEDD23F
:102220000C3205D351F8043B40F8043B043AF9D290
:1022300004320AD0D2071CBF11F8013B00F8013B61
:1022400003D30B7803704B78437001BC704700BF19
:102250000C2A4AD310F0030311D0C3F10403D21A9D
:10226000DB071CBF11F8013B00F8013B07D311F855
:10227000013B00F8013B11F8013B00F8013B11F074
:1022800003033FF475AF30B4043AC91AC3F1040C28
:1022900051F8044B022B19D0032B0BD0240A51F810
:1022A000043B1D0644EA050440F8044B1C46043A6E
:1022B000F4D216E0240E51F8043B1D0244EA050452
:1022C00040F8044B1C46043AF4D20AE0240C51F8BE
:1022D000043B1D0444EA050440F8044B1C46043A40
:1022E000F4D20432B1EB0C0130BC043AA0D3013A71
:1022F00011F8013B00F8013BF9D20B7803704B78E1
:1023000043708B78837001BC704700BF08B50F4CD9
:10231000636B58030DD4636B59050FD4636B1A05B7
:1023200011D4636BDB04F3D500F012F8636B580330
:10233000F1D500F063FF636B5905EFD500F0B2FDF6
:10234000636B1A05EDD500F003F8EAE7008004405E
:1023500008B5FFF7DBFF00BF014B10221A80704762
:1023600000200540704700BF0B490A6848B108B516
:10237000EC461318ACF50050834204D20B601046B3
:1023800008BD1046704702F0F5F90C234FF0FF32FC
:102390000360104608BD00BFD807FF1FEFF313838B
:1023A000CBB9EFF31080A0B9EFF3058343B94FF435
:1023B0008070EFF311835BB1984228BF18467047D5
:1023C0000F2BF6D9054AD05CEFF31183002BF3D124
:1023D0007047184670474FF0FF307047F0E300E059
:1023E00001F1FF3C70B56546002401E07046013400
:1023F000B0FBF2FE02FB1E03092B03F130068ABF7D
:102400003733F3B2DBB2904205F8013FEED2631CE2
:102410000022CA54C8187CB162461CF8015F10F84B
:1024200001ED8CF800E0A1EB0C030232013B521AE3
:1024300023449A420570EFDB084670BD034B00222F
:1024400010215A615A6018605961704700D00340EA
:10245000704700BF4FF0E02CF0B54FF0006ECCF8A5
:1024600004E14FF0805ECCF804E14FF0005ECCF860
:1024700004E1244A24492548254C4FF0804ECCF8ED
:1024800004E1282300274EF6FF7609254FF0004E81
:10249000CCF804E183B04F608E60CB604B61CB61C0
:1024A0004B62CB624B63CB634B64D3605361D361AC
:1024B0005362D3625363D36353640D606760A66055
:1024C000E3606361256047608660C36043610560C7
:1024D00057609660D3605361156001F07DFDFFF792
:1024E000B7FF0C4C23680093009B132BFAD901F023
:1024F0003FFA23680193019BB3F5967FF9D303B0AC
:10250000F0BD00BF00900B400080034000800B40F6
:1025100000900340140EFF1F3F2818D810B4124B30
:1025200053F8302092F8804234B1012381B982F807
:1025300000315DF8044B704703EBC0035B681A6819
:1025400059B142F003025DF8044B1A6070477047BE
:1025500082F880305DF8044B704722F002025DF88B
:10256000044B1A60704700BF684D00003F2820D818
:102570001B4A02EBC00301295B680FD004291DD060
:1025800052F83000002280F8802299B1022922D02E
:1025900003290DD14FF481721A60704752F8300050
:1025A0004FF4A27280F880121A601A6822F020029A
:1025B0001A6070474FF480721A60704752F83010FA
:1025C0004FF4A272012081F880021A601A6842F06A
:1025D00020021A60704740F203121A60704700BF71
:1025E000684D00002DE9F843044672B6204F4FF0C5
:1025F000E02293693D68D2F8042D62B6520102D5FB
:10260000322B88BF01350CB9BDE8F883DFF8649040
:10261000DFF86480A9EB0303A8FB03234FF47A726D
:1026200002FB05F505EB93154FF0E02672B6B16994
:102630003A68D6F804CD62B6A9EB0103A8FB030300
:102640001CF0806FC5EB93134FF47A7002D03229DF
:1026500088BF013200FB0233B3F57A7F04D3013C1B
:10266000D2D005F57A75E1E701F0EAFBDEE700BFBD
:10267000140EFF1FBFD40100898888882DE9F84F08
:10268000314B1B6807460BB101221A70DFF8D0905E
:10269000DFF8D08099F80040D8F800302B4D013495
:1026A0009C422B782AD303F0FF0A002B3ED15446DC
:1026B000274EDFF8A8B005E033791B0623D42B782A
:1026C000A3420AD1FFF76AFE4028F5DDFF28F6DDB8
:1026D00001F0B6FB2B78A342F4D03F2C29D91D4B37
:1026E000403C1B68FFB21F551B4A194B012111705A
:1026F000BC2289F800A0DA70BDE8F88F9C425FFA2E
:1027000084FAD5D0E9E72B78D8F800105A1C8A4211
:10271000DBB203D23F2A10D8D1B201E000210A4631
:102720001BF80230DBB2F3712970C8E74FF0000AE2
:1027300054460A4BFFB21F55D6E7D1B2054A3F3B7C
:102740001268D35CDBB2EEE7680EFF1FB80EFF1F06
:1027500000A00640B40EFF1F6C0EFF1F700EFF1F7F
:10276000B00EFF1FE807FF1F324A3349536B70B4A6
:1027700043F48063314D5363314E324C3278002341
:102780002B700B70304923700B703049152A0B7079
:102790002ED01B2A48D0002A41D02D4B1B78052B68
:1027A0002ED01A2B36D0012B2FD02028294B2A4C83
:1027B00038BF2020C0F3443C83F800C0C0F3471C5E
:1027C00000F01F0083F801C00422987202209A7062
:1027D000D87488205A754FF0E021187440223C20AC
:1027E000D870E2774FF0004370BCC1F800317047F9
:1027F0001A4B40F213329A61154B1B78052BD0D13E
:10280000164B4FF45172DA61CFE7154B4FF451720A
:102810005A64CAE7134B4FF451729A63C5E7104BE1
:1028200040F213321A64B8E70E4B40F21332DA6307
:10283000B3E700BF00800440640EFF1F5C0EFF1F63
:10284000650EFF1FB00EFF1FB80EFF1F6C0EFF1F9F
:10285000EC07FF1F00A0064000E400E000C00440B9
:1028600000A0044000900440294B9B7800F0030234
:1028700003F0EC031343410700F00F02244948BF63
:1028800043F01003042A8B7003D18B7943F040038B
:102890008B711F4B5B79C20603F0EF031C4A48BFE4
:1028A00043F0100353719379194A03F0EF0310F0CA
:1028B000200C18BF43F010039371C30506D553785D
:1028C0001178DBB241F020011170537010F40070E8
:1028D00017D00F490F488B780F4A43F0A0038B7035
:1028E00003780E4902EBC30240F24633506840F2CF
:1028F0004732BCF1000F08BF1346094A03600A6063
:102900007047064B064A1968914208BF1860704725
:1029100000A00640EC07FF1F684D0000680EFF1F77
:10292000D400D442324B5B6B5B0531D510B5314CD2
:10293000237823B101F084FA2378002BFAD12E4AB0
:102940002E4B4FF0E0204FF000440021C0F88041B2
:10295000D1701B78152B3CD01B2B1FD04BB3284BB1
:102960001B7803F07F03052B3DD01A2B2CD0012BB5
:102970000FD0244B204A244C2448196892F804C0F4
:10298000D27900232370037009B101230B7010BDAD
:1029900070471F4B40F203125A64EAE71D4B40F2A6
:1029A0000312DA63164B1B7803F07F03052BDCD18F
:1029B00019E0174B40F203121A64114B1B7803F015
:1029C0007F03052BD1D10EE0124B40F203129A6324
:1029D000CFE7114B40F203129A61094B1B7803F0C9
:1029E0007F03052BC1D10C4B40F20312DA61C0E723
:1029F000008004406C0EFF1F00A00640650EFF1F04
:102A0000EC07FF1F180EFF1F5C0EFF1F640EFF1F59
:102A100000A004400090044000C004400A4A38B5B9
:102A20000546137803F0FF04002BFAD10121284654
:102A3000FFF79CFD21462846FFF76EFD034A044B35
:102A400052F835201A6038BD6C0EFF1F684D00002B
:102A5000680EFF1F09B140F080001E4A13788342C0
:102A60001CD010B41C4C646B640513D503F07F03B9
:102A7000052B2BD01A2B25D0012B1FD0002900F0BD
:102A80007F0314BF60214421052B12D01A2B0BD0D9
:102A9000012B04D010705DF8044B704770470F4B4A
:102AA00041F440715964F5E70D4B41F4407199636D
:102AB000F0E70C4B41F44071D961EBE7074B002480
:102AC0005C64DBE7064B00249C63D7E7054B0024DE
:102AD000DC61D3E7EC07FF1F0080044000A0044046
:102AE0000090044000C00440164A137883420ED080
:102AF0001549496B490509D5152B1FD01B2B19D03A
:102B0000ABB115280ED01B2807D008B11070704744
:102B10000E4B40F213311964F8E70D4B40F21331BC
:102B2000D963F3E70B4B40F213319961EEE70749A4
:102B30000B64E6E7064B0021D963E2E7054B002171
:102B40009961DEE7650EFF1F0080044000A004408D
:102B50000090044000C004400D4B5B6B13F4806395
:102B600013D03F2803D90B4B0020186070470A4B45
:102B700010B5084C53F8303023600121FFF7F6FC04
:102B8000236800221A70012010BD1846704700BF4C
:102B900000800440180EFF1F684D0000104B5B6B57
:102BA00013F4806312D012280BD0142810D10D4BCF
:102BB00040F202325A610C4A537B012003435373A3
:102BC00070470A4B40F20232DA60F4E71846704769
:102BD000054A537B03F0FE0300205373704700BF88
:102BE0000080044000C0044000A0064000A0044053
:102BF000034B5B6B5B0501D5FFF740BD704700BF22
:102C0000008004402DE9F84F394B5B6B5A053CD5E9
:102C1000384B1B680BB101221A704718B84231D2E9
:102C2000354EDFF8EC80354CDFF8E09000F1010A1A
:102C300013E003F0FF0B53B34FF0000B5D46304A37
:102C40001AF8013C535552462E490123BA420B70E3
:102C50000AF1010A86F800B014D23578D8F80030AD
:102C60000135AB422378E4D9AB425FFA85FB0FD044
:102C70003F2DE4D9244B1AF8012C1B68403D5A55CE
:102C80005246E1E7214BBC22DA70BDE8F88F5D4681
:102C90006FF0430389F8033006E099F804301B060F
:102CA0000BD42378AB42E3D1FFF778FB4028F4DD67
:102CB000FF28F6DD01F0C4F8F3E72378D8F8001018
:102CC0005A1C9142DBB203D93F2A0AD8D1B201E0A3
:102CD00000210A460A4B9B5CDBB289F80730217061
:102CE000DFE7D1B2084A3F3B1268D35CDBB2F4E7BE
:102CF00000800440680EFF1FB00EFF1FB80EFF1FBC
:102D0000700EFF1F6C0EFF1FB40EFF1F00A00640C9
:102D1000E807FF1F10B5044C237823B101F090F8A9
:102D20002378002BFAD110BD6C0EFF1F084A094B07
:102D300011781A789142C8B2D3B202D2013B181A64
:102D40007047054A1268013A1344181A704700BFC9
:102D5000B00EFF1FB80EFF1FE807FF1F064A074B04
:102D600011781A789142D0B23CBF054A1268CBB2B2
:102D700038BF9B18181A70475C0EFF1F640EFF1FA8
:102D8000E407FF1F1B4B1C491A780B789A422ED080
:102D900010B55FFA82FE194AD8B21268431C9A42F3
:102DA00019D93F2B1BD85FFA83FC1548C05CC0B211
:102DB00081F800C01349096861B19E453CBF724467
:102DC000D31A114A126828BFAEEB03039A4201D30B
:102DD00000230B7010BD4FF0000C6346E5E70B4C71
:102DE0003F382468205C5FFA83FCC0B2E0E74FF014
:102DF000FF3070475C0EFF1F640EFF1FE407FF1FCC
:102E00001C0EFF1F180EFF1FE007FF1F600EFF1FA5
:102E10000D4A0E4B11781B789942DAB211D00C4949
:102E20000968531C994207D93F2B06D9094B3F3AF1
:102E30001B68985CC0B270470023074AD05CC0B2E0
:102E400070474FF0FF3070475C0EFF1F640EFF1F8E
:102E5000E407FF1F600EFF1F1C0EFF1F0C4B5B6B78
:102E60005B0514D50B4B0C48DA78402102F0CB02FD
:102E7000DA705974DA78094942F03402DA70084A93
:102E800003781268DBB20B700AB10023137070472D
:102E90000080044000A00640640EFF1F5C0EFF1F70
:102EA000180EFF1F2DE9F041504C237913F0300F1D
:102EB00047D072B6A37D03F0FF01002B58D062B655
:102EC000DFF85C814A4898F800304A4A057816686D
:102ED000494F5FFA83FC494BEDB2D3F800E008E0BC
:102EE0001DB14FF0000C07F80C304A1E12F0FF0124
:102EF00012D0E3790CF101029642DBB2F0D995428F
:102F0000ACF13F00F1D03F2A6DD994464A1E12F031
:102F1000FF010EF80030ECD15FFA8CF388F8003036
:102F2000374B196869B1AC453CBF721B02EB0C030F
:102F3000344A126828BFACEB05039A429CBF0123B8
:102F40000B702A48C3781E06DDB216D46A060DD56A
:102F5000264B1B795B0609D52B4B2C491B6800229D
:102F60000A7003B11A70214B3C22DA70BDE8F0817F
:102F70004023E279637462B6E3E703791C06E5D582
:102F8000234B244ADFF89CE01C7816689EF800303A
:102F9000214A224FD2F800C0E4B2DBB207E0037945
:102FA0000023FA5CD2B2C271027D072A11D8A34273
:102FB00003F101010ED08E42F1D93F290279A3F12C
:102FC0003F0301D80B46ECE71CF803200B46D2B2B6
:102FD000E9E7DCB2054B8EF800401A79110644BFD0
:102FE0007C22DA70B2E794467DE700BF00A006407D
:102FF000640EFF1FE407FF1F1C0EFF1F600EFF1F64
:10300000180EFF1FDC07FF1F680EFF1F6C0EFF1F4F
:10301000B00EFF1FE807FF1FB40EFF1F700EFF1F4B
:103020005C0EFF1FB80EFF1F094B10B4186068B18B
:1030300001F14004074B084801F11A021A60074BDE
:10304000046028315DF8044B196070474024F1E7B3
:10305000600EFF1FE007FF1FE407FF1FDC07FF1FD5
:10306000054B186018B1054B403119607047034B90
:1030700040211960704700BFB40EFF1FE807FF1F13
:10308000704700BF431E032B16D872B60B4951F888
:10309000230078B130B40A4CB0F800C034F81320E3
:1030A000456841F82350A2EB0C0224F8132062B6C5
:1030B00030BC704762B67047002070474C0FFF1F4E
:1030C0009C0FFF1F013803280BD872B6074B53F82B
:1030D000203043B100205B680130002BFBD162B689
:1030E0007047002070471846F9E700BF740FFF1FB4
:1030F00010B472B61A4A1B4C042312F8011B0907BC
:1031000043F0010C05D554F8331069B154F83C1064
:10311000C9B10433142BF0D162B6134B00221A70DC
:103120005DF8044B00F0A6BC0F4904EBC302083065
:1031300050600A780D4844F83300013A0A7062B6CC
:103140005DF8044B7047084A094904EBCC0308308A
:103150005860137844F83C10013B137062B6EFE7F7
:10316000E84F00000000FF1FA40FFF1F8800400071
:10317000C8004000421E032A0ED81C4B400140F0FC
:10318000100010B4034472B6194CA05C03281DD87B
:10319000DFE800F01416031970470520A05413F05F
:1031A000080F088814BFC8228822083142EA00426A
:1031B00059601A6062B65DF8044B70470320EDE772
:1031C00008330220EAE708330420E7E7094B53F805
:1031D000220038B1084B53F82200416043F8221016
:1031E00062B6E8E743F82210034BF7E70000FF1F41
:1031F000940FFF1F740FFF1F840FFF1F2DE9F04F67
:10320000DFF80CA3DFF80CB385B03DE0B04D9E08AD
:1032100005EBC607013A796813F00803D4B2A1F1AF
:10322000080040F0B88055F836204FEA124C120CD6
:1032300021F808CC00F0A78021F8063C41F8043CB6
:10324000A44B53F82420002A00F00182A24B53F82B
:103250002420506043F82400A04B33F814209444F9
:1032600023F814C000F0E6FB002800F0E98117F015
:10327000080F9B4B00F1080018BF5B46786045F8CB
:10328000363008238AF880309AF880305907DCB24B
:103290001BD5944B1B78ABB193490A7802F0FF031E
:1032A0002AB1013BDBB20B70002B00F046838F4943
:1032B0000A7802F0FF032AB1013BDBB20B70002B4E
:1032C00000F0EB8104238AF8803014F0080200F04B
:1032D000CC819AF89020D3B2120997D1DFF8F091FF
:1032E0009B0809EBC30459F833006468C0F38300FA
:1032F00009287CD00FD80138012808D87C4A1588C5
:1033000042F22100854200F0FB8149F833B00123ED
:103310008AF89430B5E70D28F9D1D4E90007754D46
:1033200049F833B0724E744CC9F8102083B240F2A1
:10333000816CC9F818202A6063454FF00102C6E984
:103340000007227000F2FF80B3F5D06F80F0CB82CF
:10335000B3F5817F00F0268240F2DE8040F2023237
:1033600093427BD107F07F07042F00F20881020C03
:1033700040F00581614911F8273043F0020301F85C
:103380002730134670E017F0080F554B18BF5B4607
:1033900045F8363075E700F06DFB5949594A51F848
:1033A0002430002B00F05781586841F82400115D4B
:1033B00003F108007860032905D8DFE801F0120F57
:1033C0001502042111551A8817F0080F14BFC823DD
:1033D000882343EA024345F8363052E7022111556B
:1033E000F1E703211155EEE705211155EBE7414DBA
:1033F0002A683AB34449404C0F88444894F800E0A6
:103400000678402F3B4628BF4023BEF1000F8EF0C8
:10341000010E84F800E046F0020486F00106067012
:1034200009EBC400426014BFC820882040EA034072
:103430001A44FB1A9BB249F834000B80002B00F0B1
:1034400036812A602A4B1A88B2F5A06F7FF45FAFED
:103450009A788AF8982000225A7058E7B3F5A06F3E
:1034600040F08D8000221346B6F806C027489445E8
:1034700028BF944667460278402F28BF402742F075
:10348000020E3E0409EBCE0846F0C806C8F8043028
:1034900049F83E6000263B442670BCEB070782F0EB
:1034A0000106067040F01181BCF13F0F4FF001059D
:1034B00009D946F00206027009EBC6022570536076
:1034C000882349F8363001238AF894301FE700BF7B
:1034D0000000FF1F4C0FFF1F5C0FFF1F9C0FFF1F03
:1034E00088004000980FFF1F990FFF1FC40FFF1F98
:1034F0006C0FFF1F400FFF1F3D0FFF1FC020074035
:10350000740FFF1F940FFF1F3E0FFF1F3C0FFF1F85
:1035100000200740C8004000802B00F08B81822BE8
:103520002DD107F07F07042F29D8A74A0023138045
:10353000A64B13F827309F0740F1FC81012313703D
:10354000A14B022290E742F2210C6345BBD01DD96A
:1035500042F2212293420DD1BFB2002F82D19C4B67
:103560001A689C4B1A609C4BC0F3074000221870ED
:10357000134679E742F2213293423FF473AF0F23AF
:103580008AF8C03001238AF89430C0E6B3F5086F9A
:1035900000F04A81B3F5106FF1D1904BC0F30740B2
:1035A0000425187059F835301A0606D40135142D43
:1035B0000CD059F835301A06F8D509EBC50301359A
:1035C0005868083800F056FA142DF2D1844A854B19
:1035D0000292854A0192854E854ADFF8488203941B
:1035E000009200251C4656F8047B2FB138467F68B0
:1035F00000F040FA002FF9D1009BD8F8007043F892
:10360000045B46F8045C00932FB138467F6800F0F5
:1036100031FA002FF9D1029B48F8045B43F8045BB0
:103620000293019B23F8025B01932378023B032B57
:1036300000F20981DFE813F03F0104013F010401BA
:103640006C4A45F8360013780133137019E643F8D5
:103650002400674BFEE5115D022926D07FF611AEEE
:1036600003291DD1012313550BE6E0076ED4210673
:1036700021D4A20708D5604B93F888200221D2B24A
:1036800083F8882083F88010E30603D55A4B102274
:1036900083F8802005B0BDE8F08F00F0ADFB11E6A7
:1036A00017F0080F14BF032302231355E9E53F2F3A
:1036B00098BF0022C5E6504B80220D2183F8C01030
:1036C00083F88020A207DFD5D5E746F00206027016
:1036D000402F09EBC6003A4628BF40224360100441
:1036E000134440F088000121BA1A49F836002170CD
:1036F00055D02B60414B1A8001238AF8943006E69E
:1037000092885AB93E4AE51D14F8011B02F8011FC0
:10371000AC42F9D13B4A1268862A3CD03A4C3B482D
:1037200025780278002D85F00105257042F002040D
:1037300082F00102027009EBC4024FF000005060F9
:1037400014BFC822882249F83420DEE52A4B2F48CE
:103750002F49304C022583F8945002702E480C609B
:103760002E4D48608C600D24CD60FF200A618A6177
:1037700083F8C04001219F2483F8880083F88000EB
:1037800083F8982083F88C0083F8844083F89410A1
:1037900005B0BDE8F08F224A0F201070BEE73F2F22
:1037A000A7D890E607F07F07042F3FF6E8AE000C9D
:1037B0007FF4E5AE054A12F8273023F0020302F841
:1037C0002730002213464FE6440FFF1FC02007405A
:1037D000140EFF1FC00FFF1FBC0FFF1F980FFF1F0E
:1037E000840FFF1F940FFF1F9C0FFF1F4C0FFF1F25
:1037F0005C0FFF1FA40FFF1F002007403E0FFF1F9D
:10380000B30FFF1FB40FFF1F3D0FFF1F3C0FFF1F24
:103810000000FF1F88004000BC0EFF1FFC0EFF1FB2
:10382000990FFF1F740FFF1F484B49491B780B70FE
:103830000B4619E6464A00231380454B022213E645
:103840004FF001032370434BB34204F101047FF4B2
:10385000CAAE414E039CDFF81481404F0023337001
:10386000042518F8013B3E4AAB541B0725D445F00C
:10387000020145F0030204350023142D49F83130CC
:1038800049F83230EDD1374F25783A7842F00200CE
:1038900009EBC00C85F00106CCF80430002D4DD1A9
:1038A000882382F0010226703A7049F830300123F3
:1038B0008AF894302BE52570C5E700F0BBF80028A6
:1038C00032D009EBC5030830586049F8357000F074
:1038D000B1F808B345F0010309EBC30208305060AA
:1038E00049F833B0C3E7204A5368002B3FF447AE92
:1038F000000CBFB204E013690C32002B3FF43FAE62
:1039000011888142F7D15188B942F4D1000A0328C5
:103910000CBF1A781289A7E533780133337045F06C
:10392000010349F83300A2E7337849F83500013341
:103930003370CCE7064B022296E500BE2670C82302
:1039400082F001063E7049F83030BCE5980FFF1F49
:10395000440FFF1F5C0FFF1FA40FFF1F88004000D4
:10396000C02007403C0FFF1F944F0000E84F0000AD
:1039700010B500F097FB00231E4A194642F8331099
:1039800002EBC3000133142B4160F7D11A481B4CE2
:10399000436B43F480234363D4F80008184B40F092
:1039A0004070C4F80008C2F3072CC2F30744120E9B
:1039B00083F89CC083F8B04083F8B420114AFF20FC
:1039C0004FF0010C83F8800083F88800187483F8A6
:1039D00094C011700C4983F884C0702081F83500C0
:1039E0004FF0E0214FF400101023C1F804011372CE
:1039F00010BD00BF0000FF1F0080044000D0004049
:103A0000002007400021074000E400E000F0F6B885
:103A100000F07CB800F056B800F090B800F0C0B9E3
:103A200000F09AB90846114600F004B9084600F0C3
:103A300085B900BF72B60D490B68B3FA83F00B2845
:103A400010DC4FF00042C24023EA02030B6062B672
:103A5000074A00EBC000C10002EBC0000023535036
:103A60004360704762B60020704700BF0008FF1F28
:103A70009803FF1F0E4BC31AB3F5587F10D20D4A9F
:103A8000127872B972B60C4A0C49A2FB032308687B
:103A90004FF000421B0922FA03F303430B6062B6A6
:103AA0007047074A1278002AECD0FFF721BB00BF0D
:103AB0009803FF1FA40FFF1F398EE3380008FF1F74
:103AC000980FFF1F38B50F4C206878B143880288E3
:103AD000C11801339A420D7A02D94380284638BD75
:103AE000FFF7C8FF00232360284638BD064B1B782C
:103AF0002BB10320FFF7C6FA20600028E6D14FF073
:103B0000FF35EBE7A80FFF1F980FFF1F10B5094CFB
:103B1000206818B143881844007A10BD064B1B7802
:103B20002BB10320FFF7AEFA20600028F2D14FF04E
:103B3000FF3010BDA80FFF1F980FFF1F084B094A49
:103B40001B6810B594881BB11A885B88D31A1C4473
:103B50000CB1204610BD00F073F9204610BD00BF27
:103B6000A80FFF1F9C0FFF1F2DE9F84F0D460029DE
:103B70003ED04FF00008DFF880901E4E0746C24648
:103B800099F80030E3B1346814B322886388A2EB5B
:103B9000030BAB4528BFAB4604F1080138465A4633
:103BA0001944FEF7DFFA638822885B449BB29A428D
:103BB00063805F44D844A5EB0B0511D9002DDFD1FC
:103BC0004046BDE8F88F0288002ADFD1FFF752FF98
:103BD0000320FFF757FA044630600028F3D1EFE7DF
:103BE0002046FFF747FFC6F800A0002DC8D1E7E741
:103BF0000846E6E7A80FFF1F980FFF1F0B4B1B7827
:103C00009BB110B50A4C206848B1FFF733FF002381
:103C100003202360FFF736FA30B1FFF72BFF0320B4
:103C2000FFF730FA0028F8D110BD7047980FFF1F3A
:103C3000A80FFF1F2DE9F04FDFF8F49083B00122A9
:103C400089F80020019179B3374FDFF8E880019DB2
:103C5000364EDFF8E4A083463868A8B3B0F802E037
:103C6000CEF1400CAC4528BFAC460EEB0C04002254
:103C7000A4B23270A5EB0C05448000F10802BCF13F
:103C8000000F0AD00EF1FF3E7244DC441BF8014BDA
:103C900002F8014FDC45F9D144883F2C0BD80522AE
:103CA0008AF80020002DD7D10198002389F8003030
:103CB00003B0BDE8F08F4022028001460420FFF7E8
:103CC00059FA00223A60EAE798F8002022B34DF250
:103CD000E90408E0013C18D03278B2B900F0B0F83D
:103CE00098F80020C2B10420FFF7ECF90728F1D8BA
:103CF0004FF0010389F80030FFF79CFE3860002880
:103D0000ACD1013C89F80000E6D101234FF0FF302F
:103D1000337003B0BDE8F08F00234FF0FF3089F817
:103D2000003003B0BDE8F08FB00FFF1FAC0FFF1FD6
:103D3000AD0FFF1F980FFF1FC40FFF1F00B583B00B
:103D4000034601210DF107008DF80730FFF772FFE0
:103D500003B05DF804FB00BF38B50E4D0E4C28686B
:103D60000123237028B140880023C0F14000237054
:103D700038BD0A4B1B7813B90020207038BD0420D1
:103D8000FFF7A0F90728F7D8FFF754FE28600028AE
:103D9000E9D1F1E7B00FFF1FAD0FFF1F980FFF1F15
:103DA000F8B5114B1B788BB1104E114D34680127BB
:103DB0002F7064B10F4B00271F706388238021464A
:103DC0000420FFF7D7F9376000232B70F8BDFFF709
:103DD00031FE084B014620B104201C70FFF7CAF9E0
:103DE000F2E71F70F0E700BF980FFF1FB00FFF1F33
:103DF000AD0FFF1FC40FFF1F38B50E4B1B7853B913
:103E00000D4C216841B103F0FF054B880B80042065
:103E1000FFF7B0F9256038BDFFF70CFE014620B171
:103E2000BDE838400420FFF7A5B9044B01221A7001
:103E300038BD00BFAD0FFF1FB00FFF1FC40FFF1F26
:103E40002DE9F843324E337863B1324F3A784AB9AC
:103E50000122D9073A7043D49A0726D400225B077F
:103E60003A7001D4BDE8F8832B4B1A68002AF9D0C8
:103E7000EFF30582002AF5D1EFF3108572B61868CA
:103E800000283AD0254C2178002936D142691A60A1
:103E900001232370002A37D0916105B962B600254D
:103EA0008368457798472570DCE7DFF87C8098F8D1
:103EB0000020002AD2D00025DFF870902B4659F858
:103EC0002340236820461B690135984708B12369C0
:103ED000984798F80020EBB29A42F0D83378BDE7C3
:103EE000FFF72CFE68B90E4B1B780BB93378B3E79C
:103EF000337803F0FE033370AEE7002DB2D162B623
:103F0000B0E700F0CDF8EEE7064B1A60C5E700BF5A
:103F10000408FF1FC50FFF1FC80FFF1FD40FFF1F8F
:103F2000904F0000D80FFF1FF40FFF1FDC0FFF1F83
:103F300070B5EFF3108272B60C4C206880B10C4E55
:103F400000254369236073B19D6102B962B683683D
:103F500045779847EFF3108272B620680028F0D1B9
:103F600002B962B670BD3360EFE700BFD00FFF1F2C
:103F7000CC0FFF1FFFF7DCBF024A13680133136049
:103F8000704700BF140EFF1F70B4104E104D3478F0
:103F9000D4B1621ED2B2291D2B4601EB820101E091
:103FA0008B4205D053F8042B8242F9D170BC704784
:103FB000631CDBB2074A3370137845F8240043F0E2
:103FC0000203137070BC70470123F3E7F40FFF1F67
:103FD000DC0FFF1F0408FF1F2A4B2B4A6020E12142
:103FE0001870597013782948082B34D00A2B20D028
:103FF0000C2B274B0CBF35215D2112228160C26042
:104000009960DA60234B21491B78214ACBB1012307
:104010000B621362204B1D491B781D4A012B13D9DB
:10402000042B1BD884234B6253621C4B01221A7051
:104030007047174B392113228160C2609960DA60A2
:10404000E0E70B621362E5E780234B625362134B98
:1040500001221A7070470E4B2121ECE7082B06D87D
:1040600085234B6253620D4B01221A707047102B4F
:1040700094BF862387234B625362084B01221A7038
:10408000704700BF004007400508FF1F00B0034015
:1040900000B00B40F50FFF1F0608FF1FF60FFF1FB4
:1040A000704700BF10B584B072B6164A1649516009
:1040B000702080231070137013781B06FCD5D06815
:1040C00062B6124B124C984238BF00EB800001A937
:1040D00038BF40000A22FEF783F901A920460023D9
:1040E00011F8012B01333AB10A2B20F8022FF7D136
:1040F0001623237004B010BD5B00DBB2237004B044
:1041000010BD00BF000002400000074180969800EB
:104110009408FF1F024B0146186800F00BB800BF5F
:10412000E00DFF1F024B0146186800F037BC00BFCE
:10413000E00DFF1F2DE9F04F01F10B06162E83B0A5
:10414000044624D8102900F2BA8000F0A3FA102601
:1041500018220220B54F3A44A2F1080153688B425D
:1041600000F0BA805A68D96822F003021A449D68A8
:10417000E9608D60516841F001012046516003F112
:10418000080500F08DFA284603B0BDE8F08F36F040
:10419000070600F19480B14200F2918000F07AFAB3
:1041A000B6F5FC7FC0F09A81730A00F08F80042B73
:1041B00000F26F81B30903F1390003F1380CC30039
:1041C0009A4F3B44A3F108055B689D4206D10CE081
:1041D000002980F22781DB689D4206D05A6822F0D0
:1041E0000302911B0F29F3DD60463D69DFF850C2E1
:1041F00065457CD06A6822F00302931B0F2B00F305
:104200007B81002BC7E904CC80F26C81B2F5007F82
:1042100080F01A81D308796801334FEA521E0122D7
:1042200002FA0EF20A4357F833E0C5F808E007EB4C
:10423000C3010839E9607A6047F83350CEF80C5072
:10424000831001219940914257D8114206D120F0A4
:1042500003004900114200F10400FAD007EBC00945
:104260004D468646D5F80C80454508D11DE1002B0A
:1042700080F22481D8F80C80454500F01681D8F8EA
:10428000042022F00302931B0F2BF0DD2046D8E917
:10429000025408EB060146F00106C8F80460EC6021
:1042A000A56043F00104C7E90411C1E902CC4C60E8
:1042B00048F8023000F0F4F908F1080502E00C2398
:1042C00023600025284603B0BDE8F08F4FF400734B
:1042D00040204FF03F0C73E7D3689A4208BF02308A
:1042E0007FF440AF3D69DFF858C1654582D17A68F7
:1042F0008310012199409142A7D9BD686B6823F0D2
:1043000003094E4503D8A9EB06030F2B7ADCDFF82F
:1043100034B1474BDBF800201B680132334405EB16
:10432000090A00F0338103F580530F3323F47F68CB
:1043300028F00F084146204600F00AFA411C0246C8
:1043400000F0F380824500F2EE803A4B1968414458
:104350001960084600F04E81DBF80010019301312E
:104360001BBFA2EB0A010918CBF80020196012F05C
:10437000070B00F01781CBF108010A44CBF58051FF
:1043800090440831A1EB0801C1F30B0A51462046C5
:10439000009200F0DDF9421CDDE9002300F04F81BE
:1043A000801A00EB0A081968BA6048F0010051440D
:1043B000BD425060196000F02981B9F10F0F40F241
:1043C00027816868A9F10C0C2CF0070C00F00100A3
:1043D00040EA0C0068604FF0050E05EB0C00BCF1E4
:1043E0000F0FC0E901EE00F2328150681546124B02
:1043F0001A688A4238BF1960104B1A688A4238BF5F
:10440000196094E0AA1943F0010346F001066E60BA
:104410002046BA60536000F043F90835284603B0DF
:10442000BDE8F08FD9681A44A1E600BFAC08FF1FB1
:104430002810FF1FF80FFF1F2010FF1F2410FF1F61
:10444000B408FF1FB40CFF1FB2F5206F4FEA5223D0
:1044500063D3142B00F2B78003F15C01C9005B3316
:1044600007EB010E7958AEF1080E8E4500F09180F1
:104470004B6823F00303934202D989688E45F7D134
:10448000D1F80CE07A68C5E9021ECEF80850CD607C
:10449000D6E6142B59D9542B00F29D80330B03F12F
:1044A0006F0003F16E0CC3008AE60EF1010E1EF0E0
:1044B000030F05F108057FF4D5AE51E042444546AF
:1044C0005368D8F80C1043F00103536055F8083FC7
:1044D0002046D9608B6000F0E3F8F3E6F00806F1BF
:1044E000080237E62A442046536843F0010353602C
:1044F000083500F0D5F8E5E6A919204646F0010692
:1045000043F001046E60C7E90411C1E902CC4C60BC
:10451000AB5000F0C5F80835D4E6930903F1390132
:10452000C90038339CE7BD425FD0BD68686820F0A1
:1045300003084645A8EB060302D80F2B3FF762AFEE
:10454000204600F0ADF80025BCE603F15C0003F165
:104550005B0CC30034E659F808394B4540F09680AF
:1045600010F0030F00F1FF30F5D17B6823EA01035F
:104570007B60490099423FF6C0AE19B9BDE64900DB
:104580000EF1040E1942FAD0704667E603F11008E6
:10459000D0E69A104FF001087B6808FA02F21A433D
:1045A0007A6070E702EB08014942C1F30B0A5146F9
:1045B0002046009200F0CCF8431CDDE900237FF494
:1045C000EFAEDA46EFE6542B25D8130B03F16F015B
:1045D000C9006E3344E7B3F5AA7F25D8F30B03F186
:1045E000780003F1770CC300EAE5294B18684044D2
:1045F0001860B1E6CAF30B0CBCF1000F7FF4ACAE4F
:10460000BD68C84448F001006860F0E61546EEE673
:104610000123536094E7B3F5AA7F23D8D30B03F1AA
:104620007801C90077331BE740F25452934223D8F4
:10463000B30C03F17D0003F17C0CC300C0E5ABF1CA
:10464000080BD844A8EB02084FF0000AABE605F1CE
:1046500008012046009300F0A1F9BD68009B68683E
:104660001968C4E640F254518B420BD8930C03F105
:104670007D01C9007C33F3E64FF47E737F204FF059
:104680007E0C9DE54FF47E717E23E9E67B6870E742
:10469000F80FFF1F014800F097B800BF6C11FF1F13
:1046A000014800F093B800BF6C11FF1F830730B5BD
:1046B00048D0541E002A3FD0CAB2034601E0013C54
:1046C0003AD303F8012B9D07F9D1032C2DD9CDB294
:1046D00045EA05250F2C45EA054536D9A4F1100217
:1046E00022F00F0C03F1200EE6444FEA121C03F1F6
:1046F000100242E9045542E9025510327245F8D1E0
:104700000CF1010214F00C0F03EB021204F00F0C79
:1047100013D0ACF1040323F003030433134442F831
:10472000045B9342FBD10CF003042CB1C9B21C44CE
:1047300003F8011B9C42FBD130BD64461346002C9C
:10474000F4D1F9E703461446BFE71A46A446E0E76A
:1047500038B5074D0022044608462A60FDF704FEDE
:10476000431C00D038BD2B68002BFBD0236038BD24
:104770006411FF1F014B1868704700BFE00DFF1F59
:1047800070B50D4E0D4D761BB61006D0002455F8B1
:10479000043B01349847A642F9D1094E094D761BD6
:1047A00000F024FCB61006D0002455F8043B013478
:1047B0009847A642F9D170BDF84F0000F84F0000AD
:1047C00000500000F84F0000704700BF704700BF66
:1047D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
:1047E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
:1047F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
:1048000090F800F06DE9024520F007016FF0000C10
:1048100010F0070491F820F040F049804FF00004B8
:104820006FF00700D1E9002391F840F000F1080093
:1048300082FA4CF2A4FA8CF283FA4CF3A2FA8CF3CB
:104840004BBBD1E9022382FA4CF200F10800A4FA32
:104850008CF283FA4CF3A2FA8CF3E3B9D1E9042386
:1048600082FA4CF200F10800A4FA8CF283FA4CF3BD
:10487000A2FA8CF37BB9D1E9062301F1200182FA77
:104880004CF200F10800A4FA8CF283FA4CF3A2FA7D
:104890008CF3002BC6D0002A04BF04301A4612BA8B
:1048A000B2FA82F2FDE8024500EBD2007047D1E98E
:1048B000002304F00305C4F100004FEAC50514F01D
:1048C000040F91F840F00CFA05F562EA05021CBFEE
:1048D00063EA050362464FF00004A9E7024B13B1F7
:1048E000024800F005B8704700000000A94B000026
:1048F000002301461A46184600F06AB9F8B5244F5D
:104900000C460646FFF7C6FEBB685D68C4F57E61CF
:104910000F3125F003054B1923F47F6323F00F03B8
:10492000A3F58054B4F5805F07DB00213046FFF724
:104930000FFFBB682B44984204D03046FFF7B0FE0F
:104940000020F8BD61423046FFF702FF01300DD074
:10495000104ABB682D1B45F001055D6013683046A9
:104960001B1B1360FFF79CFE0120F8BD00213046A1
:10497000FFF7EEFEBA68831A0F2BDEDD43F001036A
:104980005360054B03491B68C01A0860D5E700BF98
:10499000AC08FF1FF80FFF1FB40CFF1F002961D0E8
:1049A000F8B50C460646FFF775FE54F8042C7B4F0D
:1049B000A4F1080522F0010105EB010CB868DCF850
:1049C0000430604523F0030300F08B80D207CCF85D
:1049D000043032D454F8082CAD1A1144AA6807F1F7
:1049E000080082426AD00CEB0304D4F804E0EC68BF
:1049F000D4601EF0010FA26000F0978041F0010327
:104A00006B60CCF80010B1F5007F35D27868CB0828
:104A10000122490901338A40024357F833107A6072
:104A200007EBC302083AC5E9021247F83350CD60DC
:104A30003046BDE8F840FFF733BE0CEB0302526886
:104A4000D00710D4194407F10800DCF8083083427D
:104A500073D0DCF80C20DA60936041F001036B60E6
:104A60006950D0E7704741F00103B1F5007F44F889
:104A7000043CCCF80010C9D3B1F5206F4FEA5123A4
:104A800048D28B0903F1390003F13802C300F8184A
:104A9000FB580838984259D05A6822F003028A42DB
:104AA00002D99B689842F7D1D868C5E90230856081
:104AB000DD603046BDE8F840FFF7F2BD0CEB0302C5
:104AC0005268D20763D40B44DCE90212CA609160D9
:104AD00043F001026A603046EB50BDE8F840FFF752
:104AE000DFBD0B44D10707D454F8082CAD1A13448A
:104AF000D5E90212CA60916043F001026A60284A57
:104B0000BD6012689A4293D8264B30461968FFF769
:104B1000F5FE8DE7142B0AD9542B1FD80B0B03F18C
:104B20006F0003F16E02C300B1E719448DE703F192
:104B30005C0003F15B02C300A9E741F00103C7E990
:104B40000455C5E902006B60695071E779689210FD
:104B5000012404FA02F20A437A60A6E7B3F5AA7FB9
:104B600006D8CB0B03F1780003F17702C3008EE780
:104B700040F25452934206D88B0C03F17D0003F1AE
:104B80007C02C30083E74FF47E737E227FE741F00F
:104B900001036B60CCF800104AE700BFAC08FF1FB0
:104BA000B80CFF1F2810FF1F38B5074D074C2C1BF2
:104BB000A41005D0013C55F8043D9847002CF9D1CC
:104BC000BDE8384000F01CBA000000000000000002
:104BD0002DE9F047DFF87CA00646DAF80000984699
:104BE0000F469146FFF7F0FD184B1C6824B365682B
:104BF0001F2D24DC5EB96B1C0235DAF800006360FF
:104C000044F82570FFF7E2FD0020BDE8F08704EBD3
:104C100085010123C1F88890D4F88821AB401A435C
:104C2000022EC4F88821C1F80881E4D1D4F88C217F
:104C30001A43C4F88C21DEE7054C1C60D7E7DAF88C
:104C40000000FFF7C3FD4FF0FF30DEE77011FF1FDC
:104C50007411FF1FE40DFF1F7701080F010100FF12
:104C600077E2FE0F010300FF77E2FE0F010800FF6D
:104C700077E2FE0F010900FF77E2FE0F010400FF5B
:104C80006500000000000000690000000000000056
:104C90007700FC0F0101000077E2FE0F0100000029
:104CA0007703080F010000007704080F0200FC00E2
:104CB0007700080F0800000000000000040000005A
:104CC0007700080F080300000000FC02000000004D
:104CD0007700080F08040000000000010000000039
:104CE0007700FC0F000000007700FD0F00000000BF
:104CF0000000FC0002000000750000000000FFFF43
:104D00000000000000000000C11F0000E51F0000BF
:104D100075200000712000006D2000006920000057
:104D200065200000891F0000452000004120000090
:104D30003920000031200000292000001920000047
:104D40000920000005200000FD1F0000F51F0000E5
:104D5000691F0000711F0000791F0000811F000003
:104D6000CD1F0000B51F00004008FE4340A00440D6
:104D70004408FE4344A004400018FE4300C0044021
:104D80003000FE43309004403400FE433490044031
:104D90001C18FE431CC004401018FE4310C0044001
:104DA0000818FE4308C004400C18FE430CC0044021
:104DB0000C10FE430CB004401010FE4310B0044031
:104DC0001810FE4318B004401C10FE431CB00440F1
:104DD0001410FE4314B004400418FE4304C0044001
:104DE0000010FE4300B004400008FE4300A0044051
:104DF0000408FE4304A004400C08FE430CA0044039
:104E00000808FE4308A004401418FE4314C00440E0
:104E10001818FE4318C004400410FE4304B00440B8
:104E20000810FE4308B004406820FE4368D00440E8
:104E30001400FE43149004403800FE4338900440B0
:104E40003C00FE433C9004404000FE434090044040
:104E50004808FE4348A004404C08FE434CA00440D0
:104E60002808FE4328A004402C08FE432CA0044040
:104E70006020FE4360D004406420FE4364D00440C0
:104E80002010FE4320B004402410FE4324B0044010
:104E90002810FE4328B004402C10FE432CB00440E0
:104EA0004400FE43449004407000FE437090044070
:104EB0007400FE43749004406800FE436890044010
:104EC0005008FE4350A004405808FE4358A0044038
:104ED0005C08FE435CA004405408FE4354A0044018
:104EE0002018FE4320C004402418FE4324C0044080
:104EF0001008FE4310A004401408FE4314A0044010
:104F00003818FE4338C004403418FE4334C004400F
:104F10003018FE4330C004403C18FE433CC00440FF
:104F20002C18FE432CC004402820FE4328D0044007
:104F30002C20FE432CD004400020FE4300D004402F
:104F40000420FE4304D004400820FE4308D004405F
:104F50000C20FE430CD004401020FE4310D004402F
:104F60001420FE4314D004400000000000000000A4
:104F70002D3A0000253A0000213A00001D3A0000B9
:104F8000193A0000153A0000113A00000D3A0000ED
:104F900000FFFFFF000100004C08FF1F120000008F
:104FA000000200000808FF1F43000000000300008B
:104FB0006008FF1F00000000010309046408FF1FD0
:104FC00000000000020309047C08FF1F000000002D
:104FD000030309049408FF1F000000000000000004
:104FE000000000000000000000151915F8B500BF12
:104FF000F8BC08BC9E467047DD4800003504000040
:04500000F8B500BF40
:10500400E00704EC00FB0F0000FBC013BFE607C081
:10501400BFEC07C0BFEE07CFEB07ECF5EA07FCB225
:10502400FF0E72FCB2FF0E76FCB2FF0E77FCB2FFED
:105034000E9EFDFCB2FF0E73624C69DD6D4C77DD94
:105044001D4C72DD294C65DD324C75DD62FCA1FF1F
:105054000ED5EA07DFC8AFE60712ECEB070FFCB288
:10506400FF0E119BA793DFF6FE4C00EEE3FF118BBE
:10507400FCA1FF0EA793DFF6EED6FF61FFFCF8FF5D
:105084000E8F02084C0FDD0B624CFFDF11FCC408CD
:105094000FEFF5624CFFDF06FC04F00EEFF5C36181
:1050A400CFC262FCA1FF0EEEA7FFE5EA07EF03E51E
:1050B400EA07FE0200EF9A5100FCA1FF0ED7FFFFA2
:1050C400FFFFFFFFFFFFFFFFFFFFFF00084D000092
:1050D40000000000E8030000000000008130000030
:1050E4000413FF1F280000001A0000004000000005
:1050F4004000000001010000704F000000000000AB
:10510400E803000000000000FFFFFFFF010A0400A5
:1051140009024300020100C0320904000001020236
:1051240001000524001001052401010104240206E4
:10513400052406000107058203100040090401004C
:10514400020A00000007050302400000070584026C
:10515400400000001201100102000040C016830448
:105164007602010203010000040309041803540039
:10517400650065006E0073007900640075006900C5
:105184006E006F00160355005300420020005300C8
:1051940065007200690061006C0000000C030000EF
:1051A40000000000000000000000000000000000FB
:1051B400000000000000000000000000AC08FF1F19
:1051C400AC08FF1FB408FF1FB408FF1FBC08FF1F73
:1051D400BC08FF1FC408FF1FC408FF1FCC08FF1F23
:1051E400CC08FF1FD408FF1FD408FF1FDC08FF1FD3
:1051F400DC08FF1FE408FF1FE408FF1FEC08FF1F83
:10520400EC08FF1FF408FF1FF408FF1FFC08FF1F32
:10521400FC08FF1F0409FF1F0409FF1F0C09FF1FDF
:105224000C09FF1F1409FF1F1409FF1F1C09FF1F8E
:105234001C09FF1F2409FF1F2409FF1F2C09FF1F3E
:105244002C09FF1F3409FF1F3409FF1F3C09FF1FEE
:105254003C09FF1F4409FF1F4409FF1F4C09FF1F9E
:105264004C09FF1F5409FF1F5409FF1F5C09FF1F4E
:105274005C09FF1F6409FF1F6409FF1F6C09FF1FFE
:105284006C09FF1F7409FF1F7409FF1F7C09FF1FAE
:105294007C09FF1F8409FF1F8409FF1F8C09FF1F5E
:1052A4008C09FF1F9409FF1F9409FF1F9C09FF1F0E
:1052B4009C09FF1FA409FF1FA409FF1FAC09FF1FBE
:1052C400AC09FF1FB409FF1FB409FF1FBC09FF1F6E
:1052D400BC09FF1FC409FF1FC409FF1FCC09FF1F1E
:1052E400CC09FF1FD409FF1FD409FF1FDC09FF1FCE
:1052F400DC09FF1FE409FF1FE409FF1FEC09FF1F7E
:10530400EC09FF1FF409FF1FF409FF1FFC09FF1F2D
:10531400FC09FF1F040AFF1F040AFF1F0C0AFF1FDA
:105324000C0AFF1F140AFF1F140AFF1F1C0AFF1F89
:105334001C0AFF1F240AFF1F240AFF1F2C0AFF1F39
:105344002C0AFF1F340AFF1F340AFF1F3C0AFF1FE9
:105354003C0AFF1F440AFF1F440AFF1F4C0AFF1F99
:105364004C0AFF1F540AFF1F540AFF1F5C0AFF1F49
:105374005C0AFF1F640AFF1F640AFF1F6C0AFF1FF9
:105384006C0AFF1F740AFF1F740AFF1F7C0AFF1FA9
:105394007C0AFF1F840AFF1F840AFF1F8C0AFF1F59
:1053A4008C0AFF1F940AFF1F940AFF1F9C0AFF1F09
:1053B4009C0AFF1FA40AFF1FA40AFF1FAC0AFF1FB9
:1053C400AC0AFF1FB40AFF1FB40AFF1FBC0AFF1F69
:1053D400BC0AFF1FC40AFF1FC40AFF1FCC0AFF1F19
:1053E400CC0AFF1FD40AFF1FD40AFF1FDC0AFF1FC9
:1053F400DC0AFF1FE40AFF1FE40AFF1FEC0AFF1F79
:10540400EC0AFF1FF40AFF1FF40AFF1FFC0AFF1F28
:10541400FC0AFF1F040BFF1F040BFF1F0C0BFF1FD5
:105424000C0BFF1F140BFF1F140BFF1F1C0BFF1F84
:105434001C0BFF1F240BFF1F240BFF1F2C0BFF1F34
:105444002C0BFF1F340BFF1F340BFF1F3C0BFF1FE4
:105454003C0BFF1F440BFF1F440BFF1F4C0BFF1F94
:105464004C0BFF1F540BFF1F540BFF1F5C0BFF1F44
:105474005C0BFF1F640BFF1F640BFF1F6C0BFF1FF4
:105484006C0BFF1F740BFF1F740BFF1F7C0BFF1FA4
:105494007C0BFF1F840BFF1F840BFF1F8C0BFF1F54
:1054A4008C0BFF1F940BFF1F940BFF1F9C0BFF1F04
:1054B4009C0BFF1FA40BFF1FA40BFF1FAC0BFF1FB4
:1054C400AC0BFF1FB40BFF1FB40BFF1FBC0BFF1F64
:1054D400BC0BFF1FC40BFF1FC40BFF1FCC0BFF1F14
:1054E400CC0BFF1FD40BFF1FD40BFF1FDC0BFF1FC4
:1054F400DC0BFF1FE40BFF1FE40BFF1FEC0BFF1F74
:10550400EC0BFF1FF40BFF1FF40BFF1FFC0BFF1F23
:10551400FC0BFF1F040CFF1F040CFF1F0C0CFF1FD0
:105524000C0CFF1F140CFF1F140CFF1F1C0CFF1F7F
:105534001C0CFF1F240CFF1F240CFF1F2C0CFF1F2F
:105544002C0CFF1F340CFF1F340CFF1F3C0CFF1FDF
:105554003C0CFF1F440CFF1F440CFF1F4C0CFF1F8F
:105564004C0CFF1F540CFF1F540CFF1F5C0CFF1F3F
:105574005C0CFF1F640CFF1F640CFF1F6C0CFF1FEF
:105584006C0CFF1F740CFF1F740CFF1F7C0CFF1F9F
:105594007C0CFF1F840CFF1F840CFF1F8C0CFF1F4F
:1055A4008C0CFF1F940CFF1F940CFF1F9C0CFF1FFF
:1055B4009C0CFF1FA40CFF1FA40CFF1FFFFFFFFF89
:1055C4000000020000000000000000002C10FF1F7B
:1055D4009410FF1FFC10FF1F0000000000000000DB
:1055E40000000000000000000000000000000000B7
:1055F40000000000000000000000000000000000A7
:105604000000000000000000000000000000000096
:105614000000000000000000000000000000000086
:105624000000000000000000000000000000000076
:105634000000000000000000000000000000000066
:105644000000000000000000000000000000000056
:105654000000000000000000000000000000000046
:1056640001000000000000000E33CDAB34126DE6E3
:10567400ECDE05000B00000000000000000000004C
:105684000000000000000000000000000000000016
:105694000000000000000000000000000000000006
:1056A40000000000000000000000000000000000F6
:1056B40000000000000000000000000000000000E6
:1056C40000000000000000000000000000000000D6
:1056D40000000000000000000000000000000000C6
:1056E4000000000000000000C00CFF1F6811FF1F35
:00000001FF
================================================
FILE: assets/hw/syscon_flasher/syscon_flasher_v2.05_teensy_3.6.hex
================================================
:1000000000000320D1010000512300000D23000057
:100010000D2300000D2300000D2300000D23000020
:100020000D2300000D2300000D23000051230000CC
:10003000512300000D230000194000001D40000066
:1000400051230000512300005123000051230000E0
:1000500051230000512300005123000051230000D0
:1000600051230000512300005123000051230000C0
:1000700051230000512300005123000051230000B0
:1000800051230000512300005123000051230000A0
:100090005123000051230000512300005123000090
:1000A0005123000051230000512300005123000080
:1000B000512300005123000051230000352F000080
:1000C0005123000051230000512300005123000060
:1000D0005123000051230000512300005123000050
:1000E0005123000051230000512300005123000040
:1000F0005123000051230000512300005123000030
:10010000512300005123000051230000512300001F
:10011000512300008D3200005123000051230000C4
:1001200051230000512300005123000051230000FF
:1001300051230000512300005123000051230000EF
:1001400051230000512300005123000051230000DF
:1001500051230000512300005123000051230000CF
:1001600051230000512300005123000051230000BF
:1001700051230000512300005123000051230000AF
:10018000512300005123000051230000512300009F
:10019000512300005123000051230000512300008F
:1001A000512300005123000051230000512300007F
:1001B000512300005123000051230000512300006F
:1001C000512300005123000051230000512300005F
:1001D0005F4B4CF2205210B5DA814DF62812DA81CD
:1001E00000BF00BF02F0B8F85A4B4FF030621A63FC
:1001F000594A9A63594ADA634FF0E0234FF4700288
:10020000C3F8882D03F5E823554A1A60554B9A78B0
:10021000110703D59A7842F008029A70524B53485E
:10022000AA221A70524BDA1C121AC11E22F00302C3
:10023000994288BF00224F4901F094FF4E4B4F482E
:10024000DA1C121AC11E22F00302994288BF002252
:10025000002104F081FA4A494A484FF4E87201F05B
:1002600081FF494B494A802103F8011B9342FBD18E
:100270004FF0E023434AC3F8082D454B8A221A70F9
:10028000A3F5805324225A70A0221A709A799207FB
:10029000FCD59A79D406FCD43E4A937903F00C033A
:1002A000082BFAD1304B60225A70DA78802AFCD1C0
:1002B000384B01221A715D225A719A799006FCD549
:1002C0009A795106FCD5234A33495164002191643F
:1002D000202119702F498B7903F00C030C2BFAD1D4
:1002E0002E4B53602E4A136913F4807303D153616C
:1002F0004FF4A85313614FF0E0232A4A5A610022B9
:100300009A6107221A61284AC3F8202D62B602F0CA
:10031000CDF8234B5B69DA0705D5244802F0BAF81B
:10032000234B244ADA61244B1B785B0609D5204C09
:10033000204BE2699A4204D11C4802F0ABF800233A
:10034000E36102F00FF804F071FA01F003FFFEE739
:100350000020054000800440823F04000100002B83
:100360000300008500D0074000E007403007FF1F72
:10037000200EFF1F845000003C13FF1F200EFF1FA4
:10038000000000000002FF1F00E400E064E400E061
:10039000005006400040064000000602C010070062
:1003A00000D003401FBF0200000020200210896817
:1003B00000E00340A5C3945A00F00740FFFFFFFF91
:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1003D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1003F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:10040000FFFFFFFFFFFFFFFFFFFFFFFFDEF9FFFF23
:100410000548064B1B1AD90F01EBA301491002D066
:10042000034B03B118477047200EFF1F200EFF1F1C
:100430000000000008B5054B1BB105490548AFF3A6
:100440000080BDE80840FFF7E3BF00BF00000000E8
:10045000200EFF1F8450000070B51A4C0D2082B092
:10046000012102F09FF8261D652041F2707501E020
:1004700014F8010F02F004FC2B46013BFDD102F001
:10048000C9FCB442F4D1013DFDD10F4C00210D2037
:1004900002F088F823680093009E42F2107505E090
:1004A00023680193019B9B1BAB4208D802F09EFC82
:1004B0000028F5DD02F0AEFCC0B202B070BDEF2046
:1004C00002B070BD004D00004C0EFF1F70B5012141
:1004D0000D20644C02F066F80D20012102F062F854
:1004E000261D692041F2707501E014F8010F02F039
:1004F000C7FB2B46013BFDD102F08CFCB442F4D18A
:10050000013DFDD100210D2002F04CF802F082FCEB
:10051000C0B2002840F0A380534C0D20012102F00E
:1005200041F8661D772041F2707501E014F8010F63
:1005300002F0A6FB2B46013BFDD102F06BFCB4425E
:10054000F4D1013DFDD100210D2002F02BF802F085
:1005500061FCC0B2002840F08280444C0D20012193
:1005600002F020F8661D772041F2707501E014F862
:10057000010F02F085FB2B46013BFDD102F04AFC46
:10058000B442F4D1013DFDD100210D2002F00AF862
:1005900002F040FCC0B2002861D1354C0D20012191
:1005A00002F000F8661D772041F2707501E014F842
:1005B000010F02F065FB2B46013BFDD102F02AFC46
:1005C000B442F4D1013DFDD100210D2001F0EAFF3C
:1005D00002F020FCC0B2002841D1264C0D200121A0
:1005E00001F0E0FFA61D772041F2707501E014F8DC
:1005F000010F02F045FB2B46013BFDD102F00AFC46
:10060000B442F4D1013DFDD100210D2001F0CAFF1B
:1006100002F000FCC0B210BB174C0D20012101F00C
:10062000C1FF661D772041F2707501E014F8010FDB
:1006300002F026FB2B46013BFDD102F0EBFBA6426C
:10064000F4D1013DFDD100210D2001F0ABFF02F0FE
:10065000E1FBC0B218B9BDE87040FFF7FDBEE02075
:1006600070BD00BF084D0000104D0000184D000087
:10067000204D0000284D0000D84C00002DE9F0412D
:1006800082B0002701AE41F270744FF072083A0A4E
:100690003B0C80250D2001218DF804508DF8008041
:1006A0008DF801708DF802208DF803306D4601F051
:1006B00079FF404601E015F8010F02F0E1FA234608
:1006C000013BFDD102F0A6FBB542F4D12346013B2C
:1006D000FDD100210D2001F065FF802502E02346B9
:1006E000013BFDD102F082FB0028F8D002F092FB22
:1006F000C0B203F075FB013DF4D18037B7F5002F90
:10070000C3D1284602B0BDE8F08100BF2DE9F04317
:100710004F4D89B02B680093009C42F2107605E0A3
:100720000193019B1B1BB34200F28D8003F056FA2C
:1007300003282B68F4DD00240393CDE90444039FD0
:10074000444E0694ADF81C4006E02B680293029BD1
:10075000B268DB1B934273D204ABC4F104011819D5
:1007600003F052FA0444032CEFD99DF812009DF8CF
:1007700013309DF810109DF8112003EB002302EBBD
:1007800001229BB292B201339A424FEA82274FEA8A
:10079000832949D20DF115064FF0000841F270741B
:1007A00072213A0A3B0C80258DF810100D20012192
:1007B000CDF81480CDF818808DF81450ADF81C8059
:1007C0008DF811708DF812208DF8133001F0EAFECB
:1007D00004AD15F8010B02F053FA2346013BFDD19D
:1007E00002F018FBB542F4D12346013BFDD10021B4
:1007F0000D2001F0D7FE802502E02346013BFDD10C
:1008000002F0F4FA0028F8D002F004FBC0B203F0C2
:10081000E7FA013DF4D18037B945C1D803F0DEF9DC
:10082000002805DD03F09EF903F0D8F90028F9DC73
:1008300000210D2001F0B6FE002009B0BDE8F083D4
:100840000123337391E7EB2009B0BDE8F08300BFCB
:100850004C0EFF1F2808FF1F2DE9F04F624D89B095
:100860002B680093009C42F2107605E00193019BF7
:100870001B1BB34200F2AA8003F0B0F903282B68D7
:10088000F4DD00240393CDE90444039E574F0694FE
:10089000ADF81C4007E02B680293029BBA689B1BD3
:1008A000934280F09D8004ABC4F10401181903F059
:1008B000ABF90444032CEED99DF812009DF81330D7
:1008C0009DF810109DF8112003EB002302EB01228C
:1008D0009BB292B201339A424FEA82264FEA832AB0
:1008E0006FD2434B434D03F108080D20012101F065
:1008F00059FE414FC6F3072BC6F30749772041F253
:10090000707401E017F8010F02F0BAF92346013BB9
:10091000FDD102F07FFAAF42F4D1013CFDD10021BC
:100920000D2001F03FFE02F075FA10F0FF0352D1E6
:100930002F4A059392E8030004908DF8141098E86C
:100940000300ADF81C3006908DF81C100D2001211D
:100950008DF816B08DF8179001F024FE04AC0DF15F
:100960001D0B41F2707914F8010B02F089F94B4626
:10097000013BFDD102F04EFA5C45F4D14B46013B00
:10098000FDD100210D2001F00DFE02F043FAC0B2AE
:1009900008BBFFF761FD0346A0B903F021FAB9F1E6
:1009A0000109FCD101E003F0DDF803F017F900289C
:1009B000F9DC00210D2006F5806601F0F3FDB2455B
:1009C00093D80023184609B0BDE8F08FEB231846F2
:1009D00009B0BDE8F08FE423184609B0BDE8F08FF8
:1009E00001233B7368E700BF4C0EFF1F2808FF1F61
:1009F000304D0000E54C0000E04C00002DE9F04FC8
:100A0000634D89B02B680093009C42F2107605E09C
:100A10000193019B1B1BB34200F2AB8003F0DEF895
:100A200003282B68F4DD00240393CDE90444039EDE
:100A3000584F0694ADF81C4007E02B680293029BC8
:100A4000BA689B1B934280F0988004ABC4F1040108
:100A5000181903F0D9F80444032CEED99DF81200BC
:100A60009DF813309DF810109DF8112003EB002322
:100A700002EB01229BB292B201339A424FEA8226E4
:100A80004FEA832A71D2444B444D03F108080D20EC
:100A9000012101F087FD424FC6F3072BC6F307493A
:100AA000772041F2707401E017F8010F02F0E8F8C6
:100AB0002346013BFDD102F0ADF9AF42F4D1013C38
:100AC000FDD100210D2001F06DFD02F0A3F910F021
:100AD000FF0355D1304A059392E8030004908DF846
:100AE000141098E80300ADF81C3006908DF81C1027
:100AF0000D2001218DF816B08DF8179001F052FDF0
:100B000004AC0DF11D0B41F2707914F8010B02F0E9
:100B1000B7F84B46013BFDD102F07CF9A345F4D177
:100B2000B9F10109FCD100210D2001F03BFD02F0DB
:100B300071F9C0B240BBFFF78FFC08B11B2815D17B
:100B400003F04EF941F27073013BFDD101E003F077
:100B500009F803F043F80028F9DC00210D2006F520
:100B6000806601F01FFDB24591D8002009B0BDE8B4
:100B7000F08FEB2009B0BDE8F08F01233B736DE7E8
:100B8000E82009B0BDE8F08FE42009B0BDE8F08F9F
:100B90004C0EFF1F2808FF1F304D0000ED4C0000D9
:100BA000E84C00002DE9F041584F0D2082B00121A2
:100BB00001F0F8FC7E1D3C46772041F2707501E0A3
:100BC00014F8010F02F05CF82B46013BFDD102F056
:100BD00021F9B442F4D1013DFDD100210D2001F0F5
:100BE000E1FC02F017F910F0FF0340F08980484C57
:100BF000ADF804300D2001218DF8063004F10C0809
:100C000001F0D0FC41F27075772001E014F8010F7B
:100C100002F036F82B46013BFDD102F0FBF84445CB
:100C2000F4D1013DFDD100210D2001F0BBFC02F00B
:100C3000F1F8C0B200285ED1FFF70EFC0446002890
:100C40005AD102F0E7F85FFA80F88DF8048002F0DC
:100C5000E1F80121C5B20D208DF8055041F2707404
:100C600001F0A0FC772001E017F8010F02F008F86E
:100C70002346013BFDD102F0CDF8B742F4D1013C4F
:100C8000FDD100210D2001F08DFC02F0C3F8C0B2AF
:100C9000002835D11F4C0D20012101F083FC04F107
:100CA0000C07772041F2707601E014F8010F01F093
:100CB000E7FF3346013BFDD102F0ACF8A742F4D187
:100CC000013EFDD100210D2001F06CFC02F0A2F8E4
:100CD000C0B280B9FFF7C0FB044668B902F09AF8C9
:100CE0000646404603F07CF8284603F079F8F0B257
:100CF00003F076F800E0E424204602B0BDE8F0817D
:100D0000E824204602B0BDE8F08100BFF04C0000AE
:100D1000404D0000504D00002DE9F04FA04CADF2C9
:100D2000444D00214FF47F7211A8CDE90C110E91B2
:100D30008DF83C10109103F00FFD23680493049E7E
:100D400042F2107506E023680593059B9B1BAB429E
:100D500000F2EE8102F042FF0128F4DD23680993DE
:100D60000025CDE90C55099E8E4F0E958DF83C500F
:100D700007E023680893089BBA689B1B934280F0A6
:100D8000E3810CABC5F10201581902F03DFF0544A7
:100D9000012DEED99DF83030019301219DF83130BD
:100DA00002930D2001F0FEFB23680693069FDFF8F7
:100DB000F481002544F620660EE023680793079B24
:100DC000DB1BB34200F2BA8102F008FF1FFA80F980
:100DD000B9F1000F40F0BB81B5F5806FEDD3724FD4
:100DE0000D20012101F0DEFB3C1D3D46772041F244
:100DF000707601E015F8010F01F042FF3346013B28
:100E0000FDD102F007F8A542F4D1013EFDD1002149
:100E10000D2001F0C7FB0DF13F050DF23F1941F226
:100E2000707815F8010F01F02BFF4346013BFDD10F
:100E300001F0F0FF4D45F4D101F0B4FFB8F1010825
:100E4000FCD101F0E7FFC0B2002840F0A981DFF833
:100E500064A10D20012101F0A5FB0AF1040556460D
:100E6000772041F2707801E016F8010F01F008FFD9
:100E70004346013BFDD101F0CDFFAE42F4D1B8F1C4
:100E80000108FCD100210D2001F08CFB0DF23F2662
:100E900041F2707819F8010F01F0F2FE4346013B70
:100EA000FDD101F0B7FFB145F4D101F07BFFB8F1FE
:100EB0000108FCD101F0AEFFC0B2002840F07D81F6
:100EC0003A4B03931E460D20012101F06BFB06F106
:100ED0000508B146772041F2707601E019F8010F5C
:100EE00001F0CEFE3346013BFDD101F093FFC14539
:100EF000F4D1013EFDD100210D2001F053FB01F0A2
:100F000089FF10F0FF0040F05181019A029B8DF89B
:100F1000350003EB02239BB29A008DF836209A0924
:100F20009B0201930CAB02939B46214B8DF837201B
:100F300093E8030040330C908DF8341093E80300DD
:100F40000E908DF83C100D2001210DF13D0941F26C
:100F5000707601F027FB1BF8010B01F091FE334680
:100F6000013BFDD101F056FFCB45F4D1013EFDD14F
:100F700000210D2001F016FB01F04CFFC0B200284B
:100F800040F01481FFF768FA0646002840F0D1804F
:100F90000D20012101F006FB41F2707677200DE073
:100FA0004C0EFF1F2808FF1F604D0000F84C00008A
:100FB000304D0000684D000017F8010F01F060FE91
:100FC0003346013BFDD101F025FFA742F4D1013E9C
:100FD000FDD100210D2001F0E5FA0DF23F270DF2C1
:100FE0003F3641F2707417F8010F01F049FE2346B5
:100FF000013BFDD101F00EFFB742F4D101F0D2FE6A
:10100000013CFDD101F006FFC0B2002840F0C880CD
:101010000D20012101F0C6FA41F27074772001E041
:101020001AF8010F01F02CFE2346013BFDD101F01F
:10103000F1FEAA45F4D1013CFDD100210D2001F0C3
:10104000B1FA0DF23F440DF23F3641F2707516F8D9
:10105000010F01F015FE2B46013BFDD101F0DAFE38
:10106000A642F4D101F09EFE013DFDD101F0D2FE79
:10107000C0B2002840F0A1800D20012101F092FAB9
:1010800041F27074039D772001E015F8010F01F023
:10109000F7FD2346013BFDD101F0BCFE4545F4D1EF
:1010A000013CFDD100210D2001F07CFA01F0B2FEDF
:1010B00010F0FF007AD1424A8DF8350092E8030023
:1010C0004032019B8DF834100C9092E8030003F538
:1010D00000731A0A0E908DF83C101B0C01210D2094
:1010E0008DF836208DF8373001F05CFA029D41F220
:1010F000707415F8010B01F0C3FD2346013BFDD1CF
:1011000001F088FE4D45F4D1013CFDD100210D20B8
:1011100001F048FA01F07EFEC0B2002846D1FFF788
:101120009BF9064628B901460D2001F03BFA00E084
:10113000EB2630460DF2444DBDE8F08FEC263046EC
:101140000DF2444DBDE8F08F01233B7322E615FA02
:1011500080F0B0F5806F1CDC1FFA80FB23680B93D6
:10116000DDF82CA0002608E023680A930A9BD8F833
:101170000820A3EB0A0393421AD2A81910ABA9EBDB
:101180000601184402F040FD0644B145ECD85D4626
:1011900010E6C5F580691FFA89F94FF4806BDDE729
:1011A000E12630460DF2444DBDE8F08FE626C0E75B
:1011B000012388F80C305D46FCE5E226B9E700BF64
:1011C000304D00002DE9F04F994DADF24C4D00210E
:1011D0004FF47F7213A8CDE90E1110918DF84410D1
:1011E000129103F0B9FA2B680693069E42F210742E
:1011F00006E02B680793079B9B1BA34200F2B68275
:1012000002F0ECFC0128F4DD2B680B930024CDE9FF
:101210000E440B9E874F10948DF8444007E02B68D6
:101220000A930A9BBA689B1B934280F0AD820EAB77
:10123000C4F10201181902F0E7FC0444012CEED9B4
:101240009DF83830009301210D209DF83990DFF88A
:10125000E48101F0A7F92B680893089F002444F665
:1012600020660EE02B680993099BDB1BB34200F25A
:10127000848202F0B3FC1FFA80FABAF1000F40F04A
:101280008682B4F5806FEDD36B4C0D20012101F007
:1012900089F9661D772041F2707501E014F8010F9D
:1012A00001F0EEFC2B46013BFDD101F0B3FDB44251
:1012B000F4D1013DFDD100210D2001F073F901F0C1
:1012C000A9FD10F0FF0040F08C825C4D8DF83D00D0
:1012D00095E80300009B0E9005F1080709EB032930
:1012E0008DF83C1097E803001FFA89F3C3F38712C7
:1012F0009E009B02F6B2019310900EAB8DF8441045
:101300000D2001218DF83E6000928DF83F20029360
:101310000DF145049A4641F2707801F043F91AF84C
:10132000010B01F0ADFC4346013BFDD101F072FD24
:10133000A245F4D1B8F10108FCD100210D2001F043
:1013400031F901F067FDC0B2002840F05282FFF78A
:1013500083F8824600285DD01B2840F00982DFF820
:10136000E4B00D20012101F01DF90BF1050A7720F1
:1013700041F2707801E01BF8010F01F081FC434657
:10138000013BFDD101F046FDD345F4D1B8F1010890
:10139000FCD100210D2001F005F901F03BFD10F01A
:1013A000FF0040F026828DF83D0095E803000E9086
:1013B0008DF83C1097E80300009B10908DF84410C6
:1013C0000D2001218DF83E608DF83F300DF1380A77
:1013D00041F2707801F0E6F81AF8010B01F050FCC8
:1013E0004346013BFDD101F015FDA245F4D1B8F112
:1013F0000108FCD100210D2001F0D4F801F00AFD14
:10140000C0B2002840F0F581FFF726F88246002898
:1014100040F0AE810A4B03931F460D20012101F0DD
:10142000C1F83B469A460437772041F270780DE0C8
:101430004C0EFF1F2808FF1FE84C0000304D000035
:10144000604D0000E04C00001AF8010F01F018FC9C
:101450004346013BFDD101F0DDFCBA45F4D1B8F1C2
:101460000108FCD100210D2001F09CF80DF1470B83
:101470000DF2471841F2707A1BF8010F01F000FCE1
:101480005346013BFDD101F0C5FCC345F4D101F049
:1014900089FCBAF1010AFCD101F0BCFCC0B2002801
:1014A00040F0AA81854B04930D20012101F07AF8C8
:1014B000824B772003F104099B4641F2707A01E0E8
:1014C0001BF8010F01F0DCFB5346013BFDD101F09D
:1014D000A1FCCB45F4D1BAF1010AFCD100210D20C9
:1014E00001F060F80DF2472B41F2707A18F8010F05
:1014F00001F0C6FB5346013BFDD101F08BFCD84502
:10150000F4D101F04FFCBAF1010AFCD101F082FCE8
:10151000C0B2002840F07681694B05930D2001216F
:1015200001F040F8664B772003F1050B984641F235
:10153000707A01E018F8010F01F0A2FB5346013B5D
:10154000FDD101F067FCC345F4D1BAF1010AFCD129
:1015500000210D2001F026F801F05CFC10F0FF00E6
:1015600040F04D818DF83D0095E80300DFF854B15F
:101570000E908DF83C109BE80300009B10908DF8B6
:1015800044100D2001218DF83E608DF83F300DF1A3
:10159000380A41F2707601F005F81AF8010B01F0F3
:1015A0006FFB3346013BFDD101F034FCA245F4D181
:1015B000013EFDD100210D2000F0F4FF01F02AFCD6
:1015C000C0B2002840F01B81FEF746FF824600288B
:1015D00040F0CE800D20012100F0E4FF41F2707652
:1015E000DDF80CA0772001E01AF8010F01F048FBAC
:1015F0003346013BFDD101F00DFCBA45F4D1013E6B
:10160000FDD100210D2000F0CDFF0DF2472A0DF293
:10161000473741F270761AF8010F01F031FB33467B
:10162000013BFDD101F0F6FBBA45F4D101F0BAFB64
:10163000013EFDD101F0EEFBC0B2002840F0DC809D
:101640000D20012100F0AEFF41F27076049F77205B
:1016500001E017F8010F01F013FB3346013BFDD108
:1016600001F0D8FB4F45F4D1013EFDD100210D2002
:1016700000F098FF0DF247460DF2473A41F27077BD
:101680001AF8010F01F0FCFA3B46013BFDD101F0D5
:10169000C1FBB245F4D101F085FB013FFDD101F062
:1016A000B9FBC0B2002840F0AD800D20012100F050
:1016B00079FF41F27076059F772007E0684D0000C2
:1016C000F84C0000704D000017F8010F01F0D8FA37
:1016D0003346013BFDD101F09DFB4745F4D1013E6E
:1016E000FDD100210D2000F05DFF01F093FB10F013
:1016F000FF0040F084808DF83D0095E80300019BD9
:101700008DF83C100E909BE8030003F500731A0A55
:1017100010908DF844101B0C01210D208DF83E20F7
:101720008DF83F3000F03EFF029E41F2707516F8D2
:10173000010B01F0A5FA2B46013BFDD101F06AFB3C
:10174000A642F4D1013DFDD100210D2000F02AFF79
:1017500001F060FBC0B2002851D1FEF77DFE824649
:1017600030B901460D2000F01DFF01E04FF0EB0AFB
:1017700050460DF24C4DBDE8F08F4FF0EC0A50464C
:101780000DF24C4DBDE8F08F01233B7358E514FA80
:1017900080F0B0F5806F1CDC83B201932B680D9351
:1017A0000D9E4FF0000B07E02A680C920C9AD8F8B7
:1017B0000810921B8A4217D204EB0B0012ABAAEB63
:1017C0000B01184402F020FA8344DA45ECD8019C5E
:1017D00045E5C4F5806A4FF480631FFA8AFA0193E5
:1017E000DCE74FF0E80AC3E70123019C88F80C30DE
:1017F00035E54FF0E40ABBE74FF0E10AB8E74FF0F8
:10180000E60AB5E74FF0E20AB2E700BF2DE9F04380
:10181000594F5A4D83B04FF0000901210D20CDF8EA
:1018200000908DF8049000F0BDFE4FF4FA514FF493
:10183000FA6000F05DFC08210646012000F058FC2B
:1018400049460446052000F0ADFE4FF41663013B07
:10185000FDD101F0AFF8052000F00AFF01210520BD
:1018600000F0A0FE052000F003FF4FF4E131384600
:1018700000F08AFB6423BB60012000F0F9FE2B78A6
:10188000C5203B3B41F270782B7001F0F9F94346DB
:10189000013BFDD12B78012001332B7001F0F0F9D1
:1018A0004346013BFDD10320287001F0E9F943468E
:1018B000013BFDD12B789A20663B2B7001F0E0F9BB
:1018C0004346013BFDD1484601F0DAF94346013B6E
:1018D000FDD12B78142014332B7001F0D1F943463D
:1018E000013BFDD12B785842C0B2C31A2B7001F0D6
:1018F000C7F9B8F10108FCD101E001F08BFA01F061
:1019000075FA0028F9DC2B780320034441F2707843
:101910002B7001F0B5F94346013BFDD101F07AFA95
:1019200005226946384600F0C7FB9DF80230062BB9
:1019300035D0102B40F0FB80C6EB0616B60001D068
:10194000013EFDD100210420C4EB041400F02AFE66
:10195000A40001D0013CFDD10121042000F022FEB1
:1019600001E001F057FA01F041FA0028F9DC40F2F9
:10197000E7344FF4967609E0FC07FF1F390EFF1F8E
:101980003346013BFDD1013C3FF445AF01F02EFA57
:101990000028F5DD01F03EFAC0B20228F0D10520A2
:1019A00000F066FE2B7891206F3B41F270762B7031
:1019B00001F066F93346013BFDD13A24012000F0E5
:1019C00057FE20462C7001F05BF93346013BFDD1F8
:1019D0002B784E2003442B7001F052F93346013B23
:1019E000FDD12B786F2003442B7001F049F9334669
:1019F000013BFDD12B78742003442B7001F040F99A
:101A00003346013BFDD12B78204623442B7001F057
:101A100037F93346013BFDD12B78552003442B7019
:101A200001F02EF93346013BFDD12B78732003449E
:101A30002B7001F025F93346013BFDD12B78652051
:101A400003442B7001F01CF93346013BFDD12B7888
:101A5000642003442B7001F013F93346013BFDD1A0
:101A60002B78204623442B7001F00AF93346013BC2
:101A7000FDD128780138C0B243002B7001F000F985
:101A80003346013BFDD1012000F0F2FD2B7893207D
:101A90006D3B2B7001F0F4F83346013BFDD1012082
:101AA000284C00F0E5FD04F1C3072B7814F8010F72
:101AB00003442B7001F0E4F83346013BFDD1BC42F6
:101AC000F3D1012000F0D4FD2B7893206D3B2B70D7
:101AD00001F0D6F8013EFDD101201B4C00F0C8FDFD
:101AE000E71D41F270762B7814F8010F03442B7038
:101AF00001F0C6F83346013BFDD1A742F3D10120E6
:101B000000F0B6FD942001F0BBF8052000F0B0FD18
:101B100001E001F07FF901F069F90028F9DC0D20FE
:101B2000002100F03FFD012003B0BDE8F0832B78D9
:101B3000EE20123B2B7001F0A3F8B8F10108FCD1A4
:101B40000020F1E73707FF1F2F07FF1F2DE9F043A4
:101B5000012183B00D2000F025FDB74DB74EB84FE1
:101B600002F03CF8002800F09D8001F0FBFFC0B2BD
:101B70000128287010D9102800F09780202853D011
:101B8000802800F04681F02800F030813B78002B5F
:101B900000F05E812028E3D82028E1D801A353F883
:101BA00020F000BFE51D0000B91D0000B31D0000BE
:101BB000AD1D0000831D0000611B0000591D0000C9
:101BC0002F1D0000051D0000611B0000DB1C000034
:101BD000611B0000611B0000611B0000611B000015
:101BE000611B0000AB1C0000611B0000611B0000BA
:101BF000611B0000611B0000611B0000611B0000F5
:101C0000611B0000611B0000611B0000611B0000E4
:101C1000611B0000611B0000611B0000611B0000D4
:101C2000611B0000291C000001210D20854C00F0E3
:101C3000B9FC0D20012100F0B5FC04F10409752068
:101C400041F2707801E014F8010F01F019F84346F1
:101C5000013BFDD101F0DEF84C45F4D1B8F10108AB
:101C6000FCD100210D2000F09DFC01F0D3F810F014
:101C7000FF0018BFE020307002F0B2F841F270733C
:101C8000013BFDD101E001F06DFF01F0A7FF00284D
:101C9000F9DC00210D2000F085FC01F09FFF0028F9
:101CA0007FF463AF03B0BDE8F0833C780020307070
:101CB000002C00F0BA8002F093F841F27073013BFF
:101CC000FDD101E001F04EFF01F088FF0028F9DCB2
:101CD00000210D2000F066FCDFE7FEF763FF3070A7
:101CE00002F07EF841F27073013BFDD101E001F09A
:101CF00039FF01F073FF0028F9DC00210D2000F00E
:101D000051FCCAE7FEF77AFE307002F069F841F242
:101D10007073013BFDD101E001F024FF01F05EFF93
:101D20000028F9DC00210D2000F03CFCB5E7FFF7AE
:101D300049FA307002F054F841F27073013BFDD162
:101D400001E001F00FFF01F049FF0028F9DC00215C
:101D50000D2000F027FCA0E7FEF7DEFF307002F058
:101D60003FF841F27073013BFDD101E001F0FAFE52
:101D700001F034FF0028F9DC00210D2000F012FCF6
:101D80008BE7FEF769FD307002F02AF841F27073BC
:101D9000013BFDD101E001F0E5FE01F01FFF00284D
:101DA000F9DC00210D2000F0FDFB76E7FEF766FC74
:101DB000D6E6FEF7ABFCD3E6012002F001FA224C96
:101DC000804602F005FA01ABA3EB0803238005204F
:101DD00002F006F82088000A02F002F8207801F0EC
:101DE000FFFFBDE6022001F0FBFFB9E6012002F093
:101DF000E7F9154C804602F0EBF901ABA3EB0803C1
:101E00000220238001F0ECFF052001F0E9FF3620DD
:101E1000DEE700210D2000F0C5FB4FF4FA7000F062
:101E200027FC0A4B1B6898479AE6FFF7EFFC3070D7
:101E300008BBE12030703EE7380EFF1F440EFF1F45
:101E40003C0EFF1F784D00003A0EFF1F400EFF1F93
:101E5000E02001F0C5FF41F27073013BFDD101E0CC
:101E600001F080FE01F0BAFE0028F9DC00210D200F
:101E700000F098FB11E7FEF729FB307010B9012341
:101E80003B7018E73C7016E72DE9F843314F324DAF
:101E9000324CDFF8D09038464FF4E13100F074F85E
:101EA0006423BB602E682E4F40F2EE2802F01AF831
:101EB0002378002B40D03B78DA073DD52B68D9F842
:101EC00000209B1A0E2B37D901210D2000F094FB26
:101ED0000121052000F090FB0121042000F08CFB83
:101EE0000121084600F088FB0021084600F084FB31
:101EF0000021052000F056FB0021012000F052FBDC
:101F00000021084600F04EFB0121042000F04AFBAE
:101F100001F0E8FF2378002BFAD03B78DB07F7D5F8
:101F20002B68D9F800209B1A0E2BF1D9BDE8F84395
:101F300001210D2000F036BB2B6822789B1B2AB1B3
:101F4000B3F5FA6FC0D801F0CDFFAFE74345FAD93A
:101F5000BAE700BFFC07FF1F4C0EFF1FD00FFF1F8B
:101F6000F40FFF1FF80FFF1F0368C9B21B68184763
:101F70000368C9B21B6818470368C9B21B681847D1
:101F80000368C9B21B681847084B10B503EB51032F
:101F90000446B3FBF1F000F02FFC054B1B7803B1B6
:101FA00010BD2046BDE8104002F040B8002A75156B
:101FB0002508FF1F08B5084600F062FE012008BD95
:101FC00008B5084600F05CFE012008BD38B508469B
:101FD0000D4602F055FC04460146284600F05AFE24
:101FE000204638BD10B508461446114600F052FE92
:101FF000204610BD0846114601F07AB80846114641
:1020000001F05AB800F072BF08B5084600F00EFEA5
:10201000003818BF012008BD08B5084600F0E4FDEF
:10202000003818BF012008BD0846114600F05ABD0F
:10203000084600F0A1BD00BF084600F037BD00BF54
:1020400000F0B8BC10B50648144600EB5100B0FBD8
:10205000F1F000F0D1FB2046BDE8104000F04CBC90
:10206000002A751500F01CBF00F0D4BE00F0BEBE03
:1020700000F098BE00F0A2BE70B50E4D82B02B6885
:102080000093009E044608E001F02CFF2B680193AA
:10209000019BA2689B1B934207D2236820465B6981
:1020A00098470028F0DB02B070BD4FF0FF3002B05F
:1020B00070BD00BF4C0EFF1FF8B50D4691B116461E
:1020C0009AB10746002404E00134A64205F8013B1A
:1020D00006D03846FFF7D0FF031EF5DA01233B7325
:1020E0002046F8BD0C462046F8BD1446F8E700BF70
:1020F000884200DB704770B4114C2268091AEAB1BB
:10210000104B114E114D83FB023C9444D317C3EB8B
:102110002C4306FB132244F2A71C05FB03F30CFB24
:102120000233002B02DA03F10043013BB3FBF1F26F
:1021300001FB12322360104470BC7047044BF5E77A
:10214000480EFF1F5F0B4E831DF30100ECF4FFFFF1
:1021500042CE0C1F08B5FFF797FEFFF7F7FC01F022
:10216000C1FEFAE701B441EA000313F003036FD1A3
:10217000403A41D351F8043B40F8043B51F8043B4A
:1021800040F8043B51F8043B40F8043B51F8043B51
:1021900040F8043B51F8043B40F8043B51F8043B41
:1021A00040F8043B51F8043B40F8043B51F8043B31
:1021B00040F8043B51F8043B40F8043B51F8043B21
:1021C00040F8043B51F8043B40F8043B51F8043B11
:1021D00040F8043B51F8043B40F8043B51F8043B01
:1021E00040F8043B51F8043B40F8043B51F8043BF1
:1021F00040F8043B403ABDD2303211D351F8043B91
:1022000040F8043B51F8043B40F8043B51F8043BD0
:1022100040F8043B51F8043B40F8043B103AEDD23F
:102220000C3205D351F8043B40F8043B043AF9D290
:1022300004320AD0D2071CBF11F8013B00F8013B61
:1022400003D30B7803704B78437001BC704700BF19
:102250000C2A4AD310F0030311D0C3F10403D21A9D
:10226000DB071CBF11F8013B00F8013B07D311F855
:10227000013B00F8013B11F8013B00F8013B11F074
:1022800003033FF475AF30B4043AC91AC3F1040C28
:1022900051F8044B022B19D0032B0BD0240A51F810
:1022A000043B1D0644EA050440F8044B1C46043A6E
:1022B000F4D216E0240E51F8043B1D0244EA050452
:1022C00040F8044B1C46043AF4D20AE0240C51F8BE
:1022D000043B1D0444EA050440F8044B1C46043A40
:1022E000F4D20432B1EB0C0130BC043AA0D3013A71
:1022F00011F8013B00F8013BF9D20B7803704B78E1
:1023000043708B78837001BC704700BF08B50F4CD9
:10231000636B58030DD4636B59050FD4636B1A05B7
:1023200011D4636BDB04F3D500F012F8636B580330
:10233000F1D500F0ABFF636B5905EFD500F0FAFD66
:10234000636B1A05EDD500F003F8EAE7008004405E
:1023500008B5FFF7DBFF00BF014B10221A80704762
:1023600000200540704700BF0B490A6848B108B516
:10237000EC461318ACF50050834204D20B601046B3
:1023800008BD1046704702F04BFA0C234FF0FF32A5
:102390000360104608BD00BF1008FF1FEFF3138352
:1023A000CBB9EFF31080A0B9EFF3058343B94FF435
:1023B0008070EFF311835BB1984228BF18467047D5
:1023C0000F2BF6D9054AD05CEFF31183002BF3D124
:1023D0007047184670474FF0FF307047F0E300E059
:1023E000074BDA78802A01D000207047054906485B
:1023F000486400225A70DA78802AFCD001207047A5
:1024000000E007400080044000002822074BDA78F3
:10241000012A01D00020704760225A70DA78802AA1
:10242000FCD1034B034A5A640120704700E0074087
:10243000008004400000060201F1FF3C70B56546D3
:10244000002401E070460134B0FBF2FE02FB1E03E3
:10245000092B03F130068ABF3733F3B2DBB2904267
:1024600005F8013FEED2631C0022CA54C8187CB1A3
:1024700062461CF8015F10F801ED8CF800E0A1EB5A
:102480000C030232013B521A23449A420570EFDBDF
:10249000084670BD034B002210215A615A60186033
:1024A0005961704700D00340704700BF4FF0E02CE7
:1024B0002DE9F0414FF00068CCF804814FF08058CE
:1024C000CCF804814FF00058CCF804812F4A3049F1
:1024D000304C314D314E4FF08048CCF804812823E8
:1024E00000204EF6FF7E09274FF00048CCF804810B
:1024F0004860C1F808E0CB604B61CB614B62CB62B6
:102500004B63CB634B64D3605361D3615362D3623B
:102510005363D36353640F606860C5F808E0EB60F1
:102520006B612F606060C4F808E0E360636127605E
:102530005060C2F808E0D36053611760F16A41F45B
:102540000071F162716802F5803241F000717160D2
:1025500047F6FF740821506082B09460D3605361E5
:10256000116001F08BFDFFF79FFF0D4C2368009376
:10257000009B132BFAD901F043FA23680193019BC6
:10258000B3F5967FF9D302B0BDE8F08100900B401F
:102590000080034000800B40009003400080044016
:1025A0004C0EFF1F3F2818D810B4124B53F83020A0
:1025B00092F8804234B1012381B982F800315DF88C
:1025C000044B704703EBC0035B681A6859B142F0D3
:1025D00003025DF8044B1A607047704782F8803040
:1025E0005DF8044B704722F002025DF8044B1A605C
:1025F000704700BFE84D00003F2820D81B4A02EB7F
:10260000C00301295B680FD004291DD052F83000A7
:10261000002280F8802299B1022922D003290DD10D
:102620004FF481721A60704752F830004FF4A27272
:1026300080F880121A601A6822F020021A6070472F
:102640004FF480721A60704752F830104FF4A27243
:10265000012081F880021A601A6842F020021A6094
:10266000704740F203121A60704700BFE84D000047
:102670002DE9F843044672B6214F4FF0E0229369EA
:102680003D68D2F8042D62B6520102D5322B88BFC4
:1026900001350CB9BDE8F883DFF86890DFF8688091
:1026A000A9EB03039B08A8FB03234FF47A7202FBF8
:1026B00005F505EB93054FF0E02672B6B1693A686F
:1026C000D6F804CD62B6A9EB01039B08A8FB03036F
:1026D0001CF0806FC5EB93034FF47A7002D032295F
:1026E00088BF013200FB0233B3F57A7F04D3013C8B
:1026F000D0D005F57A75E0E701F0F4FBDDE700BF27
:102700004C0EFF1F1FBF0200176CC1162DE9F84FBA
:10271000314B1B6807460BB101221A70DFF8D090CD
:10272000DFF8D08099F80040D8F800302B4D013404
:102730009C422B782AD303F0FF0A002B3ED154464B
:10274000274EDFF8A8B005E033791B0623D42B7899
:10275000A3420AD1FFF722FE4028F5DDFF28F6DD6F
:1027600001F0C0FB2B78A342F4D03F2C29D91D4B9C
:10277000403C1B68FFB21F551B4A194B01211170C9
:10278000BC2289F800A0DA70BDE8F88F9C425FFA9D
:1027900084FAD5D0E9E72B78D8F800105A1C8A4281
:1027A000DBB203D23F2A10D8D1B201E000210A46A1
:1027B0001BF80230DBB2F3712970C8E74FF0000A52
:1027C00054460A4BFFB21F55D6E7D1B2054A3F3BEC
:1027D0001268D35CDBB2EEE7A00EFF1FF00EFF1F06
:1027E00000A00640EC0EFF1FA40EFF1FA80EFF1F47
:1027F000E80EFF1F2008FF1F324A3349536B70B4A5
:1028000043F48063314D5363314E324C32780023B0
:102810002B700B70304923700B703049152A0B70E8
:102820002ED01B2A48D0002A41D02D4B1B78052BD7
:102830002ED01A2B36D0012B2FD02028294B2A4CF2
:1028400038BF2020C0F3443C83F800C0C0F3471CCD
:1028500000F01F0083F801C00422987202209A70D1
:10286000D87488205A754FF0E021187440223C201B
:10287000D870E2774FF0004370BCC1F80031704768
:102880001A4B40F213329A61154B1B78052BD0D1AD
:10289000164B4FF45172DA61CFE7154B4FF451727A
:1028A0005A64CAE7134B4FF451729A63C5E7104B51
:1028B00040F213321A64B8E70E4B40F21332DA6377
:1028C000B3E700BF008004409C0EFF1F940EFF1F63
:1028D0009D0EFF1FE80EFF1FF00EFF1FA40EFF1F2F
:1028E0002408FF1F00A0064000E400E000C00440F0
:1028F00000A0044000900440294B9B7800F00302A4
:1029000003F0EC031343410700F00F02244948BFD2
:1029100043F01003042A8B7003D18B7943F04003FA
:102920008B711F4B5B79C20603F0EF031C4A48BF53
:1029300043F0100353719379194A03F0EF0310F039
:10294000200C18BF43F010039371C30506D55378CC
:102950001178DBB241F020011170537010F4007057
:1029600017D00F490F488B780F4A43F0A0038B70A4
:1029700003780E4902EBC30240F24633506840F23E
:102980004732BCF1000F08BF1346094A03600A60D2
:102990007047064B064A1968914208BF1860704795
:1029A00000A006402408FF1FE84D0000A00EFF1FF6
:1029B000D400D442324B5B6B5B0531D510B5314C42
:1029C000237823B101F08EFA2378002BFAD12E4A16
:1029D0002E4B4FF0E0204FF000440021C0F8804122
:1029E000D1701B78152B3CD01B2B1FD04BB3284B21
:1029F0001B7803F07F03052B3DD01A2B2CD0012B25
:102A00000FD0244B204A244C2448196892F804C063
:102A1000D27900232370037009B101230B7010BD1C
:102A200070471F4B40F203125A64EAE71D4B40F215
:102A30000312DA63164B1B7803F07F03052BDCD1FE
:102A400019E0174B40F203121A64114B1B7803F084
:102A50007F03052BD1D10EE0124B40F203129A6393
:102A6000CFE7114B40F203129A61094B1B7803F038
:102A70007F03052BC1D10C4B40F20312DA61C0E792
:102A800000800440A40EFF1F00A006409D0EFF1F03
:102A90002408FF1F500EFF1F940EFF1F9C0EFF1FE8
:102AA00000A004400090044000C004400A4A38B529
:102AB0000546137803F0FF04002BFAD101212846C4
:102AC000FFF79AFD21462846FFF76CFD034A044BA9
:102AD00052F835201A6038BDA40EFF1FE84D0000E3
:102AE000A00EFF1F09B140F080001E4A13788342F8
:102AF0001CD010B41C4C646B640513D503F07F0329
:102B0000052B2BD01A2B25D0012B1FD0002900F02C
:102B10007F0314BF60214421052B12D01A2B0BD048
:102B2000012B04D010705DF8044B704770470F4BB9
:102B300041F440715964F5E70D4B41F440719963DC
:102B4000F0E70C4B41F44071D961EBE7074B0024EF
:102B50005C64DBE7064B00249C63D7E7054B00244D
:102B6000DC61D3E72408FF1F0080044000A004407C
:102B70000090044000C00440164A137883420ED0EF
:102B80001549496B490509D5152B1FD01B2B19D0A9
:102B9000ABB115280ED01B2807D008B110707047B4
:102BA0000E4B40F213311964F8E70D4B40F213312C
:102BB000D963F3E70B4B40F213319961EEE7074914
:102BC0000B64E6E7064B0021D963E2E7054B0021E1
:102BD0009961DEE79D0EFF1F0080044000A00440C5
:102BE0000090044000C004400D4B5B6B13F4806305
:102BF00013D03F2803D90B4B0020186070470A4BB5
:102C000010B5084C53F8303023600121FFF7F4FC75
:102C1000236800221A70012010BD1846704700BFBB
:102C200000800440500EFF1FE84D0000104B5B6B0E
:102C300013F4806312D012280BD0142810D10D4B3E
:102C400040F202325A610C4A537B01200343537312
:102C500070470A4B40F20232DA60F4E718467047D8
:102C6000054A537B03F0FE0300205373704700BFF7
:102C70000080044000C0044000A0064000A00440C2
:102C8000034B5B6B5B0501D5FFF740BD704700BF91
:102C9000008004402DE9F84F394B5B6B5A053CD559
:102CA000384B1B680BB101221A704718B84231D259
:102CB000354EDFF8EC80354CDFF8E09000F1010A8A
:102CC00013E003F0FF0B53B34FF0000B5D46304AA7
:102CD0001AF8013C535552462E490123BA420B7053
:102CE0000AF1010A86F800B014D23578D8F800301D
:102CF0000135AB422378E4D9AB425FFA85FB0FD0B4
:102D00003F2DE4D9244B1AF8012C1B68403D5A553D
:102D10005246E1E7214BBC22DA70BDE8F88F5D46F0
:102D20006FF0430389F8033006E099F804301B067E
:102D30000BD42378AB42E3D1FFF730FB4028F4DD1E
:102D4000FF28F6DD01F0CEF8F3E72378D8F800107D
:102D50005A1C9142DBB203D93F2A0AD8D1B201E012
:102D600000210A460A4B9B5CDBB289F807302170D0
:102D7000DFE7D1B2084A3F3B1268D35CDBB2F4E72D
:102D800000800440A00EFF1FE80EFF1FF00EFF1F83
:102D9000A80EFF1FA40EFF1FEC0EFF1F00A0064091
:102DA0002008FF1F10B5044C237823B101F09AF8D6
:102DB0002378002BFAD110BDA40EFF1F084A094B3F
:102DC00011781A789142C8B2D3B202D2013B181AD4
:102DD0007047054A1268013A1344181A704700BF39
:102DE000E80EFF1FF00EFF1F2008FF1F064A074BCB
:102DF00011781A789142D0B23CBF054A1268CBB222
:102E000038BF9B18181A7047940EFF1F9C0EFF1FA7
:102E10001C08FF1F1B4B1C491A780B789A422ED0B6
:102E200010B55FFA82FE194AD8B21268431C9A4262
:102E300019D93F2B1BD85FFA83FC1548C05CC0B280
:102E400081F800C01349096861B19E453CBF7244D6
:102E5000D31A114A126828BFAEEB03039A4201D37A
:102E600000230B7010BD4FF0000C6346E5E70B4CE0
:102E70003F382468205C5FFA83FCC0B2E0E74FF083
:102E8000FF307047940EFF1F9C0EFF1F1C08FF1F92
:102E9000540EFF1F500EFF1F1808FF1F980EFF1F34
:102EA0000D4A0E4B11781B789942DAB211D00C49B9
:102EB0000968531C994207D93F2B06D9094B3F3A61
:102EC0001B68985CC0B270470023074AD05CC0B250
:102ED00070474FF0FF307047940EFF1F9C0EFF1F8E
:102EE0001C08FF1F980EFF1F540EFF1F0C4B5B6B3F
:102EF0005B0514D50B4B0C48DA78402102F0CB026D
:102F0000DA705974DA78094942F03402DA70084A02
:102F100003781268DBB20B700AB10023137070479C
:102F20000080044000A006409C0EFF1F940EFF1F6F
:102F3000500EFF1F2DE9F041504C237913F0300F54
:102F400047D072B6A37D03F0FF01002B58D062B6C4
:102F5000DFF85C814A4898F800304A4A05781668DC
:102F6000494F5FFA83FC494BEDB2D3F800E008E02B
:102F70001DB14FF0000C07F80C304A1E12F0FF0193
:102F800012D0E3790CF101029642DBB2F0D99542FE
:102F9000ACF13F00F1D03F2A6DD994464A1E12F0A1
:102FA000FF010EF80030ECD15FFA8CF388F80030A6
:102FB000374B196869B1AC453CBF721B02EB0C037F
:102FC000344A126828BFACEB05039A429CBF012328
:102FD0000B702A48C3781E06DDB216D46A060DD5DA
:102FE000264B1B795B0609D52B4B2C491B6800220D
:102FF0000A7003B11A70214B3C22DA70BDE8F081EF
:103000004023E279637462B6E3E703791C06E5D5F1
:10301000234B244ADFF89CE01C7816689EF80030A9
:10302000214A224FD2F800C0E4B2DBB207E00379B4
:103030000023FA5CD2B2C271027D072A11D8A342E2
:1030400003F101010ED08E42F1D93F290279A3F19B
:103050003F0301D80B46ECE71CF803200B46D2B225
:10306000E9E7DCB2054B8EF800401A79110644BF3F
:103070007C22DA70B2E794467DE700BF00A00640EC
:103080009C0EFF1F1C08FF1F540EFF1F980EFF1FF2
:10309000500EFF1F1408FF1FA00EFF1FA40EFF1FDE
:1030A000E80EFF1F2008FF1FEC0EFF1FA80EFF1FDA
:1030B000940EFF1FF00EFF1F094B10B4186068B18B
:1030C00001F14004074B084801F11A021A60074B4E
:1030D000046028315DF8044B196070474024F1E723
:1030E000980EFF1F1808FF1F1C08FF1F1408FF1F62
:1030F000054B186018B1054B403119607047034B00
:1031000040211960704700BFEC0EFF1F2008FF1F11
:10311000704700BF431E032B16D872B60B4951F8F7
:10312000230078B130B40A4CB0F800C034F8132052
:10313000456841F82350A2EB0C0224F8132062B634
:1031400030BC704762B6704700207047840FFF1F85
:10315000D40FFF1F013803280BD872B6074B53F862
:10316000203043B100205B680130002BFBD162B6F8
:103170007047002070471846F9E700BFAC0FFF1FEB
:1031800010B472B61A4A1B4C042312F8011B09072B
:1031900043F0010C05D554F8331069B154F83C10D4
:1031A000C9B10433142BF0D162B6134B00221A704C
:1031B0005DF8044B00F0AEBC0F4904EBC3020830CD
:1031C00050600A780D4844F83300013A0A7062B63C
:1031D0005DF8044B7047084A094904EBCC030830FA
:1031E0005860137844F83C10013B137062B6EFE767
:1031F000685000000000FF1FDC0FFF1F8800400028
:10320000C8004000421E032A0ED81C4B400140F06B
:10321000100010B4034472B6194CA05C03281DD8EA
:10322000DFE800F01416031970470520A05413F0CE
:10323000080F088814BFC8228822083142EA0042D9
:1032400059601A6062B65DF8044B70470320EDE7E1
:1032500008330220EAE708330420E7E7094B53F874
:10326000220038B1084B53F82200416043F8221085
:1032700062B6E8E743F82210034BF7E70000FF1FB0
:10328000CC0FFF1FAC0FFF1FBC0FFF1F2DE9F04F2E
:10329000DFF80CA3DFF80CB385B03DE0B04D9E081D
:1032A00005EBC607013A796813F00803D4B2A1F11F
:1032B000080040F0B88055F836204FEA124C120C46
:1032C00021F808CC00F0A78021F8063C41F8043C26
:1032D000A44B53F82420002A00F00182A24B53F89B
:1032E0002420506043F82400A04B33F81420944469
:1032F00023F814C000F0EEFB002800F0E98117F07D
:10330000080F9B4B00F1080018BF5B46786045F83A
:10331000363008238AF880309AF880305907DCB2BA
:103320001BD5944B1B78ABB193490A7802F0FF038D
:103330002AB1013BDBB20B70002B00F046838F49B2
:103340000A7802F0FF032AB1013BDBB20B70002BBD
:1033500000F0EB8104238AF8803014F0080200F0BA
:10336000CC819AF89020D3B2120997D1DFF8F0916E
:103370009B0809EBC30459F833006468C0F3830069
:1033800009287CD00FD80138012808D87C4A158834
:1033900042F22100854200F0FB8149F833B001235D
:1033A0008AF89430B5E70D28F9D1D4E90007754DB6
:1033B00049F833B0724E744CC9F8102083B240F211
:1033C000816CC9F818202A6063454FF00102C6E9F4
:1033D0000007227000F2FF80B3F5D06F80F0CB823F
:1033E000B3F5817F00F0268240F2DE8040F20232A7
:1033F00093427BD107F07F07042F00F20881020C73
:1034000040F00581614911F8273043F0020301F8CB
:103410002730134670E017F0080F554B18BF5B4676
:1034200045F8363075E700F075FB5949594A51F8AF
:103430002430002B00F05781586841F82400115DBA
:1034400003F108007860032905D8DFE801F0120FC6
:103450001502042111551A8817F0080F14BFC8234C
:10346000882343EA024345F8363052E702211155DA
:10347000F1E703211155EEE705211155EBE7414D29
:103480002A683AB34449404C0F88444894F800E015
:103490000678402F3B4628BF4023BEF1000F8EF038
:1034A000010E84F800E046F0020486F00106067082
:1034B00009EBC400426014BFC820882040EA0340E2
:1034C0001A44FB1A9BB249F834000B80002B00F021
:1034D00036812A602A4B1A88B2F5A06F7FF45FAF5D
:1034E0009A788AF8982000225A7058E7B3F5A06FAE
:1034F00040F08D8000221346B6F806C02748944558
:1035000028BF944667460278402F28BF402742F0E4
:10351000020E3E0409EBCE0846F0C806C8F8043097
:1035200049F83E6000263B442670BCEB070782F05A
:103530000106067040F01181BCF13F0F4FF001050C
:1035400009D946F00206027009EBC60225705360E5
:10355000882349F8363001238AF894301FE700BFEA
:103560000000FF1F840FFF1F940FFF1FD40FFF1FCA
:1035700088004000D00FFF1FD10FFF1FFC0FFF1F5F
:10358000A40FFF1F780FFF1F750FFF1FC0200740FC
:10359000AC0FFF1FCC0FFF1F760FFF1F740FFF1F15
:1035A00000200740C8004000802B00F08B81822B58
:1035B0002DD107F07F07042F29D8A74A00231380B5
:1035C000A64B13F827309F0740F1FC8101231370AD
:1035D000A14B022290E742F2210C6345BBD01DD9DA
:1035E00042F2212293420DD1BFB2002F82D19C4BD7
:1035F0001A689C4B1A609C4BC0F30740002218705D
:10360000134679E742F2213293423FF473AF0F231E
:103610008AF8C03001238AF89430C0E6B3F5086F09
:1036200000F04A81B3F5106FF1D1904BC0F3074021
:103630000425187059F835301A0606D40135142DB2
:103640000CD059F835301A06F8D509EBC503013509
:103650005868083800F05EFA142DF2D1844A854B80
:103660000292854A0192854E854ADFF8488203948A
:10367000009200251C4656F8047B2FB138467F681F
:1036800000F048FA002FF9D1009BD8F8007043F8F9
:10369000045B46F8045C00932FB138467F6800F065
:1036A00039FA002FF9D1029B48F8045B43F8045B18
:1036B0000293019B23F8025B01932378023B032BC7
:1036C00000F20981DFE813F03F0104013F0104012A
:1036D0006C4A45F8360013780133137019E643F845
:1036E0002400674BFEE5115D022926D07FF611AE5E
:1036F00003291DD1012313550BE6E0076ED42106E3
:1037000021D4A20708D5604B93F888200221D2B2B9
:1037100083F8882083F88010E30603D55A4B1022E3
:1037200083F8802005B0BDE8F08F00F0B7FB11E60C
:1037300017F0080F14BF032302231355E9E53F2FA9
:1037400098BF0022C5E6504B80220D2183F8C0109F
:1037500083F88020A207DFD5D5E746F00206027085
:10376000402F09EBC6003A4628BF402243601004B0
:10377000134440F088000121BA1A49F8360021703C
:1037800055D02B60414B1A8001238AF8943006E60D
:1037900092885AB93E4AE51D14F8011B02F8011F30
:1037A000AC42F9D13B4A1268862A3CD03A4C3B489D
:1037B00025780278002D85F00105257042F002047D
:1037C00082F00102027009EBC4024FF00000506069
:1037D00014BFC822882249F83420DEE52A4B2F483E
:1037E0002F49304C022583F8945002702E480C600B
:1037F0002E4D48608C600D24CD60FF200A618A61E7
:1038000083F8C04001219F2483F8880083F880005A
:1038100083F8982083F88C0083F8844083F8941010
:1038200005B0BDE8F08F224A0F201070BEE73F2F91
:10383000A7D890E607F07F07042F3FF6E8AE000C0C
:103840007FF4E5AE054A12F8273023F0020302F8B0
:103850002730002213464FE67C0FFF1FC020074091
:103860004C0EFF1FF80FFF1FF40FFF1FD00FFF1F9D
:10387000BC0FFF1FCC0FFF1FD40FFF1F840FFF1FB4
:10388000940FFF1FDC0FFF1F00200740760FFF1F64
:10389000EB0FFF1FEC0FFF1F750FFF1F740FFF1FB4
:1038A0000000FF1F88004000F40EFF1F340FFF1FB1
:1038B000D10FFF1FAC0FFF1F484B49491B780B70FE
:1038C0000B4619E6464A00231380454B022213E6B5
:1038D0004FF001032370434BB34204F101047FF422
:1038E000CAAE414E039CDFF81481404F0023337071
:1038F000042518F8013B3E4AAB541B0725D445F07C
:10390000020145F0030204350023142D49F831303B
:1039100049F83230EDD1374F25783A7842F002003D
:1039200009EBC00C85F00106CCF80430002D4DD118
:10393000882382F0010226703A7049F83030012362
:103940008AF894302BE52570C5E700F0C3F800280D
:1039500032D009EBC5030830586049F8357000F0E3
:10396000B9F808B345F0010309EBC3020830506011
:1039700049F833B0C3E7204A5368002B3FF447AE01
:10398000000CBFB204E013690C32002B3FF43FAED1
:1039900011888142F7D15188B942F4D1000A032835
:1039A0000CBF1A781289A7E533780133337045F0DC
:1039B000010349F83300A2E7337849F835000133B1
:1039C0003370CCE7064B022296E500BE2670C82372
:1039D00082F001063E7049F83030BCE5D00FFF1F81
:1039E0007C0FFF1F940FFF1FDC0FFF1F880040009C
:1039F000C0200740740FFF1F1450000068500000E3
:103A000010B500F0A1FB0023234A194642F83310F9
:103A100002EBC3000133142B4160F7D11F48204C47
:103A2000436B43F480234363D4F8003800F5283017
:103A300000F5807043F04073C4F80038032480F828
:103A40004440184BA02480F84040C2F3072483F878
:103A50009C40C2F30744120E83F8B0404FF0FF0CB5
:103A600083F8B420012283F880C00F4C83F888C00B
:103A700083F810C083F8942001704FF0E02183F8A0
:103A800084204FF0700C4FF40012102384F835C0DE
:103A9000C1F80421037210BD0000FF1F0080044024
:103AA00000D000400020074000E400E000F0F6B83D
:103AB00000F07CB800F056B800F090B800F0C2B941
:103AC00000F09CB90846114600F004B9084600F021
:103AD00087B900BF72B60D490B68B3FA83F00B28A3
:103AE00010DC4FF00042C24023EA02030B6062B6D2
:103AF000074A00EBC000C10002EBC0000023535096
:103B00004360704762B60020704700BF3808FF1F4F
:103B1000D003FF1F0E4BC31AB3F5587F10D20D4AC6
:103B2000127872B972B60C4A0C49A2FB03230868DA
:103B30004FF000421B0922FA03F303430B6062B605
:103B40007047074A1278002AECD0FFF719BB00BF74
:103B5000D003FF1FDC0FFF1F398EE3383808FF1F2B
:103B6000D00FFF1F38B50F4C206878B1438802880A
:103B7000C11801339A420D7A02D94380284638BDD4
:103B8000FFF7C8FF00232360284638BD064B1B788B
:103B90002BB10320FFF7BEFA20600028E6D14FF0DA
:103BA000FF35EBE7E00FFF1FD00FFF1F10B5094CEB
:103BB000206818B143881844007A10BD064B1B7862
:103BC0002BB10320FFF7A6FA20600028F2D14FF0B6
:103BD000FF3010BDE00FFF1FD00FFF1F084B094A39
:103BE0001B6810B594881BB11A885B88D31A1C44D3
:103BF0000CB1204610BD00F075F9204610BD00BF85
:103C0000E00FFF1FD40FFF1F2DE9F84F0D460029CD
:103C10003ED04FF00008DFF880901E4E0746C246A7
:103C200099F80030E3B1346814B322886388A2EBBA
:103C3000030BAB4528BFAB4604F1080138465A4692
:103C40001944FEF78FFA638822885B449BB29A423C
:103C500063805F44D844A5EB0B0511D9002DDFD15B
:103C60004046BDE8F88F0288002ADFD1FFF752FFF7
:103C70000320FFF74FFA044630600028F3D1EFE746
:103C80002046FFF747FFC6F800A0002DC8D1E7E7A0
:103C90000846E6E7E00FFF1FD00FFF1F0B4B1B7816
:103CA0009BB110B50A4C206848B1FFF733FF0023E1
:103CB00003202360FFF72EFA30B1FFF72BFF03201C
:103CC000FFF728FA0028F8D110BD7047D00FFF1F6A
:103CD000E00FFF1F2DE9F04FDFF8F89083B00122CD
:103CE00089F80020019179B3374FDFF8EC80019D0E
:103CF000364EDFF8E8A083463868A8B3B0F802E093
:103D0000CEF1400CAC4528BFAC460EEB0C040022B3
:103D1000A4B23270A5EB0C05448000F10802BCF19E
:103D2000000F0AD00EF1FF3E7244DC441BF8014B39
:103D300002F8014FDC45F9D144883F2C0BD805220D
:103D40008AF80020002DD7D10198002389F800308F
:103D500003B0BDE8F08F4022028001460420FFF747
:103D600051FA00223A60EAE798F800201AB3184C9A
:103D700008E0013C18D03278B2B900F0B3F898F8F6
:103D80000020C2B10420FFF7E5F90728F1D84FF071
:103D9000010389F80030FFF79DFE38600028ADD19F
:103DA000013C89F80000E6D101234FF0FF30337069
:103DB00003B0BDE8F08F00234FF0FF3089F80030EA
:103DC00003B0BDE8F08F00BFE80FFF1FE40FFF1F37
:103DD00021480100E50FFF1FD00FFF1FFC0FFF1F41
:103DE00000B583B0034601210DF107008DF80730BF
:103DF000FFF770FF03B05DF804FB00BF38B50E4D50
:103E00000E4C28680123237028B140880023C0F19C
:103E10004000237038BD0A4B1B7813B90020207076
:103E200038BD0420FFF796F90728F7D8FFF752FEB0
:103E300028600028E9D1F1E7E80FFF1FE50FFF1F19
:103E4000D00FFF1FF8B5114B1B788BB1104E114DE1
:103E5000346801272F7064B10F4B00271F706388EF
:103E6000238021460420FFF7CDF9376000232B7013
:103E7000F8BDFFF72FFE084B014620B104201C704F
:103E8000FFF7C0F9F2E71F70F0E700BFD00FFF1F88
:103E9000E80FFF1FE50FFF1FFC0FFF1F38B50E4B8C
:103EA0001B7853B90D4C216841B103F0FF054B88D5
:103EB0000B800420FFF7A6F9256038BDFFF70AFE46
:103EC000014620B1BDE838400420FFF79BB9044B00
:103ED00001221A7038BD00BFE50FFF1FE80FFF1F5A
:103EE000FC0FFF1F2DE9F843324E337863B1324F98
:103EF0003A784AB90122D9073A7043D49A0726D4AE
:103F000000225B073A7001D4BDE8F8832B4B1A6896
:103F1000002AF9D0EFF30582002AF5D1EFF31085DE
:103F200072B6186800283AD0254C2178002936D17D
:103F300042691A6001232370002A37D0916105B9C4
:103F400062B600258368457798472570DCE7DFF87F
:103F50007C8098F80020002AD2D00025DFF87090ED
:103F60002B4659F82340236820461B6901359847A2
:103F700008B12369984798F80020EBB29A42F0D82C
:103F80003378BDE7FFF72AFE68B90E4B1B780BB9F3
:103F90003378B3E7337803F0FE033370AEE7002DD8
:103FA000B2D162B6B0E700F0CDF8EEE7064B1A608A
:103FB000C5E700BF3C08FF1FFD0FFF1F0010FF1FDC
:103FC0000C10FF1F105000001010FF1F2C10FF1FBF
:103FD0001410FF1F70B5EFF3108272B60C4C2068FE
:103FE00080B10C4E00254369236073B19D6102B915
:103FF00062B6836845779847EFF3108272B62068FF
:104000000028F0D102B962B670BD3360EFE700BF9F
:104010000810FF1F0410FF1FFFF7DCBF024A1368E0
:1040200001331360704700BF4C0EFF1F70B4104E79
:10403000104D3478D4B1621ED2B2291D2B4601EB4B
:10404000820101E08B4205D053F8042B8242F9D162
:1040500070BC7047631CDBB2074A3370137845F8B5
:10406000240043F00203137070BC70470123F3E790
:104070002C10FF1F1410FF1F3C08FF1F2A4B2B4A58
:104080006020E1211870597013782948082B34D02A
:104090000A2B20D00C2B274B0CBF35215D2112227F
:1040A0008160C2609960DA60234B21491B78214A04
:1040B000CBB101230B621362204B1D491B781D4AB3
:1040C000012B13D9042B1BD884234B6253621C4B46
:1040D00001221A707047174B392113228160C26088
:1040E0009960DA60E0E70B621362E5E780234B62D8
:1040F0005362134B01221A7070470E4B2121ECE7DB
:10410000082B06D885234B6253620D4B01221A708F
:104110007047102B94BF862387234B625362084B52
:1041200001221A70704700BF004007403D08FF1F82
:1041300000B0034000B00B402D10FF1F3E08FF1FD2
:104140002E10FF1F704700BF10B584B072B6FEF787
:1041500047F9174A17495160702080231070137077
:1041600013781B06FCD5D468FEF750F962B6124BE3
:104170009C423CBF04EB8404640020460F4C01A920
:104180000A22FEF759F901A92046002311F8012B54
:1041900001333AB10A2B20F8022FF7D116232370EE
:1041A00004B010BD5B00DBB2237004B010BD00BFD3
:1041B000000002400000074180969800CC08FF1FD5
:1041C000024B0146186800F00BB800BF180EFF1F25
:1041D000024B0146186800F021BC00BF180EFF1FFB
:1041E0002DE9F04F01F10B06162E83B0044624D8BA
:1041F000102900F2BA8000F0A3FA1026182202203B
:10420000B54F3A44A2F1080153688B4200F0BA80DE
:104210005A68D96822F003021A449D68E9608D60EB
:10422000516841F001012046516003F1080500F09A
:104230008DFA284603B0BDE8F08F36F0070600F18E
:104240009480B14200F2918000F07AFAB6F5FC7FDA
:10425000C0F09A81730A00F08F80042B00F26F8106
:10426000B30903F1390003F1380CC3009A4F3B4402
:10427000A3F108055B689D4206D10CE0002980F29D
:104280002781DB689D4206D05A6822F00302911B09
:104290000F29F3DD60463D69DFF850C265457CD0EB
:1042A0006A6822F00302931B0F2B00F37B81002B23
:1042B000C7E904CC80F26C81B2F5007F80F01A81EE
:1042C000D308796801334FEA521E012202FA0EF236
:1042D0000A4357F833E0C5F808E007EBC301083993
:1042E000E9607A6047F83350CEF80C508310012112
:1042F0009940914257D8114206D120F0030049005D
:10430000114200F10400FAD007EBC0094D46864681
:10431000D5F80C80454508D11DE1002B80F22481A1
:10432000D8F80C80454500F01681D8F8042022F01A
:104330000302931B0F2BF0DD2046D8E9025408EB53
:10434000060146F00106C8F80460EC60A56043F081
:104350000104C7E90411C1E902CC4C6048F80230FD
:1043600000F0F4F908F1080502E00C2323600025B1
:10437000284603B0BDE8F08F4FF4007340204FF0A3
:104380003F0C73E7D3689A4208BF02307FF440AF16
:104390003D69DFF858C1654582D17A6883100121F3
:1043A00099409142A7D9BD686B6823F003094E4537
:1043B00003D8A9EB06030F2B7ADCDFF834B1474BA7
:1043C000DBF800201B680132334405EB090A00F0DA
:1043D000338103F580530F3323F47F6828F00F08EF
:1043E0004146204600F00AFA411C024600F0F380E4
:1043F000824500F2EE803A4B196841441960084644
:1044000000F04E81DBF80010019301311BBFA2EBDD
:104410000A010918CBF80020196012F0070B00F010
:104420001781CBF108010A44CBF580519044083143
:10443000A1EB0801C1F30B0A51462046009200F09F
:10444000DDF9421CDDE9002300F04F81801A00EB0A
:104450000A081968BA6048F001005144BD42506032
:10446000196000F02981B9F10F0F40F227816868C7
:10447000A9F10C0C2CF0070C00F0010040EA0C0034
:1044800068604FF0050E05EB0C00BCF10F0FC0E9A2
:1044900001EE00F2328150681546124B1A688A42CA
:1044A00038BF1960104B1A688A4238BF196094E00F
:1044B000AA1943F0010346F001066E602046BA6077
:1044C000536000F043F90835284603B0BDE8F08F8B
:1044D000D9681A44A1E600BFE408FF1F6010FF1F5F
:1044E0003010FF1F5810FF1F5C10FF1FEC08FF1F4C
:1044F000EC0CFF1FB2F5206F4FEA522363D3142B4D
:1045000000F2B78003F15C01C9005B3307EB010ED9
:104510007958AEF1080E8E4500F091804B6823F07B
:104520000303934202D989688E45F7D1D1F80CE094
:104530007A68C5E9021ECEF80850CD60D6E6142B85
:1045400059D9542B00F29D80330B03F16F0003F116
:104550006E0CC3008AE60EF1010E1EF0030F05F18A
:1045600008057FF4D5AE51E0424445465368D8F87B
:104570000C1043F00103536055F8083F2046D96002
:104580008B6000F0E3F8F3E6F00806F1080237E686
:104590002A442046536843F001035360083500F075
:1045A000D5F8E5E6A919204646F0010643F00104D6
:1045B0006E60C7E90411C1E902CC4C60AB5000F059
:1045C000C5F80835D4E6930903F13901C900383339
:1045D0009CE7BD425FD0BD68686820F0030846458F
:1045E000A8EB060302D80F2B3FF762AF204600F07E
:1045F000ADF80025BCE603F15C0003F15B0CC300E1
:1046000034E659F808394B4540F0968010F0030F16
:1046100000F1FF30F5D17B6823EA01037B6049009C
:1046200099423FF6C0AE19B9BDE649000EF1040E3D
:104630001942FAD0704667E603F11008D0E69A10E6
:104640004FF001087B6808FA02F21A437A6070E7BB
:1046500002EB08014942C1F30B0A51462046009281
:1046600000F0CCF8431CDDE900237FF4EFAEDA461E
:10467000EFE6542B25D8130B03F16F01C9006E33FD
:1046800044E7B3F5AA7F25D8F30B03F1780003F1D3
:10469000770CC300EAE5294B186840441860B1E67E
:1046A000CAF30B0CBCF1000F7FF4ACAEBD68C8447C
:1046B00048F001006860F0E61546EEE6012353601D
:1046C00094E7B3F5AA7F23D8D30B03F17801C9008F
:1046D00077331BE740F25452934223D8B30C03F1D3
:1046E0007D0003F17C0CC300C0E5ABF1080BD8449E
:1046F000A8EB02084FF0000AABE605F108012046DE
:10470000009300F08BF9BD68009B68681968C4E6E7
:1047100040F254518B420BD8930C03F17D01C90038
:104720007C33F3E64FF47E737F204FF07E0C9DE5E3
:104730004FF47E717E23E9E67B6870E73010FF1F3F
:10474000014800F097B800BFA411FF1F014800F016
:1047500093B800BFA411FF1F830730B548D0541E83
:10476000002A3FD0CAB2034601E0013C3AD303F825
:10477000012B9D07F9D1032C2DD9CDB245EA052592
:104780000F2C45EA054536D9A4F1100222F00F0C92
:1047900003F1200EE6444FEA121C03F1100242E935
:1047A000045542E9025510327245F8D10CF101026C
:1047B00014F00C0F03EB021204F00F0C13D0ACF149
:1047C000040323F003030433134442F8045B9342CD
:1047D000FBD10CF003042CB1C9B21C4403F8011B3B
:1047E0009C42FBD130BD64461346002CF4D1F9E75E
:1047F00003461446BFE71A46A446E0E738B5074D1E
:104800000022044608462A60FDF7AEFD431C00D096
:1048100038BD2B68002BFBD0236038BD9C11FF1FD7
:10482000014B1868704700BF180EFF1F70B50D4E82
:104830000D4D761BB61006D0002455F8043B01340C
:104840009847A642F9D1094E094D761B00F00EFC9F
:10485000B61006D0002455F8043B01349847A64210
:10486000F9D170BD785000007850000080500000F1
:1048700078500000704700BF704700BFFFFFFFFF88
:1048800090F800F06DE9024520F007016FF0000C90
:1048900010F0070491F820F040F049804FF0000438
:1048A0006FF00700D1E9002391F840F000F1080013
:1048B00082FA4CF2A4FA8CF283FA4CF3A2FA8CF34B
:1048C0004BBBD1E9022382FA4CF200F10800A4FAB2
:1048D0008CF283FA4CF3A2FA8CF3E3B9D1E9042306
:1048E00082FA4CF200F10800A4FA8CF283FA4CF33D
:1048F000A2FA8CF37BB9D1E9062301F1200182FAF7
:104900004CF200F10800A4FA8CF283FA4CF3A2FAFC
:104910008CF3002BC6D0002A04BF04301A4612BA0A
:10492000B2FA82F2FDE8024500EBD2007047D1E90D
:10493000002304F00305C4F100004FEAC50514F09C
:10494000040F91F840F00CFA05F562EA05021CBF6D
:1049500063EA050362464FF00004A9E7024B13B176
:10496000024800F005B8704700000000294C000024
:10497000002301461A46184600F06AB9F8B5244FDC
:104980000C460646FFF7DCFEBB685D68C4F57E6139
:104990000F3125F003054B1923F47F6323F00F0338
:1049A000A3F58054B4F5805F07DB00213046FFF7A4
:1049B00025FFBB682B44984204D03046FFF7C6FE63
:1049C0000020F8BD61423046FFF718FF01300DD0DE
:1049D000104ABB682D1B45F001055D601368304629
:1049E0001B1B1360FFF7B2FE0120F8BD002130460B
:1049F000FFF704FFBA68831A0F2BDEDD43F00103D3
:104A00005360054B03491B68C01A0860D5E700BF17
:104A1000E408FF1F3010FF1FEC0CFF1F002961D0BE
:104A2000F8B50C460646FFF78BFE54F8042C7B4F76
:104A3000A4F1080522F0010105EB010CB868DCF8CF
:104A40000430604523F0030300F08B80D207CCF8DC
:104A5000043032D454F8082CAD1A1144AA6807F176
:104A6000080082426AD00CEB0304D4F804E0EC683E
:104A7000D4601EF0010FA26000F0978041F00103A6
:104A80006B60CCF80010B1F5007F35D27868CB08A8
:104A90000122490901338A40024357F833107A60F2
:104AA00007EBC302083AC5E9021247F83350CD605C
:104AB0003046BDE8F840FFF749BE0CEB03025268F0
:104AC000D00710D4194407F10800DCF808308342FD
:104AD00073D0DCF80C20DA60936041F001036B6066
:104AE0006950D0E7704741F00103B1F5007F44F809
:104AF000043CCCF80010C9D3B1F5206F4FEA512324
:104B000048D28B0903F1390003F13802C300F818C9
:104B1000FB580838984259D05A6822F003028A425A
:104B200002D99B689842F7D1D868C5E90230856000
:104B3000DD603046BDE8F840FFF708BE0CEB03022D
:104B40005268D20763D40B44DCE90212CA60916058
:104B500043F001026A603046EB50BDE8F840FFF7D1
:104B6000F5BD0B44D10707D454F8082CAD1A1344F3
:104B7000D5E90212CA60916043F001026A60284AD6
:104B8000BD6012689A4293D8264B30461968FFF7E9
:104B9000F5FE8DE7142B0AD9542B1FD80B0B03F10C
:104BA0006F0003F16E02C300B1E719448DE703F112
:104BB0005C0003F15B02C300A9E741F00103C7E910
:104BC0000455C5E902006B60695071E7796892107D
:104BD000012404FA02F20A437A60A6E7B3F5AA7F39
:104BE00006D8CB0B03F1780003F17702C3008EE700
:104BF00040F25452934206D88B0C03F17D0003F12E
:104C00007C02C30083E74FF47E737E227FE741F08E
:104C100001036B60CCF800104AE700BFE408FF1FF7
:104C2000F00CFF1F6010FF1F38B5074D074C2C1B01
:104C3000A41005D0013C55F8043D9847002CF9D14B
:104C4000BDE8384000F01CBA000000000000000081
:104C50002DE9F047DFF87CA00646DAF80000984618
:104C60000F469146FFF706FE184B1C6824B3656893
:104C70001F2D24DC5EB96B1C0235DAF8000063607E
:104C800044F82570FFF7F8FD0020BDE8F08704EB3D
:104C900085010123C1F88890D4F88821AB401A43DC
:104CA000022EC4F88821C1F80881E4D1D4F88C21FF
:104CB0001A43C4F88C21DEE7054C1C60D7E7DAF80C
:104CC0000000FFF7D9FD4FF0FF30DEE7A811FF1F0E
:104CD000AC11FF1F1C0EFF1F7701080F010100FF21
:104CE00077E2FE0F010300FF77E2FE0F010800FFED
:104CF00077E2FE0F010900FF77E2FE0F010400FFDB
:104D000065000000000000006900000000000000D5
:104D10007700FC0F0101000077E2FE0F01000000A8
:104D20007703080F010000007704080F0200FC0061
:104D30007700080F080000000000000004000000D9
:104D40007700080F080300000000FC0200000000CC
:104D50007700080F080400000000000100000000B8
:104D60007700FC0F000000007700FD0F000000003E
:104D70000000FC0002000000750000000000FFFFC2
:104D80000000000000000000C11F0000E51F00003F
:104D900075200000712000006D20000069200000D7
:104DA00065200000891F0000452000004120000010
:104DB00039200000312000002920000019200000C7
:104DC0000920000005200000FD1F0000F51F000065
:104DD000691F0000711F0000791F0000811F000083
:104DE000CD1F0000B51F00004008FE4340A0044056
:104DF0004408FE4344A004400018FE4300C00440A1
:104E00003000FE43309004403400FE4334900440B0
:104E10001C18FE431CC004401018FE4310C0044080
:104E20000818FE4308C004400C18FE430CC00440A0
:104E30000C10FE430CB004401010FE4310B00440B0
:104E40001810FE4318B004401C10FE431CB0044070
:104E50001410FE4314B004400418FE4304C0044080
:104E60000010FE4300B004400008FE4300A00440D0
:104E70000408FE4304A004400C08FE430CA00440B8
:104E80000808FE4308A004401418FE4314C0044060
:104E90001818FE4318C004400410FE4304B0044038
:104EA0000810FE4308B004406820FE4368D0044068
:104EB0001400FE43149004403800FE433890044030
:104EC0003C00FE433C9004404000FE4340900440C0
:104ED0004808FE4348A004404C08FE434CA0044050
:104EE0002808FE4328A004402C08FE432CA00440C0
:104EF0006020FE4360D004406420FE4364D0044040
:104F00002010FE4320B004402410FE4324B004408F
:104F10002810FE4328B004402C10FE432CB004405F
:104F20004400FE43449004407000FE4370900440EF
:104F30007400FE43749004406800FE43689004408F
:104F40005008FE4350A004405808FE4358A00440B7
:104F50005C08FE435CA004405408FE4354A0044097
:104F60002018FE4320C004402418FE4324C00440FF
:104F70001008FE4310A004401408FE4314A004408F
:104F80003818FE4338C004403418FE4334C004408F
:104F90003018FE4330C004403C18FE433CC004407F
:104FA0002C18FE432CC004402820FE4328D0044087
:104FB0002C20FE432CD004400020FE4300D00440AF
:104FC0000420FE4304D004400820FE4308D00440DF
:104FD0000C20FE430CD004401020FE4310D00440AF
:104FE0001420FE4314D00440000000000000000024
:104FF000CD3A0000C53A0000C13A0000BD3A0000B9
:10500000B93A0000B53A0000B13A0000AD3A0000EC
:1050100000FFFFFF000100008408FF1F12000000D6
:10502000000200004008FF1F4300000000030000D2
:105030009808FF1F00000000010309049C08FF1FDF
:105040000000000002030904B408FF1F0000000074
:1050500003030904CC08FF1F00000000000000004B
:10506000000000000000000000151915F8B500BF91
:10507000F8BC08BC9E4670475D490000350400003E
:04508000F8B500BFC0
:10508400E00704EC00FB0F0000FBC013BFE607C001
:10509400BFEC07C0BFEE07CFEB07ECF5EA07FCB2A5
:1050A400FF0E72FCB2FF0E76FCB2FF0E77FCB2FF6D
:1050B4000E9EFDFCB2FF0E73624C69DD6D4C77DD14
:1050C4001D4C72DD294C65DD324C75DD62FCA1FF9F
:1050D4000ED5EA07DFC8AFE60712ECEB070FFCB208
:1050E400FF0E119BA793DFF6FE4C00EEE3FF118B3E
:1050F400FCA1FF0EA793DFF6EED6FF61FFFCF8FFDD
:105104000E8F02084C0FDD0B624CFFDF11FCC4084C
:105114000FEFF5624CFFDF06FC04F00EEFF5C36100
:10512400CFC262FCA1FF0EEEA7FFE5EA07EF03E59D
:10513400EA07FE0200EF9A5100FCA1FF0ED7FFFF21
:10514400FFFFFFFFFFFFFFFFFFFFFF00884D000091
:1051540000000000E803000000000000113100001E
:105164003C13FF1F280000001A000000400000004C
:105174004000000001010000F04F000000000000AA
:10518400E803000000000000FFFFFFFF010A040025
:1051940009024300020100C03209040000010202B6
:1051A4000100052400100105240101010424020664
:1051B40005240600010705820310004009040100CC
:1051C400020A0000000705030240000007058402EC
:1051D400400000001201100102000040C0168304C8
:1051E40077020102030100000403090418035400B8
:1051F400650065006E007300790064007500690045
:105204006E006F0016035500530042002000530047
:1052140065007200690061006C0000000C0300006E
:10522400000000000000000000000000000000007A
:10523400000000000000000000000000E408FF1F60
:10524400E408FF1FEC08FF1FEC08FF1FF408FF1F12
:10525400F408FF1FFC08FF1FFC08FF1F0409FF1FC1
:105264000409FF1F0C09FF1F0C09FF1F1409FF1F6E
:105274001409FF1F1C09FF1F1C09FF1F2409FF1F1E
:105284002409FF1F2C09FF1F2C09FF1F3409FF1FCE
:105294003409FF1F3C09FF1F3C09FF1F4409FF1F7E
:1052A4004409FF1F4C09FF1F4C09FF1F5409FF1F2E
:1052B4005409FF1F5C09FF1F5C09FF1F6409FF1FDE
:1052C4006409FF1F6C09FF1F6C09FF1F7409FF1F8E
:1052D4007409FF1F7C09FF1F7C09FF1F8409FF1F3E
:1052E4008409FF1F8C09FF1F8C09FF1F9409FF1FEE
:1052F4009409FF1F9C09FF1F9C09FF1FA409FF1F9E
:10530400A409FF1FAC09FF1FAC09FF1FB409FF1F4D
:10531400B409FF1FBC09FF1FBC09FF1FC409FF1FFD
:10532400C409FF1FCC09FF1FCC09FF1FD409FF1FAD
:10533400D409FF1FDC09FF1FDC09FF1FE409FF1F5D
:10534400E409FF1FEC09FF1FEC09FF1FF409FF1F0D
:10535400F409FF1FFC09FF1FFC09FF1F040AFF1FBC
:10536400040AFF1F0C0AFF1F0C0AFF1F140AFF1F69
:10537400140AFF1F1C0AFF1F1C0AFF1F240AFF1F19
:10538400240AFF1F2C0AFF1F2C0AFF1F340AFF1FC9
:10539400340AFF1F3C0AFF1F3C0AFF1F440AFF1F79
:1053A400440AFF1F4C0AFF1F4C0AFF1F540AFF1F29
:1053B400540AFF1F5C0AFF1F5C0AFF1F640AFF1FD9
:1053C400640AFF1F6C0AFF1F6C0AFF1F740AFF1F89
:1053D400740AFF1F7C0AFF1F7C0AFF1F840AFF1F39
:1053E400840AFF1F8C0AFF1F8C0AFF1F940AFF1FE9
:1053F400940AFF1F9C0AFF1F9C0AFF1FA40AFF1F99
:10540400A40AFF1FAC0AFF1FAC0AFF1FB40AFF1F48
:10541400B40AFF1FBC0AFF1FBC0AFF1FC40AFF1FF8
:10542400C40AFF1FCC0AFF1FCC0AFF1FD40AFF1FA8
:10543400D40AFF1FDC0AFF1FDC0AFF1FE40AFF1F58
:10544400E40AFF1FEC0AFF1FEC0AFF1FF40AFF1F08
:10545400F40AFF1FFC0AFF1FFC0AFF1F040BFF1FB7
:10546400040BFF1F0C0BFF1F0C0BFF1F140BFF1F64
:10547400140BFF1F1C0BFF1F1C0BFF1F240BFF1F14
:10548400240BFF1F2C0BFF1F2C0BFF1F340BFF1FC4
:10549400340BFF1F3C0BFF1F3C0BFF1F440BFF1F74
:1054A400440BFF1F4C0BFF1F4C0BFF1F540BFF1F24
:1054B400540BFF1F5C0BFF1F5C0BFF1F640BFF1FD4
:1054C400640BFF1F6C0BFF1F6C0BFF1F740BFF1F84
:1054D400740BFF1F7C0BFF1F7C0BFF1F840BFF1F34
:1054E400840BFF1F8C0BFF1F8C0BFF1F940BFF1FE4
:1054F400940BFF1F9C0BFF1F9C0BFF1FA40BFF1F94
:10550400A40BFF1FAC0BFF1FAC0BFF1FB40BFF1F43
:10551400B40BFF1FBC0BFF1FBC0BFF1FC40BFF1FF3
:10552400C40BFF1FCC0BFF1FCC0BFF1FD40BFF1FA3
:10553400D40BFF1FDC0BFF1FDC0BFF1FE40BFF1F53
:10554400E40BFF1FEC0BFF1FEC0BFF1FF40BFF1F03
:10555400F40BFF1FFC0BFF1FFC0BFF1F040CFF1FB2
:10556400040CFF1F0C0CFF1F0C0CFF1F140CFF1F5F
:10557400140CFF1F1C0CFF1F1C0CFF1F240CFF1F0F
:10558400240CFF1F2C0CFF1F2C0CFF1F340CFF1FBF
:10559400340CFF1F3C0CFF1F3C0CFF1F440CFF1F6F
:1055A400440CFF1F4C0CFF1F4C0CFF1F540CFF1F1F
:1055B400540CFF1F5C0CFF1F5C0CFF1F640CFF1FCF
:1055C400640CFF1F6C0CFF1F6C0CFF1F740CFF1F7F
:1055D400740CFF1F7C0CFF1F7C0CFF1F840CFF1F2F
:1055E400840CFF1F8C0CFF1F8C0CFF1F940CFF1FDF
:1055F400940CFF1F9C0CFF1F9C0CFF1FA40CFF1F8F
:10560400A40CFF1FAC0CFF1FAC0CFF1FB40CFF1F3E
:10561400B40CFF1FBC0CFF1FBC0CFF1FC40CFF1FEE
:10562400C40CFF1FCC0CFF1FCC0CFF1FD40CFF1F9E
:10563400D40CFF1FDC0CFF1FDC0CFF1FFFFFFFFF60
:105644000000020000000000000000006410FF1FC2
:10565400CC10FF1F3411FF1F0000000000000000E9
:105664000000000000000000000000000000000036
:105674000000000000000000000000000000000026
:105684000000000000000000000000000000000016
:105694000000000000000000000000000000000006
:1056A40000000000000000000000000000000000F6
:1056B40000000000000000000000000000000000E6
:1056C40000000000000000000000000000000000D6
:1056D40000000000000000000000000000000000C6
:1056E40001000000000000000E33CDAB34126DE663
:1056F400ECDE05000B0000000000000000000000CC
:105704000000000000000000000000000000000095
:105714000000000000000000000000000000000085
:105724000000000000000000000000000000000075
:105734000000000000000000000000000000000065
:105744000000000000000000000000000000000055
:105754000000000000000000000000000000000045
:105764000000000000000000F80CFF1FA011FF1F44
:00000001FF
================================================
FILE: assets/hw/syscon_flasher/syscon_flasher_v2.05_teensy_4.0.hex
================================================
:0200000460009A
:100000004643464200000156000000000103030081
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:1000300000000000000000000000000000000000C0
:1000400000000000010408000000000000000000A3
:100050000000200000000000000000000000000080
:100060000000000000000000000000000000000090
:100070000000000000000000000000000000000080
:10008000EB04180A063204260000000000000000FD
:10009000050404240000000000000000000000002F
:1000A0000000000000000000000000000000000050
:1000B0000604000000000000000000000000000036
:1000C0000000000000000000000000000000000030
:1000D00020041808000000000000000000000000DC
:1000E0000000000000000000000000000000000010
:1000F0000000000000000000000000000000000000
:10010000D8041808000000000000000000000000F3
:100110000204180804200000000000000000000095
:1001200000000000000000000000000000000000CF
:10013000600400000000000000000000000000005B
:1001400000000000000000000000000000000000AF
:10015000000000000000000000000000000000009F
:10016000000000000000000000000000000000008F
:10017000000000000000000000000000000000007F
:10018000000000000000000000000000000000006F
:10019000000000000000000000000000000000005F
:1001A000000000000000000000000000000000004F
:1001B000000000000000000000000000000000003F
:1001C000000100000010000001000000000000001D
:1001D000000001000000000000000000000000001E
:1001E000000000000000000000000000000000000F
:1001F00000000000000000000000000000000000FF
:10020000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
:10021000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
:10022000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
:10023000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
:10024000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:10025000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
:10026000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
:10027000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
:10028000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
:10029000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
:1002A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
:1002B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
:1002C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:1002D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
:1002E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:1002F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
:10030000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:10031000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
:10032000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:10033000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
:10034000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:10035000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
:10036000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:10037000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10039000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1003B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1003D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1003F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:10040000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
:10041000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
:10042000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
:10043000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
:10044000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
:10045000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
:10046000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
:10047000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
:10048000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
:10049000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
:1004A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
:1004B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
:1004C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
:1004D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
:1004E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
:1004F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
:10050000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
:10051000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
:10052000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
:10053000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
:10054000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
:10055000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
:10056000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
:10057000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
:10058000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
:10059000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
:1005A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
:1005B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
:1005C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
:1005D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
:1005E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
:1005F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
:10060000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
:10061000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
:10062000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
:10063000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
:10064000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
:10065000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
:10066000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
:10067000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
:10068000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
:10069000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
:1006A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
:1006B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
:1006C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
:1006D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
:1006E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
:1006F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
:10070000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
:10071000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
:10072000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
:10073000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
:10074000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
:10075000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
:10076000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
:10077000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
:10078000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
:10079000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
:1007A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
:1007B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
:1007C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
:1007D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
:1007E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
:1007F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
:10080000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
:10081000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
:10082000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
:10083000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
:10084000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
:10085000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
:10086000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
:10087000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
:10088000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
:10089000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
:1008A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
:1008B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
:1008C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
:1008D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
:1008E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
:1008F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
:10090000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
:10091000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
:10092000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
:10093000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
:10094000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
:10095000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
:10096000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
:10097000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
:10098000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
:10099000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
:1009A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
:1009B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
:1009C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
:1009D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
:1009E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
:1009F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
:100A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
:100A1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
:100A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
:100A3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
:100A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
:100A5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
:100A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
:100A7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
:100A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
:100A9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
:100AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
:100AB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
:100AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
:100AD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
:100AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
:100AF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
:100B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
:100B1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
:100B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
:100B3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
:100B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
:100B5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
:100B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
:100B7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
:100B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
:100B9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
:100BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
:100BB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
:100BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
:100BD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
:100BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
:100BF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
:100C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
:100C1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
:100C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
:100C3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
:100C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
:100C5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
:100C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
:100C7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
:100C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
:100C9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
:100CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
:100CB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
:100CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
:100CD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
:100CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
:100CF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
:100D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
:100D1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
:100D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
:100D3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
:100D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
:100D5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
:100D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
:100D7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
:100D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
:100D9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
:100DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
:100DB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
:100DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
:100DD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
:100DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
:100DF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
:100E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
:100E1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
:100E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
:100E3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
:100E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
:100E5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
:100E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
:100E7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
:100E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
:100E9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
:100EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
:100EB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
:100EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
:100ED000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
:100EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
:100EF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
:100F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
:100F1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
:100F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
:100F3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
:100F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
:100F5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
:100F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
:100F7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
:100F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
:100F9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
:100FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
:100FB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
:100FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
:100FD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
:100FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
:100FF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
:10100000D1002043491600600000000000000000ED
:1010100020100060001000600088006000000000E8
:10102000000000600094000000000000FFFFFFFFD0
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
:1010E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
:1010F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
:10110000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
:10111000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
:10112000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
:10113000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
:10114000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
:10115000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
:10116000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
:10117000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
:10118000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
:10119000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
:1011A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
:1011B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
:1011C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
:1011D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
:1011E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
:1011F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
:10120000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
:10121000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
:10122000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
:10123000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:10124000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
:10125000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
:10126000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
:10127000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
:10128000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
:10129000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
:1012A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
:1012B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:1012C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
:1012D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:1012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
:1012F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
:10130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
:10131000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:10132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
:10133000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:10134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
:10135000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:10136000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10137000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10138000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:10139000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1013A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1013B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1013C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1013D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:1013F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:10140000814205D051F8043B40F8043B8242F9D8B0
:10141000704700BF044A05494FF0000342F8043BFF
:101420009142FBD8704700BFC012002080170020F7
:101430002DE98848BFF34F8F00BF00BF00BF00BF3A
:1014400000F016F9674B0822C3F8542100BF00BF13
:1014500000BF00BF00BF00BF00BF00BF00BF00BF94
:1014600000BF00BF00BF00BF00BF00BF5E4A5F49B2
:101470005F48FFF7C5FF5F4A5F496048FFF7C0FF5D
:101480005F4CFFF7C7FF4FF470004FF0E0210023DF
:101490005C4AC1F8880D44F823200133B02BFAD1FF
:1014A000594B8021594A03F8011B9342FBD14FF05D
:1014B000E0254C4E4FF08039DFF880B1DFF880A195
:1014C0004FF0FF31C5F8084D0027C6F80491C6F863
:1014D00000B1C6F8F490C6F8F0A0D5F8243DDFF8C6
:1014E000648143F4E0234A4AC5F8243DD8F81C300F
:1014F00023F07F0343F04003C8F81C30D8F82430B1
:1015000023F07F0343F04003C8F824309166D1668E
:101510001167516700F0B4F83E4B3F49A3633F4B5E
:10152000E36363236B610323AF612B613C4BC5F81D
:10153000203DD5F8FC3D43F08073C5F8FC3D394BA8
:101540001A6842F001021A605B680B6000F020F933
:10155000C6F804913448C6F800B1C6F8F490C6F84D
:10156000F0A000F0B1FAD8F86C10304B304A41F4DA
:101570004051C8F86C101F60C3F80871C3F81871A7
:10158000C3F82871C3F83871936BDB0708D442F6AF
:101590001563284951651365936B43F00103936309
:1015A000234A254C936843F00113936000F054FAEA
:1015B00000F096FA00F01AF900F05CF82368132B9B
:1015C000FCD900F0ABF92368B3F5967FFBD300F0AC
:1015D00055F800F051F800F073FA00F079FA30BFD6
:1015E000FDE700BF00800D40C0570000FC1B0060FD
:1015F00000000000C0120020C07300600000002046
:1016000000100020053A000000E400E0A0E400E043
:1016100000C00A40FD4D000024170020014E0000CC
:1016200000002020001000E00046C32300400840D6
:1016300000400D400000C056281700201B10182045
:101640000C0D111300C00F40054B4FF42A01054A41
:1016500005485A641864054A99639546FFF7E8FE01
:1016600000C00A40ABAAAAAA0700200000800720F9
:10167000704700BF704700BF704700BF00BF704792
:1016800010B44FF0E023002110243148C3F8941D1A
:10169000C3F89C4D1124C3F8A00D2E48C3F89C4DEF
:1016A0001224C3F8A00D2C48C3F89C4D2B4AC3F854
:1016B000A00D2B4C42F015022A48C3F89C4DC3F8EC
:1016C000A00D294C2948C3F89C4DC3F8A00D284C07
:1016D000C3F89C2D2748284AC3F8A04DC3F89C0D99
:1016E000C3F8A02D02F5A022244C0C322448C3F8E4
:1016F0009C4DC3F8A02D234AC3F89C0D224CC3F87F
:10170000A02D02F14062C3F89C4D2048C3F8A02DE3
:101710000C32C3F89C0DC3F8A02D00BF00BF00BF62
:1017200000BF00BF0122C3F8942DBFF34F8FBFF35A
:101730006F8FC3F8501FBFF34F8FBFF36F8FD3F876
:10174000142D5DF8044B42F44032C3F8142D704759
:101750003F00001025000807090010008017002036
:1017600013002000210002071400002025000813A8
:10177000090000101600202027000B13170000405E
:10178000180000602F000B07190000701A0000807D
:10179000F0B4154A40274FF480314FF480564FF48F
:1017A00000554FF4404443F24200136913F0020F16
:1017B0000ED113F4005F0FD013F4805F0ED0002B16
:1017C000F3DA13F4803F0BD15B060BD5F0BC704706
:1017D000946151619061E8E75561E6E75661E4E79D
:1017E0009161E2E75761E0E700800D403F4A032046
:1017F0003F49F3EE095AD2F880304FF0000C9FEDCC
:101800003D6A23F001039FED3C5A30B4C2F88030AA
:10181000C2F89000D1F8E010384DCBB2384C3948BE
:101820002B6007EE903A0B0DC1F30B21F8EEE77A2F
:1018300006EE903A07EE101A334BB8EEC77A2160E5
:10184000F8EEE66A314937EEC66A37EEC55A76EEEB
:10185000C76A77EEE57A26EE266AC3ED006A25EEC2
:10186000265AD2F8803067EEA64AC0ED007AC6EE5E
:10187000275A274885EE276AC4EEA76A75EE875A6D
:10188000FCEEE55A36EE076A15EE904ABCEEC66AE3
:1018900043EA045376EE877AC2F8803016EE103AA7
:1018A000D2F89041FCEEE77A01EA0341214317EEBA
:1018B000903AC2F89011C3F30B03D2F890110B4386
:1018C0001449C2F89031D2F8803043F00203C2F8D4
:1018D0008030114B80F840C0C1F840314FF0E02318
:1018E000012230BCC3F80821704700BF00810D40C1
:1018F00000441F400000AA420000B4421417002018
:1019000010170020181700201C1700200000FF0FE0
:1019100000E400E000100020C53B0000314B40F621
:10192000617210B5C3F8202140F2044400F0D4F8ED
:101930002D4A2E49D2F880302D4843F00303C2F8D7
:1019400080302C4BC1F8604102681A4203D1D1F8B3
:10195000A8319A071BD0254A4FF00041244B596308
:10196000D2F8403143F00203C2F84031D2F840319E
:101970009B07FBD44FF400304FF0E0211C4B4FF09D
:101980000042C1F88C0219209A6300F0ADF8184AA1
:101990004FF08040154C002190630A20164B1160D7
:1019A0004FF42072C4F8A801184600F085F84FF4EF
:1019B000800203464FF4810040F243111860C4F8DE
:1019C00058311A640D4B0E4AC4F84811C3F804226A
:1019D0004FF0E0224FF400310123C2F80C11C4F89B
:1019E000403110BD00800D4000C00F4000002E406F
:1019F00000900D40001C1E00000000200010002080
:101A0000AD3D000008B50E4B1B6E9B0700D4FBBE1E
:101A100072B60C4B00200C4AC3F8400103F160433E
:101A20000A49A3F55F2311649D46BFF34F8F4FF41E
:101A300000130748074ADB6902609B68984700BFAC
:101A400000441F4000002E4000C00A400300200058
:101A500000802020000012EB104BA020104AD96E0D
:101A600041F4403110B4D96640F23764D96E41F484
:101A70004071D96654649064936C1B06FCD4094A87
:101A800040F23761A02351649364936C13F0800398
:101A9000FBD1054A13705DF8044B704700C00F403E
:101AA00000400C4000800C404F170020F8B500BFEC
:101AB000F8BC08BC9E4670475FF800F0DD5300009C
:101AC0005FF800F0B15400005FF800F091320000C0
:101AD0005FF800F0ED3600005FF800F01D450000F3
:101AE0005FF800F0113900005FF800F08135000068
:041AF00045000000AD
:101AF4001603550053004200200053006500720095
:101B0400690061006C000000180354006500650062
:101B14006E00730079006400750069006E006F0048
:101B24000403090409026200030100C032080B0027
:101B3400020202010009040000010202010005245E
:101B440000100105240101010424020605240600F5
:101B5400010705820310001009040100020A0000B5
:101B64000007050302400000070584024000000945
:101B740004020002FF6AFF0007058102400001071A
:101B8400050102400001000009026200030100C0D7
:101B940032080B00020202010009040000010202E3
:101BA400010005240010010524010101042402069A
:101BB400052406000107058203100005090401003D
:101BC400020A000000070503020002000705840260
:101BD4000002000904020002FF6AC700070581022F
:101BE4000002010705010200020100000A060002CA
:081BF400EF02014001000000B6
:101BFC0000000000000000000000000000000000D9
:101C0C0000000000000000000000000000000000C8
:101C1C000548064B1B1AD90F01EBA301491002D042
:101C2C00034B03B118477047C0120020C0120020AC
:101C3C000000000008B5054B1BB105490548AFF382
:101C4C000080BDE80840FFF7E3BF00BF00000000C4
:101C5C00BC1600200094006008B504F0A5FD1049E6
:101C6C00104A4FF0640C104B48681268A3FB023208
:101C7C00920C0CFB02F24B681B1A9A42FBD804F034
:101C8C003FFD002805DD04F07FFD04F039FD002840
:101C9C00F9DC00210D20BDE8084003F0BDBA00BFFF
:101CAC00001000E00C08002083DE1B432DE9F843F4
:101CBC00284C01210D20284E03F0AEFA04F1040843
:101CCC006521264DDFF89C90254F284602F08CFFAD
:101CDC00D9F8041032686423A7FB0202920C03FBB0
:101CEC0002F2D9F804305B1A9A42FAD8284602F06C
:101CFC0013FD444502D014F8011FE6E7D9F804009F
:101D0C006424174B32681749A3FB0232920C04FB74
:101D1C0002F24B681B1A9A42FBD8134C00210D207F
:101D2C000E4D03F079FA42F21077266803E023682F
:101D3C009B1BBB420AD8284602F09CFC0028F6DD0F
:101D4C00064802F0E9FCC0B2BDE8F883EF20BDE81C
:101D5C00F88300BF880200200C080020EC0800204B
:101D6C0083DE1B43001000E0281700202DE9F84308
:101D7C0001210D20BF4C03F04FFA01210D2003F07F
:101D8C004BFA04F104086921BB4DBC4EDFF8F49208
:101D9C00BB4F304602F028FFD9F804102A686423A0
:101DAC00A7FB0202920C03FB02F2D9F804305B1A77
:101DBC009A42FAD8304602F0AFFC444502D014F8EF
:101DCC00011FE6E7D9F804006421AD4B2A68A3FB98
:101DDC000232920C01FB02F2AA494B681B1A9A427E
:101DEC00FBD800210D2003F017FAA44802F094FC54
:101DFC00C0B200283CD1A44C01210D209F4E03F011
:101E0C000BFA04F105087721DFF878929C4F3046E5
:101E1C0002F0EAFED9F804102A686423A7FB020238
:101E2C00920C03FB02F2D9F804305B1A9A42FAD8EE
:101E3C00304602F071FC444502D014F8011FE6E76D
:101E4C00D9F8040064218E4B2A68A3FB0232920C51
:101E5C0001FB02F28B494B681B1A9A42FBD80021FA
:101E6C000D2003F0D9F9854802F056FCC0B210B130
:101E7C00E020BDE8F883854C01210D207F4E03F056
:101E8C00CBF904F105087721DFF8F8917C4F304647
:101E9C0002F0AAFED9F804102A686423A7FB0202F8
:101EAC00920C03FB02F2D9F804305B1A9A42FAD86E
:101EBC00304602F031FC444502D014F8011FE6E72D
:101ECC00D9F8040064216E4B2A68A3FB0232920CF1
:101EDC0001FB02F26B494B681B1A9A42FBD800219A
:101EEC000D2003F099F9654802F016FCC0B20028E9
:101EFC00BED1674C01210D20604E03F08DF904F129
:101F0C0005087721DFF87C915D4F304602F06CFEBE
:101F1C00D9F804102A686423A7FB0202920C03FB75
:101F2C0002F2D9F804305B1A9A42FAD8304602F021
:101F3C00F3FB444502D014F8011FE6E7D9F804007E
:101F4C0064214F4B2A68A3FB0232920C01FB02F274
:101F5C004C494B681B1A9A42FBD800210D2003F008
:101F6C005BF9464802F0D8FBC0B2002880D1494C3E
:101F7C0001210D20414E03F04FF904F106087721A1
:101F8C00DFF800913E4F304602F02EFED9F80410D7
:101F9C002A68A7FB02326423920C03FB02F2D9F8E5
:101FAC0004305B1A9A42FAD8304602F0B5FB44452D
:101FBC0002D014F8011FE6E7D9F804006421304B75
:101FCC002A68A3FB0232920C01FB02F22D494B68EA
:101FDC001B1A9A42FBD800210D2003F01DF927484B
:101FEC0002F09AFBC0B200287FF442AF2A4C0121C8
:101FFC000D20224E03F010F904F105087721DFF8CB
:10200C0084901F4F304602F0EFFDD9F804102A6877
:10201C00A7FB02326423920C03FB02F2D9F80430C2
:10202C005B1A9A42FAD8304602F076FB444502D04D
:10203C0014F8011FE6E7D9F804006424104B2A6851
:10204C001049A3FB0232920C04FB02F24B681B1AE0
:10205C009A42FBD800210D2003F0DEF8074802F06D
:10206C005BFBC0B200287FF403AFBDE8F843FFF779
:10207C001DBE00BF900200200C080020EC080020C0
:10208C0083DE1B43001000E098020020A002002019
:10209C00A8020020B0020020000300202DE9F04F20
:1020AC00DFF87082012183B00D2003F0B5F8934C5A
:1020BC0008F1050745467721914EDFF84CA2DFF871
:1020CC004492304602F090FDDAF804102268642342
:1020DC00A9FB0202920C03FB02F2DAF804305B1A41
:1020EC009A42FAD8304602F017FBBD4202D015F8DE
:1020FC00011FE6E7834BDAF8040022688249A3FB50
:10210C0002326423920C03FB02F24B681B1A9A42B4
:10211C00FBD800210D2003F07FF8794802F0FCFA7F
:10212C0010F0FF0040F09480784D0121ADF80400D0
:10213C008DF806000D2003F06FF805F10C0A7721DD
:10214C006F4EDFF8C4B1DFF8BC91304602F04CFDA5
:10215C00DBF8041022686423A9FB0202920C03FB37
:10216C0002F2DBF804305B1A9A42FAD8304602F0DD
:10217C00D3FA554502D015F8011FE6E7614BDBF8A1
:10218C00040022686049A3FB02326423920C03FB17
:10219C0002F24B681B1A9A42FBD800210D2003F067
:1021AC003BF8574802F0B8FAC0B2A0BBFFF77EFD6F
:1021BC00054688BB524802F0AFFA824650485FFA97
:1021CC008AFA4F4DDFF840B18DF804A002F0A4FA62
:1021DC005FFA80F901210D204A4E8DF8059003F02D
:1021EC001BF87721284602F0FFFCDBF8041022686C
:1021FC00A6FB02326423920C03FB02F2DBF80430E0
:10220C005B1A9A42FAD8284602F086FAB84507D0EB
:10221C0018F8011FE6E7E425284603B0BDE8F08F67
:10222C00384BDBF8040022683749A3FB02326423E5
:10223C00920C03FB02F24B681B1A9A42FBD800214A
:10224C000D2002F0E9FF2E4802F066FAC0B220B170
:10225C00E825284603B0BDE8F08F2D4D01210D2057
:10226C00274E02F0D9FF05F10C087721DFF898B062
:10227C00244F304602F0B8FCDBF804102268A7FBB0
:10228C0002326423920C03FB02F2DBF804305B1A7B
:10229C009A42FAD8304602F03FFA454502D015F87A
:1022AC00011FE6E7174BDBF8040022681649A3FB75
:1022BC0002326423920C03FB02F24B681B1A9A4203
:1022CC00FBD800210D2002F0A7FF0D4802F024FAE4
:1022DC00C0B200289FD1FFF7E9FC054600289BD12E
:1022EC00074802F019FA0446504604F05DFA4846D5
:1022FC0004F05AFAE0B204F057FA8DE70C0800200B
:10230C00EC08002083DE1B43001000E0B802002024
:10231C00C8020020080300202DE9F04F83B04FF0D5
:10232C0000093A4E0DF1040ADFF8ECB0384D4FF0CD
:10233C0072084FEA19224FEA1943802401210D201B
:10234C008DF804406C468DF800808DF801908DF866
:10235C0002208DF8033002F05FFF2E4F41463846C5
:10236C0002F042FCDBF8041032686423A5FB020285
:10237C00920C03FB02F2DBF804305B1A9A42FAD897
:10238C00384602F0C9F9544502D014F8011FE6E7AB
:10239C00DBF8041064223368A5FB03039B0C02FBDF
:1023AC0003F3DBF80420521A9342FAD800210D20D3
:1023BC004FF08008174C642702F02EFF204602F0E5
:1023CC0059F988B9DBF804103268A5FB0232920C7B
:1023DC0007FB02F2DBF804305B1A9A42FAD820466B
:1023EC0002F048F90028EDD0204602F095F9C0B271
:1023FC0004F0DAF9B8F10108E0D109F18009B9F576
:10240C00002F94D1404603B0BDE8F08F0C0800209B
:10241C0083DE1B43EC080020001000E02DE9F04F98
:10242C00644D85B042F210762C6804E02B681B1BBF
:10243C00B34200F2B78004F063F90328F6DD002301
:10244C002F685D4E1C460293ADF80C30CDE900337D
:10245C0005E02B68B268DB1B934280F0A780C4F1C7
:10246C0004010DEB040004F0B9F80444032CF0D97A
:10247C009DF802009DF803309DF800109DF8012096
:10248C0003EB002302EB01229BB292B201334FEA21
:10249C0082299A424FEA832B78D2484EDFF828A142
:1024AC00474D00214FEA192072244FEA19434FF08F
:1024BC00800CADF80C108DF802000D208DF800404A
:1024CC006C46404F8DF801908DF80330CDE9011129
:1024DC0001218DF804C002F09FFE14F8011B384650
:1024EC0002F082FBDAF8040031686423A5FB01C119
:1024FC00890C03FB01F1DAF804301B1A9942FAD863
:10250C00384602F009F90DF105039C42E5D1DAF8E1
:10251C00040064213368A5FB03439B0C01FB03F30C
:10252C00DAF80410091A8B42FAD800210D204FF06A
:10253C008008244C642702F06FFE204602F09AF8C3
:10254C0088B9DAF804003168A5FB0131890C07FB66
:10255C0001F1DAF804301B1A9942FAD8204602F03D
:10256C0089F80028EDD0204602F0D6F8C0B204F06D
:10257C001BF9B8F10108E0D109F18009CB4590D8DD
:10258C0004F0BEF8002805DD04F0FEF804F0B8F8FD
:10259C000028F9DC00210D2002F03EFE002005B0E1
:1025AC00BDE8F08FEB2005B0BDE8F08F012333734D
:1025BC005EE700BF28170020DC0800200C08002074
:1025CC0083DE1B43EC080020001000E02DE9F04FE7
:1025DC00DFF8908289B042F21075D8F8004005E01F
:1025EC00D8F800301B1BAB4200F2238104F088F8B2
:1025FC000328F5DD0023D8F80060934D1C460693A4
:10260C00ADF81C30CDE9043306E0D8F80030AA68E8
:10261C009B1B934280F0158104F11003C4F104015B
:10262C000DEB030003F0DAFF0444032CEDD99DF805
:10263C0012209DF813309DF8101003EB02239DF827
:10264C00112002EB01229BB292B2013391029A4209
:10265C0001914FEA8321039180F0E380DFF8089227
:10266C007A4E7B4CDFF804B27A4D019F01210D208C
:10267C0002F0D2FDC7F3072AC7F307437721764F41
:10268C000293204602F0B0FADBF804103268A5FB86
:10269C0002326423920C03FB02F2DBF804305B1A67
:1026AC009A42FAD8204602F037F84F4502D017F874
:1026BC00011FE6E7DBF804103268A5FB0232642345
:1026CC00920C03FB02F2DBF804305B1A9A42FAD844
:1026DC0000210D2002F0A0FD204602F01DF810F0A4
:1026EC00FF0040F0AA80029B04AF05908DF81730D4
:1026FC005A4BADF81C008DF816A00DF11D0A93E88D
:10270C000300083304908DF8141093E8030006902E
:10271C000D208DF81C10012102F07EFD17F8011B15
:10272C00204602F061FADBF804103268A5FB023295
:10273C006423920C03FB02F2DBF804305B1A9A421E
:10274C00FAD8204601F0E8FF5745E7D1DBF8041032
:10275C003268A5FB02326423920C03FB02F2DBF815
:10276C0004305B1A9A42FAD800210D2002F054FD75
:10277C00204601F0D1FFC0B200285ED1384F0121B4
:10278C000D2002F049FD07F1040A6521204602F0F4
:10279C002BFADBF804103268A5FB02326423920C8E
:1027AC0003FB02F2DBF804305B1A9A42FAD820469B
:1027BC0001F0B2FF574502D017F8011FE6E7DBF82E
:1027CC0004103268A5FB02326423920C03FB02F264
:1027DC00DBF804305B1A9A42FAD800210D2002F083
:1027EC001BFD42F21077D8F800A005E0D8F80030B5
:1027FC00A3EB0A03BB4218D8204601F03BFF00288C
:10280C00F4DD204601F088FF10F0FF000ED1019B93
:10281C0003F580670197FFF71FFA039BBB423FF656
:10282C0024AF002009B0BDE8F08FEF2009B0BDE85F
:10283C00F08FEB2009B0BDE8F08FE42009B0BDE8C3
:10284C00F08F01232B73F2E6DC0800200C0800202B
:10285C00EC08002083DE1B4318030020D802002064
:10286C0088020020281700201D030020001000E023
:10287C002DE9F04FDFF89C8289B042F21075D8F840
:10288C00004005E0D8F800301B1BAB4200F225815C
:10289C0003F036FF0328F5DD0023D8F80060964DD1
:1028AC001C460693ADF81C30CDE9043306E0D8F88D
:1028BC000030AA689B1B934280F0138104F1100333
:1028CC00C4F104010DEB030003F088FE0444032C57
:1028DC00EDD99DF812209DF813309DF8101003EBE4
:1028EC0002239DF8112002EB01229BB292B201331C
:1028FC0091029A4201914FEA8321039180F0E58085
:10290C00DFF814927D4E7E4CDFF810B27D4D019FA6
:10291C0001210D2002F080FCC7F3072AC7F30743FF
:10292C007721794F0293204602F05EF9DBF8041010
:10293C003268A5FB02326423920C03FB02F2DBF833
:10294C0004305B1A9A42FAD8204601F0E5FE4F4556
:10295C0002D017F8011FE6E7DBF804103268A5FB7C
:10296C0002326423920C03FB02F2DBF804305B1A94
:10297C009A42FAD800210D2002F04EFC204601F0BC
:10298C00CBFE10F0FF0040F0B380029B04AF05902B
:10299C008DF817305D4BADF81C008DF816A00DF1BD
:1029AC001D0A93E80300083304908DF8141093E883
:1029BC00030006900D208DF81C10012102F02CFC58
:1029CC0017F8011B204602F00FF9DBF804103268EF
:1029DC00A5FB02326423920C03FB02F2DBF80430F9
:1029EC005B1A9A42FAD8204601F096FE5745E7D179
:1029FC00DBF804103268A5FB02326423920C03FB53
:102A0C0002F2DBF804305B1A9A42FAD800210D204E
:102A1C0002F002FC204601F07FFEC0B2002863D118
:102A2C003B4F01210D2002F0F7FB07F1040A652151
:102A3C00204602F0D9F8DBF804103268A5FB02320C
:102A4C006423920C03FB02F2DBF804305B1A9A420B
:102A5C00FAD8204601F060FE574502D017F8011F46
:102A6C00E6E7DBF804103268A5FB02326423920C13
:102A7C0003FB02F2DBF804305B1A9A42FAD800210D
:102A8C000D2002F0C9FB42F21077D8F800A005E047
:102A9C00D8F80030A3EB0A03BB421AD8204601F049
:102AAC00E9FD0028F4DD204601F036FE10F0FF00B1
:102ABC0001D01B280ED1019B03F580670197FFF70E
:102ACC00CBF8039BBB423FF622AF002009B0BDE818
:102ADC00F08FEF2009B0BDE8F08FEB2009B0BDE816
:102AEC00F08F01232B73F4E6E42009B0BDE8F08FDE
:102AFC00E82009B0BDE8F08FDC0800200C080020AD
:102B0C00EC08002083DE1B4320030020D8020020A9
:102B1C00880200202817002025030020001000E068
:102B2C002DE9F04F924D83B0924E4FF06409924CC8
:102B3C00DFF848A2DFF84882002701210D2000971A
:102B4C008DF8047002F068FB4FF4FA514FF4FA6000
:102B5C0002F062F908218346012002F05DF9394642
:102B6C000746052002F058FBDAF804102A68A8FB87
:102B7C000232920C02EB8202D200DAF804305B1AB9
:102B8C009A42FAD8304601F01FFE052002F0F0FA06
:102B9C000121052002F040FB052002F0E9FA002299
:102BAC004FF4E131304601F043FE0120C6F80890A5
:102BBC0002F0DEFA2378C52130463B3B237002F04D
:102BCC0013F8DAF804102A68A8FB0232920C09FBFD
:102BDC0002F2DAF804305B1A9A42FAD8237801210F
:102BEC0030460133237001F0FFFFDAF804102A6835
:102BFC00A8FB0232920C09FB02F2DAF804305B1AE1
:102C0C009A42FAD803213046217001F0EDFFDAF830
:102C1C0004102A68A8FB0232920C09FB02F2DAF8C3
:102C2C0004305B1A9A42FAD823789A213046663BD4
:102C3C00237001F0D9FFDAF804102A68A8FB0232DD
:102C4C00920C09FB02F2DAF804305B1A9A42FAD8B9
:102C5C000021304601F0C8FFDAF804102A68A8FBFE
:102C6C000232920C09FB02F2DAF804305B1A9A4237
:102C7C00FAD82378142130461433237001F0B4FFB2
:102C8C00DAF804102A68A8FB0232920C09FB02F253
:102C9C00DAF804305B1A9A42FAD823783046594253
:102CAC00C9B2CB1A237001F09FFFDAF804102A681E
:102CBC00A8FB0232920C09FB02F2DAF804305B1A20
:102CCC009A42FAD8304601F0D5FC03463046002B28
:102CDC0008DD01F021FD304601F0CCFC0346304606
:102CEC00002BF6DC237803210333237001F07CFFE7
:102CFC00DAF804102A68A8FB0232920C09FB02F2E3
:102D0C00DAF804305B1A9A42FAD8304601F004FD26
:102D1C0005226946304602F045F89DF80230062B34
:102D2C005BD0102B40F0FC81DAF804102A68A8FB69
:102D3C000232920C0BFB02F2DAF804305B1A9A4264
:102D4C00FAD80021042002F067FADAF804102A6895
:102D5C00A8FB0232920C07FB02F2DAF804305B1A81
:102D6C009A42FAD80121042002F056FA0CE000BF76
:102D7C000C080020EC08002051170020001000E087
:102D8C0083DE1B4301F0C8FC304601F073FC0346A4
:102D9C003046002BF6DC304640F2E73701F06AFC97
:102DAC00002814DCDAF804102A68A8FB0232920C12
:102DBC0002EB8202DAF804305B1A9A42FAD8013F2D
:102DCC003FF4BAAE304601F055FC0028EADD30463F
:102DDC0001F0A2FCC0B20228E4D10520B94E02F0E9
:102DEC00C7F923789121B8486F3B237001F0FCFEA2
:102DFC0071686420B54B2A68A3FB0232920C00FB6D
:102E0C0002F273685B1A9A42FBD8012002F0B0F907
:102E1C003A21AD48217001F0E7FE7168AB4B2A688E
:102E2C00A84EA3FB02326423920C03FB02F27368DC
:102E3C005B1A9A42FBD823784E21A3480B4423708B
:102E4C0001F0D2FE7168A14B2A689E4EA3FB0232A0
:102E5C006423920C03FB02F273685B1A9A42FBD850
:102E6C0023786F2198480B44237001F0BDFE7168E4
:102E7C00964B2A68934EA3FB02326423920C03FBFD
:102E8C0002F273685B1A9A42FBD8237874218E483D
:102E9C000B44237001F0A8FE71688C4B2A68894E94
:102EAC00A3FB02326423920C03FB02F273685B1ADD
:102EBC009A42FBD823783A2183480B44237001F0C3
:102ECC0093FE7168814B2A687E4EA3FB0232642309
:102EDC00920C03FB02F273685B1A9A42FBD82378BC
:102EEC00552179480B44237001F07EFE7168774BB5
:102EFC002A68744EA3FB02326423920C03FB02F289
:102F0C0073685B1A9A42FBD8237873216E480B4482
:102F1C00237001F069FE71686C4B2A68694EA3FB43
:102F2C0002326423920C03FB02F273685B1A9A421E
:102F3C00FBD82378652164480B44237001F054FEC0
:102F4C007168624B2A685F4EA3FB02326423920CB9
:102F5C0003FB02F273685B1A9A42FBD82378642154
:102F6C0059480B44237001F03FFE7168574B2A6897
:102F7C00544EA3FB02326423920C03FB02F27368DF
:102F8C005B1A9A42FBD823783A214F480B442370A2
:102F9C0001F02AFE71684D4B2A684A4EA3FB02329F
:102FAC006423920C03FB02F273685B1A9A42FBD8FF
:102FBC00217845480139C9B24B00237001F014FE49
:102FCC007168424B2A683F4EA3FB02326423920C79
:102FDC0003FB02F273685B1A9A42FBD8012002F0E1
:102FEC00C7F82378932138486D3B237001F0FCFD22
:102FFC00364B70682A683349A3FB02326423920C67
:10300C0003FB02F24B681B1A9A42FBD8DFF8C0A0F4
:10301C000120DFF8B48002F0ABF8DFF8A8900AF1D9
:10302C00C3072A4E1AF8011F404623780B4423701D
:10303C0001F0DAFDD9F8041064232A68A6FB020219
:10304C00920C03FB02F2D9F804305B1A9A42FAD8BC
:10305C00BA45E7D1012002F08BF8237893211A4866
:10306C006D3B237001F0C0FD184BD9F804002A68A1
:10307C001449A3FB02326423920C03FB02F24B684B
:10308C001B1A9A42FBD8DFF84CA00120DFF83880DD
:10309C0002F06EF8DFF82C900AF107070B4E1AF8C5
:1030AC00011F404623780B44237001F09DFDD9F895
:1030BC00041064232A68A6FB0202920C03FB02F2A2
:1030CC000AE000BF001000E0EC08002083DE1B4388
:1030DC00170800200F080020D9F804305B1A9A4218
:1030EC00FAD85745DBD11A4C012002F041F8942153
:1030FC00204601F079FD052002F03AF801E001F0DC
:10310C000BFB204601F0B6FA03462046002BF6DCFA
:10311C000D20002102F080F8012003B0BDE8F08FF3
:10312C002378EE210A48123B237001F05DFDDAF89A
:10313C0004406421074A2B680748A2FB03239B0C1D
:10314C0001FB03F34268121B9342FBD80020E4E717
:10315C00EC08002083DE1B43001000E02DE9F8434F
:10316C00314F00224FF4E131304D3846304C01F0F4
:10317C005FFB64232E6840F2EE28BB60DFF8B8904A
:10318C002C4F03F0A5FB2378002B40D03B78DA07BB
:10319C003DD52B68D9F800209B1A0E2B37D901216D
:1031AC000D2002F063F80121052002F05FF80121E7
:1031BC00042002F05BF80121084602F057F80021C8
:1031CC00084602F053F80021052002F025F80021F2
:1031DC00012002F021F80021084602F01DF801211F
:1031EC00042002F019F803F073FB2378002BFAD0BB
:1031FC003B78DB07F7D52B68D9F800209B1A0E2BF0
:10320C00F1D901210D20BDE8F84302F005B82B6877
:10321C0022789B1B2AB1B3F5FA6FC0D803F058FB88
:10322C00AFE74345FAD9BAE7EC080020281700208D
:10323C005B1700205A170020381700202DE9F04F9B
:10324C00ADF2244D0021944C4FF47F7209A80691E5
:10325C008DF81C1042F210750891CDE9041103F0A1
:10326C00B5FE266803E023689B1BAB4263D803F0D2
:10327C0047FA0128F7DD00252768884E06958DF85A
:10328C001C50CDE9045504E02368B268DB1B934263
:10329C005DD205F11003C5F102010DEB030003F043
:1032AC009DF90544012DEFD99DF8103001210D2019
:1032BC000025009344F620669DF81130DFF8DC8180
:1032CC00019301F0A9FF27680BE02368DB1BB342D5
:1032DC0037D803F015FA1FFA80F9B9F1000F40F056
:1032EC00AC80B5F5806FF0D36D4C01210D206D4D88
:1032FC00039404F1040801F08FFF6B4E7721DFF883
:10330C00B0916A4F304601F06FFCD9F804102A686E
:10331C00A7FB02326423920C03FB02F2D9F80430AF
:10332C005B1A9A42FAD8304601F0F6F9444511D0AE
:10333C0014F8011FE6E7EB2420460DF2244DBDE8FE
:10334C00F08FEC2420460DF2244DBDE8F08F0123C4
:10335C003373A9E7554BD9F804002A685449A3FBE9
:10336C0002326423920C03FB02F24B681B1A9A4242
:10337C00FBD800210D200DF11F060DF21F144A4F32
:10338C00DFF82CB1DFF8249101F046FF16F8011F8D
:10339C00384601F029FCDBF804102A68A9FB02323C
:1033AC006423920C03FB02F2DBF804305B1A9A42A2
:1033BC00FAD8384601F0B0F9A642E7D13A4801F004
:1033CC00F5F93A4BDBF804002A683949A3FB0232C1
:1033DC006423920C03FB02F24B681B1A9A42FBD833
:1033EC00314801F099F9C0B200284FD1314E01217A
:1033FC000D202D4F029606F1040901F00DFFDFF8A8
:10340C00B0A07721DFF8A4B0384601F0EDFBDAF874
:10341C0004102A68ABFB02326423920C03FB02F209
:10342C00DAF804305B1A9A42FAD8384601F074F98B
:10343C004E4541D016F8011FE6E715FA80F0B0F5BD
:10344C00806F1BDC83B20293D4F800A04FF0000B0A
:10345C0007E02368D8F80820A3EB0A03934280F016
:10346C00998005EB0B0008ABA9EB0B01184403F09A
:10347C00B5F88344D945ECD8029D32E7C5F580698F
:10348C004FF480631FFA89F90293DDE7E1242046AB
:10349C000DF2244DBDE8F08F28170020DC08002029
:1034AC00E80200200C080020EC08002083DE1B43FF
:1034BC00001000E0F0020020BB4BDAF804102A6880
:1034CC00BA48A3FB02326423920C03FB02F243685A
:1034DC005B1A9A42FBD800210D200DF21F2BB44E23
:1034EC00DFF8C8A2B04F01F097FE14F8011F304668
:1034FC0001F07AFBDAF804102A68A7FB0232642385
:10350C00920C03FB02F2DAF804305B1A9A42FAD8F6
:10351C00304601F001F95C45E7D1A54801F046F9C8
:10352C00A14BDAF804102A68A048A3FB02326423EA
:10353C00920C03FB02F243685B1A9A42FBD89C483C
:10354C0001F0EAF8C0B2002840F0BF80DFF86CB29E
:10355C0001210D20964E01F05FFE5C467721934FC2
:10356C00DFF844A2304601F03FFB79682A68AAFBD9
:10357C0002326423920C03FB02F27B685B1A9A42C0
:10358C00FBD8304601F0C8F88A4B9C4207D014F89F
:10359C00011FE7E70123029D88F80C30A1E6824B5E
:1035AC0079682A688148A3FB02326423920C03FBDE
:1035BC0002F243685B1A9A42FBD800210D2001F0FD
:1035CC002BFE7B4801F0A8F810F0FF007BD18DF8A2
:1035DC001500774E754FDFF8D0A1DDE9002303EB22
:1035EC0002239BB29A008DF816209A099B028DF843
:1035FC001720009304AB1C4601936F4B93E8030018
:10360C00203304908DF8141093E8030006900D20DD
:10361C008DF81C10012101F0FFFD14F8011B304640
:10362C0001F0E2FA79682A68AAFB02326423920C50
:10363C0003FB02F27B685B1A9A42FBD8304601F01E
:10364C006BF80DF11D039C42E7D1574A79682B6842
:10365C005648A2FB032364229B0C02FB03F3426833
:10366C00521A9342FBD800210D2001F0D5FD504891
:10367C0001F052F8C0B230BBFEF718FB044600282C
:10368C007FF45AAE01210D2001F0C6FD484F772181
:10369C00464E454CDDF80CA0384601F0A5FA716891
:1036AC002A68A4FB02326423920C03FB02F27368B7
:1036BC005B1A9A42FBD8384601F02EF8C24506D068
:1036CC001AF8011FE8E7E62436E6E22434E6364A27
:1036DC0071682B683548A2FB032364229B0C02FB08
:1036EC0003F34268521A9342FBD800210D200DF2CD
:1036FC001F240DF21F382E4EDFF8B0A02A4F01F018
:10370C008BFD14F8011F304601F06EFADAF8041044
:10371C002A68A7FB02326423920C03FB02F2DAF84C
:10372C0004305B1A9A42FAD8304600F0F5FF444553
:10373C00E7D11F4801F03AF81B4ADAF804102B685D
:10374C001A48A2FB032364229B0C02FB03F342687E
:10375C00521A9342FBD8164800F0DEFFC0B2002884
:10376C007FF494AE01210D2001F056FD104F77210E
:10377C000E4E0D4CDDF80880384601F035FA7168B4
:10378C002A68A4FB02326423920C03FB02F27368D6
:10379C005B1A9A42FBD8384600F0BEFFC8450FD0E2
:1037AC0018F8011FE8E700BF83DE1B43001000E0A0
:1037BC00EC08002015030020D80200201003002084
:1037CC00704A71682B687048A2FB032364229B0C1F
:1037DC0002FB03F34268521A9342FBD800210D20DE
:1037EC000DF21F440DF21F36684FDFF89C91DFF885
:1037FC00948101F011FD16F8011F384601F0F4F91F
:10380C00D9F804102A68A8FB02326423920C03FB3B
:10381C0002F2D9F804305B1A9A42FAD8384600F012
:10382C007BFFA642E7D1594800F0C0FF554AD9F8B2
:10383C0004102B685448A2FB032364229B0C02FB4C
:10384C0003F34268521A9342FBD8504800F064FFCD
:10385C00C0B200287FF439AF01210D2001F0DCFC4F
:10386C004A4F7721484E474C384601F0BDF97168F4
:10387C002B68A4FB032364229B0C02FB03F37268EA
:10388C00521A9342FBD8384600F046FF404B9B45FA
:10389C0002D01BF8011FE7E73A4A71682B683A48D7
:1038AC00A2FB032364229B0C02FB03F34268521A13
:1038BC009342FBD800210D2001F0AEFC334800F000
:1038CC002BFF10F0FF007FF4FEAE324A009B8DF808
:1038DC00150003F500732D4E2B4C2A4F92E8030074
:1038EC0020328DF81410049092E803001A0A1B0C75
:1038FC0006908DF81C100D2001218DF816208DF8E6
:10390C00173001F089FCDDF8048018F8011B3046F3
:10391C0001F06AF961682B68A7FB032364229B0CF6
:10392C0002FB03F36268521A9342FBD8304600F054
:10393C00F3FE0DF11D039845E7D164686421114A2B
:10394C002B681148A2FB03239B0C01FB03F3426879
:10395C00121B9342FBD800210D2001F05DFC0B489B
:10396C0000F0DAFEC0B200287FF4ADAEFEF79EF98F
:10397C00044600287FF4E0AC01460D2001F04CFC1D
:10398C00DAE400BF83DE1B43001000E0EC080020EB
:10399C0015030020D80200202DE9F04FADF2344D74
:1039AC000021C44C4FF47F720DA80A918DF82C1095
:1039BC0042F210750C91CDE9081103F007FB266853
:1039CC0003E023689B1BAB4264D802F099FE0128EC
:1039DC00F7DD00252768B84E0A958DF82C50CDE9F7
:1039EC00085505E02368B268DB1B934280F0068122
:1039FC0005F12003C5F102010DEB030002F0EEFD11
:103A0C000544012DEED99DF8203001210D20002513
:103A1C00019344F620669DF82130DFF89C820293D6
:103A2C0001F0FAFB27680CE02368DB1BB34200F2C1
:103A3C00DF8002F065FE1FFA80F9B9F1000F40F04B
:103A4C00E080B5F5806FEFD39C4C01210D209C4E8E
:103A5C0001F0E2FB04F1050877219A4DDFF86C9236
:103A6C00994F284601F0C0F8D9F804103268A7FB2A
:103A7C0002326423920C03FB02F2D9F804305B1A75
:103A8C009A42FAD8284600F047FE444508D014F86C
:103A9C00011FE6E7EB2420460DF2344DBDE8F08F14
:103AAC00894BD9F8040032688849A3FB023264239D
:103ABC00920C03FB02F24B681B1A9A42FBD80021B2
:103ACC000D2001F0A9FB7F4800F026FE10F0FF004E
:103ADC0040F0BF80DFF804920DF12D088DF8250021
:103AEC0009F10805774FDFF8E4B1DFF8DCA1DDE977
:103AFC00012399E8030003EB022308909BB28DF895
:103B0C0024109A00D2B201928DF82620C3F38712AA
:103B1C009B020292039308AB8DF827201C4604935A
:103B2C0095E803000A900D208DF82C10012101F06E
:103B3C0073FB14F8011B384601F056F8DBF804103F
:103B4C003268AAFB02326423920C03FB02F2DBF80C
:103B5C0004305B1A9A42FAD8384600F0DDFD444531
:103B6C00E7D1594BDBF8041032685848A3FB0232FA
:103B7C006423920C03FB02F243685B1A9A42FBD853
:103B8C0000210D2001F048FB4E4800F0C5FDC0B2ED
:103B9C00002865D1FEF78AF80446002862D01B285D
:103BAC007FF479AF4A4C01210D20464F01F034FBD4
:103BBC0004F1050B7721DFF814A1384601F014F855
:103BCC00414BDAF804103268A3FB02326423920CE6
:103BDC0003FB02F2DAF804305B1A9A42FAD8384640
:103BEC0000F09AFD5C4500F0608114F8011FE4E7D9
:103BFC00EC2420460DF2344DBDE8F08F01233373D5
:103C0C0001E715FA80F0B0F5806F1ADC83B20393EC
:103C1C00D4F800A04FF0000B06E02368D8F8082079
:103C2C00A3EB0A03934216D205EB0B000CABA9EBEA
:103C3C000B01184402F0D2FC8344D945EDD8039D06
:103C4C00FFE6C5F580694FF480631FFA89F9039389
:103C5C00DEE7E8241FE70123039D88F80C30F0E62B
:103C6C00E42418E71B289DD01A4B01210D20154D7B
:103C7C001C460693DFF854B001F0CEFA124F7721B0
:103C8C00284600F0B1FFDBF804103268A7FB0232C3
:103C9C006423920C03FB02F2DBF804305B1A9A42A9
:103CAC00FAD8284600F038FD0B4B9C4218D014F87B
:103CBC00011FE5E728170020DC0800202003002066
:103CCC000C080020EC08002083DE1B43001000E0F1
:103CDC0018030020E8020020EC020020D80200208B
:103CEC00A94BDBF804103268A848A3FB023264230A
:103CFC00920C03FB02F243685B1A9A42FBD8002138
:103D0C000D200DF12F040DF22F15A14FDFF87CA221
:103D1C00DFF874B201F080FA14F8011F384600F095
:103D2C0063FFDAF804103268ABFB02326423920CA6
:103D3C0003FB02F2DAF804305B1A9A42FAD83846DE
:103D4C0000F0EAFCAC42E7D1914800F02FFD8E4B1D
:103D5C00DAF8041032688D48A3FB02326423920C0B
:103D6C0003FB02F243685B1A9A42FBD8884800F0C6
:103D7C00D3FCC0B2002840F0A281864B01210D205B
:103D8C00834F1C460593DFF804A201F045FADFF8D7
:103D9C00F8B17721384600F027FFDAF804103268C2
:103DAC00ABFB02326423920C03FB02F2DAF8043010
:103DBC005B1A9A42FAD8384600F0AEFC764B9C421D
:103DCC0002D014F8011FE5E76F4BDAF804103268E3
:103DDC006E48A3FB02326423920C03FB02F243688D
:103DEC005B1A9A42FBD800210D202C460DF22F2B8A
:103DFC00674DDFF898A1644F01F00EFA14F8011F1B
:103E0C00284600F0F1FEDAF804103268A7FB023203
:103E1C006423920C03FB02F2DAF804305B1A9A4228
:103E2C00FAD8284600F078FC5C45E7D1584800F0F9
:103E3C00BDFC554BDAF8041032685448A3FB02322F
:103E4C006423920C03FB02F243685B1A9A42FBD880
:103E5C004F4800F061FCC0B2002840F034814F4B59
:103E6C0001210D204A4D1C460793DFF820B101F0CB
:103E7C00D3F9454F7721284600F0B6FEDBF8041045
:103E8C003268A7FB02326423920C03FB02F2DBF8CC
:103E9C0004305B1A9A42FAD8284600F03DFC404B9D
:103EAC009C427FD014F8011FE5E7374BDAF8041079
:103EBC0032683648A3FB02326423920C03FB02F2F5
:103ECC0043685B1A9A42FBD800210D2001F0A4F93B
:103EDC002F4800F021FC10F0FF007FF4C1AE8DF8EC
:103EEC00250008AC019B2A4F8DF82630029BDFF889
:103EFC009CB0DFF894A08DF8273099E80300089067
:103F0C008DF8241095E803000A900D208DF82C10E4
:103F1C00012101F081F914F8011B384600F064FE10
:103F2C00DBF804103268AAFB02326423920C03FB08
:103F3C0002F2DBF804305B1A9A42FAD8384600F0E9
:103F4C00EBFB4445E7D1104ADBF8041033680F480B
:103F5C00A2FB032364229B0C02FB03F34268521A5C
:103F6C009342FBD800210D2001F056F9084800F0CF
:103F7C00D3FBC0B200287FF473AEFDF797FE044666
:103F8C0000283FF471AE86E583DE1B43001000E091
:103F9C00EC080020F0020020F402002010030020A6
:103FAC0015030020B44BDBF804103268B348A3FBB4
:103FBC0002326423920C03FB02F243685B1A9A42AE
:103FCC00FBD800210D2001F027F9AD4800F0A4FB2F
:103FDC0010F0FF0075D1019B08AC8DF825008DF811
:103FEC002630029BA64D8DF82730A64BDFF88CB2FD
:103FFC00A14F99E8030008908DF8241093E8030072
:10400C000A900D208DF82C10012101F005F914F8FF
:10401C00011B284600F0E8FDDBF804103268A7FB12
:10402C0002326423920C03FB02F2DBF804305B1ABD
:10403C009A42FAD8284600F06FFB4445E7D18E4AE5
:10404C00DBF8041033688D48A2FB032364229B0C1D
:10405C0002FB03F34268521A9342FBD800210D2055
:10406C0001F0DAF8864800F057FBC0B248BBFDF708
:10407C001DFE044600287FF40EAD01210D2001F039
:10408C00CBF87F4F77217D4D7B4CDDF818A038465F
:10409C0000F0AAFD69683268A4FB02326423920C1A
:1040AC0003FB02F26B685B1A9A42FBD8384600F0AD
:1040BC0033FB754B9A4508D01AF8011FE7E7E1244A
:1040CC00E9E4E624E7E4E224E5E46B4A6968336852
:1040DC006A48A2FB032364229B0C02FB03F3426895
:1040EC00521A9342FBD800210D200DF22F240DF211
:1040FC002F3A634DDFF884B15F4F01F08DF814F85F
:10410C00011F284600F070FDDBF804103268A7FB95
:10411C0002326423920C03FB02F2DBF804305B1ACC
:10412C009A42FAD8284600F0F7FA5445E7D1544899
:10413C0000F03CFB504ADBF8041033684F48A2FBFC
:10414C00032364229B0C02FB03F34268521A934232
:10415C00FBD84B4800F0E0FAC0B20028AFD10121E7
:10416C000D2001F059F8464F7721444D424CDDF8B3
:10417C0014A0384600F038FD69683268A4FB02329E
:10418C006423920C03FB02F26B685B1A9A42FBD815
:10419C00384600F0C1FA3D4B9A4502D01AF8011F7F
:1041AC00E7E7354A696833683448A2FB0323642285
:1041BC009B0C02FB03F34268521A9342FBD800217A
:1041CC000D200DF22F4A0DF22F352D4F2B4CDFF811
:1041DC00A8B001F021F815F8011F384600F004FDD5
:1041EC0061683268ABFB02326423920C03FB02F26F
:1041FC0063685B1A9A42FBD8384600F08DFAAA45E0
:10420C00E9D11F4800F0D2FA1B4A616833681B4899
:10421C00A2FB032364229B0C02FB03F34268521A99
:10422C009342FBD8164800F077FAC0B200287FF40E
:10423C004AAF01210D2000F0EFFF114F77210F4DF8
:10424C000D4CDDF81CA0384600F0CEFC69683368D4
:10425C00A4FB032364229B0C02FB03F36A68521A2F
:10426C009342FBD8384600F057FA094B9A4511D0C7
:10427C001AF8011FE7E700BF83DE1B43001000E0C4
:10428C00EC080020F8020020EC020020F4020020D0
:10429C0015030020394A696833683948A2FB0323A7
:1042AC0064229B0C02FB03F34268521A9342FBD824
:1042BC0000210D2000F0B0FF324800F02DFA10F074
:1042CC00FF007FF4FEAE039B2F4A8DF8250003F50B
:1042DC0000732C4D2A4C294F99E803008DF82410BB
:1042EC00089092E803001A0A1B0C0A908DF82C1007
:1042FC000D2001218DF826208DF8273000F08CFF41
:10430C00DDF8109019F8011B284600F06DFC61686F
:10431C003368A7FB032364229B0C02FB03F3626844
:10432C00521A9342FBD8284600F0F6F9C145E9D160
:10433C0064686421114A33681148A2FB03239B0C67
:10434C0001FB03F34268121B9342FBD800210D20A2
:10435C0000F062FF0B4800F0DFF9C0B200287FF4D8
:10436C00B0AEFDF7A3FC044600287FF494AB0146E5
:10437C000D2000F051FFFFF78EBB00BF83DE1B4307
:10438C00001000E0EC080020F80200202DE9F043BA
:10439C00012183B00D20A44CA44F00F03DFF02F08E
:1043AC00AFF9002800F09C8002F0EEF9A04AC0B2F0
:1043BC00102818BF012810708CBF0123002320285F
:1043CC000CBF002303F0010380280CBF002303F073
:1043DC00010313B1F02840F0DF80202800F2C580E3
:1043EC002028DCD801A353F820F000BF732900006B
:1043FC0049290000432900003D2900002F29000015
:10440C00AF27000021290000132900000529000016
:10441C00AF270000F7280000AF270000AF270000EF
:10442C00AF270000AF270000AF270000CF28000007
:10443C00AF270000AF270000AF270000AF27000018
:10444C00AF270000AF270000AF270000AF27000008
:10445C00AF270000AF270000AF270000AF270000F8
:10446C00AF270000AF270000AF2700008128000015
:10447C0001210D206F4D00F0CFFE01210D2000F029
:10448C00CBFE05F104097521DFF8C0816A4E304678
:10449C0000F0AAFB6168D8F800206423A7FB020295
:1044AC00920C03FB02F263685B1A9A42FBD830460B
:1044BC0000F032F9A94576D015F8011FE7E75F4EF9
:1044CC0000205F4D96F800802870B8F1000F00F0C6
:1044DC009780FDF7C1FB02F013F900287FF464AF5D
:1044EC0003B0BDE8F083FDF7D9FD554B1870FDF70F
:1044FC00B3FB54E7FEF7BCF9514B1870FDF7ACFB5E
:10450C004DE7FFF749FA4E4B1870FDF7A5FB46E750
:10451C00FEF794FE4A4B1870FDF79EFB3FE7FEF743
:10452C0055F8474B1870FDF797FB38E7FDF7F4FE8D
:10453C0035E7FDF773FF32E70120424D02F07AFABE
:10454C00064602F07FFA01AB05209B1B2B8002F084
:10455C002BF92888000A02F027F9287802F024F9B0
:10456C001DE7022002F020F919E7802838D0F02846
:10457C007FF415AF0120334D02F05CFA064602F0D1
:10458C0061FA01AB02209B1B2B8002F00DF9052078
:10459C0002F00AF94020DAE7284B1B7863B3202895
:1045AC007FF61EAFFBE661686423D8F80020A7FBFA
:1045BC000202920C03FB02F263685B1A9A42FBD86C
:1045CC0000210D2000F028FE1B4800F0A5F810F08B
:1045DC00FF001B4B18BFE0201870FDF73DFB7AE77E
:1045EC0000210D2000F018FE4FF4FA7000F0C0FD11
:1045FC00154B1B689847D2E6E020FDF72DFBCEE665
:10460C00FEF78EFA287028B9E12318462B70FDF7B7
:10461C0023FB60E7FDF7AAFB287010B90123337068
:10462C0057E786F8008054E7001000E083DE1B4358
:10463C005017002080020020EC08002052170020A8
:10464C005317002044170020DC1600200C08002013
:10465C0001207047B0F84630B0F848209BB292B2B7
:10466C00934202D2013AD01A7047416B01390A4485
:10467C00D01A7047016972B6B0F84A20B0F84C30C5
:10468C0092B29BB29A423CBF806B1218C86AD31A82
:10469C0062B6C0F302601844704700BFB0F84A100D
:1046AC000246B0F84C3089B29BB2994210B40469FE
:1046BC0014D00133906B116B984298BF0023994230
:1046CC0006D85B1A526AD05CC0B25DF8044B7047D6
:1046DC00126A5DF8044BD05CC0B2704772B6B0F889
:1046EC004A0080B2814201D062B6E2E7E36A13F07D
:1046FC00E06F03D14FF0FF3062B6E6E7E3690120CB
:10470C000024116AA2F84A00C3F30900DBB2A2F834
:10471C004C404B70F0E700BFB0F84A100246B0F8BE
:10472C004C3089B29BB2994230B4046925D0013324
:10473C00946B9C4216D9106B1FFA83FC984217D9C4
:10474C00106AC05CC0B2956DA2F84CC045B19942DC
:10475C001CD3CB1AD16B994202D3D36DC5F88830D8
:10476C0030BC70474FF0000C106B63469842E7D892
:10477C00181A556A285CC0B2E5E7084672B6B2F85A
:10478C004A1089B2884204D062B6D0E70C44E31ACE
:10479C00E0E7E36A13F0E06F03D14FF0FF3062B64D
:1047AC00DEE7E069C0F30900F9E700BF90F8443098
:1047BC0043B110B5044602F08BF894F84430002B4A
:1047CC00F9D110BD704700BF38B5D0E90453D3E917
:1047DC0003120968114228D090F84420044632B1E3
:1047EC0002F076F894F84430002BF9D1636900217B
:1047FC000E4AA961207E03EB0010007D02EB001035
:10480C00456805202860657E03EB051393F834306A
:10481C0002EB0312A36D52681060A4F84A10A4F8BE
:10482C004C1013B1E26DC3F8842038BDE0030020B6
:10483C0007EE901A9FED9A7A0421B6EE005AF8EE24
:10484C00677A9FED986A41F6FF7CC7EE275A2DE9EF
:10485C00F0478E460569012407EE901AF8EEE77AC8
:10486C0085EEA77A77EE057AFDEEE77A17EE903AA9
:10487C006345A8BF6346012BB8BF012307EE903AEE
:10488C00F8EEE76A76EEC76AC6EE877AF5EEC07A7E
:10489C00F1EE10FA48BFF1EE677AF4EEC67AF1EE5B
:1048AC0010FA03D8B0EE676A8E461C4601312129F6
:1048BC00D2D10021436902F40076A0F84A10B3F873
:1048CC005AC08E42A0F84C10B3F85860A0F84610AD
:1048DC00A0F8481080F84410816BDF68A1EB060645
:1048EC00A1EB0C01C0E90F6139681E6941EA0601B0
:1048FC00396014BF01210021817640F0AC80017E2B
:10490C00694E03EB0118DFF8C09198F81470D8F8D1
:10491C001CA006EB0717B968C1F800907968D8F8A5
:10492C0018700F60BAF1000F03D0D8F82010CAF835
:10493C000010477ED92103EB071898F834C006EB1A
:10494C000C1CDCF808703960DCF80410D8F83870EE
:10495C000F60417E03EB0111CF6B0FB1096C396015
:10496C000EF1FF31BEF1080F4FEA0161CCBF4FF0E1
:10497C00000E4FF0010E01F0F85144EA4E44214371
:10498C005C682961597801F110030021E9604749FD
:10499C0041F8234041694FF0010E454C02F0030CE5
:1049AC004F7891F85610434B39554FF00217446924
:1049BC00617803EB511301F01F019B000EFA01F11A
:1049CC001960EF62AB6A43F08803AB6253073ED4C5
:1049DC004CF4701302F00F01042908BF43F080431C
:1049EC0097062ED5817E43F0805300293AD11607C5
:1049FC00AB6103D52B6943F000532B616B69D10676
:104A0C0023F0805348BF43F080536B61D30503D52B
:104A1C002B6943F400532B61A36883B1264E347881
:104A2C00002C3AD0611E254DC9B22B1F05EB81011C
:104A3C0001E0994225D053F8042F9042F9D1BDE8FA
:104A4C00F087817E0029D2D043F0A003CFE71C4B26
:104A5C004CEA0303BEE7477E4FF2D901124E03EB3B
:104A6C0007186AE7417E43F0A00304EB011191F8AB
:104A7C00341006EB0116B668316821F44041316000
:104A8C00B5E7631CDBB20F4A3370137845F824008A
:104A9C0043F002031370BDE8F0870123074DF2E7E2
:104AAC00001BB74BEC78AD60E00300200010002039
:104ABC0000E400E0403800384D1700201C150020A1
:104ACC0010003C005E17002038F00100EFF313805B
:104ADC00B8B9EFF310834BB9EFF305823AB94FF441
:104AEC008073EFF3118050B1984208D270470F2AAF
:104AFC00F7D9054B9B5CEFF311800028F4D11846D5
:104B0C0070474FF0FF30F1E7F0E300E0036D2DE963
:104B1C00F04104460F46066913B1426DC3F8842078
:104B2C00A37E2BB172B6B36943F00053B36162B686
:104B3C00B4F84650636BADB20135AB424CD84FF074
:104B4C0000084546B4F848309BB29D4219D028E085
:104B5C0073691B0210D5B4F84830626B9BB20133F9
:104B6C009A4236D99AB2E16A99422DD9E169CB5C65
:104B7C00DBB2F361A4F84820B4F848309BB2AB42E6
:104B8C000FD1FFF7A3FF6369B3F856308342DFDA26
:104B9C00FF28F1DD01F09CFEB4F848309BB2AB422B
:104BAC00EFD0E36AAB421AD9FFB2E3695F5572B634
:104BBC00012084F84400A4F84680B36943F4000350
:104BCC00B36162B6BDE8F0815B1AA16ACB5CDBB263
:104BDC00CFE700221346C6E71FFA85F8B2E7ED1AB5
:104BEC00FFB2A36A5F55E2E7FFF790BF0269536912
:104BFC0013F4401F70B543D0D36A13F0E06FC3F3C6
:104C0C00026E3AD0B0F84A50B0F84C60ADB2B6B2C1
:104C1C0007E0016A01F803C00EF1FF3313F0FF0E39
:104C2C001DD0D1696B1C846BB0F84CC0C1F3090169
:104C3C009C4298BF00231FFA8CFC9C45ECD0046B63
:104C4C005FFA81FC1D469C42A3EB0404E1D8436A45
:104C5C0003F804C00EF1FF3313F0FF0EE1D1ABB239
:104C6C00A0F84A30836D43B1B54254D3AD1B016CEF
:104C7C00A94202D8C16DC3F884105369D90245D436
:104C8C009669330228D553691D0225D5B0F84650D4
:104C9C00B0F84830ADB29BB206E0C169C95CC9B28C
:104CAC00D161D16A4C0512D4AB4238D0446B01337C
:104CBC00C16A9C4298BF00239942A3EB0104ECD833
:104CCC00816A095DC9B2D161D16A4C05ECD599B242
:104CDC00AB42A0F8481025D0710216D553695B027F
:104CEC0013D50021036D80F8441013B1416DC3F846
:104CFC008810837E2BB172B6936923F000539361B5
:104D0C0062B6936923F48003936170BD536943F4D5
:104D1C0080135361B4E7816B891B0D44A7E79BB2E9
:104D2C00A0F84830936923F400039361936943F42A
:104D3C0080039361D0E700BF0148FFF757BF00BF66
:104D4C00EC080020084601F02FBD00BF2DE9F04112
:104D5C000C46D1B1EAB180468E1800250E4F04E006
:104D6C0001F022FDB44205440CD0D8F8003014F800
:104D7C00010B1B68BB42F3D0014640469847B44236
:104D8C000544F2D12846BDE8F0810D462846BDE821
:104D9C00F0811546F6E700BF5531000001F0F4BC78
:104DAC0001F08CBC2DE9F047884651B3914662B3B3
:104DBC0082460027164C174E25680BE001F0E4FCE8
:104DCC00002810DA01F084FD2368DAF808205B1B58
:104DDC00934210D2DAF800305B69B342EED0504601
:104DEC0098470028EEDB013708F8010BB945E3D1F1
:104DFC003846BDE8F087012338468AF80C30BDE808
:104E0C00F0870F463846BDE8F0871746F0E700BF3D
:104E1C0028170020AD310000884200DB704730B409
:104E2C00124C091A2368EBB1114A124D82FB032C68
:104E3C00DA179C44C2EB2C4244F2A71C05FB12333C
:104E4C000D4D05FB02F20CFB0322002A0CDA6FF06D
:104E5C00004313442360B3FBF1F201FB123330BC6B
:104E6C0018447047054BF5E71346F3E70815002087
:104E7C005F0B4E831DF30100ECF4FFFF42CE0C1FC1
:104E8C00A249A34B88422DE9F047A24C5E699A696E
:104E9C00D4F80C801BD9A04B984240F20281C31A63
:104EAC009E491B0AA1FB031340F22761DB0903EBAC
:104EBC00830303EB830303F2E2438B4228BF0B46CD
:104ECC00A3F54877964BA3FB0737FF0804E0954FF3
:104EDC00B8428CBF0E2706278D4908F01F09D1F860
:104EEC008030B94543F0C003C1F880300CD228F0B3
:104EFC001F08A1F5F82148EA0708C1F80C800B68D7
:104F0C00002BFCDA08F01F0916F0007324D1864937
:104F1C000C698649A14300F0EA8082F48051344642
:104F2C004FF4805514F0605F04D026F060561E4399
:104F3C00774B5E6111F4405F07D022F44052744904
:104F4C002A438A618B6C1A07FCD446F00076704AAF
:104F5C005661936C9B06FCD4754CA04200F2CE803B
:104F6C004FF0010C0146634603FB011203F1010EE5
:104F7C000CF10105A24218D8BEF1080F4FF0010345
:104F8C0040F08D80BCF1040F00F291800A18A2420F
:104F9C0000F2A48005FB00F1AC4603F1010E03FB0B
:104FAC0001120CF10105A242E6D90CF1FF318C0281
:104FBC0086EA81215F4810445F4A90427FD9DFF82E
:104FCC00A4A16C225D48584DB0FBFEF0D5F800E072
:104FDC00B0FBFCF0DFF890C10EEA0C0CD44509D004
:104FEC0042F400524FF4805CC5F800C02A602A6875
:104FFC00002AFCDA464A156905F007059D4203D0E4
:10500C001361936CDD03FCD411F4E05F09D026F43A
:10501C00E05604F4E0543E4A26435661936C9907DB
:10502C00FCD44749474A014491423CD8464BC909F4
:10503C00A3FB0131090B4B1E1B0286EA030212F47F
:10504C00407F06D026F4407603F44073304A334355
:10505C0053612F4A536923F000735361936C9B0681
:10506C00FCD43A4B4F45A3FB00234FF0FF324FEAE1
:10507C009343B0FBF1F1B2FBF3F3354A1060354AC0
:10508C001160354A136008D228F01F08214A48EAFB
:10509C000707D7601368002BFCDABDE8F08773466E
:1050AC0062E7122718E74FF440730421C5E70CF1AF
:1050BC00FF31204807238C02104486EA8121274ABD
:1050CC00DFF8A8A0A2FB0020020D2548362A38BF25
:1050DC00362202FB00F042EA0A0A74E74FEA8C24FB
:1050EC00002386EA8C214FF0010EAC4662E71D4688
:1050FC0086F0C05411464FF0C05313E700244FF014
:10510C00010C024631462346E64653E700A4781FBD
:10511C0000C00F40000008400046C32323B24C00DF
:10512C001F85EB5100366E0100800D404030008031
:10513C00FFB19F26808D5B00FF7EF64D00643F4DD6
:10514C007FD1F0087F17B42C9F10E50083DE1B4342
:10515C000C0800200808002020170020819F5E16F4
:10516C00001BB7006C2000807F3001800020008085
:10517C0000B970472DE9F84F01218146214C224D91
:10518C00224E54E8003F2A68306844E80013002B94
:10519C00F7D11F494B684FF47A7BDFF878A01B1AC4
:1051AC0001270BFB02F8DAF80020A3FB02325A4568
:1051BC0094BF9044D84454E8003F2A68306844E8CF
:1051CC000073002BF7D14B68DAF800C01B1A0BFBED
:1051DC0002F2A3FB0C3CBCF57A7F94BF624402F54F
:1051EC007A72A2EB0802B2F57A7F06D3B9F1010903
:1051FC0008F57A78DFD1BDE8F88F01F069FB044936
:10520C00D9E700BF2C1700202817002024170020F6
:10521C00001000E020170020272816D80201104BA0
:10522C0003EB00109B5810B4C2685C68144205D0A4
:10523C0061B95DF8044BC3F888207047836851B19D
:10524C00084A5DF8044B1A60704770475DF8044BD0
:10525C00C3F884207047044A5DF8044B1A60704709
:10526C00E003002038F0010038300100272829D84D
:10527C00164B0201012903EB00109A5810B4536825
:10528C00C4680ED004290CD023EA0403536083684D
:10529C00A9B1022917D003290CBF0D4A0D4A1A6077
:1052AC0007E0234301295360836808D040F6380295
:1052BC001A60436815225DF8044B1A607047382257
:1052CC001A60F6E77047044A1A60F2E7E003002020
:1052DC00383001003800010038F0010008B5FDF746
:1052EC003DFFFFF753F801F0F3FAFAE7844641EA81
:1052FC00000313F003036DD1403A41D351F8043B42
:10530C0040F8043B51F8043B40F8043B51F8043B93
:10531C0040F8043B51F8043B40F8043B51F8043B83
:10532C0040F8043B51F8043B40F8043B51F8043B73
:10533C0040F8043B51F8043B40F8043B51F8043B63
:10534C0040F8043B51F8043B40F8043B51F8043B53
:10535C0040F8043B51F8043B40F8043B51F8043B43
:10536C0040F8043B51F8043B40F8043B51F8043B33
:10537C0040F8043B51F8043B40F8043B403ABDD2A2
:10538C00303211D351F8043B40F8043B51F8043B44
:10539C0040F8043B51F8043B40F8043B51F8043B03
:1053AC0040F8043B103AEDD20C3205D351F8043BD3
:1053BC0040F8043B043AF9D2043208D0D2071CBF9F
:1053CC0011F8013B00F8013B01D30B8803806046C8
:1053DC00704700BF082A13D38B078DD010F003033E
:1053EC008AD0C3F10403D21ADB071CBF11F8013BAE
:1053FC0000F8013B80D331F8023B20F8023B7BE7FD
:10540C00043AD9D3013A11F8013B00F8013BF9D227
:10541C000B7803704B7843708B78837060467047C1
:10542C0001F1FF3C70B56646002400E00134B0FB8E
:10543C00F2F502FB1503092B03F1370E03F13003D0
:10544C005FFA8EFE98BF5FFA83FE9042284606F8FC
:10545C0001EFEBD2631C0022C818CA547CB162461F
:10546C001CF8015F10F8016DA1EB0C0302328CF8F3
:10547C000060013B521A057023449A42EFDB084648
:10548C0070BD00BF00230F2248F2B82C194610B58E
:10549C004FF470444FF4806EA0F88C414FF460448C
:1054AC00A0F88E210A46A0F89031B0F888319BB252
:1054BC0043F0F003A0F8883101EB4103013100EB1C
:1054CC00431304299C80A3F806E05A841A865A8058
:1054DC005A81A3F80EC05A82DA825A83DA83EBD14E
:1054EC00B0F888319BB243F00F03A0F88831B0F8C4
:1054FC0088319BB243F47063A0F8883110BD00BFB3
:10550C00374B384A996F384841F47F0170B5996729
:10551C0041F20106D3F8801045F6C05543F226043B
:10552C000A43C3F88020FFF7ADFF00F58040FFF77A
:10553C00A9FF00F58040FFF7A5FF00F58040FFF7BD
:10554C00A1FF0022A0F503104FF00F0E114600EB47
:10555C0042134FEA421C01329981042A5981A3F863
:10556C000EE09E82DD8020F80C1019829C81EED119
:10557C0000221E484FF00F0E41F20106114645F66F
:10558C00C05543F2260400EB42134FEA421C013291
:10559C009981042A5981A3F80EE09E82DD8020F8BF
:1055AC000C1019829C81EED1002211480F2641F279
:1055BC000105114645F6C05443F2260E00EB42138A
:1055CC004FEA421C01329981042A5981DE819D8265
:1055DC00DC8020F80C101982A3F80CE0EED170BD21
:1055EC0000C00F40000003FC00C03D4000001E4006
:1055FC0000401E4072B6EFF30583524CC4F8843061
:10560C001EF0040F0CBFEFF30882EFF309824FF08A
:10561C00E0234D4E4D4DD3F8280DD3F82C1DC4E985
:10562C002201D3F8341DD3F8383DC4E9241393690F
:10563C00C4F89830D369C4F89C3000F0BDF884ED00
:10564C00280A01F0E5F90B214FF0FF32C4F8A40051
:10565C000B46C4F880103E49301D5A40202402F0FD
:10566C000103013C01FB03F383EA5202F7D1A84288
:10567C0002D073680646EFE7324BC3F8A820BFF39D
:10568C004F8F4FF0E0233049324AC3F8701FC3F8F4
:10569C00702FBFF34F8FBFF36F8F2F4A02252F4808
:1056AC00D36E2F4943F44053D3660560D3692D481C
:1056BC0023F07F0343F04003D3610B6883423DD852
:1056CC00264D00214FF0E0234FF0FF3229600126D8
:1056DC00C5F808112449C5F80011C5F80861C3F8CC
:1056EC008021C3F88421C3F88821C3F88C21C3F826
:1056FC00902101E000F052F9D5F80C31002BF9D0D3
:10570C000134C5F80C614F2CF4D9184B0220184900
:10571C004FF00042C1F840015A63D5F80C313BB947
:10572C00144815490D4A0163D2F80C31002BFAD0FC
:10573C004FF0E023114AC3F80C2DFEE7FFF7A0FB56
:10574C00BEE700BF00FF272080FF2720A8FF2720EF
:10575C002083B8EDA0FF272000C00F400040084078
:10576C000C080020803DCD0B009F240000900D40C4
:10577C0000002E4000800F40F100AD0B0400FA0534
:10578C000A490A6838B108B513180948834204D885
:10579C0010460B6008BD1046704701F07BFC0C23D3
:1057AC004FF0FF320360104608BD00BF4C090020CB
:1057BC0000002820FFF71EBF124AD2F880305B078A
:1057CC00FBD5D2F880301048C3F30B230F4990ED72
:1057DC00007A07EE903A91ED006AB8EE477A0C4ADF
:1057EC00F8EEE77A0B4BD2ED006A77EEC77A93EDC1
:1057FC00007AB8EE477A67EE867A87EEA60A37EE1D
:10580C00400A704700810D40101700201817002027
:10581C001C17002014170020836BF0B41BB15368C5
:10582C0043F40043536072B6446B3CB31A4B226092
:10583C00D3F8B0410C421DD1184E776804E074685F
:10584C00E41BB4F5166F0BD2D3F8404144F48044FA
:10585C00C3F84041D3F8B851D3F840416404EED5B5
:10586C000D4007D10C4CC0E90225D4F8B0310B43E4
:10587C00C4F8B031426362B6F0BC7047064DC0E963
:10588C000224D5F8B0310B43C5F8B0310263426342
:10589C0062B6F0BC704700BF00002E40001000E064
:1058AC0070B5056B9DB106462A46002403E01268CC
:1058BC000134012A0CD0536813F08003F7D0326303
:1058CC002CB12846B36B2D689847013CF9D170BDBB
:1058DC00C6E90C33F4E700BF30B4D9B91F4C204BE8
:1058EC000021204A01254FF0011099601D60C4E988
:1058FC00023180245C60C2F8BC01D2F8B0311A4885
:10590C002B43C2F8B0310160D2F8B031002BFBD17F
:10591C0030BC70470904154B104C012541F0800137
:10592C009860104A596000F580511D60D96000F5EF
:10593C000051A364196100F5405100F58040596194
:10594C0000219861E164D2F8B03143F48033C2F89D
:10595C00B031D2F8B031002BFBD1C0E700000020F1
:10596C00C012002000002E40B0160020E0120020D3
:10597C00084901220B7802FA00F023EA00000870B3
:10598C0030B9054AD2F8483123F08003C2F84831C7
:10599C00704700BF5617002000002E402DE9F04F35
:1059AC00974C83B0D4F84471FB07C4F8447153D5B9
:1059BC00D4F8AC21002A4AD0924EDFF860A2DFF86E
:1059CC007492DFF874B2DFF87482C4F8AC21D6E9B3
:1059DC000A20D4F8403143F40053C4F84031D4F8D1
:1059EC0040319D04F5D5D4F8403123F40053C4F86C
:1059FC0040314FF00113C4F8B431D4F8B45115F060
:105A0C000115FAD193B28446CAF80050B3F5086F69
:105A1C0000F0CF8100F2DB8040F202318B4200F0CB
:105A2C00E78100F29A80822B00F0CB81B3F5817F65
:105A3C0040F08A8010F0780F83B200F003824FF0B0
:105A4C000113C4F8C031D4F8AC21002ABDD16C4A82
:105A5C00D2F8BC31002B42D17E0616D5684BD3F858
:105A6C00AC21C3F8AC21D3F8BC21C3F8BC21D3F8CA
:105A7C00B041002CFBD14FF0FF32C3F8B421D3F866
:105A8C00843100F029FD604B1C60FC0103D55F4B99
:105A9C001B6803B19847B80103D55D4B1B6803B174
:105AAC009847790708D5564BD3F8843113F4007313
:105ABC0047D0584B01221A70514BD3F848311A0673
:105ACC000AD53B0608D5544A13782BB1013BDBB2FF
:105ADC001370002B00F0728203B0BDE8F08F4F49B9
:105AEC00C2F8BC310868034240F0D181464A1468C0
:105AFC001C40B1D05FEA144810D0424E4FF001095F
:105B0C0098FAA8F5B5FA85F506EBC51009FA05F56E
:105B1C004030FFF7C5FE38EA0508F1D1A4B2002CDD
:105B2C009AD0384E4FF0010894FAA4F5B5FA85F5E1
:105B3C0006EBC51008FA05F5FFF7B2FEAC43F3D13E
:105B4C008AE7344A1370B7E7802B7FF478AF344878
:105B5C0002210580FFF7C0FE75E7B3F5A06F00F0DA
:105B6C000B81A3F5D063012B3FF669AF2D4B5D681C
:105B7C00002D3FF464AF1FFA8CFC4FEA124E04E088
:105B8C001D690C33002D3FF45AAF1A887245F7D1BA
:105B9C005A886245F4D14FEA1E22032A00F0A581EF
:105BAC001A89000C824228BF0246BEF5007F40F0E5
:105BBC00A181184B1C4918781C4B0192002818BF66
:105BCC0019461B48FFF792FB194D019AE1E142F28D
:105BDC0021218B427CD033D942F221318B4200F00F
:105BEC0081804FF6C0018B427FF429AF10F47F4FB8
:105BFC0083B27FF424AF43F46E4363F30F0CB5E729
:105C0C0000002E4000000020B41600203C1700209D
:105C1C00401700205C1700205D170020B0160020F4
:105C2C00D416002060060020281B00608C1B00602E
:105C3C0000002020A81600205DCFC6B8C0012E4061
:105C4C00B3F5106F66D042F221018B427FF4F7AEB0
:105C5C00030C072B7FF4F3AEB24BB349F560D9605C
:105C6C00B249B360C3F80890C1E9002001221A6060
:105C7C00AF4A5A60AF4A1A61D4F8B01141F0010131
:105C8C00C4F8B01102F5805102F5005259619A61C5
:105C9C00D4F8B031002BFBD1A74AF36493600123F5
:105CAC00B264136048F2800353604FF00113C4F8E0
:105CBC00BC31D4F8B03143F48033C4F8B0314FF474
:105CCC008033CAF80030D4F8B031002BFBD1BAE6DF
:105CDC0080B238B9994BC2F307421968984B1960D6
:105CEC00984B1A70944B00229A60F2640122B364B0
:105CFC001A6080225A604FF00113C4F8BC31D4F8FA
:105D0C00B03143F48033C4F8B031D4F8B031002B47
:105D1C00FBD198E6C2F307428B4B1A708B4BC4F83D
:105D2C00C8318B4BC4F8CC318A4BC4F8D03100F05D
:105D3C00D5FB80222946884801F048F9874B802200
:105D4C00C6F8A0B0C6F8E0307B4BF5645A6001226F
:105D5C00B3649D601A604FF00113C4F8BC31D4F8E1
:105D6C00B03143F48033C4F8B031CAF80050D4F8E1
:105D7C00B031002BFBD166E66F4B0121F564196045
:105D8C0080219D60B36459604FF00113C4F8BC319D
:105D9C00D4F8B03143F48033C4F8B031D4F8B03116
:105DAC00002BFBD1130C5B0643F08073C4F8543109
:105DBC0049E6654B01216A481B780370FFF78CFD9F
:105DCC0041E683B210F078007FF439AE03F07F0225
:105DDC0058F82210624A1080180600F19E80CB07FA
:105DEC0001D50123137002215D48FFF775FD2AE6EA
:105DFC0010F0780F83B27FF422AE03F07F0213F021
:105E0C00800F58F8223014BF43F4803343F0010361
:105E1C0048F822300022484BF2649A600122B364A5
:105E2C001A6080225A604FF00113C4F8BC31D4F8C8
:105E3C00B03143F48033C4F8B031D4F8B031002B16
:105E4C00FBD100E603F07F0213F0800F58F82230EC
:105E5C0014BF23F4803323F0010348F822300022CE
:105E6C00354BF2649A600122B3641A6080225A6046
:105E7C004FF00113C4F8BC31D4F8B03143F4803383
:105E8C00C4F8B031D4F8B031002BFBD1DBE50020E5
:105E9C00086026490C88486842F221018C427FF444
:105EAC0025AE80B200287FF421AE2E492E4C03C9BA
:105EBC00A18086284FEA11412060A1717FF416AEB3
:105ECC0072B62A48017841F008010170D2F84811E5
:105EDC000D0605D480200143C2F84401C2F84811D4
:105EEC0062B6234A5021117000E6000C2A788242D7
:105EFC0028BF0246BEF5E06F44D11E4B1E4D1878EC
:105F0C001E491F4B0192002818BF19462846FFF75F
:105F1C00EDF907236B70019A3BE0C9033FF561AFC4
:105F2C0061E700BFE0120020A826002080140020AA
:105F3C0080000700A8360020C0120020281700207F
:105F4C00381700205A1700205B1700200200CC00E5
:105F5C00C80002000200C800800000201993D5740C
:105F6C00D4160020A8160020301700205617002049
:105F7C005D1700205C170020000020208C1B0060A7
:105F8C00281B00602946104D01922846FFF7AEF9F8
:105F9C00019A25F01F031544BFF34F8F4FF0E021FA
:105FAC00C1F8703F20339D42FAD8BFF34F8FBFF337
:105FBC006F8F05481146FFF78FFC44E50320FFF770
:105FCC00D7FC01F0F1F900BF000020202DE9F047CB
:105FDC001F46831E022B01D9BDE8F087DFF84C90D9
:105FEC0015460C463C2209EBC01806464FEAC01A6F
:105FFC00002108F10400240400F0E8FFB5FA85F252
:10600C000123520944EA427449F80A40C8F838702E
:10601C00C8F80830002FDFD0034AB34011680B4397
:10602C001360BDE8F08700BFB4160020000000200C
:10603C002DE9F0470D46811E022901D9BDE8F087F4
:10604C00C701DFF84C909246044640373C220021B1
:10605C001E4609EB07082D0408F1040000F0B6FFFA
:10606C00BAFA8AF2520945EA427249F8072001222B
:10607C00C8F83860C8F80820002EDFD0034B103465
:10608C001968A2400A431A60BDE8F087B4160020D4
:10609C000000002012048160C36101F5405342F0FE
:1060AC00800210B40124426001F50052046001F535
:1060BC00805401F58041C46081615DF8044BC0E9F6
:1060CC0004237047831E0A46022B00D97047064BE7
:1060DC0000F110014FF0010C03EBC0100CFA01F1B0
:1060EC004030FFF799BB00BF00000020831E0A461A
:1060FC00022B00D970470121024B814003EBC010E9
:10610C00FFF78ABB0000002040687047124A134B0F
:10611C00D2F8200220F07F40984210B584B002D211
:10612C0000EB800040000E4C01A90A22FFF778F921
:10613C0001A90023204611F8012B01333AB10A2B97
:10614C0020F8022FF7D11623237004B010BD5B008A
:10615C00DBB2237004B010BD00441F408096980041
:10616C00B40D002000F0D8BA00F0CABA00F066BB3B
:10617C0000F03CBB0846114600F02CBBF8B5144CA3
:10618C004FF0E025134E4FF4003204EB4024124F35
:10619C0006EB40160346C5F88C2121463A8830465A
:1061AC00FFF778FF3B882344BFF34F8FC5F85C4F54
:1061BC002034A342FAD8BFF34F8FBFF36F8F032065
:1061CC003146FFF793FF4FF40033C5F80C31F8BD9F
:1061DC00800020200013002046170020244B2DE9BE
:1061EC00F0411C884368C569C3F30E43E41A002CC4
:1061FC0024DD204920480A780078D3B21F4E824211
:10620C001F4807D010F8038036F81870C7F50072D5
:10621C00944218D90133002226F81540082B194E48
:10622C0088BF134626F8152098BFDAB2C554164B12
:10623C000A701A6814441C60BDE8F0812846BDE859
:10624C00F041FFF79BBF07EB48201049224627443B
:10625C00084401EB4521FFF749F80B4A284626F87C
:10626C00187013682344BDE8F0411360FFF786BF34
:10627C00461700205417002055170020E416002064
:10628C0004170020F4160020E016002080002020C7
:10629C001D4B1A78002A36D102F0FF031B4A1278E4
:1062AC008AB32DE9F0411A4D2A8852B3194EC2F522
:1062BC000068194F3278194C07EB421704EBC224D3
:1062CC00424638462146FFF7E5FE04EB0802BFF3D1
:1062DC004F8F4FF0E023C3F8704F2034A242FAD80E
:1062EC00BFF34F8FBFF36F8F04203946FFF7EAFEE1
:1062FC0033780133DBB2032B88BF002333700023C8
:10630C002B80BDE8F0817047591700205B170020E7
:10631C00481700205817002000140020801020205F
:10632C002DE9F04F85B0CDE90110002900F0BF80B8
:10633C000023604CDFF89881DFF898A15E4F009342
:10634C0001235E4A23705E4B1978B8F8003002EBDB
:10635C004119002B40F0A7801E461D469B4648461F
:10636C00FFF7D2FE10F0800000F08C80BFF34F8F4F
:10637C009AF8003084F800B005B93E68002B7DD146
:10638C003B689B1B782B00F287804E4B1B78002BB5
:10639C0074D000F09DFA0122B8F800301546227036
:1063AC00002BDCD0464AC3F5006011781A4600EB8E
:1063BC00C120454DC9022844019D954217D2039333
:1063CC00DDE901512A46FEF791FF039B4FF0404255
:1063DC005B1BA8F800303D4BC3F88420BFF34F8FF4
:1063EC00009800232844237005B0BDE8F08F364B8D
:1063FC00CD180299FEF77AFF00234FF4006229466C
:10640C004846FFF747FEBFF34F8F05F1200205F515
:10641C000063934234BF012340234FF0E02205EB8D
:10642C004313C2F8705F2035AB42FAD1BFF34F8FE4
:10643C00BFF36F8F04204946FFF744FE204A1378C0
:10644C000133DBB2032B84BF00231D4A1370B8F851
:10645C000030019AD11A009A1A4401910092029AC2
:10646C001A4400230292194AA8F80030C2F884306A
:10647C00BFF34F8F237000297FF462AF009805B0F3
:10648C00BDE8F08F4FF400620D4B8AF800001978CC
:10649C001346A8F800208AE7012300988AF80030F8
:1064AC0005B0BDE8F08F1A46C3F500607FE7019890
:1064BC00E5E700BF59170020281700200014002022
:1064CC00581700205B1700208010202000002E4061
:1064DC004817002057170020704700BF2D4B002194
:1064EC0080222D4870B51B7800242C4D8B422C4EED
:1064FC000CBF40234FF400732B80338000F066FDFB
:10650C00284A2146284B14704FF4807227481C806F
:10651C0000F05CFD264A1021264B0220C2E9004403
:10652C00C2E90244244AC3E900441470234AC3E973
:10653C000244234B1C70234614602246FFF778FD5F
:10654C002246318803201F4BFFF740FD23460122D2
:10655C0029880420FFF76CFD20460134FFF70EFE5E
:10656C00082CF9D1184B00214A221848184C046009
:10657C00C3F88410C3F88020D3F84821154942F0A1
:10658C008072C3F8482121B1134A137843F00103F8
:10659C00137070BD5C170020001400204A170020F7
:1065AC004617002058170020481700200013002021
:1065BC00E4160020F416002054170020E0160020EA
:1065CC0055170020ED45000000002E403C17002020
:1065DC00A1460000000000005E1700202DE9F04FDE
:1065EC004FF0E0234FF40032DFF8C8A083B0C3F8BB
:1065FC008C218B469AF8004000294FD08046E4B29B
:10660C000027DFF8B490264BABEB070225491B782B
:10661C00A34204F101043FD0092C234B404628BF70
:10662C0000241E5D39F816C00CEB462319441F4B91
:10663C0033F81650A5EB0C05AA421CD20CEB462CD9
:10664C0018491B4C61440192FEF750FE216839F841
:10665C0016505846019AA1EB0B012A44394429F8EB
:10666C00162021604FF0E0234FF40032C3F80C21C8
:10667C0003B0BDE8F08F2A462F44FEF737FE0C49D5
:10668C00E3B230460A68A844521B0A608AF800300C
:10669C00FFF774FDBB45B6D83846E3E70846E1E79B
:1066AC00541700208000202004170020E41600203E
:1066BC00E016002055170020F41600200B4B0C4A56
:1066CC0012781978D3B28A420DD0013309480A4A9C
:1066DC00092B0A4928BF0023C35C31F8131002EBC5
:1066EC004323585C70474FF0FF307047541700201D
:1066FC00551700200417002080002020F4160020DD
:10670C00044B10B51C680CB1204610BD00F0E0F82D
:10671C00204610BDE01600202DE9F84F144E154D03
:10672C0033782A78934221D0DCB2DFF85090DFF82E
:10673C0050B0DFF85080104F0134082C5FFA84FA07
:10674C0001D90024A24619F80400DBF8003038F80F
:10675C00102037F81010521A9B1ACBF80030FFF7A4
:10676C000DFD86F800A02B78A342E5D1BDE8F88F8B
:10677C005517002054170020F41600200417002091
:10678C00E0160020E416002000B583B001210DF1C5
:10679C000700FFF723FF20B19DF8070003B05DF859
:1067AC0004FB4FF0FF30F9E7094B00B583B01B78C1
:1067BC008DF807003BB101210DF10700FFF7B0FD8B
:1067CC0003B05DF804FB03F0FF0003B05DF804FBBD
:1067DC005B170020044B1B7803F0FF020BB1FFF793
:1067EC009FBD1046704700BF5B1700202DE9F0419C
:1067FC000024DFF8448001230D4D27460D4E88F808
:10680C000030337828462035A34204F1010405D02A
:10681C00FFF77AFC030658BF07F50067042CF0D18C
:10682C00BFF34F8F0023384688F80030BDE8F08165
:10683C000014002058170020591700202DE9F843A8
:10684C001D4B1B7813B11D4D2A880AB9BDE8F8837E
:10685C001B4EC2F500691B4933784A461A4C01EBB2
:10686C0043181A4F04EBC324012340463B702146C6
:10687C000023FFF70FFC04EB0902BFF34F8F4FF01F
:10688C00E023C3F8704F2034A242FAD8BFF34F8FE5
:10689C00BFF36F8F04204146FFF714FC33780133AC
:1068AC00DBB2032B88BF0023337000232B80BFF394
:1068BC004F8F3B70BDE8F8835B1700204817002012
:1068CC005817002000140020801020205917002099
:1068DC002DE9F8432D4B1E7866B12D4F3B784BB903
:1068EC000123F1073B7043D4B20726D400233B703D
:1068FC00730701D4BDE8F883264B1A68002AF9D037
:10690C00EFF30582002AF5D1EFF3108572B6186803
:10691C00002834D0204C2178002930D1012222705B
:10692C0042691A60002A2ED0916105B962B6002521
:10693C008368457798472570DCE7DFF8648098F822
:10694C000030002BD2D00025DFF858902B4659F898
:10695C0023400135236820461B69984710B16369B1
:10696C009B68984798F80020EBB29A42EFD8BDE7A5
:10697C00FFF7C6FE0028B7D0AFF30080B4E7002DB8
:10698C00B8D162B6B6E7054B1A60CEE75E170020A9
:10699C004E1700200C1500204C1700201815002055
:1069AC004D1700201C15002070B5EFF3108272B645
:1069BC000C4C206880B10C4E00254369236073B1E8
:1069CC009D6102B962B6836845779847EFF31082F0
:1069DC0072B620680028F0D102B962B670BD33607F
:1069EC00EFE700BF1415002010150020FFF7DCBFE7
:1069FC000449054A4968054B196013680133136053
:106A0C00704700BF001000E028170020241700205A
:106A1C00074A506A936A19468446506A936A9942A7
:106A2C00F9D18445F7D1DB0B43EA4040704700BFF6
:106A3C0000400D40024B0146186800F00BB800BF37
:106A4C00600D0020024B0146186800F0A1BB00BF8E
:106A5C00600D00202DE9F04F01F10B06162E83B0CE
:106A6C00044624D8102900F2BA8000F0A3FA1026AC
:106A7C0018220220B54F3A44A2F1080153688B4208
:106A8C0000F0BA805A68D96822F003021A449D6853
:106A9C00E9608D60516841F001012046516003F1BD
:106AAC00080500F08DFA284603B0BDE8F08F36F0EB
:106ABC00070600F19480B14200F2918000F07AFA5E
:106ACC00B6F5FC7FC0F09A81730A00F08F80042B1E
:106ADC0000F26F81B30903F1390003F1380CC300E4
:106AEC009A4F3B44A3F108055B689D4206D10CE02C
:106AFC00002980F22781DB689D4206D05A6822F07B
:106B0C000302911B0F29F3DD60463D69DFF850C28B
:106B1C0065457CD06A6822F00302931B0F2B00F3AF
:106B2C007B81002BC7E904CC80F26C81B2F5007F2D
:106B3C0080F01A81D308796801334FEA521E012282
:106B4C0002FA0EF20A4357F833E0C5F808E007EBF7
:106B5C00C3010839E9607A6047F83350CEF80C501D
:106B6C00831001219940914257D8114206D120F04F
:106B7C0003004900114200F10400FAD007EBC009F0
:106B8C004D468646D5F80C80454508D11DE1002BB5
:106B9C0080F22481D8F80C80454500F01681D8F895
:106BAC00042022F00302931B0F2BF0DD2046D8E9C2
:106BBC00025408EB060146F00106C8F80460EC60CC
:106BCC00A56043F00104C7E90411C1E902CC4C6093
:106BDC0048F8023000F0F4F908F1080502E00C2343
:106BEC0023600025284603B0BDE8F08F4FF40073F6
:106BFC0040204FF03F0C73E7D3689A4208BF023035
:106C0C007FF440AF3D69DFF858C1654582D17A68A1
:106C1C008310012199409142A7D9BD686B6823F07C
:106C2C0003094E4503D8A9EB06030F2B7ADCDFF8DA
:106C3C0034B1474BDBF800201B680132334405EBC1
:106C4C00090A00F0338103F580530F3323F47F6876
:106C5C0028F00F084146204600F00AFA411C024673
:106C6C0000F0F380824500F2EE803A4B1968414403
:106C7C001960084600F04E81DBF8001001930131D9
:106C8C001BBFA2EB0A010918CBF80020196012F007
:106C9C00070B00F01781CBF108010A44CBF58051AA
:106CAC0090440831A1EB0801C1F30B0A5146204670
:106CBC00009200F0DDF9421CDDE9002300F04F8169
:106CCC00801A00EB0A081968BA6048F001005144B8
:106CDC00BD425060196000F02981B9F10F0F40F2EC
:106CEC0027816868A9F10C0C2CF0070C00F001004E
:106CFC0040EA0C0068604FF0050E05EB0C00BCF18F
:106D0C000F0FC0E901EE00F2328150681546124BAC
:106D1C001A688A4238BF1960104B1A688A4238BF09
:106D2C00196094E0AA1943F0010346F001066E6065
:106D3C002046BA60536000F043F90835284603B08A
:106D4C00BDE8F08FD9681A44A1E600BF50090020B5
:106D5C006C1500203C1500206415002068150020DF
:106D6C0058090020580D0020B2F5206F4FEA52232D
:106D7C0063D3142B00F2B78003F15C01C9005B33C1
:106D8C0007EB010E7958AEF1080E8E4500F091809C
:106D9C004B6823F00303934202D989688E45F7D1DF
:106DAC00D1F80CE07A68C5E9021ECEF80850CD6027
:106DBC00D6E6142B59D9542B00F29D80330B03F1DA
:106DCC006F0003F16E0CC3008AE60EF1010E1EF08B
:106DDC00030F05F108057FF4D5AE51E0424445465A
:106DEC005368D8F80C1043F00103536055F8083F72
:106DFC002046D9608B6000F0E3F8F3E6F00806F16A
:106E0C00080237E62A442046536843F001035360D6
:106E1C00083500F0D5F8E5E6A919204646F001063C
:106E2C0043F001046E60C7E90411C1E902CC4C6067
:106E3C00AB5000F0C5F80835D4E6930903F13901DD
:106E4C00C90038339CE7BD425FD0BD68686820F04C
:106E5C0003084645A8EB060302D80F2B3FF762AF99
:106E6C00204600F0ADF80025BCE603F15C0003F110
:106E7C005B0CC30034E659F808394B4540F096805A
:106E8C0010F0030F00F1FF30F5D17B6823EA01030A
:106E9C007B60490099423FF6C0AE19B9BDE6490086
:106EAC000EF1040E1942FAD0704667E603F1100891
:106EBC00D0E69A104FF001087B6808FA02F21A43E8
:106ECC007A6070E702EB08014942C1F30B0A5146A4
:106EDC002046009200F0CCF8431CDDE900237FF43F
:106EEC00EFAEDA46EFE6542B25D8130B03F16F0106
:106EFC00C9006E3344E7B3F5AA7F25D8F30B03F131
:106F0C00780003F1770CC300EAE5294B186840447C
:106F1C001860B1E6CAF30B0CBCF1000F7FF4ACAEF9
:106F2C00BD68C84448F001006860F0E61546EEE61E
:106F3C000123536094E7B3F5AA7F23D8D30B03F155
:106F4C007801C90077331BE740F25452934223D89F
:106F5C00B30C03F17D0003F17C0CC300C0E5ABF175
:106F6C00080BD844A8EB02084FF0000AABE605F179
:106F7C0008012046009300F00BF9BD68009B68687F
:106F8C001968C4E640F254518B420BD8930C03F1B0
:106F9C007D01C9007C33F3E64FF47E737F204FF004
:106FAC007E0C9DE54FF47E717E23E9E67B6870E7ED
:106FBC003C150020014800F097B800BF38150020A0
:106FCC00014800F093B800BF38150020830730B596
:106FDC0048D0541E002A3FD0CAB2034601E0013CFF
:106FEC003AD303F8012B9D07F9D1032C2DD9CDB23F
:106FFC0045EA05250F2C45EA054536D9A4F11002C2
:10700C0022F00F0C03F1200EE6444FEA121C03F1A0
:10701C00100242E9045542E9025510327245F8D18A
:10702C000CF1010214F00C0F03EB021204F00F0C24
:10703C0013D0ACF1040323F003030433134442F8DC
:10704C00045B9342FBD10CF003042CB1C9B21C4479
:10705C0003F8011B9C42FBD130BD64461346002C47
:10706C00F4D1F9E703461446BFE71A46A446E0E715
:10707C0038B5074D0022044608462A60FEF780FB0F
:10708C00431C00D038BD2B68002BFBD0236038BDCF
:10709C00B8160020014B1868704700BF600D002027
:1070AC0070B50D4E0D4D761BB61006D0002455F85C
:1070BC00043B01349847A642F9D1094E094D761B81
:1070CC0000F06EF9B61006D0002455F8043B0134DC
:1070DC009847A642F9D170BDF01A0060F01A006012
:1070EC00F41A0060F01A0060704700BF704700BFD0
:1070FC00F8B5244F0C460646FFF75CFFBB685D688D
:10710C00C4F57E610F3125F003054B1923F47F6321
:10711C0023F00F03A3F58054B4F5805F07DB002147
:10712C003046FFF7A5FFBB682B44984204D030468D
:10713C00FFF746FF0020F8BD61423046FFF798FF8D
:10714C0001300DD0104ABB682D1B45F001055D6068
:10715C00136830461B1B1360FFF732FF0120F8BD8C
:10716C0000213046FFF784FFBA68831A0F2BDEDD4F
:10717C0043F001035360054B03491B68C01A0860B8
:10718C00D5E700BF500900203C150020580D002009
:10719C00002961D0F8B50C460646FFF70BFF54F8F2
:1071AC00042C7B4FA4F1080522F0010105EB010C26
:1071BC00B868DCF80430604523F0030300F08B80E2
:1071CC00D207CCF8043032D454F8082CAD1A114440
:1071DC00AA6807F1080082426AD00CEB0304D4F8C9
:1071EC0004E0EC68D4601EF0010FA26000F0978000
:1071FC0041F001036B60CCF80010B1F5007F35D283
:10720C007868CB080122490901338A40024357F8B8
:10721C0033107A6007EBC302083AC5E9021247F84B
:10722C003350CD603046BDE8F840FFF7C9BE0CEBDB
:10723C0003025268D00710D4194407F10800DCF897
:10724C000830834273D0DCF80C20DA60936041F094
:10725C0001036B606950D0E7704741F00103B1F551
:10726C00007F44F8043CCCF80010C9D3B1F5206F72
:10727C004FEA512348D28B0903F1390003F138024C
:10728C00C300F818FB580838984259D05A6822F0B5
:10729C0003028A4202D99B689842F7D1D868C5E9A3
:1072AC0002308560DD603046BDE8F840FFF788BEEF
:1072BC000CEB03025268D20763D40B44DCE90212D4
:1072CC00CA60916043F001026A603046EB50BDE841
:1072DC00F840FFF775BE0B44D10707D454F8082CBF
:1072EC00AD1A1344D5E90212CA60916043F0010251
:1072FC006A60284ABD6012689A4293D8264B304681
:10730C001968FFF7F5FE8DE7142B0AD9542B1FD8FB
:10731C000B0B03F16F0003F16E02C300B1E71944CC
:10732C008DE703F15C0003F15B02C300A9E741F0B8
:10733C000103C7E90455C5E902006B60695071E7A8
:10734C0079689210012404FA02F20A437A60A6E7E3
:10735C00B3F5AA7F06D8CB0B03F1780003F17702C3
:10736C00C3008EE740F25452934206D88B0C03F1C3
:10737C007D0003F17C02C30083E74FF47E737E2211
:10738C007FE741F001036B60CCF800104AE700BFC7
:10739C00500900205C0D00206C150020000000003E
:1073AC005FF800F0AD1A00605FF800F0051A00609D
:0473BC00F8B500BF61
:1073C00000000000000000000000000000000000BD
:1073D00000000000000000000000000000000000AD
:1073E000000000000000000000000000000000009D
:1073F000000000000000000000000000000000008D
:10740000000000000000000000000000000000007C
:10741000000000000000000000000000000000006C
:10742000000000000000000000000000000000005C
:10743000000000000000000000000000000000004C
:10744000000000000000000000000000000000003C
:10745000000000000000000000000000000000002C
:10746000000000000000000000000000000000001C
:10747000000000000000000000000000000000000C
:1074800000000000000000000000000000000000FC
:1074900000000000000000000000000000000000EC
:1074A00000000000000000000000000000000000DC
:1074B00000000000000000000000000000000000CC
:1074C00000000000000000000000000000000000BC
:1074D00000000000000000000000000000000000AC
:1074E000000000000000000000000000000000009C
:1074F000000000000000000000000000000000008C
:10750000000000000000000000000000000000007B
:10751000000000000000000000000000000000006B
:10752000000000000000000000000000000000005B
:10753000000000000000000000000000000000004B
:10754000000000000000000000000000000000003B
:10755000000000000000000000000000000000002B
:10756000000000000000000000000000000000001B
:10757000000000000000000000000000000000000B
:1075800000000000000000000000000000000000FB
:1075900000000000000000000000000000000000EB
:1075A00000000000000000000000000000000000DB
:1075B00000000000000000000000000000000000CB
:1075C00000000000000000000000000000000000BB
:1075D00000000000000000000000000000000000AB
:1075E000000000000000000000000000000000009B
:1075F000000000000000000000000000000000008B
:10760000000000000000000000000000000000007A
:10761000000000000000000000000000000000006A
:10762000000000000000000000000000000000005A
:10763000000000000000000000000000000000004A
:107640007500000000000000650000000000000060
:1076500069000000000000007700FC0F010100003D
:1076600077E2FE0F010000007703080F0100000021
:107670007704080F0200FC007700080F08030000E1
:107680000000FC02000000007700080F0804000062
:1076900000000001000000007700080F0800000053
:1076A00000000000040000007700FC0F0000000054
:1076B0007700FD0F000000000000FC000200000049
:1076C0007701080F0101000077E2FE0F01090000B9
:1076D00077E2FE0F0104000077E2FE0F01030000D5
:1076E00077E2FE0F01080000001900004931000098
:1076F0000000000074C00F40C00000000000000047
:107700000200000050851F4001000000FF00000043
:10771000FF00000000000000000000000100000069
:107720000200000054851F4001000000FF0000001F
:10773000FF0000000000000000000000FF0040000B
:10774000260018007C00000000000000000000007F
:107750005531000085450000814500007D45000051
:1077600079450000AD310000B131000075450000E1
:107770000000000000000000F92F00005D31000053
:10778000652A0000BD2B0000852A0000292B00007F
:10779000AD2A0000412C0000D92B0000612A000016
:1077A00000000042C8801F40B8821F40080000004F
:1077B00000000042C4801F40B4821F40040000004B
:1077C00000C0004224801F4014821F4010000000AF
:1077D00000C0004228801F4018821F402000000087
:1077E00000C000422C801F401C821F40400000004F
:1077F00000C0004234801F4024821F40000100006E
:107800000040004264811F4054831F400004000078
:107810000040004280811F4070831F400000020032
:10782000004000427C811F406C831F40000001002B
:107830000040004268811F4058831F40000800003C
:10784000004000423C811F402C831F40010000008B
:107850000040004244811F4034831F400400000068
:107860000040004240811F4030831F400200000062
:107870000040004248811F4038831F40080000003C
:107880000000004204811F40F4821F4000000400F9
:107890000000004208811F40F8821F4000000800DD
:1078A0000000004218811F4008831F400000800034
:1078B0000000004214811F4004831F40000040006C
:1078C0000000004200811F40F0821F4000000200C3
:1078D00000000042FC801F40EC821F4000000100BD
:1078E0000000004224811F4014831F400000000458
:1078F0000000004228811F4018831F40000000083C
:10790000000000421C811F400C831F40000000014A
:107910000000004220811F4010831F400000000231
:1079200000000042EC801F40DC821F40001000007D
:1079300000000042F0801F40E0821F400020000055
:107940000000004234811F4024831F40000000409B
:107950000000004238811F4028831F400000008043
:107960000080004294801F4084821F400000040079
:1079700000C0004290801F4080821F4000000080B5
:1079800000800042A8801F4098821F4000008000B5
:1079900000800042A4801F4094821F4000004000ED
:1079A000004000426C811F405C831F4000100000BB
:1079B00000C0004230801F4020821F408000000035
:1079C00000800042C8811F40B8831F400080000033
:1079D00000800042C4811F40B4831F40004000006B
:1079E00000800042C0811F40B0831F400020000083
:1079F00000800042BC811F40AC831F40001000008B
:107A000000800042D0811F40C0831F400000020060
:107A100000800042CC811F40BC831F400000010059
:107A200000010000640D00201200000000060000AC
:107A3000F01B00600A000000000200008C1B0060C8
:107A40006200000000070000281B006062000000C8
:107A5000EE030000A00D002012000000000004EE64
:107A6000780D00202800000000030000241B0060A7
:107A700000000000010309040C1B0060000000006E
:107A800002030904F41A0060000000000303090463
:107A9000B40D002000000000000000000000000005
:107AA0000000000000000000000000007015002031
:107AB000D815002040160020000000000000000043
:107AC00000000000000000000000000000000000B6
:107AD00000000000000000000000000000000000A6
:107AE0000000000000000000000000000000000096
:107AF0000000000000000000000000000000000086
:107B00000000000000000000000000000000000075
:107B10000000000000000000000000000000000065
:107B20000000000000000000000000000000000055
:107B30000000000000000000000000000000000045
:107B400001000000000000000E33CDAB34126DE6E2
:107B5000ECDE05000B00000000000000000000004B
:107B60000000000000000000000000000000000015
:107B70000000000000000000000000000000000005
:107B800000000000000000000000000000000000F5
:107B900000000000000000000000000000000000E5
:107BA00000000000000000000000000000000000D5
:107BB00000000000000000000000000000000000C5
:107BC00000000000000000000029DE07007B9A177B
:107BD000E00704EC00FB0F0000FBC013BFE607C08A
:107BE000BFEC07C0BFEE07CFEB07ECF5EA07FCB22E
:107BF000FF0E72FCB2FF0E76FCB2FF0E77FCB2FFF6
:107C00000E9EFDFCB2FF0E73624C69DD6D4C77DD9C
:107C10001D4C72DD294C65DD324C75DD62FCA1FF27
:107C20000ED5EA07DFC8AFE60712ECEB070FFCB290
:107C3000FF0E119BA793DFF6FE4C00EEE3FF118BC6
:107C4000FCA1FF0EA793DFF6EED6FF61FFFCF8FF65
:107C50000E8F02084C0FDD0B624CFFDF11FCC408D5
:107C60000FEFF5624CFFDF06FC04F00EEFF5C36189
:107C7000CFC262FCA1FF0EEEA7FFE5EA07EF03E526
:107C8000EA07FE0200EF9A5100FCA1FF0ED7FFFFAA
:107C9000FFFFFFFFFFFFFFFFFFFFFF00900300203C
:107CA00000000000E803000000000000B80300200E
:107CB00000000000E8030000000000000080194000
:107CC0002803002000000000C814002088140020B1
:107CD0000000000000000000400000004000000024
:107CE0004000000040000000000000000000000014
:107CF0000000000000000000000000000000000084
:107D00000000000000000000000000008030202083
:107D10000000000000000000500900205009002071
:107D2000580900205809002060090020600900203F
:107D300068090020680900207009002070090020EF
:107D4000780900207809002080090020800900209F
:107D5000880900208809002090090020900900204F
:107D60009809002098090020A0090020A0090020FF
:107D7000A8090020A8090020B0090020B0090020AF
:107D8000B8090020B8090020C0090020C00900205F
:107D9000C8090020C8090020D0090020D00900200F
:107DA000D8090020D8090020E0090020E0090020BF
:107DB000E8090020E8090020F0090020F00900206F
:107DC000F8090020F8090020000A0020000A00201D
:107DD000080A0020080A0020100A0020100A0020CB
:107DE000180A0020180A0020200A0020200A00207B
:107DF000280A0020280A0020300A0020300A00202B
:107E0000380A0020380A0020400A0020400A0020DA
:107E1000480A0020480A0020500A0020500A00208A
:107E2000580A0020580A0020600A0020600A00203A
:107E3000680A0020680A0020700A0020700A0020EA
:107E4000780A0020780A0020800A0020800A00209A
:107E5000880A0020880A0020900A0020900A00204A
:107E6000980A0020980A0020A00A0020A00A0020FA
:107E7000A80A0020A80A0020B00A0020B00A0020AA
:107E8000B80A0020B80A0020C00A0020C00A00205A
:107E9000C80A0020C80A0020D00A0020D00A00200A
:107EA000D80A0020D80A0020E00A0020E00A0020BA
:107EB000E80A0020E80A0020F00A0020F00A00206A
:107EC000F80A0020F80A0020000B0020000B002018
:107ED000080B0020080B0020100B0020100B0020C6
:107EE000180B0020180B0020200B0020200B002076
:107EF000280B0020280B0020300B0020300B002026
:107F0000380B0020380B0020400B0020400B0020D5
:107F1000480B0020480B0020500B0020500B002085
:107F2000580B0020580B0020600B0020600B002035
:107F3000680B0020680B0020700B0020700B0020E5
:107F4000780B0020780B0020800B0020800B002095
:107F5000880B0020880B0020900B0020900B002045
:107F6000980B0020980B0020A00B0020A00B0020F5
:107F7000A80B0020A80B0020B00B0020B00B0020A5
:107F8000B80B0020B80B0020C00B0020C00B002055
:107F9000C80B0020C80B0020D00B0020D00B002005
:107FA000D80B0020D80B0020E00B0020E00B0020B5
:107FB000E80B0020E80B0020F00B0020F00B002065
:107FC000F80B0020F80B0020000C0020000C002013
:107FD000080C0020080C0020100C0020100C0020C1
:107FE000180C0020180C0020200C0020200C002071
:107FF000280C0020280C0020300C0020300C002021
:10800000380C0020380C0020400C0020400C0020D0
:10801000480C0020480C0020500C0020500C002080
:10802000580C0020580C0020600C0020600C002030
:10803000680C0020680C0020700C0020700C0020E0
:10804000780C0020780C0020800C0020800C002090
:10805000880C0020880C0020900C0020900C002040
:10806000980C0020980C0020A00C0020A00C0020F0
:10807000A80C0020A80C0020B00C0020B00C0020A0
:10808000B80C0020B80C0020C00C0020C00C002050
:10809000C80C0020C80C0020D00C0020D00C002000
:1080A000D80C0020D80C0020E00C0020E00C0020B0
:1080B000E80C0020E80C0020F00C0020F00C002060
:1080C000F80C0020F80C0020000D0020000D00200E
:1080D000080D0020080D0020100D0020100D0020BC
:1080E000180D0020180D0020200D0020200D00206C
:1080F000280D0020280D0020300D0020300D00201C
:10810000380D0020380D0020400D0020400D0020CB
:10811000480D0020480D0020FFFFFFFF0000020077
:10812000E806002012010002EF020140C01683049D
:108130007902010203010000280000000001040090
:108140000100000000000000020157494E55534253
:10815000000000000000000000000000000000001F
:1081600012034D005300460054003100300030002F
:10817000F80000000C0300000000000000000000F8
:1081800000000000000000000000000000000000EF
:1081900000000000000000000000000000000000DF
:1081A00000000000000000000000000000000000CF
:1081B00000000000000000000000000000000000BF
:1081C00000000000000000000000000000000000AF
:1081D000000000000000000000000000000000009F
:1081E000000000000000000000000000000000008F
:1081F000000000000000000000000000000000007F
:10820000000000000000000000000000000000006E
:10821000000000000000000000000000000000005E
:10822000000000000000000000000000000000004E
:10823000000000000000000000000000000000003E
:10824000000000000000000000000000000000002E
:10825000000000000000000000000000000000001E
:10826000000000000000000000000000000000000E
:1082700000000000000000000000000000000000FE
:1082800000000000000000000000000000000000EE
:1082900000000000000000000000000000000000DE
:1082A00000000000000000000000000000000000CE
:1082B00000000000000000000000000000000000BE
:1082C00000000000000000000000000000000000AE
:1082D000000000000000000000000000000000009E
:1082E000000000000000000000000000000000008E
:1082F000000000000000000000000000000000007E
:10830000000000000000000000000000000000006D
:10831000000000000000000000000000000000005D
:10832000000000000000000000000000000000004D
:10833000000000000000000000000000000000003D
:10834000000000000000000000000000000000002D
:10835000000000000000000000000000000000001D
:10836000000000000000000000000000000000000D
:1083700000000000000000000000000000000000FD
:1083800000000000000000000000000000000000ED
:1083900000000000000000000000000000000000DD
:1083A00000000000000000000000000000000000CD
:1083B00000000000000000000000000000000000BD
:1083C00000000000000000000000000000000000AD
:1083D000000000000000000000000000000000009D
:1083E000000000000000000000000000000000008D
:1083F000000000000000000000000000000000007D
:10840000000000000000000000000000000000006C
:10841000000000000000000000000000000000005C
:10842000000000000000000000000000000000004C
:10843000000000000000000000000000000000003C
:10844000000000000000000000000000000000002C
:10845000000000000000000000000000000000001C
:10846000000000000000000000000000000000000C
:1084700000000000000000000000000000000000FC
:1084800000000000000000000000000000000000EC
:1084900000000000000000000000000000000000DC
:1084A00000000000000000000000000000000000CC
:1084B00000000000000000000000000000000000BC
:1084C00000000000000000000000000000000000AC
:1084D000000000000000000000000000000000009C
:1084E000000000000000000000000000000000008C
:1084F000000000000000000000000000000000007C
:10850000000000000000000000000000000000006B
:10851000000000000000000000000000000000005B
:10852000000000000000000000000000000000004B
:10853000000000000000000000000000000000003B
:10854000000000000000000000000000000000002B
:10855000000000000000000000000000000000001B
:10856000000000000000000000000000000000000B
:1085700000000000000000000000000000000000FB
:1085800000000000000000000000000000000000EB
:1085900000000000000000000000000000000000DB
:1085A00000000000000000000000000000000000CB
:1085B00000000000000000000000000000000000BB
:1085C00000000000000000000000000000000000AB
:1085D000000000000000000000000000000000009B
:1085E000000000000000000000000000000000008B
:1085F000000000000000000000000000000000007B
:10860000000000000000000000000000000000006A
:10861000000000000000000000000000000000005A
:10862000000000000000000000000000000000004A
:10863000000000000000000000000000000000003A
:10864000000000000000000000000000000000002A
:10865000000000000000000000000000000000001A
:10866000000000000000000000000000000000000A
:1086700000000000000000000000000000000000FA
:10868000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
:10869000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
:1086A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
:1086B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
:1086C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
:1086D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
:1086E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
:1086F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
:10870000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
:10871000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
:10872000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
:10873000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
:10874000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
:10875000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
:10876000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
:10877000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
:10878000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
:10879000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
:1087A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
:1087B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
:1087C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
:1087D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
:1087E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
:1087F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
:108800000000000000000000000000000000000068
:108810000000000000000000000000000000000058
:108820000000000000000000000000000000000048
:108830000000000000000000000000000000000038
:108840000000000000000000000000000000000028
:108850000000000000000000000000000000000018
:108860000000000000000000000000000000000008
:1088700000000000000000000000000000000000F8
:1088800000000000000000000000000000000000E8
:1088900000000000000000000000000000000000D8
:1088A00000000000000000000000000000000000C8
:1088B00000000000000000000000000000000000B8
:1088C00000000000000000000000000000000000A8
:1088D0000000000000000000000000000000000098
:1088E0000000000000000000000000000000000088
:1088F0000000000000000000000000000000000078
:108900000000000000000000000000000000000067
:108910000000000000000000000000000000000057
:108920000000000000000000000000000000000047
:108930000000000000000000000000000000000037
:108940000000000000000000000000000000000027
:108950000000000000000000000000000000000017
:108960000000000000000000000000000000000007
:1089700000000000000000000000000000000000F7
:1089800000000000000000000000000000000000E7
:1089900000000000000000000000000000000000D7
:1089A00000000000000000000000000000000000C7
:1089B00000000000000000000000000000000000B7
:1089C00000000000000000000000000000000000A7
:1089D0000000000000000000000000000000000097
:1089E0000000000000000000000000000000000087
:1089F0000000000000000000000000000000000077
:108A00000000000000000000000000000000000066
:108A10000000000000000000000000000000000056
:108A20000000000000000000000000000000000046
:108A30000000000000000000000000000000000036
:108A40000000000000000000000000000000000026
:108A50000000000000000000000000000000000016
:108A60000000000000000000000000000000000006
:108A700000000000000000000000000000000000F6
:108A800000000000000000000000000000000000E6
:108A900000000000000000000000000000000000D6
:108AA00000000000000000000000000000000000C6
:108AB00000000000000000000000000000000000B6
:108AC00000000000000000000000000000000000A6
:108AD0000000000000000000000000000000000096
:108AE0000000000000000000000000000000000086
:108AF0000000000000000000000000000000000076
:108B00000000000000000000000000000000000065
:108B10000000000000000000000000000000000055
:108B20000000000000000000000000000000000045
:108B30000000000000000000000000000000000035
:108B40000000000000000000000000000000000025
:108B50000000000000000000000000000000000015
:108B60000000000000000000000000000000000005
:108B700000000000000000000000000000000000F5
:108B800000000000000000000000000000000000E5
:108B900000000000000000000000000000000000D5
:108BA00000000000000000000000000000000000C5
:108BB00000000000000000000000000000000000B5
:108BC00000000000000000000000000000000000A5
:108BD0000000000000000000000000000000000095
:108BE0000000000000000000000000000000000085
:108BF0000000000000000000000000000000000075
:108C00000000000000000000000000000000000064
:108C10000000000000000000000000000000000054
:108C20000000000000000000000000000000000044
:108C30000000000000000000000000000000000034
:108C40000000000000000000000000000000000024
:108C50000000000000000000000000000000000014
:108C60000000000000000000000000000000000004
:108C700000000000000000000000000000000000F4
:108C800000000000000000000000000000000000E4
:108C900000000000000000000000000000000000D4
:108CA00000000000000000000000000000000000C4
:108CB00000000000000000000000000000000000B4
:108CC00000000000000000000000000000000000A4
:108CD0000000000000000000000000000000000094
:108CE0000000000000000000000000000000000084
:108CF0000000000000000000000000000000000074
:108D00000000000000000000000000000000000063
:108D10000000000000000000000000000000000053
:108D20000000000000000000000000000000000043
:108D30000000000000000000000000000000000033
:108D40000000000000000000000000000000000023
:108D50000000000000000000000000000000000013
:108D60000000000000000000000000000000000003
:108D700000000000000000000000000000000000F3
:108D800000000000000000000000000000000000E3
:108D900000000000000000000000000000000000D3
:108DA00000000000000000000000000000000000C3
:108DB00000000000000000000000000000000000B3
:108DC00000000000000000000000000000000000A3
:108DD0000000000000000000000000000000000093
:108DE0000000000000000000000000000000000083
:108DF0000000000000000000000000000000000073
:108E00000000000000000000000000000000000062
:108E10000000000000000000000000000000000052
:108E20000000000000000000000000000000000042
:108E30000000000000000000000000000000000032
:108E40000000000000000000000000000000000022
:108E50000000000000000000000000000000000012
:108E60000000000000000000000000000000000002
:108E700000000000000000000000000000000000F2
:108E800000000000000000000000000000000000E2
:108E900000000000000000000000000000000000D2
:108EA00000000000000000000000000000000000C2
:108EB00000000000000000000000000000000000B2
:108EC00000000000000000000000000000000000A2
:108ED0000000000000000000000000000000000092
:108EE0000000000000000000000000000000000082
:108EF0000000000000000000000000000000000072
:108F00000000000000000000000000000000000061
:108F10000000000000000000000000000000000051
:108F20000000000000000000000000000000000041
:108F30000000000000000000000000000000000031
:108F40000000000000000000000000000000000021
:108F50000000000000000000000000000000000011
:108F60000000000000000000000000000000000001
:108F700000000000000000000000000000000000F1
:108F800000000000000000000000000000000000E1
:108F900000000000000000000000000000000000D1
:108FA00000000000000000000000000000000000C1
:108FB00000000000000000000000000000000000B1
:108FC00000000000000000000000000000000000A1
:108FD0000000000000000000000000000000000091
:108FE0000000000000000000000000000000000081
:108FF0000000000000000000000000000000000071
:109000000000000000000000000000000000000060
:109010000000000000000000000000000000000050
:109020000000000000000000000000000000000040
:109030000000000000000000000000000000000030
:109040000000000000000000000000000000000020
:109050000000000000000000000000000000000010
:109060000000000000000000000000000000000000
:1090700000000000000000000000000000000000F0
:1090800000000000000000000000000000000000E0
:1090900000000000000000000000000000000000D0
:1090A00000000000000000000000000000000000C0
:1090B00000000000000000000000000000000000B0
:1090C00000000000000000000000000000000000A0
:1090D0000000000000000000000000000000000090
:1090E0000000000000000000000000000000000080
:1090F0000000000000000000000000000000000070
:10910000000000000000000000000000000000005F
:10911000000000000000000000000000000000004F
:10912000000000000000000000000000000000003F
:10913000000000000000000000000000000000002F
:10914000000000000000000000000000000000001F
:10915000000000000000000000000000000000000F
:1091600000000000000000000000000000000000FF
:1091700000000000000000000000000000000000EF
:1091800000000000000000000000000000000000DF
:1091900000000000000000000000000000000000CF
:1091A00000000000000000000000000000000000BF
:1091B00000000000000000000000000000000000AF
:1091C000000000000000000000000000000000009F
:1091D000000000000000000000000000000000008F
:1091E000000000000000000000000000000000007F
:1091F000000000000000000000000000000000006F
:10920000000000000000000000000000000000005E
:10921000000000000000000000000000000000004E
:10922000000000000000000000000000000000003E
:10923000000000000000000000000000000000002E
:10924000000000000000000000000000000000001E
:10925000000000000000000000000000000000000E
:1092600000000000000000000000000000000000FE
:1092700000000000000000000000000000000000EE
:1092800000000000000000000000000000000000DE
:1092900000000000000000000000000000000000CE
:1092A00000000000000000000000000000000000BE
:1092B00000000000000000000000000000000000AE
:1092C000000000000000000000000000000000009E
:1092D000000000000000000000000000000000008E
:1092E000000000000000000000000000000000007E
:1092F000000000000000000000000000000000006E
:10930000000000000000000000000000000000005D
:10931000000000000000000000000000000000004D
:10932000000000000000000000000000000000003D
:10933000000000000000000000000000000000002D
:10934000000000000000000000000000000000001D
:10935000000000000000000000000000000000000D
:1093600000000000000000000000000000000000FD
:1093700000000000000000000000000000000000ED
:1093800000000000000000000000000000000000DD
:1093900000000000000000000000000000000000CD
:1093A00000000000000000000000000000000000BD
:1093B00000000000000000000000000000000000AD
:1093C000000000000000000000000000000000009D
:1093D000000000000000000000000000000000008D
:1093E000000000000000000000000000000000007D
:1093F000000000000000000000000000000000006D
:040000056000100087
:00000001FF
================================================
FILE: assets/hw/syscon_flasher/syscon_flasher_v2.05_teensy_4.1.hex
================================================
:0200000460009A
:100000004643464200000156000000000103030081
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:1000300000000000000000000000000000000000C0
:1000400000000000010408000000000000000000A3
:100050000000800000000000000000000000000020
:100060000000000000000000000000000000000090
:100070000000000000000000000000000000000080
:10008000EB04180A063204260000000000000000FD
:10009000050404240000000000000000000000002F
:1000A0000000000000000000000000000000000050
:1000B0000604000000000000000000000000000036
:1000C0000000000000000000000000000000000030
:1000D00020041808000000000000000000000000DC
:1000E0000000000000000000000000000000000010
:1000F0000000000000000000000000000000000000
:10010000D8041808000000000000000000000000F3
:100110000204180804200000000000000000000095
:1001200000000000000000000000000000000000CF
:10013000600400000000000000000000000000005B
:1001400000000000000000000000000000000000AF
:10015000000000000000000000000000000000009F
:10016000000000000000000000000000000000008F
:10017000000000000000000000000000000000007F
:10018000000000000000000000000000000000006F
:10019000000000000000000000000000000000005F
:1001A000000000000000000000000000000000004F
:1001B000000000000000000000000000000000003F
:1001C000000100000010000001000000000000001D
:1001D000000001000000000000000000000000001E
:1001E000000000000000000000000000000000000F
:1001F00000000000000000000000000000000000FF
:10020000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
:10021000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
:10022000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
:10023000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
:10024000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:10025000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
:10026000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
:10027000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
:10028000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
:10029000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
:1002A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
:1002B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
:1002C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:1002D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
:1002E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:1002F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
:10030000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:10031000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
:10032000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:10033000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
:10034000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:10035000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
:10036000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:10037000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10039000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1003B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1003D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1003F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:10040000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
:10041000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
:10042000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
:10043000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
:10044000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
:10045000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
:10046000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
:10047000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
:10048000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
:10049000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C
:1004A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
:1004B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
:1004C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
:1004D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
:1004E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
:1004F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
:10050000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB
:10051000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
:10052000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB
:10053000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB
:10054000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB
:10055000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
:10056000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B
:10057000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B
:10058000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
:10059000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B
:1005A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
:1005B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
:1005C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
:1005D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
:1005E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
:1005F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
:10060000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
:10061000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
:10062000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
:10063000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
:10064000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
:10065000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
:10066000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
:10067000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
:10068000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
:10069000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
:1006A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
:1006B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
:1006C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
:1006D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
:1006E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
:1006F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A
:10070000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
:10071000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
:10072000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9
:10073000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
:10074000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
:10075000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
:10076000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
:10077000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
:10078000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
:10079000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69
:1007A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
:1007B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
:1007C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
:1007D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29
:1007E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
:1007F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
:10080000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
:10081000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
:10082000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
:10083000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8
:10084000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
:10085000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
:10086000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
:10087000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88
:10088000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
:10089000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68
:1008A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
:1008B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48
:1008C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
:1008D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
:1008E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
:1008F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
:10090000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
:10091000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
:10092000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
:10093000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
:10094000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
:10095000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
:10096000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
:10097000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87
:10098000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
:10099000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67
:1009A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
:1009B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
:1009C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
:1009D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27
:1009E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
:1009F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
:100A0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
:100A1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6
:100A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
:100A3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6
:100A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
:100A5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
:100A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
:100A7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
:100A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
:100A9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
:100AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
:100AB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
:100AC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
:100AD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26
:100AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16
:100AF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
:100B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
:100B1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
:100B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
:100B3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
:100B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
:100B5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
:100B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
:100B7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
:100B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
:100B9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
:100BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
:100BB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
:100BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
:100BD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
:100BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
:100BF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
:100C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
:100C1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
:100C2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4
:100C3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4
:100C4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4
:100C5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4
:100C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94
:100C7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84
:100C8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74
:100C9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64
:100CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
:100CB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44
:100CC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34
:100CD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24
:100CE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14
:100CF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04
:100D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3
:100D1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3
:100D2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
:100D3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
:100D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
:100D5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
:100D6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93
:100D7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83
:100D8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73
:100D9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63
:100DA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53
:100DB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
:100DC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33
:100DD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23
:100DE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13
:100DF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
:100E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
:100E1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2
:100E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
:100E3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
:100E4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2
:100E5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2
:100E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
:100E7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82
:100E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72
:100E9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
:100EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52
:100EB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
:100EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32
:100ED000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
:100EE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12
:100EF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02
:100F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1
:100F1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
:100F2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1
:100F3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
:100F4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1
:100F5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
:100F6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
:100F7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81
:100F8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71
:100F9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
:100FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
:100FB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
:100FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31
:100FD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21
:100FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
:100FF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01
:10100000D10020434D1600600000000000000000E9
:101010002010006000100060008C006000000000E4
:10102000000000600098000000000000FFFFFFFFCC
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
:1010E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
:1010F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
:10110000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
:10111000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
:10112000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
:10113000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
:10114000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
:10115000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
:10116000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
:10117000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
:10118000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
:10119000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
:1011A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
:1011B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
:1011C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
:1011D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
:1011E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
:1011F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
:10120000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
:10121000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
:10122000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
:10123000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:10124000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
:10125000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
:10126000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
:10127000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
:10128000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
:10129000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
:1012A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
:1012B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:1012C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
:1012D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:1012E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
:1012F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
:10130000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
:10131000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:10132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
:10133000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:10134000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
:10135000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:10136000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10137000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10138000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:10139000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1013A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1013B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1013C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1013D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:1013F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:10140000814205D051F8043B40F8043B8242F9D8B0
:10141000704700BF044A05494FF0000342F8043BFF
:101420009142FBD8704700BFC0120020A0170020D7
:101430002DE98848BFF34F8F00BF00BF00BF00BF3A
:1014400000F018F9684B0822C3F8542100BF00BF10
:1014500000BF00BF00BF00BF00BF00BF00BF00BF94
:1014600000BF00BF00BF00BF00BF00BF5F4A6049B0
:101470006048FFF7C5FF604A60496148FFF7C0FF59
:10148000604CFFF7C7FF4FF470004FF0E0210023DE
:101490005D4AC1F8880D44F823200133B02BFAD1FE
:1014A0005A4B80215A4A03F8011B9342FBD14FF05B
:1014B000E0254D4E4FF08039DFF884B1DFF884A18C
:1014C0004FF0FF31C5F8084D0027C6F80491C6F863
:1014D00000B1C6F8F490C6F8F0A0D5F8243DDFF8C6
:1014E000688143F4E0234B4AC5F8243DD8F81C300A
:1014F00023F07F0343F04003C8F81C30D8F82430B1
:1015000023F07F0343F04003C8F824309166D1668E
:101510001167516700F0B6F83F4B4049A363404B59
:10152000E36363236B610323AF612B613D4BC5F81C
:10153000203DD5F8FC3D43F08073C5F8FC3D3A4BA7
:101540001A6842F001021A605B680B6000F0E4FA6E
:10155000C6F804913548C6F800B1C6F8F490C6F84C
:10156000F0A000F071FCD8F86C10314B314A41F416
:101570004051C8F86C101F60C3F80871C3F81871A7
:10158000C3F82871C3F83871936BDB0708D442F6AF
:101590001563294951651365936B43F00103936308
:1015A000244A264C936843F00113936000F0F2F84C
:1015B00000F016FC00F05CFC00F0DCFA00F05CF8D7
:1015C0002368132BFCD900F06DFB2368B3F5967FDD
:1015D000FBD300F055F800F051F800F045FC00F0A6
:1015E0002FFC30BFFDE700BF00800D409058000089
:1015F0008C1F006000000000C012002020780060F6
:101600000000002000100020053A000000E400E087
:10161000A0E400E000C00A40FD4D000038170020A3
:10162000014E000000002020001000E00046C3230F
:101630000040084000400D400000C0563C1700200C
:101640001B1018200C0D111300C00F40054B4FF458
:101650002A01054A05485A641864054A9963954663
:10166000FFF7E6FE00C00A40ABAAAAAA07002000C6
:1016700000800720704700BF704700BF704700BF61
:1016800000BF704710B44FF0E02300211024314810
:10169000C3F8941DC3F89C4D1124C3F8A00D2E4827
:1016A000C3F89C4D1224C3F8A00D2C48C3F89C4DE0
:1016B0002B4AC3F8A00D2B4C42F015022A48C3F860
:1016C0009C4DC3F8A00D294C2948C3F89C4DC3F884
:1016D000A00D284CC3F89C2D2748284AC3F8A04DDC
:1016E000C3F89C0DC3F8A02D02F5A022244C0C32A7
:1016F0002448C3F89C4DC3F8A02D234AC3F89C0D81
:10170000224CC3F8A02D02F14062C3F89C4D204842
:10171000C3F8A02D0C32C3F89C0DC3F8A02D00BF58
:1017200000BF00BF00BF00BF0122C3F8942DBFF36C
:101730004F8FBFF36F8FC3F8501FBFF34F8FBFF3AF
:101740006F8FD3F8142D5DF8044B42F44032C3F888
:10175000142D70473F0000102500080709001000F5
:10176000A017002013002000210002071400002011
:1017700025000813090000101600202027000B1375
:1017800017000040180000602F000B0719000070C0
:101790001A000080F0B5B84B1822B84E0120B84F9F
:1017A00083B0C3F85C62B749C3F86072B64DC3F842
:1017B0006462A6F53046B54CC3F86862C3F86C5253
:1017C000C3F87052C3F87452C3F8785248F20C75DB
:1017D000DA661A675A679A67DA67C3F88020C3F82F
:1017E0008420C3F88820C1F82C03A94AC1F830032B
:1017F000C1F83403C1F83803C1F83C03C1F8500301
:10180000A169A44B0A40A448A4491343A44AA36174
:10181000D4F8843043F00C03C4F884304FF0FF3424
:10182000036843F00203036003682B404FF4005544
:101830001A439C4B026044608A689B4C13409B4A4D
:1018400043F000538360C36823F07803C360036AE6
:10185000134023430362036A1340954A2343954C84
:1018600043628262C2620022D1F8B83023F03F03A3
:1018700043F00103C0F8B830D1F8BC308E4923F0F2
:101880003F0343F00103C0F8BC3040F2056302613E
:1018900005660467C0F88030456644670224C0F8D6
:1018A0008430036823F0020303608161834B844921
:1018B000C46143F8042B8B42FBD1774A136843F091
:1018C00001031360136813F00103FBD17A4802216E
:1018D00040F2F564906140F29940D16140F2664176
:1018E000C2F8004242F20144C2F810127549C2F82F
:1018F0002002C2F8301240F235417348C2F8344237
:10190000C2F84012714CC2F8500242F201207049F4
:10191000C2F854120121C2F86042C2F864025E4863
:10192000C2F8A030C2F8A430C2F8B0104369DA0798
:10193000FCD5012300244FF4803257494361C0F89D
:10194000A040C0F8A420C0F8B0304B69DB07FCD53C
:10195000012300244FF400304F4A4B61C1F8A040EE
:10196000C1F8A400C1F8B0305369DF07FCD50123EA
:101970000024584848495361C2F8A040C2F8A40066
:10198000C2F8B0304B69DE07FCD5D1F8003145F61E
:101990000D5221209BB24861934265D100244FF43F
:1019A000802201233C48C1F8A040C1F8A420C1F81E
:1019B000B0304369DD07FCD501234FF4000400215A
:1019C000354A4361C0F8A040C0F8A410C0F8B03058
:1019D0005369DC07FCD501234FF400044FF4803039
:1019E0002D495361C2F8A040C2F8A400C2F8B0303B
:1019F0004B69D807FCD501234FF400044FF40030A5
:101A0000254A4B61C1F8A040C1F8A400C1F8B0302C
:101A10005369D907FCD501234FF400042D481E4912
:101A20005361C2F8A040C2F8A400C2F8B0304B69BC
:101A3000DA07FCD5D1F8003145F60D5221209BB2D2
:101A40004861934250D008254FF4000422490020F9
:101A5000224B234A009015705A1A01232148224430
:101A600000F00AFA03B0F0BD1E4B0022C3E90022C9
:101A7000C3E9022203B0F0BD00801F40F9B00100AD
:101A8000F910010000841F40F970010000C00F40F0
:101A9000FFFCFF1F000300A000402A4000802A40F6
:101AA0001200FFFFFF37F7004000008000FFF07CCE
:101AB000FF000F8363000200F05AF05A00422A40F0
:101AC00000432A409F041830EB06180A3806180A0B
:101AD00006320126040003000000007000000070C0
:101AE00066170020C01600204FF400044FF4802237
:101AF00001230848C1F8A040C1F8A420C1F8B030C3
:101B00004369DB07FCD5012310254FF08074436146
:101B10009CE700BF00402A40F0B4154A40274FF42C
:101B200080314FF480564FF400554FF4404443F257
:101B30004200136913F0020F0ED113F4005F0FD0AF
:101B400013F4805F0ED0002BF3DA13F4803F0BD137
:101B50005B060BD5F0BC7047946151619061E8E77A
:101B60005561E6E75661E4E79161E2E75761E0E736
:101B700000800D403F4A03203F49F3EE095AD2F856
:101B800080304FF0000C9FED3D6A23F001039FED84
:101B90003C5A30B4C2F88030C2F89000D1F8E0105E
:101BA000384DCBB2384C39482B6007EE903A0B0DCC
:101BB000C1F30B21F8EEE77A06EE903A07EE101A21
:101BC000334BB8EEC77A2160F8EEE66A314937EE5A
:101BD000C66A37EEC55A76EEC76A77EEE57A26EE24
:101BE000266AC3ED006A25EE265AD2F8803067EEE9
:101BF000A64AC0ED007AC6EE275A274885EE276A26
:101C0000C4EEA76A75EE875AFCEEE55A36EE076A0F
:101C100015EE904ABCEEC66A43EA045376EE877A24
:101C2000C2F8803016EE103AD2F89041FCEEE77A16
:101C300001EA0341214317EE903AC2F89011C3F331
:101C40000B03D2F890110B431449C2F89031D2F82B
:101C5000803043F00203C2F88030114B80F840C05E
:101C6000C1F840314FF0E023012230BCC3F8082115
:101C7000704700BF00810D4000441F400000AA4291
:101C80000000B44228170020241700202C17002041
:101C9000301700200000FF0F00E400E000100020DB
:101CA000C53B0000314B40F6617210B5C3F82021EE
:101CB00040F2044400F0D4F82D4A2E49D2F8803086
:101CC0002D4843F00303C2F880302C4BC1F860412B
:101CD00002681A4203D1D1F8A8319A071BD0254ACD
:101CE0004FF00041244B5963D2F8403143F00203D6
:101CF000C2F84031D2F840319B07FBD44FF400309A
:101D00004FF0E0211C4B4FF00042C1F88C0219202B
:101D10009A6300F09DF8184A4FF08040154C00215E
:101D200090630A20164B11604FF42072C4F8A8018A
:101D3000184600F091F84FF4800203464FF48100FA
:101D400040F243111860C4F858311A640D4B0E4A22
:101D5000C4F84811C3F804224FF0E0224FF40031D8
:101D60000123C2F80C11C4F8403110BD00800D40B1
:101D700000C00F4000002E4000900D40001C1E00CF
:101D80000000002000100020AD3D000008B50E4B03
:101D90001B6E9B0700D4FBBE72B60C4B00200C4A96
:101DA000C3F8400103F160430A49A3F55F231164BE
:101DB0009D46BFF34F8F4FF400130748074ADB6976
:101DC00002609B68984700BF00441F4000002E40FF
:101DD00000C00A400300200000802020000012EB19
:101DE000104BA020104AD96E41F4403110B4D9668E
:101DF00040F23764D96E41F44071D96654649064FE
:101E0000936C1B06FCD4094A40F23761A02351644D
:101E10009364936C13F08003FBD1054A13705DF853
:101E2000044B704700C00F4000400C4000800C4045
:101E300063170020F8B500BFF8BC08BC9E46704789
:101E40005FF800F0ED3600005FF800F0913200001E
:101E50005FF800F0813500005FF800F0AD5400003D
:101E60005FF800F01D4500005FF800F081550000AC
:101E70005FF800F0113900005FF800F0914E0000AB
:041E80004500000019
:101E84001603550053004200200053006500720001
:101E9400690061006C0000001803540065006500CF
:101EA4006E00730079006400750069006E006F00B5
:101EB4000403090409026200030100C032080B0094
:101EC40002020201000904000001020201000524CB
:101ED4000010010524010101042402060524060062
:101EE400010705820310001009040100020A000022
:101EF40000070503024000000705840240000009B2
:101F040004020002FF6AFF00070581024000010786
:101F1400050102400001000009026200030100C043
:101F240032080B000202020100090400000102024F
:101F34000100052400100105240101010424020606
:101F440005240600010705820310000509040100A9
:101F5400020A0000000705030200020007058402CC
:101F64000002000904020002FF6AC700070581029B
:101F74000002010705010200020100000A06000236
:081F8400EF0201400100000022
:101F8C000000000000000000000000000000000045
:101F9C000000000000000000000000000000000035
:101FAC000548064B1B1AD90F01EBA301491002D0AF
:101FBC00034B03B118477047C0120020C012002019
:101FCC000000000008B5054B1BB105490548AFF3EF
:101FDC000080BDE80840FFF7E3BF00BF0000000031
:101FEC00D01600200098006008B504F0A5FD10493B
:101FFC00104A4FF0640C104B48681268A3FB023275
:10200C00920C0CFB02F24B681B1A9A42FBD804F0A0
:10201C003FFD002805DD04F07FFD04F039FD0028AC
:10202C00F9DC00210D20BDE8084003F0BDBA00BF6B
:10203C00001000E0FC08002083DE1B432DE9F84370
:10204C00284C01210D20284E03F0AEFA04F10408AF
:10205C006521264DDFF89C90254F284602F08CFF19
:10206C00D9F8041032686423A7FB0202920C03FB1C
:10207C0002F2D9F804305B1A9A42FAD8284602F0D8
:10208C0013FD444502D014F8011FE6E7D9F804000B
:10209C006424174B32681749A3FB0232920C04FBE1
:1020AC0002F24B681B1A9A42FBD8134C00210D20EC
:1020BC000E4D03F079FA42F21077266803E023689C
:1020CC009B1BBB420AD8284602F09CFC0028F6DD7C
:1020DC00064802F0E9FCC0B2BDE8F883EF20BDE889
:1020EC00F88300BF88020020FC080020DC090020D7
:1020FC0083DE1B43001000E03C1700202DE9F84361
:10210C0001210D20BF4C03F04FFA01210D2003F0EB
:10211C004BFA04F104086921BB4DBC4EDFF8F49274
:10212C00BB4F304602F028FFD9F804102A6864230C
:10213C00A7FB0202920C03FB02F2D9F804305B1AE3
:10214C009A42FAD8304602F0AFFC444502D014F85B
:10215C00011FE6E7D9F804006421AD4B2A68A3FB04
:10216C000232920C01FB02F2AA494B681B1A9A42EA
:10217C00FBD800210D2003F017FAA44802F094FCC0
:10218C00C0B200283CD1A44C01210D209F4E03F07D
:10219C000BFA04F105087721DFF878929C4F304652
:1021AC0002F0EAFED9F804102A686423A7FB0202A5
:1021BC00920C03FB02F2D9F804305B1A9A42FAD85B
:1021CC00304602F071FC444502D014F8011FE6E7DA
:1021DC00D9F8040064218E4B2A68A3FB0232920CBE
:1021EC0001FB02F28B494B681B1A9A42FBD8002167
:1021FC000D2003F0D9F9854802F056FCC0B210B19D
:10220C00E020BDE8F883854C01210D207F4E03F0C2
:10221C00CBF904F105087721DFF8F8917C4F3046B3
:10222C0002F0AAFED9F804102A686423A7FB020264
:10223C00920C03FB02F2D9F804305B1A9A42FAD8DA
:10224C00304602F031FC444502D014F8011FE6E799
:10225C00D9F8040064216E4B2A68A3FB0232920C5D
:10226C0001FB02F26B494B681B1A9A42FBD8002106
:10227C000D2003F099F9654802F016FCC0B2002855
:10228C00BED1674C01210D20604E03F08DF904F195
:10229C0005087721DFF87C915D4F304602F06CFE2B
:1022AC00D9F804102A686423A7FB0202920C03FBE2
:1022BC0002F2D9F804305B1A9A42FAD8304602F08E
:1022CC00F3FB444502D014F8011FE6E7D9F80400EB
:1022DC0064214F4B2A68A3FB0232920C01FB02F2E1
:1022EC004C494B681B1A9A42FBD800210D2003F075
:1022FC005BF9464802F0D8FBC0B2002880D1494CAB
:10230C0001210D20414E03F04FF904F1060877210D
:10231C00DFF800913E4F304602F02EFED9F8041043
:10232C002A68A7FB02326423920C03FB02F2D9F851
:10233C0004305B1A9A42FAD8304602F0B5FB444599
:10234C0002D014F8011FE6E7D9F804006421304BE1
:10235C002A68A3FB0232920C01FB02F22D494B6856
:10236C001B1A9A42FBD800210D2003F01DF92748B7
:10237C0002F09AFBC0B200287FF442AF2A4C012134
:10238C000D20224E03F010F904F105087721DFF837
:10239C0084901F4F304602F0EFFDD9F804102A68E4
:1023AC00A7FB02326423920C03FB02F2D9F804302F
:1023BC005B1A9A42FAD8304602F076FB444502D0BA
:1023CC0014F8011FE6E7D9F804006424104B2A68BE
:1023DC001049A3FB0232920C04FB02F24B681B1A4D
:1023EC009A42FBD800210D2003F0DEF8074802F0DA
:1023FC005BFBC0B200287FF403AFBDE8F843FFF7E6
:10240C001DBE00BF90020020FC080020DC0900204B
:10241C0083DE1B43001000E098020020A002002085
:10242C00A8020020B0020020000300202DE9F04F8C
:10243C00DFF87082012183B00D2003F0B5F8934CC6
:10244C0008F1050745467721914EDFF84CA2DFF8DD
:10245C004492304602F090FDDAF8041022686423AE
:10246C00A9FB0202920C03FB02F2DAF804305B1AAD
:10247C009A42FAD8304602F017FBBD4202D015F84A
:10248C00011FE6E7834BDAF8040022688249A3FBBC
:10249C0002326423920C03FB02F24B681B1A9A4221
:1024AC00FBD800210D2003F07FF8794802F0FCFAEC
:1024BC0010F0FF0040F09480784D0121ADF804003D
:1024CC008DF806000D2003F06FF805F10C0A77214A
:1024DC006F4EDFF8C4B1DFF8BC91304602F04CFD12
:1024EC00DBF8041022686423A9FB0202920C03FBA4
:1024FC0002F2DBF804305B1A9A42FAD8304602F04A
:10250C00D3FA554502D015F8011FE6E7614BDBF80D
:10251C00040022686049A3FB02326423920C03FB83
:10252C0002F24B681B1A9A42FBD800210D2003F0D3
:10253C003BF8574802F0B8FAC0B2A0BBFFF77EFDDB
:10254C00054688BB524802F0AFFA824650485FFA03
:10255C008AFA4F4DDFF840B18DF804A002F0A4FACE
:10256C005FFA80F901210D204A4E8DF8059003F099
:10257C001BF87721284602F0FFFCDBF804102268D8
:10258C00A6FB02326423920C03FB02F2DBF804304C
:10259C005B1A9A42FAD8284602F086FAB84507D058
:1025AC0018F8011FE6E7E425284603B0BDE8F08FD4
:1025BC00384BDBF8040022683749A3FB0232642352
:1025CC00920C03FB02F24B681B1A9A42FBD80021B7
:1025DC000D2002F0E9FF2E4802F066FAC0B220B1DD
:1025EC00E825284603B0BDE8F08F2D4D01210D20C4
:1025FC00274E02F0D9FF05F10C087721DFF898B0CF
:10260C00244F304602F0B8FCDBF804102268A7FB1C
:10261C0002326423920C03FB02F2DBF804305B1AE7
:10262C009A42FAD8304602F03FFA454502D015F8E6
:10263C00011FE6E7174BDBF8040022681649A3FBE1
:10264C0002326423920C03FB02F24B681B1A9A426F
:10265C00FBD800210D2002F0A7FF0D4802F024FA50
:10266C00C0B200289FD1FFF7E9FC054600289BD19A
:10267C00074802F019FA0446504604F05DFA484641
:10268C0004F05AFAE0B204F057FA8DE7FC08002087
:10269C00DC09002083DE1B43001000E0B8020020A0
:1026AC00C8020020080300202DE9F04F83B04FF042
:1026BC0000093A4E0DF1040ADFF8ECB0384D4FF03A
:1026CC0072084FEA19224FEA1943802401210D2088
:1026DC008DF804406C468DF800808DF801908DF8D3
:1026EC0002208DF8033002F05FFF2E4F4146384632
:1026FC0002F042FCDBF8041032686423A5FB0202F2
:10270C00920C03FB02F2DBF804305B1A9A42FAD803
:10271C00384602F0C9F9544502D014F8011FE6E717
:10272C00DBF8041064223368A5FB03039B0C02FB4B
:10273C0003F3DBF80420521A9342FAD800210D203F
:10274C004FF08008174C642702F02EFF204602F051
:10275C0059F988B9DBF804103268A5FB0232920CE7
:10276C0007FB02F2DBF804305B1A9A42FAD82046D7
:10277C0002F048F90028EDD0204602F095F9C0B2DD
:10278C0004F0DAF9B8F10108E0D109F18009B9F5E2
:10279C00002F94D1404603B0BDE8F08FFC08002018
:1027AC0083DE1B43DC090020001000E02DE9F04F14
:1027BC00644D85B042F210762C6804E02B681B1B2C
:1027CC00B34200F2B78004F063F90328F6DD00236E
:1027DC002F685D4E1C460293ADF80C30CDE90033EA
:1027EC0005E02B68B268DB1B934280F0A780C4F134
:1027FC0004010DEB040004F0B9F80444032CF0D9E7
:10280C009DF802009DF803309DF800109DF8012002
:10281C0003EB002302EB01229BB292B201334FEA8D
:10282C0082299A424FEA832B78D2484EDFF828A1AE
:10283C00474D00214FEA192072244FEA19434FF0FB
:10284C00800CADF80C108DF802000D208DF80040B6
:10285C006C46404F8DF801908DF80330CDE9011195
:10286C0001218DF804C002F09FFE14F8011B3846BC
:10287C0002F082FBDAF8040031686423A5FB01C185
:10288C00890C03FB01F1DAF804301B1A9942FAD8CF
:10289C00384602F009F90DF105039C42E5D1DAF84E
:1028AC00040064213368A5FB03439B0C01FB03F379
:1028BC00DAF80410091A8B42FAD800210D204FF0D7
:1028CC008008244C642702F06FFE204602F09AF830
:1028DC0088B9DAF804003168A5FB0131890C07FBD3
:1028EC0001F1DAF804301B1A9942FAD8204602F0AA
:1028FC0089F80028EDD0204602F0D6F8C0B204F0DA
:10290C001BF9B8F10108E0D109F18009CB4590D849
:10291C0004F0BEF8002805DD04F0FEF804F0B8F869
:10292C000028F9DC00210D2002F03EFE002005B04D
:10293C00BDE8F08FEB2005B0BDE8F08F01233373B9
:10294C005EE700BF3C170020CC090020FC080020EB
:10295C0083DE1B43DC090020001000E02DE9F04F62
:10296C00DFF8908289B042F21075D8F8004005E08B
:10297C00D8F800301B1BAB4200F2238104F088F81E
:10298C000328F5DD0023D8F80060934D1C46069310
:10299C00ADF81C30CDE9043306E0D8F80030AA6855
:1029AC009B1B934280F0158104F11003C4F10401C8
:1029BC000DEB030003F0DAFF0444032CEDD99DF872
:1029CC0012209DF813309DF8101003EB02239DF894
:1029DC00112002EB01229BB292B2013391029A4276
:1029EC0001914FEA8321039180F0E380DFF8089294
:1029FC007A4E7B4CDFF804B27A4D019F01210D20F9
:102A0C0002F0D2FDC7F3072AC7F307437721764FAD
:102A1C000293204602F0B0FADBF804103268A5FBF2
:102A2C0002326423920C03FB02F2DBF804305B1AD3
:102A3C009A42FAD8204602F037F84F4502D017F8E0
:102A4C00011FE6E7DBF804103268A5FB02326423B1
:102A5C00920C03FB02F2DBF804305B1A9A42FAD8B0
:102A6C0000210D2002F0A0FD204602F01DF810F010
:102A7C00FF0040F0AA80029B04AF05908DF8173040
:102A8C005A4BADF81C008DF816A00DF11D0A93E8F9
:102A9C000300083304908DF8141093E8030006909B
:102AAC000D208DF81C10012102F07EFD17F8011B82
:102ABC00204602F061FADBF804103268A5FB023202
:102ACC006423920C03FB02F2DBF804305B1A9A428B
:102ADC00FAD8204601F0E8FF5745E7D1DBF804109F
:102AEC003268A5FB02326423920C03FB02F2DBF882
:102AFC0004305B1A9A42FAD800210D2002F054FDE2
:102B0C00204601F0D1FFC0B200285ED1384F012120
:102B1C000D2002F049FD07F1040A6521204602F060
:102B2C002BFADBF804103268A5FB02326423920CFA
:102B3C0003FB02F2DBF804305B1A9A42FAD8204607
:102B4C0001F0B2FF574502D017F8011FE6E7DBF89A
:102B5C0004103268A5FB02326423920C03FB02F2D0
:102B6C00DBF804305B1A9A42FAD800210D2002F0EF
:102B7C001BFD42F21077D8F800A005E0D8F8003021
:102B8C00A3EB0A03BB4218D8204601F03BFF0028F8
:102B9C00F4DD204601F088FF10F0FF000ED1019B00
:102BAC0003F580670197FFF71FFA039BBB423FF6C3
:102BBC0024AF002009B0BDE8F08FEF2009B0BDE8CC
:102BCC00F08FEB2009B0BDE8F08FE42009B0BDE830
:102BDC00F08F01232B73F2E6CC090020FC080020B7
:102BEC00DC09002083DE1B4318030020D8020020E0
:102BFC00880200203C1700201D030020001000E07C
:102C0C002DE9F04FDFF89C8289B042F21075D8F8AC
:102C1C00004005E0D8F800301B1BAB4200F22581C8
:102C2C0003F036FF0328F5DD0023D8F80060964D3D
:102C3C001C460693ADF81C30CDE9043306E0D8F8F9
:102C4C000030AA689B1B934280F0138104F110039F
:102C5C00C4F104010DEB030003F088FE0444032CC3
:102C6C00EDD99DF812209DF813309DF8101003EB50
:102C7C0002239DF8112002EB01229BB292B2013388
:102C8C0091029A4201914FEA8321039180F0E580F1
:102C9C00DFF814927D4E7E4CDFF810B27D4D019F13
:102CAC0001210D2002F080FCC7F3072AC7F307436C
:102CBC007721794F0293204602F05EF9DBF804107D
:102CCC003268A5FB02326423920C03FB02F2DBF8A0
:102CDC0004305B1A9A42FAD8204601F0E5FE4F45C3
:102CEC0002D017F8011FE6E7DBF804103268A5FBE9
:102CFC0002326423920C03FB02F2DBF804305B1A01
:102D0C009A42FAD800210D2002F04EFC204601F028
:102D1C00CBFE10F0FF0040F0B380029B04AF059097
:102D2C008DF817305D4BADF81C008DF816A00DF129
:102D3C001D0A93E80300083304908DF8141093E8EF
:102D4C00030006900D208DF81C10012102F02CFCC4
:102D5C0017F8011B204602F00FF9DBF8041032685B
:102D6C00A5FB02326423920C03FB02F2DBF8043065
:102D7C005B1A9A42FAD8204601F096FE5745E7D1E5
:102D8C00DBF804103268A5FB02326423920C03FBBF
:102D9C0002F2DBF804305B1A9A42FAD800210D20BB
:102DAC0002F002FC204601F07FFEC0B2002863D185
:102DBC003B4F01210D2002F0F7FB07F1040A6521BE
:102DCC00204602F0D9F8DBF804103268A5FB023279
:102DDC006423920C03FB02F2DBF804305B1A9A4278
:102DEC00FAD8204601F060FE574502D017F8011FB3
:102DFC00E6E7DBF804103268A5FB02326423920C80
:102E0C0003FB02F2DBF804305B1A9A42FAD8002179
:102E1C000D2002F0C9FB42F21077D8F800A005E0B3
:102E2C00D8F80030A3EB0A03BB421AD8204601F0B5
:102E3C00E9FD0028F4DD204601F036FE10F0FF001D
:102E4C0001D01B280ED1019B03F580670197FFF77A
:102E5C00CBF8039BBB423FF622AF002009B0BDE884
:102E6C00F08FEF2009B0BDE8F08FEB2009B0BDE882
:102E7C00F08F01232B73F4E6E42009B0BDE8F08F4A
:102E8C00E82009B0BDE8F08FCC090020FC08002038
:102E9C00DC09002083DE1B4320030020D802002025
:102EAC00880200203C17002025030020001000E0C1
:102EBC002DE9F04F924D83B0924E4FF06409924C35
:102ECC00DFF848A2DFF84882002701210D20009787
:102EDC008DF8047002F068FB4FF4FA514FF4FA606D
:102EEC0002F062F908218346012002F05DF93946AF
:102EFC000746052002F058FBDAF804102A68A8FBF4
:102F0C000232920C02EB8202D200DAF804305B1A25
:102F1C009A42FAD8304601F01FFE052002F0F0FA72
:102F2C000121052002F040FB052002F0E9FA002205
:102F3C004FF4E131304601F043FE0120C6F8089011
:102F4C0002F0DEFA2378C52130463B3B237002F0B9
:102F5C0013F8DAF804102A68A8FB0232920C09FB69
:102F6C0002F2DAF804305B1A9A42FAD8237801217B
:102F7C0030460133237001F0FFFFDAF804102A68A1
:102F8C00A8FB0232920C09FB02F2DAF804305B1A4D
:102F9C009A42FAD803213046217001F0EDFFDAF89D
:102FAC0004102A68A8FB0232920C09FB02F2DAF830
:102FBC0004305B1A9A42FAD823789A213046663B41
:102FCC00237001F0D9FFDAF804102A68A8FB02324A
:102FDC00920C09FB02F2DAF804305B1A9A42FAD826
:102FEC000021304601F0C8FFDAF804102A68A8FB6B
:102FFC000232920C09FB02F2DAF804305B1A9A42A4
:10300C00FAD82378142130461433237001F0B4FF1E
:10301C00DAF804102A68A8FB0232920C09FB02F2BF
:10302C00DAF804305B1A9A42FAD8237830465942BF
:10303C00C9B2CB1A237001F09FFFDAF804102A688A
:10304C00A8FB0232920C09FB02F2DAF804305B1A8C
:10305C009A42FAD8304601F0D5FC03463046002B94
:10306C0008DD01F021FD304601F0CCFC0346304672
:10307C00002BF6DC237803210333237001F07CFF53
:10308C00DAF804102A68A8FB0232920C09FB02F24F
:10309C00DAF804305B1A9A42FAD8304601F004FD93
:1030AC0005226946304602F045F89DF80230062BA1
:1030BC005BD0102B40F0FC81DAF804102A68A8FBD6
:1030CC000232920C0BFB02F2DAF804305B1A9A42D1
:1030DC00FAD80021042002F067FADAF804102A6802
:1030EC00A8FB0232920C07FB02F2DAF804305B1AEE
:1030FC009A42FAD80121042002F056FA0CE000BFE3
:10310C00FC080020DC09002065170020001000E0FE
:10311C0083DE1B4301F0C8FC304601F073FC034610
:10312C003046002BF6DC304640F2E73701F06AFC03
:10313C00002814DCDAF804102A68A8FB0232920C7E
:10314C0002EB8202DAF804305B1A9A42FAD8013F99
:10315C003FF4BAAE304601F055FC0028EADD3046AB
:10316C0001F0A2FCC0B20228E4D10520B94E02F055
:10317C00C7F923789121B8486F3B237001F0FCFE0E
:10318C0071686420B54B2A68A3FB0232920C00FBD9
:10319C0002F273685B1A9A42FBD8012002F0B0F974
:1031AC003A21AD48217001F0E7FE7168AB4B2A68FB
:1031BC00A84EA3FB02326423920C03FB02F2736849
:1031CC005B1A9A42FBD823784E21A3480B442370F8
:1031DC0001F0D2FE7168A14B2A689E4EA3FB02320D
:1031EC006423920C03FB02F273685B1A9A42FBD8BD
:1031FC0023786F2198480B44237001F0BDFE716851
:10320C00964B2A68934EA3FB02326423920C03FB69
:10321C0002F273685B1A9A42FBD8237874218E48A9
:10322C000B44237001F0A8FE71688C4B2A68894E00
:10323C00A3FB02326423920C03FB02F273685B1A49
:10324C009A42FBD823783A2183480B44237001F02F
:10325C0093FE7168814B2A687E4EA3FB0232642375
:10326C00920C03FB02F273685B1A9A42FBD8237828
:10327C00552179480B44237001F07EFE7168774B21
:10328C002A68744EA3FB02326423920C03FB02F2F5
:10329C0073685B1A9A42FBD8237873216E480B44EF
:1032AC00237001F069FE71686C4B2A68694EA3FBB0
:1032BC0002326423920C03FB02F273685B1A9A428B
:1032CC00FBD82378652164480B44237001F054FE2D
:1032DC007168624B2A685F4EA3FB02326423920C26
:1032EC0003FB02F273685B1A9A42FBD823786421C1
:1032FC0059480B44237001F03FFE7168574B2A6804
:10330C00544EA3FB02326423920C03FB02F273684B
:10331C005B1A9A42FBD823783A214F480B4423700E
:10332C0001F02AFE71684D4B2A684A4EA3FB02320B
:10333C006423920C03FB02F273685B1A9A42FBD86B
:10334C00217845480139C9B24B00237001F014FEB5
:10335C007168424B2A683F4EA3FB02326423920CE5
:10336C0003FB02F273685B1A9A42FBD8012002F04D
:10337C00C7F82378932138486D3B237001F0FCFD8E
:10338C00364B70682A683349A3FB02326423920CD3
:10339C0003FB02F24B681B1A9A42FBD8DFF8C0A061
:1033AC000120DFF8B48002F0ABF8DFF8A8900AF146
:1033BC00C3072A4E1AF8011F404623780B4423708A
:1033CC0001F0DAFDD9F8041064232A68A6FB020286
:1033DC00920C03FB02F2D9F804305B1A9A42FAD829
:1033EC00BA45E7D1012002F08BF8237893211A48D3
:1033FC006D3B237001F0C0FD184BD9F804002A680E
:10340C001449A3FB02326423920C03FB02F24B68B7
:10341C001B1A9A42FBD8DFF84CA00120DFF8388049
:10342C0002F06EF8DFF82C900AF107070B4E1AF831
:10343C00011F404623780B44237001F09DFDD9F801
:10344C00041064232A68A6FB0202920C03FB02F20E
:10345C000AE000BF001000E0DC09002083DE1B4303
:10346C0007090020FF080020D9F804305B1A9A42A3
:10347C00FAD85745DBD11A4C012002F041F89421BF
:10348C00204601F079FD052002F03AF801E001F048
:10349C000BFB204601F0B6FA03462046002BF6DC67
:1034AC000D20002102F080F8012003B0BDE8F08F60
:1034BC002378EE210A48123B237001F05DFDDAF807
:1034CC0004406421074A2B680748A2FB03239B0C8A
:1034DC0001FB03F34268121B9342FBD80020E4E784
:1034EC00DC09002083DE1B43001000E02DE9F843CB
:1034FC00314F00224FF4E131304D3846304C01F061
:10350C005FFB64232E6840F2EE28BB60DFF8B890B6
:10351C002C4F03F0A5FB2378002B40D03B78DA0727
:10352C003DD52B68D9F800209B1A0E2B37D90121D9
:10353C000D2002F063F80121052002F05FF8012153
:10354C00042002F05BF80121084602F057F8002134
:10355C00084602F053F80021052002F025F800215E
:10356C00012002F021F80021084602F01DF801218B
:10357C00042002F019F803F073FB2378002BFAD027
:10358C003B78DB07F7D52B68D9F800209B1A0E2B5C
:10359C00F1D901210D20BDE8F84302F005B82B68E4
:1035AC0022789B1B2AB1B3F5FA6FC0D803F058FBF5
:1035BC00AFE74345FAD9BAE7DC0900203C170020F5
:1035CC00701700206F1700204C1700202DE9F04FCA
:1035DC00ADF2244D0021944C4FF47F7209A8069152
:1035EC008DF81C1042F210750891CDE9041103F00E
:1035FC001DFF266803E023689B1BAB4263D803F0D6
:10360C0047FA0128F7DD00252768884E06958DF8C6
:10361C001C50CDE9045504E02368B268DB1B9342CF
:10362C005DD205F11003C5F102010DEB030003F0AF
:10363C009DF90544012DEFD99DF8103001210D2085
:10364C000025009344F620669DF81130DFF8DC81EC
:10365C00019301F0A9FF27680BE02368DB1BB34241
:10366C0037D803F015FA1FFA80F9B9F1000F40F0C2
:10367C00AC80B5F5806FF0D36D4C01210D206D4DF4
:10368C00039404F1040801F08FFF6B4E7721DFF8EF
:10369C00B0916A4F304601F06FFCD9F804102A68DB
:1036AC00A7FB02326423920C03FB02F2D9F804301C
:1036BC005B1A9A42FAD8304601F0F6F9444511D01B
:1036CC0014F8011FE6E7EB2420460DF2244DBDE86B
:1036DC00F08FEC2420460DF2244DBDE8F08F012331
:1036EC003373A9E7554BD9F804002A685449A3FB56
:1036FC0002326423920C03FB02F24B681B1A9A42AF
:10370C00FBD800210D200DF11F060DF21F144A4F9E
:10371C00DFF82CB1DFF8249101F046FF16F8011FF9
:10372C00384601F029FCDBF804102A68A9FB0232A8
:10373C006423920C03FB02F2DBF804305B1A9A420E
:10374C00FAD8384601F0B0F9A642E7D13A4801F070
:10375C00F5F93A4BDBF804002A683949A3FB02322D
:10376C006423920C03FB02F24B681B1A9A42FBD89F
:10377C00314801F099F9C0B200284FD1314E0121E6
:10378C000D202D4F029606F1040901F00DFFDFF814
:10379C00B0A07721DFF8A4B0384601F0EDFBDAF8E1
:1037AC0004102A68ABFB02326423920C03FB02F276
:1037BC00DAF804305B1A9A42FAD8384601F074F9F8
:1037CC004E4541D016F8011FE6E715FA80F0B0F52A
:1037DC00806F1BDC83B20293D4F800A04FF0000B77
:1037EC0007E02368D8F80820A3EB0A03934280F083
:1037FC00998005EB0B0008ABA9EB0B01184403F007
:10380C00B5F88344D945ECD8029D32E7C5F58069FB
:10381C004FF480631FFA89F90293DDE7E124204617
:10382C000DF2244DBDE8F08F3C170020CC09002090
:10383C00E8020020FC080020DC09002083DE1B438A
:10384C00001000E0F0020020BB4BDAF804102A68EC
:10385C00BA48A3FB02326423920C03FB02F24368C6
:10386C005B1A9A42FBD800210D200DF21F2BB44E8F
:10387C00DFF8C8A2B04F01F097FE14F8011F3046D4
:10388C0001F07AFBDAF804102A68A7FB02326423F1
:10389C00920C03FB02F2DAF804305B1A9A42FAD863
:1038AC00304601F001F95C45E7D1A54801F046F935
:1038BC00A14BDAF804102A68A048A3FB0232642357
:1038CC00920C03FB02F243685B1A9A42FBD89C48A9
:1038DC0001F0EAF8C0B2002840F0BF80DFF86CB20B
:1038EC0001210D20964E01F05FFE5C467721934F2F
:1038FC00DFF844A2304601F03FFB79682A68AAFB46
:10390C0002326423920C03FB02F27B685B1A9A422C
:10391C00FBD8304601F0C8F88A4B9C4207D014F80B
:10392C00011FE7E70123029D88F80C30A1E6824BCA
:10393C0079682A688148A3FB02326423920C03FB4A
:10394C0002F243685B1A9A42FBD800210D2001F069
:10395C002BFE7B4801F0A8F810F0FF007BD18DF80E
:10396C001500774E754FDFF8D0A1DDE9002303EB8E
:10397C0002239BB29A008DF816209A099B028DF8AF
:10398C001720009304AB1C4601936F4B93E8030084
:10399C00203304908DF8141093E8030006900D204A
:1039AC008DF81C10012101F0FFFD14F8011B3046AD
:1039BC0001F0E2FA79682A68AAFB02326423920CBD
:1039CC0003FB02F27B685B1A9A42FBD8304601F08B
:1039DC006BF80DF11D039C42E7D1574A79682B68AF
:1039EC005648A2FB032364229B0C02FB03F34268A0
:1039FC00521A9342FBD800210D2001F0D5FD5048FE
:103A0C0001F052F8C0B230BBFEF718FB0446002898
:103A1C007FF45AAE01210D2001F0C6FD484F7721ED
:103A2C00464E454CDDF80CA0384601F0A5FA7168FD
:103A3C002A68A4FB02326423920C03FB02F2736823
:103A4C005B1A9A42FBD8384601F02EF8C24506D0D4
:103A5C001AF8011FE8E7E62436E6E22434E6364A93
:103A6C0071682B683548A2FB032364229B0C02FB74
:103A7C0003F34268521A9342FBD800210D200DF239
:103A8C001F240DF21F382E4EDFF8B0A02A4F01F084
:103A9C008BFD14F8011F304601F06EFADAF80410B1
:103AAC002A68A7FB02326423920C03FB02F2DAF8B9
:103ABC0004305B1A9A42FAD8304600F0F5FF4445C0
:103ACC00E7D11F4801F03AF81B4ADAF804102B68CA
:103ADC001A48A2FB032364229B0C02FB03F34268EB
:103AEC00521A9342FBD8164800F0DEFFC0B20028F1
:103AFC007FF494AE01210D2001F056FD104F77217B
:103B0C000E4E0D4CDDF80880384601F035FA716820
:103B1C002A68A4FB02326423920C03FB02F2736842
:103B2C005B1A9A42FBD8384600F0BEFFC8450FD04E
:103B3C0018F8011FE8E700BF83DE1B43001000E00C
:103B4C00DC09002015030020D802002010030020FF
:103B5C00704A71682B687048A2FB032364229B0C8B
:103B6C0002FB03F34268521A9342FBD800210D204A
:103B7C000DF21F440DF21F36684FDFF89C91DFF8F1
:103B8C00948101F011FD16F8011F384601F0F4F98B
:103B9C00D9F804102A68A8FB02326423920C03FBA8
:103BAC0002F2D9F804305B1A9A42FAD8384600F07F
:103BBC007BFFA642E7D1594800F0C0FF554AD9F81F
:103BCC0004102B685448A2FB032364229B0C02FBB9
:103BDC0003F34268521A9342FBD8504800F064FF3A
:103BEC00C0B200287FF439AF01210D2001F0DCFCBC
:103BFC004A4F7721484E474C384601F0BDF9716861
:103C0C002B68A4FB032364229B0C02FB03F3726856
:103C1C00521A9342FBD8384600F046FF404B9B4566
:103C2C0002D01BF8011FE7E73A4A71682B683A4843
:103C3C00A2FB032364229B0C02FB03F34268521A7F
:103C4C009342FBD800210D2001F0AEFC334800F06C
:103C5C002BFF10F0FF007FF4FEAE324A009B8DF874
:103C6C00150003F500732D4E2B4C2A4F92E80300E0
:103C7C0020328DF81410049092E803001A0A1B0CE1
:103C8C0006908DF81C100D2001218DF816208DF852
:103C9C00173001F089FCDDF8048018F8011B304660
:103CAC0001F06AF961682B68A7FB032364229B0C63
:103CBC0002FB03F36268521A9342FBD8304600F0C1
:103CCC00F3FE0DF11D039845E7D164686421114A98
:103CDC002B681148A2FB03239B0C01FB03F34268E6
:103CEC00121B9342FBD800210D2001F05DFC0B4808
:103CFC0000F0DAFEC0B200287FF4ADAEFEF79EF9FC
:103D0C00044600287FF4E0AC01460D2001F04CFC89
:103D1C00DAE400BF83DE1B43001000E0DC09002066
:103D2C0015030020D80200202DE9F04FADF2344DE0
:103D3C000021C44C4FF47F720DA80A918DF82C1001
:103D4C0042F210750C91CDE9081103F06FFB266857
:103D5C0003E023689B1BAB4264D802F099FE012858
:103D6C00F7DD00252768B84E0A958DF82C50CDE963
:103D7C00085505E02368B268DB1B934280F006818E
:103D8C0005F12003C5F102010DEB030002F0EEFD7D
:103D9C000544012DEED99DF8203001210D20002580
:103DAC00019344F620669DF82130DFF89C82029343
:103DBC0001F0FAFB27680CE02368DB1BB34200F22E
:103DCC00DF8002F065FE1FFA80F9B9F1000F40F0B8
:103DDC00E080B5F5806FEFD39C4C01210D209C4EFB
:103DEC0001F0E2FB04F1050877219A4DDFF86C92A3
:103DFC00994F284601F0C0F8D9F804103268A7FB97
:103E0C0002326423920C03FB02F2D9F804305B1AE1
:103E1C009A42FAD8284600F047FE444508D014F8D8
:103E2C00011FE6E7EB2420460DF2344DBDE8F08F80
:103E3C00894BD9F8040032688849A3FB0232642309
:103E4C00920C03FB02F24B681B1A9A42FBD800211E
:103E5C000D2001F0A9FB7F4800F026FE10F0FF00BA
:103E6C0040F0BF80DFF804920DF12D088DF825008D
:103E7C0009F10805774FDFF8E4B1DFF8DCA1DDE9E3
:103E8C00012399E8030003EB022308909BB28DF801
:103E9C0024109A00D2B201928DF82620C3F3871217
:103EAC009B020292039308AB8DF827201C460493C7
:103EBC0095E803000A900D208DF82C10012101F0DB
:103ECC0073FB14F8011B384601F056F8DBF80410AC
:103EDC003268AAFB02326423920C03FB02F2DBF879
:103EEC0004305B1A9A42FAD8384600F0DDFD44459E
:103EFC00E7D1594BDBF8041032685848A3FB023267
:103F0C006423920C03FB02F243685B1A9A42FBD8BF
:103F1C0000210D2001F048FB4E4800F0C5FDC0B259
:103F2C00002865D1FEF78AF80446002862D01B28C9
:103F3C007FF479AF4A4C01210D20464F01F034FB40
:103F4C0004F1050B7721DFF814A1384601F014F8C1
:103F5C00414BDAF804103268A3FB02326423920C52
:103F6C0003FB02F2DAF804305B1A9A42FAD83846AC
:103F7C0000F09AFD5C4500F0608114F8011FE4E745
:103F8C00EC2420460DF2344DBDE8F08F0123337341
:103F9C0001E715FA80F0B0F5806F1ADC83B2039359
:103FAC00D4F800A04FF0000B06E02368D8F80820E6
:103FBC00A3EB0A03934216D205EB0B000CABA9EB57
:103FCC000B01184402F0D2FC8344D945EDD8039D73
:103FDC00FFE6C5F580694FF480631FFA89F90393F6
:103FEC00DEE7E8241FE70123039D88F80C30F0E698
:103FFC00E42418E71B289DD01A4B01210D20154DE8
:10400C001C460693DFF854B001F0CEFA124F77211C
:10401C00284600F0B1FFDBF804103268A7FB02322F
:10402C006423920C03FB02F2DBF804305B1A9A4215
:10403C00FAD8284600F038FD0B4B9C4218D014F8E7
:10404C00011FE5E73C170020CC09002020030020CD
:10405C00FC080020DC09002083DE1B43001000E07C
:10406C0018030020E8020020EC020020D8020020F7
:10407C00A94BDBF804103268A848A3FB0232642376
:10408C00920C03FB02F243685B1A9A42FBD80021A4
:10409C000D200DF12F040DF22F15A14FDFF87CA28E
:1040AC00DFF874B201F080FA14F8011F384600F002
:1040BC0063FFDAF804103268ABFB02326423920C13
:1040CC0003FB02F2DAF804305B1A9A42FAD838464B
:1040DC0000F0EAFCAC42E7D1914800F02FFD8E4B8A
:1040EC00DAF8041032688D48A3FB02326423920C78
:1040FC0003FB02F243685B1A9A42FBD8884800F033
:10410C00D3FCC0B2002840F0A281864B01210D20C7
:10411C00834F1C460593DFF804A201F045FADFF843
:10412C00F8B17721384600F027FFDAF8041032682E
:10413C00ABFB02326423920C03FB02F2DAF804307C
:10414C005B1A9A42FAD8384600F0AEFC764B9C4289
:10415C0002D014F8011FE5E76F4BDAF8041032684F
:10416C006E48A3FB02326423920C03FB02F24368F9
:10417C005B1A9A42FBD800210D202C460DF22F2BF6
:10418C00674DDFF898A1644F01F00EFA14F8011F87
:10419C00284600F0F1FEDAF804103268A7FB023270
:1041AC006423920C03FB02F2DAF804305B1A9A4295
:1041BC00FAD8284600F078FC5C45E7D1584800F066
:1041CC00BDFC554BDAF8041032685448A3FB02329C
:1041DC006423920C03FB02F243685B1A9A42FBD8ED
:1041EC004F4800F061FCC0B2002840F034814F4BC6
:1041FC0001210D204A4D1C460793DFF820B101F038
:10420C00D3F9454F7721284600F0B6FEDBF80410B1
:10421C003268A7FB02326423920C03FB02F2DBF838
:10422C0004305B1A9A42FAD8284600F03DFC404B09
:10423C009C427FD014F8011FE5E7374BDAF80410E5
:10424C0032683648A3FB02326423920C03FB02F261
:10425C0043685B1A9A42FBD800210D2001F0A4F9A7
:10426C002F4800F021FC10F0FF007FF4C1AE8DF858
:10427C00250008AC019B2A4F8DF82630029BDFF8F5
:10428C009CB0DFF894A08DF8273099E803000890D3
:10429C008DF8241095E803000A900D208DF82C1051
:1042AC00012101F081F914F8011B384600F064FE7D
:1042BC00DBF804103268AAFB02326423920C03FB75
:1042CC0002F2DBF804305B1A9A42FAD8384600F056
:1042DC00EBFB4445E7D1104ADBF8041033680F4878
:1042EC00A2FB032364229B0C02FB03F34268521AC9
:1042FC009342FBD800210D2001F056F9084800F03C
:10430C00D3FBC0B200287FF473AEFDF797FE0446D2
:10431C0000283FF471AE86E583DE1B43001000E0FD
:10432C00DC090020F0020020F40200201003002021
:10433C0015030020B44BDBF804103268B348A3FB20
:10434C0002326423920C03FB02F243685B1A9A421A
:10435C00FBD800210D2001F027F9AD4800F0A4FB9B
:10436C0010F0FF0075D1019B08AC8DF825008DF87D
:10437C002630029BA64D8DF82730A64BDFF88CB269
:10438C00A14F99E8030008908DF8241093E80300DE
:10439C000A900D208DF82C10012101F005F914F86C
:1043AC00011B284600F0E8FDDBF804103268A7FB7F
:1043BC0002326423920C03FB02F2DBF804305B1A2A
:1043CC009A42FAD8284600F06FFB4445E7D18E4A52
:1043DC00DBF8041033688D48A2FB032364229B0C8A
:1043EC0002FB03F34268521A9342FBD800210D20C2
:1043FC0001F0DAF8864800F057FBC0B248BBFDF775
:10440C001DFE044600287FF40EAD01210D2001F0A5
:10441C00CBF87F4F77217D4D7B4CDDF818A03846CB
:10442C0000F0AAFD69683268A4FB02326423920C86
:10443C0003FB02F26B685B1A9A42FBD8384600F019
:10444C0033FB754B9A4508D01AF8011FE7E7E124B6
:10445C00E9E4E624E7E4E224E5E46B4A69683368BE
:10446C006A48A2FB032364229B0C02FB03F3426801
:10447C00521A9342FBD800210D200DF22F240DF27D
:10448C002F3A634DDFF884B15F4F01F08DF814F8CB
:10449C00011F284600F070FDDBF804103268A7FB02
:1044AC0002326423920C03FB02F2DBF804305B1A39
:1044BC009A42FAD8284600F0F7FA5445E7D1544806
:1044CC0000F03CFB504ADBF8041033684F48A2FB69
:1044DC00032364229B0C02FB03F34268521A93429F
:1044EC00FBD84B4800F0E0FAC0B20028AFD1012154
:1044FC000D2001F059F8464F7721444D424CDDF820
:10450C0014A0384600F038FD69683268A4FB02320A
:10451C006423920C03FB02F26B685B1A9A42FBD881
:10452C00384600F0C1FA3D4B9A4502D01AF8011FEB
:10453C00E7E7354A696833683448A2FB03236422F1
:10454C009B0C02FB03F34268521A9342FBD80021E6
:10455C000D200DF22F4A0DF22F352D4F2B4CDFF87D
:10456C00A8B001F021F815F8011F384600F004FD41
:10457C0061683268ABFB02326423920C03FB02F2DB
:10458C0063685B1A9A42FBD8384600F08DFAAA454C
:10459C00E9D11F4800F0D2FA1B4A616833681B4806
:1045AC00A2FB032364229B0C02FB03F34268521A06
:1045BC009342FBD8164800F077FAC0B200287FF47B
:1045CC004AAF01210D2000F0EFFF114F77210F4D65
:1045DC000D4CDDF81CA0384600F0CEFC6968336841
:1045EC00A4FB032364229B0C02FB03F36A68521A9C
:1045FC009342FBD8384600F057FA094B9A4511D034
:10460C001AF8011FE7E700BF83DE1B43001000E030
:10461C00DC090020F8020020EC020020F40200204B
:10462C0015030020394A696833683948A2FB032313
:10463C0064229B0C02FB03F34268521A9342FBD890
:10464C0000210D2000F0B0FF324800F02DFA10F0E0
:10465C00FF007FF4FEAE039B2F4A8DF8250003F577
:10466C0000732C4D2A4C294F99E803008DF8241027
:10467C00089092E803001A0A1B0C0A908DF82C1073
:10468C000D2001218DF826208DF8273000F08CFFAD
:10469C00DDF8109019F8011B284600F06DFC6168DC
:1046AC003368A7FB032364229B0C02FB03F36268B1
:1046BC00521A9342FBD8284600F0F6F9C145E9D1CD
:1046CC0064686421114A33681148A2FB03239B0CD4
:1046DC0001FB03F34268121B9342FBD800210D200F
:1046EC0000F062FF0B4800F0DFF9C0B200287FF445
:1046FC00B0AEFDF7A3FC044600287FF494AB014652
:10470C000D2000F051FFFFF78EBB00BF83DE1B4373
:10471C00001000E0DC090020F80200202DE9F04335
:10472C00012183B00D20A44CA44F00F03DFF02F0FA
:10473C00AFF9002800F09C8002F0EEF9A04AC0B25C
:10474C00102818BF012810708CBF012300232028CB
:10475C000CBF002303F0010380280CBF002303F0DF
:10476C00010313B1F02840F0DF80202800F2C5804F
:10477C002028DCD801A353F820F000BF73290000D7
:10478C0049290000432900003D2900002F29000081
:10479C00AF27000021290000132900000529000083
:1047AC00AF270000F7280000AF270000AF2700005C
:1047BC00AF270000AF270000AF270000CF28000074
:1047CC00AF270000AF270000AF270000AF27000085
:1047DC00AF270000AF270000AF270000AF27000075
:1047EC00AF270000AF270000AF270000AF27000065
:1047FC00AF270000AF270000AF2700008128000082
:10480C0001210D206F4D00F0CFFE01210D2000F095
:10481C00CBFE05F104097521DFF8C0816A4E3046E4
:10482C0000F0AAFB6168D8F800206423A7FB020201
:10483C00920C03FB02F263685B1A9A42FBD8304677
:10484C0000F032F9A94576D015F8011FE7E75F4E65
:10485C0000205F4D96F800802870B8F1000F00F032
:10486C009780FDF7C1FB02F013F900287FF464AFC9
:10487C0003B0BDE8F083FDF7D9FD554B1870FDF77B
:10488C00B3FB54E7FEF7BCF9514B1870FDF7ACFBCA
:10489C004DE7FFF749FA4E4B1870FDF7A5FB46E7BD
:1048AC00FEF794FE4A4B1870FDF79EFB3FE7FEF7B0
:1048BC0055F8474B1870FDF797FB38E7FDF7F4FEFA
:1048CC0035E7FDF773FF32E70120424D02F0E2FAC3
:1048DC00064602F0E7FA01AB05209B1B2B8002F089
:1048EC002BF92888000A02F027F9287802F024F91D
:1048FC001DE7022002F020F919E7802838D0F028B3
:10490C007FF415AF0120334D02F0C4FA064602F0D5
:10491C00C9FA01AB02209B1B2B8002F00DF905207C
:10492C0002F00AF94120DAE7284B1B7863B3202800
:10493C007FF61EAFFBE661686423D8F80020A7FB66
:10494C000202920C03FB02F263685B1A9A42FBD8D8
:10495C0000210D2000F028FE1B4800F0A5F810F0F7
:10496C00FF001B4B18BFE0201870FDF73DFB7AE7EA
:10497C0000210D2000F018FE4FF4FA7000F0C0FD7D
:10498C00154B1B689847D2E6E020FDF72DFBCEE6D1
:10499C00FEF78EFA287028B9E12318462B70FDF724
:1049AC0023FB60E7FDF7AAFB287010B901233370D5
:1049BC0057E786F8008054E7001000E083DE1B43C5
:1049CC006417002080020020DC09002067170020FB
:1049DC006817002058170020F0160020FC08002053
:1049EC0001207047B0F84630B0F848209BB292B224
:1049FC00934202D2013AD01A7047416B01390A44F2
:104A0C00D01A7047016972B6B0F84A20B0F84C3031
:104A1C0092B29BB29A423CBF806B1218C86AD31AEE
:104A2C0062B6C0F302601844704700BFB0F84A1079
:104A3C000246B0F84C3089B29BB2994210B404696A
:104A4C0014D00133906B116B984298BF002399429C
:104A5C0006D85B1A526AD05CC0B25DF8044B704742
:104A6C00126A5DF8044BD05CC0B2704772B6B0F8F5
:104A7C004A0080B2814201D062B6E2E7E36A13F0E9
:104A8C00E06F03D14FF0FF3062B6E6E7E369012037
:104A9C000024116AA2F84A00C3F30900DBB2A2F8A1
:104AAC004C404B70F0E700BFB0F84A100246B0F82B
:104ABC004C3089B29BB2994230B4046925D0013391
:104ACC00946B9C4216D9106B1FFA83FC984217D931
:104ADC00106AC05CC0B2956DA2F84CC045B1994249
:104AEC001CD3CB1AD16B994202D3D36DC5F8883045
:104AFC0030BC70474FF0000C106B63469842E7D8FF
:104B0C00181A556A285CC0B2E5E7084672B6B2F8C6
:104B1C004A1089B2884204D062B6D0E70C44E31A3A
:104B2C00E0E7E36A13F0E06F03D14FF0FF3062B6B9
:104B3C00DEE7E069C0F30900F9E700BF90F8443004
:104B4C0043B110B5044602F08BF894F84430002BB6
:104B5C00F9D110BD704700BF38B5D0E90453D3E983
:104B6C0003120968114228D090F84420044632B14F
:104B7C0002F076F894F84430002BF9D163690021E7
:104B8C000E4AA961207E03EB0010007D02EB0010A1
:104B9C00456805202860657E03EB051393F83430D7
:104BAC0002EB0312A36D52681060A4F84A10A4F82B
:104BBC004C1013B1E26DC3F8842038BDE003002023
:104BCC0007EE901A9FED9A7A0421B6EE005AF8EE91
:104BDC00677A9FED986A41F6FF7CC7EE275A2DE95C
:104BEC00F0478E460569012407EE901AF8EEE77A35
:104BFC0085EEA77A77EE057AFDEEE77A17EE903A16
:104C0C006345A8BF6346012BB8BF012307EE903A5A
:104C1C00F8EEE76A76EEC76AC6EE877AF5EEC07AEA
:104C2C00F1EE10FA48BFF1EE677AF4EEC67AF1EEC7
:104C3C0010FA03D8B0EE676A8E461C460131212962
:104C4C00D2D10021436902F40076A0F84A10B3F8DF
:104C5C005AC08E42A0F84C10B3F85860A0F8461019
:104C6C00A0F8481080F84410816BDF68A1EB0606B1
:104C7C00A1EB0C01C0E90F6139681E6941EA06011C
:104C8C00396014BF01210021817640F0AC80017E97
:104C9C00694E03EB0118DFF8C09198F81470D8F83E
:104CAC001CA006EB0717B968C1F800907968D8F812
:104CBC0018700F60BAF1000F03D0D8F82010CAF8A2
:104CCC000010477ED92103EB071898F834C006EB87
:104CDC000C1CDCF808703960DCF80410D8F838705B
:104CEC000F60417E03EB0111CF6B0FB1096C396082
:104CFC000EF1FF31BEF1080F4FEA0161CCBF4FF04E
:104D0C00000E4FF0010E01F0F85144EA4E442143DD
:104D1C005C682961597801F110030021E960474969
:104D2C0041F8234041694FF0010E454C02F0030C51
:104D3C004F7891F85610434B39554FF00217446990
:104D4C00617803EB511301F01F019B000EFA01F186
:104D5C001960EF62AB6A43F08803AB6253073ED431
:104D6C004CF4701302F00F01042908BF43F0804388
:104D7C0097062ED5817E43F0805300293AD1160731
:104D8C00AB6103D52B6943F000532B616B69D106E2
:104D9C0023F0805348BF43F080536B61D30503D598
:104DAC002B6943F400532B61A36883B1264E3478EE
:104DBC00002C3AD0611E254DC9B22B1F05EB810189
:104DCC0001E0994225D053F8042F9042F9D1BDE867
:104DDC00F087817E0029D2D043F0A003CFE71C4B93
:104DEC004CEA0303BEE7477E4FF2D901124E03EBA8
:104DFC0007186AE7417E43F0A00304EB011191F818
:104E0C00341006EB0116B668316821F4404131606C
:104E1C00B5E7631CDBB20F4A3370137845F82400F6
:104E2C0043F002031370BDE8F0870123074DF2E74E
:104E3C00001BB74BEC78AD60E003002000100020A5
:104E4C0000E400E040380038611700201C150020F9
:104E5C0010003C007317002038F00100EFF31380B2
:104E6C00B8B9EFF310834BB9EFF305823AB94FF4AD
:104E7C008073EFF3118050B1984208D270470F2A1B
:104E8C00F7D9054B9B5CEFF311800028F4D1184641
:104E9C0070474FF0FF30F1E7F0E300E0036D2DE9D0
:104EAC00F04104460F46066913B1426DC3F88420E5
:104EBC00A37E2BB172B6B36943F00053B36162B6F3
:104ECC00B4F84650636BADB20135AB424CD84FF0E1
:104EDC0000084546B4F848309BB29D4219D028E0F2
:104EEC0073691B0210D5B4F84830626B9BB2013366
:104EFC009A4236D99AB2E16A99422DD9E169CB5CD2
:104F0C00DBB2F361A4F84820B4F848309BB2AB4252
:104F1C000FD1FFF7A3FF6369B3F856308342DFDA92
:104F2C00FF28F1DD01F09CFEB4F848309BB2AB4297
:104F3C00EFD0E36AAB421AD9FFB2E3695F5572B6A0
:104F4C00012084F84400A4F84680B36943F40003BC
:104F5C00B36162B6BDE8F0815B1AA16ACB5CDBB2CF
:104F6C00CFE700221346C6E71FFA85F8B2E7ED1A21
:104F7C00FFB2A36A5F55E2E7FFF790BF026953697E
:104F8C0013F4401F70B543D0D36A13F0E06FC3F332
:104F9C00026E3AD0B0F84A50B0F84C60ADB2B6B22E
:104FAC0007E0016A01F803C00EF1FF3313F0FF0EA6
:104FBC001DD0D1696B1C846BB0F84CC0C1F30901D6
:104FCC009C4298BF00231FFA8CFC9C45ECD0046BD0
:104FDC005FFA81FC1D469C42A3EB0404E1D8436AB2
:104FEC0003F804C00EF1FF3313F0FF0EE1D1ABB2A6
:104FFC00A0F84A30836D43B1B54254D3AD1B016C5C
:10500C00A94202D8C16DC3F884105369D90245D4A2
:10501C009669330228D553691D0225D5B0F8465040
:10502C00B0F84830ADB29BB206E0C169C95CC9B2F8
:10503C00D161D16A4C0512D4AB4238D0446B0133E8
:10504C00C16A9C4298BF00239942A3EB0104ECD89F
:10505C00816A095DC9B2D161D16A4C05ECD599B2AE
:10506C00AB42A0F8481025D0710216D553695B02EB
:10507C0013D50021036D80F8441013B1416DC3F8B2
:10508C008810837E2BB172B6936923F00053936121
:10509C0062B6936923F48003936170BD536943F442
:1050AC0080135361B4E7816B891B0D44A7E79BB256
:1050BC00A0F84830936923F400039361936943F497
:1050CC0080039361D0E700BF0148FFF757BF00BFD3
:1050DC00DC090020084601F02FBD00BF2DE9F0418E
:1050EC000C46D1B1EAB180468E1800250E4F04E073
:1050FC0001F022FDB44205440CD0D8F8003014F86D
:10510C00010B1B68BB42F3D0014640469847B442A2
:10511C000544F2D12846BDE8F0810D462846BDE88D
:10512C00F0811546F6E700BF5531000001F0F4BCE4
:10513C0001F08CBC2DE9F047884651B3914662B31F
:10514C0082460027164C174E25680BE001F0E4FC54
:10515C00002810DA01F084FD2368DAF808205B1BC4
:10516C00934210D2DAF800305B69B342EED050466D
:10517C0098470028EEDB013708F8010BB945E3D15D
:10518C003846BDE8F087012338468AF80C30BDE874
:10519C00F0870F463846BDE8F0871746F0E700BFAA
:1051AC003C170020AD310000884200DB704730B462
:1051BC00124C091A2368EBB1114A124D82FB032CD5
:1051CC00DA179C44C2EB2C4244F2A71C05FB1233A9
:1051DC000D4D05FB02F20CFB0322002A0CDA6FF0DA
:1051EC00004313442360B3FBF1F201FB123330BCD8
:1051FC0018447047054BF5E71346F3E708150020F4
:10520C005F0B4E831DF30100ECF4FFFF42CE0C1F2D
:10521C00A249A34B88422DE9F047A24C5E699A69DA
:10522C00D4F80C801BD9A04B984240F20281C31ACF
:10523C009E491B0AA1FB031340F22761DB0903EB18
:10524C00830303EB830303F2E2438B4228BF0B4639
:10525C00A3F54877964BA3FB0737FF0804E0954F5F
:10526C00B8428CBF0E2706278D4908F01F09D1F8CC
:10527C008030B94543F0C003C1F880300CD228F01F
:10528C001F08A1F5F82148EA0708C1F80C800B6843
:10529C00002BFCDA08F01F0916F0007324D18649A4
:1052AC000C698649A14300F0EA8082F480513446AF
:1052BC004FF4805514F0605F04D026F060561E4306
:1052CC00774B5E6111F4405F07D022F44052744971
:1052DC002A438A618B6C1A07FCD446F00076704A1C
:1052EC005661936C9B06FCD4754CA04200F2CE80A8
:1052FC004FF0010C0146634603FB011203F1010E52
:10530C000CF10105A24218D8BEF1080F4FF00103B1
:10531C0040F08D80BCF1040F00F291800A18A2427B
:10532C0000F2A48005FB00F1AC4603F1010E03FB77
:10533C0001120CF10105A242E6D90CF1FF318C02ED
:10534C0086EA81215F4810445F4A90427FD9DFF89A
:10535C00A4A16C225D48584DB0FBFEF0D5F800E0DE
:10536C00B0FBFCF0DFF890C10EEA0C0CD44509D070
:10537C0042F400524FF4805CC5F800C02A602A68E1
:10538C00002AFCDA464A156905F007059D4203D050
:10539C001361936CDD03FCD411F4E05F09D026F4A7
:1053AC00E05604F4E0543E4A26435661936C990748
:1053BC00FCD44749474A014491423CD8464BC90961
:1053CC00A3FB0131090B4B1E1B0286EA030212F4EC
:1053DC00407F06D026F4407603F44073304A3343C2
:1053EC0053612F4A536923F000735361936C9B06EE
:1053FC00FCD43A4B4F45A3FB00234FF0FF324FEA4E
:10540C009343B0FBF1F1B2FBF3F3354A1060354A2C
:10541C001160354A136008D228F01F08214A48EA67
:10542C000707D7601368002BFCDABDE8F0877346DA
:10543C0062E7122718E74FF440730421C5E70CF11B
:10544C00FF31204807238C02104486EA8121274A29
:10545C00DFF8A8A0A2FB0020020D2548362A38BF91
:10546C00362202FB00F042EA0A0A74E74FEA8C2467
:10547C00002386EA8C214FF0010EAC4662E71D46F4
:10548C0086F0C05411464FF0C05313E700244FF080
:10549C00010C024631462346E64653E700A4781F2A
:1054AC0000C00F40000008400046C32323B24C004C
:1054BC001F85EB5100366E0100800D40403000809E
:1054CC00FFB19F26808D5B00FF7EF64D00643F4D43
:1054DC007FD1F0087F17B42C9F10E50083DE1B43AF
:1054EC00FC080020F808002034170020819F5E166D
:1054FC00001BB7006C2000807F30018000200080F2
:10550C0000B970472DE9F84F01218146214C224DFD
:10551C00224E54E8003F2A68306844E80013002B00
:10552C00F7D11F494B684FF47A7BDFF878A01B1A30
:10553C0001270BFB02F8DAF80020A3FB02325A45D4
:10554C0094BF9044D84454E8003F2A68306844E83B
:10555C000073002BF7D14B68DAF800C01B1A0BFB59
:10556C0002F2A3FB0C3CBCF57A7F94BF624402F5BB
:10557C007A72A2EB0802B2F57A7F06D3B9F101096F
:10558C0008F57A78DFD1BDE8F88F01F069FB0449A2
:10559C00D9E700BF401700203C1700203817002027
:1055AC00001000E034170020362816D80201104BEA
:1055BC0003EB00109B5810B4C2685C68144205D011
:1055CC0061B95DF8044BC3F888207047836851B10A
:1055DC00084A5DF8044B1A60704770475DF8044B3D
:1055EC00C3F884207047044A5DF8044B1A60704776
:1055FC00E003002038F0010038300100362829D8AB
:10560C00164B0201012903EB00109A5810B4536891
:10561C00C4680ED004290CD023EA040353608368B9
:10562C00A9B1022917D003290CBF0D4A0D4A1A60E3
:10563C0007E0234301295360836808D040F6380201
:10564C001A60436815225DF8044B1A6070473822C3
:10565C001A60F6E77047044A1A60F2E7E00300208C
:10566C00383001003800010038F0010008B5FDF7B2
:10567C003DFFFFF753F801F0F3FAFAE7844641EAED
:10568C00000313F003036DD1403A41D351F8043BAE
:10569C0040F8043B51F8043B40F8043B51F8043B00
:1056AC0040F8043B51F8043B40F8043B51F8043BF0
:1056BC0040F8043B51F8043B40F8043B51F8043BE0
:1056CC0040F8043B51F8043B40F8043B51F8043BD0
:1056DC0040F8043B51F8043B40F8043B51F8043BC0
:1056EC0040F8043B51F8043B40F8043B51F8043BB0
:1056FC0040F8043B51F8043B40F8043B51F8043BA0
:10570C0040F8043B51F8043B40F8043B403ABDD20E
:10571C00303211D351F8043B40F8043B51F8043BB0
:10572C0040F8043B51F8043B40F8043B51F8043B6F
:10573C0040F8043B103AEDD20C3205D351F8043B3F
:10574C0040F8043B043AF9D2043208D0D2071CBF0B
:10575C0011F8013B00F8013B01D30B880380604634
:10576C00704700BF082A13D38B078DD010F00303AA
:10577C008AD0C3F10403D21ADB071CBF11F8013B1A
:10578C0000F8013B80D331F8023B20F8023B7BE769
:10579C00043AD9D3013A11F8013B00F8013BF9D294
:1057AC000B7803704B7843708B788370604670472E
:1057BC0001F1FF3C70B56646002400E00134B0FBFB
:1057CC00F2F502FB1503092B03F1370E03F130033D
:1057DC005FFA8EFE98BF5FFA83FE9042284606F869
:1057EC0001EFEBD2631C0022C818CA547CB162468C
:1057FC001CF8015F10F8016DA1EB0C0302328CF860
:10580C000060013B521A057023449A42EFDB0846B4
:10581C0070BD00BF00230F2248F2B82C194610B5FA
:10582C004FF470444FF4806EA0F88C414FF46044F8
:10583C00A0F88E210A46A0F89031B0F888319BB2BE
:10584C0043F0F003A0F8883101EB4103013100EB88
:10585C00431304299C80A3F806E05A841A865A80C4
:10586C005A81A3F80EC05A82DA825A83DA83EBD1BA
:10587C00B0F888319BB243F00F03A0F88831B0F830
:10588C0088319BB243F47063A0F8883110BD00BF1F
:10589C00374B384A996F384841F47F0170B5996796
:1058AC0041F20106D3F8801045F6C05543F22604A8
:1058BC000A43C3F88020FFF7ADFF00F58040FFF7E7
:1058CC00A9FF00F58040FFF7A5FF00F58040FFF72A
:1058DC00A1FF0022A0F503104FF00F0E114600EBB4
:1058EC0042134FEA421C01329981042A5981A3F8D0
:1058FC000EE09E82DD8020F80C1019829C81EED186
:10590C0000221E484FF00F0E41F20106114645F6DB
:10591C00C05543F2260400EB42134FEA421C0132FD
:10592C009981042A5981A3F80EE09E82DD8020F82B
:10593C000C1019829C81EED1002211480F2641F2E5
:10594C000105114645F6C05443F2260E00EB4213F6
:10595C004FEA421C01329981042A5981DE819D82D1
:10596C00DC8020F80C101982A3F80CE0EED170BD8D
:10597C0000C00F40000003FC00C03D4000001E4072
:10598C0000401E4072B6EFF30583524CC4F88430CD
:10599C001EF0040F0CBFEFF30882EFF309824FF0F7
:1059AC00E0234D4E4D4DD3F8280DD3F82C1DC4E9F2
:1059BC002201D3F8341DD3F8383DC4E9241393697C
:1059CC00C4F89830D369C4F89C3000F0BDF884ED6D
:1059DC00280A01F0E5F90B214FF0FF32C4F8A400BE
:1059EC000B46C4F880103E49301D5A40202402F06A
:1059FC000103013C01FB03F383EA5202F7D1A842F5
:105A0C0002D073680646EFE7324BC3F8A820BFF309
:105A1C004F8F4FF0E0233049324AC3F8701FC3F860
:105A2C00702FBFF34F8FBFF36F8F2F4A02252F4874
:105A3C00D36E2F4943F44053D3660560D3692D4888
:105A4C0023F07F0343F04003D3610B6883423DD8BE
:105A5C00264D00214FF0E0234FF0FF322960012644
:105A6C00C5F808112449C5F80011C5F80861C3F838
:105A7C008021C3F88421C3F88821C3F88C21C3F892
:105A8C00902101E000F052F9D5F80C31002BF9D03F
:105A9C000134C5F80C614F2CF4D9184B022018496D
:105AAC004FF00042C1F840015A63D5F80C313BB9B4
:105ABC00144815490D4A0163D2F80C31002BFAD069
:105ACC004FF0E023114AC3F80C2DFEE7FFF7A0FBC3
:105ADC00BEE700BF00FF272080FF2720A8FF27205C
:105AEC002083B8EDA0FF272000C00F4000400840E5
:105AFC00FC080020803DCD0B009F240000900D4041
:105B0C0000002E4000800F40F100AD0B0400FA05A0
:105B1C000A490A6838B108B513180948834204D8F1
:105B2C0010460B6008BD1046704701F0E3FC0C23D7
:105B3C004FF0FF320360104608BD00BF3C0A002046
:105B4C0000002820FFF71EBF124AD2F880305B07F6
:105B5C00FBD5D2F880301048C3F30B230F4990EDDE
:105B6C00007A07EE903A91ED006AB8EE477A0C4A4B
:105B7C00F8EEE77A0B4BD2ED006A77EEC77A93ED2D
:105B8C00007AB8EE477A67EE867A87EEA60A37EE89
:105B9C00400A704700810D40241700202C1700206C
:105BAC003017002028170020836BF0B41BB153680A
:105BBC0043F40043536072B6446B3CB31A4B2260FF
:105BCC00D3F8B0410C421DD1184E776804E07468CC
:105BDC00E41BB4F5166F0BD2D3F8404144F4804467
:105BEC00C3F84041D3F8B851D3F840416404EED522
:105BFC000D4007D10C4CC0E90225D4F8B0310B4351
:105C0C00C4F8B031426362B6F0BC7047064DC0E9CF
:105C1C000224D5F8B0310B43C5F8B03102634263AE
:105C2C0062B6F0BC704700BF00002E40001000E0D0
:105C3C0070B5056B9DB106462A46002403E0126838
:105C4C000134012A0CD0536813F08003F7D032636F
:105C5C002CB12846B36B2D689847013CF9D170BD27
:105C6C00C6E90C33F4E700BF30B4D9B91F4C204B54
:105C7C000021204A01254FF0011099601D60C4E9F4
:105C8C00023180245C60C2F8BC01D2F8B0311A48F1
:105C9C002B43C2F8B0310160D2F8B031002BFBD1EC
:105CAC0030BC70470904154B104C012541F08001A4
:105CBC009860104A596000F580511D60D96000F55C
:105CCC000051A364196100F5405100F58040596101
:105CDC0000219861E164D2F8B03143F48033C2F80A
:105CEC00B031D2F8B031002BFBD1C0E7000000205E
:105CFC00C012002000002E40B4160020E01200203C
:105D0C00084901220B7802FA00F023EA000008701F
:105D1C0030B9054AD2F8483123F08003C2F8483133
:105D2C00704700BF6B17002000002E402DE9F04F8C
:105D3C00974C83B0D4F84471FB07C4F8447153D525
:105D4C00D4F8AC21002A4AD0924EDFF860A2DFF8DA
:105D5C007492DFF874B2DFF87482C4F8AC21D6E91F
:105D6C000A20D4F8403143F40053C4F84031D4F83D
:105D7C0040319D04F5D5D4F8403123F40053C4F8D8
:105D8C0040314FF00113C4F8B431D4F8B45115F0CC
:105D9C000115FAD193B28446CAF80050B3F5086FD6
:105DAC0000F0CF8100F2DB8040F202318B4200F038
:105DBC00E78100F29A80822B00F0CB81B3F5817FD2
:105DCC0040F08A8010F0780F83B200F003824FF01D
:105DDC000113C4F8C031D4F8AC21002ABDD16C4AEF
:105DEC00D2F8BC31002B42D17E0616D5684BD3F8C5
:105DFC00AC21C3F8AC21D3F8BC21C3F8BC21D3F837
:105E0C00B041002CFBD14FF0FF32C3F8B421D3F8D2
:105E1C00843100F029FD604B1C60FC0103D55F4B05
:105E2C001B6803B19847B80103D55D4B1B6803B1E0
:105E3C009847790708D5564BD3F8843113F400737F
:105E4C0047D0584B01221A70514BD3F848311A06DF
:105E5C000AD53B0608D5544A13782BB1013BDBB26B
:105E6C001370002B00F0728203B0BDE8F08F4F4925
:105E7C00C2F8BC310868034240F0D181464A14682C
:105E8C001C40B1D05FEA144810D0424E4FF00109CB
:105E9C0098FAA8F5B5FA85F506EBC51009FA05F5DB
:105EAC004030FFF7C5FE38EA0508F1D1A4B2002C4A
:105EBC009AD0384E4FF0010894FAA4F5B5FA85F54E
:105ECC0006EBC51008FA05F5FFF7B2FEAC43F3D1AB
:105EDC008AE7344A1370B7E7802B7FF478AF3448E5
:105EEC0002210580FFF7C0FE75E7B3F5A06F00F047
:105EFC000B81A3F5D063012B3FF669AF2D4B5D6889
:105F0C00002D3FF464AF1FFA8CFC4FEA124E04E0F4
:105F1C001D690C33002D3FF45AAF1A887245F7D126
:105F2C005A886245F4D14FEA1E22032A00F0A5815B
:105F3C001A89000C824228BF0246BEF5007F40F051
:105F4C00A181184B1C4918781C4B0192002818BFD2
:105F5C0019461B48FFF792FB194D019AE1E142F2F9
:105F6C0021218B427CD033D942F221318B4200F07B
:105F7C0081804FF6C0018B427FF429AF10F47F4F24
:105F8C0083B27FF424AF43F46E4363F30F0CB5E795
:105F9C0000002E4000000020B816002050170020F2
:105FAC00541700207117002072170020B41600201F
:105FBC00E816002050070020B81E00601C1F00606F
:105FCC0000002020AC1600205DCFC6B8C0012E40CA
:105FDC00B3F5106F66D042F221018B427FF4F7AE1D
:105FEC00030C072B7FF4F3AEB24BB349F560D960C9
:105FFC00B249B360C3F80890C1E9002001221A60CD
:10600C00AF4A5A60AF4A1A61D4F8B01141F001019D
:10601C00C4F8B01102F5805102F5005259619A6131
:10602C00D4F8B031002BFBD1A74AF3649360012361
:10603C00B264136048F2800353604FF00113C4F84C
:10604C00BC31D4F8B03143F48033C4F8B0314FF4E0
:10605C008033CAF80030D4F8B031002BFBD1BAE64B
:10606C0080B238B9994BC2F307421968984B196042
:10607C00984B1A70944B00229A60F2640122B3641C
:10608C001A6080225A604FF00113C4F8BC31D4F866
:10609C00B03143F48033C4F8B031D4F8B031002BB4
:1060AC00FBD198E6C2F307428B4B1A708B4BC4F8AA
:1060BC00C8318B4BC4F8CC318A4BC4F8D03100F0CA
:1060CC00D5FB80222946884801F0B0F9874B802205
:1060DC00C6F8A0B0C6F8E0307B4BF5645A600122DC
:1060EC00B3649D601A604FF00113C4F8BC31D4F84E
:1060FC00B03143F48033C4F8B031CAF80050D4F84E
:10610C00B031002BFBD166E66F4B0121F5641960B1
:10611C0080219D60B36459604FF00113C4F8BC3109
:10612C00D4F8B03143F48033C4F8B031D4F8B03182
:10613C00002BFBD1130C5B0643F08073C4F8543175
:10614C0049E6654B01216A481B780370FFF78CFD0B
:10615C0041E683B210F078007FF439AE03F07F0291
:10616C0058F82210624A1080180600F19E80CB0766
:10617C0001D50123137002215D48FFF775FD2AE656
:10618C0010F0780F83B27FF422AE03F07F0213F08D
:10619C00800F58F8223014BF43F4803343F00103CE
:1061AC0048F822300022484BF2649A600122B36412
:1061BC001A6080225A604FF00113C4F8BC31D4F835
:1061CC00B03143F48033C4F8B031D4F8B031002B83
:1061DC00FBD100E603F07F0213F0800F58F8223059
:1061EC0014BF23F4803323F0010348F8223000223B
:1061FC00354BF2649A600122B3641A6080225A60B3
:10620C004FF00113C4F8BC31D4F8B03143F48033EF
:10621C00C4F8B031D4F8B031002BFBD1DBE5002051
:10622C00086026490C88486842F221018C427FF4B0
:10623C0025AE80B200287FF421AE2E492E4C03C926
:10624C00A18086284FEA11412060A1717FF416AE1F
:10625C0072B62A48017841F008010170D2F8481151
:10626C000D0605D480200143C2F84401C2F8481140
:10627C0062B6234A5021117000E6000C2A78824243
:10628C0028BF0246BEF5E06F44D11E4B1E4D187858
:10629C001E491F4B0192002818BF19462846FFF7CC
:1062AC00EDF907236B70019A3BE0C9033FF561AF31
:1062BC0061E700BFE0120020AC2600208014002013
:1062CC0080000700AC360020C01200203C170020D4
:1062DC004C1700206F170020701700200200CC0014
:1062EC00C80002000200C800800000201993D57479
:1062FC00E8160020AC160020441700206B17002075
:10630C007217002071170020000020201C1F006055
:10631C00B81E00602946104D01922846FFF7AEF9D1
:10632C00019A25F01F031544BFF34F8F4FF0E02166
:10633C00C1F8703F20339D42FAD8BFF34F8FBFF3A3
:10634C006F8F05481146FFF78FFC44E50320FFF7DC
:10635C00D7FC01F055FA00BF000020202DE9F047D2
:10636C001F46831E022B01D9BDE8F087DFF84C9045
:10637C0015460C463C2209EBC01806464FEAC01ADB
:10638C00002108F10400240401F050F8B5FA85F25C
:10639C000123520944EA427449F80A40C8F838709B
:1063AC00C8F80830002FDFD0034AB34011680B4304
:1063BC001360BDE8F08700BFB81600200000002075
:1063CC002DE9F0470D46811E022901D9BDE8F08761
:1063DC00C701DFF84C909246044640373C2200211E
:1063EC001E4609EB07082D0408F1040001F01EF805
:1063FC00BAFA8AF2520945EA427249F80720012298
:10640C00C8F83860C8F80820002EDFD0034B1034D1
:10641C001968A2400A431A60BDE8F087B81600203C
:10642C000000002012048160C36101F5405342F06A
:10643C00800210B40124426001F50052046001F5A1
:10644C00805401F58041C46081615DF8044BC0E962
:10645C0004237047831E0A46022B00D97047064B53
:10646C0000F110014FF0010C03EBC0100CFA01F11C
:10647C004030FFF799BB00BF00000020831E0A4686
:10648C00022B00D970470121024B814003EBC01055
:10649C00FFF78ABB0000002040687047124A134B7C
:1064AC00D2F8200220F07F40984210B584B002D27E
:1064BC0000EB800040000E4C01A90A22FFF778F98E
:1064CC0001A90023204611F8012B01333AB10A2B04
:1064DC0020F8022FF7D11623237004B010BD5B00F7
:1064EC00DBB2237004B010BD00441F4080969800AE
:1064FC00A40E002000F0D8BA00F0CABA00F066BBB7
:10650C0000F03CBB0846114600F02CBBF8B5144C0F
:10651C004FF0E025134E4FF4003204EB4024124FA1
:10652C0006EB40160346C5F88C2121463A883046C6
:10653C00FFF778FF3B882344BFF34F8FC5F85C4FC0
:10654C002034A342FAD8BFF34F8FBFF36F8F0320D1
:10655C003146FFF793FF4FF40033C5F80C31F8BD0B
:10656C0080002020001300205A170020244B2DE916
:10657C00F0411C884368C569C3F30E43E41A002C30
:10658C0024DD204920480A780078D3B21F4E82427D
:10659C001F4807D010F8038036F81870C7F5007242
:1065AC00944218D90133002226F81540082B194EB5
:1065BC0088BF134626F8152098BFDAB2C554164B7F
:1065CC000A701A6814441C60BDE8F0812846BDE8C6
:1065DC00F041FFF79BBF07EB4820104922462744A8
:1065EC00084401EB4521FFF749F80B4A284626F8E9
:1065FC00187013682344BDE8F0411360FFF786BFA1
:10660C005A170020691700206A170020F81600207E
:10661C001817002008170020F416002080002020F6
:10662C001D4B1A78002A36D102F0FF031B4A127850
:10663C008AB32DE9F0411A4D2A8852B3194EC2F58E
:10664C000068194F3278194C07EB421704EBC2243F
:10665C00424638462146FFF7E5FE04EB0802BFF33D
:10666C004F8F4FF0E023C3F8704F2034A242FAD87A
:10667C00BFF34F8FBFF36F8F04203946FFF7EAFE4D
:10668C0033780133DBB2032B88BF00233370002334
:10669C002B80BDE8F08170476E170020701700202A
:1066AC005C1700206D1700200014002080102020A3
:1066BC002DE9F04F85B0CDE90110002900F0BF8025
:1066CC000023604CDFF89881DFF898A15E4F0093AF
:1066DC0001235E4A23705E4B1978B8F8003002EB48
:1066EC004119002B40F0A7801E461D469B4648468C
:1066FC00FFF7D2FE10F0800000F08C80BFF34F8FBC
:10670C009AF8003084F800B005B93E68002B7DD1B2
:10671C003B689B1B782B00F287804E4B1B78002B21
:10672C0074D000F09DFA0122B8F8003015462270A2
:10673C00002BDCD0464AC3F5006011781A4600EBFA
:10674C00C120454DC9022844019D954217D203939F
:10675C00DDE901512A46FEF791FF039B4FF04042C1
:10676C005B1BA8F800303D4BC3F88420BFF34F8F60
:10677C00009800232844237005B0BDE8F08F364BF9
:10678C00CD180299FEF77AFF00234FF400622946D8
:10679C004846FFF747FEBFF34F8F05F1200205F582
:1067AC000063934234BF012340234FF0E02205EBFA
:1067BC004313C2F8705F2035AB42FAD1BFF34F8F51
:1067CC00BFF36F8F04204946FFF744FE204A13782D
:1067DC000133DBB2032B84BF00231D4A1370B8F8BE
:1067EC000030019AD11A009A1A4401910092029A2F
:1067FC001A4400230292194AA8F80030C2F88430D7
:10680C00BFF34F8F237000297FF462AF009805B05F
:10681C00BDE8F08F4FF400620D4B8AF80000197838
:10682C001346A8F800208AE7012300988AF8003064
:10683C0005B0BDE8F08F1A46C3F500607FE70198FC
:10684C00E5E700BF6E1700203C1700200014002065
:10685C006D170020701700208010202000002E40A3
:10686C005C1700206C170020704700BF2D4B0021D7
:10687C0080222D4870B51B7800242C4D8B422C4E59
:10688C000CBF40234FF400732B80338000F0CEFDFF
:10689C00284A2146284B14704FF4807227481C80DC
:1068AC0000F0C4FD264A1021264B0220C2E9004408
:1068BC00C2E90244244AC3E900441470234AC3E9E0
:1068CC000244234B1C70234614602246FFF778FDCC
:1068DC002246318803201F4BFFF740FD234601223F
:1068EC0029880420FFF76CFD20460134FFF70EFECB
:1068FC00082CF9D1184B00214A221848184C046076
:10690C00C3F88410C3F88020D3F84821154942F00D
:10691C008072C3F8482121B1134A137843F0010364
:10692C00137070BD71170020001400205E1700203A
:10693C005A1700206D1700205C1700200013002050
:10694C00F81600200817002069170020F416002004
:10695C006A170020ED45000000002E405017002063
:10696C00A146000000000000731700202DE9F04F35
:10697C004FF0E0234FF40032DFF8C8A083B0C3F827
:10698C008C218B469AF8004000294FD08046E4B207
:10699C000027DFF8B490264BABEB070225491B7898
:1069AC00A34204F101043FD0092C234B404628BFDD
:1069BC0000241E5D39F816C00CEB462319441F4BFE
:1069CC0033F81650A5EB0C05AA421CD20CEB462C46
:1069DC0018491B4C61440192FEF750FE216839F8AE
:1069EC0016505846019AA1EB0B012A44394429F858
:1069FC00162021604FF0E0234FF40032C3F80C2135
:106A0C0003B0BDE8F08F2A462F44FEF737FE0C4941
:106A1C00E3B230460A68A844521B0A608AF8003078
:106A2C00FFF774FDBB45B6D83846E3E70846E1E707
:106A3C00691700208000202018170020F81600206D
:106A4C00F41600206A170020081700200B4B0C4A84
:106A5C0012781978D3B28A420DD0013309480A4A08
:106A6C00092B0A4928BF0023C35C31F8131002EB31
:106A7C004323585C70474FF0FF3070476917002074
:106A8C006A1700201817002080002020081700200B
:106A9C00044B10B51C680CB1204610BD00F0E0F89A
:106AAC00204610BDF41600202DE9F84F144E154D5C
:106ABC0033782A78934221D0DCB2DFF85090DFF89B
:106ACC0050B0DFF85080104F0134082C5FFA84FA74
:106ADC0001D90024A24619F80400DBF8003038F87C
:106AEC00102037F81010521A9B1ACBF80030FFF711
:106AFC000DFD86F800A02B78A342E5D1BDE8F88FF8
:106B0C006A170020691700200817002018170020AA
:106B1C00F4160020F816002000B583B001210DF109
:106B2C000700FFF723FF20B19DF8070003B05DF8C5
:106B3C0004FB4FF0FF30F9E7094B00B583B01B782D
:106B4C008DF807003BB101210DF10700FFF7B0FDF7
:106B5C0003B05DF804FB03F0FF0003B05DF804FB29
:106B6C0070170020044B1B7803F0FF020BB1FFF7EA
:106B7C009FBD1046704700BF701700202DE9F041F3
:106B8C000024DFF8448001230D4D27460D4E88F874
:106B9C000030337828462035A34204F1010405D097
:106BAC00FFF77AFC030658BF07F50067042CF0D1F9
:106BBC00BFF34F8F0023384688F80030BDE8F081D2
:106BCC00001400206D1700206E1700202DE9F843EB
:106BDC001D4B1B7813B11D4D2A880AB9BDE8F883EB
:106BEC001B4EC2F500691B4933784A461A4C01EB1F
:106BFC0043181A4F04EBC324012340463B70214633
:106C0C000023FFF70FFC04EB0902BFF34F8F4FF08B
:106C1C00E023C3F8704F2034A242FAD8BFF34F8F51
:106C2C00BFF36F8F04204146FFF714FC3378013318
:106C3C00DBB2032B88BF0023337000232B80BFF300
:106C4C004F8F3B70BDE8F883701700205C17002055
:106C5C006D17002000140020801020206E170020DB
:106C6C002DE9F8432D4B1E7866B12D4F3B784BB96F
:106C7C000123F1073B7043D4B20726D400233B70A9
:106C8C00730701D4BDE8F883264B1A68002AF9D0A3
:106C9C00EFF30582002AF5D1EFF3108572B6186870
:106CAC00002834D0204C2178002930D101222270C8
:106CBC0042691A60002A2ED0916105B962B600258E
:106CCC008368457798472570DCE7DFF8648098F88F
:106CDC000030002BD2D00025DFF858902B4659F805
:106CEC0023400135236820461B69984710B163691E
:106CFC009B68984798F80020EBB29A42EFD8BDE712
:106D0C00FFF7C6FE0028B7D0AFF30080B4E7002D24
:106D1C00B8D162B6B6E7054B1A60CEE77317002000
:106D2C00621700200C150020601700201815002099
:106D3C00611700201C15002070B5EFF3108272B69D
:106D4C000C4C206880B10C4E00254369236073B154
:106D5C009D6102B962B6836845779847EFF310825C
:106D6C0072B620680028F0D102B962B670BD3360EB
:106D7C00EFE700BF1415002010150020FFF7DCBF53
:106D8C000449054A4968054B1960136801331360BF
:106D9C00704700BF001000E03C170020381700209F
:106DAC00074A506A936A19468446506A936A994214
:106DBC00F9D18445F7D1DB0B43EA4040704700BF63
:106DCC0000400D4008B5D0E900325BB1BAB10F4BB1
:106DDC00A3FB0213DB0803EB4303B2EB83030AD1DF
:106DEC00012008BD094BA3FB0213DB0803EB430393
:106DFC00B2EB830301D0D21A4260F02AF0D800F033
:106E0C0079FB1C22034600201A6008BDABAAAAAA73
:106E1C0070B5044638B319B1B2FA82F67609A2B944
:106E2C00206800B36268F2B1184B194902FB03F3F6
:106E3C00B1EBB30F17D3A368E3B90022012322608F
:106E4C006260A260E260184670BD1D46049BC0E9FA
:106E5C000012C360FFF7B6FF03460028F3D06DB9EC
:106E6C000123184670BD00F045FB1622002302607A
:106E7C00184670BD002100F0D9FADEE76268314691
:106E8C002068A56000F0D2FA0123DCE7ABAAAAAA1D
:106E9C0055555515024B0146186800F00BB800BF4C
:106EAC00500E0020024B0146186800F0A1BB00BF39
:106EBC00500E00202DE9F04F01F10B06162E83B079
:106ECC00044624D8102900F2BA8000F0A3FA102648
:106EDC0018220220B54F3A44A2F1080153688B42A4
:106EEC0000F0BA805A68D96822F003021A449D68EF
:106EFC00E9608D60516841F001012046516003F159
:106F0C00080500F08DFA284603B0BDE8F08F36F086
:106F1C00070600F19480B14200F2918000F07AFAF9
:106F2C00B6F5FC7FC0F09A81730A00F08F80042BB9
:106F3C0000F26F81B30903F1390003F1380CC3007F
:106F4C009A4F3B44A3F108055B689D4206D10CE0C7
:106F5C00002980F22781DB689D4206D05A6822F016
:106F6C000302911B0F29F3DD60463D69DFF850C227
:106F7C0065457CD06A6822F00302931B0F2B00F34B
:106F8C007B81002BC7E904CC80F26C81B2F5007FC9
:106F9C0080F01A81D308796801334FEA521E01221E
:106FAC0002FA0EF20A4357F833E0C5F808E007EB93
:106FBC00C3010839E9607A6047F83350CEF80C50B9
:106FCC00831001219940914257D8114206D120F0EB
:106FDC0003004900114200F10400FAD007EBC0098C
:106FEC004D468646D5F80C80454508D11DE1002B51
:106FFC0080F22481D8F80C80454500F01681D8F831
:10700C00042022F00302931B0F2BF0DD2046D8E95D
:10701C00025408EB060146F00106C8F80460EC6067
:10702C00A56043F00104C7E90411C1E902CC4C602E
:10703C0048F8023000F0F4F908F1080502E00C23DE
:10704C0023600025284603B0BDE8F08F4FF4007391
:10705C0040204FF03F0C73E7D3689A4208BF0230D0
:10706C007FF440AF3D69DFF858C1654582D17A683D
:10707C008310012199409142A7D9BD686B6823F018
:10708C0003094E4503D8A9EB06030F2B7ADCDFF876
:10709C0034B1474BDBF800201B680132334405EB5D
:1070AC00090A00F0338103F580530F3323F47F6812
:1070BC0028F00F084146204600F00AFA411C02460F
:1070CC0000F0F380824500F2EE803A4B196841449F
:1070DC001960084600F04E81DBF800100193013175
:1070EC001BBFA2EB0A010918CBF80020196012F0A3
:1070FC00070B00F01781CBF108010A44CBF5805146
:10710C0090440831A1EB0801C1F30B0A514620460B
:10711C00009200F0DDF9421CDDE9002300F04F8104
:10712C00801A00EB0A081968BA6048F00100514453
:10713C00BD425060196000F02981B9F10F0F40F287
:10714C0027816868A9F10C0C2CF0070C00F00100E9
:10715C0040EA0C0068604FF0050E05EB0C00BCF12A
:10716C000F0FC0E901EE00F2328150681546124B48
:10717C001A688A4238BF1960104B1A688A4238BFA5
:10718C00196094E0AA1943F0010346F001066E6001
:10719C002046BA60536000F043F90835284603B026
:1071AC00BDE8F08FD9681A44A1E600BF400A002060
:1071BC007015002040150020681500206C1500206B
:1071CC00480A0020480E0020B2F5206F4FEA5223E7
:1071DC0063D3142B00F2B78003F15C01C9005B335D
:1071EC0007EB010E7958AEF1080E8E4500F0918038
:1071FC004B6823F00303934202D989688E45F7D17B
:10720C00D1F80CE07A68C5E9021ECEF80850CD60C2
:10721C00D6E6142B59D9542B00F29D80330B03F175
:10722C006F0003F16E0CC3008AE60EF1010E1EF026
:10723C00030F05F108057FF4D5AE51E042444546F5
:10724C005368D8F80C1043F00103536055F8083F0D
:10725C002046D9608B6000F0E3F8F3E6F00806F105
:10726C00080237E62A442046536843F00103536072
:10727C00083500F0D5F8E5E6A919204646F00106D8
:10728C0043F001046E60C7E90411C1E902CC4C6003
:10729C00AB5000F0C5F80835D4E6930903F1390179
:1072AC00C90038339CE7BD425FD0BD68686820F0E8
:1072BC0003084645A8EB060302D80F2B3FF762AF35
:1072CC00204600F0ADF80025BCE603F15C0003F1AC
:1072DC005B0CC30034E659F808394B4540F09680F6
:1072EC0010F0030F00F1FF30F5D17B6823EA0103A6
:1072FC007B60490099423FF6C0AE19B9BDE6490022
:10730C000EF1040E1942FAD0704667E603F110082C
:10731C00D0E69A104FF001087B6808FA02F21A4383
:10732C007A6070E702EB08014942C1F30B0A51463F
:10733C002046009200F0CCF8431CDDE900237FF4DA
:10734C00EFAEDA46EFE6542B25D8130B03F16F01A1
:10735C00C9006E3344E7B3F5AA7F25D8F30B03F1CC
:10736C00780003F1770CC300EAE5294B1868404418
:10737C001860B1E6CAF30B0CBCF1000F7FF4ACAE95
:10738C00BD68C84448F001006860F0E61546EEE6BA
:10739C000123536094E7B3F5AA7F23D8D30B03F1F1
:1073AC007801C90077331BE740F25452934223D83B
:1073BC00B30C03F17D0003F17C0CC300C0E5ABF111
:1073CC00080BD844A8EB02084FF0000AABE605F115
:1073DC0008012046009300F00BF9BD68009B68681B
:1073EC001968C4E640F254518B420BD8930C03F14C
:1073FC007D01C9007C33F3E64FF47E737F204FF0A0
:10740C007E0C9DE54FF47E717E23E9E67B6870E788
:10741C0040150020014800F097B800BF3C15002033
:10742C00014800F093B800BF3C150020830730B52D
:10743C0048D0541E002A3FD0CAB2034601E0013C9A
:10744C003AD303F8012B9D07F9D1032C2DD9CDB2DA
:10745C0045EA05250F2C45EA054536D9A4F110025D
:10746C0022F00F0C03F1200EE6444FEA121C03F13C
:10747C00100242E9045542E9025510327245F8D126
:10748C000CF1010214F00C0F03EB021204F00F0CC0
:10749C0013D0ACF1040323F003030433134442F878
:1074AC00045B9342FBD10CF003042CB1C9B21C4415
:1074BC0003F8011B9C42FBD130BD64461346002CE3
:1074CC00F4D1F9E703461446BFE71A46A446E0E7B1
:1074DC0038B5074D0022044608462A60FEF718FB13
:1074EC00431C00D038BD2B68002BFBD0236038BD6B
:1074FC00BC160020014B1868704700BF500E0020CE
:10750C0070B50D4E0D4D761BB61006D0002455F8F7
:10751C00043B01349847A642F9D1094E094D761B1C
:10752C0000F072F9B61006D0002455F8043B013473
:10753C009847A642F9D170BD801E0060801E006085
:10754C00841E0060801E0060704700BF704700BF43
:10755C00F8B5244F0C460646FFF75CFFBB685D6828
:10756C00C4F57E610F3125F003054B1923F47F63BD
:10757C0023F00F03A3F58054B4F5805F07DB0021E3
:10758C003046FFF7A5FFBB682B44984204D0304629
:10759C00FFF746FF0020F8BD61423046FFF798FF29
:1075AC0001300DD0104ABB682D1B45F001055D6004
:1075BC00136830461B1B1360FFF732FF0120F8BD28
:1075CC0000213046FFF784FFBA68831A0F2BDEDDEB
:1075DC0043F001035360054B03491B68C01A086054
:1075EC00D5E700BF400A002040150020480E0020BF
:1075FC00002961D0F8B50C460646FFF70BFF54F88E
:10760C00042C7B4FA4F1080522F0010105EB010CC1
:10761C00B868DCF80430604523F0030300F08B807D
:10762C00D207CCF8043032D454F8082CAD1A1144DB
:10763C00AA6807F1080082426AD00CEB0304D4F864
:10764C0004E0EC68D4601EF0010FA26000F097809B
:10765C0041F001036B60CCF80010B1F5007F35D21E
:10766C007868CB080122490901338A40024357F854
:10767C0033107A6007EBC302083AC5E9021247F8E7
:10768C003350CD603046BDE8F840FFF7C9BE0CEB77
:10769C0003025268D00710D4194407F10800DCF833
:1076AC000830834273D0DCF80C20DA60936041F030
:1076BC0001036B606950D0E7704741F00103B1F5ED
:1076CC00007F44F8043CCCF80010C9D3B1F5206F0E
:1076DC004FEA512348D28B0903F1390003F13802E8
:1076EC00C300F818FB580838984259D05A6822F051
:1076FC0003028A4202D99B689842F7D1D868C5E93F
:10770C0002308560DD603046BDE8F840FFF788BE8A
:10771C000CEB03025268D20763D40B44DCE902126F
:10772C00CA60916043F001026A603046EB50BDE8DC
:10773C00F840FFF775BE0B44D10707D454F8082C5A
:10774C00AD1A1344D5E90212CA60916043F00102EC
:10775C006A60284ABD6012689A4293D8264B30461C
:10776C001968FFF7F5FE8DE7142B0AD9542B1FD897
:10777C000B0B03F16F0003F16E02C300B1E7194468
:10778C008DE703F15C0003F15B02C300A9E741F054
:10779C000103C7E90455C5E902006B60695071E744
:1077AC0079689210012404FA02F20A437A60A6E77F
:1077BC00B3F5AA7F06D8CB0B03F1780003F177025F
:1077CC00C3008EE740F25452934206D88B0C03F15F
:1077DC007D0003F17C02C30083E74FF47E737E22AD
:1077EC007FE741F001036B60CCF800104AE700BF63
:1077FC00400A00204C0E00207015002000000000F4
:10780C005FF800F08D1D00605FF800F0351E006021
:04781C00F8B500BFFC
:107820000000000000000000000000000000000058
:107830000000000000000000000000000000000048
:107840000000000000000000000000000000000038
:107850000000000000000000000000000000000028
:107860000000000000000000000000000000000018
:107870000000000000000000000000000000000008
:1078800000000000000000000000000000000000F8
:1078900000000000000000000000000000000000E8
:1078A00000000000000000000000000000000000D8
:1078B00000000000000000000000000000000000C8
:1078C00000000000000000000000000000000000B8
:1078D00000000000000000000000000000000000A8
:1078E0000000000000000000000000000000000098
:1078F0000000000000000000000000000000000088
:107900000000000000000000000000000000000077
:107910000000000000000000000000000000000067
:107920000000000000000000000000000000000057
:107930000000000000000000000000000000000047
:107940000000000000000000000000000000000037
:107950000000000000000000000000000000000027
:107960000000000000000000000000000000000017
:107970000000000000000000000000000000000007
:1079800000000000000000000000000000000000F7
:1079900000000000000000000000000000000000E7
:1079A00000000000000000000000000000000000D7
:1079B00000000000000000000000000000000000C7
:1079C00000000000000000000000000000000000B7
:1079D00000000000000000000000000000000000A7
:1079E0000000000000000000000000000000000097
:1079F0000000000000000000000000000000000087
:107A00000000000000000000000000000000000076
:107A10000000000000000000000000000000000066
:107A20000000000000000000000000000000000056
:107A30000000000000000000000000000000000046
:107A40000000000000000000000000000000000036
:107A50000000000000000000000000000000000026
:107A60000000000000000000000000000000000016
:107A70000000000000000000000000000000000006
:107A800000000000000000000000000000000000F6
:107A900000000000000000000000000000000000E6
:107AA00075000000000000006500000000000000FC
:107AB00069000000000000007700FC0F01010000D9
:107AC00077E2FE0F010000007703080F01000000BD
:107AD0007704080F0200FC007700080F080300007D
:107AE0000000FC02000000007700080F08040000FE
:107AF00000000001000000007700080F08000000EF
:107B000000000000040000007700FC0F00000000EF
:107B10007700FD0F000000000000FC0002000000E4
:107B20007701080F0101000077E2FE0F0109000054
:107B300077E2FE0F0104000077E2FE0F0103000070
:107B400077E2FE0F01080000001900004931000033
:107B50000000000074C00F40C000000000000000E2
:107B60000200000050851F400100000034000000AA
:107B70000200000050851F400000000001000000CE
:107B80000200000054851F40010000003500000085
:107B90000200000054851F4000000000FF0040006C
:107BA000260018007C00000000000000000000001B
:107BB0005531000085450000814500007D450000ED
:107BC00079450000AD310000B1310000754500007D
:107BD0000000000000000000F92F00005D310000EF
:107BE000652A0000BD2B0000852A0000292B00001B
:107BF000AD2A0000412C0000D92B0000612A0000B2
:107C000000000042C8801F40B8821F4008000000EA
:107C100000000042C4801F40B4821F4004000000E6
:107C200000C0004224801F4014821F40100000004A
:107C300000C0004228801F4018821F402000000022
:107C400000C000422C801F401C821F4040000000EA
:107C500000C0004234801F4024821F400001000009
:107C60000040004264811F4054831F400004000014
:107C70000040004280811F4070831F4000000200CE
:107C8000004000427C811F406C831F4000000100C7
:107C90000040004268811F4058831F4000080000D8
:107CA000004000423C811F402C831F400100000027
:107CB0000040004244811F4034831F400400000004
:107CC0000040004240811F4030831F4002000000FE
:107CD0000040004248811F4038831F4008000000D8
:107CE0000000004204811F40F4821F400000040095
:107CF0000000004208811F40F8821F400000080079
:107D00000000004218811F4008831F4000008000CF
:107D10000000004214811F4004831F400000400007
:107D20000000004200811F40F0821F40000002005E
:107D300000000042FC801F40EC821F400000010058
:107D40000000004224811F4014831F4000000004F3
:107D50000000004228811F4018831F4000000008D7
:107D6000000000421C811F400C831F4000000001E6
:107D70000000004220811F4010831F4000000002CD
:107D800000000042EC801F40DC821F400010000019
:107D900000000042F0801F40E0821F4000200000F1
:107DA0000000004234811F4024831F400000004037
:107DB0000000004238811F4028831F4000000080DF
:107DC0000080004294801F4084821F400000040015
:107DD00000C0004290801F4080821F400000008051
:107DE00000800042A8801F4098821F400000800051
:107DF00000800042A4801F4094821F400000400089
:107E0000004000426C811F405C831F400010000056
:107E100000C0004230801F4020821F4080000000D0
:107E200000400042B0811F40A0831F40000000209E
:107E300000400042AC811F409C831F4000000010A6
:107E40000040004284811F4074831F4000000400F2
:107E50000040004288811F4078831F4000000800D6
:107E6000000000422C811F401C831F4000000010B6
:107E70000000004230811F4020831F40000000208E
:107E8000000000420C811F40FC821F4000001000D7
:107E90000000004210811F4000831F4000002000AE
:107EA00000800042C8811F40B8831F40008000004E
:107EB00000800042C4811F40B4831F400040000086
:107EC00000800042C0811F40B0831F40002000009E
:107ED00000800042BC811F40AC831F4000100000A6
:107EE00000800042D0811F40C0831F40000002007C
:107EF00000800042CC811F40BC831F400000010075
:107F000000C0004274801F4064821F4000000001D6
:107F100000C0004280801F4070821F4000000008A7
:107F200000C0004284801F4074821F400000001087
:107F300000C000426C801F405C821F400000400077
:107F400000C000427C801F406C821F400000000483
:107F500000C0004278801F4068821F40000000027D
:107F600000C0004288801F4078821F40000000202F
:107F700000010000540E0020120000000006000066
:107F8000801F00600A000000000200001C1F00604B
:107F90006200000000070000B81E006062000000E0
:107FA000EE030000900E002012000000000004EE1E
:107FB000680E00202800000000030000B41E0060CE
:107FC00000000000010309049C1E00600000000086
:107FD00002030904841E006000000000030309047A
:107FE000A40E0020000000000000000000000000BF
:107FF00000000000000000000000000074150020D8
:10800000DC150020441600200000000000000000E5
:108010000000000000000000000000000000000060
:108020000000000000000000000000000000000050
:108030000000000000000000000000000000000040
:108040000000000000000000000000000000000030
:108050000000000000000000000000000000000020
:108060000000000000000000000000000000000010
:108070000000000000000000000000000000000000
:1080800000000000000000000000000000000000F0
:1080900001000000000000000E33CDAB34126DE68D
:1080A000ECDE05000B0000000000000000000000F6
:1080B00000000000000000000000000000000000C0
:1080C00000000000000000000000000000000000B0
:1080D00000000000000000000000000000000000A0
:1080E0000000000000000000000000000000000090
:1080F0000000000000000000000000000000000080
:10810000000000000000000000000000000000006F
:1081100000000000000000000029DE07007B9A1725
:10812000E00704EC00FB0F0000FBC013BFE607C034
:10813000BFEC07C0BFEE07CFEB07ECF5EA07FCB2D8
:10814000FF0E72FCB2FF0E76FCB2FF0E77FCB2FFA0
:108150000E9EFDFCB2FF0E73624C69DD6D4C77DD47
:108160001D4C72DD294C65DD324C75DD62FCA1FFD2
:108170000ED5EA07DFC8AFE60712ECEB070FFCB23B
:10818000FF0E119BA793DFF6FE4C00EEE3FF118B71
:10819000FCA1FF0EA793DFF6EED6FF61FFFCF8FF10
:1081A0000E8F02084C0FDD0B624CFFDF11FCC40880
:1081B0000FEFF5624CFFDF06FC04F00EEFF5C36134
:1081C000CFC262FCA1FF0EEEA7FFE5EA07EF03E5D1
:1081D000EA07FE0200EF9A5100FCA1FF0ED7FFFF55
:1081E000FFFFFFFFFFFFFFFFFFFFFF0090030020E7
:1081F00000000000E803000000000000B8030020B9
:1082000000000000E80300000000000000801940AA
:108210002803002000000000C8140020881400205B
:1082200000000000000000004000000040000000CE
:1082300040000000400000000000000000000000BE
:10824000000000000000000000000000000000002E
:10825000000000000000000000000000803020202E
:108260000000000000000000400A0020400A00203A
:10827000480A0020480A0020500A0020500A002026
:10828000580A0020580A0020600A0020600A0020D6
:10829000680A0020680A0020700A0020700A002086
:1082A000780A0020780A0020800A0020800A002036
:1082B000880A0020880A0020900A0020900A0020E6
:1082C000980A0020980A0020A00A0020A00A002096
:1082D000A80A0020A80A0020B00A0020B00A002046
:1082E000B80A0020B80A0020C00A0020C00A0020F6
:1082F000C80A0020C80A0020D00A0020D00A0020A6
:10830000D80A0020D80A0020E00A0020E00A002055
:10831000E80A0020E80A0020F00A0020F00A002005
:10832000F80A0020F80A0020000B0020000B0020B3
:10833000080B0020080B0020100B0020100B002061
:10834000180B0020180B0020200B0020200B002011
:10835000280B0020280B0020300B0020300B0020C1
:10836000380B0020380B0020400B0020400B002071
:10837000480B0020480B0020500B0020500B002021
:10838000580B0020580B0020600B0020600B0020D1
:10839000680B0020680B0020700B0020700B002081
:1083A000780B0020780B0020800B0020800B002031
:1083B000880B0020880B0020900B0020900B0020E1
:1083C000980B0020980B0020A00B0020A00B002091
:1083D000A80B0020A80B0020B00B0020B00B002041
:1083E000B80B0020B80B0020C00B0020C00B0020F1
:1083F000C80B0020C80B0020D00B0020D00B0020A1
:10840000D80B0020D80B0020E00B0020E00B002050
:10841000E80B0020E80B0020F00B0020F00B002000
:10842000F80B0020F80B0020000C0020000C0020AE
:10843000080C0020080C0020100C0020100C00205C
:10844000180C0020180C0020200C0020200C00200C
:10845000280C0020280C0020300C0020300C0020BC
:10846000380C0020380C0020400C0020400C00206C
:10847000480C0020480C0020500C0020500C00201C
:10848000580C0020580C0020600C0020600C0020CC
:10849000680C0020680C0020700C0020700C00207C
:1084A000780C0020780C0020800C0020800C00202C
:1084B000880C0020880C0020900C0020900C0020DC
:1084C000980C0020980C0020A00C0020A00C00208C
:1084D000A80C0020A80C0020B00C0020B00C00203C
:1084E000B80C0020B80C0020C00C0020C00C0020EC
:1084F000C80C0020C80C0020D00C0020D00C00209C
:10850000D80C0020D80C0020E00C0020E00C00204B
:10851000E80C0020E80C0020F00C0020F00C0020FB
:10852000F80C0020F80C0020000D0020000D0020A9
:10853000080D0020080D0020100D0020100D002057
:10854000180D0020180D0020200D0020200D002007
:10855000280D0020280D0020300D0020300D0020B7
:10856000380D0020380D0020400D0020400D002067
:10857000480D0020480D0020500D0020500D002017
:10858000580D0020580D0020600D0020600D0020C7
:10859000680D0020680D0020700D0020700D002077
:1085A000780D0020780D0020800D0020800D002027
:1085B000880D0020880D0020900D0020900D0020D7
:1085C000980D0020980D0020A00D0020A00D002087
:1085D000A80D0020A80D0020B00D0020B00D002037
:1085E000B80D0020B80D0020C00D0020C00D0020E7
:1085F000C80D0020C80D0020D00D0020D00D002097
:10860000D80D0020D80D0020E00D0020E00D002046
:10861000E80D0020E80D0020F00D0020F00D0020F6
:10862000F80D0020F80D0020000E0020000E0020A4
:10863000080E0020080E0020100E0020100E002052
:10864000180E0020180E0020200E0020200E002002
:10865000280E0020280E0020300E0020300E0020B2
:10866000380E0020380E0020FFFFFFFF0000020040
:10867000D807002012010002EF020140C016830457
:108680008002010203010000280000000001040034
:108690000100000000000000020157494E555342FE
:1086A00000000000000000000000000000000000CA
:1086B00012034D00530046005400310030003000DA
:1086C000F80000000C0300000000000000000000A3
:1086D000000000000000000000000000000000009A
:1086E000000000000000000000000000000000008A
:1086F000000000000000000000000000000000007A
:108700000000000000000000000000000000000069
:108710000000000000000000000000000000000059
:108720000000000000000000000000000000000049
:108730000000000000000000000000000000000039
:108740000000000000000000000000000000000029
:108750000000000000000000000000000000000019
:108760000000000000000000000000000000000009
:1087700000000000000000000000000000000000F9
:1087800000000000000000000000000000000000E9
:1087900000000000000000000000000000000000D9
:1087A00000000000000000000000000000000000C9
:1087B00000000000000000000000000000000000B9
:1087C00000000000000000000000000000000000A9
:1087D0000000000000000000000000000000000099
:1087E0000000000000000000000000000000000089
:1087F0000000000000000000000000000000000079
:108800000000000000000000000000000000000068
:108810000000000000000000000000000000000058
:108820000000000000000000000000000000000048
:108830000000000000000000000000000000000038
:108840000000000000000000000000000000000028
:108850000000000000000000000000000000000018
:108860000000000000000000000000000000000008
:1088700000000000000000000000000000000000F8
:1088800000000000000000000000000000000000E8
:1088900000000000000000000000000000000000D8
:1088A00000000000000000000000000000000000C8
:1088B00000000000000000000000000000000000B8
:1088C00000000000000000000000000000000000A8
:1088D0000000000000000000000000000000000098
:1088E0000000000000000000000000000000000088
:1088F0000000000000000000000000000000000078
:108900000000000000000000000000000000000067
:108910000000000000000000000000000000000057
:108920000000000000000000000000000000000047
:108930000000000000000000000000000000000037
:108940000000000000000000000000000000000027
:108950000000000000000000000000000000000017
:108960000000000000000000000000000000000007
:1089700000000000000000000000000000000000F7
:1089800000000000000000000000000000000000E7
:1089900000000000000000000000000000000000D7
:1089A00000000000000000000000000000000000C7
:1089B00000000000000000000000000000000000B7
:1089C00000000000000000000000000000000000A7
:1089D0000000000000000000000000000000000097
:1089E0000000000000000000000000000000000087
:1089F0000000000000000000000000000000000077
:108A00000000000000000000000000000000000066
:108A10000000000000000000000000000000000056
:108A20000000000000000000000000000000000046
:108A30000000000000000000000000000000000036
:108A40000000000000000000000000000000000026
:108A50000000000000000000000000000000000016
:108A60000000000000000000000000000000000006
:108A700000000000000000000000000000000000F6
:108A800000000000000000000000000000000000E6
:108A900000000000000000000000000000000000D6
:108AA00000000000000000000000000000000000C6
:108AB00000000000000000000000000000000000B6
:108AC00000000000000000000000000000000000A6
:108AD0000000000000000000000000000000000096
:108AE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
:108AF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
:108B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
:108B1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
:108B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
:108B3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
:108B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
:108B5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25
:108B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15
:108B7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05
:108B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
:108B9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
:108BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
:108BB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
:108BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
:108BD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
:108BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
:108BF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
:108C00000000000000000000000000000000000064
:108C10000000000000000000000000000000000054
:108C20000000000000000000000000000000000044
:108C30000000000000000000000000000000000034
:108C40000000000000000000000000000000000024
:108C50000000000000000000000000000000000014
:108C60000000000000000000000000000000000004
:108C700000000000000000000000000000000000F4
:108C800000000000000000000000000000000000E4
:108C900000000000000000000000000000000000D4
:108CA00000000000000000000000000000000000C4
:108CB00000000000000000000000000000000000B4
:108CC00000000000000000000000000000000000A4
:108CD0000000000000000000000000000000000094
:108CE0000000000000000000000000000000000084
:108CF0000000000000000000000000000000000074
:108D00000000000000000000000000000000000063
:108D10000000000000000000000000000000000053
:108D20000000000000000000000000000000000043
:108D30000000000000000000000000000000000033
:108D40000000000000000000000000000000000023
:108D50000000000000000000000000000000000013
:108D60000000000000000000000000000000000003
:108D700000000000000000000000000000000000F3
:108D800000000000000000000000000000000000E3
:108D900000000000000000000000000000000000D3
:108DA00000000000000000000000000000000000C3
:108DB00000000000000000000000000000000000B3
:108DC00000000000000000000000000000000000A3
:108DD0000000000000000000000000000000000093
:108DE0000000000000000000000000000000000083
:108DF0000000000000000000000000000000000073
:108E00000000000000000000000000000000000062
:108E10000000000000000000000000000000000052
:108E20000000000000000000000000000000000042
:108E30000000000000000000000000000000000032
:108E40000000000000000000000000000000000022
:108E50000000000000000000000000000000000012
:108E60000000000000000000000000000000000002
:108E700000000000000000000000000000000000F2
:108E800000000000000000000000000000000000E2
:108E900000000000000000000000000000000000D2
:108EA00000000000000000000000000000000000C2
:108EB00000000000000000000000000000000000B2
:108EC00000000000000000000000000000000000A2
:108ED0000000000000000000000000000000000092
:108EE0000000000000000000000000000000000082
:108EF0000000000000000000000000000000000072
:108F00000000000000000000000000000000000061
:108F10000000000000000000000000000000000051
:108F20000000000000000000000000000000000041
:108F30000000000000000000000000000000000031
:108F40000000000000000000000000000000000021
:108F50000000000000000000000000000000000011
:108F60000000000000000000000000000000000001
:108F700000000000000000000000000000000000F1
:108F800000000000000000000000000000000000E1
:108F900000000000000000000000000000000000D1
:108FA00000000000000000000000000000000000C1
:108FB00000000000000000000000000000000000B1
:108FC00000000000000000000000000000000000A1
:108FD0000000000000000000000000000000000091
:108FE0000000000000000000000000000000000081
:108FF0000000000000000000000000000000000071
:109000000000000000000000000000000000000060
:109010000000000000000000000000000000000050
:109020000000000000000000000000000000000040
:109030000000000000000000000000000000000030
:109040000000000000000000000000000000000020
:109050000000000000000000000000000000000010
:109060000000000000000000000000000000000000
:1090700000000000000000000000000000000000F0
:1090800000000000000000000000000000000000E0
:1090900000000000000000000000000000000000D0
:1090A00000000000000000000000000000000000C0
:1090B00000000000000000000000000000000000B0
:1090C00000000000000000000000000000000000A0
:1090D0000000000000000000000000000000000090
:1090E0000000000000000000000000000000000080
:1090F0000000000000000000000000000000000070
:10910000000000000000000000000000000000005F
:10911000000000000000000000000000000000004F
:10912000000000000000000000000000000000003F
:10913000000000000000000000000000000000002F
:10914000000000000000000000000000000000001F
:10915000000000000000000000000000000000000F
:1091600000000000000000000000000000000000FF
:1091700000000000000000000000000000000000EF
:1091800000000000000000000000000000000000DF
:1091900000000000000000000000000000000000CF
:1091A00000000000000000000000000000000000BF
:1091B00000000000000000000000000000000000AF
:1091C000000000000000000000000000000000009F
:1091D000000000000000000000000000000000008F
:1091E000000000000000000000000000000000007F
:1091F000000000000000000000000000000000006F
:10920000000000000000000000000000000000005E
:10921000000000000000000000000000000000004E
:10922000000000000000000000000000000000003E
:10923000000000000000000000000000000000002E
:10924000000000000000000000000000000000001E
:10925000000000000000000000000000000000000E
:1092600000000000000000000000000000000000FE
:1092700000000000000000000000000000000000EE
:1092800000000000000000000000000000000000DE
:1092900000000000000000000000000000000000CE
:1092A00000000000000000000000000000000000BE
:1092B00000000000000000000000000000000000AE
:1092C000000000000000000000000000000000009E
:1092D000000000000000000000000000000000008E
:1092E000000000000000000000000000000000007E
:1092F000000000000000000000000000000000006E
:10930000000000000000000000000000000000005D
:10931000000000000000000000000000000000004D
:10932000000000000000000000000000000000003D
:10933000000000000000000000000000000000002D
:10934000000000000000000000000000000000001D
:10935000000000000000000000000000000000000D
:1093600000000000000000000000000000000000FD
:1093700000000000000000000000000000000000ED
:1093800000000000000000000000000000000000DD
:1093900000000000000000000000000000000000CD
:1093A00000000000000000000000000000000000BD
:1093B00000000000000000000000000000000000AD
:1093C000000000000000000000000000000000009D
:1093D000000000000000000000000000000000008D
:1093E000000000000000000000000000000000007D
:1093F000000000000000000000000000000000006D
:10940000000000000000000000000000000000005C
:10941000000000000000000000000000000000004C
:10942000000000000000000000000000000000003C
:10943000000000000000000000000000000000002C
:10944000000000000000000000000000000000001C
:10945000000000000000000000000000000000000C
:1094600000000000000000000000000000000000FC
:1094700000000000000000000000000000000000EC
:1094800000000000000000000000000000000000DC
:1094900000000000000000000000000000000000CC
:1094A00000000000000000000000000000000000BC
:1094B00000000000000000000000000000000000AC
:1094C000000000000000000000000000000000009C
:1094D000000000000000000000000000000000008C
:1094E000000000000000000000000000000000007C
:1094F000000000000000000000000000000000006C
:10950000000000000000000000000000000000005B
:10951000000000000000000000000000000000004B
:10952000000000000000000000000000000000003B
:10953000000000000000000000000000000000002B
:10954000000000000000000000000000000000001B
:10955000000000000000000000000000000000000B
:1095600000000000000000000000000000000000FB
:1095700000000000000000000000000000000000EB
:1095800000000000000000000000000000000000DB
:1095900000000000000000000000000000000000CB
:1095A00000000000000000000000000000000000BB
:1095B00000000000000000000000000000000000AB
:1095C000000000000000000000000000000000009B
:1095D000000000000000000000000000000000008B
:1095E000000000000000000000000000000000007B
:1095F000000000000000000000000000000000006B
:10960000000000000000000000000000000000005A
:10961000000000000000000000000000000000004A
:10962000000000000000000000000000000000003A
:10963000000000000000000000000000000000002A
:10964000000000000000000000000000000000001A
:10965000000000000000000000000000000000000A
:1096600000000000000000000000000000000000FA
:1096700000000000000000000000000000000000EA
:1096800000000000000000000000000000000000DA
:1096900000000000000000000000000000000000CA
:1096A00000000000000000000000000000000000BA
:1096B00000000000000000000000000000000000AA
:1096C000000000000000000000000000000000009A
:1096D000000000000000000000000000000000008A
:1096E000000000000000000000000000000000007A
:1096F000000000000000000000000000000000006A
:109700000000000000000000000000000000000059
:109710000000000000000000000000000000000049
:109720000000000000000000000000000000000039
:109730000000000000000000000000000000000029
:109740000000000000000000000000000000000019
:109750000000000000000000000000000000000009
:1097600000000000000000000000000000000000F9
:1097700000000000000000000000000000000000E9
:1097800000000000000000000000000000000000D9
:1097900000000000000000000000000000000000C9
:1097A00000000000000000000000000000000000B9
:1097B00000000000000000000000000000000000A9
:1097C0000000000000000000000000000000000099
:1097D0000000000000000000000000000000000089
:1097E0000000000000000000000000000000000079
:1097F0000000000000000000000000000000000069
:040000056000100087
:00000001FF
================================================
FILE: assets/hw/syscon_flasher/syscon_flasher_v2.05_teensy_lc.hex
================================================
:1000000000180020C1000000991700005D170000D3
:100010005D1700005D1700005D1700005D17000010
:100020005D1700005D1700005D17000099170000C4
:10003000991700005D1700009D300000A5300000FA
:1000400099170000991700009917000099170000F0
:1000500099170000991700009917000099170000E0
:1000600099170000991700009917000099170000D0
:10007000A9210000991700009917000099170000A6
:1000800099170000991700009917000099170000B0
:1000900099170000991700009917000099170000A0
:1000A0008924000099170000991700009917000093
:1000B0009917000099170000991700009917000080
:1000C000F8B501F06DFB484B484A1A60484B494A65
:1000D0001A60494B494A1A600823494A1178194263
:1000E00002D011780B4313702A22464B46481A70EF
:1000F000464BC11E00228B4203D303331A1A9208C7
:100100009200434903F028FB4248434BC11E0022A2
:10011000994203D803331A1A92089200002103F07F
:10012000D5FA3E4CC02220003D4903F015FB0326C2
:100130000022802017003B4993089B005B18FF2199
:100140003740FF00B9408C46654619680132A94323
:100150000500BD4029431960202AEBD1324B6A3299
:100160001C60324B1A70324B663A5A707C321A70ED
:100170009E3A99791142FCD0102299791142FCD112
:100180000C219A790A40082AFBD1053A1A713D32AE
:100190005A71203A99791142FCD040229979114242
:1001A000FCD0244A2449116020220C211A709A792B
:1001B0000A400C2AFBD1214B214A1A60214B224ACA
:1001C0001A600022214B1A60214B07321A60214B22
:1001D000214A1A6062B601F05BFB01F0E7FA03F016
:1001E00095FA01F0B2FAFEE734800440300004F0E2
:1001F00038800440823F00003C8004400100000F32
:1002000002D0074000E0074020FDFF1F18FFFF1F3E
:10021000E03A000018FFFF1F6002002000F9FF1FF6
:100220000000000000E400E008ED00E0005006409F
:100230000040064044800440000001100480044057
:10024000C000050514E000E07FBB000018E000E0FE
:1002500010E000E020ED00E000002020FFFFFFFFA5
:10026000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
:10027000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
:10028000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
:10029000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
:1002A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
:1002B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
:1002C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:1002D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
:1002E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:1002F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
:10030000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:10031000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
:10032000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:10033000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
:10034000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:10035000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
:10036000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:10037000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10039000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1003B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1003D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1003F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:10040000FFFFFFFFFFFFFFFFFFFFFFFFDEF9FFFF23
:1004100006480749091A8B10C90FC91810B54910A9
:1004200003D0044B002B00D0984710BD18FFFF1FCE
:1004300018FFFF1F00000000054B10B5002B03D074
:100440000449054800E000BFFFF7E2FF10BDC046C9
:100450000000000018FFFF1FE03A0000F0B50500A3
:10046000160000240D4F85B03B6801910393039B58
:100470000093019B311B181902F034FC2418A6428A
:1004800009D93B68009A0293029B9B1AAA6893427F
:10049000EFD301232B7305B0F0BDC04644FFFF1F0F
:1004A00010B502F099FD0020084B1B7883420CD058
:1004B000074B1B78DB0708D5064B074A1B681268F9
:1004C0000E309B1A98428041404210BDC800002067
:1004D000E800002044FFFF1FEC00002010B5036877
:1004E000C9B21B68984710BD10B50368C9B21B6834
:1004F000984710BD10B5064A01001378C318054887
:100500001370FFF7F1FFC823DB00013BFDD110BDE5
:1005100031FFFF1FECFDFF1F0023074A012808D011
:100520001378022804D0013B032802D010787047CA
:100530005B421370FAE7C04631FFFF1F030A0870E1
:10054000000C4B708870704710B502F093FCC82304
:10055000DB00013BFDD102F0AFFB002804DC0021F1
:100560000D2001F007FA10BD02F060FBF3E770B553
:1005700004000E000D200121C82501F0FBF9A61989
:10058000ED00B44206D1013DFDD100210D2001F066
:10059000F1F970BD207801F0C5FC2B00013BFDD1C5
:1005A00001F082FD0134ECE737B505210B48FFF778
:1005B000DEFF0B4C23680093009D01F061FD0028D5
:1005C00003DD01F071FDC0B23EBD2368054A019311
:1005D000019B5B1B9342F0D9EF20F5E72F38000019
:1005E00044FFFF1F1027000010B501210D2001F06E
:1005F000C1F9204C0521A01DFFF7B9FF01F054FD02
:10060000C0B2002801D0E02010BD200006210C302F
:10061000FFF7ADFF01F048FDC0B20028F3D1200084
:1006200006211330FFF7A3FF01F03EFDC0B2002802
:10063000E9D1200006211A30FFF799FF01F034FDBF
:10064000C0B20028DFD1200007212130FFF78FFF43
:1006500001F02AFDC0B20028D5D106210648FFF7D7
:1006600086FF01F021FDC0B20028CCD1FFF79CFF2E
:10067000CAE7C0462F3800000C380000F0B520490A
:1006800085B00222293101A803F066F86B460022EA
:10069000002400259A71200001A9FFF74FFF6B4647
:1006A000722209201A7201A96F3A684403F054F8C3
:1006B00080266B460521C8271E7302A8FFF757FF47
:1006C000FF0001F0DDFC002816D001F0EDFC0D4B21
:1006D0000100013E1800FFF701FF002EF1D10023B9
:1006E0008022A4185D4180231B03A342D3D1002D97
:1006F000D1D1280005B0F0BD3B00013BFDD1E0E7C2
:100700002F38000014FEFF1FF0B5354C8BB0236866
:100710000493049D02F0D0FA032827DD06AD0E22D3
:100720000021280002F0D2FF2E4F042229003800B9
:10073000FFF794FE2B786C78AA781B02E418EB780C
:1007400012029B189BB20133A4B29B02A402019334
:10075000019BA34213D802F0AFFA00283CDC0D2025
:10076000002101F007F900200BB0F0BD23681E4AFC
:100770000593059B5B1B9342CCD9EB20F4E720004B
:1007800003A9FFF7DBFE0A22002107A802F09EFF63
:10079000722311202B7002AB032203A9C01802F0B0
:1007A000DBFF8023052128002B71FFF7E0FE802668
:1007B00001F066FC00280AD001F076FC013E010041
:1007C0003800FFF78BFE002EF2D18034C0E7C8233B
:1007D000DB00013BFDD1EBE702F028FABBE7C046A6
:1007E00044FFFF1F14FEFF1F10270000F0B5324C1E
:1007F00089B023680293029D02F05EFA03281BDD94
:1008000004AE0E220021300002F060FF042231000D
:100810002A48FFF723FE337874781B02E418B37874
:10082000F5781B02ED18ADB2A4B20135A402AD02F9
:10083000A5420AD8002016E02368214A0393039BAF
:100840005B1B9342D8D9EB200DE0200001A9FFF7F4
:1008500075FE06211B48FFF78AFE01F025FCC0B299
:10086000002802D0E42009B0F0BD174F052239005E
:1008700070732C31300002F06FFF1520032201A9A4
:10088000684402F069FF39000522323106A802F0FF
:1008900063FF0D213000FFF76AFE01F005FCC0B2D6
:1008A0000028DFD1FFF780FE0028DCD1FFF74CFEE7
:1008B0008023DB00E418BBE744FFFF1F14FEFF1F8B
:1008C00010270000133800002F380000F0B5354C19
:1008D00089B023680293029D02F0EEF903281DDD22
:1008E00004AE0E220021300002F0F0FE042231009E
:1008F0002D48FFF7B3FD337874781B02E418B37802
:10090000F5781B02ED18ADB2A4B20135A402AD0218
:10091000A5420CD80023180009B0F0BD2368234A73
:100920000393039B5B1B9342D6D9EB23F3E7200091
:1009300001A9FFF703FE06211D48FFF718FE01F08D
:10094000B3FBC0B2002828D11A4F052239007073BA
:100950002C31300002F000FF1520032201A9684469
:1009600002F0FAFE39000522323106A802F0F4FE48
:100970000D213000FFF7FBFD01F096FBC0B200280F
:100980000DD1FFF711FE031E01D01B28C3D1FFF7C5
:10099000DBFD8023DB00E418BAE7E823BBE7E423B0
:1009A000B9E7C04644FFFF1F14FEFF1F10270000D9
:1009B0001A3800002F380000F0B5294F0621380002
:1009C00085B0FFF7D4FD01F06FFBC1B2E824002928
:1009D00010D1032203A802F079FE224B0D2118004A
:1009E00038300193FFF7C3FD01F05EFBC0B2002871
:1009F00003D0E424200005B0F0BDFFF7D5FD041EB0
:100A0000F8D101F051FB02ABC6B21E7101F04CFBF4
:100A100002ABC5B2062138005D71FFF7A8FD01F0F9
:100A200043FBC0B2E8340028E4D101980D214630E0
:100A3000FFF79DFD01F038FBC0B20028D9D1FFF7C8
:100A4000B3FD041ED6D101F02FFB0700300002F0E9
:100A500011FA280002F00EFAF8B202F00BFAC9E718
:100A6000213800002F380000F0B5AF4C0922A54412
:100A700000240BA821000A9402F028FEAB4E0222AB
:100A8000310005A8293102F067FEFF2204AB2100E6
:100A900092000FA89C710E9402F018FEA44C2368DB
:100AA0000693069D02F008F9012842DD8027002503
:100AB0000D2200210AA802F009FE02229D480AA97F
:100AC000FFF7CCFC04AB1B7E0121019304AB5B7EE2
:100AD0000D20029300F04EFF2368FF000893089B4F
:100AE0000393BD422ED330000521C8258026543003
:100AF000FFF73DFD0024ED007600282204AB9B1893
:100B0000185D01F00FFA2B00013BFDD1013401F01B
:100B1000CBFAB442F1D101F08FFA013DFDD101F0E1
:100B2000C3FAC0B200282AD0E1273800824B9D4486
:100B3000F0BD2368814A0793079B5B1B9342B1D9A1
:100B4000EB27F2E77A4B039A1B680993099B9B1AE0
:100B50007B4A934200D9E4E002F0AEF884B2002C64
:100B6000BFD06019B84201DD7C1BA4B20EAB59198D
:100B7000220070482D19FFF771FCADB2B1E76B4848
:100B80000521C82580265A30FFF7F1FCED00B6009C
:100B9000282204AB9B18185D01F0C4F92B00013B1F
:100BA000FDD1013401F080FAB442F1D101F044FAF0
:100BB000013DFDD101F078FAC0B2002801D0E22752
:100BC000B3E706215F48FFF7D2FC01F06DFAC0B22F
:100BD000002801D0E627A8E7019B05A91D02029B7A
:100BE000ED18ADB2AD022800FFF7A8FC4F4E05226C
:100BF00031000AA82C3102F0AFFD1D2004ABC01853
:100C0000032205A902F0A8FD3100052260310CA8DD
:100C100002F0A2FD0D210AA8FFF7A9FC01F044FA99
:100C2000C0B20028D6D1FFF7BFFC071E00D07CE77A
:100C300030000521C8275430FFF799FCFF00282217
:100C400004AB9B18185D01F06DF93B00013BFDD131
:100C500001F02AFAC02301349B009C42EFD101F03D
:100C6000EBF9013FFDD101F01FFAC0B2002800D01E
:100C70005AE730000521C8275A30FFF778FCFF00FB
:100C8000282204AB9B18185D01F04CF93B00013B96
:100C9000FDD101F009FA80230134DB009C42EFD141
:100CA00001F0CAF9013FFDD101F0FEF9C0B2002800
:100CB00000D084E706212348FFF759FC01F0F4F93E
:100CC000C0B2002800D085E780239B00E81805A962
:100CD000FFF734FC310005222C310AA802F03CFD5C
:100CE0001D2004ABC018032205A902F035FD310018
:100CF000052260310CA802F02FFD0D210AA8FFF794
:100D000036FC01F0D1F9C0B2002800D062E7FFF74D
:100D10004BFC071E00D008E701000D2000F02AFE62
:100D200003E7EC2701E7C046C4FBFFFF2F380000B4
:100D300044FFFF1F14FEFF1F3C04000010270000AB
:100D4000204E000028380000F0B58E4C0922A54442
:100D500000240BA821000A9402F0B8FC8A49022260
:100D6000293105A802F0F8FCFF2204AB2100920013
:100D70000FA89C710E9402F0A9FC844E3368069370
:100D8000069C01F099FF012856DD802700250D22E1
:100D900000210AA802F09AFC02227D480AA9FFF766
:100DA0005DFB04AB1B7E0121019304AB5B7E0D2038
:100DB000029300F0DFFD3368FF000893089B039364
:100DC000BD4242D3019B029A1B029B189BB29B021D
:100DD000180005A90193FFF7B1FB06216D48FFF745
:100DE000C6FB01F061F9C0B2E824002820D1664EAC
:100DF000052237002C3739000AA802F0ADFC1D236C
:100E0000350004A81B181800032205A9323502F08A
:100E1000A3FC052229000CA802F09EFC0D210AA8C3
:100E2000FFF7A5FB01F040F9C0B2002829D0E42467
:100E30002000594B9D44F0BD3368584A0793079BE7
:100E40001B1B93429DD9EB24F2E73368039A099365
:100E5000099B9B1A524A934200D943E101F02CFFAF
:100E600084B2002CACD06019B84201DD7C1BA4B266
:100E70000EAB5919220046482D19FFF7EFFAADB213
:100E80009EE7FFF791FB041E23D13F4F0521380059
:100E9000C8245430FFF76BFB0025E400282204AB84
:100EA0009B18585D01F03EF82300013BFDD101F095
:100EB000FBF8802301355B009D42EFD101F0BCF8C7
:100EC000013CFDD101F0F0F8C0B200282DD0E124A2
:100ED000AEE71B28ACD106213248FFF748FB01F0F2
:100EE000E3F8C0B20028A2D1052239000AA802F016
:100EF00033FC1D2304A81B181800032205A902F0C7
:100F00002BFC052229000CA802F026FC0D210AA8C2
:100F1000FFF72DFB01F0C8F8C0B2002800D086E72B
:100F2000FFF742FB041EB0D082E738000521C82439
:100F30005A30FFF71CFBE400282204AB9B18585DD5
:100F400000F0F0FF2300013BFDD101F0ADF880235C
:100F500001359B009D42EFD101F06EF8013CFDD1BF
:100F600001F0A2F8C0B2002801D0E22460E7062117
:100F70000D48FFF7FCFA01F097F8C0B2002815D031
:100F8000E62455E7C4FBFFFF2F38000044FFFF1F96
:100F900014FEFF1F1A3800003C0400001027000058
:100FA000204E0000133800002838000031000522D0
:100FB0002C310AA802F0D0FB1D2004ABC01803227C
:100FC00005A902F0C9FB3100052260310CA802F02E
:100FD000C3FB0D210AA8FFF7CAFA01F065F8C0B2F9
:100FE0000028CDD1FFF7E0FA041E00D020E7300042
:100FF0000521C824C0265430FFF7B9FAE400B60032
:10100000282204AB9B18585D00F08CFF2300013BA5
:10101000FDD1013501F048F8B542F1D101F00CF8ED
:10102000013CFDD101F040F8C0B2002800D04EE7ED
:101030002D480521C82480265A30FFF798FAE4008D
:10104000F600282204AB9B18585D00F06BFF2300CC
:10105000013BFDD1013501F027F8B542F1D100F097
:10106000EBFF013CFDD101F01FF8C0B2002800D019
:101070007BE706211D48FFF77AFA01F015F8C0B2A8
:10108000002800D07CE780239B009C46019805A99E
:101090006044FFF753FA390005222C310AA802F008
:1010A0005BFB1D2004ABC018032205A902F054FB12
:1010B0003900052260310CA802F04EFB0D210AA870
:1010C000FFF755FA00F0F0FFC0B2002800D057E754
:1010D000FFF76AFA041E00D0AAE601000D2000F016
:1010E00049FCA5E6EC24A3E62F38000028380000D0
:1010F00010B501210D2000F03DFC064805216630A9
:10110000FFF735FA00F0D0FFC0B2002800D0E02091
:1011100010BDC0462F38000013B5012002F016FAAA
:10112000040002F01DFA01A8001B16BDF0B505244D
:10113000012587B02200002104A802F0C7FA290087
:101140000D2000F017FCFA21FA204901C00000F040
:10115000F2FA08210290280000F0EDFA0021039035
:10116000200000F007FCA0239B00013BFDD100F014
:101170007DFD200000F076FC2900200000F0FAFB45
:10118000200000F06FFCE1216A4E4902300000F0BF
:10119000E3F964230027B360280000F063FCC52056
:1011A000FFF7A8F92800FFF7A5F9634B0320019387
:1011B0001F70FFF79FF99A20FFF79CF93800FFF79F
:1011C00099F91420FFF796F90220FFF7A5F9FFF728
:1011D00091F900F055FF002815DC0320FFF78AF98C
:1011E00000F062FF2200300004A900F05DFA04ABB9
:1011F0009B78062B36D0102B08D0EE20FFF77AF91B
:10120000002007B0F0BD00F04FFFE2E7029B1B019A
:1012100001D0013BFDD10021042000F0ABFB039B7A
:101220001B0101D0013BFDD12900042000F0A2FBED
:1012300000F026FF00280DDCFA27BF00013F002F39
:1012400000D177E700F01CFF002806DC5023013BAB
:10125000FDD1F3E700F028FFEAE700F025FFC0B278
:101260000228F3D10024052000F0FCFB9120FFF7B9
:1012700041F9012000F0F6FB019B3A201C70FFF7BA
:1012800039F94E20FFF736F96F20FFF733F9742054
:10129000FFF730F93A20FFF72DF95520FFF72AF92B
:1012A0007320FFF727F96520FFF724F96420FFF783
:1012B00021F93A20FFF71EF90320FFF72DF9FFF778
:1012C00019F9012000F0CEFB9320FFF713F901205C
:1012D00000F0C8FB194B185D0134FFF70BF9C32C64
:1012E000F8D1012000F0BEFB9320FFF703F90120A5
:1012F00000F0B8FB0024124BE05C0134FFF7FAF871
:10130000072CF8D1012000F0ADFB94213000FFF74D
:10131000EBF8052000F0A6FB00F0B2FE002805DC8B
:101320000D20002100F026FB01206AE700F0BCFE42
:10133000F2E7C046ECFDFF1F31FFFF1F27FDFF1F37
:1013400020FDFF1FF8B501210D2000F013FB012740
:1013500001F0B2FC002800D1F8BD01F067FC454B5C
:10136000C0B2187001280FD910285AD0202871D087
:10137000802872D0F02831D03F4B1B78002B03D14E
:10138000E020FFF7E1F8E3E72028E1D801F036FF9D
:101390001116323538E03D4043E046E0E0E0E0E061
:1013A00049E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0D4
:1013B000620002213148FFF791F8C9E7FFF7ACFE60
:1013C0002F4D2880052001F055FD2C4C2988200048
:1013D000090AFFF783F820002978ECE7FFF79CFE65
:1013E000274D2880022001F045FD052001F042FD37
:1013F0003420E8E7FFF788F9AAE7FFF73FF9A7E706
:10140000FFF7F4F91F4B1870BBE7FFF72DFBF9E767
:10141000FFF79AFCF6E7FFF759FAF3E7FFF7CCFA84
:10142000F0E70023144D174C2E7823709E420AD10A
:10143000FFF77CFE2070002809D0FFF7D5F8207058
:10144000002802D12F7020789BE72E70FBE7E12364
:101450002370F8E7FFF74CFED4E700210D2000F0E1
:1014600089FAFA20400000F0FDFA074B1B68984704
:101470006EE7C04630FFFF1F34FFFF1F14FEFF1F43
:1014800032FFFF1F3CFFFF1F38FFFF1FE12170B538
:10149000244C4902200000F05FF86423FA26A36080
:1014A000214CF6002568FEF7FBFF002807D11F4AF4
:1014B000236812785B1B002A2ED0B3422FD901215A
:1014C0000D2000F079FA0121052000F075FA0121C4
:1014D000042000F071FA0121080000F06DFA0021EB
:1014E000080000F069FA0021052000F043FA00210D
:1014F000012000F03FFA0021080000F03BFA012132
:10150000042000F037FAFEF7CBFF0028FBD00121C2
:101510000D2000F02FFA70BD054A9342CFD801F09C
:101520005BFDC0E7ECFDFF1F44FFFF1FC80000206C
:10153000EE02000010B50368C9B21B68984710BDE1
:1015400010B50368C9B21B68984710BD10B5036891
:10155000C9B21B68984710BD084B10B50400480875
:10156000C01801F05FFE00F097FA054B1B78002BC6
:1015700002D1200001F09EFD10BDC046C0C62D0066
:1015800011FEFF1F10B5080000F0CCFC012010BDBB
:1015900010B5080000F0C6FC012010BD70B50800B1
:1015A0000D0002F0E2F804000100280000F038FD10
:1015B000200070BD10B514000800110000F030FDCF
:1015C000200010BD10B50800110000F08BFE10BD0A
:1015D00010B50800110000F071FE10BD10B500F04C
:1015E000CDFD10BD10B5080000F09AFC431E9841D7
:1015F000C0B210BD10B5080000F068FC431E984151
:10160000C0B210BD10B50800110000F0C5FB10BD40
:1016100010B5080000F014FC10BD10B5080000F073
:1016200099FB10BD10B500F021FB10BD10B51400E2
:10163000054B4808C01801F0F5FD00F02DFA200018
:1016400000F0B2FA10BDC046C0C62D0010B500F0C3
:101650006DFD10BD10B500F027FD10BD10B500F0F8
:101660000FFD10BD10B500F0E7FC10BD10B500F087
:10167000EFFC10BD73B504000A4D2B680093009E6B
:10168000236820005B69984700280ADA01F0A4FC6F
:101690002B68A2680193019B9B1B9342F0D301200E
:1016A000404276BD44FFFF1FF8B507000D0014004F
:1016B0000026002903D10C000BE0A8550136A642F4
:1016C00007D03800FFF7D6FF0028F6DA01233400F0
:1016D0003B732000F8BDFFFF70B50B4D2E68002E48
:1016E00000D10A4E30000A4901F00CFF094C3000CD
:1016F0004C43074901F020FE074B5843201801D501
:10170000064BC018286070BD40FFFF1F24D95B073F
:101710001DF30100A7410000ECF4FFFFFFFFFF7F76
:1017200010B5041E05D0FFF7D7FF210001F000FE21
:101730000C00200010BD10B50400884203DA081A1E
:10174000FFF7EEFF2418200010BD10B5FFF79EFE36
:10175000FFF7F8FD01F040FCFAE7FFFF70B58025C8
:101760008026ED02F6000B4C23682B4201D000F0DE
:101770008BFE2368334201D000F016FD23681B0561
:1017800001D500F009F82368DB04ECD500F004F87B
:10179000E9E7C0463480044010B5FFF7DFFFFFFFE4
:1017A0000022014B1A607047008104407047FFFF20
:1017B0000A49030010B50868002B0BD06A46084C94
:1017C000C3181219934206D301F09AFF0C23036049
:1017D0000120404210BD0B60FCE7C04600FEFF1F29
:1017E00000FEFFFFEFF31380002821D1EFF31083F9
:1017F000002B19D1EFF30582002A16D00F2A0BD93E
:101800001300103B0C499B089B005B1803210A4006
:101810008A401B68D340DBB2EFF31182002A02D06A
:10182000934200D913001800704780235B00F3E750
:1018300001204042F8E7C04600E400E0F8B50600A9
:101840000D00170000243900300001F071FDCAB20C
:1018500013003733DBB2092901D83032D3B222006A
:101860002B55B74202D806000134ECE700212B19B2
:1018700059702B00111BA14201DB2800F8BD19781B
:10188000285D187029550133013CF3E77047FFFFCD
:101890008022224BD20513B51A6080220020120646
:1018A0001A601F4B1F4918601F4B204A19602823DC
:1018B00013601F4A1F4C13601F4A13601F4A1360B6
:1018C0001F4A13601F4A1360092222601E4C2060C9
:1018D0001E4C21601E4C23601E4C23601E4C226057
:1018E0001E4C20601E4801601E490B601E490B60A3
:1018F0001E4B1A6001F0FEFBFFF7C8FF1C4C23686B
:101900000093009B132BFAD901F0CEF896235B00CD
:1019100022680192019A9A42FAD313BD00E100E0D5
:1019200004800340FFBF0000088003400C80034098
:1019300014800340008003401C8003402480034047
:101940002C800340348003400490034008900340FF
:101950000C900340149003400090034004A0034007
:1019600008A003400CA0034014A0034000A00340C3
:1019700044FFFF1F020010B51A280BD80C23534355
:101980000C481A58C018147D037A234205D0002948
:1019900001D0137110BD1372FCE74368002904D015
:1019A000032219680A431A60F4E702211A688A437D
:1019B000F9E7C04604390000030010B51A281BD807
:1019C0000C205843154A141882586368107D247AF5
:1019D000012901D0042910D120431075A222520000
:1019E0001A60253AFF3A042903D119680A431A609C
:1019F00002E019689143196010BDA0431075802260
:101A0000002908D0022902D10422FF32EFE7002288
:101A10000329ECD181225200E9E7C04604390000D5
:101A200072B60B4B19680B4B1A680B4B1B6862B6EE
:101A30005B0102D5322900D90132084B08485B1AF4
:101A40005843FA239B005343800DC0187047C0468B
:101A500018E000E044FFFF1F04ED00E07FBB000042
:101A60005555010070B50400FFF7DAFF0500002CA2
:101A700010D0FA26B600FFF7D3FF401BB04202D2C7
:101A800001F0AAFAF7E7013C002C03D0FA239B00EF
:101A9000ED18F0E770BDFFFF80232C4ADB001168D2
:101AA0000B43136000232A4A13702A4A13702A4AF0
:101AB00013702A4A13702A4A13702A4B1B78152B6D
:101AC0002FD025D8002B28D0032B2CD0264B1B78C9
:101AD000052B35D02AD8012B2DD0042B32D000284D
:101AE00000D10130214BC204D20E1A700022C0B2C4
:101AF00058709A702C32DA70FF231D490A689A4395
:101B0000BF3B134380220B601A4B52011A6070478F
:101B1000192BDBD1184B194A01E0194B194A1A60ED
:101B2000D4E7194BFAE7194B194AF8E7182BD6D125
:101B3000184B194A02E0194BD12292001A60CEE7E5
:101B4000174BF9E79122174BF7E7C0463480044062
:101B500090FFFF1F98FFFF1FE1FFFF1FE8FFFF1F20
:101B6000A0FFFF1F99FFFF1F10FEFF1F00A00640F0
:101B70000CE400E000E100E054D004401304000055
:101B800040A004401303000018C004400490044027
:101B90001302000050D004404404000044A004405C
:101BA0001CC0044008900440132130B5274B9A789C
:101BB0008A43103901400A43410701D510210A43E5
:101BC0009A700F220240042A03D199793C320A43C9
:101BD0009A7110215A798A43084200D00A435A71F7
:101BE00010242025020099792A40A143284200D0E0
:101BF00021439971C10506D5202459781D78C9B2B1
:101C00002C431C7059700021800511D5A0209978B3
:101C100001439970534253410D4A9B180D4A127863
:101C2000052A0FD007D8012A09D0042A0CD0012197
:101C3000094B197030BD182AF9D1084A00E0084A4A
:101C40001360F4E7074AFBE7074AF9E700A00640FC
:101C50004603000010FEFF1F48FFFF1F50D0044046
:101C600044A004401CC0044008900440274B10B519
:101C70001B685B0502D410BD01F0AEF9244B1B7844
:101C8000D9B2002BF8D18022224B52011A60224A8D
:101C9000224BD1701B78152B27D01DD8002B1FD0BD
:101CA000032B24D07F211E4B1B780B40052B29D002
:101CB0001FD8012B21D0042B26D01379D3790022F1
:101CC000184B1A70184B1A70184B1B689342D2D0DD
:101CD000174A12781A71CEE7192BE3D1154B00E0A1
:101CE000154B0421FF311960DCE7144BF9E7144B65
:101CF000F7E7182BE1D1134B00E0134B0421FF3120
:101D00001960DAE7114BF9E7114BF7E7348004402B
:101D1000A0FFFF1F80E100E000A0064099FFFF1F29
:101D200010FEFF1F90FFFF1F98FFFF1F4CFFFF1FBC
:101D300049FFFF1F54D0044040A0044018C0044095
:101D40000490044050D0044044A004401CC004400F
:101D50000890044070B504000B4A1378DDB2002BE4
:101D6000FBD120000121FFF727FE29002000FFF70B
:101D700001FE0C226243054B0549D0589B180860B0
:101D80001B7A04490B7070BDA0FFFF1F04390000CF
:101D90009CFFFF1F9AFFFF1F10B5002901D0802371
:101DA0001843214C237883421AD0204A12685205E6
:101DB00015D57F221340052B1BD012D8012B14D030
:101DC000042B18D06022002900D11C3A7F23034045
:101DD000052B1FD011D8012B16D0042B1FD020703B
:101DE00010BD182BEED1124B00E0124B00221A60EE
:101DF000E8E7114BFAE7114BF8E7182BEFD18023F6
:101E0000DB0013430A4A03E0C0239B001343094A43
:101E10001360E4E7C0239B001343074AF8E78023DD
:101E20009B001343054AF3E710FEFF1F3480044074
:101E300050D0044044A004401CC00440089004401A
:101E4000194A1378834212D01849096849050DD5FB
:101E5000152B14D00CD8002B0ED0032B13D0152823
:101E60001CD012D8002815D0032819D01070704744
:101E7000192BF4D10E4B03E00E490B60EFE70E4B2C
:101E800000211960EBE70D4BFAE71928EED1084B5A
:101E90000B4901E0074B0B491960E7E7064BFAE7EE
:101EA000064B0949F8E7C04699FFFF1F34800440FC
:101EB00054D0044040A0044018C0044004900440A2
:101EC000130400001303000013020000104B8022D3
:101ED0001968D2000B0070B51340114212D00D4C9E
:101EE0001A2811D80C2242430B4B0C4DD1589B1889
:101EF0001B7A216001212B70FFF75EFD23682A7891
:101F00001A720123180070BD00232360FAE7C0464F
:101F1000348004404CFFFF1F0439000049FFFF1FBD
:101F200000207047F0B5334B85B01B6801905B050E
:101F300031D5314B1B68002B02D0304A12781A7110
:101F40002F4B1B78002B0CD072B62E4A9379DBB244
:101F50000393202303990B430393039BDBB29371F9
:101F600062B6294E294F34783B6801349C429B412C
:101F70001C40274D2B78A3420FD06B461B793F2C7A
:101F800031D8244A13550122234BE4B21A701D4B59
:101F9000AB323470DA7005B0F0BDFFF723FC402897
:101FA0001CDC18490B795BB2002BE2DA2B783A681B
:101FB000D8B20133934209D23F2B09D8154AD25CDB
:101FC000D2B2D2B2DBB2CA712B70D2E70023F5E7EE
:101FD000124A3F38126812181278F1E7FF28C8DD5C
:101FE00000F0FAFFC5E721000C4A40391268521888
:101FF0001370C8E7348004409CFFFF1F9AFFFF1F47
:1020000048FFFF1F00A00640E1FFFF1F0CFEFF1F5F
:10201000E8FFFF1FA1FFFF1FA0FFFF1FE4FFFF1F3F
:1020200070B504004518AC4200D170BD2078FFF7B0
:1020300079FF0134F7E7FFFF10B5044B1B78002B45
:1020400000D110BD00F0C8FFF7E7C046A0FFFF1F9A
:10205000084B1978084BC8B21B78DAB2994205D3FD
:10206000064B1B68013B9B18181A7047013A101A5F
:10207000FBE7C046E1FFFF1FE8FFFF1F0CFEFF1F4D
:10208000064B074A19781278CBB2D0B2914201D3ED
:10209000181A7047034A12689B18F9E790FFFF1F50
:1020A00098FFFF1F08FEFF1F30B5184B184D1A7818
:1020B0002B78D4B2D9B29A4225D0164A4B1C12685A
:1020C0009A4215D93F2B15D81349C85CD9B229704B
:1020D0001249C0B20968002909D09C4210D3E31A02
:1020E0000F4A1268934202D80E4B1B780B7230BD18
:1020F0000023E9E70C483F39006841180878E5E714
:102100001219D31AECE701204042F0E790FFFF1FBD
:1021100098FFFF1F08FEFF1F50FFFF1F4CFFFF1F10
:1021200004FEFF1F49FFFF1F94FFFF1F0E4B19788E
:102130000E4B1A78D3B2914212D00D495A1C09683D
:10214000914205D93F2A05D80A4B985CC0B2704726
:102150000022F9E7084A3F3B1268D3181878F5E7E0
:1021600001204042F3E7C04690FFFF1F98FFFF1F8A
:1021700008FEFF1F50FFFF1F94FFFF1F064B074A7B
:102180001B78DBB21370064B1B68002B02D0054A8C
:1021900012781A727047C04698FFFF1F90FFFF1F0A
:1021A0004CFFFF1F49FFFF1F37B5354A13799B06C8
:1021B00013D5344D3448D1792B78006801338342EC
:1021C000804103403148C9B20078984205D03F2B86
:1021D00038D82F48C154DBB22B70D378DCB25BB255
:1021E000002B0CDA13795BB2002B08DA294B2A4852
:1021F0001D780178CBB28D422BD16C23D370402354
:102200001C421ED0117919421BD00021234B19709A
:10221000234B1B688B4202D0224909781972224B4A
:102220001B78002B0BD072B620219379DBB201937F
:10223000019B8B430193019BDBB2937162B62C230C
:10224000D37037BD1C001948403C0068001901706C
:10225000C1E7174D591C2D688D4209D93F2909D86E
:10226000144B5B5CDBB2DBB2C9B2D3710170C6E761
:102270000021F5E7104D3F3B2D68EB181B78F1E787
:1022800000A0064090FFFF1F08FEFF1F98FFFF1FE2
:1022900050FFFF1FE1FFFF1FE8FFFF1FA0FFFF1F11
:1022A0009CFFFF1F9AFFFF1F48FFFF1F94FFFF1FA8
:1022B0000CFEFF1FA1FFFF1FE4FFFF1F064B18606E
:1022C0004023002801D00B004033044A1A31136028
:1022D000034B19607047C04694FFFF1F08FEFF1FA5
:1022E00004FEFF1F044B18604023002801D00B00A0
:1022F0004033024A13607047E4FFFF1F0CFEFF1FCC
:102300007047FFFF0223F0B50A4C0B4E2578C82713
:102310002B43DB00F218506008480278002A00D1F5
:10232000403F09043943F15001235A406B40027089
:102330002370F0BD6C00002000F8FF1F6D0000202E
:10234000431E10B50020032B0ED872B6074A990021
:102350008858002807D044685B008C50044A0488E1
:10236000995A091B995262B610BDC0467C000020E4
:10237000CA000020431E0020032B06D872B6054A6F
:102380009B009B58002B01D162B670475B680130FF
:10239000F8E7C046A4000020F8B572B6042208256C
:1023A0000126154C154B2178294219D0D100CF5860
:1023B000002F0AD15A1808305060114A5A50114A59
:1023C0001378013B137062B6F8BD31001143C900A8
:1023D000CF58002F04D15A18083050600A4AEDE750
:1023E00004320134142ADED162B60022054B1A7081
:1023F00000F0F4FBE8E7C046C83A000000F8FF1F11
:1024000088004000D2000020C8004000421E10B5E5
:10241000032A2BD80223800003431748DB001B1834
:1024200072B6164CA05C032817D800F0F1FE2310FA
:1024300002130520A0540A000832C8205A601A0767
:1024400000D440380A88120402431A600DE00220CA
:102450000833EFE704200833ECE7094892001458EA
:10246000084B002C03D11150995062B610BD9858FA
:102470004160F9E70320DDE700F8FF1FC4000020FA
:10248000A4000020B4000020F0B585B00422C34BA6
:102490001B78DCB213421DD0C14B1B78002B16D029
:1024A000C04A1178CBB2002905D0013BDBB21370D2
:1024B000002B00D100BEBC4A1178CBB2002906D057
:1024C000013BDBB21370002B01D100F031FD04227F
:1024D000B24B1A700822082322401C4200D16CE241
:1024E000B24BB34C1E78F3B23509B608F600002D96
:1024F00000D0F8E1A619336871689B061B0F092B01
:1025000000D1C6E10AD8013B012B00D8A6E1012287
:10251000A84B1A700822A14B1A70B7E70D2BF6D101
:102520000A684868A44BA5491A6001935860A44BF7
:102530003360A44BA44E1D6001230B7091B2256142
:10254000A561B14247D8D023DB00994200D363E1B3
:1025500081235B00994200D1FEE00CD8802900D194
:10256000DDE0822900D1E0E00F22984B1A700122B1
:10257000904B1A70CBE7964B994200D1FCE0A02219
:10258000D20000231C009142EED1019AD5889D42D1
:1025900000D91D002F00402D00D940273900200010
:1025A000FFF7B0FEEE1BBD4201D13F2DDFD9350054
:1025B000E419402E00D9402520002900FFF7A2FE93
:1025C0006419721BAE4201D13F2ED0D97D4B1C60E5
:1025D000804B1A80CBE7804EB142C8D03BD88820D0
:1025E0000001814200D195E090231B019942BBD1AB
:1025F000042580266A4B120CD2B21A70EB00E25806
:10260000324204D0E3185868083800F0E7FA013580
:10261000142DF3D10027714B714E724D0093306829
:1026200000281ED1BB0003936F4BBA003060D0501E
:10263000286800281BD16D4B039A2860D0506C4B42
:102640007A00D052009B18780238032818D800F07E
:10265000DFFD14511451674B994200D1F2E0664AF4
:102660008FE74368029300F0B9FA0298D8E743680D
:10267000029300F0B3FA0298DBE70023009A13708C
:10268000009B01370133043600930435042FC6D173
:1026900000225A4B5A4F5B4D1A703B785A4A2B70A6
:1026A0000435AE180822134215D000F077FAF30073
:1026B000002823D0E21808305060544AE25000F05D
:1026C0006DFA01233343DB0000281DD0E2180830E7
:1026D00050603B4AE250022300223343DB00E250C9
:1026E00003233343DB00E250494B01379D42D4D1F1
:1026F000002350E00122009B1A70C1E73F4AE050DE
:10270000137801331370DAE73C4AE0501378013351
:102710001370E0E7224A3F4C1278227035E700231D
:102720003C4C2370637002332FE77F230340042B5C
:1027300000D919E70021374A9B00117051702349D5
:1027400014005B18022118780B00084200D11CE726
:10275000013B13700B0018E77F230340042B00D9C3
:1027600002E7120C00D0FFE60221184A9B009B18DA
:102770001A788A431A70BBE77F210140042900D9E7
:10278000F2E6130C00D0EFE68A001049521802213D
:102790001078014311701C00F7E6C0468020074006
:1027A000C8000020C9000020F00000209020074051
:1027B00000F8FF1F942007409C0000206D000020BF
:1027C000C80040007000002081060000C0200740C3
:1027D000020300006E00002021200000C400002041
:1027E0007C000020A40000208C000020B400002009
:1027F000CA0000202122000021230000D200002076
:10280000C83A0000C42007403CDFF8BF8800400001
:10281000D420074074000020864B120C80B25C6804
:10282000002C00D1A0E61988914209D15D8885422B
:1028300006D1090A032901D12378A6E61B89A4E65B
:102840000C33ECE780B2002800D051E77A4B120C31
:1028500019687A4BD2B21960794B8BE7794B7A4A77
:102860001888904212D19B88002B0BD1774AC85C04
:10287000D0540133072BFAD11368862B02D10F22D3
:10288000734B1A7000210800FFF73CFD714B336059
:102890003DE6714F3C68002C19D0704B1D880093A9
:1028A0002E00402D00D9402620003100FFF72AFDE0
:1028B000A4192B1C402D00D94023009AEB1A9BB27F
:1028C0001380002B02D13F2D00D81C003C60A022B9
:1028D0005C4BD2001988914200D018E600225A7051
:1028E0009A785F4B45E608220821A4196068013DEB
:1028F0000838EDB21A400B4235D000F06FF9594953
:10290000A8004258584B002A1CD056684650110067
:10291000585D08316160032805D800F079FC020D8C
:102920000F1103215955C821230700D440391388BA
:102930001B040B432360EDE50221F3E70521F1E7DA
:102940000421EFE7595D02290BD000D8E2E501220E
:10295000032906D008221440621E944102345C55BB
:10296000D8E55A55D6E52368190C0B1E018014D002
:102970003E4E42804260AA0097593D49002F13D134
:10298000905188503B4A6D00A95A5B18AB5200F039
:1029900005F900280BD00830606040222307DB17C0
:1029A0001340354A9B18C5E78E587060E9E7334AF3
:1029B0002060137801331370ACE50120044220D06D
:1029C00002232F492C4C0B702E4B2F4D1A702F4B7E
:1029D0001C605D609C602E4CDC600D241A619A6165
:1029E0002C4B1C70FF232C4C23702C4C23701C4C44
:1029F00022702B4A13709F222A4B1A70087005B060
:102A0000F0BD63B2002B05DA0D22224B1A70802331
:102A1000224A13700222144205D01F490B78DBB200
:102A20000B701E4B1A7010231C42E8D01B4A137007
:102A3000E5E7C046743A000044FFFF1FEC000020A9
:102A4000E80000209C00002021200000E000002081
:102A5000C9000020C8004000700000206E00002067
:102A600098200740A4000020C40000207C00002023
:102A70008C000020CA00002088004000D200002006
:102A8000942007406C000020ECFFFF1F00F8FF1FA0
:102A90002C000020C02007408820074080200740ED
:102AA0008C2007408420074010B500F06DFB002209
:102AB00010001A4BD100C850013259184860142A2E
:102AC000F8D180221649D2020C6822430A601549C7
:102AD0001A0AD2B20A7014491A0CD2B20A70134AF6
:102AE0001B0E1370FF23124A12491370124A1370FF
:102AF000124A137001220A701149087011490A70B4
:102B000011490A689A438F3B134380220B600F4B95
:102B100052041A6010220E4B1A7010BD00F8FF1FED
:102B2000348004409C200740B0200740B420074078
:102B3000802007409420074088200740102007404D
:102B4000002107408420074018E400E000E100E095
:102B50000821074010B500F009F910BD10B500F0CC
:102B60008DF810BD10B500F061F810BD10B500F083
:102B7000A3F810BD10B500F0ADF910BD10B500F010
:102B800083F910BD10B50800110000F009F910BD5F
:102B900010B5080000F06EF910BDFFFF70B572B6F9
:102BA0000C4D2C68200000F0B3FC03000B2802DD64
:102BB00062B6002070BD80221206C24094432C6091
:102BC00062B648205843044BC0180023036043609A
:102BD000F0E7C04624FEFF1FC0F9FF1FD8220F4BAD
:102BE00010B5C31A9200934209D20D4A1278002AF6
:102BF00006D00C4A1278002A02D0FFF7CDFB10BD98
:102C000072B64821180000F00DFB80231B06C3405C
:102C1000054C22681343236062B6F0E7C0F9FF1F3A
:102C2000D2000020C800002024FEFF1F70B5114C08
:102C30002368002B0CD020684388C218157A0288BC
:102C400001339A4213D8FFF7C9FF0023236005E040
:102C5000094B1B78002B03D101256D42280070BD64
:102C60000320FFF76DFB20600028E4D1F4E74380E8
:102C7000F4E7C046D4000020C800002010B50C4C7A
:102C80002368002B05D02368002B0DD10120404282
:102C900010BD084B1B78002BF8D00320FFF750FB2A
:102CA00020600028EFD1F1E75A889B18187AEFE7E7
:102CB000D4000020C800002010B5084B9C88084BA9
:102CC0001A68002A03D0138852889B1AE418002C33
:102CD00001D100F081F9200010BDC046CA000020DB
:102CE000D40000200023F7B50D0001900093002DC3
:102CF00001D10098FEBD1B4B1B78002BF9D01A4F59
:102D00003B68002B0BD10320FFF71AFB386000282B
:102D1000EFD00388002B02D1FFF760FFF3E73E6896
:102D200073883488E41AAC4200D92C003100083191
:102D30002200C918019800F00FFD019B32881B1971
:102D40000193009B2D1B1B19009373881B199BB2C9
:102D500073809A42CBD83000FFF740FF00233B60DE
:102D6000C5E7C046C8000020D400002010B50A4BBB
:102D70001B78002B0FD0094C2068002803D0FFF7E8
:102D80002DFF002323600320FFF7DAFA002802D08A
:102D9000FFF724FFF7E710BDC8000020D400002093
:102DA0000123F7B50C002D4D009001912B70002CE4
:102DB00002D101982C700CE0294E3368002B23D1EE
:102DC000284F294B1B78DAB2002B03D12A7001203F
:102DD0004042FEBD0420FFF7CDFA072807D80123A3
:102DE0002B70FFF7DBFE306000280DD12870013F0B
:102DF0001E4B002F02D01A78002A02D001221A702E
:102E0000E5E700F0E9F8DCE70022184B31681A70BA
:102E100040234A889B1AA34200D9230008000830A7
:102E20008018D2184A800022E41A934210D1009AE6
:102E3000D31800934B883F2B06D9402304200B80E6
:102E4000FFF7E4FA002333600522094B1A70AEE75E
:102E5000009FBF5C87540132E7E7C046D9000020DD
:102E6000DC00002009750000C8000020D800002008
:102E7000F000002007B56B46D87107330121180018
:102E8000FFF78EFF0EBDFFFF012370B50E4C0F4DF7
:102E900023702B68002B10D10D4B1B78002B02D117
:102EA0000020207070BD0420FFF764FA0728F7D8CF
:102EB000FFF774FE28600028F2D040202B685B8862
:102EC000C01A00232370EDE7D9000020DC000020A9
:102ED000C8000020F7B5124B1B78002B14D0012638
:102EE000104F114B3C68114D01931E70002C0CD0FB
:102EF00000262E706388210004202380FFF786FAC5
:102F00003E600023019A1370F7BDFFF747FE011ED4
:102F100004D004202C70FFF779FAF2E72E70F0E766
:102F2000C8000020DC000020D9000020F0000020B4
:102F300070B50E4B1B78DDB2002B09D10C4C21680B
:102F4000002906D04B8804200B80FFF75FFA25602C
:102F500070BDFFF723FE011E03D00420FFF756FAD1
:102F6000F6E70122034B1A70F2E7C046D9000020B1
:102F7000DC000020F0000020144970B50B68002B25
:102F80000CD0EFF30583002B08D1EFF3108272B65B
:102F90000868002803D1002A00D162B670BD0C4C2D
:102FA0002578002DF7D10123237043690B60002B96
:102FB00009D09D61002A00D162B60025836845775B
:102FC00098472570EAE703490B60F3E7F400002017
:102FD0000001002004010020F8B51B4D2A78002ACA
:102FE0001FD01A4E3478002C1BD1012333701A42A3
:102FF0000DD0FFF761FE002801D000F0C3F8144A9D
:103000002B781278002A02D0012293432B702B7860
:103010009B0714D4002333702B785B0701D5FFF78F
:10302000ABFFF8BD0B4BA200D7583B6838001B69BB
:103030009847002801D03B6998470134E4B2064B19
:103040001B78A342EED8E5E728FEFF1FF100002021
:10305000703A0000080100201401002010B5EFF3C1
:10306000108172B60B4B186800280FD042691A60A5
:1030700000239A4207D09361002900D162B64377BA
:1030800083689847EBE7044A1360F5E7002900D10D
:1030900062B610BDFC000020F800002010B5FFF75C
:1030A000DDFF10BD024A1368013313607047C0464C
:1030B00044FFFF1F0C4970B500220D000B4C237814
:1030C000934209D15A1C9B00E85002232270084AFF
:1030D00011780B43137070BD04310E1F36688642A1
:1030E000F9D00132D2B2EBE7080100201401002030
:1030F00028FEFF1F1B4B1C4A19781C4B082915D1B1
:103100000021116013221A60194B1A78194B002AFA
:1031100018D000221A60184B1A78184B012A13D8BD
:1031200080221A600122164B1A7070470A2901D1B9
:103130002E31E6E70C2903D1283111601222E2E793
:103140003C21FAE70122E5E7042A01D88422E8E7D6
:10315000082A01D88522E4E7102A01D88622E0E770
:103160008722DEE729FEFF1F08B003400CB00340B2
:103170001501002020B003402AFEFF1F24B00340A9
:10318000160100207047FFFF1FB572B67023412162
:10319000144A1370144B1970144B32391970802370
:1031A000137013785BB2002BFBDA114B186862B610
:1031B000104B984201D80A23584301AC0A2221003F
:1031C000FEF73CFB00220C49A05C130001320028F2
:1031D00004D05300C8520A2AF6D1130001335B0011
:1031E0000B701FBD000002400700024006000240B5
:1031F000080002407F969800B2FEFF1F02B471469D
:1032000049084900095649008E4402BC7047C0462F
:1032100002B4714649084900095C49008E4402BC69
:103220007047C046002243088B4274D303098B4287
:103230005FD3030A8B4244D3030B8B4228D3030C86
:103240008B420DD3FF22090212BA030C8B4202D328
:103250001212090265D0030B8B4219D300E0090A50
:10326000C30B8B4201D3CB03C01A5241830B8B4259
:1032700001D38B03C01A5241430B8B4201D34B0342
:10328000C01A5241030B8B4201D30B03C01A5241A7
:10329000C30A8B4201D3CB02C01A5241830A8B422C
:1032A00001D38B02C01A5241430A8B4201D34B0215
:1032B000C01A5241030A8B4201D30B02C01A524179
:1032C000CDD2C3098B4201D3CB01C01A524183092D
:1032D0008B4201D38B01C01A524143098B4201D367
:1032E0004B01C01A524103098B4201D30B01C01A92
:1032F0005241C3088B4201D3CB00C01A524183080C
:103300008B4201D38B00C01A524143088B4201D338
:103310004B00C01A5241411A00D201465241104698
:103320007047FFE701B5002000F0F0F802BDC0468D
:103330000029F7D076E7704703460B437FD400227D
:1033400043088B4274D303098B425FD3030A8B4239
:1033500044D3030B8B4228D3030C8B420DD3FF22A3
:10336000090212BA030C8B4202D31212090265D071
:10337000030B8B4219D300E0090AC30B8B4201D324
:10338000CB03C01A5241830B8B4201D38B03C01A6B
:103390005241430B8B4201D34B03C01A5241030BE2
:1033A0008B4201D30B03C01A5241C30A8B4201D393
:1033B000CB02C01A5241830A8B4201D38B02C01A3E
:1033C0005241430A8B4201D34B02C01A5241030AB5
:1033D0008B4201D30B02C01A5241CDD2C3098B429A
:1033E00001D3CB01C01A524183098B4201D38B0117
:1033F000C01A524143098B4201D34B01C01A5241BA
:1034000003098B4201D30B01C01A5241C3088B42FE
:1034100001D3CB00C01A524183088B4201D38B00E9
:10342000C01A524143088B4201D34B00C01A52418B
:10343000411A00D201465241104670475DE0CA0F62
:1034400000D04942031000D34042534000229C4622
:1034500003098B422DD3030A8B4212D3FC2289012C
:1034600012BA030A8B420CD3890192118B4208D302
:10347000890192118B4204D389013AD0921100E064
:103480008909C3098B4201D3CB01C01A5241830978
:103490008B4201D38B01C01A524143098B4201D3A5
:1034A0004B01C01A524103098B4201D30B01C01AD0
:1034B0005241C3088B4201D3CB00C01A524183084A
:1034C0008B4201D38B00C01A5241D9D243088B42A0
:1034D00001D34B00C01A5241411A00D20146634643
:1034E00052415B10104601D34042002B00D54942A7
:1034F000704763465B1000D3404201B5002000F0E6
:1035000005F802BD0029F8D016E770477047C0469D
:103510001C2101231B04984201D3000C10391B0A03
:10352000984201D3000A08391B09984201D30009C7
:10353000043902A2105C40187047C046040302021E
:1035400001010101000000000000000010B5034B64
:103550000100186800F030F810BDC04614FFFF1FCE
:1035600010B5034B0100186800F006F910BDC04605
:1035700014FFFF1F70B50F4E0D00316804000029C5
:1035800002D100F0ABF830602900200000F0A6F86E
:10359000431C0AD00323C51C9D43A84207D0291A07
:1035A000200000F09BF8013001D101256D42280078
:1035B00070BDC0461C010020F7B50322CB1C93430D
:1035C000083306001F000C2B34D20C27B94233D825
:1035D000300000F06BF8344D2B681C00002C30D10B
:1035E00039003000FFF7C6FF0400431C59D12C6896
:1035F0002500002D4CD1002C4DD023682900E31864
:103600003000019300F06AF8019B834243D12368A4
:103610000337FF1A03239F4308370C2F00D20C27D0
:1036200039003000FFF7A6FF013034D02368DB19E2
:10363000236013E0002BC9DA0C2300253360280037
:10364000FEBD2168C91B20D40B2917D9E2192760B8
:10365000A34211D12A6063681160536030002500D5
:1036600000F02CF807220B35231D9543EA1A9D42E2
:10367000E5D05B1BA350E2E75A60ECE76268A34227
:1036800001D12A60EAE75A60E8E723006468A5E709
:103690002C006D68ADE70C233000336000F00EF8AD
:1036A000CDE72760DAE7C0461801002010B50248D0
:1036B00000F050F810BDC0465C02002010B5024872
:1036C00000F049F810BDC0465C02002003008218DB
:1036D000934200D1704719700133F9E7002370B5A8
:1036E000064D040008002B60FEF762F8431C03D16E
:1036F0002B68002B00D0236070BDC046580200200C
:10370000014B18687047C04614FFFF1F70B50026B4
:103710000C4C0D4D641BA410A64209D1002600F0EC
:10372000D5F90A4C0A4D641BA410A64205D170BD00
:10373000B300EB5898470136EEE7B300EB589847D3
:103740000136F2E7D83A0000D83A0000DC3A00002F
:10375000D83A000070477047002310B59A4200D154
:1037600010BDCC5CC4540133F8E70023C25C0133C4
:10377000002AFBD1581E704770B50500002910D0F3
:103780000C1F2368002B00DAE4182800FFF78EFFD7
:103790001D4A1368002B05D1636014602800FFF7F1
:1037A0008DFF70BDA34208D9206821188B42F3D148
:1037B00019685B6809182160EEE71A005B68002B46
:1037C00001D0A342F9D911685018A0420BD120684A
:1037D0000918501811608342E0D118685B684118DD
:1037E00011605360DAE7A04202D90C232B60D5E7C1
:1037F000206821188B4203D119685B680918216081
:1038000063605460CAE7C046180100207701080FC2
:1038100001010077E2FE0F01030077E2FE0F0108CD
:103820000077E2FE0F01090077E2FE0F0104006558
:1038300000000000006900000000007700FC0F019C
:10384000010077E2FE0F0100007703080F0100007E
:103850007704080F0200FC000000007700080F0842
:10386000000000000004007700080F0803000000BB
:1038700000FC0200007700080F08040000000000B0
:103880000100007700FC0F00007700FD0F00000032
:1038900000FC000200750000000000FF00000000B6
:1038A0000000000091150000B51500006D16000025
:1038B000651600005D160000551600004D1600004C
:1038C000591500002D160000251600001B160000DB
:1038D0001116000005160000F5150000E5150000A2
:1038E000DD150000D1150000C515000035150000DC
:1038F000411500004D150000E90400009D15000071
:1039000085150000420000F840A0044001000000BE
:10391000420000F844A0044002000000C00000F88B
:1039200000C0044001000000000000F804900440C2
:1039300002000000000000F80890044004000000AD
:10394000C00000F81CC0044080000000C00000F867
:1039500010C0044010000000C00000F808C004407F
:1039600004000000C00000F80CC004400800000083
:10397000800000F80CB0044008000000800000F84F
:1039800010B0044010000000800000F818B004409F
:1039900040000000800000F81CB0044080000000DF
:1039A000800000F814B0044020000000C00000F8BF
:1039B00004C0044002000000800000F800B0044091
:1039C00001000000400000F800A0044001000000D9
:1039D000400000F804A0044002000000400000F88D
:1039E0000CA0044008000000400000F808A00440BB
:1039F00004000000C00000F814C0044020000000D3
:103A0000C00000F818C0044040000000800000F82A
:103A100004B0044002000000800000F808B0044038
:103A200004000000020100F850D004401000000023
:103A3000020100F854D0044020000000030100F807
:103A400078D00440400000000000000000000000AA
:103A5000912B0000852B00007D2B0000752B0000B2
:103A60006D2B0000652B00005D2B0000552B000026
:103A700000FFFFFF000100006EFEFF1F12000000AC
:103A8000000200002BFEFF1F4300000000030000A7
:103A900080FEFF1F000000000103090484FEFF1FD9
:103AA00000000000020309049CFEFF1F000000004C
:103AB00003030904B2FEFF1F000000000000000025
:103AC000000000000000000000151915F8B5C04600
:0C3AD000F8BC08BC9E467047390400009A
:043ADC00F8B5C04633
:103AE000E00704EC00FB0F00FBC013BFE607C0BFFC
:103AF000EC07C0BFEE07CFEB07ECF5EA07FCB2FF1F
:103B00000E72FCB2FF0E76FCB2FF0E77FCB2FF0E17
:103B10009EFDFCB2FF0E73624C69DD6D4C77DD1DBE
:103B20004C72DD294C65DD324C75DD62FCA1FF0E67
:103B3000D5EA07DFC8AFE60712ECEB070FFCB2FFD0
:103B40000E119BA793DFF6FE4C00EEE3FF118BFCFA
:103B5000A1FF0EA793DFF6EED6FF61FFFCF8FF0E84
:103B60008F02084C0FDD0B624CFFDF11FCC4080F05
:103B7000EFF5624CFFDF06FC04F00EEFF5C361CFFA
:103B8000C262FCA1FF0EEEA7FFE5EA07EF03E5EA3C
:103B900007FE0200EF9A5100FCA1FF0ED7FFFFFFC6
:103BA000FFFFFFFFFFFFFFFFFFFF0000A438000043
:103BB00000000000E80300000000000001230000F6
:103BC000600200201A0000004000000040000000D9
:103BD00001010000503A000000000000E80300006E
:103BE00000000000FFFFFFFF010A0409024300027A
:103BF0000100C03209040000010202010005240096
:103C00001001052401010104240206052406000117
:103C10000705820310004009040100020A000000A9
:103C2000070503024000000705840240000012015E
:103C3000100102000040C016830473020102030158
:103C40000403090418035400650065006E00730046
:103C500079006400750069006E006F00160355005E
:103C600053004200200053006500720069006100AB
:103C70006C000C03000000000000000000000000C9
:103C800000000000000000000000000020010020F3
:103C900088010020F001002000000000000000006A
:103CA0000000000000000000000000000000000014
:103CB0000000000000000000000000000000000004
:103CC00000000000000000000000000000000000F4
:083CD00000000000C8FEFF1F08
:00000001FF
================================================
FILE: assets/hw/syscon_reader/syscon_reader.hex
================================================
:100000000C945D000C9485000C9485000C94850084
:100010000C9485000C9485000C9485000C9485004C
:100020000C9485000C9485000C9485000C9485003C
:100030000C9485000C9485000C9485000C9485002C
:100040000C9414030C9485000C94E2020C94BC02F2
:100050000C9485000C9485000C9485000C9485000C
:100060000C9485000C9485000000000024002700FB
:100070002A0000000000250028002B0004040404CE
:100080000404040402020202020203030303030342
:10009000010204081020408001020408102001021F
:1000A00004081020000000080002010000030407FB
:1000B00000000000000000005F0511241FBECFEF0C
:1000C000D8E0DEBFCDBF11E0A0E0B1E0E6E3FDE0A7
:1000D00002C005900D92A034B107D9F721E0A0E449
:1000E000B1E001C01D92A83EB207E1F710E0CDE5F6
:1000F000D0E004C02197FE010E949306CC35D107C1
:10010000C9F70E945E030C9499060C940000EBE47E
:10011000F1E0A089B18982E08C93A485B5851C9219
:10012000A685B78580E18C93108EA489B58986E079
:100130008C93A289B3898C9180618C93A289B389B5
:100140008C9188608C93A289B3898C9180688C9300
:100150000288F389E02D80818F7D80830895AF929E
:10016000BF92CF92DF92EF92FF920F931F93CF93A4
:10017000DF936C017B018B01040F151FEB015E0106
:10018000AE18BF08C017D10759F06991D601ED919B
:10019000FC910190F081E02DC6010995892B79F73A
:1001A000C501DF91CF911F910F91FF90EF90DF90EC
:1001B000CF90BF90AF900895FC01538D448D252FB3
:1001C00030E0842F90E0821B930B541710F0CF96F1
:1001D000089501970895FC01918D828D981761F023
:1001E000A28DAE0FBF2FB11D5D968C91928D9F5F3A
:1001F0009F73928F90E008958FEF9FEF0895FC0119
:10020000918D828D981731F0828DE80FF11D858DCB
:1002100090E008958FEF9FEF0895FC01918D228D5E
:10022000892F90E0805C9F4F821B91098F739927E3
:1002300008958BE491E00E940D0121E0892B09F4DF
:1002400020E0822F089580E090E0892B29F00E9421
:10025000190181110C9400000895FC01A48DA80FD0
:10026000B92FB11DA35ABF4F2C91848D90E00196F8
:100270008F739927848FA689B7892C93A089B18918
:100280008C91837080648C93938D848D981306C0B9
:100290000288F389E02D80818F7D80830895EF921D
:1002A000FF920F931F93CF93DF93EC0181E0888F30
:1002B0009B8D8C8D98131AC0E889F989808185FF00
:1002C00015C09FB7F894EE89FF896083E889F989A2
:1002D00080818370806480839FBF81E090E0DF91A4
:1002E000CF911F910F91FF90EF900895F62E0B8DF7
:1002F00010E00F5F1F4F0F731127E02E8C8D8E11B2
:100300000CC00FB607FCFACFE889F989808185FF18
:10031000F5CFCE010E942D01F1CFEB8DEC0FFD2F1B
:10032000F11DE35AFF4FF0829FB7F8940B8FEA89D3
:10033000FB8980818062CFCFCF93DF93EC01888DE2
:100340008823B9F0AA89BB89E889F9898C9185FD50
:1003500003C0808186FD0DC00FB607FCF7CF8C91DE
:1003600085FFF2CF808185FFEDCFCE010E942D0168
:10037000E9CFDF91CF9108958BE491E00E949C0139
:10038000EBE4F1E0A289B3898C918F7E8C93A289F2
:10039000B3898C91877F8C93A289B3898C918F7755
:1003A0008C93A289B3898C918F7D8C93828D818F60
:1003B000089590E0FC01EC55FF4F2491FC01E057BB
:1003C000FF4F3491FC01E458FF4FE491EE23C9F054
:1003D000222339F0233001F1A8F4213019F1223021
:1003E00029F1F0E0EE0FFF1FEE58FF4FA591B491F9
:1003F0008FB7F894EC91611126C030953E233C9361
:100400008FBF08952730A9F02830C9F0243049F76C
:10041000809180008F7D03C0809180008F778093D2
:100420008000DFCF84B58F7784BDDBCF84B58F7D2F
:10043000FBCF8091B0008F778093B000D2CF8091B6
:10044000B0008F7DF9CF3E2BDACFCF93DF9390E0D2
:10045000FC01E057FF4F249184589F4FFC01849189
:100460008823D1F090E0880F991FFC01E859FF4FD5
:10047000A591B491FC01EE58FF4FC591D491611143
:100480000EC09FB7F8948C91E22FE0958E238C9349
:100490002881E223E8839FBFDF91CF9108958FB732
:1004A000F894EC91E22BEC938FBFF6CF3FB7F89422
:1004B0008091410190914201A0914301B09144018A
:1004C00026B5A89B05C02F3F19F00196A11DB11DAF
:1004D0003FBFBA2FA92F982F8827BC01CD01620FEB
:1004E000711D811D911D42E0660F771F881F991FA6
:1004F0004A95D1F708958F929F92AF92BF92CF9273
:10050000DF92EF92FF924B015C010E9456026B0159
:100510007C010E9456026C197D098E099F09683E74
:10052000734081059105A8F321E0821A9108A10882
:10053000B10888EEC80E83E0D81EE11CF11C8114BE
:100540009104A104B10429F7FF90EF90DF90CF90C0
:10055000BF90AF909F908F90089590914A01980F0F
:1005600090934A01682F8BE491E00E944F018BE841
:1005700091E00197F1F708951F920F920FB60F9235
:1005800011242F933F934F935F936F937F938F9398
:100590009F93AF93BF93EF93FF938BE491E00E94FF
:1005A0002D01FF91EF91BF91AF919F918F917F911D
:1005B0006F915F914F913F912F910F900FBE0F90D0
:1005C0001F9018951F920F920FB60F9211242F9320
:1005D0008F939F93EF93FF93E0915B01F0915C0108
:1005E0008081E0916101F091620182FD1BC09081E8
:1005F000809164018F5F8F7320916501821741F0B4
:10060000E0916401F0E0E55BFE4F958F809364011B
:10061000FF91EF919F918F912F910F900FBE0F90AF
:100620001F9018958081F4CF1F920F920FB60F92F2
:1006300011242F933F938F939F93AF93BF938091F8
:10064000450190914601A0914701B0914801309138
:10065000400123E0230F2D3758F50196A11DB11D50
:10066000209340018093450190934601A093470158
:10067000B09348018091410190914201A0914301C2
:10068000B09144010196A11DB11D80934101909349
:100690004201A0934301B0934401BF91AF919F9158
:1006A0008F913F912F910F900FBE0F901F90189533
:1006B00026E8230F0296A11DB11DD2CFCF93DF9361
:1006C00000D000D000D01F92CDB7DEB7789484B5AB
:1006D000826084BD84B5816084BD85B5826085BD3E
:1006E00085B5816085BD80916E00816080936E00CC
:1006F00010928100809181008260809381008091BE
:10070000810081608093810080918000816080936E
:1007100080008091B10084608093B1008091B0002E
:1007200081608093B00080917A00846080937A0029
:1007300080917A00826080937A0080917A00816053
:1007400080937A0080917A00806880937A0010927A
:10075000C1000E94870061E08DE00E94250261E0F7
:1007600082E00E94250261E084E00E94250261E0AF
:1007700081E00E94250260E080E00E94250260E0A6
:1007800082E00E94D90160E081E00E94D90160E02E
:1007900080E00E94D90161E084E00E94D901CE018D
:1007A00001969F838E8344E6442E512C612C712C3C
:1007B0001E0196E0290E311CEE81FF8125E0119289
:1007C0002A95E9F70E94D80520E737E140E050E09C
:1007D0000E9430066B017C01E0EDCE0EE7E0DE1EEC
:1007E000E11CF11C0E94D80527E030E040E050E019
:1007F0000E9430064B015C01FFEF8F1A9F0AAF0A7F
:10080000BF0A60E082E00E94D9018BE990E0019785
:10081000F1F70E94BC0165E070E080E090E00E948A
:100820007B0261E082E00E94D90165E070E080E037
:1008300090E00E947B020E94870040924F015092FC
:100840005001609251017092520161E070E080E0CD
:1008500090E00E947B0285EC0E94AD0281E00E9444
:10086000AD0210924A0183E00E94AD028AE90E9423
:10087000AD0280E00E94AD0284E10E94AD02809151
:100880004A01819580934A010E94AD028BE491E078
:100890000E940D01181619062CF48BE491E00E94B9
:1008A000EB00F4CF83E00E94AD028BE491E00E9464
:1008B000EB008E010F5F1F4F2FB7F8948091450119
:1008C00090914601A0914701B09148012FBF8093BC
:1008D000530190935401A0935501B09356018BE4BA
:1008E00091E00E94EB0097FFE2C02FB7F89480914F
:1008F000450190914601A0914701B09148012FBF59
:1009000040915301509154016091550170915601ED
:10091000841B950BA60BB70B40914F0150915001D2
:10092000609151017091520184179507A607B7078E
:10093000B0F28B81863009F454C08031A1F08EEE84
:100940000E94AD0201E010914901612F8DE00E94EB
:10095000D90110271093490164EF71E080E090E025
:100960000E947B02F0CF22E0C216D10440F0C60103
:10097000880F991F880F991F05970197F1F75C98C9
:1009800082E08816910440F0C401880F991F880FF7
:10099000991F05970197F1F75C9A8BE491E00E940B
:1009A0000D01181619062CF48BE491E00E94EB005F
:1009B000F4CF08EE13E00150110909F4FDCE8BE4E9
:1009C00091E00E940D01181619062CF08FE090E0BE
:1009D0000197F1F7F0CF8BE491E00E94EB008230B9
:1009E000A9F765E070E080E090E00E947B0281E979
:1009F0000E94AD0261E070E080E090E00E947B0226
:100A000010924A018AE30E94AD028EE40E94AD0278
:100A10008FE60E94AD0284E70E94AD028AE30E9445
:100A2000AD0285E50E94AD0283E70E94AD0285E636
:100A30000E94AD0284E60E94AD028AE30E94AD02EC
:100A400080914A01815080934A010E94AD0261E089
:100A500070E080E090E00E947B0283E90E94AD029A
:100A600061E070E080E090E00E947B0206E111E02E
:100A70008FE3E82E81E0F82EE016F10631F0F80160
:100A800081918F010E94AD02F7CF61E070E080E0BC
:100A900090E00E947B0264E98BE491E00E944F01A8
:100AA00060E081E00E9425020E94BC014BCFF8016A
:100AB00081938F012E163F0609F0FECE3ACFEBE46C
:100AC000F1E01382128288EE93E0A0E0B0E084832C
:100AD0009583A683B78388E091E09183808385EC3A
:100AE00090E09587848784EC90E09787868780ECF8
:100AF00090E0918B808B81EC90E0938B828B82ECE9
:100B000090E0958B848B86EC90E0978B868B118E92
:100B1000128E138E148E08958F929F92AF92BF9271
:100B2000CF92DF92EF92FF92CF93DF93EC01688137
:100B300079818A819B81611571058105910521F477
:100B400064E279ED8BE597E02DE133EF41E050E091
:100B50000E94300649015A019B01AC01A7EAB1E4A9
:100B60000E944F066B017C01ACEEB4EFA50194012D
:100B70000E945D06C60ED71EE81EF91EF7FE06C0CF
:100B800081E0C81AD108E10880E8F80AC882D98251
:100B9000EA82FB82C701B6019F77DF91CF91FF9078
:100BA000EF90DF90CF90BF90AF909F908F9008957F
:100BB0008F929F92AF92BF92CF92DF92EF92FF926D
:100BC00060910001709101018091020190910301F7
:100BD000611571058105910521F464E279ED8BE5DC
:100BE00097E02DE133EF41E050E00E9430064901EB
:100BF0005A019B01AC01A7EAB1E40E944F066B01C8
:100C00007C01ACEEB4EFA50194010E945D06C60E16
:100C1000D71EE81EF91EF7FE06C081E0C81AD108EB
:100C2000E10880E8F80AC0920001D0920101E09248
:100C30000201F0920301C701B6019F77FF90EF9088
:100C4000DF90CF90BF90AF909F908F90089560936A
:100C500000017093010180930201909303010895B4
:100C6000052E97FB1EF400940E94470657FD07D0FF
:100C70000E94620607FC03D04EF40C944706509580
:100C80004095309521953F4F4F4F5F4F0895909578
:100C90008095709561957F4F8F4F9F4F08950E946B
:100CA0008406A59F900DB49F900DA49F800D911D6B
:100CB00011240895B7FF0C944F060E944F06821B23
:100CC000930B0895A1E21A2EAA1BBB1BFD010DC0B8
:100CD000AA1FBB1FEE1FFF1FA217B307E407F507EC
:100CE00020F0A21BB30BE40BF50B661F771F881FC8
:100CF000991F1A9469F760957095809590959B015E
:100D0000AC01BD01CF010895A29FB001B39FC00106
:100D1000A39F700D811D1124911DB29F700D811D27
:100D20001124911D0895EE0FFF1F0590F491E02D01
:060D30000994F894FFCFC6
:100D360001000000000000004F01AF00DC009C0134
:100D46000D01EB00FF00E007264100340000001112
:100D560089FCA1FF0EA515440000DFF3EF04550042
:100D660000008EFD815C0F9EFD71009000EFE0009B
:107800000C94343C0C94513C0C94513C0C94513CE1
:107810000C94513C0C94513C0C94513C0C94513CB4
:107820000C94513C0C94513C0C94513C0C94513CA4
:107830000C94513C0C94513C0C94513C0C94513C94
:107840000C94513C0C94513C0C94513C0C94513C84
:107850000C94513C0C94513C0C94513C0C94513C74
:107860000C94513C0C94513C11241FBECFEFD8E036
:10787000DEBFCDBF11E0A0E0B1E0ECE9FFE702C060
:1078800005900D92A230B107D9F712E0A2E0B1E065
:1078900001C01D92AD30B107E1F70E942D3D0C945F
:1078A000CC3F0C94003C982F959595959595959582
:1078B000905D8F708A307CF0282F295A8091C0000B
:1078C00085FFFCCF9093C6008091C00085FFFCCF60
:1078D0002093C6000895282F205DF0CF982F809127
:1078E000C00085FFFCCF9093C6000895EF92FF92F1
:1078F0000F931F93EE24FF2487018091C00087FD22
:1079000017C00894E11CF11C011D111D81E4E8164B
:1079100082E4F8068FE0080780E0180770F3E09132
:107920000401F091050109958091C00087FFE9CF1E
:107930008091C6001F910F91FF90EF9008950E94D3
:10794000763C982F8091C00085FFFCCF9093C600B5
:1079500091362CF490330CF09053892F089597555D
:10796000892F08951F930E949F3C182F0E949F3CCF
:107970001295107F810F1F9108951F93182F882350
:1079800021F00E94763C1150E1F71F9108951F935A
:10799000182F0E94763C803249F0809103018F5F5E
:1079A000809303018530C1F01F9108958091C0003C
:1079B00085FFFCCF84E18093C6008091C00085FFE5
:1079C000FCCF1093C6008091C00085FFFCCF80E102
:1079D0008093C6001F910895E0910401F091050184
:1079E00009951F9108950E94763C803241F0809164
:1079F00003018F5F80930301853081F008958091AA
:107A0000C00085FFFCCF84E18093C6008091C00058
:107A100085FFFCCF80E18093C6000895E0910401CA
:107A2000F09105010995089540E951E08823A1F0FE
:107A30002D9A28EE33E0FA013197F1F721503040CA
:107A4000D1F72D9828EE33E0FA013197F1F7215064
:107A50003040D1F7815061F708953F924F925F9285
:107A60006F927F928F929F92AF92BF92CF92DF924E
:107A7000EF92FF920F931F93CF93DF93000080E16B
:107A80008093C4001092C50088E18093C10086E015
:107A90008093C2005098589A259A81E00E94143D24
:107AA00024E1F22E9EE1E92E85E9D82E0FE0C02ECA
:107AB00010E1B12EAA24A394B1E49B2EA6E58A2E50
:107AC000F2E57F2EE0E26E2E79E4572E63E5462E36
:107AD00050E5352E0E94763C8033B1F18133B9F107
:107AE000803409F46FC0813409F476C0823409F41B
:107AF00085C0853409F488C0803531F1823521F1A3
:107B0000813511F1853509F485C0863509F48DC0BC
:107B1000843609F496C0843709F403C1853709F423
:107B200072C1863709F466C0809103018F5F80932C
:107B30000301853079F6E0910401F0910501099582
:107B40000E94763C803351F60E94F33CC3CF0E94E2
:107B5000763C803249F78091C00085FFFCCFF092DF
:107B6000C6008091C00085FFFCCF9092C600809136
:107B7000C00085FFFCCF8092C6008091C00085FFC9
:107B8000FCCF7092C6008091C00085FFFCCF609250
:107B9000C6008091C00085FFFCCF5092C600809146
:107BA000C00085FFFCCF4092C6008091C00085FFD9
:107BB000FCCF3092C6008091C00085FFFCCFB09210
:107BC000C60088CF0E94763C863808F4BDCF0E945C
:107BD000763C0E94F33C7ECF0E94763C803809F4CC
:107BE0009CC0813809F40BC1823809F43CC1883942
:107BF00009F48FC080E00E94C73C6CCF84E10E94F2
:107C0000BD3C0E94F33C66CF85E00E94BD3C0E94D3
:107C1000F33C60CF0E94763C809306010E94763C44
:107C2000809307010E94F33C55CF0E94763C80333D
:107C300009F41DC183E00E94BD3C80E00E94C73C66
:107C400049CF0E94763C809309020E94763C809343
:107C5000080280910C028E7F80930C020E94763C79
:107C6000853409F415C18091080290910902892B8D
:107C700089F000E010E00E94763CF801E85FFE4FDA
:107C800080830F5F1F4F80910802909109020817AF
:107C9000190788F30E94763C803209F045CF809125
:107CA0000C0280FF01C16091060170910701660F0F
:107CB000771F7093070160930601A0910802B091AD
:107CC00009021097C9F0E8E0F1E09B01AD014E0F09
:107CD0005F1FF999FECF32BD21BD819180BDFA9A17
:107CE000F99A2F5F3F4FE417F50799F76A0F7B1F4B
:107CF00070930701609306018091C00085FFFCCF5F
:107D0000F092C6008091C00085FFFCCFB092C60003
:107D1000E1CE83E00E94C73CDDCE82E00E94C73CFA
:107D2000D9CE0E94763C809309020E94763C8093D3
:107D300008028091060190910701880F991F909386
:107D40000701809306010E94763C853409F4A6C0A1
:107D500080910C028E7F80930C020E94763C8032D0
:107D600009F0B8CE8091C00085FFFCCFF092C6002C
:107D7000609108027091090261157105B9F140E046
:107D800050E080910C02A82FA170B82FB27011C0E2
:107D9000BB2309F45CC0E0910601F0910701319624
:107DA000F0930701E09306014F5F5F4F46175707B7
:107DB000E8F4AA2369F3F999FECF209106013091E6
:107DC000070132BD21BDF89A90B58091C00085FFB2
:107DD000FCCF9093C6002F5F3F4F30930701209355
:107DE00006014F5F5F4F4617570718F38091C00099
:107DF00085FDE5CE8091C00085FFF8CFE0CE81E023
:107E00000E94C73C67CE0E94763C803209F08CCE3F
:107E10008091C00085FFFCCFF092C6008091C00029
:107E200085FFFCCFE092C6008091C00085FFFCCFAB
:107E3000D092C6008091C00085FFFCCFC092C600E2
:107E40008091C00085FFFCCFB092C60043CEE09188
:107E50000601F091070194918091C00085FFFCCF4D
:107E60009093C6009CCF80E10E94C73C33CE0E9415
:107E7000763C0E94763C182F0E94763C112309F430
:107E800083C0113009F484C08FE00E94C73C22CE29
:107E900080910C02816080930C02E5CE80910C02EF
:107EA000816080930C0259CF809107018823880F4D
:107EB000880B8A2180930B02809106019091070123
:107EC000880F991F90930701809306018091080203
:107ED00080FF09C080910802909109020196909359
:107EE000090280930802F894F999FECF1127E091D6
:107EF0000601F0910701C8E0D1E08091080290915D
:107F00000902103091F40091570001700130D9F34B
:107F100003E000935700E89500915700017001308D
:107F2000D9F301E100935700E89509901990009169
:107F3000570001700130D9F301E000935700E89534
:107F40001395103498F011270091570001700130FB
:107F5000D9F305E000935700E895009157000170B0
:107F60000130D9F301E100935700E895329602976A
:107F700009F0C7CF103011F00296E5CF112480919F
:107F8000C00085FFB9CEBCCE8EE10E94C73CA2CD19
:0C7F900085E90E94C73C9ECDF894FFCF0D
:027F9C00800063
:040000030000780081
:00000001FF
================================================
FILE: assets/hw/syscon_reader/syscon_reader.ino
================================================
// Syscon glitcher (reader) by DarkNESmonk (https://t.me/darknesmonk)
// For A0X-C0LX only (Renesas RL78/G13)
#define ledPin 13 // LED
#define reset_pin 2 // D2
#define glitch_pin 4 // D4 PIN = PORTD B11101111 ( faster method )
#define VDD_OFF PORTD = PORTD & B11101111
#define VDD_ON PORTD = PORTD | B00010000
#define TX 1 // D1
#define RX 0 // D0
#define OCD_CONNECT_CMD 0x91
#define OCD_READ_CMD 0x92
#define OCD_WRITE_CMD 0x93
#define OCD_EXEC_CMD 0x94
#define BAUD_SET_CMD 0x9a
#define SOH 1
#define STX 2
#define ETX 3
#define CHKS 1
#define CHKS_A 2
#define CHKS_OCD 3
#define FSL_ERR_PROTECTION 0x10
struct ST_FRAME {
byte stx;
byte LEN;
byte DATA1;
byte SUM;
byte etx;
};
uint8_t shellcode[] = {
0xe0, 0x07, 0x26,
0x41, 0x00, 0x34, 0x00, 0x00, 0x00, 0x11, 0x89, 0xFC, 0xA1, 0xFF, 0x0E, 0xA5, 0x15, 0x44,
0x00, 0x00, 0xDF, 0xF3, 0xEF, 0x04, 0x55, 0x00, 0x00, 0x00, 0x8E, 0xFD, 0x81, 0x5C, 0x0F,
0x9E, 0xFD, 0x71, 0x00, 0x90, 0x00, 0xEF, 0xE0
};
uint8_t csum = 0;
bool ledState = 0;
void w(char b)
{
csum += b;
Serial.write(b);
delayMicroseconds(100);
}
char gsum(char t)
{
if (t == CHKS) csum = 0;
if (t == CHKS_A) { csum ^= 0xff; csum += 1; }
if (t == CHKS_OCD) csum -= 1;
return csum;
}
void setup(void)
{
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
pinMode(reset_pin, OUTPUT);
pinMode(glitch_pin, OUTPUT);
pinMode(TX, OUTPUT);
pinMode(RX, INPUT);
digitalWrite(reset_pin, LOW);
digitalWrite(TX, LOW);
digitalWrite(RX, LOW);
digitalWrite(glitch_pin, HIGH);
}
void loop(void)
{
while (1)
{
int random_pos, random_delay;
ST_FRAME STF1 = {0};
byte a;
random_pos = random(2000, 8000);
random_delay = random(1, 8);
digitalWrite(reset_pin, LOW);
delayMicroseconds(40);
Serial.end();
delay(5);
digitalWrite(reset_pin, HIGH);
delay(5);
Serial.begin(115200);
Serial.setTimeout(100);
delay(1);
w(0xc5);
w(SOH);
gsum(CHKS);
w(0x03);
w(BAUD_SET_CMD);
w(0x00);
w(0x14);
w(gsum(CHKS_A));
while (Serial.available() > 0) Serial.read()
w(ETX);
Serial.read();
Serial.readBytes((byte *)&STF1, sizeof(ST_FRAME));
if (STF1.DATA1 != 0x06 && STF1.DATA1 != FSL_ERR_PROTECTION ) {
w(0xEE);
break;
}
if (STF1.DATA1 == FSL_ERR_PROTECTION) {
delayMicroseconds(random_pos);
VDD_OFF;
delayMicroseconds(random_delay);
VDD_ON;
int counter = 0;
while (Serial.available() > 0) Serial.read()
while ( ++counter < 1000)
{
if (Serial.available() > 0)
{
a = Serial.read();
if (a == STX) break; // wait STX response
}
delayMicroseconds(5);
}
if (counter >= 1000) {
continue;
}
}
delay(5);
w(OCD_CONNECT_CMD);
delay(1);
gsum(CHKS);
w(':');
w('N');
w('o');
w('t');
w(':');
w('U');
w('s');
w('e');
w('d');
w(':');
w(gsum(CHKS_OCD));
delay(1);
w(OCD_WRITE_CMD);
delay(1);
for (int s = 0; s < sizeof(shellcode); s++) w(shellcode[s]);
delay(1);
Serial.write(OCD_EXEC_CMD); // EXEC without delay
pinMode(TX, INPUT);
Serial.end();
break;
}
while (1)
{
digitalWrite(ledPin, ledState); // blinking LED :)
ledState ^= 1;
delay(500);
}
}
================================================
FILE: config.ini
================================================
lang = en
================================================
FILE: data/data.py
================================================
EAP_KBL_MD5 = {
'0dd462cc631623a09425f1efdd0d6524' : { 't':0x02, 'fw':['1.01', '1.05', '1.06', '1.07']},
'8726bf12757e2895b0e818ee732dc2be' : { 't':0x02, 'fw':['1.50', '1.51', '1.52', '1.60', '1.61', '1.62']},
'42720e601de7d9df8127f04041f76840' : { 't':0x0E, 'fw':['1.01', '1.05', '1.06', '1.07']},
'4c50dec899196800cbec8542c6a13e51' : { 't':0x0E, 'fw':['1.50', '1.51', '1.52', '1.60', '1.61', '1.62']},
'9a32fd540c6018eaab0517f4829b13f8' : { 't':0x0E, 'fw':['1.70', '1.71', '1.72', '1.74', '1.75', '1.76']},
'dd57dae7d8869dc79d50a0c4e3eed538' : { 't':0x0E, 'fw':['2.00', '2.01', '2.02', '2.03', '2.04']},
'6b7f4bcef4fb0330497161d24ff15fa0' : { 't':0x0E, 'fw':['2.50']},
'455315c5918041a8dbe41585853a4ed2' : { 't':0x0E, 'fw':['2.51']},
'af8a85132e74d2b617ef63cea123ba9f' : { 't':0x0E, 'fw':['2.55']},
'5ce1f2759e1608057f7e17fc06fa8bee' : { 't':0x0E, 'fw':['2.57']},
'44c7fe893accbeb93dab5193f4802280' : { 't':0x0E, 'fw':['3.00']},
'048459908f7e45bbff70e2db2a97e58c' : { 't':0x0E, 'fw':['3.10']},
'570c48b58c81245cd065fdd0bfb6e985' : { 't':0x0E, 'fw':['3.11']},
'6dfb5917cfea365c6c89cf87072624ae' : { 't':0x0E, 'fw':['3.15']},
'44dc35834eef914dcddb0a39a1a3dc70' : { 't':0x0E, 'fw':['3.50']},
'7995cac008a1bd3ccfbf8becab35eb4d' : { 't':0x0E, 'fw':['3.55']},
'79c49a1288fc7d60f75231d2dce10566' : { 't':0x0E, 'fw':['3.70']},
'bb3b569ac01110ac0c16c758100491d5' : { 't':0x0E, 'fw':['4.00']},
'ddb3cec56aecd2b15a82b829e1a372fe' : { 't':0x0E, 'fw':['4.01']},
'edc4e6eda1678b33d2aa0143e538f8b4' : { 't':0x0E, 'fw':['4.05']},
'b42535824e7723240dd4b082a3f60322' : { 't':0x0E, 'fw':['4.06']},
'358302d1385b223f7574cbf18868c0d0' : { 't':0x0E, 'fw':['4.07']},
'650bde2da36b1f3d31be9e5ce9c6a5cc' : { 't':0x0E, 'fw':['4.50']},
'a7623c9af98df21a7fdfab7e37bcf613' : { 't':0x0E, 'fw':['4.55']},
'0be4a2e5b370a7de89759074b079ab3c' : { 't':0x0E, 'fw':['4.70']},
'e46585bf19bf04fd167a399f4ea117e1' : { 't':0x0E, 'fw':['4.71']},
'be76ae16a1afd45b11d476cdb4385dd3' : { 't':0x0E, 'fw':['4.72']},
'8f95d2b54627f5edc2a96f7cb5c8308b' : { 't':0x0E, 'fw':['4.73']},
'919e9d46632868ee4cf3f3326a71c5e3' : { 't':0x0E, 'fw':['4.74']},
'b8ed5f9cec8e41ae026de12e21d72b0b' : { 't':0x0E, 'fw':['5.00']},
'1af9f0c231a8941a8c553c6966122130' : { 't':0x0E, 'fw':['5.01']},
'b99b19ffd7c9d6c9874cbb94a7e78c66' : { 't':0x0E, 'fw':['5.03']},
'8906a34e24318e90a62bba5c5a97ad00' : { 't':0x0E, 'fw':['5.05']},
'f26d56b010b01221e8275837ee565fbb' : { 't':0x0E, 'fw':['5.50']},
'39a984dbac3ccb94b4480aa25c8b4e1b' : { 't':0x0E, 'fw':['5.53']},
'633baf585cee4417834ff8d7ce62e3bd' : { 't':0x0E, 'fw':['5.55']},
'9a91697500616905426d4a84aefa665a' : { 't':0x0E, 'fw':['5.56', '6.00']},
'9c382d60c4941337065823545ae16d3c' : { 't':0x0E, 'fw':['6.02']},
'820f8b918ab86c88c1c78012ec5f6d1a' : { 't':0x0E, 'fw':['6.20']},
'0a1c51b97b423afe0c0f5aa77d9ee8d7' : { 't':0x0E, 'fw':['6.50']},
'fa0be2c08d926ea3bddb97fa939343bd' : { 't':0x0E, 'fw':['6.51']},
'9f29600822a91a99a949af2db143bfc2' : { 't':0x0E, 'fw':['6.70']},
'e544d20695af0c52e335a1e2d04fc542' : { 't':0x0E, 'fw':['6.71']},
'd0414634023ba61fd3a4a5a6077f79b8' : { 't':0x0E, 'fw':['6.72']},
'd3133368cf3f43d751589aee694bc42d' : { 't':0x0E, 'fw':['7.00']},
'522023ce61ced68525fbfdeb0c26c719' : { 't':0x0E, 'fw':['7.01']},
'9ae781691d31c931b11a288fd72ef0d0' : { 't':0x0E, 'fw':['7.02']},
'3b326bb3475dd98317b17096d9883817' : { 't':0x0E, 'fw':['7.50']},
'e95160734d6557cff562df4896364347' : { 't':0x0E, 'fw':['7.51']},
'229b3917e607a55fe987df3b8738c09e' : { 't':0x0E, 'fw':['7.55']},
'b48d67cd6e0fcfcf6b11554e034b3949' : { 't':0x0E, 'fw':['8.00']},
'd95895c6e17b35d58f5d6c3c1b795d17' : { 't':0x0E, 'fw':['8.01']},
'38a8834ccf0d7c77d876adedfdad26bb' : { 't':0x0E, 'fw':['8.03']},
'77ff85ef917c4003f32e7be03b1c237c' : { 't':0x0E, 'fw':['8.50']},
'04e544df5deb249ed65f28e9df3376b0' : { 't':0x0E, 'fw':['8.52']},
'6c7f9451e02a0ab11a84c6788117189f' : { 't':0x0E, 'fw':['9.00']},
'dd7521db7eb7c20b23b20094aab681b0' : { 't':0x0E, 'fw':['9.03']},
'9c1d709f7664cb8b184a09e7970d2221' : { 't':0x0E, 'fw':['9.04']},
'582bc68d9ab845107209293a67042578' : { 't':0x0E, 'fw':['9.50']},
'fc29d959e8d3b8933b4e15b13a5cd298' : { 't':0x0E, 'fw':['9.51']},
'dbbd392ce2314d16b649f67b2f61e5d5' : { 't':0x0E, 'fw':['9.60']},
'8ddfae36db09473cfd6bd93ec8b2456f' : { 't':0x0E, 'fw':['10.00']},
'5f64b9e084b18ad2dd106f1f0b134e6b' : { 't':0x0E, 'fw':['10.01']},
'1a14428496d01e0120f6930279e89f24' : { 't':0x0E, 'fw':['10.50']},
'537ba86792b6dc80878c50931c67abc1' : { 't':0x0E, 'fw':['10.70']},
'2972f90ec990ff02022f40374073a3bd' : { 't':0x0E, 'fw':['10.71']},
'0b0bea74a608afdb18c1084d0e58bbe0' : { 't':0x0E, 'fw':['11.00']},
'25f53c8b333b88d7d429524915d7f583' : { 't':0x0E, 'fw':['11.02']},
'a3939952cf4ec2c12b20a00c1cd12c94' : { 't':0x0E, 'fw':['11.50']},
'2145706353aa2239f0a1ac3188235bc5' : { 't':0x0E, 'fw':['11.52']},
'63b7c50fbf566c57feb793aafc3094db' : { 't':0x0E, 'fw':['12.00']},
'ec57e59267896ea10ff6be6a4076ff5d' : { 't':0x0E, 'fw':['12.02']},
'6821c5a1313500108bae23e010e2b507' : { 't':0x0E, 'fw':['12.50']},
'2631f483ed174b46aefba7d55589e7ee' : { 't':0x0E, 'fw':['12.52']},
'9f28a740b94f4f2b9ee16c90063659fc' : { 't':0x0E, 'fw':['13.00']},
'f573826e2a5e61410a067bf2d31ddf63' : { 't':0x0E, 'fw':['13.02']},
'bbef26b24beca531af27080bcb9ad01d' : { 't':0x0E, 'fw':['13.04']},
'4aab5ca12b7b8d4ca37a85056de59ec0' : { 't':0x0E, 'fw':['13.50']},
'7a00d6dc1f82fdede5eb03c58a21a015' : { 't':0x21, 'fw':['2.00', '2.01', '2.02', '2.03', '2.04']},
'0238c28f5c478a2432f070ad24068a63' : { 't':0x21, 'fw':['2.50']},
'e19c859a5287e2477873d4e565b35186' : { 't':0x21, 'fw':['2.51']},
'5daf707fe6efe0bab4d9db0bb8d96a8b' : { 't':0x21, 'fw':['2.55']},
'd65b7789a0621352f877eaab3e5dff60' : { 't':0x21, 'fw':['2.57']},
'9d1b6a3a0fc9f3a6d41e20e5bfad2d10' : { 't':0x21, 'fw':['3.00']},
'd9ee437cba6e8c4bd887d7778c4040f5' : { 't':0x21, 'fw':['3.10']},
'32abf86d765b20d9b875ea28eb10cfb6' : { 't':0x21, 'fw':['3.11']},
'd0172f048e0bd77447d8d591476da86e' : { 't':0x21, 'fw':['3.15']},
'b7aa54cd77184cc152aa5a2c720b7c0d' : { 't':0x21, 'fw':['3.50']},
'd7cfea21dac13f07a3488dc13fd6fd11' : { 't':0x21, 'fw':['3.55']},
'b071c7101ea87198c26c6ec07adbbf16' : { 't':0x21, 'fw':['3.70']},
'99427d57097057e5f702f75985b47db4' : { 't':0x21, 'fw':['4.00']},
'cb0a8bf9ef19fd0ce811ce02f9ae8315' : { 't':0x21, 'fw':['4.01']},
'525530be2dcd96082eeb967cb600d741' : { 't':0x21, 'fw':['4.05']},
'1cb19934c7150c3e33f6053dfbd488ab' : { 't':0x21, 'fw':['4.06']},
'1d0899aa8245f254148069555d1d03de' : { 't':0x21, 'fw':['4.07']},
'05152f1e55667632d28a41a34e9b15d1' : { 't':0x21, 'fw':['4.50']},
'b8cdaca258483294ba09388992fdb5ed' : { 't':0x21, 'fw':['4.55']},
'6ab5149f58a1d2023d3d44db47558d6a' : { 't':0x21, 'fw':['4.70']},
'3c57f7e0b7d6789709dbdffefd6005f2' : { 't':0x21, 'fw':['4.71']},
'43c87a039bdfeab3ccaf663032ffbaf6' : { 't':0x21, 'fw':['4.72']},
'f9e6bd36622bf0ff53ef809f4d7338fe' : { 't':0x21, 'fw':['4.73']},
'52380c701e6851d1f11837c69b81e886' : { 't':0x21, 'fw':['4.74']},
'c30227273e40b33c0ab50afd2ffebbbd' : { 't':0x21, 'fw':['5.00']},
'9b8a56dbe05b563ba1e7bc51d53c6921' : { 't':0x21, 'fw':['5.01']},
'ecd8cf4270f0eded351dc40327d89fa4' : { 't':0x21, 'fw':['5.03']},
'8db9dfd190fcb0578d8774979e181add' : { 't':0x21, 'fw':['5.05']},
'65b9f22b2fa1cf2118670283062bc164' : { 't':0x21, 'fw':['5.50']},
'd75fd7bd3501ca7df6eb1b5b4b1cb80f' : { 't':0x21, 'fw':['5.53']},
'6a0403c68d75ab69d3dbc77096175f76' : { 't':0x21, 'fw':['5.55']},
'c4165f48de965c117d08f6fcc390d713' : { 't':0x21, 'fw':['5.56', '6.00']},
'b76752e2c27286f6407dea379203f3a7' : { 't':0x21, 'fw':['6.02']},
'8a8a74ca82ee58556d9b206c8e9b89b8' : { 't':0x21, 'fw':['6.20']},
'3aa312df7d1b72dd8fcf26f459008015' : { 't':0x21, 'fw':['6.50']},
'f0784a4b2381dd234cb05e0728115fee' : { 't':0x21, 'fw':['6.51']},
'dbda962b0857f596866e3a7341e4f2e0' : { 't':0x21, 'fw':['6.70']},
'969e0b58ba249e6dfe18ed5e25edfbda' : { 't':0x21, 'fw':['6.71']},
'31a035bace215d01ebbdbcd622cf8613' : { 't':0x21, 'fw':['6.72']},
'bf0793b1efc0fe672c5058224583f5ac' : { 't':0x21, 'fw':['7.00']},
'b76313967cfe1dad00fbe734fe782e5a' : { 't':0x21, 'fw':['7.01']},
'6aa9f141f9f644aca2debececad2e1a0' : { 't':0x21, 'fw':['7.02']},
'c72c71a0595ceb4ebde349696bd7698b' : { 't':0x21, 'fw':['7.50']},
'6bd05840bfded01d1b94bfd44d3c73c0' : { 't':0x21, 'fw':['7.51']},
'11a00bea89e59b7cbaba5c83a6282328' : { 't':0x21, 'fw':['7.55']},
'c22bbf754677b20d082c6c87a324f7a2' : { 't':0x21, 'fw':['8.00']},
'669ca94a5328e899d0fa2575c30762ff' : { 't':0x21, 'fw':['8.01']},
'9166879e76e29ba613ce027419461034' : { 't':0x21, 'fw':['8.03']},
'749880246a83f2e6267f1dcc32eeee4a' : { 't':0x21, 'fw':['8.50']},
'91e47f45865fc36b11d927684380f70e' : { 't':0x21, 'fw':['8.52']},
'cbb340ec96eb4c347e354c494dfea5e9' : { 't':0x21, 'fw':['9.00']},
'69b27a6ceba152e8067344a1d3c770cf' : { 't':0x21, 'fw':['9.03']},
'f59944abb76d9e9a2189658116405482' : { 't':0x21, 'fw':['9.04']},
'2a23172fa612eb264ec0600a716fedb3' : { 't':0x21, 'fw':['9.50']},
'e4cdcbd449f1c8125bd6cf6176f6e1bb' : { 't':0x21, 'fw':['9.51']},
'942d9dd58fd98e9b280bed10995b73ed' : { 't':0x21, 'fw':['9.60']},
'df54167942f64899ef65c850df07f4d6' : { 't':0x21, 'fw':['10.00']},
'eec63b1ad0c5ad407a6067a0134aa498' : { 't':0x21, 'fw':['10.01']},
'e7bd676c4c24f3ebc8f94e198c152623' : { 't':0x21, 'fw':['10.50']},
'17a620ede33cdbfe5ed4c6f38d1a5139' : { 't':0x21, 'fw':['10.70']},
'1bb42a14c97b15a4e426ed8b79b2301f' : { 't':0x21, 'fw':['10.71']},
'57eaaf224af813ce645b9a6ee6190b7a' : { 't':0x21, 'fw':['11.00']},
'16ff9ff40585f00e9834689888975b46' : { 't':0x21, 'fw':['11.02']},
'cb8ea978017b961da9f450e842976e2a' : { 't':0x21, 'fw':['11.50']},
'b4269b675add1f67b2139d4bc3da79fc' : { 't':0x21, 'fw':['11.52']},
'29ac04f4e472bd6f7651ba074c55d193' : { 't':0x21, 'fw':['12.00']},
'451db05d4ac556dc320d93052ad12fad' : { 't':0x21, 'fw':['12.02']},
'502322eda265417a47380c03590eeb6b' : { 't':0x21, 'fw':['12.50']},
'8d2153efa1ae887b22013277b31ad767' : { 't':0x21, 'fw':['12.52']},
'333111ec3d0788b1e61cf983b7126187' : { 't':0x21, 'fw':['13.00']},
'5a623d3d813c72feafc7a8b1ba5c3325' : { 't':0x21, 'fw':['13.02']},
'a5fcef73d57c3f70c52be216e4c7783a' : { 't':0x21, 'fw':['13.04']},
'bb43c942346a2f261352dd2540053d73' : { 't':0x21, 'fw':['13.50']},
'8d936050f378b00d5c2cd286f32f25b7' : { 't':0x25, 'fw':['3.00']},
'1d0be06c8a097ca8e1b1b38139800520' : { 't':0x25, 'fw':['3.10']},
'fde812fd90341881bd5ef3d25e2c1b5b' : { 't':0x25, 'fw':['3.11']},
'bd0bf6881bc1d387beeed793960be5ed' : { 't':0x25, 'fw':['3.15']},
'2ebe9d480aac7611f5baf34077c3e89c' : { 't':0x25, 'fw':['3.50']},
'c1ef90ddba5fd1fe49ed36a128136aba' : { 't':0x25, 'fw':['3.55']},
'51e6d6a82fdd3239fccb660a463d6138' : { 't':0x25, 'fw':['3.70']},
'c3bffb04f99f74485b3150e2b9642bfd' : { 't':0x25, 'fw':['4.00']},
'd54ffcee5ae684e48c349d8cfdfd6ad8' : { 't':0x25, 'fw':['4.01']},
'3a216f5c95f6eb938d508280c1f2915b' : { 't':0x25, 'fw':['4.05']},
'a6fe26c0f43c632f7a9cb63d9690e4ef' : { 't':0x25, 'fw':['4.06']},
'324ab73b7222b872c4ea9e8c20272bd9' : { 't':0x25, 'fw':['4.07']},
'66360e6454e11e907184226538e16ec2' : { 't':0x25, 'fw':['4.50']},
'd1089a7bb46e1fc22affed585508c748' : { 't':0x25, 'fw':['4.55']},
'3186ccf7e439bd2b418cff4fe7791b6c' : { 't':0x25, 'fw':['4.70']},
'3e90c987a61f33cce21e04583b1ca0c1' : { 't':0x25, 'fw':['4.71']},
'534ab345e42a61b38eb621378c8f6cbb' : { 't':0x25, 'fw':['4.72']},
'f1d4ed0c9ea9ac67b4387ab8d0abf0a1' : { 't':0x25, 'fw':['4.73']},
'a3ba2efe1d711f95bd62c8930d0eed1a' : { 't':0x25, 'fw':['4.74']},
'ffdcbe00d8ea3eac519dde856765b13e' : { 't':0x25, 'fw':['5.00']},
'f7a1068f0f67ee5ea9a19e2562ef15f2' : { 't':0x25, 'fw':['5.01']},
'6c4b0c48f39be5bdd73b3d2c238d82fb' : { 't':0x25, 'fw':['5.03']},
'ceed4a969f2d1a9421a69c138c5ddc72' : { 't':0x25, 'fw':['5.05']},
'07670332f9976f0c3bc546b67a722cda' : { 't':0x25, 'fw':['5.50']},
'969c3985296cb3472fc835bbe608528e' : { 't':0x25, 'fw':['5.53']},
'b3bb2409d53615af2fb521505015e20c' : { 't':0x25, 'fw':['5.55']},
'dea6efa9081c318b3668d1bc7a000f9b' : { 't':0x25, 'fw':['5.56', '6.00']},
'c20d3a1731106cf1c010f874b17ea5c7' : { 't':0x25, 'fw':['6.02']},
'b9275aa39e3760b7c2bde4c77d417d70' : { 't':0x25, 'fw':['6.20']},
'bbb2c4c65433873f70f65b767a27f9b0' : { 't':0x25, 'fw':['6.50']},
'dc650a90a9b874d5a2dcdfb60cd789c4' : { 't':0x25, 'fw':['6.51']},
'052aec3f520bbcb1435d46267979ccf6' : { 't':0x25, 'fw':['6.70']},
'08e30b521e41d07755a5015187beac05' : { 't':0x25, 'fw':['6.71']},
'65a8e0f713382eaf1092b043f5cdca40' : { 't':0x25, 'fw':['6.72']},
'16a67787c38d3139199e3a6e01f63f7f' : { 't':0x25, 'fw':['7.00']},
'b1cb2c71470306aa7c9fb58ca5b19a4b' : { 't':0x25, 'fw':['7.01']},
'6dc904eb6a2bdd6ff903ad99ec836991' : { 't':0x25, 'fw':['7.02']},
'dc3e4e90a6aab238316f97e857637470' : { 't':0x25, 'fw':['7.50']},
'a4df1d0de2ec96fb91cbe5224560b4a3' : { 't':0x25, 'fw':['7.51']},
'eb772c3adc78271f923e6e4f4f8d6ccb' : { 't':0x25, 'fw':['7.55']},
'86c77e27756f8376455b148fb9559a2e' : { 't':0x25, 'fw':['8.00']},
'6564c0542eafc618f8ae94d8701efa4e' : { 't':0x25, 'fw':['8.01']},
'3339c502ab56f241b5528c7638a20d36' : { 't':0x25, 'fw':['8.03']},
'96b5bc1cb9a6999e64d4a5d36f6a06e7' : { 't':0x25, 'fw':['8.50']},
'4063d7b68a7e9d7456b382b845a811a8' : { 't':0x25, 'fw':['8.52']},
'f65bf15b532b15535f438e2f61fa980e' : { 't':0x25, 'fw':['9.00']},
'33890e2cb7e1631716ab2e17fcbb83d9' : { 't':0x25, 'fw':['9.03']},
'9d8ffa31cc333137ff1878d595d52200' : { 't':0x25, 'fw':['9.04']},
'd05b183d387747053d185a4090261e25' : { 't':0x25, 'fw':['9.50']},
'd669c591de8c0c7e7993f3dc566eac80' : { 't':0x25, 'fw':['9.51']},
'e65cc6cd6f4cad6b4f59da235bf44170' : { 't':0x25, 'fw':['9.60']},
'7c1cdbf13c138ce1a83de130b4263429' : { 't':0x25, 'fw':['10.00']},
'9dfbe785da82eb108b1e97f25ed586f5' : { 't':0x25, 'fw':['10.01']},
'3267e5dfc202c068071b171c3a0cb258' : { 't':0x25, 'fw':['10.50']},
'ddc17ad1bf9c3b1a5ecf71f6937472ef' : { 't':0x25, 'fw':['10.70']},
'df00320082bb4421c2247f792ea0e682' : { 't':0x25, 'fw':['10.71']},
'cadd11b599a512ce87c52e25a2e5244d' : { 't':0x25, 'fw':['11.00']},
'3b6146cc58794d723cad16393cab78a7' : { 't':0x25, 'fw':['11.02']},
'591f2d1c1893deb5be5ffcb1f572f0dc' : { 't':0x25, 'fw':['11.50']},
'ec4f9bee3faf750f42985d819a29531e' : { 't':0x25, 'fw':['11.52']},
'64f4f9e4eb31984f73db37181555735c' : { 't':0x25, 'fw':['12.00']},
'371e9622798e01647dc13a6d92ee4b6f' : { 't':0x25, 'fw':['12.02']},
'dd11599ca2b0c74a179dca205943affb' : { 't':0x25, 'fw':['12.50']},
'fcfc2114ece872c6b5441f2e0ffe3d1e' : { 't':0x25, 'fw':['12.52']},
'13552aca8f40deb0ad367b8ffc61f698' : { 't':0x25, 'fw':['13.00']},
'22e6d1e34bbf63ffd3ca4ce45909a78b' : { 't':0x25, 'fw':['13.02']},
'1b87a69900a54bcd6a7535b405430ab5' : { 't':0x25, 'fw':['13.04']},
'cebb93d67f62862731366dc9fd350c5e' : { 't':0x25, 'fw':['13.50']},
'd69cb4538da190706ef316205e04e624' : { 't':0x2B, 'fw':['3.70']},
'27ab170cfe634e9525c0ecc29129aaed' : { 't':0x2B, 'fw':['4.00']},
'cb38a79958287f53970ca061c20d8f7e' : { 't':0x2B, 'fw':['4.01']},
'b64ab08ced7d56953d98774690c28ec2' : { 't':0x2B, 'fw':['4.05']},
'4bf88b321c7cfc68200cf2a62d7a94f6' : { 't':0x2B, 'fw':['4.06']},
'7d4fdd394b6e195cac4647aa0164af0a' : { 't':0x2B, 'fw':['4.07']},
'c29d74755670823aaeaba5f960c16e77' : { 't':0x2B, 'fw':['4.50']},
'1e0332ff2831aed8972f52d19d89c8f0' : { 't':0x2B, 'fw':['4.55']},
'2f62d33dffb05732c8a50e571d92285f' : { 't':0x2B, 'fw':['4.70']},
'9024b6fc90bae356d679561e7bdc83e7' : { 't':0x2B, 'fw':['4.71']},
'61b5b3c7c79193be73f1621a56a8f6f6' : { 't':0x2B, 'fw':['4.72']},
'c85ea89f8fc7ab7cf4d6f39ec02e6159' : { 't':0x2B, 'fw':['4.73']},
'3e67e445509481b0b30b4d6771e6384d' : { 't':0x2B, 'fw':['4.74']},
'7e332ac82f13f188241ebca951f1e7bf' : { 't':0x2B, 'fw':['5.00']},
'635e4c46c5e5eaa97c36058dad663637' : { 't':0x2B, 'fw':['5.01']},
'33c5ec1e27d7226bf794e94a388d07b3' : { 't':0x2B, 'fw':['5.03']},
'0e68e601d2a2215499def6b42ea13421' : { 't':0x2B, 'fw':['5.05']},
'7116d03a44e1e7b45f387c2ba761ba37' : { 't':0x2B, 'fw':['5.07']},
'76968b377b4be00bcf83fa3f0b3d5150' : { 't':0x2B, 'fw':['5.50']},
'aa264a65abd610970fe575f20dbab5cc' : { 't':0x2B, 'fw':['5.53']},
'c4ee3172505d150907f1f687849259b8' : { 't':0x2B, 'fw':['5.55']},
'facd947b3181c30faa035d18a570bd34' : { 't':0x2B, 'fw':['5.56', '6.00']},
'45194d85709c177938a77ff7f2bcc487' : { 't':0x2B, 'fw':['6.02']},
'ff8df7988e483df9a885da9b3cfff02b' : { 't':0x2B, 'fw':['6.20']},
'e557b5ce24e398ad8416f18bd2da5a25' : { 't':0x2B, 'fw':['6.50']},
'9157cbbcace103f749f8ab16c7652e32' : { 't':0x2B, 'fw':['6.51']},
'3aa814001014da4997af2f70a67d438b' : { 't':0x2B, 'fw':['6.70']},
'85cb60a307c6601e931417e282b76802' : { 't':0x2B, 'fw':['6.71']},
'4b5550bc70508bca2e1514594ce8b004' : { 't':0x2B, 'fw':['6.72']},
'5cf4f0df76e75993b02a9d68934e41f3' : { 't':0x2B, 'fw':['7.00']},
'a6a5b22486e4173e3846ce23d7a7242d' : { 't':0x2B, 'fw':['7.01']},
'9725efa65b1b9cd6a6cecabdf13c21e0' : { 't':0x2B, 'fw':['7.02']},
'e60a407278a0d5153a120eb43e52a708' : { 't':0x2B, 'fw':['7.50']},
'b309af1d980deeac8842ec2337e3e57b' : { 't':0x2B, 'fw':['7.51']},
'520b79d530abf316d0b6153a3789c422' : { 't':0x2B, 'fw':['7.55']},
'84b7dfc3a45220a95936c9e6ed14cdf7' : { 't':0x2B, 'fw':['8.00']},
'd2f3df620b241e31d46fdaaabeecba1d' : { 't':0x2B, 'fw':['8.01']},
'9fd9a402a5c9faad17ca7bf97fd907cf' : { 't':0x2B, 'fw':['8.03']},
'f69d5df408d9d2571804626af42b88b9' : { 't':0x2B, 'fw':['8.50']},
'089e1b2fcba07e5750357c98d65a71c1' : { 't':0x2B, 'fw':['8.52']},
'7ba3cf4a6cc0fb9f223bf4ab7a7c8c62' : { 't':0x2B, 'fw':['9.00']},
'14e76e1a83e0d86d3b07179d213149d0' : { 't':0x2B, 'fw':['9.03']},
'8f2f75d7ff9b170d95f7204b156991a7' : { 't':0x2B, 'fw':['9.04']},
'895470adee78f59a6a6c1208249cc8d9' : { 't':0x2B, 'fw':['9.50']},
'51514310853d0411d7662120118e7244' : { 't':0x2B, 'fw':['9.51']},
'28930dd371d95fbe768cd7ea12f2bc69' : { 't':0x2B, 'fw':['9.60']},
'7417452947bad75fc113e38eeb032946' : { 't':0x2B, 'fw':['10.00']},
'ae9163f07f8bb423d44b15e377f09a6a' : { 't':0x2B, 'fw':['10.01']},
'536214ca8cd665157ce3e48b375c9496' : { 't':0x2B, 'fw':['10.50']},
'd7e5b5b6dc12fd80c9651490cc758bbe' : { 't':0x2B, 'fw':['10.70']},
'4dcb324baac3cc5ac045042b142b9814' : { 't':0x2B, 'fw':['10.71']},
'20bb9d1aaa41c0fe5d46ea03347ece9c' : { 't':0x2B, 'fw':['11.00']},
'382c0dd756199b6e925707079c174220' : { 't':0x2B, 'fw':['11.02']},
'5a7dffc0280b356d66cee2370e6880fc' : { 't':0x2B, 'fw':['11.50']},
'c4ad490bcaffac79d3e29b0781fca86e' : { 't':0x2B, 'fw':['11.52']},
'defe9549594dcec455875d2de764f4d2' : { 't':0x2B, 'fw':['12.00']},
'bf883b85b8ce40b3fae6509762303ccb' : { 't':0x2B, 'fw':['12.02']},
'f58529284cd9d16ef04012fa02fc77c1' : { 't':0x2B, 'fw':['12.50']},
'593b9912cfe9d4dcefb8e23f633c2257' : { 't':0x2B, 'fw':['12.52']},
'b2942b480d0c83be1b62e4669a3c02a0' : { 't':0x2B, 'fw':['13.00']},
'8df4acd2cb12698979a053d3370c2052' : { 't':0x2B, 'fw':['13.02']},
'40b1f61b5b8b5d98a10dcf9310d52224' : { 't':0x2B, 'fw':['13.04']},
'5ed3f70544c880905819fcc2c23f48f6' : { 't':0x2B, 'fw':['13.50']},
}
EMC_IPL_MD5 = {
'475c3c78d08a9445667730cea05e7ced' : { 't':0x01, 'fw':['1.01']},
'15c90ebe9e879aed9ea917317e304da1' : { 't':0x01, 'fw':['1.05', '1.06', '1.07']},
'080ea78a7c141d1886335584b6e19717' : { 't':0x01, 'fw':['1.50', '1.51', '1.52']},
'f71f9f0dd17052a0ca2bd0f11c6698e0' : { 't':0x01, 'fw':['1.60', '1.61', '1.62']},
'30643532bf21e2eae1bc75e14abd6d64' : { 't':0x0D, 'fw':['1.01']},
'ad217d6070cb8b606930b68e4a384fca' : { 't':0x0D, 'fw':['1.05', '1.06', '1.07']},
'00567ed4a98b74504132bd386e994842' : { 't':0x0D, 'fw':['1.50', '1.51', '1.52']},
'9f0588c5ac05f2314d82c3b2aa5dafe6' : { 't':0x0D, 'fw':['1.60', '1.61', '1.62']},
'a0217b34fe57f28711da87fedcbdc9be' : { 't':0x0D, 'fw':['1.70', '1.71', '1.72', '1.74', '1.75', '1.76']},
'7114f1280bb8d105ab04c2e92ee47198' : { 't':0x0D, 'fw':['2.00', '2.01', '2.02', '2.03', '2.04']},
'587a68fe4445fa201ae4c189c3c49846' : { 't':0x0D, 'fw':['2.50', '2.51', '2.55', '2.57']},
'960fde9389f9bdd850f86f2ad9fa88ad' : { 't':0x0D, 'fw':['3.00', '3.10', '3.11', '3.15']},
'c59f900b0a11e9dfac55fa50f40cd40d' : { 't':0x0D, 'fw':['3.50', '3.55', '3.70']},
'8e94da07cc664f887d9885530f92853c' : { 't':0x0D, 'fw':['4.00', '4.01', '4.05', '4.06', '4.07']},
'17e29d3a616e13c68220fbe20f75a754' : { 't':0x0D, 'fw':['4.50', '4.55']},
'7ee5ce05605ced2539ff2ba93e766c44' : { 't':0x0D, 'fw':['4.70', '4.71', '4.72', '4.73', '4.74']},
'cd99d840146286553243e8c1ce16667a' : { 't':0x0D, 'fw':['5.00', '5.01', '5.03', '5.05']},
'371cc4f3f0c6dd284e766113e7b34ee8' : { 't':0x0D, 'fw':['5.50', '5.53', '5.55']},
'4706d6ec326a4e91ab9c2b4769e3e2a7' : { 't':0x0D, 'fw':['5.56', '6.00', '6.02', '6.20']},
'94642a952d29a1fefba9e60fac6ffe5c' : { 't':0x0D, 'fw':['6.50', '6.51', '6.70', '6.71', '6.72', '7.00', '7.01', '7.02', '7.50', '7.51', '7.55', '8.00', '8.01', '8.03']},
'42df90f470676fbf456e9962ca885f17' : { 't':0x0D, 'fw':['8.50', '8.52', '9.00', '9.03', '9.04', '9.50', '9.51', '9.60']},
'6b77552dfe6f390b3ab9a6ad6460ecf9' : { 't':0x0D, 'fw':['10.00', '10.01']},
'e539774a1f6b55ef74aab9017279c64e' : { 't':0x0D, 'fw':['10.50', '10.70', '10.71', '11.00', '11.02', '11.50', '11.52', '12.00', '12.02', '12.50', '12.52', '13.00', '13.02', '13.04', '13.50']},
'0bdb2b616b964b34845f3c1c2b362a1d' : { 't':0x20, 'fw':['2.00', '2.01', '2.02', '2.03', '2.04']},
'5503170e7e770d8c2c0ae34abe905b65' : { 't':0x20, 'fw':['2.50', '2.51', '2.55', '2.57']},
'41363eae2616290c5ef7afb0bf811451' : { 't':0x20, 'fw':['3.00', '3.10', '3.11', '3.15']},
'54695eae3a6b15f09b5f970533040e17' : { 't':0x20, 'fw':['3.50', '3.55']},
'ded9e797fe30a6e297aa26fda4ad056f' : { 't':0x20, 'fw':['3.70']},
'b93f5422c35ec5f8e3dbb92869dc1a3b' : { 't':0x20, 'fw':['4.00', '4.01', '4.05', '4.06', '4.07']},
'c5ca2d4873f0b6742dbf99da5f808d5c' : { 't':0x20, 'fw':['4.50', '4.55']},
'4044bfc903a227051332a937e5281e09' : { 't':0x20, 'fw':['4.70', '4.71', '4.72', '4.73', '4.74']},
'ff5a2ea7e2da7306ed7ccad11bf8dcb4' : { 't':0x20, 'fw':['5.00']},
'ec940d26770edd5dfca0c56b87c91922' : { 't':0x20, 'fw':['5.01', '5.03', '5.05']},
'93997b7ce815dea1815033f4dfb515f9' : { 't':0x20, 'fw':['5.50', '5.53']},
'3bd678212835af21e1bbd85a2b73140c' : { 't':0x20, 'fw':['5.55']},
'50c3295e6bfdaec4823574a0251cbec2' : { 't':0x20, 'fw':['5.56', '6.00', '6.02', '6.20']},
'29222319e74e1d25c7c99c4edf7859db' : { 't':0x20, 'fw':['6.50', '6.51', '6.70', '6.71', '6.72', '7.00', '7.01', '7.02', '7.50', '7.51', '7.55', '8.00', '8.01', '8.03']},
'96b467e3092b132c8c9036cc5da444cc' : { 't':0x20, 'fw':['8.50', '8.52', '9.00', '9.03', '9.04', '9.50', '9.51', '9.60']},
'febaf63e650be8b3469e0bffe85b6382' : { 't':0x20, 'fw':['10.00', '10.01']},
'c1aa7f63ba7aac8c8695970a416e1342' : { 't':0x20, 'fw':['10.50', '10.70', '10.71', '11.00', '11.02', '11.50', '11.52', '12.00', '12.02', '12.50', '12.52', '13.00', '13.02', '13.04', '13.50']},
'2296c87cff00bd4e3eeea7adab0772b9' : { 't':0x24, 'fw':['3.00', '3.10', '3.11', '3.15']},
'de5e54aa34d7f93f4f8fdad3ba798422' : { 't':0x24, 'fw':['3.50', '3.55']},
'1f0fa6a0ee18242bce17b380e406b2d6' : { 't':0x24, 'fw':['3.70']},
'c2df68338171336c7719b977042ba2f7' : { 't':0x24, 'fw':['4.00']},
'83547df7d50ce912a6ec7f466c4632e0' : { 't':0x24, 'fw':['4.01', '4.05']},
'dc83fd3d408a52897df957533caedf00' : { 't':0x24, 'fw':['4.06', '4.07']},
'34df38b47e1159d2760f56fac2a10350' : { 't':0x24, 'fw':['4.50', '4.55']},
'59ce92d9143bf0a8edf779b5f855c17b' : { 't':0x24, 'fw':['4.70', '4.71', '4.72', '4.73', '4.74']},
'74a6ac42b63410cd39302e8e8472cebb' : { 't':0x24, 'fw':['5.00']},
'9f25903e3fbe034e401af559776f922c' : { 't':0x24, 'fw':['5.01', '5.03', '5.05']},
'5d762452ff37c426bdc50aaf5d942cb9' : { 't':0x24, 'fw':['5.50', '5.53']},
'70733c72ca33e355778fc18617469a46' : { 't':0x24, 'fw':['5.55']},
'f6474a3d99dc5c8a22535e38715c9816' : { 't':0x24, 'fw':['5.56', '6.00', '6.02', '6.20']},
'3f19619bdb9b9bcb0ec6e57be8b2e2df' : { 't':0x24, 'fw':['6.50', '6.51', '6.70', '6.71', '6.72', '7.00', '7.01', '7.02', '7.50', '7.51', '7.55', '8.00', '8.01', '8.03']},
'c49b7b9d970643c5886cef603fdff1ba' : { 't':0x24, 'fw':['8.50', '8.52', '9.00', '9.03', '9.04', '9.50', '9.51', '9.60']},
'421ea7fec14cf827f6380326ab9fe42b' : { 't':0x24, 'fw':['10.00', '10.01']},
'07f41f9ac4370ce7736885ed5fa4372c' : { 't':0x24, 'fw':['10.50', '10.70', '10.71', '11.00', '11.02', '11.50', '11.52', '12.00', '12.02', '12.50', '12.52', '13.00', '13.02', '13.04', '13.50']},
'3e7e0402a688d18e34c1a393e69a2be1' : { 't':0x2A, 'fw':['3.70']},
'7c499dd0f35af4bc63a13050a64188aa' : { 't':0x2A, 'fw':['4.00', '4.01', '4.05', '4.06', '4.07']},
'1147f57e1826bb0305effd5d53d13c6b' : { 't':0x2A, 'fw':['4.50', '4.55']},
'2ef9c2d3a8c4ea980a4378a9ce00b935' : { 't':0x2A, 'fw':['4.70', '4.71', '4.72', '4.73', '4.74']},
'0191564a032f195636b5f0bc706950ce' : { 't':0x2A, 'fw':['5.00']},
'cf1416fd668b4788e9011e1a77876236' : { 't':0x2A, 'fw':['5.01', '5.03', '5.05', '5.07']},
'fd045a2e1d51c30222d90741d7e1c82b' : { 't':0x2A, 'fw':['5.50', '5.53']},
'78910d64832d56c97615ac203fda9b82' : { 't':0x2A, 'fw':['5.55']},
'f54cc78136fb62e4aeca87be13f31c6c' : { 't':0x2A, 'fw':['5.56', '6.00', '6.02', '6.20']},
'cdb18370e78cadee8a8f449f404cb10c' : { 't':0x2A, 'fw':['6.50', '6.51', '6.70', '6.71', '6.72', '7.00', '7.01', '7.02', '7.50', '7.51', '7.55', '8.00', '8.01', '8.03']},
'1ec53a02094b615655d537dc2528be7c' : { 't':0x2A, 'fw':['8.50', '8.52', '9.00', '9.03', '9.04', '9.50', '9.51', '9.60']},
'3e2b71121300e0bd14c7839671f3502f' : { 't':0x2A, 'fw':['10.00', '10.01']},
'78bcc7e6fcafd9a5de8c32d5bf802d09' : { 't':0x2A, 'fw':['10.50', '10.70', '10.71', '11.00', '11.02', '11.50', '11.52', '12.00', '12.02', '12.50', '12.52', '13.00', '13.02', '13.04', '13.50']},
}
TORUS_FW_MD5 = {
'e0b7a1d95b571d6a67a12499704166d1' : { 't':0x03, 'fw':['1.01', '1.05', '1.06', '1.07', '1.50', '1.51', '1.52']},
'cc366b2580d27e3fd37dd1e4a702ebbf' : { 't':0x03, 'fw':['1.60', '1.61', '1.62']},
'c07b72e0829105d916136fc9c6316f22' : { 't':0x03, 'fw':['1.70', '1.71', '1.72', '1.74', '1.75', '1.76']},
'c218aeb95817ee01b16bacd5daced815' : { 't':0x03, 'fw':['2.00', '2.01', '2.02', '2.03', '2.04', '2.50', '2.51', '2.55', '2.57']},
'd0405148398772dcf178aaa94cc78e97' : { 't':0x03, 'fw':['3.00', '3.10', '3.11', '3.15']},
'2bfa378760a479fb85fdcc244d078d4d' : { 't':0x03, 'fw':['3.50', '3.55', '3.70']},
'c92a435e395397112c0e62abddf1af68' : { 't':0x03, 'fw':['4.00', '4.01', '4.05', '4.06', '4.07']},
'128741df67a726a86f7e9d517cf7c020' : { 't':0x03, 'fw':['4.50', '4.55', '4.70', '4.71', '4.72', '4.73', '4.74', '5.00', '5.01', '5.03', '5.05', '5.07', '5.50', '5.53', '5.55']},
'cee157c6bffede981850e8d05b3535e3' : { 't':0x03, 'fw':['5.56', '6.00', '6.02', '6.20']},
'317592510814a96f88547d9f255fd80e' : { 't':0x03, 'fw':['6.50', '6.51', '6.70', '6.71', '6.72', '7.00', '7.01', '7.02', '7.50', '7.51', '7.55']},
'a5669e283c44c083589b038b3674affe' : { 't':0x03, 'fw':['8.00', '8.01', '8.03', '8.50', '8.52']},
'083b13a5d852873bd0fefb147af9e2c3' : { 't':0x03, 'fw':['9.00', '9.03', '9.04']},
'e84fb3af2096d22c7d7b7138ff292b1e' : { 't':0x03, 'fw':['9.50', '9.51', '9.60', '10.00', '10.01', '10.50', '10.70', '10.71', '11.00', '11.02', '11.50', '11.52', '12.00', '12.02', '12.50', '12.52', '13.00', '13.02', '13.04', '13.50']},
'fcb057ac11c000d0262c10dc01b677a5' : { 't':0x22, 'fw':['2.00', '2.01', '2.02', '2.03', '2.04']},
'4411977892ea7acd74062f0593bcbce7' : { 't':0x22, 'fw':['2.50', '2.51']},
'f3211160a476a0f24de09d720627c20b' : { 't':0x22, 'fw':['2.55', '2.57']},
'c0b82b852b7b66a0592b3821ad0fa459' : { 't':0x22, 'fw':['3.00', '3.10', '3.11', '3.15']},
'11ba78afe8f02cb57ea8d021bc10ec89' : { 't':0x22, 'fw':['3.50', '3.55', '3.70']},
'0d8d2986a1598d0e954f9e970947c219' : { 't':0x22, 'fw':['4.00', '4.01', '4.05', '4.06', '4.07']},
'e6140f25a718245346a9a19746c37e8b' : { 't':0x22, 'fw':['4.50']},
'7ce86e597e28f81f3429f7977d136798' : { 't':0x22, 'fw':['4.55']},
'44086893f93d68e78bf7922766362480' : { 't':0x22, 'fw':['4.70', '4.71', '4.72', '4.73', '4.74']},
'111bd82cc5507e82ac6b7a539f61d1be' : { 't':0x22, 'fw':['5.00', '5.01', '5.03', '5.05', '5.07', '5.50', '5.53', '5.55']},
'95212a166862040220fbe438f1cb8c2f' : { 't':0x22, 'fw':['5.56', '6.00', '6.02', '6.20']},
'3531d3656b81d26ba6a2e1660b5cf551' : { 't':0x22, 'fw':['6.50', '6.51', '6.70', '6.71', '6.72', '7.00', '7.01', '7.02', '7.50', '7.51', '7.55']},
'4caac06d8ab4426b1622a86895fc26cc' : { 't':0x22, 'fw':['8.00', '8.01', '8.03', '8.50', '8.52']},
'3ee31658fd141fe9df7afb65157a983c' : { 't':0x22, 'fw':['9.00', '9.03', '9.04']},
'50b0085e8917ffca236bb449a81fd3eb' : { 't':0x22, 'fw':['9.50', '9.51', '9.60', '10.00', '10.01', '10.50', '10.70', '10.71', '11.00', '11.02', '11.50', '11.52', '12.00', '12.02', '12.50', '12.52', '13.00', '13.02', '13.04', '13.50']},
'2e9656bf7d34c9d978cc1b6a7400d44c' : { 't':0x30, 'fw':['5.00', '5.01', '5.03', '5.05']},
'9f8250b9ba23cceb4f4db9a0c3d36749' : { 't':0x30, 'fw':['5.50', '5.53']},
'3cdbd4f6ba2b6f5c80dfc7d7faca5560' : { 't':0x30, 'fw':['5.55']},
'ab56ac5eba7211c97b3ddd292c08e713' : { 't':0x30, 'fw':['5.56', '6.00', '6.02', '6.20']},
'a526e7b7f9172d44f54ee2ded62b7a3e' : { 't':0x30, 'fw':['6.50', '6.51', '6.70', '6.71', '6.72']},
'56fc530e9bb82185f604e78b66c0974f' : { 't':0x30, 'fw':['7.00', '7.01', '7.02', '7.50', '7.51', '7.55']},
'2b3e14e420f9d1a2f2c875f73c2fef84' : { 't':0x30, 'fw':['8.00']},
'3ffa3918cf00178c89cbdab4a398d8bd' : { 't':0x30, 'fw':['8.01']},
'2b4e421d830649f1423a478ee7cc709a' : { 't':0x30, 'fw':['8.03', '8.50', '8.52']},
'3cfd09c19cc5eaa2fc889b2c6505c333' : { 't':0x30, 'fw':['9.00', '9.03', '9.04']},
'c23090c0bdce1bcb0f6bada5ef340e4e' : { 't':0x30, 'fw':['9.50', '9.51', '9.60', '10.00', '10.01', '10.50', '10.70', '10.71', '11.00', '11.02', '11.50', '11.52', '12.00', '12.02', '12.50', '12.52', '13.00', '13.02', '13.04', '13.50']},
}
================================================
FILE: data/genData.py
================================================
#==========================================================
# TXT file to PY array
# part of ps4 wee tools project
# https://github.com/andy-man/ps4-wee-tools
#==========================================================
import os
def writeVar(f, name, var):
f.write(name+" = {\n")
for key in var:
f.write("'%s' : { 't':%s, 'fw':%s},\n" %(key.lower(), var[key]['t'], var[key]['fw']))
f.write("}\n\n")
def addEntry(var, md5, type, fw):
if not md5 in var:
var[md5] = {'t':type, 'fw':[fw]}
else:
var[md5]['fw'].append(fw)
eap_kbl = {}
emc_ipl = {}
torus_fw = {}
fname = 'md5.txt'
if not os.path.exists(fname):
input('File %s not found'%fname)
exit(1)
# Using readlines()
f = open(fname, 'r')
Lines = f.readlines()
for line in Lines:
line = line.strip()
data = line.split()
if len(data) < 3:
continue
if line.startswith('eap_kbl_'):
addEntry(eap_kbl, data[2], data[0][8:12], data[1])
elif line.startswith('emc_ipl_'):
addEntry(emc_ipl, data[2], data[0][8:12], data[1])
elif line.startswith('torus_fw_'):
addEntry(torus_fw, data[2], data[0][9:13], data[1])
f.close()
f = open("data.py", "w")
writeVar(f, 'EAP_KBL_MD5', eap_kbl)
writeVar(f, 'EMC_IPL_MD5', emc_ipl)
writeVar(f, 'TORUS_FW_MD5', torus_fw)
f.close()
print('eap_kbl %d'%len(eap_kbl))
print('emc_ipl %d'%len(emc_ipl))
print('torus_fw %d'%len(torus_fw))
print()
print('Total %d'%(len(eap_kbl) + len(emc_ipl) + len(torus_fw)))
input()
================================================
FILE: data/md5.txt
================================================
Southbridge
- [X] Aeolia A0
- emc_ipl_0x01
- eap_kbl_0x02
- torus_fw_0x03
- [X] Aeolia A1
- emc_ipl_0x0D
- eap_kbl_0x0E
- torus_fw_0x03
- [X] Aeolia A2
- emc_ipl_0x0D
- eap_kbl_0x0E
- torus_fw_0x03
- [ ] Belize A0
- [X] Belize B0
- emc_ipl_0x20
- eap_kbl_0x21
- torus_fw_0x22
- [ ] Baikal A0
- [ ] Baikal B0
- [X] Baikal B1
- emc_ipl_0x24
- eap_kbl_0x25
- torus_fw_0x30
- [X] Belize2 A0
- emc_ipl_0x2A
- eap_kbl_0x2B
- torus_fw_0x30
emc_ipl:
- 0x01: Aeolia A0 (Only on <=1.62)
- 0x0D: Aeolia A1, Aeolia A2
- 0x20: Belize B0
- 0x24: Baikal B1
- 0x28:
- 0x2A: Belize2 A0
- 0x2C:
- 0x2E:
eap_kbl:
- 0x02: Aeolia A0 (Only on <=1.62)
- 0x0E: Aeolia A1, Aeolia A2
- 0x21: Belize B0
- 0x25: Baikal B1
- 0x2B: Belize2 A0
torus:
- 0x03: Version 1
- 0x22: Version 2
- 0x30: Version 3
eap_kbl_0x02 1.01 0dd462cc631623a09425f1efdd0d6524
eap_kbl_0x02 1.05 0dd462cc631623a09425f1efdd0d6524
eap_kbl_0x02 1.06 0dd462cc631623a09425f1efdd0d6524
eap_kbl_0x02 1.07 0dd462cc631623a09425f1efdd0d6524
eap_kbl_0x02 1.50 8726bf12757e2895b0e818ee732dc2be
eap_kbl_0x02 1.51 8726bf12757e2895b0e818ee732dc2be
eap_kbl_0x02 1.52 8726bf12757e2895b0e818ee732dc2be
eap_kbl_0x02 1.60 8726bf12757e2895b0e818ee732dc2be
eap_kbl_0x02 1.61 8726bf12757e2895b0e818ee732dc2be
eap_kbl_0x02 1.62 8726bf12757e2895b0e818ee732dc2be
eap_kbl_0x0E 1.01 42720e601de7d9df8127f04041f76840
eap_kbl_0x0E 1.05 42720e601de7d9df8127f04041f76840
eap_kbl_0x0E 1.06 42720e601de7d9df8127f04041f76840
eap_kbl_0x0E 1.07 42720e601de7d9df8127f04041f76840
eap_kbl_0x0E 1.50 4c50dec899196800cbec8542c6a13e51
eap_kbl_0x0E 1.51 4c50dec899196800cbec8542c6a13e51
eap_kbl_0x0E 1.52 4c50dec899196800cbec8542c6a13e51
eap_kbl_0x0E 1.60 4c50dec899196800cbec8542c6a13e51
eap_kbl_0x0E 1.61 4c50dec899196800cbec8542c6a13e51
eap_kbl_0x0E 1.62 4c50dec899196800cbec8542c6a13e51
eap_kbl_0x0E 1.70 9a32fd540c6018eaab0517f4829b13f8
eap_kbl_0x0E 1.71 9a32fd540c6018eaab0517f4829b13f8
eap_kbl_0x0E 1.72 9a32fd540c6018eaab0517f4829b13f8
eap_kbl_0x0E 1.74 9a32fd540c6018eaab0517f4829b13f8
eap_kbl_0x0E 1.75 9a32fd540c6018eaab0517f4829b13f8
eap_kbl_0x0E 1.76 9a32fd540c6018eaab0517f4829b13f8
eap_kbl_0x0E 2.00 dd57dae7d8869dc79d50a0c4e3eed538
eap_kbl_0x0E 2.01 dd57dae7d8869dc79d50a0c4e3eed538
eap_kbl_0x0E 2.02 dd57dae7d8869dc79d50a0c4e3eed538
eap_kbl_0x0E 2.03 dd57dae7d8869dc79d50a0c4e3eed538
eap_kbl_0x0E 2.04 dd57dae7d8869dc79d50a0c4e3eed538
eap_kbl_0x0E 2.50 6b7f4bcef4fb0330497161d24ff15fa0
eap_kbl_0x0E 2.51 455315c5918041a8dbe41585853a4ed2
eap_kbl_0x0E 2.55 af8a85132e74d2b617ef63cea123ba9f
eap_kbl_0x0E 2.57 5ce1f2759e1608057f7e17fc06fa8bee
eap_kbl_0x0E 3.00 44c7fe893accbeb93dab5193f4802280
eap_kbl_0x0E 3.10 048459908f7e45bbff70e2db2a97e58c
eap_kbl_0x0E 3.11 570c48b58c81245cd065fdd0bfb6e985
eap_kbl_0x0E 3.15 6dfb5917cfea365c6c89cf87072624ae
eap_kbl_0x0E 3.50 44dc35834eef914dcddb0a39a1a3dc70
eap_kbl_0x0E 3.55 7995cac008a1bd3ccfbf8becab35eb4d
eap_kbl_0x0E 3.70 79c49a1288fc7d60f75231d2dce10566
eap_kbl_0x0E 4.00 bb3b569ac01110ac0c16c758100491d5
eap_kbl_0x0E 4.01 ddb3cec56aecd2b15a82b829e1a372fe
eap_kbl_0x0E 4.05 edc4e6eda1678b33d2aa0143e538f8b4
eap_kbl_0x0E 4.06 b42535824e7723240dd4b082a3f60322
eap_kbl_0x0E 4.07 358302d1385b223f7574cbf18868c0d0
eap_kbl_0x0E 4.50 650bde2da36b1f3d31be9e5ce9c6a5cc
eap_kbl_0x0E 4.55 a7623c9af98df21a7fdfab7e37bcf613
eap_kbl_0x0E 4.70 0be4a2e5b370a7de89759074b079ab3c
eap_kbl_0x0E 4.71 e46585bf19bf04fd167a399f4ea117e1
eap_kbl_0x0E 4.72 be76ae16a1afd45b11d476cdb4385dd3
eap_kbl_0x0E 4.73 8f95d2b54627f5edc2a96f7cb5c8308b
eap_kbl_0x0E 4.74 919e9d46632868ee4cf3f3326a71c5e3
eap_kbl_0x0E 5.00 b8ed5f9cec8e41ae026de12e21d72b0b
eap_kbl_0x0E 5.01 1af9f0c231a8941a8c553c6966122130
eap_kbl_0x0E 5.03 b99b19ffd7c9d6c9874cbb94a7e78c66
eap_kbl_0x0E 5.05 8906a34e24318e90a62bba5c5a97ad00
eap_kbl_0x0E 5.07
eap_kbl_0x0E 5.50 f26d56b010b01221e8275837ee565fbb
eap_kbl_0x0E 5.53 39a984dbac3ccb94b4480aa25c8b4e1b
eap_kbl_0x0E 5.55 633baf585cee4417834ff8d7ce62e3bd
eap_kbl_0x0E 5.56 9a91697500616905426d4a84aefa665a
eap_kbl_0x0E 6.00 9a91697500616905426d4a84aefa665a
eap_kbl_0x0E 6.02 9c382d60c4941337065823545ae16d3c
eap_kbl_0x0E 6.20 820f8b918ab86c88c1c78012ec5f6d1a
eap_kbl_0x0E 6.50 0a1c51b97b423afe0c0f5aa77d9ee8d7
eap_kbl_0x0E 6.51 fa0be2c08d926ea3bddb97fa939343bd
eap_kbl_0x0E 6.70 9f29600822a91a99a949af2db143bfc2
eap_kbl_0x0E 6.71 e544d20695af0c52e335a1e2d04fc542
eap_kbl_0x0E 6.72 d0414634023ba61fd3a4a5a6077f79b8
eap_kbl_0x0E 7.00 d3133368cf3f43d751589aee694bc42d
eap_kbl_0x0E 7.01 522023ce61ced68525fbfdeb0c26c719
eap_kbl_0x0E 7.02 9ae781691d31c931b11a288fd72ef0d0
eap_kbl_0x0E 7.50 3b326bb3475dd98317b17096d9883817
eap_kbl_0x0E 7.51 e95160734d6557cff562df4896364347
eap_kbl_0x0E 7.55 229b3917e607a55fe987df3b8738c09e
eap_kbl_0x0E 8.00 b48d67cd6e0fcfcf6b11554e034b3949
eap_kbl_0x0E 8.01 d95895c6e17b35d58f5d6c3c1b795d17
eap_kbl_0x0E 8.03 38a8834ccf0d7c77d876adedfdad26bb
eap_kbl_0x0E 8.50 77ff85ef917c4003f32e7be03b1c237c
eap_kbl_0x0E 8.52 04e544df5deb249ed65f28e9df3376b0
eap_kbl_0x0E 9.00 6c7f9451e02a0ab11a84c6788117189f
eap_kbl_0x0E 9.03 dd7521db7eb7c20b23b20094aab681b0
eap_kbl_0x0E 9.04 9c1d709f7664cb8b184a09e7970d2221
eap_kbl_0x0E 9.50 582bc68d9ab845107209293a67042578
eap_kbl_0x0E 9.51 fc29d959e8d3b8933b4e15b13a5cd298
eap_kbl_0x0E 9.60 dbbd392ce2314d16b649f67b2f61e5d5
eap_kbl_0x0E 10.00 8ddfae36db09473cfd6bd93ec8b2456f
eap_kbl_0x0E 10.01 5f64b9e084b18ad2dd106f1f0b134e6b
eap_kbl_0x0E 10.50 1a14428496d01e0120f6930279e89f24
eap_kbl_0x0E 10.70 537ba86792b6dc80878c50931c67abc1
eap_kbl_0x0E 10.71 2972f90ec990ff02022f40374073a3bd
eap_kbl_0x0E 11.00 0b0bea74a608afdb18c1084d0e58bbe0
eap_kbl_0x0E 11.02 25f53c8b333b88d7d429524915d7f583
eap_kbl_0x0E 11.50 a3939952cf4ec2c12b20a00c1cd12c94
eap_kbl_0x0E 11.52 2145706353aa2239f0a1ac3188235bc5
eap_kbl_0x0E 12.00 63b7c50fbf566c57feb793aafc3094db
eap_kbl_0x0E 12.02 ec57e59267896ea10ff6be6a4076ff5d
eap_kbl_0x0E 12.50 6821c5a1313500108bae23e010e2b507
eap_kbl_0x0E 12.52 2631f483ed174b46aefba7d55589e7ee
eap_kbl_0x0E 13.00 9f28a740b94f4f2b9ee16c90063659fc
eap_kbl_0x0E 13.02 f573826e2a5e61410a067bf2d31ddf63
eap_kbl_0x0E 13.04 bbef26b24beca531af27080bcb9ad01d
eap_kbl_0x0E 13.50 4aab5ca12b7b8d4ca37a85056de59ec0
eap_kbl_0x21 2.00 7a00d6dc1f82fdede5eb03c58a21a015
eap_kbl_0x21 2.01 7a00d6dc1f82fdede5eb03c58a21a015
eap_kbl_0x21 2.02 7a00d6dc1f82fdede5eb03c58a21a015
eap_kbl_0x21 2.03 7a00d6dc1f82fdede5eb03c58a21a015
eap_kbl_0x21 2.04 7a00d6dc1f82fdede5eb03c58a21a015
eap_kbl_0x21 2.50 0238c28f5c478a2432f070ad24068a63
eap_kbl_0x21 2.51 e19c859a5287e2477873d4e565b35186
eap_kbl_0x21 2.55 5daf707fe6efe0bab4d9db0bb8d96a8b
eap_kbl_0x21 2.57 d65b7789a0621352f877eaab3e5dff60
eap_kbl_0x21 3.00 9d1b6a3a0fc9f3a6d41e20e5bfad2d10
eap_kbl_0x21 3.10 d9ee437cba6e8c4bd887d7778c4040f5
eap_kbl_0x21 3.11 32abf86d765b20d9b875ea28eb10cfb6
eap_kbl_0x21 3.15 d0172f048e0bd77447d8d591476da86e
eap_kbl_0x21 3.50 b7aa54cd77184cc152aa5a2c720b7c0d
eap_kbl_0x21 3.55 d7cfea21dac13f07a3488dc13fd6fd11
eap_kbl_0x21 3.70 b071c7101ea87198c26c6ec07adbbf16
eap_kbl_0x21 4.00 99427d57097057e5f702f75985b47db4
eap_kbl_0x21 4.01 cb0a8bf9ef19fd0ce811ce02f9ae8315
eap_kbl_0x21 4.05 525530be2dcd96082eeb967cb600d741
eap_kbl_0x21 4.06 1cb19934c7150c3e33f6053dfbd488ab
eap_kbl_0x21 4.07 1d0899aa8245f254148069555d1d03de
eap_kbl_0x21 4.50 05152f1e55667632d28a41a34e9b15d1
eap_kbl_0x21 4.55 b8cdaca258483294ba09388992fdb5ed
eap_kbl_0x21 4.70 6ab5149f58a1d2023d3d44db47558d6a
eap_kbl_0x21 4.71 3c57f7e0b7d6789709dbdffefd6005f2
eap_kbl_0x21 4.72 43c87a039bdfeab3ccaf663032ffbaf6
eap_kbl_0x21 4.73 f9e6bd36622bf0ff53ef809f4d7338fe
eap_kbl_0x21 4.74 52380c701e6851d1f11837c69b81e886
eap_kbl_0x21 5.00 c30227273e40b33c0ab50afd2ffebbbd
eap_kbl_0x21 5.01 9b8a56dbe05b563ba1e7bc51d53c6921
eap_kbl_0x21 5.03 ecd8cf4270f0eded351dc40327d89fa4
eap_kbl_0x21 5.05 8db9dfd190fcb0578d8774979e181add
eap_kbl_0x21 5.07
eap_kbl_0x21 5.50 65b9f22b2fa1cf2118670283062bc164
eap_kbl_0x21 5.53 d75fd7bd3501ca7df6eb1b5b4b1cb80f
eap_kbl_0x21 5.55 6a0403c68d75ab69d3dbc77096175f76
eap_kbl_0x21 5.56 c4165f48de965c117d08f6fcc390d713
eap_kbl_0x21 6.00 c4165f48de965c117d08f6fcc390d713
eap_kbl_0x21 6.02 b76752e2c27286f6407dea379203f3a7
eap_kbl_0x21 6.20 8a8a74ca82ee58556d9b206c8e9b89b8
eap_kbl_0x21 6.50 3aa312df7d1b72dd8fcf26f459008015
eap_kbl_0x21 6.51 f0784a4b2381dd234cb05e0728115fee
eap_kbl_0x21 6.70 dbda962b0857f596866e3a7341e4f2e0
eap_kbl_0x21 6.71 969e0b58ba249e6dfe18ed5e25edfbda
eap_kbl_0x21 6.72 31a035bace215d01ebbdbcd622cf8613
eap_kbl_0x21 7.00 bf0793b1efc0fe672c5058224583f5ac
eap_kbl_0x21 7.01 b76313967cfe1dad00fbe734fe782e5a
eap_kbl_0x21 7.02 6aa9f141f9f644aca2debececad2e1a0
eap_kbl_0x21 7.50 c72c71a0595ceb4ebde349696bd7698b
eap_kbl_0x21 7.51 6bd05840bfded01d1b94bfd44d3c73c0
eap_kbl_0x21 7.55 11a00bea89e59b7cbaba5c83a6282328
eap_kbl_0x21 8.00 c22bbf754677b20d082c6c87a324f7a2
eap_kbl_0x21 8.01 669ca94a5328e899d0fa2575c30762ff
eap_kbl_0x21 8.03 9166879e76e29ba613ce027419461034
eap_kbl_0x21 8.50 749880246a83f2e6267f1dcc32eeee4a
eap_kbl_0x21 8.52 91e47f45865fc36b11d927684380f70e
eap_kbl_0x21 9.00 cbb340ec96eb4c347e354c494dfea5e9
eap_kbl_0x21 9.03 69b27a6ceba152e8067344a1d3c770cf
eap_kbl_0x21 9.04 f59944abb76d9e9a2189658116405482
eap_kbl_0x21 9.50 2a23172fa612eb264ec0600a716fedb3
eap_kbl_0x21 9.51 e4cdcbd449f1c8125bd6cf6176f6e1bb
eap_kbl_0x21 9.60 942d9dd58fd98e9b280bed10995b73ed
eap_kbl_0x21 10.00 df54167942f64899ef65c850df07f4d6
eap_kbl_0x21 10.01 eec63b1ad0c5ad407a6067a0134aa498
eap_kbl_0x21 10.50 e7bd676c4c24f3ebc8f94e198c152623
eap_kbl_0x21 10.70 17a620ede33cdbfe5ed4c6f38d1a5139
eap_kbl_0x21 10.71 1bb42a14c97b15a4e426ed8b79b2301f
eap_kbl_0x21 11.00 57eaaf224af813ce645b9a6ee6190b7a
eap_kbl_0x21 11.02 16ff9ff40585f00e9834689888975b46
eap_kbl_0x21 11.50 cb8ea978017b961da9f450e842976e2a
eap_kbl_0x21 11.52 b4269b675add1f67b2139d4bc3da79fc
eap_kbl_0x21 12.00 29ac04f4e472bd6f7651ba074c55d193
eap_kbl_0x21 12.02 451db05d4ac556dc320d93052ad12fad
eap_kbl_0x21 12.50 502322eda265417a47380c03590eeb6b
eap_kbl_0x21 12.52 8d2153efa1ae887b22013277b31ad767
eap_kbl_0x21 13.00 333111ec3d0788b1e61cf983b7126187
eap_kbl_0x21 13.02 5a623d3d813c72feafc7a8b1ba5c3325
eap_kbl_0x21 13.04 a5fcef73d57c3f70c52be216e4c7783a
eap_kbl_0x21 13.50 bb43c942346a2f261352dd2540053d73
eap_kbl_0x25 3.00 8d936050f378b00d5c2cd286f32f25b7
eap_kbl_0x25 3.10 1d0be06c8a097ca8e1b1b38139800520
eap_kbl_0x25 3.11 fde812fd90341881bd5ef3d25e2c1b5b
eap_kbl_0x25 3.15 bd0bf6881bc1d387beeed793960be5ed
eap_kbl_0x25 3.50 2ebe9d480aac7611f5baf34077c3e89c
eap_kbl_0x25 3.55 c1ef90ddba5fd1fe49ed36a128136aba
eap_kbl_0x25 3.70 51e6d6a82fdd3239fccb660a463d6138
eap_kbl_0x25 4.00 c3bffb04f99f74485b3150e2b9642bfd
eap_kbl_0x25 4.01 d54ffcee5ae684e48c349d8cfdfd6ad8
eap_kbl_0x25 4.05 3a216f5c95f6eb938d508280c1f2915b
eap_kbl_0x25 4.06 a6fe26c0f43c632f7a9cb63d9690e4ef
eap_kbl_0x25 4.07 324ab73b7222b872c4ea9e8c20272bd9
eap_kbl_0x25 4.50 66360e6454e11e907184226538e16ec2
eap_kbl_0x25 4.55 d1089a7bb46e1fc22affed585508c748
eap_kbl_0x25 4.70 3186ccf7e439bd2b418cff4fe7791b6c
eap_kbl_0x25 4.71 3e90c987a61f33cce21e04583b1ca0c1
eap_kbl_0x25 4.72 534ab345e42a61b38eb621378c8f6cbb
eap_kbl_0x25 4.73 f1d4ed0c9ea9ac67b4387ab8d0abf0a1
eap_kbl_0x25 4.74 a3ba2efe1d711f95bd62c8930d0eed1a
eap_kbl_0x25 5.00 ffdcbe00d8ea3eac519dde856765b13e
eap_kbl_0x25 5.01 f7a1068f0f67ee5ea9a19e2562ef15f2
eap_kbl_0x25 5.03 6c4b0c48f39be5bdd73b3d2c238d82fb
eap_kbl_0x25 5.05 ceed4a969f2d1a9421a69c138c5ddc72
eap_kbl_0x25 5.07
eap_kbl_0x25 5.50 07670332f9976f0c3bc546b67a722cda
eap_kbl_0x25 5.53 969c3985296cb3472fc835bbe608528e
eap_kbl_0x25 5.55 b3bb2409d53615af2fb521505015e20c
eap_kbl_0x25 5.56 dea6efa9081c318b3668d1bc7a000f9b
eap_kbl_0x25 6.00 dea6efa9081c318b3668d1bc7a000f9b
eap_kbl_0x25 6.02 c20d3a1731106cf1c010f874b17ea5c7
eap_kbl_0x25 6.20 b9275aa39e3760b7c2bde4c77d417d70
eap_kbl_0x25 6.50 bbb2c4c65433873f70f65b767a27f9b0
eap_kbl_0x25 6.51 dc650a90a9b874d5a2dcdfb60cd789c4
eap_kbl_0x25 6.70 052aec3f520bbcb1435d46267979ccf6
eap_kbl_0x25 6.71 08e30b521e41d07755a5015187beac05
eap_kbl_0x25 6.72 65a8e0f713382eaf1092b043f5cdca40
eap_kbl_0x25 7.00 16a67787c38d3139199e3a6e01f63f7f
eap_kbl_0x25 7.01 b1cb2c71470306aa7c9fb58ca5b19a4b
eap_kbl_0x25 7.02 6dc904eb6a2bdd6ff903ad99ec836991
eap_kbl_0x25 7.50 dc3e4e90a6aab238316f97e857637470
eap_kbl_0x25 7.51 a4df1d0de2ec96fb91cbe5224560b4a3
eap_kbl_0x25 7.55 eb772c3adc78271f923e6e4f4f8d6ccb
eap_kbl_0x25 8.00 86c77e27756f8376455b148fb9559a2e
eap_kbl_0x25 8.01 6564c0542eafc618f8ae94d8701efa4e
eap_kbl_0x25 8.03 3339c502ab56f241b5528c7638a20d36
eap_kbl_0x25 8.50 96b5bc1cb9a6999e64d4a5d36f6a06e7
eap_kbl_0x25 8.52 4063d7b68a7e9d7456b382b845a811a8
eap_kbl_0x25 9.00 f65bf15b532b15535f438e2f61fa980e
eap_kbl_0x25 9.03 33890e2cb7e1631716ab2e17fcbb83d9
eap_kbl_0x25 9.04 9d8ffa31cc333137ff1878d595d52200
eap_kbl_0x25 9.50 d05b183d387747053d185a4090261e25
eap_kbl_0x25 9.51 d669c591de8c0c7e7993f3dc566eac80
eap_kbl_0x25 9.60 e65cc6cd6f4cad6b4f59da235bf44170
eap_kbl_0x25 10.00 7c1cdbf13c138ce1a83de130b4263429
eap_kbl_0x25 10.01 9dfbe785da82eb108b1e97f25ed586f5
eap_kbl_0x25 10.50 3267e5dfc202c068071b171c3a0cb258
eap_kbl_0x25 10.70 ddc17ad1bf9c3b1a5ecf71f6937472ef
eap_kbl_0x25 10.71 df00320082bb4421c2247f792ea0e682
eap_kbl_0x25 11.00 cadd11b599a512ce87c52e25a2e5244d
eap_kbl_0x25 11.02 3b6146cc58794d723cad16393cab78a7
eap_kbl_0x25 11.50 591f2d1c1893deb5be5ffcb1f572f0dc
eap_kbl_0x25 11.52 ec4f9bee3faf750f42985d819a29531e
eap_kbl_0x25 12.00 64f4f9e4eb31984f73db37181555735c
eap_kbl_0x25 12.02 371e9622798e01647dc13a6d92ee4b6f
eap_kbl_0x25 12.50 dd11599ca2b0c74a179dca205943affb
eap_kbl_0x25 12.52 fcfc2114ece872c6b5441f2e0ffe3d1e
eap_kbl_0x25 13.00 13552aca8f40deb0ad367b8ffc61f698
eap_kbl_0x25 13.02 22e6d1e34bbf63ffd3ca4ce45909a78b
eap_kbl_0x25 13.04 1b87a69900a54bcd6a7535b405430ab5
eap_kbl_0x25 13.50 cebb93d67f62862731366dc9fd350c5e
eap_kbl_0x2B 3.70 d69cb4538da190706ef316205e04e624
eap_kbl_0x2B 4.00 27ab170cfe634e9525c0ecc29129aaed
eap_kbl_0x2B 4.01 cb38a79958287f53970ca061c20d8f7e
eap_kbl_0x2B 4.05 b64ab08ced7d56953d98774690c28ec2
eap_kbl_0x2B 4.06 4bf88b321c7cfc68200cf2a62d7a94f6
eap_kbl_0x2B 4.07 7d4fdd394b6e195cac4647aa0164af0a
eap_kbl_0x2B 4.50 c29d74755670823aaeaba5f960c16e77
eap_kbl_0x2B 4.55 1e0332ff2831aed8972f52d19d89c8f0
eap_kbl_0x2B 4.70 2f62d33dffb05732c8a50e571d92285f
eap_kbl_0x2B 4.71 9024b6fc90bae356d679561e7bdc83e7
eap_kbl_0x2B 4.72 61b5b3c7c79193be73f1621a56a8f6f6
eap_kbl_0x2B 4.73 c85ea89f8fc7ab7cf4d6f39ec02e6159
eap_kbl_0x2B 4.74 3e67e445509481b0b30b4d6771e6384d
eap_kbl_0x2B 5.00 7e332ac82f13f188241ebca951f1e7bf
eap_kbl_0x2B 5.01 635e4c46c5e5eaa97c36058dad663637
eap_kbl_0x2B 5.03 33c5ec1e27d7226bf794e94a388d07b3
eap_kbl_0x2B 5.05 0e68e601d2a2215499def6b42ea13421
eap_kbl_0x2B 5.07 7116D03A44E1E7B45F387C2BA761BA37
eap_kbl_0x2B 5.50 76968b377b4be00bcf83fa3f0b3d5150
eap_kbl_0x2B 5.53 aa264a65abd610970fe575f20dbab5cc
eap_kbl_0x2B 5.55 c4ee3172505d150907f1f687849259b8
eap_kbl_0x2B 5.56 facd947b3181c30faa035d18a570bd34
eap_kbl_0x2B 6.00 facd947b3181c30faa035d18a570bd34
eap_kbl_0x2B 6.02 45194d85709c177938a77ff7f2bcc487
eap_kbl_0x2B 6.20 ff8df7988e483df9a885da9b3cfff02b
eap_kbl_0x2B 6.50 e557b5ce24e398ad8416f18bd2da5a25
eap_kbl_0x2B 6.51 9157cbbcace103f749f8ab16c7652e32
eap_kbl_0x2B 6.70 3aa814001014da4997af2f70a67d438b
eap_kbl_0x2B 6.71 85cb60a307c6601e931417e282b76802
eap_kbl_0x2B 6.72 4b5550bc70508bca2e1514594ce8b004
eap_kbl_0x2B 7.00 5cf4f0df76e75993b02a9d68934e41f3
eap_kbl_0x2B 7.01 a6a5b22486e4173e3846ce23d7a7242d
eap_kbl_0x2B 7.02 9725efa65b1b9cd6a6cecabdf13c21e0
eap_kbl_0x2B 7.50 e60a407278a0d5153a120eb43e52a708
eap_kbl_0x2B 7.51 b309af1d980deeac8842ec2337e3e57b
eap_kbl_0x2B 7.55 520b79d530abf316d0b6153a3789c422
eap_kbl_0x2B 8.00 84b7dfc3a45220a95936c9e6ed14cdf7
eap_kbl_0x2B 8.01 d2f3df620b241e31d46fdaaabeecba1d
eap_kbl_0x2B 8.03 9fd9a402a5c9faad17ca7bf97fd907cf
eap_kbl_0x2B 8.50 f69d5df408d9d2571804626af42b88b9
eap_kbl_0x2B 8.52 089e1b2fcba07e5750357c98d65a71c1
eap_kbl_0x2B 9.00 7ba3cf4a6cc0fb9f223bf4ab7a7c8c62
eap_kbl_0x2B 9.03 14e76e1a83e0d86d3b07179d213149d0
eap_kbl_0x2B 9.04 8f2f75d7ff9b170d95f7204b156991a7
eap_kbl_0x2B 9.50 895470adee78f59a6a6c1208249cc8d9
eap_kbl_0x2B 9.51 51514310853d0411d7662120118e7244
eap_kbl_0x2B 9.60 28930dd371d95fbe768cd7ea12f2bc69
eap_kbl_0x2B 10.00 7417452947bad75fc113e38eeb032946
eap_kbl_0x2B 10.01 ae9163f07f8bb423d44b15e377f09a6a
eap_kbl_0x2B 10.50 536214ca8cd665157ce3e48b375c9496
eap_kbl_0x2B 10.70 d7e5b5b6dc12fd80c9651490cc758bbe
eap_kbl_0x2B 10.71 4dcb324baac3cc5ac045042b142b9814
eap_kbl_0x2B 11.00 20bb9d1aaa41c0fe5d46ea03347ece9c
eap_kbl_0x2B 11.02 382c0dd756199b6e925707079c174220
eap_kbl_0x2B 11.50 5a7dffc0280b356d66cee2370e6880fc
eap_kbl_0x2B 11.52 c4ad490bcaffac79d3e29b0781fca86e
eap_kbl_0x2B 12.00 defe9549594dcec455875d2de764f4d2
eap_kbl_0x2B 12.02 bf883b85b8ce40b3fae6509762303ccb
eap_kbl_0x2B 12.50 f58529284cd9d16ef04012fa02fc77c1
eap_kbl_0x2B 12.52 593b9912cfe9d4dcefb8e23f633c2257
eap_kbl_0x2B 13.00 b2942b480d0c83be1b62e4669a3c02a0
eap_kbl_0x2B 13.02 8df4acd2cb12698979a053d3370c2052
eap_kbl_0x2B 13.04 40b1f61b5b8b5d98a10dcf9310d52224
eap_kbl_0x2B 13.50 5ed3f70544c880905819fcc2c23f48f6
emc_ipl_0x01 1.01 475c3c78d08a9445667730cea05e7ced
emc_ipl_0x01 1.05 15c90ebe9e879aed9ea917317e304da1
emc_ipl_0x01 1.06 15c90ebe9e879aed9ea917317e304da1
emc_ipl_0x01 1.07 15c90ebe9e879aed9ea917317e304da1
emc_ipl_0x01 1.50 080ea78a7c141d1886335584b6e19717
emc_ipl_0x01 1.51 080ea78a7c141d1886335584b6e19717
emc_ipl_0x01 1.52 080ea78a7c141d1886335584b6e19717
emc_ipl_0x01 1.60 f71f9f0dd17052a0ca2bd0f11c6698e0
emc_ipl_0x01 1.61 f71f9f0dd17052a0ca2bd0f11c6698e0
emc_ipl_0x01 1.62 f71f9f0dd17052a0ca2bd0f11c6698e0
emc_ipl_0x0D 1.01 30643532bf21e2eae1bc75e14abd6d64
emc_ipl_0x0D 1.05 ad217d6070cb8b606930b68e4a384fca
emc_ipl_0x0D 1.06 ad217d6070cb8b606930b68e4a384fca
emc_ipl_0x0D 1.07 ad217d6070cb8b606930b68e4a384fca
emc_ipl_0x0D 1.50 00567ed4a98b74504132bd386e994842
emc_ipl_0x0D 1.51 00567ed4a98b74504132bd386e994842
emc_ipl_0x0D 1.52 00567ed4a98b74504132bd386e994842
emc_ipl_0x0D 1.60 9f0588c5ac05f2314d82c3b2aa5dafe6
emc_ipl_0x0D 1.61 9f0588c5ac05f2314d82c3b2aa5dafe6
emc_ipl_0x0D 1.62 9f0588c5ac05f2314d82c3b2aa5dafe6
emc_ipl_0x0D 1.70 a0217b34fe57f28711da87fedcbdc9be
emc_ipl_0x0D 1.71 a0217b34fe57f28711da87fedcbdc9be
emc_ipl_0x0D 1.72 a0217b34fe57f28711da87fedcbdc9be
emc_ipl_0x0D 1.74 a0217b34fe57f28711da87fedcbdc9be
emc_ipl_0x0D 1.75 a0217b34fe57f28711da87fedcbdc9be
emc_ipl_0x0D 1.76 a0217b34fe57f28711da87fedcbdc9be
emc_ipl_0x0D 2.00 7114f1280bb8d105ab04c2e92ee47198
emc_ipl_0x0D 2.01 7114f1280bb8d105ab04c2e92ee47198
emc_ipl_0x0D 2.02 7114f1280bb8d105ab04c2e92ee47198
emc_ipl_0x0D 2.03 7114f1280bb8d105ab04c2e92ee47198
emc_ipl_0x0D 2.04 7114f1280bb8d105ab04c2e92ee47198
emc_ipl_0x0D 2.50 587a68fe4445fa201ae4c189c3c49846
emc_ipl_0x0D 2.51 587a68fe4445fa201ae4c189c3c49846
emc_ipl_0x0D 2.55 587a68fe4445fa201ae4c189c3c49846
emc_ipl_0x0D 2.57 587a68fe4445fa201ae4c189c3c49846
emc_ipl_0x0D 3.00 960fde9389f9bdd850f86f2ad9fa88ad
emc_ipl_0x0D 3.10 960fde9389f9bdd850f86f2ad9fa88ad
emc_ipl_0x0D 3.11 960fde9389f9bdd850f86f2ad9fa88ad
emc_ipl_0x0D 3.15 960fde9389f9bdd850f86f2ad9fa88ad
emc_ipl_0x0D 3.50 c59f900b0a11e9dfac55fa50f40cd40d
emc_ipl_0x0D 3.55 c59f900b0a11e9dfac55fa50f40cd40d
emc_ipl_0x0D 3.70 c59f900b0a11e9dfac55fa50f40cd40d
emc_ipl_0x0D 4.00 8e94da07cc664f887d9885530f92853c
emc_ipl_0x0D 4.01 8e94da07cc664f887d9885530f92853c
emc_ipl_0x0D 4.05 8e94da07cc664f887d9885530f92853c
emc_ipl_0x0D 4.06 8e94da07cc664f887d9885530f92853c
emc_ipl_0x0D 4.07 8e94da07cc664f887d9885530f92853c
emc_ipl_0x0D 4.50 17e29d3a616e13c68220fbe20f75a754
emc_ipl_0x0D 4.55 17e29d3a616e13c68220fbe20f75a754
emc_ipl_0x0D 4.70 7ee5ce05605ced2539ff2ba93e766c44
emc_ipl_0x0D 4.71 7ee5ce05605ced2539ff2ba93e766c44
emc_ipl_0x0D 4.72 7ee5ce05605ced2539ff2ba93e766c44
emc_ipl_0x0D 4.73 7ee5ce05605ced2539ff2ba93e766c44
emc_ipl_0x0D 4.74 7ee5ce05605ced2539ff2ba93e766c44
emc_ipl_0x0D 5.00 cd99d840146286553243e8c1ce16667a
emc_ipl_0x0D 5.01 cd99d840146286553243e8c1ce16667a
emc_ipl_0x0D 5.03 cd99d840146286553243e8c1ce16667a
emc_ipl_0x0D 5.05 cd99d840146286553243e8c1ce16667a
emc_ipl_0x0D 5.07
emc_ipl_0x0D 5.50 371cc4f3f0c6dd284e766113e7b34ee8
emc_ipl_0x0D 5.53 371cc4f3f0c6dd284e766113e7b34ee8
emc_ipl_0x0D 5.55 371cc4f3f0c6dd284e766113e7b34ee8
emc_ipl_0x0D 5.56 4706d6ec326a4e91ab9c2b4769e3e2a7
emc_ipl_0x0D 6.00 4706d6ec326a4e91ab9c2b4769e3e2a7
emc_ipl_0x0D 6.02 4706d6ec326a4e91ab9c2b4769e3e2a7
emc_ipl_0x0D 6.20 4706d6ec326a4e91ab9c2b4769e3e2a7
emc_ipl_0x0D 6.50 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 6.51 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 6.70 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 6.71 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 6.72 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 7.00 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 7.01 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 7.02 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 7.50 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 7.51 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 7.55 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 8.00 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 8.01 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 8.03 94642a952d29a1fefba9e60fac6ffe5c
emc_ipl_0x0D 8.50 42df90f470676fbf456e9962ca885f17
emc_ipl_0x0D 8.52 42df90f470676fbf456e9962ca885f17
emc_ipl_0x0D 9.00 42df90f470676fbf456e9962ca885f17
emc_ipl_0x0D 9.03 42df90f470676fbf456e9962ca885f17
emc_ipl_0x0D 9.04 42df90f470676fbf456e9962ca885f17
emc_ipl_0x0D 9.50 42df90f470676fbf456e9962ca885f17
emc_ipl_0x0D 9.51 42df90f470676fbf456e9962ca885f17
emc_ipl_0x0D 9.60 42df90f470676fbf456e9962ca885f17
emc_ipl_0x0D 10.00 6b77552dfe6f390b3ab9a6ad6460ecf9
emc_ipl_0x0D 10.01 6b77552dfe6f390b3ab9a6ad6460ecf9
emc_ipl_0x0D 10.50 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 10.70 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 10.71 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 11.00 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 11.02 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 11.50 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 11.52 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 12.00 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 12.02 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 12.50 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 12.52 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 13.00 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 13.02 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 13.04 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x0D 13.50 e539774a1f6b55ef74aab9017279c64e
emc_ipl_0x20 2.00 0bdb2b616b964b34845f3c1c2b362a1d
emc_ipl_0x20 2.01 0bdb2b616b964b34845f3c1c2b362a1d
emc_ipl_0x20 2.02 0bdb2b616b964b34845f3c1c2b362a1d
emc_ipl_0x20 2.03 0bdb2b616b964b34845f3c1c2b362a1d
emc_ipl_0x20 2.04 0bdb2b616b964b34845f3c1c2b362a1d
emc_ipl_0x20 2.50 5503170e7e770d8c2c0ae34abe905b65
emc_ipl_0x20 2.51 5503170e7e770d8c2c0ae34abe905b65
emc_ipl_0x20 2.55 5503170e7e770d8c2c0ae34abe905b65
emc_ipl_0x20 2.57 5503170e7e770d8c2c0ae34abe905b65
emc_ipl_0x20 3.00 41363eae2616290c5ef7afb0bf811451
emc_ipl_0x20 3.10 41363eae2616290c5ef7afb0bf811451
emc_ipl_0x20 3.11 41363eae2616290c5ef7afb0bf811451
emc_ipl_0x20 3.15 41363eae2616290c5ef7afb0bf811451
emc_ipl_0x20 3.50 54695eae3a6b15f09b5f970533040e17
emc_ipl_0x20 3.55 54695eae3a6b15f09b5f970533040e17
emc_ipl_0x20 3.70 ded9e797fe30a6e297aa26fda4ad056f
emc_ipl_0x20 4.00 b93f5422c35ec5f8e3dbb92869dc1a3b
emc_ipl_0x20 4.01 b93f5422c35ec5f8e3dbb92869dc1a3b
emc_ipl_0x20 4.05 b93f5422c35ec5f8e3dbb92869dc1a3b
emc_ipl_0x20 4.06 b93f5422c35ec5f8e3dbb92869dc1a3b
emc_ipl_0x20 4.07 b93f5422c35ec5f8e3dbb92869dc1a3b
emc_ipl_0x20 4.50 c5ca2d4873f0b6742dbf99da5f808d5c
emc_ipl_0x20 4.55 c5ca2d4873f0b6742dbf99da5f808d5c
emc_ipl_0x20 4.70 4044bfc903a227051332a937e5281e09
emc_ipl_0x20 4.71 4044bfc903a227051332a937e5281e09
emc_ipl_0x20 4.72 4044bfc903a227051332a937e5281e09
emc_ipl_0x20 4.73 4044bfc903a227051332a937e5281e09
emc_ipl_0x20 4.74 4044bfc903a227051332a937e5281e09
emc_ipl_0x20 5.00 ff5a2ea7e2da7306ed7ccad11bf8dcb4
emc_ipl_0x20 5.01 ec940d26770edd5dfca0c56b87c91922
emc_ipl_0x20 5.03 ec940d26770edd5dfca0c56b87c91922
emc_ipl_0x20 5.05 ec940d26770edd5dfca0c56b87c91922
emc_ipl_0x20 5.07
emc_ipl_0x20 5.50 93997b7ce815dea1815033f4dfb515f9
emc_ipl_0x20 5.53 93997b7ce815dea1815033f4dfb515f9
emc_ipl_0x20 5.55 3bd678212835af21e1bbd85a2b73140c
emc_ipl_0x20 5.56 50c3295e6bfdaec4823574a0251cbec2
emc_ipl_0x20 6.00 50c3295e6bfdaec4823574a0251cbec2
emc_ipl_0x20 6.02 50c3295e6bfdaec4823574a0251cbec2
emc_ipl_0x20 6.20 50c3295e6bfdaec4823574a0251cbec2
emc_ipl_0x20 6.50 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 6.51 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 6.70 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 6.71 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 6.72 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 7.00 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 7.01 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 7.02 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 7.50 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 7.51 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 7.55 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 8.00 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 8.01 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 8.03 29222319e74e1d25c7c99c4edf7859db
emc_ipl_0x20 8.50 96b467e3092b132c8c9036cc5da444cc
emc_ipl_0x20 8.52 96b467e3092b132c8c9036cc5da444cc
emc_ipl_0x20 9.00 96b467e3092b132c8c9036cc5da444cc
emc_ipl_0x20 9.03 96b467e3092b132c8c9036cc5da444cc
emc_ipl_0x20 9.04 96b467e3092b132c8c9036cc5da444cc
emc_ipl_0x20 9.50 96b467e3092b132c8c9036cc5da444cc
emc_ipl_0x20 9.51 96b467e3092b132c8c9036cc5da444cc
emc_ipl_0x20 9.60 96b467e3092b132c8c9036cc5da444cc
emc_ipl_0x20 10.00 febaf63e650be8b3469e0bffe85b6382
emc_ipl_0x20 10.01 febaf63e650be8b3469e0bffe85b6382
emc_ipl_0x20 10.50 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 10.70 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 10.71 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 11.00 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 11.02 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 11.50 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 11.52 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 12.00 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 12.02 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 12.50 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 12.52 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 13.00 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 13.02 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 13.04 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x20 13.50 c1aa7f63ba7aac8c8695970a416e1342
emc_ipl_0x24 3.00 2296c87cff00bd4e3eeea7adab0772b9
emc_ipl_0x24 3.10 2296c87cff00bd4e3eeea7adab0772b9
emc_ipl_0x24 3.11 2296c87cff00bd4e3eeea7adab0772b9
emc_ipl_0x24 3.15 2296c87cff00bd4e3eeea7adab0772b9
emc_ipl_0x24 3.50 de5e54aa34d7f93f4f8fdad3ba798422
emc_ipl_0x24 3.55 de5e54aa34d7f93f4f8fdad3ba798422
emc_ipl_0x24 3.70 1f0fa6a0ee18242bce17b380e406b2d6
emc_ipl_0x24 4.00 c2df68338171336c7719b977042ba2f7
emc_ipl_0x24 4.01 83547df7d50ce912a6ec7f466c4632e0
emc_ipl_0x24 4.05 83547df7d50ce912a6ec7f466c4632e0
emc_ipl_0x24 4.06 dc83fd3d408a52897df957533caedf00
emc_ipl_0x24 4.07 dc83fd3d408a52897df957533caedf00
emc_ipl_0x24 4.50 34df38b47e1159d2760f56fac2a10350
emc_ipl_0x24 4.55 34df38b47e1159d2760f56fac2a10350
emc_ipl_0x24 4.70 59ce92d9143bf0a8edf779b5f855c17b
emc_ipl_0x24 4.71 59ce92d9143bf0a8edf779b5f855c17b
emc_ipl_0x24 4.72 59ce92d9143bf0a8edf779b5f855c17b
emc_ipl_0x24 4.73 59ce92d9143bf0a8edf779b5f855c17b
emc_ipl_0x24 4.74 59ce92d9143bf0a8edf779b5f855c17b
emc_ipl_0x24 5.00 74a6ac42b63410cd39302e8e8472cebb
emc_ipl_0x24 5.01 9f25903e3fbe034e401af559776f922c
emc_ipl_0x24 5.03 9f25903e3fbe034e401af559776f922c
emc_ipl_0x24 5.05 9f25903e3fbe034e401af559776f922c
emc_ipl_0x24 5.07
emc_ipl_0x24 5.50 5d762452ff37c426bdc50aaf5d942cb9
emc_ipl_0x24 5.53 5d762452ff37c426bdc50aaf5d942cb9
emc_ipl_0x24 5.55 70733c72ca33e355778fc18617469a46
emc_ipl_0x24 5.56 f6474a3d99dc5c8a22535e38715c9816
emc_ipl_0x24 6.00 f6474a3d99dc5c8a22535e38715c9816
emc_ipl_0x24 6.02 f6474a3d99dc5c8a22535e38715c9816
emc_ipl_0x24 6.20 f6474a3d99dc5c8a22535e38715c9816
emc_ipl_0x24 6.50 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 6.51 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 6.70 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 6.71 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 6.72 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 7.00 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 7.01 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 7.02 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 7.50 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 7.51 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 7.55 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 8.00 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 8.01 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 8.03 3f19619bdb9b9bcb0ec6e57be8b2e2df
emc_ipl_0x24 8.50 c49b7b9d970643c5886cef603fdff1ba
emc_ipl_0x24 8.52 c49b7b9d970643c5886cef603fdff1ba
emc_ipl_0x24 9.00 c49b7b9d970643c5886cef603fdff1ba
emc_ipl_0x24 9.03 c49b7b9d970643c5886cef603fdff1ba
emc_ipl_0x24 9.04 c49b7b9d970643c5886cef603fdff1ba
emc_ipl_0x24 9.50 c49b7b9d970643c5886cef603fdff1ba
emc_ipl_0x24 9.51 c49b7b9d970643c5886cef603fdff1ba
emc_ipl_0x24 9.60 c49b7b9d970643c5886cef603fdff1ba
emc_ipl_0x24 10.00 421ea7fec14cf827f6380326ab9fe42b
emc_ipl_0x24 10.01 421ea7fec14cf827f6380326ab9fe42b
emc_ipl_0x24 10.50 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 10.70 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 10.71 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 11.00 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 11.02 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 11.50 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 11.52 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 12.00 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 12.02 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 12.50 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 12.52 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 13.00 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 13.02 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 13.04 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x24 13.50 07f41f9ac4370ce7736885ed5fa4372c
emc_ipl_0x2A 3.70 3e7e0402a688d18e34c1a393e69a2be1
emc_ipl_0x2A 4.00 7c499dd0f35af4bc63a13050a64188aa
emc_ipl_0x2A 4.01 7c499dd0f35af4bc63a13050a64188aa
emc_ipl_0x2A 4.05 7c499dd0f35af4bc63a13050a64188aa
emc_ipl_0x2A 4.06 7c499dd0f35af4bc63a13050a64188aa
emc_ipl_0x2A 4.07 7c499dd0f35af4bc63a13050a64188aa
emc_ipl_0x2A 4.50 1147f57e1826bb0305effd5d53d13c6b
emc_ipl_0x2A 4.55 1147f57e1826bb0305effd5d53d13c6b
emc_ipl_0x2A 4.70 2ef9c2d3a8c4ea980a4378a9ce00b935
emc_ipl_0x2A 4.71 2ef9c2d3a8c4ea980a4378a9ce00b935
emc_ipl_0x2A 4.72 2ef9c2d3a8c4ea980a4378a9ce00b935
emc_ipl_0x2A 4.73 2ef9c2d3a8c4ea980a4378a9ce00b935
emc_ipl_0x2A 4.74 2ef9c2d3a8c4ea980a4378a9ce00b935
emc_ipl_0x2A 5.00 0191564a032f195636b5f0bc706950ce
emc_ipl_0x2A 5.01 cf1416fd668b4788e9011e1a77876236
emc_ipl_0x2A 5.03 cf1416fd668b4788e9011e1a77876236
emc_ipl_0x2A 5.05 cf1416fd668b4788e9011e1a77876236
emc_ipl_0x2A 5.07 cf1416fd668b4788e9011e1a77876236
emc_ipl_0x2A 5.50 fd045a2e1d51c30222d90741d7e1c82b
emc_ipl_0x2A 5.53 fd045a2e1d51c30222d90741d7e1c82b
emc_ipl_0x2A 5.55 78910d64832d56c97615ac203fda9b82
emc_ipl_0x2A 5.56 f54cc78136fb62e4aeca87be13f31c6c
emc_ipl_0x2A 6.00 f54cc78136fb62e4aeca87be13f31c6c
emc_ipl_0x2A 6.02 f54cc78136fb62e4aeca87be13f31c6c
emc_ipl_0x2A 6.20 f54cc78136fb62e4aeca87be13f31c6c
emc_ipl_0x2A 6.50 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 6.51 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 6.70 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 6.71 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 6.72 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 7.00 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 7.01 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 7.02 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 7.50 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 7.51 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 7.55 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 8.00 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 8.01 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 8.03 cdb18370e78cadee8a8f449f404cb10c
emc_ipl_0x2A 8.50 1ec53a02094b615655d537dc2528be7c
emc_ipl_0x2A 8.52 1ec53a02094b615655d537dc2528be7c
emc_ipl_0x2A 9.00 1ec53a02094b615655d537dc2528be7c
emc_ipl_0x2A 9.03 1ec53a02094b615655d537dc2528be7c
emc_ipl_0x2A 9.04 1ec53a02094b615655d537dc2528be7c
emc_ipl_0x2A 9.50 1ec53a02094b615655d537dc2528be7c
emc_ipl_0x2A 9.51 1ec53a02094b615655d537dc2528be7c
emc_ipl_0x2A 9.60 1ec53a02094b615655d537dc2528be7c
emc_ipl_0x2A 10.00 3e2b71121300e0bd14c7839671f3502f
emc_ipl_0x2A 10.01 3e2b71121300e0bd14c7839671f3502f
emc_ipl_0x2A 10.50 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 10.70 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 10.71 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 11.00 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 11.02 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 11.50 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 11.52 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 12.00 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 12.02 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 12.50 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 12.52 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 13.00 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 13.02 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 13.04 78bcc7e6fcafd9a5de8c32d5bf802d09
emc_ipl_0x2A 13.50 78bcc7e6fcafd9a5de8c32d5bf802d09
torus_fw_0x03 1.01 e0b7a1d95b571d6a67a12499704166d1
torus_fw_0x03 1.05 e0b7a1d95b571d6a67a12499704166d1
torus_fw_0x03 1.06 e0b7a1d95b571d6a67a12499704166d1
torus_fw_0x03 1.07 e0b7a1d95b571d6a67a12499704166d1
torus_fw_0x03 1.50 e0b7a1d95b571d6a67a12499704166d1
torus_fw_0x03 1.51 e0b7a1d95b571d6a67a12499704166d1
torus_fw_0x03 1.52 e0b7a1d95b571d6a67a12499704166d1
torus_fw_0x03 1.60 cc366b2580d27e3fd37dd1e4a702ebbf
torus_fw_0x03 1.61 cc366b2580d27e3fd37dd1e4a702ebbf
torus_fw_0x03 1.62 cc366b2580d27e3fd37dd1e4a702ebbf
torus_fw_0x03 1.70 c07b72e0829105d916136fc9c6316f22
torus_fw_0x03 1.71 c07b72e0829105d916136fc9c6316f22
torus_fw_0x03 1.72 c07b72e0829105d916136fc9c6316f22
torus_fw_0x03 1.74 c07b72e0829105d916136fc9c6316f22
torus_fw_0x03 1.75 c07b72e0829105d916136fc9c6316f22
torus_fw_0x03 1.76 c07b72e0829105d916136fc9c6316f22
torus_fw_0x03 2.00 c218aeb95817ee01b16bacd5daced815
torus_fw_0x03 2.01 c218aeb95817ee01b16bacd5daced815
torus_fw_0x03 2.02 c218aeb95817ee01b16bacd5daced815
torus_fw_0x03 2.03 c218aeb95817ee01b16bacd5daced815
torus_fw_0x03 2.04 c218aeb95817ee01b16bacd5daced815
torus_fw_0x03 2.50 c218aeb95817ee01b16bacd5daced815
torus_fw_0x03 2.51 c218aeb95817ee01b16bacd5daced815
torus_fw_0x03 2.55 c218aeb95817ee01b16bacd5daced815
torus_fw_0x03 2.57 c218aeb95817ee01b16bacd5daced815
torus_fw_0x03 3.00 d0405148398772dcf178aaa94cc78e97
torus_fw_0x03 3.10 d0405148398772dcf178aaa94cc78e97
torus_fw_0x03 3.11 d0405148398772dcf178aaa94cc78e97
torus_fw_0x03 3.15 d0405148398772dcf178aaa94cc78e97
torus_fw_0x03 3.50 2bfa378760a479fb85fdcc244d078d4d
torus_fw_0x03 3.55 2bfa378760a479fb85fdcc244d078d4d
torus_fw_0x03 3.70 2bfa378760a479fb85fdcc244d078d4d
torus_fw_0x03 4.00 c92a435e395397112c0e62abddf1af68
torus_fw_0x03 4.01 c92a435e395397112c0e62abddf1af68
torus_fw_0x03 4.05 c92a435e395397112c0e62abddf1af68
torus_fw_0x03 4.06 c92a435e395397112c0e62abddf1af68
torus_fw_0x03 4.07 c92a435e395397112c0e62abddf1af68
torus_fw_0x03 4.50 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 4.55 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 4.70 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 4.71 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 4.72 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 4.73 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 4.74 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 5.00 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 5.01 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 5.03 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 5.05 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 5.07 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 5.50 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 5.53 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 5.55 128741df67a726a86f7e9d517cf7c020
torus_fw_0x03 5.56 cee157c6bffede981850e8d05b3535e3
torus_fw_0x03 6.00 cee157c6bffede981850e8d05b3535e3
torus_fw_0x03 6.02 cee157c6bffede981850e8d05b3535e3
torus_fw_0x03 6.20 cee157c6bffede981850e8d05b3535e3
torus_fw_0x03 6.50 317592510814a96f88547d9f255fd80e
torus_fw_0x03 6.51 317592510814a96f88547d9f255fd80e
torus_fw_0x03 6.70 317592510814a96f88547d9f255fd80e
torus_fw_0x03 6.71 317592510814a96f88547d9f255fd80e
torus_fw_0x03 6.72 317592510814a96f88547d9f255fd80e
torus_fw_0x03 7.00 317592510814a96f88547d9f255fd80e
torus_fw_0x03 7.01 317592510814a96f88547d9f255fd80e
torus_fw_0x03 7.02 317592510814a96f88547d9f255fd80e
torus_fw_0x03 7.50 317592510814a96f88547d9f255fd80e
torus_fw_0x03 7.51 317592510814a96f88547d9f255fd80e
torus_fw_0x03 7.55 317592510814a96f88547d9f255fd80e
torus_fw_0x03 8.00 a5669e283c44c083589b038b3674affe
torus_fw_0x03 8.01 a5669e283c44c083589b038b3674affe
torus_fw_0x03 8.03 a5669e283c44c083589b038b3674affe
torus_fw_0x03 8.50 a5669e283c44c083589b038b3674affe
torus_fw_0x03 8.52 a5669e283c44c083589b038b3674affe
torus_fw_0x03 9.00 083b13a5d852873bd0fefb147af9e2c3
torus_fw_0x03 9.03 083b13a5d852873bd0fefb147af9e2c3
torus_fw_0x03 9.04 083b13a5d852873bd0fefb147af9e2c3
torus_fw_0x03 9.50 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 9.51 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 9.60 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 10.00 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 10.01 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 10.50 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 10.70 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 10.71 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 11.00 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 11.02 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 11.50 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 11.52 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 12.00 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 12.02 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 12.50 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 12.52 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 13.00 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 13.02 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 13.04 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x03 13.50 e84fb3af2096d22c7d7b7138ff292b1e
torus_fw_0x22 2.00 fcb057ac11c000d0262c10dc01b677a5
torus_fw_0x22 2.01 fcb057ac11c000d0262c10dc01b677a5
torus_fw_0x22 2.02 fcb057ac11c000d0262c10dc01b677a5
torus_fw_0x22 2.03 fcb057ac11c000d0262c10dc01b677a5
torus_fw_0x22 2.04 fcb057ac11c000d0262c10dc01b677a5
torus_fw_0x22 2.50 4411977892ea7acd74062f0593bcbce7
torus_fw_0x22 2.51 4411977892ea7acd74062f0593bcbce7
torus_fw_0x22 2.55 f3211160a476a0f24de09d720627c20b
torus_fw_0x22 2.57 f3211160a476a0f24de09d720627c20b
torus_fw_0x22 3.00 c0b82b852b7b66a0592b3821ad0fa459
torus_fw_0x22 3.10 c0b82b852b7b66a0592b3821ad0fa459
torus_fw_0x22 3.11 c0b82b852b7b66a0592b3821ad0fa459
torus_fw_0x22 3.15 c0b82b852b7b66a0592b3821ad0fa459
torus_fw_0x22 3.50 11ba78afe8f02cb57ea8d021bc10ec89
torus_fw_0x22 3.55 11ba78afe8f02cb57ea8d021bc10ec89
torus_fw_0x22 3.70 11ba78afe8f02cb57ea8d021bc10ec89
torus_fw_0x22 4.00 0d8d2986a1598d0e954f9e970947c219
torus_fw_0x22 4.01 0d8d2986a1598d0e954f9e970947c219
torus_fw_0x22 4.05 0d8d2986a1598d0e954f9e970947c219
torus_fw_0x22 4.06 0d8d2986a1598d0e954f9e970947c219
torus_fw_0x22 4.07 0d8d2986a1598d0e954f9e970947c219
torus_fw_0x22 4.50 e6140f25a718245346a9a19746c37e8b
torus_fw_0x22 4.55 7ce86e597e28f81f3429f7977d136798
torus_fw_0x22 4.70 44086893f93d68e78bf7922766362480
torus_fw_0x22 4.71 44086893f93d68e78bf7922766362480
torus_fw_0x22 4.72 44086893f93d68e78bf7922766362480
torus_fw_0x22 4.73 44086893f93d68e78bf7922766362480
torus_fw_0x22 4.74 44086893f93d68e78bf7922766362480
torus_fw_0x22 5.00 111bd82cc5507e82ac6b7a539f61d1be
torus_fw_0x22 5.01 111bd82cc5507e82ac6b7a539f61d1be
torus_fw_0x22 5.03 111bd82cc5507e82ac6b7a539f61d1be
torus_fw_0x22 5.05 111bd82cc5507e82ac6b7a539f61d1be
torus_fw_0x22 5.07 111bd82cc5507e82ac6b7a539f61d1be
torus_fw_0x22 5.50 111bd82cc5507e82ac6b7a539f61d1be
torus_fw_0x22 5.53 111bd82cc5507e82ac6b7a539f61d1be
torus_fw_0x22 5.55 111bd82cc5507e82ac6b7a539f61d1be
torus_fw_0x22 5.56 95212a166862040220fbe438f1cb8c2f
torus_fw_0x22 6.00 95212a166862040220fbe438f1cb8c2f
torus_fw_0x22 6.02 95212a166862040220fbe438f1cb8c2f
torus_fw_0x22 6.20 95212a166862040220fbe438f1cb8c2f
torus_fw_0x22 6.50 3531d3656b81d26ba6a2e1660b5cf551
torus_fw_0x22 6.51 3531d3656b81d26ba6a2e1660b5cf551
torus_fw_0x22 6.70 3531d3656b81d26ba6a2e1660b5cf551
torus_fw_0x22 6.71 3531d3656b81d26ba6a2e1660b5cf551
torus_fw_0x22 6.72 3531d3656b81d26ba6a2e1660b5cf551
torus_fw_0x22 7.00 3531d3656b81d26ba6a2e1660b5cf551
torus_fw_0x22 7.01 3531d3656b81d26ba6a2e1660b5cf551
torus_fw_0x22 7.02 3531d3656b81d26ba6a2e1660b5cf551
torus_fw_0x22 7.50 3531d3656b81d26ba6a2e1660b5cf551
torus_fw_0x22 7.51 3531d3656b81d26ba6a2e1660b5cf551
torus_fw_0x22 7.55 3531d3656b81d26ba6a2e1660b5cf551
torus_fw_0x22 8.00 4caac06d8ab4426b1622a86895fc26cc
torus_fw_0x22 8.01 4caac06d8ab4426b1622a86895fc26cc
torus_fw_0x22 8.03 4caac06d8ab4426b1622a86895fc26cc
torus_fw_0x22 8.50 4caac06d8ab4426b1622a86895fc26cc
torus_fw_0x22 8.52 4caac06d8ab4426b1622a86895fc26cc
torus_fw_0x22 9.00 3ee31658fd141fe9df7afb65157a983c
torus_fw_0x22 9.03 3ee31658fd141fe9df7afb65157a983c
torus_fw_0x22 9.04 3ee31658fd141fe9df7afb65157a983c
torus_fw_0x22 9.50 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 9.51 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 9.60 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 10.00 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 10.01 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 10.50 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 10.70 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 10.71 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 11.00 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 11.02 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 11.50 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 11.52 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 12.00 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 12.02 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 12.50 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 12.52 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 13.00 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 13.02 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 13.04 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x22 13.50 50b0085e8917ffca236bb449a81fd3eb
torus_fw_0x30 5.00 2e9656bf7d34c9d978cc1b6a7400d44c
torus_fw_0x30 5.01 2e9656bf7d34c9d978cc1b6a7400d44c
torus_fw_0x30 5.03 2e9656bf7d34c9d978cc1b6a7400d44c
torus_fw_0x30 5.05 2e9656bf7d34c9d978cc1b6a7400d44c
torus_fw_0x30 5.07
torus_fw_0x30 5.50 9f8250b9ba23cceb4f4db9a0c3d36749
torus_fw_0x30 5.53 9f8250b9ba23cceb4f4db9a0c3d36749
torus_fw_0x30 5.55 3cdbd4f6ba2b6f5c80dfc7d7faca5560
torus_fw_0x30 5.56 ab56ac5eba7211c97b3ddd292c08e713
torus_fw_0x30 6.00 ab56ac5eba7211c97b3ddd292c08e713
torus_fw_0x30 6.02 ab56ac5eba7211c97b3ddd292c08e713
torus_fw_0x30 6.20 ab56ac5eba7211c97b3ddd292c08e713
torus_fw_0x30 6.50 a526e7b7f9172d44f54ee2ded62b7a3e
torus_fw_0x30 6.51 a526e7b7f9172d44f54ee2ded62b7a3e
torus_fw_0x30 6.70 a526e7b7f9172d44f54ee2ded62b7a3e
torus_fw_0x30 6.71 a526e7b7f9172d44f54ee2ded62b7a3e
torus_fw_0x30 6.72 a526e7b7f9172d44f54ee2ded62b7a3e
torus_fw_0x30 7.00 56fc530e9bb82185f604e78b66c0974f
torus_fw_0x30 7.01 56fc530e9bb82185f604e78b66c0974f
torus_fw_0x30 7.02 56fc530e9bb82185f604e78b66c0974f
torus_fw_0x30 7.50 56fc530e9bb82185f604e78b66c0974f
torus_fw_0x30 7.51 56fc530e9bb82185f604e78b66c0974f
torus_fw_0x30 7.55 56fc530e9bb82185f604e78b66c0974f
torus_fw_0x30 8.00 2b3e14e420f9d1a2f2c875f73c2fef84
torus_fw_0x30 8.01 3ffa3918cf00178c89cbdab4a398d8bd
torus_fw_0x30 8.03 2b4e421d830649f1423a478ee7cc709a
torus_fw_0x30 8.50 2b4e421d830649f1423a478ee7cc709a
torus_fw_0x30 8.52 2b4e421d830649f1423a478ee7cc709a
torus_fw_0x30 9.00 3cfd09c19cc5eaa2fc889b2c6505c333
torus_fw_0x30 9.03 3cfd09c19cc5eaa2fc889b2c6505c333
torus_fw_0x30 9.04 3cfd09c19cc5eaa2fc889b2c6505c333
torus_fw_0x30 9.50 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 9.51 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 9.60 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 10.00 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 10.01 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 10.50 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 10.70 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 10.71 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 11.00 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 11.02 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 11.50 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 11.52 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 12.00 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 12.02 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 12.50 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 12.52 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 13.00 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 13.02 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 13.04 c23090c0bdce1bcb0f6bada5ef340e4e
torus_fw_0x30 13.50 c23090c0bdce1bcb0f6bada5ef340e4e
================================================
FILE: fws/README.md
================================================
# EMC / EAP / Torus (WiFi + BT) / Syscon
collection of PS4 southbridge/torus/syscon firmwares is separete repository.
Structure: [partition(eap/emc/torus)] / [type] / [fw_range(min-max)]_[md5].2bls
Example: emc/24/1000-1001_421ea7fec14cf827f6380326ab9fe42b.2bls
You can download it here:
https://github.com/andy-man/ps4-ic-fw
Download and put folders (emc/eap/torus/syscon) here.
This will enable additional functions of ps4-wee-tools.
================================================
FILE: lang/_i18n_.py
================================================
#==========================================================
# UI internationalization
# part of ps4 wee tools project
#==========================================================
import sys, os
from utils.utils import APP_CONFIG
APP_VERSION = '1.0.4'
# Colors stuff
use_clr = True
# win terminal doesn't support colors before win 10
if sys.platform[:3] == 'win' and sys.getwindowsversion().major < 10:
use_clr = False
class Clr:
reset ='\033[0m' if use_clr else ''
bold ='\033[01m' if use_clr else ''
disable ='\033[02m' if use_clr else ''
underline ='\033[04m' if use_clr else ''
reverse ='\033[07m' if use_clr else ''
invisible ='\033[08m' if use_clr else ''
strike ='\033[09m' if use_clr else ''
class fg:
black ='\033[30m' if use_clr else ''
red ='\033[31m' if use_clr else ''
green ='\033[32m' if use_clr else ''
orange ='\033[33m' if use_clr else ''
blue ='\033[34m' if use_clr else ''
purple ='\033[35m' if use_clr else ''
cyan ='\033[36m' if use_clr else ''
l_grey ='\033[37m' if use_clr else ''
d_grey ='\033[90m' if use_clr else ''
l_red ='\033[91m' if use_clr else ''
l_green ='\033[92m' if use_clr else ''
yellow ='\033[93m' if use_clr else ''
l_blue ='\033[94m' if use_clr else ''
pink ='\033[95m' if use_clr else ''
l_cyan ='\033[96m' if use_clr else ''
class bg:
black ='\033[40m' if use_clr else ''
red ='\033[41m' if use_clr else ''
green ='\033[42m' if use_clr else ''
orange ='\033[43m' if use_clr else ''
blue ='\033[44m' if use_clr else ''
purple ='\033[45m' if use_clr else ''
cyan ='\033[46m' if use_clr else ''
l_grey ='\033[47m' if use_clr else ''
# UI stuff
class UI:
LINE_WIDTH = 70
STATUS_TXT = ''
STATUS_CLR = ''
DIVIDER = Clr.fg.yellow + '_'*LINE_WIDTH + Clr.reset + '\n'
DIVIDER_DASH = Clr.fg.yellow + '-'*LINE_WIDTH + Clr.reset + '\n'
DIVIDER_BOLD = '='*LINE_WIDTH + '\n'
def clearScreen():
os.system('cls' if sys.platform[:3] == 'win' else 'clear')
# Colors
def link(str):
return Clr.underline + Clr.fg.cyan + str + Clr.reset
def cyan(str):
return Clr.fg.cyan + str + Clr.reset
def highlight(str):
return Clr.fg.yellow + str + Clr.reset
def error(str):
return Clr.fg.red + str + Clr.reset
def warning(str):
return Clr.fg.orange + str + Clr.reset
def dark(str):
return Clr.fg.d_grey + str + Clr.reset
def green(str):
return Clr.fg.green + str + Clr.reset
# Funcs
def clearInput(n = 1):
for i in range(n):
print('\033[1A' + '\033[K', end='')
def setTitle(str = ''):
if sys.platform[:3] == 'win':
os.system('title ' + (str if str else APP_NAME.strip()))
@classmethod
def getTab(cls, str):
return Clr.fg.yellow+' _'+('_'*len(str))+'_\n'+('_/ '+str+' \_').ljust(cls.LINE_WIDTH, '_')+'\n'+Clr.reset
def getTable(data, pad=16):
table = []
for key in data:
if data[key] == '':
continue
table.append(' {} : {}'.format(('%s'%key).ljust(pad,' '),data[key]))
return table
@classmethod
def showTable(cls, data, pad=16):
table = cls.getTable(data, pad)
print('\n'.join(table))
@classmethod
def showTableEx(cls, data, cols = 2, width = False):
width = width if width else cls.LINE_WIDTH // cols
rows = (len(data) // cols) + (1 if len(data) % cols else 0)
lines = [''] * rows
for i in range(len(data)):
lines[i % rows] += data[i].ljust(width, ' ')
print('\n'.join(lines))
def getMenu(menu, start=0):
lines = []
if type(menu) is dict:
for n in menu:
lines.append(' %s: %s'%(n,menu[n]))
else:
for n, text in enumerate(menu):
lines.append(' '+str(n+start)+': '+text)
return lines
@classmethod
def showMenu(cls, menu, start=0):
lines = cls.getMenu(menu, start)
print('\n'.join(lines))
@classmethod
def setStatus(cls, v, clr = Clr.fg.yellow):
cls.STATUS_TXT = v
cls.STATUS_CLR = clr
@classmethod
def showStatus(cls):
if cls.STATUS_TXT:
print(cls.DIVIDER_DASH + cls.STATUS_CLR + cls.STATUS_TXT + Clr.reset)
cls.STATUS_TXT = ''
# Common strings (used in lang files)
STR_080B = Clr.fg.cyan+'"08-0B"'+Clr.reset
STR_0C0F = Clr.fg.orange+'"0C-0F"'+Clr.reset
STR_2023 = Clr.fg.red+'"20-23"'+Clr.reset
# Lang stuff
LANG_LIST = {
'en': 'English',
'es': 'Spanish',
'ru': 'Russian',
'pt': 'Portuguese',
'pl': 'Polish',
}
LANG_CODE = APP_CONFIG.get('lang')
# Import LANG file
from lang.en import *
if LANG_CODE == 'ru':
from lang.ru import *
elif LANG_CODE == 'es':
from lang.es import *
elif LANG_CODE == 'pt':
from lang.pt import *
elif LANG_CODE == 'pl':
from lang.pl import *
APP_NAME = ' PS4 weeTools v' + APP_VERSION
TITLE = UI.DIVIDER_BOLD + APP_NAME+('by Andy_maN').rjust(UI.LINE_WIDTH-len(APP_NAME)-1)+'\n' + UI.DIVIDER_BOLD
# Fill strings
STR_MPATCH_INPUT = UI.DIVIDER + STR_MPATCH_INPUT
STR_CHOICE = UI.DIVIDER + STR_CHOICE
STR_BACK = UI.DIVIDER + STR_BACK
STR_MEMCLOCK_INPUT = UI.DIVIDER + STR_MEMCLOCK_INPUT
STR_SAMU_INPUT = UI.DIVIDER + STR_SAMU_INPUT
STR_CONFIRM = UI.DIVIDER + STR_CONFIRM
STR_APP_HELP = STR_APP_HELP + UI.link('https://github.com/andy-man/ps4-wee-tools')
STR_INFO_HDD_EAP = STR_INFO_HDD_EAP + UI.link('https://www.psdevwiki.com/ps4/Mounting_HDD_in_Linux')
STR_INFO_EMC_CFW = STR_INFO_EMC_CFW + UI.link('https://www.psdevwiki.com/ps4/Southbridge')
STR_INFO_SPIWAY = STR_INFO_SPIWAY + UI.link('https://www.psdevwiki.com/ps4/SPIway')
STR_INFO_SCF = STR_INFO_SCF + UI.link('https://github.com/AbkarinoMHM/PS4SysconTools')
STR_INFO_FW_LINK = STR_INFO_FW_LINK + UI.link('https://github.com/andy-man/ps4-ic-fw')
STR_INFO_SC_MPATCH = STR_INFO_SC_MPATCH%(STR_080B, STR_0C0F, STR_2023, STR_080B)
# Colorize strings
STR_DONE = Clr.fg.yellow+ STR_DONE + Clr.reset
STR_NOT_FOUND = Clr.fg.red + STR_NOT_FOUND + Clr.reset
STR_BAD_SIZE = Clr.fg.orange + STR_BAD_SIZE + Clr.reset
STR_DIFF = Clr.fg.orange + STR_DIFF + Clr.reset
STR_FAIL = Clr.fg.red + STR_FAIL + Clr.reset
STR_OK = Clr.fg.green + STR_OK + Clr.reset
STR_ABORT = Clr.fg.red + STR_ABORT + Clr.reset
================================================
FILE: lang/en.py
================================================
#==========================================================
# Default language [EN]
# part of ps4 wee tools project
# https://github.com/andy-man/ps4-wee-tools
#==========================================================
MENU_SC_REBUILD_MODES = [
'Normal mode (Choose FW, default values for rest / All (12) types)',
'Minimal setup (Choose first two types and FW / 3 types)',
'Expert mode (Adjust all (12) types)',
]
MENU_NVS_COPY = [
'Replace %s with backup (%s <= %s)',
'Replace backup with %s (%s => %s)',
]
MENU_EAP_KEYS = [
'Replace A with B (key_a <= key_b)',
'Replace B with A (key_a => key_b)',
'Fix magic A *',
'Fix magic B *',
'Generate new A,B keys (length 0x60) *',
'Generate new A,B keys (length 0x40) *',
'Clean key B *',
]
MENU_FLASHER = [
'Read all',
'Read area',
'Read block',
'Write all',
'Write area',
'Write block',
'Verify all',
'Verify area',
'Verify block',
'Erase all',
'Erase area',
'Erase block',
]
MENU_SERIAL_MONITOR = {
'Ctrl+Q':'quit monitor',
'Ctrl+R':'restart monitor',
'Ctrl+E':'toggle EMC cmd mode',
'Ctrl+B':'show bytecodes < 0x20',
'Ctrl+L':'log to file',
}
MENU_TOOL_SELECTION = [
'File browser',
'Terminal (UART)',
'sFlash r/w (SPIway by Judges)',
'Syscon r/w (SCTool by Abkarino & EgyCnq)',
'Syscon r/o (SCRead by DarkNESmonk)',
'Syscon w/o (For stock Renesas RL78)',
'Change app\'s language',
'Exit',
]
MENU_FILE_SELECTION = {
'a':'Show all files / Toggle filters [bin,pup]',
'f':'Build sflash0 dump',
'b':'Build 2BLS/PUP',
'r':'Batch rename (extract dump info to filename)',
'c':'Compare files in current folder',
'q':'Quit / Go back',
}
MENU_EXTRA_FLASHER = {
's':'Select file',
'f':'Launch Tool for this file',
'q':'Quit / Go back',
}
MENU_EXTRA = {
's':'Select another file',
'f':'Flash this file (full/parts) back to IC',
'r':'Rename file to canonical name',
'q':'Quit / Go back',
}
MENU_SFLASH_ACTIONS = [
'Flags (UART, RNG, Memtest, etc)',
'Memory clocking (GDDR5)',
'SAMU boot flag',
'Switch CoreOS slot (FW revert)',
'Legit CoreOS Patch',
'Patch Southbridge',
'Patch Torus (WiFi+BT)',
'Additional tools',
]
MENU_SFLASH_ADV_ACTIONS = [
'Extract partitions from sFlash0',
'Build sFlash0 from extracted files',
'View / Recover NVS areas (1C9, 1CA)',
'View / Recover EAP key',
'Get HDD keys = decrypt EAP key = create [keys.bin]',
'Create EMC cfw (only for Fat 1xxx/11xx)',
'Base validation and entropy stats',
'Analyze and recover of corrupted partition',
]
MENU_SC_ACTIONS = [
'Toggle Debug',
'Auto SNVS patch',
'SNVS block viewer',
'NVS block viewer',
'Manual SNVS patch',
'Additional tools',
]
MENU_SC_ADV_ACTIONS = [
'Reset SNVS counters',
'Mode select (00-03)',
'Boot modes (04-07)',
'Rebuild Syscon\'s SNVS (Factory Reset)',
'Recover Syscon\'s FW',
'Convert for Renesas flasher (Motorolla S28)',
]
MENU_PATCHES = [
'Method A - last 08-0B will be deleted (4 records)',
'Method B - last 08-0B and below will be cleaned (%d records)',
'Method C - clean everything below previous 08-0B (%d records)',
'Method D - clean everything below last 08-0B (%d records)',
'Method E - clean previous 08-0B and below (%d records)',
]
MENU_SC_STATUSES = [
'Overwritten CoreOs slot',
'Patchable',
'Already patched or stuck on update',
'Probably patchable',
]
MENU_SPW_ACTS = {
'read': 'Reading',
'write': 'Writing',
'verify': 'Verifying',
'erase': 'Erasing',
}
STR_LANGUAGE = 'Language'
STR_SECONDS = '%0.0f seconds'
STR_NVS_AREAS = 'NVS areas'
STR_PORTS_LIST = 'Serial ports'
STR_MAIN_MENU = 'Main menu'
STR_FILE_LIST = 'Files list'
STR_SFLASH_INFO = 'sFlash dump info'
STR_ADDITIONAL = 'Additional tools'
STR_SYSCON_INFO = 'Syscon dump info'
STR_COMPARE = 'Compare'
STR_HELP = 'Help'
STR_ACTIONS = 'Actions'
STR_COREOS_SWITCH = 'CoreOS slot switch'
STR_SWITCH_PATTERNS = 'Switch patterns'
STR_MEMCLOCK = 'Memory clock'
STR_SAMU_BOOT = 'SAMU boot'
STR_SYSFLAGS = 'System flags'
STR_NVS_ENTRIES = 'Syscon %s entries'
STR_APATCH_SVNS = 'SNVS auto patching'
STR_MPATCH_SVNS = 'SNVS manual patcher'
STR_SFLASH_VALIDATOR = 'sFlash validator'
STR_SFLASH_FLAGS = 'sFlash flags'
STR_SFLASH_EXTRACT = 'sFlash extractor'
STR_SFLASH_BUILD = 'sFlash builder'
STR_HDD_KEY = 'HDD eap key'
STR_2BLS_BUILDER = '2BLS builder'
STR_UNPACK_2BLS = '2BLS unpacker'
STR_UNPACK_PUP = 'Decrypted PUP unpacker'
STR_EMC_CFW = 'EMC CFW (Aeolia)'
STR_EAP_KEYS = 'EAP keys'
STR_SC_BOOT_MODES = 'Bootmode records'
STR_INFO = 'Info'
STR_SC_READER = 'Syscon reader'
STR_SPIWAY = 'SPIway by Judges & Abkarino'
STR_SCF = 'Syscon Flasher by Abkarino & EgyCnq'
STR_LEG_PATCH = 'Legitimate CoreOS Patch'
STR_PART_RECOVERY = 'Partition recovery'
STR_PART_ANALYZE = 'Partition analyzing'
STR_PART_LIST = 'Partitions list'
STR_PARTS_INFO = 'Partitions info'
STR_WIFI_PATCHER = 'WiFi patcher'
STR_SB_PATCHER = 'Southbridge patcher'
STR_RL78FLASH = 'RL78 Flasher'
STR_SC_REBUILDER = 'Syscon Rebuilder'
STR_ALL = 'All'
STR_UNIQUE = 'Unique'
STR_BACKUP = 'Backup'
STR_EQUAL = 'Equal'
STR_NOT_EQUAL = 'Not equal'
STR_NO_INFO = '- No info -'
STR_OFF = 'Off'
STR_ON = 'On'
STR_WARNING = 'Warning'
STR_HELP = 'Help'
STR_UNKNOWN = '- Unknown -'
STR_YES = 'Yes'
STR_NO = 'No'
STR_PROBABLY = 'Probably'
STR_NOT_SURE = 'not sure'
STR_DIFF = 'Different'
STR_NOT_FOUND = 'not found'
STR_BAD_SIZE = 'bad size'
STR_OK = 'OK'
STR_FAIL = 'Fail'
STR_CANCEL = 'Cancel'
STR_IS_PART_VALID = '[%s] %s FW %s'
STR_SNVS_ENTRIES = '%d records found at 0x%05X'
STR_SERIAL_MONITOR = 'Terminal'
STR_ELAPSEDTIME = 'Elapsed time'
STR_NO_PORT_CHOSEN = ' No port was chosen'
STR_NO_PORTS = ' No one serial port was found'
STR_PORT_UNAVAILABLE = ' Selected port is unavailable'
STR_PORT_CLOSED = ' Port is closed'
STR_STOP_MONITORING = ' Monitoring was stopped by user'
STR_RESTART_APP = ' Restart App to apply changes'
STR_GENERATE_ALL_PS = ' Generate all patches'
STR_ACTION_NA = ' No action is available %s'
STR_EMC_CFW_WARN = ' Currently EMC CFW is only for 10xx/11xx PS4 Fat'
STR_EMC_NOT_FOUND = ' EMC FW was not found'
STR_DECRYPTING = ' Decrypting'
STR_ENCRYPTING = ' Encrypting'
STR_PATCHING = ' Patching'
STR_EXPERIMENTAL = ' * - experimental functions'
STR_PERFORMED = ' Performed action: '
STR_EMPTY_FILE_LIST = ' File list is empty'
STR_NO_FOLDER = ' Folder %s doesn\'t exists'
STR_EXTRACTING = ' Extracting sflash0 to %s folder'
STR_FILES_CHECK = ' Checking files'
STR_BUILDING = ' Building file %s'
STR_DONE = ' All done'
STR_PROGRESS = ' Progress %02d%% '
STR_PROGRESS_KB = ' Progress: %dKB / %dKB'
STR_WAIT = ' Please wait...'
STR_WAITING = ' Waiting...'
STR_SET_TO = ' %s was set to [%s]'
STR_ABORT = ' Action was aborted'
STR_FILENAME = ' Filename: '
STR_VALIDATE_NVS_CHECK = ' Checking NVS areas'
STR_ACT_SLOT = ' Active slot: %s [0x%02X]'
STR_NIY = ' This feature is available in PRO version only'
STR_CLEAN_FLAGS = ' Clean all system flags'
STR_UNK_FILE_TYPE = ' Unknown file type'
STR_UNK_CONTENT = ' Unknown content'
STR_UART = ' UART is set to '
STR_DEBUG = ' Syscon debug is set to '
STR_DIFF_SLOT_VALUES = ' Values in slots are different!'
STR_SYSFLAGS_CLEAN = ' Sys flags were cleared. Tip: turn on UART'
STR_SAMU_UPD = ' SAMU flag was set to '
STR_DOWNGRADE_UPD = ' Slot switch was set to: '
STR_LAST_SC_ENTRIES = ' Showing last [%d/%d] entries of active block [%d]'
STR_MEMCLOCK_SET = ' GDDR5 frequency was set to %dMHz [0x%02X]'
STR_RECOMMEND = ' Recommended method [%s]'
STR_PATCH_CANCELED = ' Patch was canceled'
STR_PATCH_SUCCESS = ' Successfully removed %d entries'
STR_PATCH_SAVED = ' Patch was saved to %s'
STR_RENAMED = ' Renamed to %s'
STR_SC_BLOCK_SELECT = ' Select data block [0-%d] | View Flat/Block [f] '
STR_MPATCH_INPUT = ' How many records to clean (from end): '
STR_CHOICE = ' Make choice: '
STR_BACK = ' Press [ENTER] to go back'
STR_MEMCLOCK_INPUT = ' Setup frequency [400 - 2000] / [0 set default (0xFF)] MHz '
STR_SAMU_INPUT = ' Setup SAMU [0 - 255] / [default is 255 (0xFF)] '
STR_TOO_MUCH = ' %d is too much, maximum value is %d'
STR_SC_BLOCK_CLEANED = ' Block [%d] was entirely cleaned'
STR_OWC_RESET_REQUIRED = ' You need reset SNVS counters at first to perform this action'
STR_SC_NO_BM = ' Boot modes records were not found!'
STR_UNPATCHABLE = ' Can\'t patch!'
STR_SYSCON_BLOCK = ' Block [%d/%d] has [%d/%d] entries | Active block is [%d]\n'
STR_PARTITIONS_CHECK = ' Checking partitions'
STR_ENTROPY = ' Entropy statistics'
STR_MAGICS_CHECK = ' Checking magics'
STR_DUPLICATES = ' %d duplicate(s) found [%s]'
STR_SC_WARN_OVERWITTEN = ' Warning: CoreOS is probably overwritten'
STR_SNVS_ENTRY_INFO = 'Block %d #%03d Offset 0x%04X'
STR_SC_TOGGLE_FLATDATA = 'Toggle between Flat/Block'
STR_SH_DUPLICATES = 'Show / Hide duplicates'
STR_NO_ENTRIES = 'No entries found'
STR_SKIPPED = 'Skipped'
STR_SKIP_ENTRY = 'Skip this type of entry'
STR_NO_FILE_SEL = 'No file selected'
STR_INCORRECT_SIZE = ' %s has incorrect dump size!'
STR_FILE_NOT_EXISTS = ' File %s doesn\'t exist!'
STR_FILE_EXISTS = ' Filename already exists!'
STR_ERROR_FILE_REQ = ' You need to select file first'
STR_SAVED_TO = ' Saved to %s'
STR_ERROR_INPUT = ' Incorrect input'
STR_ERROR_DEF_VAL = ' Setting default values'
STR_ERROR_CHOICE = ' Invalid choice'
STR_ERROR_INFO_READ = ' Error while reading file data'
STR_OUT_OF_RANGE = ' Value is out of range!'
STR_FILES_MATCH = ' Files are equal'
STR_FILES_MISMATCH = ' Files mismatch'
STR_SIZES_MISMATCH = ' Sizes mismatch!'
STR_RENAMED_COUNT = ' %d files were renamed'
STR_FW_RECORDS = ' FW versions - from Current(1) to Initial(%d)'
STR_SELECT_MODEL = ' Select model:'
STR_SHOW_DETAILS = ' Show details?'
STR_Y_OR_CANCEL = ' [y - yes, * - cancel] '
STR_CHOOSE_AREA = ' Choose area: '
STR_INPUT_SEL_DUMP = ' Select second dump?'
STR_INPUT_DESTROY_PREV = ' Destroy all previous FW (08-0B) records?'
STR_INPUT_BLOCK = ' Input start block [count]: '
STR_INPUT_SAVE_IM = ' Save all intermediate files?'
STR_INPUT_USE_SLOTB = ' Use slot B (active)?'
STR_USE_NEWBLOBS = ' Use new key blobs?'
STR_CONFIRM_SEPARATE = ' Save as separate file?'
STR_CONFIRM = ' Input [y] to continue: '
STR_CURRENT = ' Current: '
STR_GO_BACK = ' Go back'
STR_SC_BM_SELECT = ' Select boot mode variant [1-%d] '
STR_OPEN_IN_SC_TOOL = ' Open file in Syscon Tool?'
STR_FLASH_FILE = ' Flash this file to IC?'
STR_READING_DUMP_N = ' Reading dump %d'
STR_CHIP_NOT_RESPOND = ' Chip doesn\'t respond, check wiring and push reset button'
STR_HOW_MUCH_DUMPS = ' How much dumps to read? [max 10] '
STR_EMC_CMD_MODE = 'Turning EMC cmd mode: [%s]'
STR_SHOW_BYTECODES = 'Show byte codes < 0x20: [%s]'
STR_MONITOR_STATUS = 'RX/TX: %d/%d (bytes) Elapsed: %d (sec)'
STR_CHIP_CONFIG = ' Chip config'
STR_FILE_INFO = ' File info'
STR_VERIFY = ' Verify'
STR_SPW_PROGRESS = 'Block %03d [%d KB / %d KB] %d%% %s '
STR_SPW_ERROR_CHIP = 'Unsupported chip!'
STR_SPW_ERROR_VERSION = 'Unsupported version! (v%d.%02d required)'
STR_SPW_ERROR_ERASE = 'Error erasing chip!'
STR_SPW_ERROR_ERASE_BLK = 'Block %d - error erasing block'
STR_SPW_ERROR_DATA_SIZE = 'Incorrect data size %d'
STR_SPW_ERROR_LENGTH = 'Incorrect length %d != %d!'
STR_SPW_ERROR_BLK_CHK = 'Error! Block verification failed (block=%d)'
STR_SPW_ERROR_WRITE = 'Error while writing!'
STR_SPW_ERROR_READ = 'Teensy receive buffer timeout! Disconnect and reconnect Teensy!'
STR_SPW_ERROR_VERIFY = 'Verification error!'
STR_SPW_ERROR_PROTECTED = 'Device is write-protected!'
STR_SPW_ERROR_UNKNOWN = 'Received unknown error!'
STR_SPW_ERROR_UNK_STATUS= 'Unknown status code!'
STR_SPW_ERR_BLOCK_ALIGN = 'Expecting file size to be a multiplication of block size: %d'
STR_SPW_ERR_DATA_SIZE = 'Data is %d bytes long (expected %d)!'
STR_SPW_ERR_OVERFLOW = 'Chip has %d blocks. Writing outside the chip\'s capacity!'
STR_SCF_ERROR_VERSION = 'Unsupported version! (v%d.%02d required)'
STR_SCF_ERROR_WRITE_BLK = 'Error writing block %d'
STR_SCF_ERROR_ERASE_BLK = 'Error erasing block %d'
STR_SCF_ERROR_READ_BLK = 'Error reading block %d'
STR_SCF_ERROR_ERASE_CHIP= 'Error during chip erasing'
STR_SCF_ERR_INT = 'Error during initialization'
STR_SCF_ERR_READ = 'Read error'
STR_SCF_ERR_ERASE = 'Erase error'
STR_SCF_ERR_WRITE = 'Write error'
STR_SCF_ERR_CMD_LEN = 'Incorrect command length'
STR_SCF_ERR_CMD_EXEC = 'Error while executing command'
STR_SCF_ERR_UNKNOWN = 'Received unknown error!'
STR_SCF_ERR_UNK_STATUS = 'Unknown status code!'
STR_SCF_SAFE_ERASE = ' Safe erase starting at block #%03d'
STR_CANT_USE = 'Can\'t use this'
STR_DIFF_SN = 'Serial numbers are different!'
STR_SSP_EQUAL = 'Slot switch patterns are equal!'
STR_LP_FIRST_DUMP = 'First dump'
STR_LP_SECOND_DUMP = 'Second dump'
STR_CONVERTING_S28 = ' Converting to S28 format'
STR_S28_ALREADY = ' File format is S28'
STR_USE_EXPERT_M = ' Choose another model or use expert mode!'
STR_ERR_NO_FW_FOUND = ' Error: Can not find %s for FW %s in DB'
STR_EXPERT_MODE = ' Expert mode?'
STR_SELECT_FW_VER = ' Select fw version'
STR_MODEL = ' Model'
STR_FW_VER = ' FW: %s / Slot: %s'
STR_SELECT_MOST_FILE = ' Select most relevant file: '
STR_NO_FW_FILES = ' Files are not found! Download files to fws folder:\n [%s]'
STR_ABOUT_SC_REBUILDER = 'About Syscon Rebuilder'
STR_INFO_SC_REBUILDER = ''\
' This util will help you to create custom version of Syscon.\n'\
' You can adjust each type of records in expert mode.\n'\
' Entries are sorted from current to past.\n'\
' * To select previous FW you need to input "2" or more.\n'\
' * Minimal setup consists of 3 types (00-03 + 04-07 + 08-0B)'
STR_ABOUT_RL78FLASH = 'About Stock Syscon'
STR_INFO_RL78FLASH = ''\
' In order to write new blank syscon chip (Renesas RL78G10)\n'\
' you need USB to TTL adapter, wires and some diodes.\n'\
' Wiring diagram can be found in assets/hw/l78flash folder'\
STR_ABOUT_NVS = 'About NVS recovery'
STR_INFO_NVS = ''\
' Swaps corrupted block with backup data (not suitable for 10xx/11xx)\n'\
' Warning - UART and other flags may be overwritten.\n'\
' If you need to set some flags do it after NVS recovery!\n'\
STR_ABOUT_TORUS_PATCH = 'About WiFi patcher'
STR_INFO_TORUS_PATCH = ''\
' Will be useful in case of:\n'\
' - corrupted Torus (WiFi+BT) FW\n'\
' - switching to another IC module'\
STR_ABOUT_SB_PATCH = 'About Southbridge patcher'
STR_INFO_SB_PATCH = ''\
' Will be useful in case of:\n'\
' - corrupted Southbridge FW or "EMC VERSION DOWN" errors\n'\
' - switching to another IC module (CXD90046 => CXD90036)\n'\
' - replacement of APU bundles (21xx => 22xx, 71xx => 72xx)'
STR_INFO_FLASH_TOOLS = ''\
' Flash tools (spiway & syscon flasher) are experimental! Be careful.'\
STR_ABOUT_PART_RECOVERY = 'Partition analyzing and recovery'
STR_INFO_PART_A_R = ''\
' Compares every byte of (SFlash/Syscon) partition with valid files\n'\
' and shows percentage of similarity.\n'\
' Most equal files will be at top of the list.\n'\
' Keep in mind that Southbridge FW consists of emc + eap'
STR_INFO_FW_LINK = ''\
' Put valid emc/eap/torus/syscon files to /fws/ folder\n'\
' You can download it from this repo:\n '
STR_ABOUT_LEG_PATCH = 'About Legitimate CoreOS Patch'
STR_INFO_LEG_PATCH = ''\
' This method is only suitable for working consoles!\n'\
' Because it requires updating via PS4 safe menu\n'\
'\n'\
' 1) Read first dump (if you\'ve not done it already)\n'\
' 2) Update the console to the SAME version via safe mode\n'\
' 3) Read second dump (both slots have equal FW)\n'\
'\n'\
' Now you can patch first dump with data from second one\n'\
' You can drag&drop 2 dumps on wee-tools shortcut to speed up'
STR_ABOUT_SCF = 'About Syscon Flasher'
STR_INFO_SCF = ''\
' Syscon Flasher allows you to r/w original PS4 syscon chip (RL78/G13)\n'\
' Flasher supports only A0x-COLx syscon models\n'\
' Currently hardware part is based on Teensy boards (2.0++/4.0/4.1)\n'\
' Look at for diagrams and Teensy\'s FW\n'\
' More info here: '
STR_ABOUT_SPIWAY = 'About SPIway'
STR_INFO_SPIWAY = ''\
' SPIway - sflash r/w with random block access support (Teensy++ 2.0)\n'\
' Look at folder for diagrams and Teensy\'s FW\n'\
' More info at PSDevWiki: '
STR_ABOUT_SC_GLITCH = 'About Syscon Glitch'
STR_INFO_SC_GLITCH = ''\
' Syscon reader by DarkNESmonk (Arduino Nano V3 CH340)\n'\
' Look at folder for more info'
STR_ABOUT_SC_BOOTMODES = 'About boot modes'
STR_INFO_SC_BOOTMODES = ''\
' Boot mode records are encrypted, so we can\'t detect its purpose\n'\
' You should try each of them by yourself to determine what is it for\n'\
' Keep in mind: some records may have duplicates (marked with color)'
STR_OVERCLOCKING = ''\
' Dangerous operation!\n\n'\
' Most GDDR5 runs at 6000-8000 MHz. GDDR5 is quad pumped [x4]\n'\
' GDDR5 at 8000 MHz technically runs at 2000 MHz\n'\
' If you have problems, decrease frequency to 1000 MHz\n'\
'\n'\
' Effective GDDR5 clock is 1350 MHz\n'\
' The frequency is selected experimentally\n'\
' - Too high value can lead to LOADBIOS -8 or DCT [*] error\n'\
' - Too low value leads to AMDINIT error'
STR_ABOUT_EAPKEYS = 'About EAP keys'
STR_INFO_EAPKEYS = ''\
' Eap key may be 0x40 and 0x60 bytes length\n'\
' PS4 10xx/11xx models usually have only one key\n'\
' And 12xx/Slim/PRO models have backup key\n'\
STR_IMMEDIATLY = ''\
' Be careful: All patches are applied immediately to the file!'
STR_PATCHES = STR_IMMEDIATLY + '\n'\
' Will switch value between available values for chosen option'
STR_DOWNGRADE = ''\
' Dangerous operation!\n\n'\
' Slot switching is used for FW revert (downgrade).\n'+\
' It also fixes "loadbios" error.\n'\
' Make sure you have backup of stock sFlash dump and SYSCON.\n'\
' Syscon patching required! Otherwise you\'ll get "loadbios" error.\n'\
' Console will not boot normally.'
STR_ABOUT_MPATCH = 'Manual patch instructions'
STR_INFO_SC_MPATCH = ''\
' Every record has 16 bytes length. First byte is always "A5"\n'\
' The second byte is record "type" usually in range [0x00-0x30]\n'\
' Firmware update takes 4 records with types %s\n'\
' To cancel last fw update we need to clean these 4 records (fill 0xFF)\n'\
' If there are %s,%s types after %s patch is impossible\n'\
' backup slot is already overwritten, you\'ll got checkUpdVersion error'
STR_ABOUT_EAP = 'About EAP keys'
STR_INFO_HDD_EAP = ''\
' These keys allow you to explore PS4 HDD files with PC\n'\
' You can find additional info by visiting:\n '\
STR_ABOUT_EMC_CFW = 'About EMC CFW'
STR_INFO_EMC_CFW = ''\
' Use at your own risk!\n'\
' Only for Aeolia (PS4 Fat 10xx/11xx)\n'\
' Grants control over the southbridge and syscon\n\n'\
' Additional info:\n '
STR_APP_HELP = ''\
' Usage: ps4-wee-tools [params] \n'\
'\n'\
' Params: \n\n'\
' : load appropriate tool for supplied file\n'\
' : build dump with files from supplied folder\n'\
' ... : compare files (with MD5 info)\n'\
' --help : show this help screen\n'\
'\n'\
' Homepage: '
================================================
FILE: lang/es.py
================================================
#==========================================================
# Spanish language [ES]
# part of ps4 wee tools project
# https://github.com/andy-man/ps4-wee-tools
#==========================================================
MENU_SC_REBUILD_MODES = [
'Modo normal (Elija FW, valores predeterminados para reposo / Todos (12) tipos)',
'Configuración mínima (Elija los primeros dos tipos y FW/3 tipos)',
'Modo experto (Ajustar todos los (12) tipos)',
]
MENU_NVS_COPY = [
'Reemplazar %s con copia de seguridad (%s <= %s)',
'Reemplazar copia de seguridad con %s (%s => %s)',
]
MENU_EAP_KEYS = [
'Reemplazar A con B (key_a <= key_b)',
'Reemplazar B con A (key_a => key_b)',
'Reparar magia A*',
'Reparar magia B*',
'Generar nuevas claves A,B (longitud 0x60) *',
'Generar nuevas claves A,B (longitud 0x40) *',
'Limpiar tecla B*',
]
MENU_FLASHER = [
'Lee todo',
'Área de lectura',
'Leer bloque',
'Escribir todo',
'Área de escritura',
'Bloque de escritura',
'Verificar todo',
'Verificar área',
'Verificar bloque',
'Borrar todo',
'Borrar área',
'Borrar bloque',
]
MENU_SERIAL_MONITOR = {
'Ctrl+Q':'salir del monitor',
'Ctrl+R':'reiniciar monitor',
'Ctrl+E':'alternar modo cmd EMC',
'Ctrl+B':'mostrar códigos de bytes < 0x20',
'Ctrl+L':'iniciar sesión en el archivo',
}
MENU_TOOL_SELECTION = [
'Explorador de archivos',
'Terminal (UART)',
'sFlash r/w (SPIway de Judges)',
'Syscon r/w (SCTool de Abkarino & EgyCnq)',
'Syscon r/o (SCRead de DarkNESmonk)',
'Syscon w/o (Para stock Renesas RL78)',
'Cambiar el idioma de la aplicación',
'Salida',
]
MENU_FILE_SELECTION = {
'a':'Mostrar todos los archivos/Alternar filtros [bin,pup]',
'f':'Construir volcado sflash0',
'b':'Construir 2BLS/PUP',
'r':'Renombrar lote (extraer información de volcado al nombre de archivo)',
'c':'Comparar archivos en la carpeta actual',
'q':'Salir/Regresar',
}
MENU_EXTRA_FLASHER = {
's':'Seleccionar archivo',
'f':'Herramienta de inicio para este archivo',
'q':'Salir/Regresar',
}
MENU_EXTRA = {
's':'Seleccione otro archivo',
'f':'Actualizar este archivo (completo/partes) nuevamente a IC',
'r':'Cambiar el nombre del archivo al nombre canónico',
'q':'Salir/Regresar',
}
MENU_SFLASH_ACTIONS = [
'Banderas (UART, RNG, Memtest, etc.)',
'Reloj de memoria (GDDR5)',
'Indicador de arranque SAMU',
'Cambiar ranura CoreOS (revertir FW)',
'Parche legítimo de CoreOS',
'Parche Puente Sur',
'Parche Torus (WiFi+BT)',
'Herramientas adicionales',
]
MENU_SFLASH_ADV_ACTIONS = [
'Extraer particiones de sFlash0',
'Construir sFlash0 a partir de archivos extraídos',
'Ver / Recuperar áreas NVS (1C9, 1CA)',
'Ver/Recuperar clave EAP',
'Obtener claves HDD = descifrar clave EAP = crear [keys.bin]',
'Crear EMC cfw (sólo para Fat 1xxx/11xx)',
'Validación de base y estadísticas de entropía',
'Analizar y recuperar partición corrupta',
]
MENU_SC_ACTIONS = [
'Alternar depuración',
'Parche SNVS automático',
'Visor de bloques SNVS',
'Visor de bloques NVS',
'Parche SNVS manual',
'Herramientas adicionales',
]
MENU_SC_ADV_ACTIONS = [
'Restablecer contadores SNVS',
'Selección de modo (00-03)',
'Modos de arranque (04-07)',
'Reconstruir SNVS (restablecimiento de fábrica) de Syscon',
'Recuperar el FW de Syscon',
'Convertir para intermitente Renesas (Motorolla S28)',
]
MENU_PATCHES = [
'Método A: se eliminarán los últimos 08-0B (4 registros)',
'Método B: se limpiarán los últimos 08-0B e inferiores (%d registros)',
'Método C: limpiar todo lo que esté debajo del 08-0B anterior (%d registros)',
'Método D: limpiar todo lo que esté debajo del último 08-0B (%d registros)',
'Método E: limpiar el 08-0B anterior e inferior (%d registros)',
]
MENU_SC_STATUSES = [
'Ranura CoreOs sobrescrita',
'Parcheable',
'Ya parcheado o bloqueado en la actualización',
'Probablemente parcheable',
]
MENU_SPW_ACTS = {
'read': 'Lectura',
'write': 'Escribiendo',
'verify': 'Verificando',
'erase': 'Borrar',
}
STR_LANGUAGE = 'Idioma'
STR_SECONDS = '%0.0f segundos'
STR_NVS_AREAS = 'áreas NVS'
STR_PORTS_LIST = 'Puertos serie'
STR_MAIN_MENU = 'Menú principal'
STR_FILE_LIST = 'Lista de archivos'
STR_SFLASH_INFO = 'sInformación del volcado de Flash'
STR_ADDITIONAL = 'Herramientas adicionales'
STR_SYSCON_INFO = 'Información de volcado de Syscon'
STR_COMPARE = 'Comparar'
STR_HELP = 'Ayuda'
STR_ACTIONS = 'Acciones'
STR_COREOS_SWITCH = 'Cambio de ranura CoreOS'
STR_SWITCH_PATTERNS = 'Cambiar patrones'
STR_MEMCLOCK = 'Reloj de memoria'
STR_SAMU_BOOT = 'Arranque SAMU'
STR_SYSFLAGS = 'Indicadores del sistema'
STR_NVS_ENTRIES = 'Syscon %s entradas'
STR_APATCH_SVNS = 'Parches automáticos de SNVS'
STR_MPATCH_SVNS = 'Parcheador manual SNVS'
STR_SFLASH_VALIDATOR = 'Validador sFlash'
STR_SFLASH_FLAGS = 'Banderas sFlash'
STR_SFLASH_EXTRACT = 'Extractor de sFlash'
STR_SFLASH_BUILD = 'Constructor sFlash'
STR_HDD_KEY = 'Clave eap del disco duro'
STR_2BLS_BUILDER = 'Constructor 2BLS'
STR_UNPACK_2BLS = 'Descompactador 2BLS'
STR_UNPACK_PUP = 'Descompactador de PUP descifrado'
STR_EMC_CFW = 'EMC CFW (Eolia)'
STR_EAP_KEYS = 'Claves EAP'
STR_SC_BOOT_MODES = 'Registros del modo de arranque'
STR_INFO = 'Información'
STR_SC_READER = 'Lector Syscon'
STR_SPIWAY = 'SPIway por Jueces y Abkarino'
STR_SCF = 'Syscon Flasher de Abkarino y EgyCnq'
STR_LEG_PATCH = 'Parche legítimo de CoreOS'
STR_PART_RECOVERY = 'Recuperación de partición'
STR_PART_ANALYZE = 'Análisis de partición'
STR_PART_LIST = 'Lista de particiones'
STR_PARTS_INFO = 'Información de particiones'
STR_WIFI_PATCHER = 'parcheador WiFi'
STR_SB_PATCHER = 'Parcheador de Southbridge'
STR_RL78FLASH = 'RL78 intermitente'
STR_SC_REBUILDER = 'Reconstructor de Syscon'
STR_ALL = 'Todos'
STR_UNIQUE = 'Único'
STR_BACKUP = 'Copia de seguridad'
STR_EQUAL = 'Igual'
STR_NOT_EQUAL = 'No igual'
STR_NO_INFO = '- Sin información -'
STR_OFF = 'Desactivado'
STR_ON = 'Activado'
STR_WARNING = 'Advertencia'
STR_HELP = 'Ayuda'
STR_UNKNOWN = '- Desconocido -'
STR_YES = 'Sí'
STR_NO = 'No'
STR_PROBABLY = 'Probablemente'
STR_NOT_SURE = 'no estoy seguro'
STR_DIFF = 'Diferente'
STR_NOT_FOUND = 'no encontrado'
STR_BAD_SIZE = 'tamaño incorrecto'
STR_OK = 'Aceptar'
STR_FAIL = 'Error'
STR_CANCEL = 'Cancelar'
STR_IS_PART_VALID = '[%s] %s FW %s'
STR_SNVS_ENTRIES = '%d registros encontrados en 0x%05X'
STR_SERIAL_MONITOR = 'Terminal'
STR_ELAPSEDTIME = 'Tiempo transcurrido'
STR_NO_PORT_CHOSEN = ' No se eligió ningún puerto'
STR_NO_PORTS = ' No se encontró ningún puerto serie'
STR_PORT_UNAVAILABLE = ' El puerto seleccionado no está disponible'
STR_PORT_CLOSED = ' El puerto está cerrado'
STR_STOP_MONITORING = ' El usuario detuvo la supervisión'
STR_RESTART_APP = ' Reiniciar la aplicación para aplicar los cambios'
STR_GENERATE_ALL_PS = ' Generar todos los parches'
STR_ACTION_NA = ' No hay ninguna acción disponible %s'
STR_EMC_CFW_WARN = ' Actualmente, EMC CFW es solo para PS4 Fat 10xx/11xx'
STR_EMC_NOT_FOUND = ' No se encontró el FW de EMC'
STR_DECRYPTING = ' Descifrando'
STR_ENCRYPTING = ' Cifrando'
STR_PATCHING = ' Parchear'
STR_EXPERIMENTAL = ' * - funciones experimentales'
STR_PERFORMED = ' Acción realizada:'
STR_EMPTY_FILE_LIST = ' La lista de archivos está vacía'
STR_NO_FOLDER = ' La carpeta %s no existe'
STR_EXTRACTING = ' Extrayendo sflash0 a la carpeta %s'
STR_FILES_CHECK = ' Comprobando archivos'
STR_BUILDING = ' Creando archivo %s'
STR_DONE = ' Todo hecho'
STR_PROGRESS = ' Progreso %02d%%'
STR_PROGRESS_KB = ' Progreso: %dKB / %dKB'
STR_WAIT = ' Por favor, espere...'
STR_WAITING = ' Esperando...'
STR_SET_TO = ' %s se configuró en [%s]'
STR_ABORT = ' La acción fue cancelada'
STR_FILENAME = ' Nombre de archivo: '
STR_VALIDATE_NVS_CHECK = ' Comprobando áreas NVS'
STR_ACT_SLOT = ' Ranura activa: %s [0x%02X]'
STR_NIY = ' La función aún no está implementada'
STR_CLEAN_FLAGS = ' Limpiar todos los indicadores del sistema'
STR_UNK_FILE_TYPE = ' Tipo de archivo desconocido'
STR_UNK_CONTENT = ' Contenido desconocido'
STR_UART = ' UART está configurado en'
STR_DEBUG = ' La depuración de Syscon está configurada en '
STR_DIFF_SLOT_VALUES = ' Los valores en las ranuras son diferentes!'
STR_SYSFLAGS_CLEAN = ' Se borraron los indicadores del sistema. Consejo: enciende UART'
STR_SAMU_UPD = ' El indicador SAMU se estableció en'
STR_DOWNGRADE_UPD = ' El interruptor de ranura se configuró en: '
STR_LAST_SC_ENTRIES = ' Mostrando las últimas [%d/%d] entradas del bloque activo [%d]'
STR_MEMCLOCK_SET = ' La frecuencia GDDR5 se configuró en %dMHz [0x%02X]'
STR_RECOMMEND = ' Método recomendado [%s]'
STR_PATCH_CANCELED = ' El parche fue cancelado'
STR_PATCH_SUCCESS = ' %d entradas eliminadas correctamente'
STR_PATCH_SAVED = ' El parche se guardó en %s'
STR_RENAMED = ' Renombrado a %s'
STR_SC_BLOCK_SELECT = ' Seleccionar bloque de datos [0-%d] | Ver Piso/Bloque [f] '
STR_MPATCH_INPUT = ' Cuántos registros limpiar (desde el final): '
STR_CHOICE = ' Hacer elección:'
STR_BACK = ' Presione [ENTER] para regresar'
STR_MEMCLOCK_INPUT = ' Frecuencia de configuración [400 - 2000] / [0 establecido por defecto (0xFF)] MHz '
STR_SAMU_INPUT = ' Configurar SAMU [0 - 255] / [el valor predeterminado es 255 (0xFF)] '
STR_TOO_MUCH = ' %d es demasiado, el valor máximo es %d'
STR_SC_BLOCK_CLEANED = ' El bloque [%d] se limpió por completo'
STR_OWC_RESET_REQUIRED = ' Primero debes restablecer los contadores SNVS para realizar esta acción'
STR_SC_NO_BM = ' No se encontraron registros de modos de arranque!'
STR_UNPATCHABLE = ' No se puede parchear!'
STR_SYSCON_BLOCK = ' El bloque [%d/%d] tiene [%d/%d] entradas | El bloque activo es [%d]\n'
STR_PARTITIONS_CHECK = ' Comprobando particiones'
STR_ENTROPY = ' Estadísticas de entropía'
STR_MAGICS_CHECK = ' Comprobando magias'
STR_DUPLICATES = ' %d duplicados encontrados [%s]'
STR_SC_WARN_OVERWITTEN = ' Advertencia: CoreOS probablemente esté sobrescrito'
STR_SNVS_ENTRY_INFO = 'Bloque %d #%03d Desplazamiento 0x%04X'
STR_SC_TOGGLE_FLATDATA = 'Alternar entre Piso/Bloque'
STR_SH_DUPLICATES = 'Mostrar/Ocultar duplicados'
STR_NO_ENTRIES = 'No se encontraron entradas'
STR_SKIPPED = 'Omitido'
STR_SKIP_ENTRY = 'Omitir este tipo de entrada'
STR_NO_FILE_SEL = 'Ningún archivo seleccionado'
STR_INCORRECT_SIZE = ' %s tiene un tamaño de volcado incorrecto!'
STR_FILE_NOT_EXISTS = ' El archivo %s no existe!'
STR_FILE_EXISTS = ' El nombre del archivo ya existe!'
STR_ERROR_FILE_REQ = ' Primero debes seleccionar el archivo'
STR_SAVED_TO = ' Guardado en %s'
STR_ERROR_INPUT = ' Entrada incorrecta'
STR_ERROR_DEF_VAL = ' Configuración de valores predeterminados'
STR_ERROR_CHOICE = ' Elección no válida'
STR_ERROR_INFO_READ = ' Error al leer los datos del archivo'
STR_OUT_OF_RANGE = ' El valor está fuera de rango!'
STR_FILES_MATCH = ' Los archivos son iguales'
STR_FILES_MISMATCH = ' Los archivos no coinciden'
STR_SIZES_MISMATCH = ' Los tamaños no coinciden!'
STR_RENAMED_COUNT = ' %d archivos fueron renombrados'
STR_FW_RECORDS = ' Versiones de FW: desde Actual(1) hasta Inicial(%d)'
STR_SELECT_MODEL = ' Seleccionar modelo:'
STR_SHOW_DETAILS = ' Mostrar detalles?'
STR_Y_OR_CANCEL = ' [y - sí, * - cancelar] '
STR_CHOOSE_AREA = ' Elegir área:'
STR_INPUT_SEL_DUMP = ' Seleccionar segundo volcado?'
STR_INPUT_DESTROY_PREV = ' Destruir todos los registros FW (08-0B) anteriores?'
STR_INPUT_BLOCK = ' Bloque de inicio de entrada [recuento]: '
STR_INPUT_SAVE_IM = ' Guardar todos los archivos intermedios?'
STR_INPUT_USE_SLOTB = ' Usar ranura B (activa)?'
STR_USE_NEWBLOBS = ' Usar nuevos blobs de claves?'
STR_CONFIRM_SEPARATE = ' Guardar como archivo independiente?'
STR_CONFIRM = ' Ingrese [y] para continuar: '
STR_CURRENT = ' Actual:'
STR_GO_BACK = ' Regresar'
STR_SC_BM_SELECT = ' Seleccione la variante del modo de inicio [1-%d] '
STR_OPEN_IN_SC_TOOL = ' Abrir archivo en Syscon Tool?'
STR_FLASH_FILE = ' Actualizar este archivo a IC?'
STR_READING_DUMP_N = ' Volcado de lectura %d'
STR_CHIP_NOT_RESPOND = ' El chip no responde, verifique el cableado y presione el botón de reinicio'
STR_HOW_MUCH_DUMPS = ' Cuántos volcados leer? [máximo 10] '
STR_EMC_CMD_MODE = 'Activando el modo cmd de EMC: [%s]'
STR_SHOW_BYTECODES = 'Mostrar códigos de bytes < 0x20: [%s]'
STR_MONITOR_STATUS = 'RX/TX: %d/%d (bytes) transcurrido: %d (seg)'
STR_CHIP_CONFIG = ' Configuración del chip'
STR_FILE_INFO = ' Información del archivo'
STR_VERIFY = ' Verificar'
STR_SPW_PROGRESS = 'Bloquear %03d [%d KB / %d KB] %d%% %s '
STR_SPW_ERROR_CHIP = 'Chip no compatible!'
STR_SPW_ERROR_VERSION = 'Versión no compatible! (v%d.%02d requerido)'
STR_SPW_ERROR_ERASE = 'Error al borrar el chip!'
STR_SPW_ERROR_ERASE_BLK = 'Bloque %d - error al borrar el bloque'
STR_SPW_ERROR_DATA_SIZE = 'Tamaño de datos incorrecto %d'
STR_SPW_ERROR_LENGTH = 'Longitud incorrecta %d != %d!'
STR_SPW_ERROR_BLK_CHK = 'Error! Error en la verificación del bloque (bloque=%d)'
STR_SPW_ERROR_WRITE = 'Error al escribir!'
STR_SPW_ERROR_READ = 'Tiempo de espera del búfer de recepción diminuto! ¡Desconecta y vuelve a conectar a Teensy!'
STR_SPW_ERROR_VERIFY = 'Error de verificación!'
STR_SPW_ERROR_PROTECTED = 'El dispositivo está protegido contra escritura!'
STR_SPW_ERROR_UNKNOWN = 'Se recibió un error desconocido!'
STR_SPW_ERROR_UNK_STATUS= 'Código de estado desconocido!'
STR_SPW_ERR_BLOCK_ALIGN = 'Esperando que el tamaño del archivo sea una multiplicación del tamaño del bloque: %d'
STR_SPW_ERR_DATA_SIZE = 'Los datos tienen %d bytes de longitud (se espera %d)!'
STR_SPW_ERR_OVERFLOW = 'El chip tiene %d bloques. ¡Escribiendo fuera de la capacidad del chip!'
STR_SCF_ERROR_VERSION = 'Versión no compatible! (v%d.%02d requerido)'
STR_SCF_ERROR_WRITE_BLK = 'Error al escribir bloque %d'
STR_SCF_ERROR_ERASE_BLK = 'Error al borrar el bloque %d'
STR_SCF_ERROR_READ_BLK = 'Error al leer el bloque %d'
STR_SCF_ERROR_ERASE_CHIP= 'Error durante el borrado del chip'
STR_SCF_ERR_INT = 'Error durante la inicialización'
STR_SCF_ERR_READ = 'Error de lectura'
STR_SCF_ERR_ERASE = 'Borrar error'
STR_SCF_ERR_WRITE = 'Error de escritura'
STR_SCF_ERR_CMD_LEN = 'Longitud de comando incorrecta'
STR_SCF_ERR_CMD_EXEC = 'Error al ejecutar el comando'
STR_SCF_ERR_UNKNOWN = 'Se recibió un error desconocido!'
STR_SCF_ERR_UNK_STATUS = 'Código de estado desconocido!'
STR_SCF_SAFE_ERASE = 'Borrado seguro comenzando en el bloque #%03d'
STR_CANT_USE = 'No puedo usar esto'
STR_DIFF_SN = 'Los números de serie son diferentes!'
STR_SSP_EQUAL = '¡Los patrones de cambio de ranura son iguales!'
STR_LP_FIRST_DUMP = 'Primer volcado'
STR_LP_SECOND_DUMP = 'Segundo volcado'
STR_CONVERTING_S28 = ' Conversión al formato S28'
STR_S28_ALREADY = ' El formato de archivo es S28'
STR_USE_EXPERT_M = ' Elige otro modelo o usa el modo experto!'
STR_ERR_NO_FW_FOUND = ' Error: No se puede encontrar %s para el FW %s en la base de datos'
STR_EXPERT_MODE = ' Modo experto?'
STR_SELECT_FW_VER = ' Seleccionar versión de firmware'
STR_MODEL = ' Modelo'
STR_FW_VER = ' FW: %s / Ranura: %s'
STR_SELECT_MOST_FILE = ' Seleccionar el archivo más relevante:'
STR_NO_FW_FILES = ' No se encuentran los archivos! Descargar archivos a la carpeta fws:\n [%s]'
STR_ABOUT_SC_REBUILDER = 'Acerca de Syscon Rebuilder'
STR_INFO_SC_REBUILDER = ''\
' Esta utilidad le ayudará a crear una versión personalizada de Syscon.\n'\
' Puedes ajustar cada tipo de registros en modo experto.\n'\
' Las entradas se ordenan del actual al pasado.\n'\
' * Para seleccionar el FW anterior necesita ingresar "2" o más.\n'\
' * la configuración mínima consta de 3 tipos (00-03 + 04-07 + 08-0B)'
STR_ABOUT_RL78FLASH = 'Acerca de Stock Syscon'
STR_INFO_RL78FLASH = ''\
' Para escribir un nuevo chip syscon en blanco (Renesas RL78G10)\n'\
' necesitas un adaptador USB a TTL, cables y algunos diodos.\n'\
' El diagrama de cableado se puede encontrar en la carpeta activos/hw/l78flash'\
STR_ABOUT_NVS = 'Acerca de la recuperación de NVS'
STR_INFO_NVS = ''\
' Intercambia bloque dañado con datos de respaldo (no apto para 10xx/11xx)\n'\
' Advertencia: Es posible que se sobrescriban UART y otros indicadores.\n'\
' Si necesita configurar algunos indicadores, hágalo después de la recuperación de NVS!\n'\
STR_ABOUT_TORUS_PATCH = 'Acerca del parcheador WiFi'
STR_INFO_TORUS_PATCH = ''\
' Será útil en caso de:\n'\
' - FW Torus (WiFi+BT) dañado\n'\
' - cambiando a otro módulo IC'\
STR_ABOUT_SB_PATCH = 'Acerca del parcheador de Southbridge'
STR_INFO_SB_PATCH = ''\
' Será útil en caso de:\n'\
' - Errores de FW de Southbridge dañados o "EMC VERSION DOWN"\n'\
' - cambiando a otro módulo IC (CXD90046 => CXD90036)\n'\
' - reemplazo de paquetes de APU (21xx => 22xx, 71xx => 72xx)'
STR_INFO_FLASH_TOOLS = ''\
' Las herramientas Flash (spiway y syscon flasher) son experimentales! Ten cuidado.'\
STR_ABOUT_PART_RECOVERY = 'Análisis y recuperación de particiones'
STR_INFO_PART_A_R = ''\
' Compara cada byte de la partición (SFlash/Syscon) con archivos válidos\n'\
' y muestra el porcentaje de similitud.\n'\
' Los archivos más iguales estarán en la parte superior de la lista.\n'\
'Tenga en cuenta que Southbridge FW consta de emc + eap'
STR_INFO_FW_LINK = ''\
' Colocar archivos emc/eap/torus/syscon válidos en la carpeta /fws/\n'\
' Puedes descargarlo desde este repositorio:\n '
STR_ABOUT_LEG_PATCH = 'Acerca del parche legítimo de CoreOS'
STR_INFO_LEG_PATCH = ''\
' ¡Este método sólo es adecuado para consolas que funcionan!\n'\
' Porque requiere actualización a través del menú seguro de PS4\n'\
'\n'\
' 1) Lee el primer volcado (si aún no lo has hecho)\n'\
' 2) Actualice la consola a la MISMA versión a través del modo seguro\n'\
' 3) Leer el segundo volcado (ambas ranuras tienen el mismo FW)\n'\
'\n'\
' Ahora puedes parchear el primer volcado con datos del segundo\n'\
' Puedes arrastrar y soltar 2 volcados en el acceso directo de wee-tools para acelerar'
STR_ABOUT_SCF = 'Acerca de Syscon Flasher'
STR_INFO_SCF = ''\
' Syscon Flasher te permite reproducir/reproducir el chip syscon original de PS4 (RL78/G13)\n'\
' Flasher solo admite modelos de sistema A0x-COLx\n'\
' Actualmente la parte de hardware se basa en placas Teensy (2.0++/4.0/4.1)\n'\
' Mire para ver los diagramas y el firmware de Teensy\n'\
' Más información aquí:'
STR_ABOUT_SPIWAY = 'Acerca de SPIway'
STR_INFO_SPIWAY = ''\
' SPIway - sflash r/w con soporte de acceso de bloque aleatorio (Teensy++ 2.0)\n'\
' Busque en la carpeta los diagramas y el firmware de Teensy\n'\
' Más información en PSDevWiki: '
STR_ABOUT_SC_GLITCH = 'Acerca del fallo de Syscon'
STR_INFO_SC_GLITCH = ''\
' Lector Syscon de DarkNESmonk (Arduino Nano V3 CH340)\n'\
' Mire la carpeta para obtener más información'
STR_ABOUT_SC_BOOTMODES = 'Acerca de los modos de arranque'
STR_INFO_SC_BOOTMODES = ''\
' Los registros del modo de arranque están cifrados, por lo que no podemos detectar su propósito\n'\
' Deberías probar cada uno de ellos tú mismo para determinar para qué sirve\n'\
' Tenga en cuenta: algunos registros pueden tener duplicados (marcados con color)'
STR_OVERCLOCKING=''\
' ¡Operación peligrosa!\n\n'\
' La mayoría de las GDDR5 funcionan entre 6000 y 8000 MHz. GDDR5 tiene bombeo cuádruple [x4]\n'\
' GDDR5 a 8000 MHz técnicamente funciona a 2000 MHz\n'\
' Si tienes problemas, disminuye la frecuencia a 1000 MHz\n'\
'\n'\
' El reloj GDDR5 efectivo es 1350 MHz\n'\
' La frecuencia se selecciona experimentalmente\n'\
' - Un valor demasiado alto puede provocar un error LOADBIOS -8 o DCT [*]\n'\
' - Un valor demasiado bajo provoca un error AMDINIT'
STR_ABOUT_EAPKEYS = 'Acerca de las claves EAP'
STR_INFO_EAPKEYS = ''\
' La clave Eap puede tener una longitud de 0x40 y 0x60 bytes\n'\
' Los modelos PS4 10xx/11xx normalmente tienen una sola clave\n'\
' Y los modelos 12xx/Slim/PRO tienen clave de respaldo\n'\
STR_IMMEDIATLY = ''\
' Tenga cuidado: ¡todos los parches se aplican inmediatamente al archivo!'
STR_PATCHES = STR_IMMEDIATLY + '\n'\
' Cambiará el valor entre los valores disponibles para la opción elegida'
STR_DOWNGRADE = ''\
' ¡Operación peligrosa!\n\n'\
' El cambio de ranura se utiliza para revertir FW (bajar de categoría).\n'+\
' También corrige el error "loadbios".\n'\
' Asegúrese de tener una copia de seguridad del volcado sFlash y SYSCON.\n'\
' Se requiere parcheo de Syscon! De lo contrario, obtendrás el error "loadbios".\n'\
' La consola no arranca normalmente.'
STR_ABOUT_MPATCH = 'Instrucciones de parche manual'
STR_INFO_SC_MPATCH = ''\
' Cada registro tiene una longitud de 16 bytes. El primer byte siempre es "A5"\n'\
' El segundo byte es el "tipo" de registro, normalmente en el rango [0x00-0x30]\n'\
' La actualización del firmware requiere 4 registros con tipos %s\n'\
' Para cancelar la última actualización de firmware necesitamos limpiar estos 4 registros (rellenar 0xFF)\n'\
' Si hay %s,%s tipos después del parche %s es imposible\n'\
' La ranura de copia de seguridad ya está sobrescrita, obtendrás el error checkUpdVersion'
STR_ABOUT_EAP = 'Acerca de las claves EAP'
STR_INFO_HDD_EAP = ''\
' Estas claves te permiten explorar archivos HDD de PS4 con la PC\n'\
' Puedes encontrar información adicional visitando:\n '\
STR_ABOUT_EMC_CFW = 'Acerca de EMC CFW'
STR_INFO_EMC_CFW = ''\
' Utilízalo bajo tu propia responsabilidad!\n'\
' Sólo para Aeolia (PS4 Fat 10xx/11xx)\n'\
' Otorga control sobre el puente sur y syscon\n\n'\
' Información adicional:\n '
STR_APP_HELP = ''\
' Uso: ps4-wee-tools [parámetros] \n'\
'\n'\
' Parámetros: \n\n'\
' : carga la herramienta adecuada para el archivo proporcionado\n'\
' : compila el volcado con archivos de la carpeta proporcionada\n'\
' ... : compara archivos (con información MD5)\n'\
' --help : muestra esta pantalla de ayuda\n'\
'\n'\
' Página de inicio: '
================================================
FILE: lang/pl.py
================================================
#==========================================================
# Polish language [PL]
# part of ps4 wee tools project
# https://github.com/andy-man/ps4-wee-tools
#==========================================================
MENU_SC_REBUILD_MODES = [
'Tryb normalny (Wybierz FW, domyślne wartości dla reszty / Wszystkie (12) typy)',
'Minimalna konfiguracja (Wybierz pierwsze dwa typy i FW / 3 typy)',
'Tryb eksperta (Dostosuj wszystkie (12) typy)',
]
MENU_NVS_COPY = [
'Zastąp %s kopią zapasową (%s <= %s)',
'Zastąp kopię zapasową %s (%s => %s)',
]
MENU_EAP_KEYS = [
'Zastąp A przez B (key_a <= key_b)',
'Zastąp B przez A (key_a => key_b)',
'Napraw magic A *',
'Napraw magic B *',
'Wygeneruj nowe klucze A, B (długość 0x60) *',
'Wygeneruj nowe klucze A, B (długość 0x40) *',
'Wyczyść klucz B *',
]
MENU_FLASHER = [
'Odczytaj wszystko',
'Odczytaj obszar',
'Odczytaj blok',
'Zapisz wszystko',
'Zapisz obszar',
'Zapisz blok',
'Zweryfikuj wszystko',
'Zweryfikuj obszar',
'Zweryfikuj blok',
'Wymaż wszystko',
'Wymaż obszar',
'Wymaż blok',
]
MENU_SERIAL_MONITOR = {
'Ctrl+Q':'Wyjdź z monitora',
'Ctrl+R':'Zrestartuj monitor',
'Ctrl+E':'Przełącz tryb EMC cmd',
'Ctrl+B':'Pokaż bajtkody < 0x20',
'Ctrl+L':'Zapisuj log do pliku',
}
MENU_TOOL_SELECTION = [
'Przeglądarka plików',
'Terminal (UART)',
'sFlash r/w (SPIway by Judges)',
'Syscon r/w (SCTool by Abkarino & EgyCnq)',
'Syscon r/o (SCRead by DarkNESmonk)',
'Syscon w/o (Dla oryginalnego Renesas RL78)',
'Zmień język aplikacji',
'Wyjdź',
]
MENU_FILE_SELECTION = {
'a':'Pokaż wszystkie pliki / Przełącz filtry [bin,pup]',
'f':'Zbuduj zrzut sflash0',
'b':'Zbuduj 2BLS/PUP',
'r':'Zbiorcza zmiana nazw (Wyciągnij informacje ze zrzutu do nazwy pliku)',
'c':'Porównaj pliki w bieżącym folderze',
'q':'Wyjdź / Wróć',
}
MENU_EXTRA_FLASHER = {
's':'Wybierz plik',
'f':'Uruchom narzędzie dla tego pliku',
'q':'Wyjdź / Wróć',
}
MENU_EXTRA = {
's':'Wybierz inny plik',
'f':'Zaflashuj ten plik (cały/częściowo) z powrotem do IC',
'r':'Zmień nazwę pliku na nazwę kanoniczną',
'q':'Wyjdź / Wróć',
}
MENU_SFLASH_ACTIONS = [
'Flagi (UART, RNG, Memtest, itp.)',
'Zegar pamięci (GDDR5)',
'Flaga rozruchu SAMU',
'Przełącz CoreOS slot (przywrócenie FW)',
'Legalny patch CoreOS',
'Patch Southbridge',
'Patch Torus (WiFi+BT)',
'Dodatkowe narzędzia',
]
MENU_SFLASH_ADV_ACTIONS = [
'Wyodrębnij partycje z sFlash0',
'Zbuduj sFlash0 z wyodrębnionych plików',
'Wyświetl / Odzyskaj obszary NVS (1C9, 1CA)',
'Wyświetl / Odzyskaj klucz EAP',
'Pobierz klucze HDD = odszyfruj klucz EAP = utwórz [keys.bin]',
'Utwórz EMC cfw (tylko dla Fat 1xxx/11xx)',
'Walidacja bazowa i statystyki entropii',
'Analiza i odzyskiwanie uszkodzonej partycji',
]
MENU_SC_ACTIONS = [
'Przełącz tryb debugowania',
'Automatyczny patch SNVS',
'Podgląd bloku SNVS',
'Podgląd bloku NVS',
'Ręczny patch SNVS',
'Dodatkowe narzędzia',
]
MENU_SC_ADV_ACTIONS = [
'Zresetuj liczniki SNVS',
'Wybór trybu (00-03)',
'Tryby rozruchu (04-07)',
'Odbuduj SNVS Syscona (Przywracanie fabryczne)',
'Odzyskaj FW Syscona',
'Konwertuj na flasher Renesas (Motorola S28)',
]
MENU_PATCHES = [
'Metoda A - ostatnie 08-0B zostaną usunięte (4 rekordy)',
'Metoda B - ostatnie 08-0B i poniżej zostaną wyczyszczone (%d rekordów)',
'Metoda C - wyczyść wszystko poniżej poprzedniego 08-0B (%d rekordów)',
'Metoda D - wyczyść wszystko poniżej ostatniego 08-0B (%d rekordów)',
'Metoda E - wyczyść poprzednie 08-0B i poniżej (%d rekordów)',
]
MENU_SC_STATUSES = [
'Nadpisany slot CoreOs',
'Możliwy do patchowania',
'Już spatchowany lub utknął na aktualizacji',
'Prawdopodobnie możliwy do patchowania',
]
MENU_SPW_ACTS = {
'read': 'Odczytywanie',
'write': 'Zapis',
'verify': 'Weryfikacja',
'erase': 'Wymazywanie',
}
STR_LANGUAGE = 'Język'
STR_SECONDS = '%0.0f sekund'
STR_NVS_AREAS = 'Obszary NVS'
STR_PORTS_LIST = 'Lista portów szeregowych'
STR_MAIN_MENU = 'Główne menu'
STR_FILE_LIST = 'Lista plików'
STR_SFLASH_INFO = 'Informacje o zrzucie sFlash'
STR_ADDITIONAL = 'Dodatkowe narzędzia'
STR_SYSCON_INFO = 'Informacje o zrzucie Syscona'
STR_COMPARE = 'Porównaj'
STR_HELP = 'Pomoc'
STR_ACTIONS = 'Akcje'
STR_COREOS_SWITCH = 'Przełączanie slotu CoreOS'
STR_SWITCH_PATTERNS = 'Wzorce przełączania'
STR_MEMCLOCK = 'Zegar pamięci'
STR_SAMU_BOOT = 'Rozruch SAMU'
STR_SYSFLAGS = 'Flagi systemowe'
STR_NVS_ENTRIES = 'Wpisy Syscona %s'
STR_APATCH_SVNS = 'Automatyczne patchowanie SNVS'
STR_MPATCH_SVNS = 'Ręczny patch SNVS'
STR_SFLASH_VALIDATOR = 'Walidator sFlash'
STR_SFLASH_FLAGS = 'Flagi sFlash'
STR_SFLASH_EXTRACT = 'Wyciąganie sFlash'
STR_SFLASH_BUILD = 'Budowanie sFlash'
STR_HDD_KEY = 'Klucz EAP HDD'
STR_2BLS_BUILDER = 'Budowanie 2BLS'
STR_UNPACK_2BLS = 'Rozpakowywanie 2BLS'
STR_UNPACK_PUP = 'Rozpakowywanie odszyfrowanego PUP'
STR_EMC_CFW = 'EMC CFW (Aeolia)'
STR_EAP_KEYS = 'Klucze EAP'
STR_SC_BOOT_MODES = 'Rekordy trybów rozruchu'
STR_INFO = 'Informacje'
STR_SC_READER = 'Czytnik Syscona'
STR_SPIWAY = 'SPIway autorstwa Judges & Abkarino'
STR_SCF = 'Syscon Flasher autorstwa Abkarino & EgyCnq'
STR_LEG_PATCH = 'Legalny patch CoreOS'
STR_PART_RECOVERY = 'Odzyskiwanie partycji'
STR_PART_ANALYZE = 'Analiza partycji'
STR_PART_LIST = 'Lista partycji'
STR_PARTS_INFO = 'Informacje o partycjach'
STR_WIFI_PATCHER = 'Patch WiFi'
STR_SB_PATCHER = 'Patch Southbridge'
STR_RL78FLASH = 'Programator RL78'
STR_SC_REBUILDER = 'Odbudowa Syscon'
STR_ALL = 'Wszystko'
STR_UNIQUE = 'Unikalny'
STR_BACKUP = 'Kopia zapasowa'
STR_EQUAL = 'Równy'
STR_NOT_EQUAL = 'Nie równy'
STR_NO_INFO = '- Brak informacji -'
STR_OFF = 'Wyłączony'
STR_ON = 'Włączony'
STR_WARNING = 'Ostrzeżenie'
STR_HELP = 'Pomoc'
STR_UNKNOWN = '- Nieznany -'
STR_YES = 'Tak'
STR_NO = 'Nie'
STR_PROBABLY = 'Prawdopodobnie'
STR_NOT_SURE = 'Niepewny'
STR_DIFF = 'Różny'
STR_NOT_FOUND = 'Nie znaleziono'
STR_BAD_SIZE = 'Niepoprawny rozmiar'
STR_OK = 'OK'
STR_FAIL = 'Niepowodzenie'
STR_CANCEL = 'Anuluj'
STR_IS_PART_VALID = '[%s] %s FW %s'
STR_SNVS_ENTRIES = 'Znaleziono %d wpisów pod adresem 0x%05X'
STR_SERIAL_MONITOR = 'Terminal'
STR_ELAPSEDTIME = 'Czas trwania'
STR_NO_PORT_CHOSEN = ' Nie wybrano portu'
STR_NO_PORTS = ' Nie znaleziono żadnego portu szeregowego'
STR_PORT_UNAVAILABLE = ' Wybrany port jest niedostępny'
STR_PORT_CLOSED = ' Port jest zamknięty'
STR_STOP_MONITORING = ' Monitorowanie zostało zatrzymane przez użytkownika'
STR_RESTART_APP = ' Uruchom ponownie aplikację, aby zastosować zmiany'
STR_GENERATE_ALL_PS = ' Generuj wszystkie patche'
STR_ACTION_NA = ' Brak dostępnej akcji %s'
STR_EMC_CFW_WARN = ' Obecnie EMC CFW jest tylko dla PS4 Fat 10xx/11xx'
STR_EMC_NOT_FOUND = ' Nie znaleziono oprogramowania EMC'
STR_DECRYPTING = ' Odszyfrowywanie'
STR_ENCRYPTING = ' Szyfrowanie'
STR_PATCHING = ' Patchowanie'
STR_EXPERIMENTAL = ' * - funkcje eksperymentalne'
STR_PERFORMED = ' Wykonano akcję: '
STR_EMPTY_FILE_LIST = ' Lista plików jest pusta'
STR_NO_FOLDER = ' Folder %s nie istnieje'
STR_EXTRACTING = ' Rozpakowywanie sflash0 do folderu %s'
STR_FILES_CHECK = ' Sprawdzanie plików'
STR_BUILDING = ' Tworzenie pliku %s'
STR_DONE = ' Wszystko gotowe'
STR_PROGRESS = ' Postęp %02d%% '
STR_PROGRESS_KB = ' Postęp: %dKB / %dKB'
STR_WAIT = ' Proszę czekać...'
STR_WAITING = ' Oczekiwanie...'
STR_SET_TO = ' %s został ustawiony na [%s]'
STR_ABORT = ' Akcja została przerwana'
STR_FILENAME = ' Nazwa pliku: '
STR_VALIDATE_NVS_CHECK = ' Sprawdzanie obszarów NVS'
STR_ACT_SLOT = ' Aktywny slot: %s [0x%02X]'
STR_NIY = ' Ta funkcja jest dostępna tylko w wersji PRO'
STR_CLEAN_FLAGS = ' Wyczyść wszystkie flagi systemowe'
STR_UNK_FILE_TYPE = ' Nieznany typ pliku'
STR_UNK_CONTENT = ' Nieznana zawartość'
STR_UART = ' UART został ustawiony na '
STR_DEBUG = ' Debugowanie Syscon ustawione na '
STR_DIFF_SLOT_VALUES = ' Wartości w slotach są różne!'
STR_SYSFLAGS_CLEAN = ' Flagi systemowe zostały wyczyszczone. Wskazówka: włącz UART'
STR_SAMU_UPD = ' Flaga SAMU została ustawiona na '
STR_DOWNGRADE_UPD = ' Przełącznik slotów został ustawiony na: '
STR_LAST_SC_ENTRIES = ' Wyświetlanie ostatnich [%d/%d] wpisów z aktywnego bloku [%d]'
STR_MEMCLOCK_SET = ' Częstotliwość GDDR5 została ustawiona na %dMHz [0x%02X]'
STR_RECOMMEND = ' Zalecana metoda [%s]'
STR_PATCH_CANCELED = ' Patch został anulowany'
STR_PATCH_SUCCESS = ' Pomyślnie usunięto %d wpisów'
STR_PATCH_SAVED = ' Patch zapisany do %s'
STR_RENAMED = ' Zmieniono nazwę na %s'
STR_SC_BLOCK_SELECT = ' Wybierz blok danych [0-%d] | Widok Płaski/Blok [f] '
STR_MPATCH_INPUT = ' Ile wpisów wyczyścić (od końca): '
STR_CHOICE = ' Dokonaj wyboru: '
STR_BACK = ' Naciśnij [ENTER], aby wrócić'
STR_MEMCLOCK_INPUT = ' Ustaw częstotliwość [400 - 2000] / [0 ustaw domyślną (0xFF)] MHz '
STR_SAMU_INPUT = ' Ustaw SAMU [0 - 255] / [domyślna to 255 (0xFF)] '
STR_TOO_MUCH = ' %d to za dużo, maksymalna wartość to %d'
STR_SC_BLOCK_CLEANED = ' Blok [%d] został całkowicie wyczyszczony'
STR_OWC_RESET_REQUIRED = ' Najpierw musisz zresetować liczniki SNVS, aby wykonać tę akcję'
STR_SC_NO_BM = ' Nie znaleziono zapisów trybu rozruchu!'
STR_UNPATCHABLE = ' Nie można patchować!'
STR_SYSCON_BLOCK = ' Blok [%d/%d] zawiera [%d/%d] wpisów | Aktywny blok to [%d]\n'
STR_PARTITIONS_CHECK = ' Sprawdzanie partycji'
STR_ENTROPY = ' Statystyki entropii'
STR_MAGICS_CHECK = ' Sprawdzanie magii'
STR_DUPLICATES = ' Znaleziono %d duplikat(ów) [%s]'
STR_SC_WARN_OVERWITTEN = ' Ostrzeżenie: CoreOS prawdopodobnie został nadpisany'
STR_SNVS_ENTRY_INFO = 'Blok %d #%03d Offset 0x%04X'
STR_SC_TOGGLE_FLATDATA = 'Przełącz między Płaskim/Blokowym'
STR_SH_DUPLICATES = 'Pokaż / Ukryj duplikaty'
STR_NO_ENTRIES = 'Nie znaleziono wpisów'
STR_SKIPPED = 'Pominięte'
STR_SKIP_ENTRY = 'Pomiń ten typ wpisu'
STR_NO_FILE_SEL = 'Nie wybrano pliku'
STR_INCORRECT_SIZE = ' %s ma niepoprawny rozmiar dumpa!'
STR_FILE_NOT_EXISTS = ' Plik %s nie istnieje!'
STR_FILE_EXISTS = ' Nazwa pliku już istnieje!'
STR_ERROR_FILE_REQ = ' Najpierw musisz wybrać plik'
STR_SAVED_TO = ' Zapisano do %s'
STR_ERROR_INPUT = ' Niepoprawne dane wejściowe'
STR_ERROR_DEF_VAL = ' Ustawianie wartości domyślnych'
STR_ERROR_CHOICE = ' Nieprawidłowy wybór'
STR_ERROR_INFO_READ = ' Błąd podczas odczytu danych z pliku'
STR_OUT_OF_RANGE = ' Wartość jest poza zakresem!'
STR_FILES_MATCH = ' Pliki są identyczne'
STR_FILES_MISMATCH = ' Pliki się różnią'
STR_SIZES_MISMATCH = ' Rozmiary się różnią!'
STR_RENAMED_COUNT = ' %d plików zostało przemianowanych'
STR_FW_RECORDS = ' Wersje FW - od bieżącej(1) do początkowej(%d)'
STR_SELECT_MODEL = ' Wybierz model:'
STR_SHOW_DETAILS = ' Pokaż szczegóły?'
STR_Y_OR_CANCEL = ' [y - tak, * - anuluj]'
STR_CHOOSE_AREA = ' Wybierz obszar: '
STR_INPUT_SEL_DUMP = ' Wybrać drugi dump?'
STR_INPUT_DESTROY_PREV = ' Zniszczyć wszystkie wcześniejsze rekordy FW (08-0B)?'
STR_INPUT_BLOCK = ' Podaj blok startowy [ilość]: '
STR_INPUT_SAVE_IM = ' Zapisz wszystkie pliki pośrednie?'
STR_INPUT_USE_SLOTB = ' Użyć slotu B (aktywnego)?'
STR_USE_NEWBLOBS = ' Użyć nowych kluczy blob?'
STR_CONFIRM_SEPARATE = ' Zapisz jako osobny plik?'
STR_CONFIRM = ' Wprowadź [y], aby kontynuować:'
STR_CURRENT = ' Bieżący:'
STR_GO_BACK = ' Wróć'
STR_SC_BM_SELECT = ' Wybierz wariant trybu rozruchu [1-%d]'
STR_OPEN_IN_SC_TOOL = ' Otworzyć plik w narzędziu Syscon?'
STR_FLASH_FILE = ' Wgrać ten plik na IC?'
STR_READING_DUMP_N = ' Odczytywanie dumpa %d'
STR_CHIP_NOT_RESPOND = ' Chip nie odpowiada, sprawdź okablowanie i naciśnij przycisk reset'
STR_HOW_MUCH_DUMPS = ' Ile dumpów odczytać? [maks. 10]'
STR_EMC_CMD_MODE = 'Włączanie trybu EMC cmd: [%s]'
STR_SHOW_BYTECODES = 'Pokaż kody bajtowe < 0x20: [%s]'
STR_MONITOR_STATUS = 'RX/TX: %d/%d (bajtów) Czas: %d (sek)'
STR_CHIP_CONFIG = ' Konfiguracja chipa'
STR_FILE_INFO = ' Informacje o pliku'
STR_VERIFY = ' Weryfikuj'
STR_SPW_PROGRESS = 'Blok %03d [%d KB / %d KB] %d%% %s'
STR_SPW_ERROR_CHIP = 'Nieobsługiwany chip!'
STR_SPW_ERROR_VERSION = 'Nieobsługiwana wersja! (wymagana v%d.%02d)'
STR_SPW_ERROR_ERASE = 'Błąd podczas wymazywania chipa!'
STR_SPW_ERROR_ERASE_BLK = 'Blok %d - błąd wymazywania'
STR_SPW_ERROR_DATA_SIZE = 'Niepoprawny rozmiar danych %d'
STR_SPW_ERROR_LENGTH = 'Niepoprawna długość %d != %d!'
STR_SPW_ERROR_BLK_CHK = 'Błąd! Weryfikacja bloku nie powiodła się (blok=%d)'
STR_SPW_ERROR_WRITE = 'Błąd podczas zapisu!'
STR_SPW_ERROR_READ = 'Przekroczony czas odbioru Teensy! Odłącz i ponownie podłącz Teensy!'
STR_SPW_ERROR_VERIFY = 'Błąd weryfikacji!'
STR_SPW_ERROR_PROTECTED = 'Urządzenie jest chronione przed zapisem!'
STR_SPW_ERROR_UNKNOWN = 'Odebrano nieznany błąd!'
STR_SPW_ERROR_UNK_STATUS= 'Nieznany kod statusu!'
STR_SPW_ERR_BLOCK_ALIGN = 'Oczekiwano, że rozmiar pliku będzie wielokrotnością rozmiaru bloku: %d'
STR_SPW_ERR_DATA_SIZE = 'Dane mają długość %d bajtów (oczekiwano %d)!'
STR_SPW_ERR_OVERFLOW = 'Chip ma %d bloków. Zapis wykracza poza pojemność chipa!'
STR_SCF_ERROR_VERSION = 'Nieobsługiwana wersja! (wymagana v%d.%02d)'
STR_SCF_ERROR_WRITE_BLK = 'Błąd zapisu bloku %d'
STR_SCF_ERROR_ERASE_BLK = 'Błąd wymazywania bloku %d'
STR_SCF_ERROR_READ_BLK = 'Błąd odczytu bloku %d'
STR_SCF_ERROR_ERASE_CHIP= 'Błąd podczas wymazywania chipa'
STR_SCF_ERR_INT = 'Błąd podczas inicjalizacji'
STR_SCF_ERR_READ = 'Błąd odczytu'
STR_SCF_ERR_ERASE = 'Błąd wymazywania'
STR_SCF_ERR_WRITE = 'Błąd zapisu'
STR_SCF_ERR_CMD_LEN = 'Niepoprawna długość polecenia'
STR_SCF_ERR_CMD_EXEC = 'Błąd podczas wykonywania polecenia'
STR_SCF_ERR_UNKNOWN = 'Otrzymano nieznany błąd!'
STR_SCF_ERR_UNK_STATUS = 'Nieznany kod statusu!'
STR_SCF_SAFE_ERASE = ' Bezpieczne wymazywanie rozpoczyna się od bloku #%03d'
STR_CANT_USE = 'Nie można tego użyć'
STR_DIFF_SN = 'Numery seryjne są różne!'
STR_SSP_EQUAL = 'Wzory przełączania slotów są identyczne!'
STR_LP_FIRST_DUMP = 'Pierwszy dump'
STR_LP_SECOND_DUMP = 'Drugi dump'
STR_CONVERTING_S28 = ' Konwertowanie do formatu S28'
STR_S28_ALREADY = ' Format pliku to już S28'
STR_USE_EXPERT_M = ' Wybierz inny model lub użyj trybu eksperckiego!'
STR_ERR_NO_FW_FOUND = ' Błąd: Nie można znaleźć %s dla FW %s w DB'
STR_EXPERT_MODE = ' Tryb ekspercki?'
STR_SELECT_FW_VER = ' Wybierz wersję FW'
STR_MODEL = ' Model'
STR_FW_VER = ' FW: %s / Slot: %s'
STR_SELECT_MOST_FILE = ' Wybierz najbardziej odpowiedni plik:'
STR_NO_FW_FILES = ' Pliki nie zostały znalezione! Pobierz pliki do folderu fws:\n [%s]'
STR_ABOUT_SC_REBUILDER = 'O programie Syscon Rebuilder'
STR_INFO_SC_REBUILDER = ''\
' To narzędzie pomoże Ci stworzyć niestandardową wersję Syscon.\n'\
' Możesz dostosować każdy typ rekordów w trybie eksperckim.\n'\
' Wpisy są posortowane od bieżących do przeszłych.\n'\
' * Aby wybrać wcześniejsze FW, musisz wprowadzić "2" lub więcej.\n'\
' * Minimalna konfiguracja składa się z 3 typów (00-03 + 04-07 + 08-0B)'
STR_ABOUT_RL78FLASH = 'O programie Stock Syscon'
STR_INFO_RL78FLASH = ''\
' Aby zaprogramować nowy, pusty chip syscon (Renesas RL78G10)\n'\
' potrzebujesz adaptera USB na TTL, przewodów i kilku diod.\n'\
' Schemat okablowania znajduje się w folderze assets/hw/l78flash'
STR_ABOUT_NVS = 'O odzyskiwaniu NVS'
STR_INFO_NVS = ''\
' Zamienia uszkodzony blok na dane kopii zapasowej (nie dotyczy modeli 10xx/11xx)\n'\
' Ostrzeżenie - UART i inne flagi mogą zostać nadpisane.\n'\
' Jeśli potrzebujesz ustawić jakieś flagi, zrób to po przywróceniu NVS!\n'\
STR_ABOUT_TORUS_PATCH = 'O patcherze WiFi'
STR_INFO_TORUS_PATCH = ''\
' Przydatne w przypadku:\n'\
' - uszkodzonego FW Torus (WiFi+BT)\n'\
' - przełączania na inny moduł IC'\
STR_ABOUT_SB_PATCH = 'O patcherze Southbridge'
STR_INFO_SB_PATCH = ''\
' Przydatne w przypadku:\n'\
' - uszkodzonego FW Southbridge lub błędów "EMC VERSION DOWN"\n'\
' - przełączania na inny moduł IC (CXD90046 => CXD90036)\n'\
' - wymiany zestawów APU (21xx => 22xx, 71xx => 72xx)'
STR_INFO_FLASH_TOOLS = ''\
' Narzędzia do flashowania (spiway & syscon flasher) są eksperymentalne! Bądź ostrożny.'\
STR_ABOUT_PART_RECOVERY = 'O analizie i odzyskiwaniu partycji'
STR_INFO_PART_A_R = ''\
' Porównuje każdy bajt partycji (SFlash/Syscon) z prawidłowymi plikami\n'\
' i pokazuje procent podobieństwa.\n'\
' Najbardziej podobne pliki będą na górze listy.\n'\
' Pamiętaj, że FW Southbridge składa się z emc + eap'
STR_INFO_FW_LINK = ''\
' Umieść prawidłowe pliki emc/eap/torus/syscon w folderze /fws/\n'\
' Możesz je pobrać z tego repozytorium:\n '
STR_ABOUT_LEG_PATCH = 'O Patchu Legitimate CoreOS'
STR_INFO_LEG_PATCH = ''\
' Ta metoda jest odpowiednia tylko dla działających konsol!\n'\
' Wymaga aktualizacji przez tryb bezpieczny PS4\n'\
'\n'\
' 1) Odczytaj pierwszy zrzut (jeśli jeszcze tego nie zrobiłeś)\n'\
' 2) Zaktualizuj konsolę do TEJ SAMEJ wersji przez tryb bezpieczny\n'\
' 3) Odczytaj drugi zrzut (oba sloty mają równą wersję FW)\n'\
'\n'\
' Teraz możesz zaaplikować łatkę do pierwszego zrzutu przy użyciu danych z drugiego\n'\
' Możesz przeciągnąć i upuścić 2 zrzuty na skrót narzędzia wee-tools, aby przyspieszyć'
STR_ABOUT_SCF = 'O Syscon Flasher'
STR_INFO_SCF = ''\
' Syscon Flasher umożliwia odczyt/zapis oryginalnego chipa PS4 syscon (RL78/G13)\n'\
' Flasher obsługuje tylko modele syscon A0x-COLx\n'\
' Część sprzętowa opiera się na płytkach Teensy (2.0++/4.0/4.1)\n'\
' Diagramy i FW dla Teensy znajdziesz w \n'\
' Więcej informacji tutaj: '
STR_ABOUT_SPIWAY = 'O SPIway'
STR_INFO_SPIWAY = ''\
' SPIway - odczyt/zapis sflash z obsługą losowego dostępu do bloków (Teensy++ 2.0)\n'\
' Diagramy i FW dla Teensy znajdziesz w folderze \n'\
' Więcej informacji na PSDevWiki: '
STR_ABOUT_SC_GLITCH = 'O Syscon Glitch'
STR_INFO_SC_GLITCH = ''\
' Czytnik Syscon autorstwa DarkNESmonk (Arduino Nano V3 CH340)\n'\
' Więcej informacji znajdziesz w folderze '
STR_ABOUT_SC_BOOTMODES = 'O trybach bootowania'
STR_INFO_SC_BOOTMODES = ''\
' Rekordy trybu bootowania są zaszyfrowane, więc nie możemy wykryć ich przeznaczenia\n'\
' Powinieneś wypróbować każdy z nich samodzielnie, aby określić, do czego służy\n'\
' Pamiętaj: niektóre rekordy mogą się powtarzać (oznaczone kolorem)'
STR_OVERCLOCKING = ''\
' Niebezpieczna operacja!\n\n'\
' Większość pamięci GDDR5 działa na 6000-8000 MHz. GDDR5 jest czterokrotnie pompowane [x4]\n'\
' GDDR5 przy 8000 MHz technicznie działa na 2000 MHz\n'\
' Jeśli masz problemy, zmniejsz częstotliwość do 1000 MHz\n'\
'\n'\
' Efektywna częstotliwość GDDR5 to 1350 MHz\n'\
' Częstotliwość jest ustalana eksperymentalnie\n'\
' - Zbyt wysoka wartość może prowadzić do błędu LOADBIOS -8 lub DCT [*]\n'\
' - Zbyt niska wartość prowadzi do błędu AMDINIT'
STR_ABOUT_EAPKEYS = 'O kluczach EAP'
STR_INFO_EAPKEYS = ''\
' Klucz EAP może mieć długość 0x40 i 0x60 bajtów\n'\
' Modele PS4 10xx/11xx zazwyczaj mają tylko jeden klucz\n'\
' A modele 12xx/Slim/PRO mają klucz zapasowy\n'\
STR_IMMEDIATLY = ''\
' Uwaga: Wszystkie łatki są natychmiast stosowane do pliku!'
STR_PATCHES = STR_IMMEDIATLY + '\n'\
' Przełączy wartość między dostępnymi wartościami dla wybranej opcji'
STR_DOWNGRADE = ''\
' Niebezpieczna operacja!\n\n'\
' Przełączanie slotów jest używane do przywracania wersji FW (downgrade).\n'+\
' Naprawia również błąd "loadbios".\n'\
' Upewnij się, że masz kopię zapasową oryginalnego zrzutu sFlash i SYSCON.\n'\
' Wymagane jest patchowanie Syscon! W przeciwnym razie otrzymasz błąd "loadbios".\n'\
' Konsola nie uruchomi się normalnie.'
STR_ABOUT_MPATCH = 'Instrukcje dotyczące ręcznego patchowania'
STR_INFO_SC_MPATCH = ''\
' Każdy rekord ma długość 16 bajtów. Pierwszy bajt to zawsze "A5"\n'\
' Drugi bajt to "typ" rekordu, zazwyczaj w zakresie [0x00-0x30]\n'\
' Aktualizacja oprogramowania obejmuje 4 rekordy o typach %s\n'\
' Aby anulować ostatnią aktualizację FW, musimy wyczyścić te 4 rekordy (wypełniając je 0xFF)\n'\
' Jeśli po %s występują typy %s,%s, patchowanie jest niemożliwe\n'\
' slot zapasowy został już nadpisany, otrzymasz błąd checkUpdVersion'
STR_ABOUT_EAP = 'O kluczach EAP'
STR_INFO_HDD_EAP = ''\
' Te klucze pozwalają na eksplorację plików HDD PS4 na PC\n'\
' Dodatkowe informacje znajdziesz odwiedzając:\n '\
STR_ABOUT_EMC_CFW = 'O EMC CFW'
STR_INFO_EMC_CFW = ''\
' Używaj na własne ryzyko!\n'\
' Tylko dla Aeolia (PS4 Fat 10xx/11xx)\n'\
' Zapewnia kontrolę nad Southbridge i Syscon\n\n'\
' Dodatkowe informacje:\n '
STR_APP_HELP = ''\
' Użycie: ps4-wee-tools [parametry] \n'\
'\n'\
' Parametry: \n\n'\
' : załaduj odpowiednie narzędzie dla podanego pliku\n'\
' : zbuduj zrzut przy użyciu plików z podanego folderu\n'\
' ... : porównaj pliki (z informacjami MD5)\n'\
' --help : wyświetl tę pomoc\n'\
'\n'\
' Strona główna: '
================================================
FILE: lang/pt.py
================================================
#==========================================================
# Portuguese language [PT]
# part of ps4 wee tools project
# https://github.com/andy-man/ps4-wee-tools
#==========================================================
MENU_SC_REBUILD_MODES = [
'Modo Normal (Escolha FW, valores padrão para restauração / Todos (12) tipos)',
'Config. Mínima (Escolha os dois primeiros tipos e FW / 3 tipos)',
'Modo Especialista (Todos os ajustes (12) tipos)',
]
MENU_NVS_COPY = [
'Substitua %s com backup (%s <= %s)',
'Substitua backup com %s (%s => %s)',
]
MENU_EAP_KEYS = [
'Substitua A por B (key_a <= key_b)',
'Substitua B por A (key_a => key_b)',
'Corrigir magic A *',
'Corrigir magic B *',
'Gerar novas chaves A,B (tamanho 0x60) *',
'Gerar novas chaves A,B (tamanho 0x40) *',
'Limpar chave B *',
]
MENU_FLASHER = [
'Lêr tudo',
'Lêr área',
'Lêr bloco',
'Escrever tudo',
'Escrever área',
'Escrever bloco',
'Verificar tudo',
'Verificar área',
'Verificar bloco',
'Apagar tudo',
'Apagar área',
'Apagar bloco',
]
MENU_SERIAL_MONITOR = {
'Ctrl+Q':'fechar monitor',
'Ctrl+R':'reiniciar monitor',
'Ctrl+E':'alternar modo de cmd EMC',
'Ctrl+B':'exibir bytecodes < 0x20',
'Ctrl+L':'salvar em arquivo Log',
}
MENU_TOOL_SELECTION = [
'Navegador de arquivos',
'Monitor Terminal (UART)',
'sFlash r/w (SPIway por Judges)',
'Syscon r/w (SCTool por Abkarino & EgyCnq)',
'Syscon r/o (SCRead por DarkNESmonk)',
'Syscon w/o (Para Renesas RL78 de fábrica)',
'Trocar idioma do Aplicativo',
'Sair',
]
MENU_FILE_SELECTION = {
'a':'Exibir todos os arquivos / Filtrar [bin,pup]',
'f':'Construir sflash0 despejado',
'b':'Construir 2BLS/PUP',
'r':'Renomear Lote (extrair informação de despejo para o nome do arquivo)',
'c':'Comparar arquivos da pasta atual',
'q':'Fechar / Voltar',
}
MENU_EXTRA_FLASHER = {
's':'Selecionar arquivo',
'f':'Carregar Ferramenta para este arquivo',
'q':'Fechar / Voltar',
}
MENU_EXTRA = {
's':'Selecionar outro arquivo',
'f':'Gravar este arquivo (todo/partes) novamente no C.I.',
'r':'Renomear arquivo para nome canônico',
'q':'Fechar / Voltar',
}
MENU_SFLASH_ACTIONS = [
'Sinalizadores (UART, RNG, Memtest, etc)',
'Freqüência da Memória RAM (GDDR5)',
'Sinalizador de Inicialização SAMU (Sony Advanced Manager Utility)',
'Trocar slot do CoreOS (reversão de FW)',
'Aplicar correção Legítima no CoreOS',
'Aplicar correção no chipset (Southbridge)',
'Aplicar correção no chip Torus (WiFi+BT)',
'Ferramentas Adicionais',
]
MENU_SFLASH_ADV_ACTIONS = [
'Extrair partições do arquivo sFlash0',
'Construir sFlash0 de arquivos extraídos',
'Visualizar / Restaurar áreas NVS (1C9, 1CA)',
'Visualizar / Restaurar chaves EAP',
'Pegar chaves do HDD = descriptografar chaves EAP = criar [keys.bin]',
'Criar EMC CFW (somente para consoles Fat 1xxx/11xx)',
'Validação de Base e estatísticas de entropia',
'Análise e restauração de partições corrompidas',
]
MENU_SC_ACTIONS = [
'Alternar Depuração',
'Aplicar correção Automática em SNVS',
'Visualizar blocos SNVS',
'Visualizar blocos NVS',
'Aplicar correção Manual em SNVS',
'Ferramentas Adicionais',
]
MENU_SC_ADV_ACTIONS = [
'Reinicar contadores SNVS',
'Seleção de Modo (00-03)',
'Modo de inicialização (04-07)',
'Reconstrução de SNVS de Syscon\'s (Restauração de Fábrica)',
'Restauração de FW de Syscon\'s',
'Converter para Renesas Flasher (Motorola S28)',
]
MENU_PATCHES = [
'Método A - último 08-0B será excluído (4 registros)',
'Método B - último 08-0B e abaixo serão excluídos (%d registros)',
'Método C - Excluir tudo abaixo do 08-0B anterior (%d registros)',
'Método D - Excluir tudo abaixo do último 08-0B (%d registros)',
'Método E - Excluir 08-0B anterior e abaixo (%d registros)',
]
MENU_SC_STATUSES = [
'Slot do CoreOs sobrescrito',
'Corrigível',
'Já corrigido ou travado na atualização',
'Provavelmente Corrigível',
]
MENU_SPW_ACTS = {
'read': 'Lendo',
'write': 'Escrevendo',
'verify': 'Verificando',
'erase': 'Apagando',
}
STR_LANGUAGE = 'Idioma'
STR_SECONDS = '%0.0f segundos'
STR_NVS_AREAS = 'áreas NVS'
STR_PORTS_LIST = 'Portas seriais'
STR_MAIN_MENU = 'Menu Principal'
STR_FILE_LIST = 'Lista de arquivos'
STR_SFLASH_INFO = 'Informação do despejo da sFlash'
STR_ADDITIONAL = 'Ferramenta Adicional'
STR_SYSCON_INFO = 'Informação de despejo do Syscon'
STR_COMPARE = 'Comparar'
STR_HELP = 'Ajuda'
STR_ACTIONS = 'Ações'
STR_COREOS_SWITCH = 'Troca de Slot do CoreOS'
STR_SWITCH_PATTERNS = 'Alternar padróes'
STR_MEMCLOCK = 'Freqüência de Memória'
STR_SAMU_BOOT = 'Inicialização SAMU'
STR_SYSFLAGS = 'Sinalizadores de Sistema'
STR_NVS_ENTRIES = '%s Entradas no Syscon'
STR_APATCH_SVNS = 'Correções automáticas de SNVS'
STR_MPATCH_SVNS = 'Correções manuais de SNVS'
STR_SFLASH_VALIDATOR = 'Validação de sFlash'
STR_SFLASH_FLAGS = 'Sinalizadores de sFlash'
STR_SFLASH_EXTRACT = 'Extrator de sFlash'
STR_SFLASH_BUILD = 'Construtor de sFlash'
STR_HDD_KEY = 'Chave eap do HDD'
STR_2BLS_BUILDER = 'Construtor do 2BLS'
STR_UNPACK_2BLS = 'Descompactador 2BLS'
STR_UNPACK_PUP = 'Descriptografar PUP descompactada'
STR_EMC_CFW = 'EMC CFW (Aeolia)'
STR_EAP_KEYS = 'Chaves EAP'
STR_SC_BOOT_MODES = 'Registros do Modo de Inicialização'
STR_INFO = 'Informação'
STR_SC_READER = 'Leitor de Syscon'
STR_SPIWAY = 'SPIway por Judges & Abkarino'
STR_SCF = 'Syscon Flasher por Abkarino & EgyCnq'
STR_LEG_PATCH = 'Correção Legítima de CoreOS'
STR_PART_RECOVERY = 'Restauração de Partição'
STR_PART_ANALYZE = 'Analisando Partição'
STR_PART_LIST = 'Lista de Partições'
STR_PARTS_INFO = 'Informação de Partição'
STR_WIFI_PATCHER = 'Correção de WiFi'
STR_SB_PATCHER = 'Correção de Southbridge'
STR_RL78FLASH = 'Gravador de RL78'
STR_SC_REBUILDER = 'Reconstrução de Syscon'
STR_ALL = 'Tudo'
STR_UNIQUE = 'Único'
STR_BACKUP = 'Backup'
STR_EQUAL = 'Igual'
STR_NOT_EQUAL = 'Diferente'
STR_NO_INFO = '- Sem informação -'
STR_OFF = 'Desligado'
STR_ON = 'Ligado'
STR_WARNING = 'Aviso'
STR_HELP = 'Ajuda'
STR_UNKNOWN = '- Desconhecido -'
STR_YES = 'Sim'
STR_NO = 'Não'
STR_PROBABLY = 'Provavelmente'
STR_NOT_SURE = 'não tenho certeza'
STR_DIFF = 'Diferente'
STR_NOT_FOUND = 'não encontrado'
STR_BAD_SIZE = 'tamanho incorreto'
STR_OK = 'OK'
STR_FAIL = 'Falhou'
STR_CANCEL = 'Cancelar'
STR_IS_PART_VALID = '[%s] %s FW %s'
STR_SNVS_ENTRIES = '%d registros encontrados em 0x%05X'
STR_SERIAL_MONITOR = 'Terminal'
STR_ELAPSEDTIME = 'Tempo decorrido'
STR_NO_PORT_CHOSEN = ' Nenhuma porta foi escolhida'
STR_NO_PORTS = ' Nenhuma porta serial foi encontrada'
STR_PORT_UNAVAILABLE = ' A porta selecionada não está disponível'
STR_PORT_CLOSED = ' A porta está fechada'
STR_STOP_MONITORING = ' Monitoramento parado pelo usuário'
STR_RESTART_APP = ' Reiniciar Aplicativo para aplicar as alterações'
STR_GENERATE_ALL_PS = ' Gerar todas as correções'
STR_ACTION_NA = ' Nenhuma ação está disponível para %s'
STR_EMC_CFW_WARN = ' Atualmente EMC CFW é apenas para 10xx/11xx PS4 Fat'
STR_EMC_NOT_FOUND = ' EMC FW não foi encontrada'
STR_DECRYPTING = ' Descriptografando'
STR_ENCRYPTING = ' Encriptografando'
STR_PATCHING = ' Corrigindo'
STR_EXPERIMENTAL = ' * - funções experimentais'
STR_PERFORMED = ' Ação performada: '
STR_EMPTY_FILE_LIST = ' A lista de arquivos está vazia'
STR_NO_FOLDER = ' Diretório %s não existe'
STR_EXTRACTING = ' Extraindo sflash0 para a pasta %s'
STR_FILES_CHECK = ' Checando arquivos'
STR_BUILDING = ' Construindo arquivo %s'
STR_DONE = ' Tudo pronto'
STR_PROGRESS = ' Progresso %02d%% '
STR_PROGRESS_KB = ' Progresso: %dKB / %dKB'
STR_WAIT = ' Por favor aguarde...'
STR_WAITING = ' Aguardando...'
STR_SET_TO = ' %s foi definido como [%s]'
STR_ABORT = ' Ação abortada'
STR_FILENAME = ' Nome do arquivo: '
STR_VALIDATE_NVS_CHECK = ' Checando áreas do NVS'
STR_ACT_SLOT = ' Slot ativo: %s [0x%02X]'
STR_NIY = ' Este recurso está disponível apenas na versão PRO'
STR_CLEAN_FLAGS = ' Limpar todos sinalizadores do sistema'
STR_UNK_FILE_TYPE = ' Tipo de arquivos desconhecido'
STR_UNK_CONTENT = ' Conteúdo desconhecido'
STR_UART = ' UART está definido para '
STR_DEBUG = ' Depuração do Syscon está definido para '
STR_DIFF_SLOT_VALUES = ' Os valores nos slots são diferentes!'
STR_SYSFLAGS_CLEAN = ' Os sinalizadores de sistema foram limpos. Dica: Ligue o UART'
STR_SAMU_UPD = ' O sinalizador de SAMU foi definido para '
STR_DOWNGRADE_UPD = ' O Slot foi definido para: '
STR_LAST_SC_ENTRIES = ' Exibindo últimas [%d/%d] entradas do bloco ativo [%d]'
STR_MEMCLOCK_SET = ' A frequência GDDR5 foi definida para %dMHz [0x%02X]'
STR_RECOMMEND = ' Método recomendado [%s]'
STR_PATCH_CANCELED = ' A correção foi cancelada'
STR_PATCH_SUCCESS = ' Successo, foram removidas %d entradas'
STR_PATCH_SAVED = ' Correção foi salvo como %s'
STR_RENAMED = ' Renomeado para %s'
STR_SC_BLOCK_SELECT = ' Selecione o bloco de dados [0-%d] | Ver Plano/Bloco [f] '
STR_MPATCH_INPUT = ' Quantos registros limpar (do final): '
STR_CHOICE = ' Escolha uma opção: '
STR_BACK = ' Pressione [ENTER] para voltar'
STR_MEMCLOCK_INPUT = ' Configurar frequência [400 - 2000] / [0 definir padrão (0xFF)] MHz '
STR_SAMU_INPUT = ' Configurar SAMU [0 - 255] / [padrão é 255 (0xFF)] '
STR_TOO_MUCH = ' %d é demais, o valor máximo é %d'
STR_SC_BLOCK_CLEANED = ' Bloco [%d] foi totalmente limpo'
STR_OWC_RESET_REQUIRED = ' Você precisa redefinir os contadores SNVS primeiro para executar esta ação'
STR_SC_NO_BM = ' Os registros dos modos de inicialização não foram encontrados!'
STR_UNPATCHABLE = ' Não posso corrigir!'
STR_SYSCON_BLOCK = ' Bloco [%d/%d] possui [%d/%d] entradas | O bloco ativo é [%d]\n'
STR_PARTITIONS_CHECK = ' Checando partições'
STR_ENTROPY = ' Estatísticas de entropia'
STR_MAGICS_CHECK = ' Checando bytes mágicos'
STR_DUPLICATES = ' %d duplicidade(s) encontrada [%s]'
STR_SC_WARN_OVERWITTEN = ' Aviso: CoreOS foi provavelmente sobrescrito'
STR_SNVS_ENTRY_INFO = 'Bloco %d #%03d Offset 0x%04X'
STR_SC_TOGGLE_FLATDATA = 'Alternar entre Plano/Bloco'
STR_SH_DUPLICATES = 'Mostrar / Ocultar duplicidades'
STR_NO_ENTRIES = 'Nenhuma entrada encontrada'
STR_SKIPPED = 'Ignorado'
STR_SKIP_ENTRY = 'Ignorar este tipo de entrada'
STR_NO_FILE_SEL = 'Nenhum arquivo selecionado'
STR_INCORRECT_SIZE = ' %s têm tamanho de despejo incorreto!'
STR_FILE_NOT_EXISTS = ' Arquivo %s não existe!'
STR_FILE_EXISTS = ' Nome de arquivo já existente!'
STR_ERROR_FILE_REQ = ' Você precisa selecionar o arquivo primeiro'
STR_SAVED_TO = ' Savo como %s'
STR_ERROR_INPUT = ' Entrada incorreta'
STR_ERROR_DEF_VAL = ' Configurando valores padrões'
STR_ERROR_CHOICE = ' Escolha inválida'
STR_ERROR_INFO_READ = ' Erro durante a leitura de dados do aquivo'
STR_OUT_OF_RANGE = ' Valor está fora de alcance!'
STR_FILES_MATCH = ' Os arquivos são iguais'
STR_FILES_MISMATCH = ' Incompatibilidade de arquivos'
STR_SIZES_MISMATCH = ' Tamanhos incompatíveis!'
STR_RENAMED_COUNT = ' %d arquivos foram renomeados'
STR_FW_RECORDS = ' Versões de FW - de Atual(1) à Inicial(%d)'
STR_SELECT_MODEL = ' Selecione o modelo:'
STR_SHOW_DETAILS = ' Mostrar detalhes?'
STR_Y_OR_CANCEL = ' [y - yes/sim, * - cancelar] '
STR_CHOOSE_AREA = ' Escolha a área: '
STR_INPUT_SEL_DUMP = ' Selecionar o segundo despejo?'
STR_INPUT_DESTROY_PREV = ' Destruir todos os registros (08-0B) anteriores do FW?'
STR_INPUT_BLOCK = ' Insira o bloco inicial [contagem]: '
STR_INPUT_SAVE_IM = ' Salvar todos os arquivos intermediários?'
STR_INPUT_USE_SLOTB = ' Usar slot B (ativo)?'
STR_USE_NEWBLOBS = ' Usar nova chave conteiner?'
STR_CONFIRM_SEPARATE = ' Salvar como arquivo separado?'
STR_CONFIRM = ' Insira [y] para continuar: '
STR_CURRENT = ' Atual: '
STR_GO_BACK = ' Voltar'
STR_SC_BM_SELECT = ' Selecione a variante do modo de inicialização [1-%d] '
STR_OPEN_IN_SC_TOOL = ' Abrir arquivo na Ferramenta de Syscon?'
STR_FLASH_FILE = ' Gravar este arquivo no C.I.?'
STR_READING_DUMP_N = ' Lendo despejo %d'
STR_CHIP_NOT_RESPOND = ' Chip não está respondendo, checar a instalação dos fios e pressione o botão de reset'
STR_HOW_MUCH_DUMPS = ' Fazer leitura de quantos despejos? [max 10] '
STR_EMC_CMD_MODE = 'Ativando o modo de cmd EMC: [%s]'
STR_SHOW_BYTECODES = 'Mostrar códigos em byte < 0x20: [%s]'
STR_MONITOR_STATUS = 'RX/TX: %d/%d (bytes) Decorridos: %d (seg.)'
STR_CHIP_CONFIG = ' Chip config'
STR_FILE_INFO = ' Informação do arquivo'
STR_VERIFY = ' Verificar'
STR_SPW_PROGRESS = 'Bloco %03d [%d KB / %d KB] %d%% %s '
STR_SPW_ERROR_CHIP = 'Chip não suportado!'
STR_SPW_ERROR_VERSION = 'Versão não suportada! (v%d.%02d obrigatória)'
STR_SPW_ERROR_ERASE = 'Erro apagando o chip!'
STR_SPW_ERROR_ERASE_BLK = 'Bloco %d - erro apagando o bloco'
STR_SPW_ERROR_DATA_SIZE = '%d Tamanho dos dados incorreto'
STR_SPW_ERROR_LENGTH = 'Tamanho incorreto %d != %d!'
STR_SPW_ERROR_BLK_CHK = 'Erro! Verificação do bloco falhou (bloco=%d)'
STR_SPW_ERROR_WRITE = 'Erro durante a escrita!'
STR_SPW_ERROR_READ = 'Teensy atingiu o tempo limite do buffer! Disconecte e reconecte o Teensy!'
STR_SPW_ERROR_VERIFY = 'Erro na verificação!'
STR_SPW_ERROR_PROTECTED = 'Dispositivo está protegido contra gravação!'
STR_SPW_ERROR_UNKNOWN = 'Erro desconhecido recebido!'
STR_SPW_ERROR_UNK_STATUS= 'Código de Status desconhecido!'
STR_SPW_ERR_BLOCK_ALIGN = 'Esperando que o tamanho do arquivo seja uma multiplicação do tamanho do bloco: %d'
STR_SPW_ERR_DATA_SIZE = 'Os dados têm %d bytes de comprimento (%d esperado)!'
STR_SPW_ERR_OVERFLOW = 'O chip tem %d blocos. Escrevendo fora da capacidade do chip!'
STR_SCF_ERROR_VERSION = 'Versão não suportada! (v%d.%02d obrigatória)'
STR_SCF_ERROR_WRITE_BLK = 'Erro escrevendo bloco %d'
STR_SCF_ERROR_ERASE_BLK = 'Erro apagando bloco %d'
STR_SCF_ERROR_READ_BLK = 'Erro lendo bloco %d'
STR_SCF_ERROR_ERASE_CHIP= 'Erro ao apagar o chip'
STR_SCF_ERR_INT = 'Erro durante a inicialização'
STR_SCF_ERR_READ = 'Erro de leitura'
STR_SCF_ERR_ERASE = 'Erro ao apagar'
STR_SCF_ERR_WRITE = 'Erro ao escrever'
STR_SCF_ERR_CMD_LEN = 'Tamanho incorreto do comando'
STR_SCF_ERR_CMD_EXEC = 'Erro durante a execução do comando'
STR_SCF_ERR_UNKNOWN = 'Erro desconhecido recebido!'
STR_SCF_ERR_UNK_STATUS = 'Código de Status desconhecido!'
STR_SCF_SAFE_ERASE = ' Formatação segura do chip, inicializando no bloco #%03d'
STR_CANT_USE = 'Não posso usar isto'
STR_DIFF_SN = 'Números de Série são diferentes!'
STR_SSP_EQUAL = 'A troca de slot padrão são iguais!'
STR_LP_FIRST_DUMP = 'Primeiro despejo'
STR_LP_SECOND_DUMP = 'Segundo despejo'
STR_CONVERTING_S28 = ' Convertendo para o formato S28'
STR_S28_ALREADY = ' O formato do arquivo é S28'
STR_USE_EXPERT_M = ' Escolha outro modelo ou use o modo especialista!'
STR_ERR_NO_FW_FOUND = ' Erro: Não é possível encontrar %s para FW %s no Banco de Dados'
STR_EXPERT_MODE = ' Modo Especialista?'
STR_SELECT_FW_VER = ' Selecione a versão da fw'
STR_MODEL = ' Modelo'
STR_FW_VER = ' FW: %s / Slot: %s'
STR_SELECT_MOST_FILE = ' Selecione o arquivo mais relevante: '
STR_NO_FW_FILES = ' Os arquivos não foram encontrados! Baixar arquivos para a pasta fws:\n [%s]'
STR_ABOUT_SC_REBUILDER = 'Sobre o Reconstrutor de Syscon'
STR_INFO_SC_REBUILDER = ''\
' Este utilitário irá ajudá-lo a criar uma versão customizada do Syscon.\n'\
' Você pode ajustar cada tipo de registro no modo especialista.\n'\
' As entradas são classificadas do atual para o passado.\n'\
' * Para selecionar FW anterior você precisa inserir "2" ou mais.\n'\
' * A configuração mínima consiste em 3 tipos (00-03 + 04-07 + 08-0B)'
STR_ABOUT_RL78FLASH = 'Sobre o Syscon de Fábrica'
STR_INFO_RL78FLASH = ''\
' Para escrever um novo chip syscon em branco (Renesas RL78G10)\n'\
' você precisa de adaptador USB para TTL, fios e alguns diodos.\n'\
' O diagrama de fiação pode ser encontrado na pasta assets/hw/l78flash'\
STR_ABOUT_NVS = 'Sobre restauração de NVS'
STR_INFO_NVS = ''\
' Troca bloco corrompido por dados de backup (não adequado para 10xx/11xx)\n'\
' Aviso - UART e outros sinalizadores podem ser substituídos.\n'\
' Se você precisar definir alguns sinalizadores, faça-o após a recuperação do NVS!\n'\
STR_ABOUT_TORUS_PATCH = 'Sobre a correção de WiFi'
STR_INFO_TORUS_PATCH = ''\
' Será útil em caso de:\n'\
' - FW Torus (WiFi + BT) corrompido\n'\
' - mudar para outro módulo C.I.'\
STR_ABOUT_SB_PATCH = 'Sobre a correção de Chipset(Southbridge)'
STR_INFO_SB_PATCH = ''\
' Será útil em caso de:\n'\
' - FW do Southbridge corrompido ou Erro de "VERSÃO DE EMC DESATIVADA"\n'\
' - Troca por outro módulo C.I. (CXD90046 => CXD90036)\n'\
' - Substituição de Pacotes de APU (21xx => 22xx, 71xx => 72xx)'
STR_INFO_FLASH_TOOLS = ''\
' As ferramentas de gravação (spiway e syscon flasher) são experimentais! Tome cuidado.'\
STR_ABOUT_PART_RECOVERY = 'Análise e recuperação de partição'
STR_INFO_PART_A_R = ''\
' Compara cada byte da partição (SFlash/Syscon) com arquivos válidos\n'\
' e mostra porcentagem de similaridade.\n'\
' A maioria dos arquivos iguais estará no topo da lista.\n'\
' Tenha em mente que FW do Southbridge consiste em EMC + EAP'
STR_INFO_FW_LINK = ''\
' Coloque arquivos emc/eap/torus/syscon válidos na pasta /fws/\n'\
' Você pode baixá-lo deste repositório:\n '
STR_ABOUT_LEG_PATCH = 'Sobre correção Legítima do CoreOS'
STR_INFO_LEG_PATCH = ''\
' Este método é adequado apenas para consoles funcionais!\n'\
' Porque isto requer atualização via menu seguro do PS4\n'\
'\n'\
' 1) Leia o primeiro despejo(dump) (se ainda não o fez)\n'\
' 2) Atualize o console para a MESMA versão via modo de segurança\n'\
' 3) Leia o segundo despejo(dump) (ambos os slots têm FW igual)\n'\
'\n'\
' Agora você pode corrigir o primeiro despejo(dump) com dados do segundo\n'\
' Você pode arrastar e soltar 2 despejos(dumps) no atalho wee-tools para acelerar'
STR_ABOUT_SCF = 'Sobre o gravador de Syscon'
STR_INFO_SCF = ''\
' O gravador de Syscon permite que você grave o chip syscon original do PS4 (RL78/G13)\n'\
' O gravador de Syscon suporta apenas modelos de syscon A0x-COLx\n'\
' Atualmente a parte de hardware é baseada em placas Teensy (2.0++/4.0/4.1)\n'\
' Veja para diagramas e firmware do Teensy\n'\
' Mais informações aqui: '
STR_ABOUT_SPIWAY = 'Sobre o gravador SPIway'
STR_INFO_SPIWAY = ''\
' O gravador SPIway suporta acesso de leitura e gravação em blocos aleatórios (Teensy++ 2.0)\n'\
' Veja a pasta para diagramas e firmware do Teensy\n'\
' Mais informações em PSDevWiki: '
STR_ABOUT_SC_GLITCH = 'Sobre o Leitor de Syscon Glitch'
STR_INFO_SC_GLITCH = ''\
' Leitor Syscon da DarkNESmonk (Arduino Nano V3 CH340)\n'\
' Veja a pasta para mais informações'
STR_ABOUT_SC_BOOTMODES = 'Sobre Modos de Inicialização'
STR_INFO_SC_BOOTMODES = ''\
' Os registros do modo de inicialização são criptografados, por isso não podemos detectar sua finalidade\n'\
' Você deve experimentar cada um deles sozinho para determinar para que serve\n'\
' Tenha em mente: alguns registros podem ter duplicidades (marcadas com cores)'
STR_OVERCLOCKING = ''\
' Operação perigosa!\n\n'\
' A maioria do GDDR5 funciona entre 6.000-8.000 MHz. GDDR5 tem bombeamento quádruplo [x4]\n'\
' GDDR5 a 8.000 MHz funciona tecnicamente a 2.000 MHz\n'\
' Se você tiver problemas, diminua a frequência para 1.000 MHz\n'\
'\n'\
' A frequência efetiva do GDDR5 é de 1.350 MHz\n'\
' A frequência é selecionada experimentalmente\n'\
' - Valor muito alto pode levar ao erro LOADBIOS -8 ou DCT [*]\n'\
' - Valor muito baixo leva a erro AMDINIT'
STR_ABOUT_EAPKEYS = 'Sobre as chaves EAP'
STR_INFO_EAPKEYS = ''\
' A chave Eap pode ter comprimento de 0x40 e 0x60 bytes\n'\
' Os modelos PS4 10xx/11xx geralmente possuem apenas uma chave\n'\
' E os modelos 12xx/Slim/PRO possuem chave de backup\n'\
STR_IMMEDIATLY = ''\
' Tenha cuidado: todos os patches são aplicados imediatamente ao arquivo!'
STR_PATCHES = STR_IMMEDIATLY + '\n'\
' Alternará o valor entre os valores disponíveis para a opção escolhida'
STR_DOWNGRADE = ''\
' Operação perigosa!\n\n'\
' A comutação de slot é usada para reversão de FW (downgrade).\n'+\
' Ele também corrige o erro “loadbios”.\n'\
' Certifique-se de ter backup completo do firmware de fábrica do SYSCON.\n'\
' É necessário a correção do Syscon! Caso contrário, você receberá o erro "loadbios".\n'\
' O console não inicializa normalmente.'
STR_ABOUT_MPATCH = 'Instruções de correção Manual'
STR_INFO_SC_MPATCH = ''\
' Cada registro tem 16 bytes de comprimento. O primeiro byte é sempre "A5"\n'\
' O segundo byte é o "tipo" de registro, geralmente no intervalo [0x00-0x30]\n'\
' A atualização de firmware leva 4 registros com tipos %s\n'\
' Para cancelar a última atualização do firmware, precisamos limpar esses 4 registros (preencher com 0xFF)\n'\
' Se houver %s,%s tipos após %s a correção será impossível\n'\
' O slot de backup já foi substituído, você receberá um erro checkUpdVersion'
STR_ABOUT_EAP = 'Sobre as chaves EAP'
STR_INFO_HDD_EAP = ''\
' Essas chaves permitem que você explore arquivos no HDD do PS4 com PC\n'\
' Você pode encontrar informações adicionais visitando:\n '\
STR_ABOUT_EMC_CFW = 'Sobre EMC CFW'
STR_INFO_EMC_CFW = ''\
' Use por sua conta e risco!\n'\
' Apenas para Aeolia (PS4 Fat 10xx/11xx)\n'\
' Concede controle sobre o chipset(southbridge) e o syscon\n\n'\
' Informação adicional:\n '
STR_APP_HELP = ''\
' Modo de Usar: ps4-wee-tools [parametros] \n'\
'\n'\
' Parametros: \n\n'\
' : carregue a ferramenta apropriada para o arquivo fornecido\n'\
' : construir despejo(dump) com arquivos da pasta fornecida\n'\
' ... : comparar arquivos (com informações MD5)\n'\
' --help : mostrar esta tela de ajuda\n'\
'\n'\
' Homepage: '
================================================
FILE: lang/ru.py
================================================
#==========================================================
# Russian language [RU]
# part of ps4 wee tools project
# https://github.com/andy-man/ps4-wee-tools
#==========================================================
MENU_SC_REBUILD_MODES = [
'Стандартный режим (Выбор ПО, остальное по-умолчанию / Все (12) типов)',
'Минимальный набор (Выбор 2 первых типов и ПО / 3 типа)',
'Эксперт (Настройка всех (12) типов)',
]
MENU_NVS_COPY = [
'Заменить %s на значение из бекапа (%s <= %s)',
'Заменить бекап на текущее значение %s (%s => %s)',
]
MENU_EAP_KEYS = [
'Заменить A на B (key_a <= key_b)',
'Заменить B на A (key_a => key_b)',
'Исправить magic A *',
'Исправить magic B *',
'Сгененрировать новые ключи A,B (длина 0x60) *',
'Сгененрировать новые ключи A,B (длина 0x40) *',
'Очистить ключ B *',
]
MENU_FLASHER = [
'Считать все',
'Считать область',
'Считать блок',
'Записать всё',
'Записать область',
'Записать блок',
'Проверить всё',
'Проверить область',
'Проверить блок',
'Стереть всё',
'Стереть область',
'Стереть блок',
]
MENU_SERIAL_MONITOR = {
'Ctrl+Q':'закрыть мониторинг',
'Ctrl+R':'перезапустить',
'Ctrl+E':'режим команд EMC',
'Ctrl+B':'отображать байткоды < 0x20',
'Ctrl+L':'вести лог в файл',
}
MENU_TOOL_SELECTION = [
'Выбрать Файл',
'Терминал (UART)',
'sFlash r/w (SPIway by Judges)',
'Syscon r/w (SCTool by Abkarino & EgyCnq)',
'Syscon r/o (SCRead by DarkNESmonk)',
'Syscon w/o (для стоковых Renesas RL78)',
'Сменить Язык интерфейса',
'Выход',
]
MENU_FILE_SELECTION = {
'a':'Все файлы / Фильтр [bin,pup]',
'f':'Собрать дамп sflash0',
'b':'Собрать 2BLS/PUP',
'r':'Пакетно переименовать (вынести инфо в название файла)',
'c':'Сравнить файлы в текущей папке',
'm':'Выйти / Назад',
}
MENU_EXTRA_FLASHER = {
's':'Выбрать файл',
'f':'Запустить утилиту для работы с файлом',
'm':'Выйти / Назад',
}
MENU_EXTRA = {
's':'Выбрать другой файл',
'f':'Прошить файл (целоком/частично) обратно в чип',
'r':'Переименовать (вынести инфо в название файла)',
'm':'Выйти / Назад',
}
MENU_SFLASH_ACTIONS = [
'Флаги (UART, RNG, Memtest, и т.д.)',
'Частота памяти (GDDR5)',
'Флаг загрузки SAMU',
'Переключение слота CoreOS (Откат версии ПО)',
'Переключение CoreOS через рекавери (legit patch)',
'Замена ПО южного моста',
'Замена ПО беспроводного модуля',
'Дополнительные инструменты',
]
MENU_ADDTIONAL = [
'Разобрать дамп sFlash0 на разделы',
'Собрать дамп sFlash0 из файлов',
'Просмотр / Восстановление NVS блоков (1C9, 1CA)',
'Просмотр / Восстановление ключа EAP',
'Получить ключи HDD = расшифровка EAP ключа = создание [keys.bin]',
'Создать EMC cfw (для Fat 1xxx/11xx)',
'Базовая валидация дампа',
'Анализ и восстановление разделов',
]
MENU_SC_ACTIONS = [
'Вкл/выкл режима Debug',
'Автоматический патч SNVS',
'Просмотр блоков SNVS',
'Просмотр блоков NVS',
'Ручной патч SNVS',
'Дополнительные инструменты',
]
MENU_SC_ADV_ACTIONS = [
'Сброс счетчиков SNVS',
'Выбор режима (00-03)',
'Выбор режима загрузки (04-07)',
'Syscon Rebuilder - пересборка SNVS (Factory Reset)',
'Восстановление прошивки Syscon',
'Конвертировать для Renesas flasher (Motorolla S28)',
]
MENU_PATCHES = [
'Метод A - последние 08-0B будут удалены (4 шт)',
'Метод B - последние 08-0B и все что ниже будут удалены (%d шт)',
'Метод C - очистить все ниже предыдущих 08-0B (%d шт)',
'Метод D - очистить все ниже последних 08-0B (%d шт)',
'Метод E - очистить предыдущие 08-0B и все что ниже (%d шт)',
]
MENU_SC_STATUSES = [
'Слот CoreOs перезаписан',
'Можно патчить',
'Уже пропатчен или застрял на обновлении',
'Вероятно можно патчить',
]
MENU_SPW_ACTS = {
'read': 'Чтение',
'write': 'Запсиь',
'verify': 'Проверка',
'erase': 'Стирание',
}
STR_LANGUAGE = 'Язык'
STR_SECONDS = '%0.0f секунд'
STR_NVS_AREAS = 'Области NVS'
STR_PORTS_LIST = 'Список портов'
STR_MAIN_MENU = 'Главное меню'
STR_FILE_LIST = 'Список файлов'
STR_SFLASH_INFO = 'Информация о дампе sFlash0'
STR_ADDITIONAL = 'Дополнительные инструменты'
STR_SYSCON_INFO = 'Информация о дампе Syscon'
STR_COMPARE = 'Сравнение'
STR_HELP = 'Справка'
STR_ACTIONS = 'Действия'
STR_COREOS_SWITCH = 'Переключатель CoreOS'
STR_SWITCH_PATTERNS = 'Шаблоны переключения'
STR_MEMCLOCK = 'Частота памяти'
STR_SAMU_BOOT = 'Загрузка SAMU'
STR_SYSFLAGS = 'Системные флаги'
STR_NVS_ENTRIES = 'Записи (%s) Syscon'
STR_APATCH_SVNS = 'Авто патчи SNVS'
STR_MPATCH_SVNS = 'Ручной патч SNVS'
STR_SFLASH_VALIDATOR = 'Валидация дампа sFlash0'
STR_SFLASH_FLAGS = 'Флаги sFlash0'
STR_SFLASH_EXTRACT = 'Распаковка sFlash0'
STR_SFLASH_BUILD = 'Сборка sFlash0'
STR_HDD_KEY = 'Ключ HDD eap'
STR_2BLS_BUILDER = 'Сборка 2BLS'
STR_UNPACK_2BLS = 'Распаковка 2BLS'
STR_UNPACK_PUP = 'Распаковка дешифрованных PUP(.dec)'
STR_EMC_CFW = 'EMC CFW (Aeolia)'
STR_EAP_KEYS = 'Ключи EAP'
STR_SC_BOOT_MODES = 'Загрузочные записи'
STR_INFO = 'Информация'
STR_SC_READER = 'Syscon reader'
STR_SPIWAY = 'SPIway by Judges & Abkarino'
STR_SCF = 'Syscon Flasher by Abkarino'
STR_LEG_PATCH = 'Переключение CoreOS через рекавери'
STR_PART_RECOVERY = 'Восстановление раздела'
STR_PART_ANALYZE = 'Анализ раздела'
STR_PART_LIST = 'Список разделов'
STR_PARTS_INFO = 'Информация о разделах'
STR_WIFI_PATCHER = 'Замена ПО WiFi'
STR_SB_PATCHER = 'Замена ПО южного моста'
STR_RL78FLASH = 'RL78 Flasher'
STR_SC_REBUILDER = 'Syscon Rebuilder'
STR_ALL = 'Все'
STR_UNIQUE = 'Уникальные'
STR_BACKUP = 'Бэкап'
STR_EQUAL = 'Одинаковые'
STR_NOT_EQUAL = 'Не идиентичны'
STR_NO_INFO = '- Нет информации -'
STR_OFF = 'Выкл'
STR_ON = 'Вкл'
STR_WARNING = 'Внимание'
STR_HELP = 'Помощь'
STR_UNKNOWN = '- Неизвестно -'
STR_YES = 'Да'
STR_NO = 'Нет'
STR_PROBABLY = 'Вероятно'
STR_NOT_SURE = 'не точно'
STR_DIFF = 'Различаются'
STR_NOT_FOUND = 'не найден'
STR_BAD_SIZE = 'не тот размер'
STR_OK = 'OK'
STR_FAIL = 'Сбой'
STR_CANCEL = 'Отмена'
STR_IS_PART_VALID = '[%s] %s FW %s'
STR_SNVS_ENTRIES = '%d записей найдено по адресу 0x%05X'
STR_SERIAL_MONITOR = 'Терминал'
STR_ELAPSEDTIME = 'Затрачено времени'
STR_NO_PORT_CHOSEN = ' Не выбран порт'
STR_NO_PORTS = ' Не найден ни один последовательный порт'
STR_PORT_UNAVAILABLE = ' Выбранный порт недоступен'
STR_PORT_CLOSED = ' Порт закрыт'
STR_STOP_MONITORING = ' Мониторинг был завершен пользователем'
STR_RESTART_APP = ' Перезапустите приложение, чтобы применить настройки'
STR_GENERATE_ALL_PS = ' Сгенерировать все патчи'
STR_ACTION_NA = ' Действие недоступно - %s'
STR_EMC_CFW_WARN = ' На данный момент EMC CFW доступно для 10xx/11xx PS4 Fat'
STR_EMC_NOT_FOUND = ' EMC FW не найдено'
STR_DECRYPTING = ' Расшифровка'
STR_ENCRYPTING = ' Шифрование'
STR_PATCHING = ' Исправление'
STR_EXPERIMENTAL = ' * - эксперементальные функции'
STR_PERFORMED = ' Выполнено действие: '
STR_EMPTY_FILE_LIST = ' Список файлов пуст'
STR_NO_FOLDER = ' Папка %s не существует'
STR_EXTRACTING = ' Распаковка sflash0 в папку %s'
STR_FILES_CHECK = ' Проверка файлов'
STR_BUILDING = ' Сборка файла %s'
STR_DONE = ' Готово'
STR_PROGRESS = ' В процессе %02d%% '
STR_PROGRESS_KB = ' Обработано: %dKB / %dKB'
STR_WAIT = ' Подождите...'
STR_WAITING = ' Ожидание...'
STR_SET_TO = ' Для %s установлено значение [%s]'
STR_ABORT = ' Действие отменено'
STR_FILENAME = ' Имя файла: '
STR_VALIDATE_NVS_CHECK = ' Проверка областей NVS'
STR_ACT_SLOT = ' Активный слот: %s [0x%02X]'
STR_NIY = ' Функция пока не разработана'
STR_CLEAN_FLAGS = ' Очистить все системные флаги'
STR_UNK_FILE_TYPE = ' Неизвестный тип файла'
STR_UNK_CONTENT = ' Неизвестное содержимое'
STR_UART = ' UART - '
STR_DEBUG = ' Режим отладки Syscon (debug) - '
STR_DIFF_SLOT_VALUES = ' Значения в слотах различаются!'
STR_SYSFLAGS_CLEAN = ' Системные флаги были очищены. Совет: включите UART'
STR_SAMU_UPD = ' Флаг SAMU - '
STR_DOWNGRADE_UPD = ' Переключатель слота: '
STR_LAST_SC_ENTRIES = ' Последние записи [%d/%d] активного блока [%d]'
STR_MEMCLOCK_SET = ' Частота GDDR5 установлена в значение %dMHz [0x%02X]'
STR_RECOMMEND = ' Рекомендуемый метод [%s]'
STR_PATCH_CANCELED = ' Патч был отменён'
STR_PATCH_SUCCESS = ' Записи удалены (%d шт.)'
STR_PATCH_SAVED = ' Патч сохранён в %s'
STR_RENAMED = ' Переименовано в %s'
STR_SC_BLOCK_SELECT = ' Выберите блок [0-%d] | Показать Flat/Block [f] '
STR_MPATCH_INPUT = ' Сколько записей очистить (с конца): '
STR_CHOICE = ' Ваш выбор: '
STR_BACK = ' Нажмите [ENTER] чтобы вернуться'
STR_MEMCLOCK_INPUT = ' Выберите частоту [400 - 2000] / [0 по-умолчанию (0xFF)] MHz '
STR_SAMU_INPUT = ' Настройте SAMU [0 - 255] / [по-умолчанию: 255 (0xFF)] '
STR_TOO_MUCH = ' %d это много, максимум %d'
STR_SC_BLOCK_CLEANED = ' Блок [%d] был полностью очищен'
STR_REBUILD_REQUIRED = ' Сначала нужно пересобрать SNVS чтобы продолжить'
STR_SC_NO_BM = ' Загрузочные режимы не были найдены!'
STR_UNPATCHABLE = ' Невозможно пропатчить!'
STR_SYSCON_BLOCK = ' Блок [%d/%d] имеет [%d/%d] запис(ей) | Активный - [%d]\n'
STR_PARTITIONS_CHECK = ' Проверка разделов'
STR_ENTROPY = ' Статистика по энтропии'
STR_MAGICS_CHECK = ' Проверка сигнатур'
STR_DUPLICATES = ' %d дубликатов найдено [%s]'
STR_SC_WARN_OVERWITTEN = ' Внимание: CoreOS перезаписан - шанс на успех очень мал'
STR_SNVS_ENTRY_INFO = 'Блок %d #%03d смещение 0x%04X'
STR_SC_TOGGLE_FLATDATA = 'Переключить между Flat/Block'
STR_SH_DUPLICATES = 'Показать / Скрыть дубли'
STR_NO_ENTRIES = 'Записи не найдены'
STR_SKIPPED = 'Пропущено'
STR_SKIP_ENTRY = 'Пропустить этот тип записей'
STR_NO_FILE_SEL = 'Файл не выбран'
STR_INCORRECT_SIZE = ' %s неверный размер дампа!'
STR_FILE_NOT_EXISTS = ' Файл %s не существует!'
STR_FILE_EXISTS = ' Такой файл уже существует!'
STR_ERROR_FILE_REQ = ' Сначала нужно выбрать файл'
STR_SAVED_TO = ' Сохранено в %s'
STR_ERROR_INPUT = ' Некорректный ввод'
STR_ERROR_DEF_VAL = ' Сброс до значений по-умолчанию'
STR_ERROR_CHOICE = ' Неправильный выбор'
STR_ERROR_INFO_READ = ' Ошибка при чтении данных'
STR_OUT_OF_RANGE = ' Значение вне диапазона!'
STR_FILES_MATCH = ' Файлы одинаковые'
STR_FILES_MISMATCH = ' Файлы отличаются'
STR_SIZES_MISMATCH = ' Размеры отличаются!'
STR_RENAMED_COUNT = ' %d файлов было переименовано'
STR_FW_RECORDS = ' FW versions - from Current(1) to Initial(%d)'
STR_SELECT_MODEL = ' Выберите модель:'
STR_SHOW_DETAILS = ' Показать подробности?'
STR_Y_OR_CANCEL = ' [y - да, * - отмена] '
STR_CHOOSE_AREA = ' Выберите область: '
STR_INPUT_SEL_DUMP = ' Выбрать второй дамп?'
STR_INPUT_DESTROY_PREV = ' Стереть все предудыщие записи FW (08-0B)?'
STR_INPUT_BLOCK = ' Введите начальный Блок [Количество]: '
STR_INPUT_SAVE_IM = ' Сохранить все промежуточные файлы?'
STR_INPUT_USE_SLOTB = ' Использовать слот B (активен)?'
STR_USE_NEWBLOBS = ' Использовать новые ключи?'
STR_CONFIRM_SEPARATE = ' Сохранить отдельно?'
STR_CONFIRM = ' Введите [y] для подтверждения: '
STR_CURRENT = ' Текущий: '
STR_GO_BACK = ' Назад'
STR_SC_BM_SELECT = ' Выберите режим загрузки [1-%d] '
STR_OPEN_IN_SC_TOOL = ' Открыть файл в утилите для Syscon?'
STR_FLASH_FILE = ' Записать файл обратно в чип?'
STR_READING_DUMP_N = ' Считывание дампа %d'
STR_CHIP_NOT_RESPOND = ' Чип не отвечает, проверьте провода и нажмите сброс'
STR_HOW_MUCH_DUMPS = ' Сколько дампов считать? [максимум 10] '
STR_EMC_CMD_MODE = 'Режим команд EMC: [%s]'
STR_SHOW_BYTECODES = 'Показывать байткоды < 0x20: [%s]'
STR_MONITOR_STATUS = 'RX/TX: %d/%d (байт) Прошло: %d (секунд)'
STR_CHIP_CONFIG = ' Конфигурация чипа'
STR_FILE_INFO = ' Информация о файле'
STR_VERIFY = ' Верификация'
STR_SPW_PROGRESS = 'Блок %03d [%d KB / %d KB] %d%% %s '
STR_SPW_ERROR_CHIP = 'Неподдерживаемый чип!'
STR_SPW_ERROR_VERSION = 'Неподдерживаемая версия! (требуется v%d.%02d)'
STR_SPW_ERROR_ERASE = 'Ошибка при очистке чипа!'
STR_SPW_ERROR_ERASE_BLK = 'Блок %d - ошибка очистки'
STR_SPW_ERROR_DATA_SIZE = 'Неверный размер данных %d'
STR_SPW_ERROR_LENGTH = 'Неверная длина данных %d != %d!'
STR_SPW_ERROR_BLK_CHK = 'Ошибка при проверке блока (block=%d)'
STR_SPW_ERROR_WRITE = 'Ошибка при записи!'
STR_SPW_ERROR_READ = 'Teensy превышена задержка приема! Переподключите Teensy!'
STR_SPW_ERROR_VERIFY = 'Ошибка при проверке!'
STR_SPW_ERROR_PROTECTED = 'Устройство защищено от записи!'
STR_SPW_ERROR_UNKNOWN = 'Произошла неизвестная ошибка!'
STR_SPW_ERROR_UNK_STATUS= 'Неизвестный код статуса!'
STR_SPW_ERR_BLOCK_ALIGN = 'Размер файла должен быть кратен размеру блока: %d'
STR_SPW_ERR_DATA_SIZE = 'Длина данных %d байт (ожидалось %d)!'
STR_SPW_ERR_OVERFLOW = 'Чип содержит %d блоков. Невозможно записать более!'
STR_SCF_ERROR_VERSION = 'Неподдерживаемая версия! (требуется v%d.%02d)'
STR_SCF_ERROR_WRITE_BLK = 'Ошибка записи блока %d'
STR_SCF_ERROR_ERASE_BLK = 'Ошибка очистки блока %d'
STR_SCF_ERROR_READ_BLK = 'Ошибка чтения блока %d'
STR_SCF_ERROR_ERASE_CHIP= 'Ошибка при очистке чипа'
STR_SCF_ERR_INT = 'Ошибка инициализации'
STR_SCF_ERR_READ = 'Ошибка чтения'
STR_SCF_ERR_ERASE = 'ошибка стирания'
STR_SCF_ERR_WRITE = 'Ошибка записи'
STR_SCF_ERR_CMD_LEN = 'Неверная длина команды'
STR_SCF_ERR_CMD_EXEC = 'Ошибка исполнения команды'
STR_SCF_ERR_UNKNOWN = 'Произошла неизвестная ошибка!'
STR_SCF_ERR_UNK_STATUS = 'Неизвестный код статуса!'
STR_SCF_SAFE_ERASE = ' Безопасная очистка с блока #%03d'
STR_CANT_USE = 'Невозможно использовать'
STR_DIFF_SN = 'Серийные номера отличаются!'
STR_SSP_EQUAL = 'Шаблоны переключения одинаковые!'
STR_LP_FIRST_DUMP = 'Первый дамп'
STR_LP_SECOND_DUMP = 'Второй дамп'
STR_CONVERTING_S28 = ' Конвертирование в формат S28'
STR_S28_ALREADY = ' Формат файла S28'
STR_USE_EXPERT_M = ' Выберите другую модель или используйте режим эксперта!'
STR_ERR_NO_FW_FOUND = ' Ошибка: Невозможно найти %s для FW %s в базе данных'
STR_EXPERT_MODE = ' Режим эксперта?'
STR_SELECT_FW_VER = ' Выберите версию FW'
STR_MODEL = ' Модель'
STR_FW_VER = ' FW: %s / Слот: %s'
STR_SELECT_MOST_FILE = ' Выберите самый подходящий файл: '
STR_NO_FW_FILES = ' Файлы не найдены! Загрузите файлы в папку fws:\n [%s]'
STR_ABOUT_SC_REBUILDER = 'Об утилите Syscon Rebuilder'
STR_INFO_SC_REBUILDER = ''\
' Утилита для создания кастомной сборки Syscon.\n'\
' В режиме эксперта можно настроить все типы записей.\n'\
' Записи отсортированы от текущей до первоначальной.\n'\
' * Чтобы выбрать предыдущее ПО введите "2" или больше.\n'\
' * Минимальный набор состоит из 3 типов (00-03 + 04-07 + 08-0B)'
STR_ABOUT_RL78FLASH = 'О стоковом Syscon'
STR_INFO_RL78FLASH = ''\
' Позволяет прошить новый чистый чип (Renesas RL78G10)\n'\
' Требуется адаптер USB2TTL, провода и пара диодов.\n'\
' Схема подключения в папке assets/hw/l78flash'\
STR_ABOUT_NVS = 'О восстановлении NVS'
STR_INFO_NVS = ''\
' Замена поврежденного блока на бекап (отсутствует в 10xx/11xx)\n'\
' Внимание - UART и прочие флаги могут быть перезаписаны.\n'\
' Если требется установить флаги, делать после восстановления NVS!\n'\
STR_ABOUT_TORUS_PATCH = 'О замене ПО WiFi'
STR_INFO_TORUS_PATCH = ''\
' Будет полезно в следующих случаях:\n'\
' - поверждение ПО Torus-а (WiFi+BT)\n'\
' - переход на другой чип'\
STR_ABOUT_SB_PATCH = 'О замене ПО Южного Моста'
STR_INFO_SB_PATCH = ''\
' Будет полезно в следующих случаях:\n'\
' - поврежденное ПО ЮМ или ошибки "EMC VERSION DOWN"\n'\
' - переход на другой чип (CXD90046 => CXD90036)\n'\
' - замена процессорной связки (21xx => 22xx, 71xx => 72xx)'
STR_INFO_FLASH_TOOLS = ''\
' Утилиты spiway & syscon flasher экспериментальные! Будьте осторожны.'\
STR_ABOUT_PART_RECOVERY = 'Анализ и восстановление разделов'
STR_INFO_PART_A_R = ''\
' По-байтово сравнивает данныые раздела с рабочими файлами\n'\
' и показывает процент схожести.\n'\
' Самый похожий файл будет в верху списка.\n'\
' Имейте ввиду прошивка ЮМ состоит из emc + eap'
STR_INFO_FW_LINK = ''\
' Рабочие файлы emc/eap/torus положите в папку /fws/\n'\
' Скачать можно из данного репозитория:\n '
STR_ABOUT_LEG_PATCH = 'Об официальном (legit) патче CoreOS'
STR_INFO_LEG_PATCH = ''\
' Подходит только для рабочих консолей!\n'\
' Т.к. нужно обновиться через Безопасный режим PS4\n'\
'\n'\
' 1) Считываем первый дамп (если еще не сделали)\n'\
' 2) Обновляем через безопасный режим на эту же версию ПО\n'\
' 3) Считываем второй дамп (в обоих слотах одинаковое ПО)\n'\
'\n'\
' Теперь можно пропатчить первый дамп данными из второго\n'\
' Можно просто перенести 2 дампа на ярлык WeeTools'
STR_ABOUT_SCF = 'О программаторе Syscon'
STR_INFO_SCF = ''\
' Позволяет считывать/записывать оригинальный чип сискон\n'\
' Поддерживаются только модели A0x-COLx - (RL78/G13)\n'\
' В роли программатора используются платы Teensy (2.0++/4.0/4.1)\n'\
' Диаграмы подключения и прошивки в папке \n'\
' Подробнее: '
STR_ABOUT_SPIWAY = 'О программаторе SPIway'
STR_INFO_SPIWAY = ''\
' SPIway - ч/з sflash с доступом к рандомному блоку (Teensy++ 2.0)\n'\
' Диаграмы подключения и прошивки в папке \n'\
' Подробнее на PSDevWiki: '
STR_ABOUT_SC_GLITCH = 'О глитче Syscon'
STR_INFO_SC_GLITCH = ''\
' Считывание через (Arduino Nano V3 CH340) автор - DarkNESmonk\n'\
' Диаграмы подключения и прошивки в папке '
STR_ABOUT_SC_BOOTMODES = 'О режимах загрузки'
STR_INFO_SC_BOOTMODES = ''\
' Т.к. записи защифрованы невозможно определить что в них хранится\n'\
' Вам придется попробывать все по-очереди, чтобы найти нужную\n'\
' Некоторые записи могут иметь дубли (помечены цветом)'
STR_OVERCLOCKING = ''\
' Внимание - Опасная операция!\n\n'\
' Частота GDDR5 - 6000-8000 MHz. Множитель - [x4]\n'\
' GDDR5 8000 MHz технически работает на 2000 MHz\n'\
' Если есть проблемы устанавливайте 1000 MHz\n'\
'\n'\
' Эффективная частота GDDR5 - 1350 MHz\n'\
' Частоту подбираем эксперементально\n'\
' - Слишком высокая приведет к ошибкам LOADBIOS -8 или DCT [*]\n'\
' - Слишком низкая приведет к ошибке AMDINIT'
STR_ABOUT_EAPKEYS = 'О ключах EAP'
STR_INFO_EAPKEYS = ''\
' Ключ EAP бывает длиной 0x40 и 0x60 байт\n'\
' В моделях PS4 10xx/11xx нет бекапа NVS\n'\
' В 12xx/Slim/PRO есть бекап, в том числе и ключа\n'\
STR_IMMEDIATLY = ''\
' Осторожно: Все изменения применяются сразу к файлу!'
STR_PATCHES = STR_IMMEDIATLY + '\n'\
' Переключает значение выбранной опции среди доступных'
STR_DOWNGRADE = ''\
' Опасная операция!\n\n'\
' Переключение слота возвращает предыдущую версию ПО.\n'+\
' Также откат помогает вылечить ошибки "LOADBIOS".\n'\
' Обязательно сохраните первоначальные дампы sFlash и Syscon.\n'\
' После переключения нужно патчить Syscon! Заранее убедитесь что сможете.\n'\
' Без этого консоль не загрузится!'
STR_ABOUT_MPATCH = 'О ручном патчинге'
STR_INFO_SC_MPATCH = ''\
' Каждая запись состоит из 16 байт. Первый всегда "A5"\n'\
' Второй байт отвечает за "тип" обычно в диапазоне [0x00-0x30]\n'\
' Каждые 4 записи формируют 1 структуру, например для ПО это %s\n'\
' Для удаления нужно затереть структуру (4 записи) символами 0xFF\n'\
' Если есть структуры (%s,%s) после ПО (%s), то откат невозможен\n'\
' слот с бекапом уже перезаписан, получите ошибку checkUpdVersion'
STR_ABOUT_EAP = 'О ключах EAP'
STR_INFO_HDD_EAP = ''\
' С помощью данных ключей можно открыть PS4 HDD на ПК\n'\
' Дополнительная информация по ссылке:\n '\
STR_ABOUT_EMC_CFW = 'О кастомной прошивке EMC'
STR_INFO_EMC_CFW = ''\
' Используйте на свой страх и риск!\n'\
' Подходит только для Aeolia (PS4 Fat 10xx/11xx)\n'\
' Предоставлет неограниченный доступ к ЮМ и syscon\n\n'\
' Дополнительная информация:\n '
STR_APP_HELP = ''\
' Пример: ps4-wee-tools [параметры] \n'\
'\n'\
' Параметры: \n\n'\
' : откроет нужную утилиту для данного файла\n'\
' : собрать дамп sFlash из файлов в этой папке\n'\
' ... : сравнение файлов (с хешами MD5)\n'\
' --help : открыть эту справку\n'\
'\n'\
' Домашняя страница: '
================================================
FILE: ps4-wee-tools.py
================================================
#==============================================================
# PS4 Wee Tools
# app entry point
#==============================================================
import os, sys
import tools.Tools as Tools
import tools.SFlashTools as SFlashTools
from lang._i18n_ import UI
def main(args):
UI.setTitle()
args.pop(0)
if len(args) == 2:
if args[0].replace('-', '', 2) == 'parts':
return SFlashTools.screenPartitionsInfo(args[1])
# Quick Legitimate patch (check)
if os.path.isfile(args[0]) and os.path.isfile(args[1]):
if not Tools.quickLegitimatePatch(args):
Tools.screenCompareFiles(args)
elif len(args) >= 2:
Tools.screenCompareFiles(args)
elif len(args) == 1:
if args[0].replace('-', '', 2) in ['help','h','?']:
Tools.screenHelp()
elif not Tools.launchTool(args[0]):
Tools.screenFileSelect(args[0])
else:
Tools.screenMainMenu()
main(sys.argv)
================================================
FILE: run.bat
================================================
@echo off
py "%~dp0\ps4-wee-tools.py" %*
pause
================================================
FILE: tools/AdvSFlashTools.py
================================================
#==============================================================
# PS4 Nor Tools
# part of ps4 wee tools project
#==============================================================
import os
from lang._i18n_ import *
import utils.utils as Utils
import utils.sflash as SFlash
import utils.slb2 as Slb2
import utils.encdec as Encdec
import tools.Tools as Tools
def screenPartitionRecovery(file, partition = ''):
UI.clearScreen()
print(TITLE + UI.getTab(STR_ABOUT_PART_RECOVERY))
print(UI.warning(STR_INFO_PART_A_R))
print()
print(UI.warning(STR_INFO_FW_LINK))
part_list = ['s0_emc_ipl_a', 's0_emc_ipl_b', 's0_eap_kbl', 's0_wifi']
if partition in part_list:
with open(file, 'rb') as f:
fw = SFlash.getNorFW(f)
slot = 'A' if SFlash.getNorData(f, 'ACT_SLOT')[0] == 0x00 else 'B'
data = SFlash.getNorPartition(f, partition)
print(UI.getTab(STR_PART_ANALYZE))
print(' '+UI.highlight(partition)+'\n')
print(UI.green(STR_FW_VER%(fw['c'], slot))+'\n')
fw_folder = os.path.join(Utils.ROOT_PATH, 'fws')
sub_folder = ''
if partition.count('emc_ipl'):
sub_folder = 'emc'
elif partition.count('eap_kbl'):
sub_folder = 'eap'
elif partition.count('wifi'):
sub_folder = 'torus'
if sub_folder:
file_list = Utils.getFilesList(os.path.join(fw_folder, sub_folder),'2bls')
expert_mode = False
if len(file_list):
items = Utils.compareDataWithFiles(data, file_list, 1, True)
items_count = len(items) if len(items) < 10 else 10
UI.clearInput()
expert_mode = input('\n'+UI.highlight(STR_EXPERT_MODE+STR_Y_OR_CANCEL)).lower()
if expert_mode == 'y':
UI.clearInput()
print(UI.warning(STR_SELECT_MOST_FILE)+'\n')
for k in range(items_count):
path = items[k]['path']
rel_path = (os.path.sep).join(path.split(os.path.sep)[-3:])
percent = int(items[k]['eq'] * 100) / 100
print(' %d: %s | %.2f%%'%(k, rel_path, percent))
else:
print(UI.warning(STR_NO_FW_FILES%fw_folder))
input(STR_BACK)
return screenPartitionRecovery(file)
if expert_mode != 'y':
n = 0
else:
try: n = int(input(STR_CHOICE))
except: n = -1
if n >= 0 and n < items_count:
out_file = Utils.getFilePathWoExt(file, True)+'_patch_'+partition+'.bin'
data = Utils.getFileContents(file)
pdata = Utils.getFileContents(items[n]['path'])
Utils.savePatchData(out_file, data, [{'o':SFlash.SFLASH_PARTITIONS[partition]['o'], 'd':pdata}])
UI.setStatus(STR_SAVED_TO%out_file)
else:
UI.setStatus(STR_ERROR_INPUT)
return screenPartitionRecovery(file)
print(UI.getTab(STR_PART_LIST))
UI.showMenu(part_list,1)
print(UI.DIVIDER)
print(' 0:'+STR_GO_BACK)
UI.showStatus()
try: n = int(input(STR_CHOICE))
except: n = -1
if n == 0:
return
if n > 0 and n <= len(part_list):
return screenPartitionRecovery(file, part_list[n-1])
else:
UI.setStatus(STR_ERROR_INPUT)
screenPartitionRecovery(file, partition)
def screenValidate(file):
UI.clearScreen()
print(TITLE + UI.getTab(STR_SFLASH_VALIDATOR))
with open(file,'rb') as f:
data = f.read()
model = SFlash.getModel(f)
sku = SFlash.getNorData(f, 'SKU', True)
fw = SFlash.getNorFW(f)['c']
slot = SFlash.getActiveSlot(f)
print(' %s / FW: %s [%s]\n'%(sku, fw, slot.upper()))
# Magics
magics = {}
for k in SFlash.MAGICS:
magics[k] = STR_OK if SFlash.checkMagic(data, k) else STR_DIFF
print(UI.highlight(STR_MAGICS_CHECK)+'\n')
UI.showTable(magics,10)
print()
# Partitions
parts_info = {}
for key in ['s0_emc_ipl_a', 's0_emc_ipl_b', 's0_eap_kbl', 's0_wifi']:
md5 = SFlash.getNorPartitionMD5(f, key)
data = SFlash.getDataByPartition(key)
if md5 in data:
if fw in data[md5]['fw']:
parts_info[key] = STR_IS_PART_VALID%(md5, STR_OK, STR_OK)
else:
parts_info[key] = STR_IS_PART_VALID%(md5, STR_OK, data[md5]['fw'][0] if len(data[md5]['fw']) == 1 else (data[md5]['fw'][0]+' <-> '+data[md5]['fw'][-1]))
else:
parts_info[key] = STR_IS_PART_VALID%(md5, STR_FAIL, STR_FAIL)
print(UI.highlight(STR_PARTITIONS_CHECK)+'\n')
UI.showTable(parts_info,14)
print()
# EAP key
magic = SFlash.getNorData(f, 'EAP_MGC')
eap_key = SFlash.getNorData(f, 'EAP_KEY')
print(UI.highlight(' '+STR_EAP_KEYS+'\n'))
print(' Magic [%s] %s\n'%(Utils.hex(magic,''), STR_OK if magic == SFlash.SFLASH_AREAS['EAP_MGC']['n'] else STR_DIFF ))
for i in range(0,len(eap_key),0x20):
print(' '+Utils.hex(eap_key[i:i+0x20],''))
if model not in [11, 10]:
magic = SFlash.getNorDataB(f, 'EAP_MGC')
eap_key_b = SFlash.getNorDataB(f, 'EAP_KEY')
print()
print(UI.highlight(' '+STR_EAP_KEYS+' ('+STR_BACKUP+')\n'))
print(' Magic [%s] %s\n'%(Utils.hex(magic,''), STR_OK if magic == SFlash.SFLASH_AREAS['EAP_MGC']['n'] else STR_DIFF ))
for i in range(0,len(eap_key_b),0x20):
print(' '+Utils.hex(eap_key_b[i:i+0x20],''))
print(UI.highlight('\n '+STR_EAP_KEYS+' ') + UI.green(STR_EQUAL) if eap_key == eap_key_b else STR_DIFF)
print()
# NVS
print(UI.highlight(STR_VALIDATE_NVS_CHECK)+'\n')
for k in ['NVS1', 'NVS2']:
nvs = SFlash.getNorData(f, k)
key = SFlash.getOffsetRange(k)
print(' %s : %s [%s..%s]'%( key, SFlash.checkNVS(nvs, k), Utils.hex(nvs[0:10],''), Utils.hex(nvs[-10:],'') ) )
if model not in [11, 10]:
nvs_b = SFlash.getNorDataB(f, k)
key_b = SFlash.getOffsetRange(k, True)
print(' %s - %s'%(UI.dark(STR_BACKUP), UI.green(STR_EQUAL) if nvs == nvs_b else STR_DIFF))
print(' %s : %s [%s..%s]'%( key_b, SFlash.checkNVS(nvs_b, k), Utils.hex(nvs_b[0:10],''), Utils.hex(nvs_b[-10:],'') ) )
print()
print(UI.highlight(STR_ENTROPY)+'\n')
#stats = {'ent':0,'ff':0,'00':0}
stats = Utils.entropy(file)
print('\r',end='')
info = {
'Entropy' : '%.5f'%(stats['ent']),
'0xFF' : '%.2f%%'%(stats['ff']*100),
'0x00' : '%.2f%%'%(stats['00']*100),
'Other' : '%.2f%%'%((1 - stats['ff'] - stats['00'])*100),
}
UI.showTable(info,10)
input(STR_BACK)
def screenNvsRecovery(file):
UI.clearScreen()
print(TITLE+UI.getTab(STR_ABOUT_NVS))
print(UI.warning(STR_INFO_NVS + '\n' + STR_IMMEDIATLY))
print(UI.getTab(STR_NVS_AREAS))
print(UI.highlight(STR_FILENAME)+os.path.basename(file)+'\n')
NVS_MENU = []
with open(file,'r+b') as f:
model = SFlash.getModel(f)
sku = SFlash.getNorData(f, 'SKU', True)
fw = SFlash.getNorFW(f)['c']
slot = SFlash.getActiveSlot(f)
print(' %s / FW: %s [%s]\n'%(sku, fw, slot.upper()))
for k in ['NVS1', 'NVS2']:
print(' '+UI.highlight(k)+'\n')
nvs = SFlash.getNorData(f, k)
key = SFlash.getOffsetRange(k)
print(' %s : %s [%s..%s]'%( key, SFlash.checkNVS(nvs, k), Utils.hex(nvs[0:10],''), Utils.hex(nvs[-10:],'') ) )
if model not in [11, 10]:
nvs_b = SFlash.getNorDataB(f, k)
key_b = SFlash.getOffsetRange(k, True)
NVS_MENU.append(MENU_NVS_COPY[0]%(k, key,key_b))
NVS_MENU.append(MENU_NVS_COPY[1]%(k, key,key_b))
print(' %s - %s'%(UI.dark(STR_BACKUP), UI.green(STR_EQUAL) if nvs == nvs_b else STR_DIFF))
print(' %s : %s [%s..%s]'%( key_b, SFlash.checkNVS(nvs_b, k), Utils.hex(nvs_b[0:10],''), Utils.hex(nvs_b[-10:],'') ) )
print()
UI.showStatus()
print(UI.DIVIDER)
if model in [11, 10]:
print(UI.warning(STR_ACTION_NA%('(10xx/11xx)')))
else:
UI.showMenu(NVS_MENU,1)
print(UI.DIVIDER)
UI.showMenu([STR_GO_BACK])
choice = input(STR_CHOICE)
try:
c = int(choice)
c = c if model not in [11, 10] or c == 0 else -1
except:
c = -1
if c == 0:
return
elif c == 1:
data = SFlash.getNorDataB(f, 'NVS1')
SFlash.setNorData(f, 'NVS1', data)
elif c == 2:
data = SFlash.getNorData(f, 'NVS1')
SFlash.setNorDataB(f, 'NVS1', data)
elif c == 3:
data = SFlash.getNorDataB(f, 'NVS2')
SFlash.setNorData(f, 'NVS2', data)
elif c == 4:
data = SFlash.getNorData(f, 'NVS2')
SFlash.setNorDataB(f, 'NVS2', data)
if c >= 1 and c <= len(NVS_MENU):
UI.setStatus(STR_PERFORMED+NVS_MENU[c-1])
screenNvsRecovery(file)
def screenEapKeyRecovery(file):
UI.clearScreen()
print(TITLE+UI.getTab(STR_ABOUT_EAPKEYS))
print(UI.warning(STR_INFO_EAPKEYS + '\n' + STR_IMMEDIATLY))
print(UI.getTab(STR_EAP_KEYS))
print(STR_FILENAME+file+'\n')
with open(file,'r+b') as f:
magic_a = SFlash.getNorData(f, 'EAP_MGC')
key_a = SFlash.getNorData(f, 'EAP_KEY')
magic_b = SFlash.getNorDataB(f, 'EAP_MGC')
key_b = SFlash.getNorDataB(f, 'EAP_KEY')
print(UI.highlight(' Key A\n'))
print(' Magic [%s] %s\n'%(Utils.hex(magic_a,''), STR_OK if magic_a == SFlash.SFLASH_AREAS['EAP_MGC']['n'] else STR_DIFF ))
for i in range(0,len(key_a),0x20):
print(' '+Utils.hex(key_a[i:i+0x20],''))
print()
print(UI.highlight(' Key B\n'))
print(' Magic [%s] %s\n'%(Utils.hex(magic_b,''), STR_OK if magic_b == SFlash.SFLASH_AREAS['EAP_MGC']['n'] else STR_DIFF ))
for i in range(0,len(key_b),0x20):
print(' '+Utils.hex(key_b[i:i+0x20],''))
UI.showStatus()
print(UI.DIVIDER)
UI.showMenu(MENU_EAP_KEYS,1)
print('\n'+UI.dark(STR_EXPERIMENTAL))
print(UI.DIVIDER)
UI.showMenu([STR_GO_BACK])
choice = input(STR_CHOICE)
try:
c = int(choice)
except:
c = -1
if c == 0:
return
elif c == 1:
SFlash.setNorData(f, 'EAP_KEY', key_b)
elif c == 2:
SFlash.setNorDataB(f, 'EAP_KEY', key_a)
elif c == 3:
SFlash.setNorData(f, 'EAP_MGC', SFlash.SFLASH_AREAS['EAP_MGC']['n'])
elif c == 4:
SFlash.setNorDataB(f, 'EAP_MGC', SFlash.SFLASH_AREAS['EAP_MGC']['n'])
elif c == 5:
key = Utils.genRandBytes(0x40)
SFlash.setNorData(f, 'EAP_KEY', key + b'\xFF'*0x20)
SFlash.setNorDataB(f, 'EAP_KEY', key + b'\xFF'*0x20)
elif c == 6:
key = Utils.genRandBytes(0x60)
SFlash.setNorData(f, 'EAP_KEY', key)
SFlash.setNorDataB(f, 'EAP_KEY', key)
elif c == 7:
SFlash.setNorDataB(f, 'EAP_MGC', b'\xFF'*SFlash.SFLASH_AREAS['EAP_MGC']['l'])
SFlash.setNorDataB(f, 'EAP_KEY', b'\xFF'*SFlash.SFLASH_AREAS['EAP_KEY']['l'])
if c >= 1 and c <= len(MENU_EAP_KEYS):
UI.setStatus(STR_PERFORMED+MENU_EAP_KEYS[c-1])
screenEapKeyRecovery(file)
def screenEmcCFW(file):
UI.clearScreen()
print(TITLE+UI.getTab(STR_ABOUT_EMC_CFW))
print(UI.warning(STR_INFO_EMC_CFW))
print(UI.getTab(STR_EMC_CFW))
with open(file, 'rb') as f:
data = f.read()
sku = SFlash.getNorData(f, 'SKU', True)
model = SFlash.getModel(f)
slot = SFlash.getActiveSlot(f).upper()
print(' SKU: %s / Slot: %s'%(sku, slot))
if not model in [11, 10]:
print(STR_EMC_CFW_WARN)
input(STR_BACK)
return
b = False
if slot == 'B':
b = input(STR_INPUT_USE_SLOTB+STR_Y_OR_CANCEL).lower()
UI.clearInput()
emc_part_name = 's0_emc_ipl_' + ('b' if b == 'y' else 'a')
emc_part = SFlash.getNorPartition(f, emc_part_name)
folder = os.path.dirname(file)
filename = os.path.splitext(os.path.basename(file))[0]
emc_fw = b''
fw_offset = 0
fw_size = 0
entries = Slb2.getGet2BLSInfo(emc_part)['entries']
for key in entries:
entry = entries[key]
if entry['name'] == 'C0000001':
fw_offset = entry['offset']
fw_size = entry['size']
emc_fw = emc_part[fw_offset:fw_offset+fw_size]
break
if len(emc_fw) == 0:
print(STR_EMC_NOT_FOUND)
input(STR_BACK)
return
save_all = True if input(STR_INPUT_SAVE_IM+STR_Y_OR_CANCEL).lower() == 'y' else False
UI.clearInput()
# Decrypting current emc fw
print('\n'+UI.highlight(STR_DECRYPTING)+'\n')
decrypted_fw = Encdec.decrypt(emc_fw)
if save_all:
out_file = os.path.join(folder,'emc_fw_orig.bin')
Utils.savePatchData(out_file, decrypted_fw)
print('\n'+UI.green(STR_SAVED_TO%out_file))
# Patching (2 patches)
print('\n'+UI.highlight(STR_PATCHING)+' [God Mode]\n')
p1 = [b"\x03\x00\xFD\x00", b"\x0F\x00\xFD\x00"]
patched_fw = decrypted_fw.replace(p1[0], p1[1])
print(' %s => %s'%(Utils.hex(p1[0],''),Utils.hex(p1[1],'')))
p2 = [b"\x07\x00\xFD\x00", b"\x0F\x00\xFD\x00"]
patched_fw = patched_fw.replace(p2[0], p2[1])
print(' %s => %s'%(Utils.hex(p2[0],''),Utils.hex(p2[1],'')))
if save_all:
out_file = os.path.join(folder,'emc_cfw.bin')
Utils.savePatchData(out_file, patched_fw)
print('\n'+UI.green(STR_SAVED_TO%out_file))
# Encrypt and save patched data
print('\n'+UI.highlight(STR_ENCRYPTING)+'\n')
encrypted_fw = Encdec.encrypt(patched_fw)
if save_all:
out_file = os.path.join(folder,'emc_cfw_enc.bin')
Utils.savePatchData(out_file, encrypted_fw)
print('\n'+UI.green(STR_SAVED_TO%out_file))
if fw_size != len(encrypted_fw):
print('\n'+UI.warning(STR_SIZES_MISMATCH))
out_file = os.path.join(folder,filename+'_emc_cfw.bin')
Utils.savePatchData(out_file, data, [{'o':fw_offset + SFlash.SFLASH_PARTITIONS[emc_part_name]['o'],'d':encrypted_fw}])
print('\n'+UI.highlight(STR_SAVED_TO%out_file))
input(STR_BACK)
def screenHddKey(file):
UI.clearScreen()
print(TITLE+UI.getTab(STR_ABOUT_EAP))
print(UI.warning(STR_INFO_HDD_EAP))
mode = input('\n'+STR_USE_NEWBLOBS+STR_Y_OR_CANCEL).lower()
UI.clearInput(2)
print(UI.getTab(STR_HDD_KEY))
with open(file,'rb') as f:
smi = int.from_bytes(SFlash.getNorData(f, 'SMI'), "little")
magic = SFlash.getNorData(f, 'EAP_MGC')
key = SFlash.getNorData(f, 'EAP_KEY')
print(' RAW hdd key\n')
for i in range(0,len(key),0x20):
print(' '+Utils.hex(key[i:i+0x20],''))
print(UI.highlight('\n Key magic - ')+'%s\n'%(STR_OK if magic == SFlash.SFLASH_AREAS['EAP_MGC']['n'] else STR_DIFF))
keys = Encdec.hddEapKey(key, smi, True if mode == 'y' else False)
print()
if keys == -1:
print(STR_ABORT)
input(STR_BACK)
out = os.path.dirname(file) + os.sep + 'keys.bin'
with open(out, 'wb') as k:
k.write(keys['data'])
k.write(keys['tweak'])
print(UI.highlight(STR_SAVED_TO%out))
input(STR_BACK)
def screenExtractNorDump(file):
UI.clearScreen()
print(TITLE+UI.getTab(STR_SFLASH_EXTRACT))
with open(file, 'rb') as f:
sn = SFlash.getNorData(f, 'SN', True)
folder = os.path.dirname(file) + os.sep + sn + os.sep
if not os.path.exists(folder):
os.makedirs(folder)
info = ''
data = SFlash.getSFlashInfo(file)
for key in data:
info += '%s : %s\n'%(key.ljust(12,' '),data[key])
info += '\n'
print(STR_EXTRACTING%sn+'\n')
i = 0
for k in SFlash.SFLASH_PARTITIONS:
p = SFlash.SFLASH_PARTITIONS[k]
i += 1
print(' %2d: %16s > %s'%(i, k, p['n']))
info += '%2d: %16s > %s\n'%(i, k, p['n'])
with open(folder + p['n'], 'wb') as out:
out.write(SFlash.getNorPartition(f, k))
with open(folder + Utils.INFO_FILE_SFLASH, 'w') as txt:
txt.write(info)
print('\n'+STR_SAVED_TO%folder)
print('\n'+STR_DONE)
input(STR_BACK)
def screenBuildNorDump(folder):
UI.clearScreen()
print(TITLE+UI.getTab(STR_SFLASH_BUILD))
if not os.path.exists(folder):
print(STR_NO_FOLDER%folder+'\n\n'+STR_ABORT)
input(STR_BACK)
return
print(STR_FILES_CHECK.format(folder)+'\n')
found = 0
i = 0
for k in SFlash.SFLASH_PARTITIONS:
p = SFlash.SFLASH_PARTITIONS[k]
i += 1
status = STR_OK
file = folder+os.sep+p['n']
if not os.path.exists(file):
status = STR_NOT_FOUND
elif os.stat(file).st_size != p['l']:
status = STR_BAD_SIZE
else:
found += 1
print(' %2d: %20s - %s'%(i, p['n'], status))
print()
if found == len(SFlash.SFLASH_PARTITIONS):
"""
sn = '0'*17
with open(folder+os.sep+SFlash.SFLASH_PARTITIONS['s0_nvs']['n'],'rb') as nvs:
nvs.seek(0x4030)
sn = nvs.read(17)
"""
fname = os.path.join(folder, 'sflash0.bin')
print(STR_BUILDING%fname)
out = open(fname,"wb")
for k in SFlash.SFLASH_PARTITIONS:
file = folder+os.sep+SFlash.SFLASH_PARTITIONS[k]['n']
with open(file, 'rb') as f:
out.write(f.read())
out.close()
print('\n'+STR_DONE)
else:
print(STR_ABORT)
input(STR_BACK)
def screenAdvSFlashTools(file):
with open(file, 'rb') as f:
sn = SFlash.getNorData(f, 'SN', True)
folder = os.path.dirname(file) + os.sep + sn
while True:
UI.clearScreen()
print(TITLE+UI.getTab(STR_ADDITIONAL))
UI.showMenu(MENU_SFLASH_ADV_ACTIONS,1)
UI.showStatus()
choice = input(STR_CHOICE)
if choice == '':
return
elif choice == '1':
screenExtractNorDump(file)
elif choice == '2':
screenBuildNorDump(folder)
elif choice == '3':
screenNvsRecovery(file)
elif choice == '4':
screenEapKeyRecovery(file)
elif choice == '5':
screenHddKey(file)
elif choice == '6':
screenEmcCFW(file)
elif choice == '7':
screenValidate(file)
elif choice == '8':
screenPartitionRecovery(file)
================================================
FILE: tools/AdvSysconTools.py
================================================
#==============================================================
# PS4 Syscon Tools
# part of ps4 wee tools project
# https://github.com/andy-man/ps4-wee-tools
#==============================================================
import os
from lang._i18n_ import *
import utils.utils as Utils
import utils.syscon as Syscon
import utils.utils as Utils
import tools.Tools as Tools
# Screens
def screenAdvSysconTools(file):
MENU_SC_ADV_ACTIONS[2-1] = UI.dark(MENU_SC_ADV_ACTIONS[2-1])
MENU_SC_ADV_ACTIONS[5-1] = UI.dark(MENU_SC_ADV_ACTIONS[5-1])
MENU_SC_ADV_ACTIONS[6-1] = UI.dark(MENU_SC_ADV_ACTIONS[6-1])
while True:
UI.clearScreen()
print(TITLE+UI.getTab(STR_ADDITIONAL))
UI.showMenu(MENU_SC_ADV_ACTIONS,1)
UI.showStatus()
choice = input(STR_CHOICE)
if choice == '':
break
elif choice == '1':
resetSysconCounters(file)
elif choice == '2':
UI.setStatus(STR_NIY)
elif choice == '3':
screenBootModes(file)
elif choice == '4':
print()
print(UI.highlight(STR_NIY))
print(UI.warning(' Using Legacy method'))
cleanSyscon(file)
elif choice == '5':
UI.setStatus(STR_NIY)
elif choice == '6':
UI.setStatus(STR_NIY)
else:
UI.setStatus(STR_ERROR_CHOICE)
return
def screenBootModes(file):
UI.clearScreen()
print(TITLE+UI.getTab(STR_ABOUT_SC_BOOTMODES))
print(UI.warning(STR_INFO_SC_BOOTMODES))
print(UI.getTab(STR_SC_BOOT_MODES))
with open(file, 'r+b') as f:
data = f.read()
SNVS = Syscon.NVStorage(Syscon.SNVS_CONFIG, Syscon.getSysconData(f, 'SNVS'))
entries = SNVS.getAllDataEntries()
modes = Syscon.getEntriesByType(Syscon.SC_TYPES_BOOT, entries)
if len(modes) <= 0:
print(UI.warning(STR_SC_NO_BM))
input(STR_BACK)
return
items = []
duplicates = []
for i in range(len(modes)):
inf = Syscon.getRecordPos(modes[i], SNVS)
edata = []
for k in range(len(Syscon.SC_TYPES_BOOT)):
edata.append(Utils.hex(Syscon.NvsEntry(entries[modes[i]+k]).getData(),''))
color = ''
if edata in items:
color = Clr.fg.orange
duplicates.append(str(i+1))
else:
items.append(edata)
item = Clr.fg.pink + edata[0] + Clr.reset + ' ... ' + Clr.fg.pink + edata[-1] + Clr.reset
print(color + ' % 2d: Block %d (#%03d) at 0x%04X'%(i+1, inf['block'], inf['num'], inf['offset']) + Clr.reset + ' ' + item)
print()
if len(duplicates):
print(STR_DUPLICATES%(len(duplicates), ','.join(duplicates)))
UI.showStatus()
choice = input(UI.DIVIDER+STR_SC_BM_SELECT%(len(modes)))
try:
c = int(choice)
out_file = Utils.getFilePathWoExt(file,True)
if c == len(modes):
UI.setStatus(' It\'s already active boot mode!')
elif c > 0 and c < len(modes):
ofile = out_file+'_bootmode_%d.bin'%(c)
sel = modes[c-1]
act = modes[-1]
# replace last(active) with selected
for i in range(len(Syscon.SC_TYPES_BOOT)):
temp = entries[act + i]
entries[act + i] = entries[sel + i]
entries[sel + i] = temp
Utils.savePatchData(ofile, data, [{'o':Syscon.SC_AREAS['SNVS']['o'], 'd':SNVS.getRebuilded(entries)}])
UI.setStatus(STR_SAVED_TO%ofile)
except:
return
screenBootModes(file)
# Functions
def resetSysconCounters(file):
with open(file, 'rb') as f:
data = f.read()
SNVS = Syscon.NVStorage(Syscon.SNVS_CONFIG, Syscon.getSysconData(f, 'SNVS'))
ofile = Utils.getFilePathWoExt(file, True) + '_owc_reset.bin'
with open(ofile, 'wb') as f:
f.write(data)
Syscon.setSysconData(f, 'SNVS', SNVS.getRebuilded())
UI.setStatus(STR_SAVED_TO%ofile)
def cleanSyscon(file):
c = input(UI.highlight(STR_INPUT_DESTROY_PREV+STR_Y_OR_CANCEL))
full = True if c.lower() == 'y' else False
with open(file, 'rb') as f:
data = f.read()
SNVS = Syscon.NVStorage(Syscon.SNVS_CONFIG, Syscon.getSysconData(f, 'SNVS'))
clean = []
entries = SNVS.getAllDataEntries()
if full:
# Full clean - only last FW records will be saved
for i in range(len(entries)):
if entries[i][1] in Syscon.SC_TYPES_BOOT + Syscon.SC_TYPES_MODES:
clean.append(entries[i])
inds = Syscon.getEntriesByType(Syscon.SC_TYPES_UPD, entries)
if len(inds) >= 2: # add previous FW records
items = entries[inds[-2]:inds[-2]+len(Syscon.SC_TYPES_UPD)]
print(items)
clean += items
if len(inds) >= 1: # add current FW records
items = entries[inds[-1]:inds[-1]+len(Syscon.SC_TYPES_UPD)]
print(items)
clean += items
else:
# Regular clean preserves all FW records
for i in range(len(entries)):
if entries[i][1] in Syscon.SC_TYPES_BOOT + Syscon.SC_TYPES_MODES + Syscon.SC_TYPES_UPD:
clean.append(entries[i])
ofile = Utils.getFilePathWoExt(file,True) + '_clean'+('_full' if full else '')+'.bin'
with open(ofile, 'wb') as f:
f.write(data)
Syscon.setSysconData(f, 'SNVS', SNVS.getRebuilded(clean))
UI.setStatus(STR_SAVED_TO%ofile)
================================================
FILE: tools/SFlashTools.py
================================================
#==============================================================
# PS4 Nor Tools
# part of ps4 wee tools project
#==============================================================
import os, time
from lang._i18n_ import *
import utils.utils as Utils
import utils.sflash as SFlash
import utils.slb2 as Slb2
import utils.encdec as Encdec
import tools.Tools as Tools
import tools.AdvSFlashTools as AdvSFlashTools
def screenSBpatcher(file, model = '', emc_ver = '', eap_ver = ''):
# Read once
with open(file,'rb') as f:
active_slot = SFlash.getActiveSlot(f)
fw = SFlash.getFWInfo(f, active_slot)
sb = SFlash.getSouthBridge(f)
while True:
UI.clearScreen()
print(TITLE + UI.getTab(STR_ABOUT_SB_PATCH))
print(UI.warning(STR_INFO_SB_PATCH))
print()
print(UI.warning(STR_INFO_FW_LINK))
print(UI.getTab(STR_SB_PATCHER))
print(UI.highlight(STR_CURRENT))
print()
UI.showTable({
'Southbridge' : '%s [%s] [%02X:%02X]'%(sb['name'], sb['ic'], sb['code'][0], sb['code'][1]),
'FW info' : fw['c'] + ' ['+active_slot.upper()+']',
})
print()
if model in SFlash.SOUTHBRIDGES:
print(UI.highlight(STR_MODEL+': ') + '%s [%s] [%02X:%02X]'%(model['name'], model['ic'], model['code'][0], model['code'][1]))
else:
print(UI.highlight(STR_SELECT_MODEL)+'\n')
sb_list = SFlash.SOUTHBRIDGES
UI.showMenu(['%s [%02X:%02X] %s'%(sb_list[x]['ic'], sb_list[x]['code'][0], sb_list[x]['code'][1], sb_list[x]['name']) for x in range(len(sb_list))], 1)
UI.showStatus()
choice = input(STR_CHOICE)
if choice == '':
break
try: n = int(choice)
except: n = -1
if n > 0 and n <= len(SFlash.SOUTHBRIDGES):
model = SFlash.SOUTHBRIDGES[n-1]
else:
UI.setStatus(STR_ERROR_INPUT)
continue
print()
expert_mode = False
if not emc_ver:
expert_mode = input(UI.highlight(STR_EXPERT_MODE+STR_Y_OR_CANCEL)).lower()
UI.clearInput()
# Quick mode
if not emc_ver and expert_mode != 'y':
emc_ver = SFlash.getDataByPartitionAndType('emc_ipl', model['code'][0], fw['c'])
eap_ver = SFlash.getDataByPartitionAndType('eap_kbl', model['code'][1], fw['c'])
if not emc_ver:
print(UI.error(STR_ERR_NO_FW_FOUND%('EMC',fw['c'])))
if not eap_ver:
print(UI.error(STR_ERR_NO_FW_FOUND%('EAP',fw['c'])))
if emc_ver and eap_ver:
continue
else:
model, emc_ver, eap_ver = '','',''
print(UI.highlight(STR_USE_EXPERT_M))
input(STR_BACK)
continue
# Expert mode
if emc_ver:
print(UI.highlight(' EMC:') + ' %s - %s [%s]\n'%(emc_ver['fw'][0], emc_ver['fw'][-1], emc_ver['md5']))
else:
print(UI.highlight(STR_SELECT_FW_VER+' (emc):')+'\n')
items = SFlash.getDataByPartitionAndType('emc_ipl', model['code'][0])
for x in range(len(items)):
str = ' %2d: %05s <> %05s [%s]'%(x+1, items[x]['fw'][0], items[x]['fw'][-1], items[x]['md5'])
print(UI.highlight(str) if SFlash.isFwInList(fw['c'], items[x]['fw']) else str)
print(UI.DIVIDER+' 0:'+STR_GO_BACK)
UI.showStatus()
try: n = int(input(STR_CHOICE))
except: n = -1
if n == 0:
model, emc_ver, eap_ver = '','',''
continue
if n > 0 and n <= len(items):
emc_ver = items[n-1]
else:
UI.setStatus(STR_ERROR_INPUT)
continue
if eap_ver:
print(UI.highlight(' EAP:') + ' %s - %s [%s]\n'%(eap_ver['fw'][0], eap_ver['fw'][-1], eap_ver['md5']))
else:
print(UI.highlight(STR_SELECT_FW_VER+' (eap):')+'\n')
items = SFlash.getDataByPartitionAndType('eap_kbl', model['code'][1])
for x in range(len(items)):
str = ' %2d: %05s <> %05s [%s]'%(x+1, items[x]['fw'][0], items[x]['fw'][-1], items[x]['md5'])
print(UI.highlight(str) if SFlash.isFwInList(fw['c'], items[x]['fw']) else str)
print(UI.DIVIDER+' 0:'+STR_GO_BACK)
UI.showStatus()
try: n = int(input(STR_CHOICE))
except: n = -1
if n == 0:
emc_ver, eap_ver = '',''
continue
if n > 0 and n <= len(items):
eap_ver = items[n-1]
else:
UI.setStatus(STR_ERROR_INPUT)
continue
# Process
if emc_ver and eap_ver:
emc_file = SFlash.getFwFilename(emc_ver, (os.path.sep).join([ Utils.ROOT_PATH, 'fws', 'emc', '%02X'%model['code'][0] ]))
eap_file = SFlash.getFwFilename(eap_ver, (os.path.sep).join([ Utils.ROOT_PATH, 'fws', 'eap', '%02X'%model['code'][1] ]))
if os.path.exists(emc_file) and os.path.exists(eap_file):
out_file = Utils.getFilePathWoExt(file, True)+'_patch_sb_'+model['ic']+'.bin'
Utils.savePatchData(out_file, Utils.getFileContents(file), [
{'o':SFlash.SFLASH_PARTITIONS['s0_emc_ipl_'+active_slot.lower()]['o'], 'd':Utils.getFileContents(emc_file)},
{'o':SFlash.SFLASH_PARTITIONS['s0_eap_kbl']['o'], 'd':Utils.getFileContents(eap_file)},
])
UI.setStatus(STR_SAVED_TO%out_file)
else:
status = ' '+Utils.ROOT_PATH+'\n'
if not os.path.exists(emc_file): status += ' '+emc_file[len(Utils.ROOT_PATH):]+'\n'
if not os.path.exists(eap_file): status += ' '+eap_file[len(Utils.ROOT_PATH):]+'\n'
status += ' ' + STR_NOT_FOUND
UI.setStatus(status)
UI.showStatus()
input(STR_BACK)
break
def screenWFpatcher(file, model = '', ver = ''):
# Read once
with open(file,'rb') as f:
active_slot = SFlash.getActiveSlot(f)
fw = SFlash.getFWInfo(f, active_slot)
torus = SFlash.getTorusInfo(f)
while True:
UI.clearScreen()
print(TITLE + UI.getTab(STR_ABOUT_TORUS_PATCH))
print(UI.warning(STR_INFO_TORUS_PATCH))
print()
print(UI.warning(STR_INFO_FW_LINK))
print(UI.getTab(STR_WIFI_PATCHER))
print(UI.highlight(STR_CURRENT))
print()
UI.showTable({
'Torus (WiFi+BT)' : '%s - %s [0x%02X]'%(torus['v'], torus['name'], torus['code']),
'FW info' : fw['c'] + ' ['+active_slot.upper()+']',
})
print()
if model in SFlash.TORUS_VERS:
print(UI.highlight(STR_MODEL+': ') + '%s - %s [%02X]'%(model['v'], model['name'], model['code']))
else:
print(UI.highlight(STR_SELECT_MODEL)+'\n')
tor_models = SFlash.TORUS_VERS
UI.showMenu(['%s - %s [0x%02X] %s'%(tor_models[x]['v'], tor_models[x]['name'][:15], tor_models[x]['code'], ', '.join(tor_models[x]['ic'])) for x in range(len(SFlash.TORUS_VERS))], 1)
UI.showStatus()
choice = input(STR_CHOICE)
if choice == '':
break
try: n = int(choice)
except: n = -1
if n > 0 and n <= len(SFlash.TORUS_VERS):
model = SFlash.TORUS_VERS[n-1]
else:
UI.setStatus(STR_ERROR_INPUT)
continue
print()
# Quick mode
expert_mode = False
if not ver:
expert_mode = input(UI.highlight(STR_EXPERT_MODE+STR_Y_OR_CANCEL)).lower()
UI.clearInput()
if not ver and expert_mode != 'y':
ver = SFlash.getDataByPartitionAndType('wifi', model['code'], fw['c'])
if not ver:
print(UI.error(STR_ERR_NO_FW_FOUND%('TORUS',fw['c'])))
print(UI.highlight(STR_USE_EXPERT_M))
input(STR_BACK)
model, ver = '',''
continue
# Expert mode
if ver:
print(UI.highlight(' TORUS: ') + '%s - %s [%s]\n'%(ver['fw'][0], ver['fw'][-1], ver['md5']))
fw_file = SFlash.getFwFilename(ver, (os.path.sep).join([ Utils.ROOT_PATH, 'fws', 'torus', '%02X'%model['code'] ]))
if os.path.exists(fw_file):
out_file = Utils.getFilePathWoExt(file, True)+'_patch_torus_'+'%02X'%model['code']+'.bin'
Utils.savePatchData(out_file, Utils.getFileContents(file), [{'o':SFlash.SFLASH_PARTITIONS['s0_wifi']['o'], 'd':Utils.getFileContents(fw_file)}])
UI.setStatus(STR_SAVED_TO%out_file)
else:
UI.setStatus(' %s - %s'%(fw_file, STR_NOT_FOUND))
else:
print(UI.highlight(STR_SELECT_FW_VER)+':\n')
items = SFlash.getDataByPartitionAndType('wifi', model['code'])
for x in range(len(items)):
str = ' %2d: %05s <> %05s [%s]'%(x+1, items[x]['fw'][0], items[x]['fw'][-1], items[x]['md5'])
print(UI.highlight(str) if SFlash.isFwInList(fw['c'], items[x]['fw']) else str)
print(UI.DIVIDER+' 0:'+STR_GO_BACK)
UI.showStatus()
try: n = int(input(STR_CHOICE))
except: n = -1
if n == 0:
return screenWFpatcher(file)
if n > 0 and n <= len(items):
ver = items[n-1]
else:
UI.setStatus(STR_ERROR_INPUT)
continue
UI.showStatus()
input(STR_BACK)
break
return
def screenSysFlags(file):
UI.clearScreen()
print(TITLE + UI.getTab(STR_SYSFLAGS))
with open(file, 'r+b') as f:
print(UI.warning(STR_CURRENT)+'\n')
flags = SFlash.getNorData(f, 'SYS_FLAGS')
for i in range(0, len(flags), 0x10):
print(' '+Utils.hex(flags[i:i+0x10]))
choice = input(STR_CONFIRM)
if choice.lower() != 'y':
return 0
val = b'\xFF'*64
SFlash.setNorData(f, 'SYS_FLAGS', val)
SFlash.setNorDataB(f, 'SYS_FLAGS', val)
UI.setStatus(STR_SYSFLAGS_CLEAN)
def screenMemClock(file):
UI.clearScreen()
print(TITLE + UI.getTab(STR_WARNING))
print(UI.warning(STR_OVERCLOCKING))
print(UI.getTab(STR_MEMCLOCK))
with open(file, 'r+b') as f:
clocks = SFlash.getMemClock(f)
print(STR_CURRENT+('0x%02X %dMHz | 0x%02X %dMHz')%(clocks[0],clocks[1],clocks[2],clocks[3]))
if clocks[0] != clocks[2]:
print(STR_DIFF_SLOT_VALUES)
try:
frq = int(input(STR_MEMCLOCK_INPUT))
except:
return
if frq >= 400 and frq <= 2000:
raw = SFlash.clockToRaw(frq)
else:
frq = 0
raw = 255
SFlash.setNorData(f, 'MEMCLK', raw.to_bytes(1, 'big'))
SFlash.setNorDataB(f, 'MEMCLK', raw.to_bytes(1, 'big'))
UI.setStatus(STR_MEMCLOCK_SET%(frq,raw))
def screenSamuBoot(file):
UI.clearScreen()
print(TITLE + UI.getTab(STR_SAMU_BOOT))
with open(file, 'r+b') as f:
cur = SFlash.getNorData(f, 'SAMUBOOT')[0]
print(STR_CURRENT+('%d [0x%02X]')%(cur,cur))
try:
frq = int(input(STR_SAMU_INPUT))
except:
return
if frq < 0 or frq > 255:
frq = 255
SFlash.setNorData(f, 'SAMUBOOT', frq.to_bytes(1, 'big'))
SFlash.setNorDataB(f, 'SAMUBOOT', frq.to_bytes(1, 'big'))
UI.setStatus(STR_SAMU_UPD+('%d [0x%02X]')%(frq,frq))
def screenLegitimatePatch(file, path = ''):
UI.clearScreen()
print(TITLE+UI.getTab(STR_ABOUT_LEG_PATCH))
print(UI.warning(STR_INFO_LEG_PATCH))
print(UI.getTab(STR_LEG_PATCH))
print(' '+UI.highlight(STR_LP_FIRST_DUMP)+':\n')
with open(file, 'rb') as f:
data = f.read()
f_info = SFlash.getInfoForLegitSwitch(f)
UI.showTable({
'File' : os.path.basename(file),
'Date' : Utils.getFileTime(file)['date'],
'Slot' : 'A' if f_info['slot'] == b'\x00' else 'B',
'SN' : f_info['sn'],
'Pattern' : UI.highlight(Utils.hex(f_info['switch'],':')),
})
print()
if not path or not os.path.isfile(path):
c = input(STR_INPUT_SEL_DUMP+STR_Y_OR_CANCEL)
if c.lower() == 'y':
path = Tools.screenFileSelect(file, False, True)
return screenLegitimatePatch(file, path)
else:
return
print(' '+UI.highlight(STR_LP_SECOND_DUMP)+':\n')
with open(path, 'rb') as f:
s_info = SFlash.getInfoForLegitSwitch(f)
UI.showTable({
'File' : os.path.basename(path),
'Date' : Utils.getFileTime(path)['date'],
'Slot' : 'A' if s_info['slot'] == b'\x00' else 'B',
'SN' : s_info['sn'],
'Pattern' : UI.highlight(Utils.hex(s_info['switch'],':')),
})
print()
# Quick check
if f_info['sn'] != s_info['sn']:
print(' '+UI.warning(STR_CANT_USE+': ')+STR_DIFF_SN)
input(STR_BACK)
return
if f_info['switch'] == s_info['switch']:
print(' '+UI.warning(STR_CANT_USE+': ')+STR_SSP_EQUAL)
input(STR_BACK)
return
ofile = Utils.getFilePathWoExt(file)+'_legit_patch.bin'
Utils.savePatchData(ofile, data, [
{'o':SFlash.SFLASH_AREAS['CORE_SWCH']['o'], 'd':s_info['switch']},
{'o':SFlash.SFLASH_AREAS['UART']['o'], 'd':b'\x01'},
{'o':SFlash.SFLASH_AREAS['UART']['o']+SFlash.BACKUP_OFFSET, 'd':b'\x01'},
])
print(STR_PATCH_SAVED%ofile)
c = input('\n'+UI.highlight(STR_FLASH_FILE+STR_Y_OR_CANCEL)).lower()
if c == 'y':
return Tools.screenNorFlasher(ofile if ofile else file, '', 'write', 1)
input(STR_BACK)
def screenDowngrade(file):
UI.clearScreen()
print(TITLE + UI.getTab(STR_COREOS_SWITCH))
print(UI.warning(STR_DOWNGRADE))
with open(file, 'r+b') as f:
print('\n'+STR_CURRENT+SFlash.getSlotSwitchInfo(f))
print(UI.getTab(STR_SWITCH_PATTERNS),end='')
for i in range(1, len(SFlash.SWITCH_TYPES)):
print('\n '+SFlash.SWITCH_TYPES[i]+'\n')
for n in range(len(SFlash.SWITCH_BLOBS)):
if SFlash.SWITCH_BLOBS[n]['t'] == i:
print(' %2d: %s'%(n+1,Utils.hex(SFlash.SWITCH_BLOBS[n]['v'])))
print(UI.DIVIDER)
print(' 0:'+STR_GO_BACK)
UI.showStatus()
try: num = int(input(STR_CHOICE))
except: num = -1
if num == 0:
return
elif num < 0 or num > len(SFlash.SWITCH_BLOBS):
UI.setStatus(STR_ERROR_CHOICE)
else:
pattern = SFlash.SWITCH_BLOBS[num-1]
ofile = ''
c = input('\n'+UI.highlight(STR_CONFIRM_SEPARATE+STR_Y_OR_CANCEL)).lower()
if c == 'y':
ofile = os.path.splitext(file)[0]+'_slot_switch_'+str(num)+'.bin'
f.seek(0,0)
patch = [
{'o':SFlash.SFLASH_AREAS['CORE_SWCH']['o'], 'd':bytes(pattern['v'])},
{'o':SFlash.SFLASH_AREAS['UART']['o'], 'd':b'\x01'},
{'o':SFlash.SFLASH_AREAS['UART']['o']+SFlash.BACKUP_OFFSET, 'd':b'\x01'},
]
Utils.savePatchData(ofile, f.read(), patch)
UI.setStatus(STR_PATCH_SAVED%ofile)
else:
SFlash.setNorData(f, 'CORE_SWCH', bytes(pattern['v']))
UI.setStatus(STR_DOWNGRADE_UPD + SFlash.SWITCH_TYPES[pattern['t']] + ' [' + str(num)+']')
c = input('\n'+UI.highlight(STR_FLASH_FILE+STR_Y_OR_CANCEL)).lower()
if c == 'y':
return Tools.screenNorFlasher(ofile if ofile else file, '', 'write', 1)
screenDowngrade(file)
def screenFlagsToggler(file):
UI.clearScreen()
print(TITLE+UI.getTab(STR_WARNING))
print(UI.warning(STR_PATCHES))
print(UI.getTab(STR_SFLASH_FLAGS))
with open(file, 'rb') as f:
patches = [
{'k':'UART', 'v':[b'\x00',b'\x01'], 'd':[STR_OFF,STR_ON], 'b':True},
{'k':'MEMTEST', 'v':[b'\x00',b'\x01'], 'd':[STR_OFF,STR_ON], 'b':True},
{'k':'RNG_KEY', 'v':[b'\x00',b'\x01'], 'd':[STR_OFF,STR_ON], 'b':True},
{'k':'BTNSWAP', 'v':[b'\x00',b'\x01'], 'd':['O - select','X - select']},
{'k':'SLOW_HDD', 'v':[b'\xFF',b'\xFE'], 'd':[STR_OFF,STR_ON]},
{'k':'MEM_BGM', 'v':[b'\xFE',b'\xFF'], 'd':['Large','Normal']},
{'k':'SAFE_BOOT', 'v':[b'\xFF',b'\x01'], 'd':[STR_OFF,STR_ON]},
{'k':'UPD_MODE', 'v':[b'\x00',b'\x10'], 'd':[STR_OFF,STR_ON]},
{'k':'ARCADE', 'v':[b'\x00',b'\x01'], 'd':[STR_OFF,STR_ON]},
{'k':'REG_REC', 'v':[b'\x00',b'\x01'], 'd':[STR_OFF,STR_ON]},
{'k':'IDU', 'v':[b'\x00',b'\x01'], 'd':[STR_OFF,STR_ON]},
{'k':'BOOT_MODE', 'v':[b'\xFE',b'\xFB',b'\xFF'], 'd':['Development','Assist','Release']},
{'k':'MANU', 'v':[b'\x00'*32,b'\xFF'*32], 'd':[STR_OFF,STR_ON]},
{'k':'ACT_SLOT', 'v':[b'\x00',b'\x80'], 'd':['A','B']},
{'k':'RESOLUTION', 'v':[b'\x00', b'\x01', b'\x02', b'\x03', b'\x04', b'\x05', b'\x13'], 'd':['Reset', '1080i', '720p', '1080p', '4K', '4K HDR', 'Auto']},
]
for i in range(len(patches)):
name = SFlash.getNorAreaName(patches[i]['k'])
val = SFlash.getNorData(f, patches[i]['k'])
str = '['+Utils.hex(val,'')[:32]+']'
for k in range(len(patches[i]['v'])):
if val == patches[i]['v'][k]:
str = patches[i]['d'][k]
print(' %2d: %-24s : %s'%(i+1, name, str))
print(UI.DIVIDER)
print(' c:'+STR_CLEAN_FLAGS)
print(' 0:'+STR_GO_BACK)
UI.showStatus()
num = -1
try:
choice = input(STR_CHOICE)
num = int(choice)
except:
if choice == 'c':
screenSysFlags(file)
if num == 0:
return
elif num > 0 and num <= len(patches):
patch = patches[num-1]
k = toggleFlag(file, patch)
if patch['k'] == 'RESOLUTION':
SFlash.setNorData(file, 'RES_RESET', b'\x01' if patch['v'][k] == b'\x00' else b'\x00')
screenFlagsToggler(file)
def toggleFlag(file, patch):
with open(file, 'r+b') as f:
cur = SFlash.getNorData(f, patch['k'])
for i in range(0,len(patch['v'])):
if cur == patch['v'][i]:
break
i = 0 if (i + 1) >= len(patch['v']) else i + 1
val = patch['v'][i]
SFlash.setNorData(f, patch['k'], patch['v'][i])
if 'b' in patch and patch['b'] == True:
# Set flag in backup area
SFlash.setNorDataB(f, patch['k'], patch['v'][i])
UI.setStatus(STR_SET_TO%(SFlash.getNorAreaName(patch['k']),patch['d'][i]))
return i
def screenPartitionsInfo(file):
UI.clearScreen()
print(TITLE+UI.getTab(STR_PARTS_INFO))
with open(file,'rb') as f:
data = SFlash.getPartitionsInfo(f)
slot = 'A' if data['slot'] == b'\x00' else 'B'
print(STR_ACT_SLOT%(slot, data['slot'][0]))
print()
for i in range(len(data['parts'])):
p = data['parts'][i]
print(UI.highlight(' #%d %s'%(i+1, p['name'])))
UI.showTable({
'Offset':'%8d [0x%x]'%(p['offset'],p['offset']),
'Size':'%8d [0x%x]'%(p['size'],p['size']),
'Type':'%8d [0x%x]'%(p['type'],p['type']),
})
print()
choice = input(STR_CHOICE)
def screenSFlashTools(file):
while True:
UI.clearScreen()
print(TITLE+UI.getTab(STR_SFLASH_INFO))
info = SFlash.getSFlashInfo(file)
if info:
UI.showTable(info)
else:
return Tools.screenFileSelect(file)
print(UI.getTab(STR_ACTIONS))
UI.showMenu(MENU_SFLASH_ACTIONS,1)
print(UI.DIVIDER)
UI.showMenu(MENU_EXTRA)
UI.showStatus()
choice = input(STR_CHOICE)
if choice == 's':
Tools.screenFileSelect(file)
break
elif choice == 'f':
Tools.screenNorFlasher(file)
break
elif choice == 'r':
file = renameToCanonnical(file)
continue
elif choice == 'q':
break
if choice == '1':
screenFlagsToggler(file)
elif choice == '2':
screenMemClock(file)
elif choice == '3':
screenSamuBoot(file)
elif choice == '4':
screenDowngrade(file)
elif choice == '5':
screenLegitimatePatch(file)
elif choice == '6':
screenSBpatcher(file)
elif choice == '7':
screenWFpatcher(file)
elif choice == '8':
AdvSFlashTools.screenAdvSFlashTools(file)
def renameToCanonnical(file):
fpath = os.path.realpath(file)
new_name = SFlash.getCanonicalName(file)
if new_name:
new_fpath = os.path.join(os.path.dirname(fpath), new_name + '.bin')
if not os.path.exists(new_fpath):
os.rename(fpath, new_fpath)
file = new_fpath
UI.setStatus(STR_RENAMED%new_name)
return new_fpath
else:
UI.setStatus(STR_FILE_EXISTS)
return file
================================================
FILE: tools/SysconTools.py
================================================
#==============================================================
# PS4 Syscon Tools
# part of ps4 wee tools project
#==============================================================
import os
from lang._i18n_ import *
import utils.syscon as Syscon
import utils.utils as Utils
import tools.Tools as Tools
import tools.AdvSysconTools as AdvSCTools
def toggleDebug(file):
with open(file, 'r+b') as f:
cur = Syscon.getSysconData(f, 'DEBUG')[0]
val = b'\x04' if cur == 0x84 or cur == 0x85 else b'\x85'
Syscon.setSysconData(f, 'DEBUG', val)
UI.setStatus(STR_DEBUG+(STR_OFF if val == b'\x04' else STR_ON))
def printSnvsEntries(base,entries,start=''):
for i,v in enumerate(entries):
color = Clr.fg.d_grey
if v[1] in Syscon.SC_TYPES_MODES:
color = Clr.fg.green
elif v[1] in Syscon.SC_TYPES_BOOT:
color = Clr.fg.pink
elif v[1] in Syscon.SC_TYPES_UPD:
color = Clr.fg.cyan
elif v[1] in Syscon.SC_TYPES_PRE0:
color = Clr.fg.orange
elif v[1] in Syscon.SC_TYPES_PRE2:
color = Clr.fg.red
num = '%03d'%(start + i) if start != '' else ''
print(' {:5X} | '.format(base + (i * Syscon.NvsEntry.getEntrySize())) + color + Utils.hex(v)+Clr.reset + ' | '+num)
def screenViewSNVS(file, block = '', flat = False):
UI.clearScreen()
print(TITLE+UI.getTab(STR_NVS_ENTRIES%'SNVS'))
with open(file, 'rb') as f:
SNVS = Syscon.NVStorage(Syscon.SNVS_CONFIG, Syscon.getSysconData(f, 'SNVS'))
blocks_count = Syscon.SNVS_CONFIG.getDataCount()-1
count = Syscon.SNVS_CONFIG.getDataRecordsCount() if not flat else SNVS.cfg.getDataFlatLength() // Syscon.NvsEntry.getEntrySize()
active = SNVS.active_volume_entry.getLink()
block = active if block == '' else block
if flat:
entries = SNVS.getFlatDataEntries(block)
base = SNVS.getFlatDataOffset(block, True)
else:
entries = SNVS.getDataBlockEntries(block)
base = SNVS.getDataBlockOffset(block, True)
print((' Flat' if flat else '')+STR_SYSCON_BLOCK%(block, blocks_count, len(entries), count, active))
printSnvsEntries(base, entries, 1)
UI.showStatus()
try:
c = input(UI.DIVIDER+STR_SC_BLOCK_SELECT%blocks_count)
if c == 'f':
flat = False if flat else True
return screenViewSNVS(file, block, flat)
num = int(c)
if num >= 0 and num <= blocks_count:
block = num
else:
UI.setStatus(STR_ERROR_CHOICE)
except:
return
screenViewSNVS(file, block)
def screenAutoPatchSNVS(file):
UI.clearScreen()
print(TITLE+UI.getTab(STR_APATCH_SVNS))
with open(file, 'rb') as f:
data = f.read()
SNVS = Syscon.NVStorage(Syscon.SNVS_CONFIG, Syscon.getSysconData(f, 'SNVS'))
entries = SNVS.getAllDataEntries()
status = Syscon.isSysconPatchable(entries)
upd_entry_size = len(Syscon.SC_TYPES_UPD)
inds = Syscon.getEntriesByType(Syscon.SC_TYPES_UPD, entries)
index = inds[-1] if len(inds) >= 1 else -1
prev_index = inds[-2] if len(inds) >= 2 else -1
last_fw = Syscon.getRecordPos(index, SNVS)
prev_fw = Syscon.getRecordPos(prev_index, SNVS)
info = {
'General' : 'Active[%d] OWC[%d]'%(SNVS.active_volume_entry.getLink(), SNVS.getOWC()),
'08-0B (prev)' : STR_NOT_FOUND if prev_index < 0 else STR_SNVS_ENTRY_INFO%(prev_fw['block'], prev_fw['num'], prev_fw['offset']),
'08-0B (last)' : STR_NOT_FOUND if index < 0 else STR_SNVS_ENTRY_INFO%(last_fw['block'], last_fw['num'], last_fw['offset']),
'Order of blocks' : SNVS.getDataBlocksOrder(),
'Status' : MENU_SC_STATUSES[status],
}
UI.showTable(info, 20)
print()
if index < 0 or prev_index < 0:
print(UI.warning(STR_UNPATCHABLE))
input(STR_BACK)
return
recommend = ['D','A','C','B']
print(UI.warning(STR_RECOMMEND%recommend[status]))
if status == 0:
print(UI.highlight(STR_SC_WARN_OVERWITTEN))
print()
options = MENU_PATCHES.copy()
options[1] = options[1]%(len(entries) - index)
options[2] = options[2]%(len(entries) - (prev_index + upd_entry_size))
options[3] = options[3]%(len(entries) - (index + upd_entry_size))
options[4] = UI.dark(options[4]%(0))
UI.showMenu(options,1)
UI.showStatus()
out_file = Utils.getFilePathWoExt(file,True)
choice = input(STR_CHOICE)
try:
c = int(choice)
except:
return
ofile = ''
snvs_data = False
if c == 1:
ofile = out_file+'_patch_A.bin'
snvs_data = SNVS.getRebuilded([entries[i] for i in range(len(entries)) if i < index or i >= index+4])
elif c == 2:
ofile = out_file+'_patch_B.bin'
snvs_data = SNVS.getRebuilded(entries[:index])
elif c == 3:
ofile = out_file+'_patch_C.bin'
snvs_data = SNVS.getRebuilded(entries[:prev_index + upd_entry_size])
elif c == 4:
ofile = out_file+'_patch_D.bin'
snvs_data = SNVS.getRebuilded(entries[:index + upd_entry_size])
if ofile and snvs_data:
Utils.savePatchData(ofile, data, [{'o':Syscon.SC_AREAS['SNVS']['o'], 'd':snvs_data}])
UI.setStatus(STR_SAVED_TO%ofile)
else:
UI.setStatus(STR_ERROR_CHOICE)
if c == 5:
UI.setStatus(STR_NIY)
screenAutoPatchSNVS(file)
def screenManualPatchSNVS(file, flat = False):
UI.clearScreen()
print(TITLE+UI.getTab(STR_ABOUT_MPATCH))
print(STR_INFO_SC_MPATCH + '\n\n' + UI.warning(STR_IMMEDIATLY))
print(UI.getTab(STR_MPATCH_SVNS))
with open(file, 'r+b') as f:
SNVS = Syscon.NVStorage(Syscon.SNVS_CONFIG, Syscon.getSysconData(f, 'SNVS'))
entries = SNVS.getLastFlatEntries() if flat else SNVS.getLastDataEntries()
block = SNVS.active_volume_entry.getLink()
records_count = 16 if len(entries) > 16 else len(entries)
records = entries[-records_count:]
offset = SNVS.getLastFlatDataOffset(True) if flat else SNVS.getLastDataBlockOffset(True)
last_offset = offset + Syscon.NvsEntry.getEntrySize() * len(entries)
print((' FlatData:' if flat else ' Entries:')+STR_LAST_SC_ENTRIES%(records_count, len(entries), block))
print()
printSnvsEntries(last_offset - Syscon.NvsEntry.getEntrySize() * records_count, records, len(entries)+ 1 - records_count)
UI.showStatus()
print(UI.DIVIDER)
print(' f:'+STR_SC_TOGGLE_FLATDATA)
print(' 0:'+STR_GO_BACK)
c = input(STR_MPATCH_INPUT)
if c.lower() == 'f':
flat = False if flat else True
try:
num = int(c)
except:
return screenManualPatchSNVS(file, flat)
if num == 0:
UI.setStatus(STR_PATCH_CANCELED)
return
if num > 0 and (num < len(entries) or (flat and num == len(entries))):
length = num * Syscon.NvsEntry.getEntrySize()
Utils.setData(f, last_offset - length, b'\xFF'*length)
UI.setStatus(STR_PATCH_SUCCESS%num+' [{:X} - {:X}]'.format(last_offset - length, last_offset))
elif num == len(entries):
if SNVS.getOWC() == 0:
Utils.setData(f, SNVS.getLastVolumeEntryOffset(True), b'\xFF'*Syscon.NvsEntry.getEntryHeadSize())
Utils.setData(f, SNVS.getLastDataBlockOffset(True) - SNVS.cfg.getDataFlatLength(), b'\xFF'*SNVS.cfg.getDataLength())
UI.setStatus(STR_SC_BLOCK_CLEANED%block)
else:
UI.setStatus(STR_OWC_RESET_REQUIRED)
elif num > len(entries):
UI.setStatus(STR_TOO_MUCH%(num,len(entries)))
screenManualPatchSNVS(file, flat)
def screenSysconTools(file):
MENU_SC_ACTIONS[4-1] = UI.dark(MENU_SC_ACTIONS[4-1])
while True:
UI.clearScreen()
print(TITLE+UI.getTab(STR_SYSCON_INFO))
info = getSysconInfo(file)
if not info:
return Tools.screenFileSelect(file)
UI.showTable(info)
print(UI.getTab(STR_ACTIONS))
UI.showMenu(MENU_SC_ACTIONS,1)
print(UI.DIVIDER)
UI.showMenu(MENU_EXTRA)
UI.showStatus()
choice = input(STR_CHOICE)
if choice == 's':
Tools.screenFileSelect(file)
break
elif choice == 'f':
Tools.screenSysconFlasher(file)
break
elif choice == 'r':
file = renameToCanonnical(file)
continue
elif choice == 'q':
break
if choice == '1':
toggleDebug(file)
elif choice == '2':
screenAutoPatchSNVS(file)
elif choice == '3':
screenViewSNVS(file)
elif choice == '4':
UI.setStatus(STR_NIY)
elif choice == '5':
screenManualPatchSNVS(file)
elif choice == '6':
AdvSCTools.screenAdvSysconTools(file)
else:
UI.setStatus(STR_ERROR_CHOICE)
# Functions
def getSysconInfo(file):
if not Utils.checkFileSize(file, Syscon.DUMP_SIZE):
return False
with open(file, 'rb') as f:
magic = Syscon.checkSysconData(f, ['MAGIC_1','MAGIC_2','MAGIC_3'])
debug = Syscon.getSysconData(f, 'DEBUG')[0]
debug = STR_ON if debug == 0x84 or debug == 0x85 else STR_OFF
ver = Syscon.getSysconData(f, 'VERSION')
SNVS = Syscon.NVStorage(Syscon.SNVS_CONFIG, Syscon.getSysconData(f, 'SNVS'))
records = SNVS.getAllDataEntries()
fw_info = Syscon.checkSysconFW(f)
snvs_info = 'Vol[%d] Data[%d] Counter[0x%X] OWC[%d]'%(
SNVS.active_volume,
SNVS.active_volume_entry.getLink(),
SNVS.active_volume_entry.getCounter(),
SNVS.getOWC(),
)
info = {
'FILE' : os.path.basename(file),
'MD5' : Utils.getFileMD5(file),
'Magic' : STR_OK if magic else STR_FAIL,
'Debug' : debug,
'FW' : 'v%X.%02X'%(ver[0],ver[2]),
'FW MD5' : '%s - %s'%(fw_info['md5'], (STR_OK+' ['+fw_info['fw']+']') if fw_info['fw'] else STR_FAIL),
'SNVS' : snvs_info,
'Entries' : STR_SNVS_ENTRIES%(len(SNVS.getLastDataEntries()), SNVS.getLastDataBlockOffset(True)),
'Status' : MENU_SC_STATUSES[Syscon.isSysconPatchable(records)],
}
return info
def renameToCanonnical(file):
fpath = os.path.realpath(file)
new_name = Syscon.getCanonicalName(file)
if new_name:
new_fpath = os.path.join(os.path.dirname(fpath), new_name + '.bin')
if not os.path.exists(new_fpath):
os.rename(fpath, new_fpath)
file = new_fpath
UI.setStatus(STR_RENAMED%new_name)
return new_fpath
else:
UI.setStatus(STR_FILE_EXISTS)
return file
================================================
FILE: tools/Tools.py
================================================
#==============================================================
# Common Tools
# part of ps4 wee tools project
#==============================================================
import os, sys, time, datetime
from lang._i18n_ import *
from utils.serial import WeeSerial
from utils.spiway import SpiFlasher
from utils.scflasher import SysconFlasher, sysconReader
import utils.utils as Utils
import utils.slb2 as Slb2
import utils.sflash as SFlash
import utils.syscon as Syscon
import tools.SFlashTools as SFlashTools
import tools.SysconTools as SysconTools
import tools.AdvSFlashTools as AdvSFlashTools
# Screens
def screenMainMenu():
MENU_TOOL_SELECTION[6-1] = UI.dark(MENU_TOOL_SELECTION[6-1])
while True:
UI.clearScreen()
print(TITLE + UI.getTab(STR_MAIN_MENU))
UI.showMenu(MENU_TOOL_SELECTION,1)
UI.showStatus()
choice = input(STR_CHOICE)
if choice == '1':
screenFileSelect()
elif choice == '2':
screenSerialMonitor()
elif choice == '3':
screenNorFlasher()
elif choice == '4':
screenSysconFlasher()
elif choice == '5':
screenSysconReader()
elif choice == '6':
UI.setStatus(STR_NIY)
elif choice == '7':
screenSelectLanguage()
elif choice == '8':
sys.exit()
else:
UI.setStatus(STR_ERROR_CHOICE)
def screenSelectLanguage():
while True:
UI.clearScreen()
print(TITLE+UI.getTab(STR_LANGUAGE))
lang_codes = []
for i, key in enumerate(LANG_LIST):
lang_codes.append(key)
print(f' {i+1}: {LANG_LIST[key]} [{key}]')
UI.showStatus()
choice = input(STR_CHOICE).lower()
try: num = int(choice)
except: num = -1
if num > 0 and num <= len(LANG_LIST):
code = lang_codes[num-1]
APP_CONFIG.set('lang', code)
APP_CONFIG.save()
UI.setStatus(STR_RESTART_APP)
break
else:
UI.setStatus(STR_ERROR_CHOICE)
return code
def screenNorFlasher(path = '', port = '', act = '', mode = False):
port = port if port else screenChoosePort()
if not port:
UI.setStatus(STR_NO_PORTS)
return
flasher = SpiFlasher(port)
flasher.reset()
UI.clearScreen()
print(TITLE+UI.getTab(STR_ABOUT_SPIWAY))
print(UI.warning(STR_INFO_SPIWAY))
print(UI.getTab(STR_SPIWAY))
if flasher.err or flasher.sp.is_open == False:
print(UI.warning(STR_PORT_UNAVAILABLE))
print(UI.warning(flasher.err))
flasher.close()
input(STR_BACK)
return
ping = flasher.ping()
ver_maj, ver_min = ping['VER']
UI.showTable({
'Version' : '%d.%02d'%(ver_maj, ver_min),
'Memory' : '%d bytes'%ping['RAM'],
})
print()
if ping['VER'] != flasher.VERSION:
flasher.close()
input(STR_BACK)
return
info = flasher.getChipInfo()
if flasher.Config.IC_ID == 0:
UI.showTable({
'Device ID' : '0x%02X'%flasher.Config.VENDOR_ID,
'Vendor ID' : '0x%04X'%flasher.Config.DEVICE_ID,
})
input(STR_BACK)
return
print(UI.highlight(STR_CHIP_CONFIG)+':\n')
UI.showTable(info)
print()
# Show current file info
if act != 'read' and path and os.path.isfile(path):
print(UI.highlight(STR_FILE_INFO)+':\n')
UI.showTable({
'File' : os.path.basename(path),
'MD5' : Utils.getFileMD5(path),
'Size' : '%d MB'%(os.stat(path).st_size // (1024**2)),
})
print(end=('\n' if act else ''))
# Perform action
cfg = flasher.Config
if act:
print(' '+UI.highlight(MENU_SPW_ACTS[act] if act in MENU_SPW_ACTS else STR_UNKNOWN)+'\n')
block, count = chooseBNC(mode, cfg.BLOCK_SIZE)
if act == 'read':
sfx = '_full' if block == 0 and count == 0 else '_b%d-%d'%(block,block+count)
path = os.path.join(os.getcwd(), 'dump_' + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S') + sfx + '.bin')
data = flasher.readChip(block, count)
print()
if data:
with open(path, "wb") as file:
file.seek(cfg.TOTAL_SIZE - 1)
file.write(b'\x00')
file.seek(cfg.BLOCK_SIZE * block)
file.write(data)
else:
path = ''
elif act == 'write':
if path and os.path.isfile(path):
with open(path,"rb") as file:
file.seek(cfg.BLOCK_SIZE * block)
data = file.read(cfg.BLOCK_SIZE * (count if count > 0 else cfg.BLOCK_COUNT))
flasher.writeChip(data, False, block, count)
print()
else:
UI.setStatus(STR_FILE_NOT_EXISTS%path)
elif act == 'verify':
if path and os.path.isfile(path):
with open(path,"rb") as file:
file.seek(cfg.BLOCK_SIZE * block)
data = file.read(cfg.BLOCK_SIZE * (count if count else cfg.BLOCK_COUNT))
vdata = flasher.readChip(block, count)
print('\n'+STR_VERIFY+': '+(STR_OK if data == vdata else STR_FAIL)+'\n')
else:
UI.setStatus(STR_FILE_NOT_EXISTS%path)
elif act == 'erase':
flasher.eraseChip(block, count)
print()
if act:
print(STR_DONE)
flasher.close()
# Show file info after read action
if act == 'read' and path and os.path.isfile(path):
print('\n'+UI.highlight(STR_FILE_INFO)+':\n')
UI.showTable({
'File' : os.path.basename(path),
'MD5' : Utils.getFileMD5(path),
'Size' : '%d MB'%(os.stat(path).st_size // 1024**2),
})
# Action done
print(UI.getTab(STR_ACTIONS))
UI.showTableEx(UI.getMenu(MENU_FLASHER,1), 4, 17)
print(UI.DIVIDER)
UI.showMenu(MENU_EXTRA_FLASHER)
UI.showStatus()
act = ''
mode = False
choice = input(STR_CHOICE)
if choice == '0':
return
elif choice in ['1','2','3']:
act = 'read'
mode = int(choice) - 1
elif choice in ['4','5','6']:
act = 'write'
mode = int(choice) - 4
elif choice in ['7','8','9']:
act = 'verify'
mode = int(choice) - 7
elif choice in ['10','11','12']:
act = 'erase'
mode = int(choice) - 10
elif choice == 's':
path = screenFileSelect(path, False, True)
elif choice == 'f':
if path and os.path.isfile(path):
return SFlashTools.screenSFlashTools(path)
else:
UI.setStatus(STR_FILE_NOT_EXISTS%path)
elif choice == 'q':
return screenMainMenu()
screenNorFlasher(path, port, act, mode)
def screenSysconFlasher(path = '', port = '', act = '', mode = False):
port = port if port else screenChoosePort()
if not port:
UI.setStatus(STR_NO_PORTS)
return
flasher = SysconFlasher(port)
#flasher.reset()
UI.clearScreen()
print(TITLE+UI.getTab(STR_ABOUT_SCF))
print(UI.warning(STR_INFO_SCF))
print(UI.getTab(STR_SCF))
if flasher.err or flasher.sp.is_open == False:
print(UI.warning(STR_PORT_UNAVAILABLE))
print(UI.warning(flasher.err))
flasher.disconnect()
# Beep.error() # Pro
input(STR_BACK)
return
info = flasher.connect()
ver_maj, ver_min = info['VER']
ram = info['RAM']
debug = info['DEBUG'] if 'DEBUG' in info else None
hw_scf_ver = '%d.%02d'%(ver_maj, ver_min)
sw_scf_ver = '%d.%02d'%(flasher.VERSION[0], flasher.VERSION[1])
UI.showTable({
'Version' : hw_scf_ver if hw_scf_ver == sw_scf_ver else f'{hw_scf_ver} [sw={sw_scf_ver}]' ,
'Memory' : '%d bytes'%ram,
'Debug Mode' : STR_ON if debug else STR_OFF,
})
print()
if info['VER'] != flasher.VERSION or info['DEBUG'] != True:
flasher.close()
input(STR_BACK)
return
info = flasher.getChipInfo()
print(UI.highlight(STR_CHIP_CONFIG)+':\n')
UI.showTable(info)
print()
# Show current file info
if act != 'read' and path and os.path.isfile(path):
print(UI.highlight(STR_FILE_INFO)+':\n')
UI.showTable({
'File' : os.path.basename(path),
'MD5' : Utils.getFileMD5(path),
'Size' : '%d KB'%(os.stat(path).st_size // 1024),
})
print(end=('\n' if act else ''))
# Perform action
cfg = flasher.Config
if act:
print(' '+UI.highlight(MENU_SPW_ACTS[act] if act in MENU_SPW_ACTS else STR_UNKNOWN)+'\n')
block, count = chooseBNC(mode, cfg.BLOCK_SIZE, True)
if act == 'read':
sfx = '_full' if block == 0 and count == 0 else '_b%d-%d'%(block,block+count)
path = os.path.join(os.getcwd(), 'syscon_' + datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S') + sfx + '.bin')
data = flasher.readChip(block, count)
print()
if data:
with open(path, "wb") as file:
file.seek(cfg.TOTAL_SIZE - 1)
file.write(b'\x00')
file.seek(cfg.BLOCK_SIZE * block)
file.write(data)
else:
path = ''
elif act == 'write':
if path and os.path.isfile(path):
with open(path,"rb") as file:
file.seek(cfg.BLOCK_SIZE * block)
data = file.read(cfg.BLOCK_SIZE * (count if count > 0 else cfg.BLOCK_COUNT))
flasher.writeChip(data, block, count)
print()
else:
UI.setStatus(STR_FILE_NOT_EXISTS%path)
elif act == 'verify':
if path and os.path.isfile(path):
with open(path,"rb") as file:
file.seek(cfg.BLOCK_SIZE * block)
data = file.read(cfg.BLOCK_SIZE * (count if count else cfg.BLOCK_COUNT))
vdata = flasher.readChip(block, count)
print('\n'+STR_VERIFY+': '+(STR_OK if data == vdata else STR_FAIL)+'\n')
else:
UI.setStatus(STR_FILE_NOT_EXISTS%path)
elif act == 'erase':
#safe erase all
if mode == 0:
block = 4
print(STR_SCF_SAFE_ERASE%(block))
flasher.eraseChip(block, count)
print()
if act:
print(STR_DONE)
flasher.close()
# Show file info after read action
if act == 'read' and path and os.path.isfile(path):
print('\n'+UI.highlight(STR_FILE_INFO)+':\n')
UI.showTable({
'File' : os.path.basename(path),
'MD5' : Utils.getFileMD5(path),
'Size' : '%d KB'%(os.stat(path).st_size // 1024),
})
# Action done
print(UI.getTab(STR_ACTIONS))
UI.showTableEx(UI.getMenu(MENU_FLASHER,1), 4, 17)
print(UI.DIVIDER)
UI.showMenu(MENU_EXTRA_FLASHER)
UI.showStatus()
act = ''
mode = False
choice = input(STR_CHOICE)
if choice == '0':
return
elif choice in ['1','2','3']:
act = 'read'
mode = int(choice) - 1
elif choice in ['4','5','6']:
act = 'write'
mode = int(choice) - 4
elif choice in ['7','8','9']:
act = 'verify'
mode = int(choice) - 7
elif choice in ['10','11','12']:
act = 'erase'
mode = int(choice) - 10
elif choice == 's':
path = screenFileSelect(path, False, True)
elif choice == 'f':
if path and os.path.isfile(path):
return SysconTools.screenSysconTools(path)
else:
UI.setStatus(STR_FILE_NOT_EXISTS%path)
elif choice == 'q':
return screenMainMenu()
screenSysconFlasher(path, port, act, mode)
def screenSysconReader(port = '', file = ''):
port = port if port else screenChoosePort()
if not port:
UI.setStatus(STR_NO_PORTS)
return
UI.clearScreen()
print(TITLE+UI.getTab(STR_ABOUT_SC_GLITCH))
print(UI.warning(STR_INFO_SC_GLITCH))
print(UI.getTab(STR_SC_READER))
try:
serial = WeeSerial(port, {'baudrate':115200, 'timeout':3})
print(' '+UI.green(serial.getPortInfo())+'\n')
COUNT = int(input(STR_HOW_MUCH_DUMPS))
COUNT = COUNT if COUNT <= 10 else 10
except:
COUNT = 2
if not serial.sp or not serial.sp.is_open:
print(UI.error(STR_PORT_UNAVAILABLE))
input(STR_BACK)
return
file = file if os.path.isfile(file) else os.path.join(os.getcwd(), 'syscon')
p_md5 = False
equal = True
print()
for n in range(COUNT):
print(UI.warning(STR_READING_DUMP_N%(n+1)))
ofile = file + '{:02}.bin'.format(n+1)
sec = sysconReader(serial.sp, ofile)
md5 = Utils.getFileMD5(ofile)
if p_md5 != False and p_md5 != md5:
equal = False
p_md5 = md5
UI.showTable({
'Elapsed time' : STR_SECONDS%sec,
'File MD5' : md5
})
print('\n'+UI.highlight(STR_SAVED_TO%ofile))
print(UI.DIVIDER)
if equal:
print(UI.green(STR_FILES_MATCH))
c = input(UI.highlight(STR_OPEN_IN_SC_TOOL+STR_Y_OR_CANCEL)).lower()
if c == 'y':
SysconTools.screenSysconTools(ofile)
else:
UI.clearInput()
else:
print(UI.error(STR_FILES_MISMATCH))
print(STR_DONE)
input(STR_BACK)
def screenSerialMonitor(port = '', emc_mode = False):
port = port if port else screenChoosePort()
if not port:
UI.setStatus(STR_NO_PORTS)
return
serial = WeeSerial(port)
UI.clearScreen()
print(TITLE + UI.getTab(serial.getPortInfo()))
UI.showTableEx(UI.getMenu(MENU_SERIAL_MONITOR), 2)
print(UI.getTab(STR_SERIAL_MONITOR))
if serial.err or serial.sp.is_open == False:
print(UI.warning(STR_PORT_UNAVAILABLE))
print(UI.warning(serial.err))
input(STR_BACK)
return
serial.startMonitor()
#serial.testPatterns('../uart.txt')
while serial.sp.is_open and serial.alive:
txt = input()
if not len(txt):
continue
elif Utils.checkCtrl(txt[0],'L'):
UI.clearInput()
serial.LOG = False if serial.LOG else datetime.datetime.now().strftime('uart_%Y-%m-%d_%H-%M-%S.txt')
print('\n ' + UI.highlight('UART log: {}'.format(serial.LOG if serial.LOG else STR_OFF)) + '\n')
continue
elif Utils.checkCtrl(txt[0],'R'):
serial.sp.close()
UI.clearScreen()
time.sleep(0.1) # port open/close need some delay
return screenSerialMonitor(port)
elif Utils.checkCtrl(txt[0],'Q'):
serial.sp.close()
UI.clearInput()
print('\n ' + UI.highlight(STR_STOP_MONITORING) + '\n')
break
elif Utils.checkCtrl(txt[0],'E'):
UI.clearInput(2)
emc_mode = False if emc_mode else True
print('\n ' + UI.highlight(STR_EMC_CMD_MODE%(STR_ON if emc_mode else STR_OFF)) + '\n')
continue
elif Utils.checkCtrl(txt[0],'B'):
UI.clearInput()
serial.SHOWCODES = False if serial.SHOWCODES else True
print('\n ' + UI.highlight(STR_SHOW_BYTECODES%(STR_ON if serial.SHOWCODES else STR_OFF)) + '\n')
continue
elif emc_mode:
txt = Utils.getEmcCmd(txt)
UI.clearInput()
print(txt)
serial.sendText(txt)
if serial.err:
print(' '+UI.error(serial.err))
input(STR_BACK)
def screenChoosePort():
UI.clearScreen()
print(TITLE + UI.getTab(STR_WARNING))
print(UI.warning(STR_INFO_FLASH_TOOLS))
print(UI.getTab(STR_PORTS_LIST))
ports = WeeSerial.getPortList()
for i in range(len(ports)):
port = ports[i]
print(' % 2s: %s - %s'%(i+1, port['port'].ljust(6), port['desc']))
if not len(ports):
print(UI.warning(STR_NO_PORTS))
input(STR_BACK)
return ''
UI.showStatus()
try:
c = input(STR_CHOICE)
if c == '':
return
c = int(c)
if c > 0 and c <= len(ports):
return ports[c-1]['port']
else:
UI.setStatus(STR_ERROR_INPUT)
except:
UI.setStatus(STR_ERROR_INPUT)
return screenChoosePort()
def screenFileSelect(path = False, all = False, ret = False):
UI.clearScreen()
print(TITLE + UI.getTab(STR_FILE_LIST+' '+('[all]' if all else '[bin, pup]')))
path = path if path and os.path.exists(path) else os.getcwd()
path = path if os.path.isdir(path) else os.path.dirname(path)
print(Clr.fg.l_grey+(' %s\n'%path)+Clr.reset)
list = [os.path.dirname(path)]
print(' 0: '+os.sep+'..')
dirs = [x for x in os.listdir(path) if os.path.isdir(os.path.join(path, x))]
files = [x for x in os.listdir(path) if not os.path.isdir(os.path.join(path, x))]
dirs.sort()
files.sort()
for d in dirs:
list.append(os.path.join(path, d))
print((' %2d: '+os.sep+'%s'+os.sep)%(len(list)-1,d))
for f in files:
if all or f.lower().endswith('.bin') or f.lower().endswith('.pup'):
list.append(os.path.join(path, f))
print(' %2d: %s'%(len(list)-1,f))
print(UI.DIVIDER)
UI.showMenu(MENU_FILE_SELECTION)
UI.showStatus()
choice = input(STR_CHOICE)
if choice == 'a':
all = False if all else True
elif choice == 'f':
AdvSFlashTools.screenBuildNorDump(path)
elif choice == 'b':
screenBuild2BLS(path)
elif choice == 'c':
file_list = [os.path.join(path, x) for x in files] # Force bin only: if x.lower().endswith('.bin')
screenCompareFiles(file_list)
elif choice == 'r':
for file in files:
fpath = os.path.join(path, file)
f_size = os.stat(fpath).st_size
new_name = ''
if f_size == SFlash.DUMP_SIZE:
with open(fpath, 'rb') as f:
sku = SFlash.getNorData(f, 'SKU', True)[:9].replace('-','')
sn = SFlash.getNorData(f, 'SN', True)
sb = SFlash.getSouthBridge(f)['ic'][-2:]
mobo = SFlash.getMobo(SFlash.getNorData(f, 'BOARD_ID'))['name']
slot = 'a' if SFlash.getNorData(f, 'ACT_SLOT') == b'\x00' else 'b'
fw = SFlash.getNorFW(f, slot)
new_name = '_'.join([sku, sn if sn else '0'*10, sb, mobo, fw['c'], slot, '-'.join(fw['b'])]).upper()
elif f_size == Syscon.DUMP_SIZE:
with open(fpath, 'rb') as f:
fw = Syscon.getSysconData(f, 'VERSION')
SNVS = Syscon.NVStorage(Syscon.SNVS_CONFIG, Syscon.getSysconData(f, 'SNVS'))
records = SNVS.getAllDataEntries()
order = ''.join(str(x) for x in SNVS.getDataBlocksOrder())
status = MENU_SC_STATUSES[Syscon.isSysconPatchable(records)].replace(' ','_').lower()
new_name = '_'.join(['syscon', '%X.%02X'%(fw[0],fw[2]), '%d'%len(records), '['+order+']', status])
if new_name:
new_fpath = os.path.join(path, new_name + '.bin')
#i = 1; while os.path.exists(new_fpath): new_fpath = os.path.join(path, new_name + '_%d.bin'%i)
if not os.path.exists(new_fpath):
os.rename(fpath, new_fpath)
elif choice == 'q':
return screenMainMenu()
elif choice != '':
try:
ind = int(choice)
if ind >= 0 and ind < len(list):
path = list[ind]
if not os.path.isdir(path):
if ret:
return path
else:
launchTool(path)
else:
UI.setStatus(STR_ERROR_CHOICE)
except Exception as error:
UI.setStatus(' %s'%error)
screenFileSelect(path, all)
def screenCompareFiles(list):
UI.clearScreen()
print(TITLE + UI.getTab(STR_COMPARE))
if len(list) == 0:
print(STR_EMPTY_FILE_LIST)
input(STR_BACK)
return
res = True
hashes = []
for i, file in enumerate(list):
if not file or not os.path.isfile(file):
print((STR_FILE_NOT_EXISTS).format(file))
continue
else:
md5 = Utils.getFileMD5(file)
if not md5 in hashes:
hashes.append(md5)
print((' {: 2}: [{}] {}').format(i+1, md5, os.path.basename(file)))
print(UI.DIVIDER)
UI.showTable({
'Result' : STR_OK if len(hashes) == 1 else STR_FAIL,
'Hashes count' : len(hashes),
})
input(STR_BACK)
screenFileSelect()
def screenUnpack2BLS(path):
UI.clearScreen()
print(TITLE + UI.getTab(STR_UNPACK_2BLS))
with open(path,'rb') as f:
data = f.read()
fname = os.path.splitext(os.path.basename(path))[0]
folder = os.path.join(os.path.dirname(path), fname+'_2bls')
info = Slb2.getGet2BLSInfo(data)
print(UI.highlight(' Header'))
head = '\n'.join(UI.getTable(info['header'], 16))
txt_info = 'Header:\n\n' + head + '\n'
print(head)
if not os.path.isdir(folder):
os.makedirs(folder)
entries = info['entries']
txt_info += 'Entries:\n\n'
for key in entries:
entry = entries[key]
print(UI.highlight('\n Entry %s'%key))
e_info = '\n'.join(UI.getTable(entry,16))
txt_info += e_info + '\n'
print(e_info)
with open(os.path.join(folder, entry['name']),'wb') as out:
out.write(data[entry['offset']:entry['offset'] + entry['size']])
with open(os.path.join(folder, Utils.INFO_FILE_2BLS),'w') as txt:
txt.write(txt_info)
print('\n'+STR_SAVED_TO%folder)
input(STR_BACK)
def screenBuild2BLS(path):
UI.clearScreen()
print(TITLE + UI.getTab(STR_2BLS_BUILDER))
name = os.path.basename(path).replace('_2bls','')+ '.2bls'
file = os.path.join(os.path.dirname(path),name)
files = [os.path.join(path,x) for x in os.listdir(path) if os.path.isfile(os.path.join(path, x)) and x != Utils.INFO_FILE_2BLS]
if len(files) == 0:
print(STR_EMPTY_FILE_LIST)
input(STR_BACK)
return
data = Slb2.build2BLS(files)
with open(file, 'wb') as out:
out.write(data)
info = Slb2.getGet2BLSInfo(data)
print(UI.highlight(' Header'))
UI.showTable(info['header'])
entries = info['entries']
for key in entries:
entry = entries[key]
print(UI.highlight('\n Entry %s'%key))
UI.showTable(entry)
print('\n'+STR_SAVED_TO%file)
input(STR_BACK)
def screenHelp():
UI.clearScreen()
print(TITLE + UI.getTab(STR_HELP))
print(STR_APP_HELP)
UI.showStatus()
input(STR_BACK)
# Functions
def chooseBNC(mode = 0, block_size = 0, syscon = False):
block = 0
count = 0
if mode == 1:
if syscon:
areas = [
{'n':'Syscon BOOT0', 'o':0, 'l':Syscon.BLOCK_SIZE * 4},
{'n':'Syscon Firmware', 'o':Syscon.SC_AREAS['FW']['o'], 'l':Syscon.SC_AREAS['FW']['l']},
{'n':'Syscon SNVS/NVS', 'o':Syscon.SC_AREAS['SNVS']['o'], 'l':Syscon.SC_AREAS['SNVS']['l']+Syscon.SC_AREAS['NVS']['l']},
]
else:
areas = [
{'n':'PS4 Full dump', 'o':0, 'l':SFlash.DUMP_SIZE},
{'n':'PS4 Base Info', 'o':SFlash.SFLASH_PARTITIONS['s0_header']['o'], 'l':SFlash.SFLASH_PARTITIONS['s0_blank']['o']},
{'n':'PS4 Flags (NVS)', 'o':SFlash.SFLASH_PARTITIONS['s0_nvs']['o'], 'l':SFlash.SFLASH_PARTITIONS['s0_nvs']['l']},
{'n':'PS4 CoreOS switch', 'o':SFlash.SFLASH_AREAS['CORE_SWCH']['o'], 'l':SFlash.SFLASH_AREAS['CORE_SWCH']['l']},
]
for i in range(len(areas)):
areas[i]['b'] = areas[i]['o'] // block_size
areas[i]['c'] = areas[i]['l'] // block_size + (1 if areas[i]['l'] % block_size else 0)
UI.showMenu(['[%03d %03d] %s'%(areas[i]['b'], areas[i]['c'], areas[i]['n']) for i in range(len(areas))])
num = input(UI.DIVIDER+STR_CHOOSE_AREA)
print()
try:
num = int(num)
if num < len(areas):
block = areas[num]['b']
count = areas[num]['c']
except:
num = 0
if mode == 2:
str = input(STR_INPUT_BLOCK)
print()
try:
num = str.split()
block = int(num[0])
count = int(num[1]) if len(num) > 1 else 1
except:
count = 1
return [block, count]
def launchTool(path):
if not os.path.exists(path):
return 0
if os.path.isdir(path):
if os.path.exists(os.path.join(path, Utils.INFO_FILE_SFLASH)):
return AdvSFlashTools.screenBuildNorDump(path)
elif os.path.exists(os.path.join(path, Utils.INFO_FILE_2BLS)):
return screenBuild2BLS(path)
else:
#TODO: maybe open SPIway?
UI.setStatus(STR_UNK_CONTENT + ' {}'.format(path))
return 0
f_size = os.stat(path).st_size
with open(path,'rb') as f:
header = f.read(0x10)
if f_size == SFlash.DUMP_SIZE:
return SFlashTools.screenSFlashTools(path)
elif f_size == Syscon.DUMP_SIZE:
return SysconTools.screenSysconTools(path)
elif header[0:len(Slb2.SLB2_HEADER)] == Slb2.SLB2_HEADER:
return screenUnpack2BLS(path)
else:
header_ascii = ''.join([chr(c) if c > 0x1F and c < 0x7F else '.' for c in header])
UI.setStatus(f"{STR_UNK_FILE_TYPE} {path}\n File size: {f_size} bytes\n Header: {header_ascii} [{Utils.hex(header,'')}]")
def quickLegitimatePatch(files):
if len(files) != 2:
return False
try:
if os.stat(files[0]).st_size == SFlash.DUMP_SIZE and os.stat(files[1]).st_size == SFlash.DUMP_SIZE:
first = files[0] if os.stat(files[0]).st_mtime < os.stat(files[1]).st_mtime else files[1]
second = files[1] if os.stat(files[0]).st_mtime < os.stat(files[1]).st_mtime else files[0]
with open(first,'rb') as f: f_info = SFlash.getInfoForLegitSwitch(f)
with open(second,'rb') as f: s_info = SFlash.getInfoForLegitSwitch(f)
if f_info['sn'] == s_info['sn'] and f_info['switch'] != s_info['switch'] and f_info['fw'] == s_info['fw']:
SFlashTools.screenLegitimatePatch(first, second)
except:
return False
return False
================================================
FILE: utils/encdec.py
================================================
#==========================================================
# Encrypt / decrypt utils
# part of ps4 wee tools project
#==========================================================
import struct
import utils.utils as Utils
from lang._i18n_ import *
from Crypto.Cipher import AES
from Crypto.Hash import SHA, HMAC, SHA256
# EMC cfw key stuff
CIPHERKEYSEMC = bytes.fromhex('5F74FE7790127FECF82CC6E6D91FA2D1') # FULL
CIPHERKEYSEAP = bytes.fromhex('581A75D7E9C01F3C1BD7473DBD443B98')
HASHERKEYEMC = bytes.fromhex('73FE06F3906B05ECB506DFB8691F9F54')
HASHERKEYEAP = bytes.fromhex('824D9BB4DBA3209294C93976221249E4')
ZEROS128 = bytes.fromhex('00000000000000000000000000000000')
# HDD EAP key stuff
P_SEED_KEY = bytes.fromhex('E973A44C578757A73492625D2CE2D76B')
P_SEED = bytes.fromhex('DF0C2552DFC7F4F089B9D52DAA0E572A')
EAP_K1_SEED = bytes.fromhex('7A49D928D2243C9C4D6E1EA8F5B4E229317E0DCAD2ABE5C56D2540572FB4B6E3')
EAP_K2_SEED = bytes.fromhex('921CE9C8184C5DD476F4B5D3981F7E2F468193ED071E19FFFD66B693534689D6')
EAP_HDD_KEY_HEAD = b'SCE_EAP_HDD__KEY'
EAP_HDD_KEY_BODY = bytes.fromhex('BB6CD66DDC671FAC3664F7BF5049BAA8C4687904BC31CF4F2F4E9F89FA458793811745E7C7E80D460FAF2326550BD7E4D2A0A0D9729DE5D2117D70676F1D55748DC17CDF29C86A855F2AE9A1AD3E915F0000000000000000000000000000000000000000000000000000000000000000')
EAP_HDD_KEY_BLOB = EAP_HDD_KEY_HEAD + EAP_HDD_KEY_BODY
KEY_BLOB = {
'enc': bytes.fromhex('E073B691E177D39642DF2E1D583D0E9A5A49EDF72BE9412E2B433E51490CE973234B84F49E949F03727331D5456F4598F2EDE6D0C11483B84CE3283243D0DE9DC379E915301A805DFAEB292B30374C9BF1C59041509BF11D215C35D5C08E3330807C8229C930FAB88672C4CF7DACA881C323D72346CA07921DB806FC242A2ED1'),
'sig': bytes.fromhex('ED4F32C095847C6D3143EFFD61E7582F75F24465855C4E94DAF34885D8D03463'),
'iv' : bytes.fromhex('3286EA97F3E92C434E1DC170C9289003'),
}
NEW_KEY_BLOB = {
'enc': bytes.fromhex('CFFDCB6ECAE612B7A30A9EDBD8F77E261D629DE5E6CA3F22F439211AC033884F4B5D7D16D0A6F65D3173A2586CF819C7C6F437444C1D9499F6EBC4145E0BBAABC1DE7C63ED1F5A1E1946358C7F181B1FAB6DAB31195D8E611A1CB81B9ACF8B38FF21029FAB568C7A1BCC3E2FBEB25B13F1AFD6A3599EEF09EAEBE32684FDDA29'),
'sig': bytes.fromhex('4798B78DD422601F26A32A1FEC5CAB8B256E50958E0B11A31D77DEE201D4D00E'),
'iv' : bytes.fromhex('462500ECC487F0A8C2F39511E020CC59'),
}
def aes_decrypt_cbc(key, iv, input):
return AES.new(key, AES.MODE_CBC, iv).decrypt(input)
def aes_encrypt_cbc(key, iv, input):
return AES.new(key, AES.MODE_CBC, iv).encrypt(input)
def aes_decrypt_ecb(key, data):
return AES.new(key, AES.MODE_ECB).decrypt(data)
def aes_encrypt_ecb(key, data):
return AES.new(key, AES.MODE_ECB).encrypt(data)
def emc_decrypt_header(hdr):
return hdr[:0x30] + aes_decrypt_cbc(CIPHERKEYSEMC, ZEROS128, hdr[0x30:0x80])
def emc_encrypt_header(hdr):
return hdr[:0x30] + aes_encrypt_cbc(CIPHERKEYSEMC, ZEROS128, hdr[0x30:0x80])
def eap_decrypt_header(hdr):
return hdr[:0x30] + aes_decrypt_cbc(CIPHERKEYSEAP, ZEROS128, hdr[0x30:0x80])
def eap_encrypt_header(hdr):
return hdr[:0x30] + aes_encrypt_cbc(CIPHERKEYSEAP, ZEROS128, hdr[0x30:0x80])
def hmac_sha256(key, data):
return HMAC.new(key=key, msg=data, digestmod=SHA256).digest()
def checkType(type):
print(' Type'.ljust(16)+': 0x',end='')
if type == b'\x48':
print('%s [EMC]'%Utils.hex(type))
type = 'emc'
elif type == b'\x68':
print('%s [EAP]'%Utils.hex(type))
type = 'eap'
else:
print('%s [UNK]'%Utils.hex(type))
type = b''
return type
def decrypt(data):
pad = 16
type = checkType(data[7:8])
if not type:
return type
hdr = emc_decrypt_header(data[:0x80]) if type == 'emc' else eap_decrypt_header(data[:0x80])
body_aes_key = hdr[0x30:0x40]
body_hmac_key = hdr[0x40:0x50]
body_hmac = hdr[0x50:0x64]
zeroes = hdr[0x64:0x6C]
print(' ZERO'.ljust(pad)+': %s'%Utils.hex(zeroes,''))
header_hmac = hdr[0x6C:0x80]
body_len = struct.unpack('= 1 else '')
def __getStatus(self):
# read status byte
res = self._read(1)
if (res != b'\x00'): # 0 = ok
self.error('\n '+self.__getStatusByCode(res))
self.close()
return False
return True
# Main stuff
def __getCmdData(self, cmd, block, count = ''):
data = [0x00] * (5 if count != '' else 3)
data[0] = cmd
data[1] = (block >> 8) & 0xFF
data[2] = block & 0xFF
if count != '':
end = block + count -1
data[3] = (end >> 8) & 0xFF
data[4] = end & 0xFF
return data
def __eraseAll(self):
self._write(self.Cmd.ERASE_CHIP)
if self.__getStatus() == False:
self.error(STR_SCF_ERROR_ERASE_CHIP)
return False
return True
def __eraseBlock(self, block, count = 1):
cmd_data = self.__getCmdData(self.Cmd.ERASE_BLOCK, block, count)
self._write(cmd_data)
if self.__getStatus() == False:
self.error(STR_SCF_ERROR_ERASE_BLK%block)
return False
return True
def __readAll(self):
cmd_data = self.__getCmdData(self.Cmd.READ_CHIP)
self._write(cmd_data)
data = self._read(self.Config.TOTAL_SIZE)
return data
def __readBlock(self, block, count = 1):
cmd_data = self.__getCmdData(self.Cmd.READ_BLOCK, block, count)
self._write(cmd_data)
data = self._read(self.Config.BLOCK_SIZE * count)
return data
def __writeBlock(self, data, block, ex = False):
if len(data) != self.Config.BLOCK_SIZE:
return False
cmd_data = self.__getCmdData(self.Cmd.WRITE_BLOCK_EX if ex else self.Cmd.WRITE_BLOCK, block)
self._write(cmd_data)
self._write(data)
if self.__getStatus() == False:
self.error(STR_SCF_ERROR_WRITE_BLK%block)
return False
return True
def __checkBC(self, block, count):
if block >= self.Config.BLOCK_COUNT:
block = self.Config.BLOCK_COUNT - 1
if count == 0 or (block + count) > self.Config.BLOCK_COUNT:
count = self.Config.BLOCK_COUNT - block
return [block, count]
# Public methods
def reset(self):
self._clean()
self._write(self.Cmd.RESET)
self._flush()
def connect(self):
if not self.sp.is_open:
self.sp.open()
self._clean()
self._write(self.Cmd.PING1)
self._write(self.Cmd.PING2)
info = self._read(4)
info = b'\x00'*4 if len(info) != 4 else info
ver = [info[0], info[1]]
ram = (info[2] << 8) | info[3]
if ver[0] != self.VERSION[0]: # Major version check
maj, min = self.VERSION
self.error(STR_SCF_ERROR_VERSION%(maj, min))
self.close()
return {'RAM':ram, 'VER':ver, 'DEBUG':False}
self._write(self.Cmd.INIT)
debug = self.__getStatus()
return {'RAM':ram, 'VER':ver, 'DEBUG':debug}
def getChipInfo(self):
self._clean()
data = self.__readBlock(0)
fw = Syscon.getSysconData(data, 'VERSION')
magic = Syscon.checkSysconData(data, ['MAGIC_1', 'MAGIC_2', 'MAGIC_3'])
debug = Syscon.getSysconData(data, 'DEBUG')
info = {
'FW' : 'v%x.%02x'%(int.from_bytes(fw[0:1], byteorder='big'), int.from_bytes(fw[2:3], byteorder='big')),
'Magic' : STR_OK if magic else STR_FAIL,
'Debug' : '%s [0x%02X]'%(STR_ON if debug == b'\x84' or debug == b'\x85' else STR_OFF, debug[0]),
}
return info
def disconnect(self):
self._clean()
self._write(self.Cmd.UNINIT)
return self.__getStatus()
def eraseChip(self, block = 0, count = 0):
block, count = self.__checkBC(block, count)
kb_pb = self.Config.BLOCK_SIZE // 1024
total = count * kb_pb
start = time.time()
self._clean()
for b in range(block, block+count):
"""
res = True
time.sleep(1)
"""
res = self.__eraseBlock(b)
if res == False:
self.error(STR_SPW_ERROR_ERASE)
return False
progress = (b - block + 1) * kb_pb
percent = 100 if progress == total else progress // (total / 100)
elapsed = UI.cyan(STR_SECONDS%(time.time() - start))
self.printf(STR_SPW_PROGRESS%(b, progress, total, percent, elapsed), True)
return True
def readChip(self, block = 0, count = 0):
block, count = self.__checkBC(block, count)
data = bytes()
kb_pb = self.Config.BLOCK_SIZE // 1024
total = count * kb_pb
start = time.time()
self._clean()
for b in range(block, block+count):
buf = self.__readBlock(b)
if buf == False:
return False
data += buf
progress = (b - block + 1) * kb_pb
percent = 100 if progress == total else progress // (total / 100)
elapsed = UI.cyan(STR_SECONDS%(time.time() - start))
self.printf(STR_SPW_PROGRESS%(b, progress, total, percent, elapsed), True)
return data
def writeChip(self, data, block = 0, count = 0, ex = False):
dsize = len(data)
block, count = self.__checkBC(block, count)
if dsize % self.Config.BLOCK_SIZE:
self.error(STR_SPW_ERR_BLOCK_ALIGN%self.Config.BLOCK_SIZE)
return False
if dsize != count * self.Config.BLOCK_SIZE:
self.error(STR_SPW_ERR_DATA_SIZE%(dsize, count * self.Config.BLOCK_SIZE))
return False
if block + count > self.Config.BLOCK_COUNT:
self.error(STR_SPW_ERR_OVERFLOW%self.Config.BLOCK_COUNT)
return False
kb_pb = self.Config.BLOCK_SIZE // 1024
total = count * kb_pb
start = time.time()
self._clean()
for b in range(block, block + count):
offset = self.Config.BLOCK_SIZE * (b - block)
res = self.__writeBlock(data[offset:offset + self.Config.BLOCK_SIZE], b, ex)
if res == False:
self.error(STR_SPW_ERROR_WRITE)
return False
"""
time.sleep(0.01)
"""
progress = (b - block + 1) * kb_pb
percent = 100 if progress == total else progress // (total / 100)
elapsed = UI.cyan(STR_SECONDS%(time.time() - start))
self.printf(STR_SPW_PROGRESS%(b, progress, total, percent, elapsed), True)
b += 1
return True
# Legacy syscon reader by DarkNESmonk
def sysconReader(sp, file):
if not sp.is_open:
sp.open()
if not sp.is_open:
print(UI.error(STR_PORT_CLOSED))
return
print(STR_WAITING+'\n')
time.sleep(2)
sp.write(b'\x00')
wait = True
start_time = time.time()
while wait:
resp = sp.read(1)
if resp == b'\xEE':
print('\n'+UI.warning(STR_CHIP_NOT_RESPOND))
if resp == b'\x00':
print(UI.cyan(' [GLITCH]'))
if resp == b'\x91':
print(UI.green(' [OCD CMD] connect'))
while True:
resp = sp.read(1)
if resp == b'\x94':
print(UI.green(' [OCD CMD] exec'))
wait = False
sp.read(1)
break
with open(file, 'wb') as f:
counter = 0
print()
while True:
data = sp.read(Syscon.BLOCK_SIZE)
counter += Syscon.BLOCK_SIZE
f.write(data)
print(UI.highlight(STR_PROGRESS_KB%(os.stat(file).st_size // 2**10, Syscon.DUMP_SIZE // 2**10))+'\r',end='')
sys.stdout.flush()
if counter >= Syscon.DUMP_SIZE:
sp.close()
break
return time.time() - start_time
================================================
FILE: utils/serial.py
================================================
#==========================================================
# serial lib
# part of ps4 wee tools project
#==========================================================
import serial, threading, sys, time
from lang._i18n_ import *
from serial.tools import list_ports
class WeeSerial:
patterns = {
'error' : Clr.fg.red,
'warn' : Clr.fg.orange,
'release' : Clr.fg.green,
'network' : Clr.fg.blue,
'samu' : Clr.fg.cyan,
'standby' : Clr.bg.purple,
'panic' : Clr.fg.l_red,
}
cfg = {
'baudrate' : 115200,
'bytesize' : 8,
'parity' : 'N',
'stopbits' : 1,
'xonxoff' : 0,
'rtscts' : 0,
'dsrdtr' : 0,
'timeout' : 300,
'write_timeout' : 120,
}
ENCODING = 'utf-8'
EOL = b'\n\r'
SHOWCODES = False
LOG = False
TX = 0
RX = 0
sp = False
alive = False
err = ''
def __init__(self, port, cfg = {}):
for k in self.cfg:
if k in cfg:
self.cfg[k] = cfg[k]
try:
self.sp = serial.Serial()
self.sp.apply_settings(self.cfg)
self.sp.port = port
self.sp.open()
self.sp.flushInput()
self.sp.flushOutput()
except Exception as e:
err = str(e)
self.error(str(e))
def __del__(self):
if self.sp and self.sp.is_open:
self.sp.close()
def error(self, msg):
self.printf(UI.error(' '+msg+'\n\n'))
def printf(self, str, erase = False):
print(('\r ' if erase else '') + str, end='')
sys.stdout.flush()
def getPortList():
ports = []
for port, desc, hwid in sorted(list_ports.comports()):
ports.append({'port':port, 'desc':desc, 'hwid':hwid})
return ports
def getPortInfo(self):
if self.err:
return self.err
return '%s %d %d %s %d (%s)'%(self.sp.port, self.sp.baudrate, self.sp.bytesize, self.sp.parity, self.sp.stopbits, 'open' if self.sp.is_open else 'closed')
def printline(self, line):
patterns = self.patterns
for k in patterns:
if k in line.lower():
line = patterns[k] + line + Clr.reset
break
self.printf(line)
def getLines(self, buf):
txt = ''
lines = []
prev_c = b''
for c in buf:
if c in self.EOL:
if prev_c in self.EOL and c != prev_c:
txt = ''
else:
lines.append(txt+'\n')
txt = ''
elif c >= 0x20:
txt += chr(c)
elif self.SHOWCODES:
txt += UI.highlight(':%02X')%(c)
prev_c = c
if len(txt):
lines.append(txt)
return lines
def monitor(self):
self.RX = 0
self.TX = 0
start = time.time()
while self.sp.is_open and self.alive:
try:
self.RX += self.sp.in_waiting
if self.sp.in_waiting > 0:
buf = self.sp.read(self.sp.in_waiting)
if self.LOG:
with open(self.LOG, 'ab') as log:
log.write(buf)
for line in self.getLines(buf):
self.printline(line)
time.sleep(0.1)
UI.setTitle(STR_MONITOR_STATUS%(self.RX, self.TX, time.time() - start))
except Exception as e:
self.err = str(e)
self.alive = False
break
UI.setTitle()
def startMonitor(self):
if not self.sp:
return -1
self.alive = True
threading.Thread(target=self.monitor, args=(), daemon=True).start()
def stopMonitor(self):
self.alive = False
def getSP(self, key = ''):
if not self.sp:
return -1
return self.sp[key] if key and key in self.sp else self.sp
def sendText(self, txt, EOL = b'\n\r'):
txt = (txt).encode(self.ENCODING,'ignore') + EOL
if self.LOG:
with open(self.LOG, 'ab') as log:
log.write(txt)
return self.send(txt)
def send(self, bytes):
try:
self.sp.write(bytes)
self.TX += len(bytes)
except Exception as e:
self.error(str(e))
def close(self):
if not self.sp is None:
self.sp.close()
# Protected
def _write(self, s):
try:
if isinstance(s, int):
s = s.to_bytes(1,'big')
elif isinstance(s,tuple) or isinstance(s,list):
s = bytes(s)
self.BUFFER += s
while len(self.BUFFER) > self.BUFFER_SIZE:
self.sp.write(self.BUFFER[:self.BUFFER_SIZE])
self.BUFFER = self.BUFFER[self.BUFFER_SIZE:]
except Exception as e:
self.error(str(e))
def _flush(self):
try:
if len(self.BUFFER):
self.sp.write(self.BUFFER)
self.sp.flush()
self.BUFFER = b''
except Exception as e:
self.error(str(e))
def _read(self, size):
self._flush()
try:
data = self.sp.read(size)
return data
except Exception as e:
self.error(str(e))
return b''
def _clean(self):
if not self.sp.is_open:
return False
self.sp.flushInput()
self.sp.flushOutput()
# Helpers
def testPatterns(self, path):
if os.path.isfile(path):
with open(path, 'r') as file:
lines = file.readlines()
for line in lines:
self.printline(line)
================================================
FILE: utils/sflash.py
================================================
#==========================================================
# NOR utils
# part of ps4 wee tools project
#==========================================================
import hashlib, os, math, sys, ctypes
from lang._i18n_ import *
import data.data as Data
import lang._i18n_ as Lang
import utils.utils as Utils
DUMP_SIZE = 0x2000000
BACKUP_OFFSET = 0x3000
MBR_SIZE = 0x1000
BLOCK_SIZE = 0x200
PS_REGIONS = {
'jp':{'n':'Japan', 'c':['00']},
'us':{'n':'US, Canada (North America)', 'c':['01','15']},
'au':{'n':'Australia / New Zealand (Oceania)', 'c':['02']},
'uk':{'n':'U.K. / Ireland', 'c':['03']},
'eu':{'n':'Europe / Middle East / Africa', 'c':['16','04']},
'kr':{'n':'Korea (South Korea)', 'c':['05']},
'sa':{'n':'Southeast Asia / Hong Kong', 'c':['06']},
'tw':{'n':'Taiwan', 'c':['07']},
'ru':{'n':'Russia, Ukraine, India, Central Asia', 'c':['08']},
'cn':{'n':'Mainland China', 'c':['09']},
'mx':{'n':'Mexico, Central America, South America', 'c':['11','14']},
'kr':{'n':'Singapore, Korea, Asia', 'c':['18']},
}
SWITCH_TYPES = [
'Off',
'Fat 10xx/11xx',
'Fat/Slim/PRO 12xx/2xxx/7xxx',
'General',
'Extra',
]
SWITCH_BLOBS = [
{'t':1, 'v':[0xFF]*8 + [0x00]*8},
{'t':1, 'v':[0x00]*8 + [0xFF]*8},
{'t':2, 'v':[0xFF]*16},
{'t':2, 'v':[0x00]*16},
{'t':3, 'v':[0xFF]*4 + [0x00]*12},
{'t':3, 'v':[0x00]*4 + [0xFF]*12},
{'t':3, 'v':[0xFF]*12 + [0x00]*4},
{'t':3, 'v':[0x00]*12 + [0xFF]*4},
{'t':4, 'v':[0xFF]*2 + [0x00]*14},
{'t':4, 'v':[0x00]*2 + [0xFF]*14},
{'t':4, 'v':[0xFF]*1 + [0x00]*15},
{'t':4, 'v':[0x00]*1 + [0xFF]*15},
{'t':4, 'v':[0xFF,0xF0] + [0x00]*14},
{'t':4, 'v':[0x00,0x0F] + [0xFF]*14},
]
BOOT_MODES = {b'\xFE':'Development', b'\xFB':'Assist', b'\xFF':'Release'}
# {'o':, 'l':, 't':, 'n':}
SFLASH_PARTITIONS = {
"s0_header" : {"o": 0x00000000, "l": 0x1000, "n":"s0_head"},
"s0_active_slot" : {"o": 0x00001000, "l": 0x1000, "n":"s0_act_slot"},
"s0_MBR1" : {"o": 0x00002000, "l": 0x1000, "n":"s0_mbr1"},
"s0_MBR2" : {"o": 0x00003000, "l": 0x1000, "n":"s0_mbr2"},
"s0_emc_ipl_a" : {"o": 0x00004000, "l": 0x60000, "n":"sflash0s0x32"},
"s0_emc_ipl_b" : {"o": 0x00064000, "l": 0x60000, "n":"sflash0s0x32b"},
"s0_eap_kbl" : {"o": 0x000C4000, "l": 0x80000, "n":"sflash0s0x33"},
"s0_wifi" : {"o": 0x00144000, "l": 0x80000, "n":"sflash0s0x38"},
"s0_nvs" : {"o": 0x001C4000, "l": 0xC000, "n":"sflash0s0x34"},
"s0_blank" : {"o": 0x001D0000, "l": 0x30000, "n":"sflash0s0x0"},
"s1_header" : {"o": 0x00200000, "l": 0x1000, "n":"s1_head.crypt"},
"s1_active_slot" : {"o": 0x00201000, "l": 0x1000, "n":"s1_act_slot.crypt"},
"s1_MBR1" : {"o": 0x00202000, "l": 0x1000, "n":"s1_mbr1.crypt"},
"s1_MBR2" : {"o": 0x00203000, "l": 0x1000, "n":"s1_mbr2.crypt"},
"s1_samu_ipl_a" : {"o": 0x00204000, "l": 0x3E000, "n":"sflash0s1.cryptx2"},
"s1_samu_ipl_b" : {"o": 0x00242000, "l": 0x3E000, "n":"sflash0s1.cryptx2b"},
"s1_idata" : {"o": 0x00280000, "l": 0x80000, "n":"sflash0s1.cryptx1"},
"s1_bd_hrl" : {"o": 0x00300000, "l": 0x80000, "n":"sflash0s1.cryptx39"},
"s1_VTRM" : {"o": 0x00380000, "l": 0x40000, "n":"sflash0s1.cryptx6"},
"s1_CoreOS_A" : {"o": 0x003C0000, "l": 0xCC0000, "n":"sflash0s1.cryptx3"},
"s1_CoreOS_B" : {"o": 0x01080000, "l": 0xCC0000, "n":"sflash0s1.cryptx3b"},
"s1_blank" : {"o": 0x01D40000, "l": 0x2C0000, "n":"sflash0s1.cryptx40"},
}
# 'KEY':{'o':, 'l':, 't':, 'n':}
SFLASH_AREAS = {
'ACT_SLOT' : {'o':0x001000, 'l':1, 't':'b', 'n':'Active slot'}, # 0x00 - A 0x80 - B
'BOARD_ID' : {'o':0x1C4000, 'l':8, 't':'b', 'n':'Board ID'}, # SAA-001, SAB-00, etc
'MAC' : {'o':0x1C4021, 'l':6, 't':'b', 'n':'MAC Address'},
'5G' : {'o':0x1C7018, 'l':1, 't':'b', 'n':'5G support'}, # 00 Not Supported, 01 Supported
'MB_SN' : {'o':0x1C8000, 'l':16, 't':'s', 'n':'Motherboard Serial'},
'SN' : {'o':0x1C8030, 'l':17, 't':'s', 'n':'Console Serial'},
'SKU' : {'o':0x1C8041, 'l':13, 't':'s', 'n':'SKU Version'},
'REGION' : {'o':0x1C8047, 'l':2, 't':'s', 'n':'Region code'},
'NVS1' : {'o':0x1C9000, 'l':0x1610, 't':'b', 'n':'1C9000 <-> 1CA610'},
'NVS2' : {'o':0x1CA000, 'l':0xFFF, 't':'b', 'n':'1CA000 <-> 1CAFFF'},
'BOOT_MODE' : {'o':0x1C9000, 'l':1, 't':'b', 'n':'Boot mode'}, # Development(FE), Assist(FB), Release(FF)
'MEM_BGM' : {'o':0x1C9003, 'l':1, 't':'b', 'n':'Memory budget mode'}, # Large(FE), Normal(FF)
'SLOW_HDD' : {'o':0x1C9005, 'l':1, 't':'b', 'n':'HDD slow mode'}, # On(FE), Off(FF)
'SAFE_BOOT' : {'o':0x1C9020, 'l':1, 't':'b', 'n':'Safe boot'}, # On(01), Off(00/FF)
'SMI' : {'o':0x1C9060, 'l':4, 't':'b', 'n':'SMI'},
'FW_MIN' : {'o':0x1C9062, 'l':2, 't':'b', 'n':'Minimal FW'},
'FW_VER' : {'o':0x1C906A, 'l':2, 't':'b', 'n':'FW in active slot'},
'SAMUBOOT' : {'o':0x1C9323, 'l':1, 't':'b', 'n':'SAMU enc'},
'HDD' : {'o':0x1C9C00, 'l':60, 't':'s', 'n':'HDD'},
'HDD_TYPE' : {'o':0x1C9C3C, 'l':4, 't':'s', 'n':'HDD type'},
'EAP_MGC' : {'o':0x1C91FC, 'l':4, 't':'b', 'n':b'\xE5\xE5\xE5\x01'}, # Eap key magic
'EAP_KEY' : {'o':0x1C9200, 'l':0x60, 't':'b', 'n':'Hdd eap key'}, # Length 0x40 / 0x60
'SYS_FLAGS' : {'o':0x1C9310, 'l':64, 't':'b', 'n':'System flags'}, # Clean FF*64
'MEMTEST' : {'o':0x1C9310, 'l':1, 't':'b', 'n':'Memory test'}, # On(01), Off(00/FF)
'RNG_KEY' : {'o':0x1C9312, 'l':1, 't':'b', 'n':'RNG/Keystorage test'}, # On(01), Off(00/FF)
'UART' : {'o':0x1C931F, 'l':1, 't':'b', 'n':'UART'}, # On(01), Off(00)
'MEMCLK' : {'o':0x1C9320, 'l':1, 't':'b', 'n':'GDDR5 Memory clock'},
'RESOLUTION': {'o':0x1CD048, 'l':1, 't':'b', 'n':'Resolution'}, # Reset(00), 1080i(01), 720p(02), 1080p(03), 4K(04), 4K HDR(05), Auto(13)
'RES_RESET' : {'o':0x1CD188, 'l':1, 't':'b', 'n':'Reset resolution'}, # On(01), Off(00)
'BTNSWAP' : {'o':0x1CA040, 'l':1, 't':'b', 'n':'Buttons swap'}, # X(01), O(00/FF)
'FW_C' : {'o':0x1CA5D8, 'l':1, 't':'b', 'n':'FW Counter'},
'FW_PC' : {'o':0x1CA5D9, 'l':1, 't':'b', 'n':'FW Patch Counter'},
'IDU' : {'o':0x1CA600, 'l':1, 't':'b', 'n':'IDU (Kiosk mode)'}, # On(01), Off(00/FF)
'UPD_MODE' : {'o':0x1CA601, 'l':1, 't':'b', 'n':'Update mode'}, # On(10), Off(00)
'UPD_VAR' : {'o':0x1CA602, 'l':1, 't':'b', 'n':'Update variant'}, # 0x30 hdd
'REG_REC' : {'o':0x1CA603, 'l':1, 't':'b', 'n':'Registry recovery'}, # On(01), Off(00)
'FW_V' : {'o':0x1CA606, 'l':2, 't':'s', 'n':'FW Version'},
'ARCADE' : {'o':0x1CA609, 'l':1, 't':'s', 'n':'Arcade mode'}, # On(01), Off(00/FF)
'MANU' : {'o':0x1CBC00, 'l':32, 't':'b', 'n':'MANU mode'}, # Enabled(0*32), Disabled(FF*32)
'CORE_SWCH' : {'o':0x201000, 'l':16, 't':'b', 'n':'Slot switch hack'},
}
SOUTHBRIDGES = [
{'code':[0x01, 0x02], 'name':'Aeolia A0', 'ic':'CXD90025'},
{'code':[0x0D, 0x0E], 'name':'Aeolia A1/A2','ic':'CXD90025'},
{'code':[0x20, 0x21], 'name':'Belize A0/B0','ic':'CXD90036'},
{'code':[0x24, 0x25], 'name':'Baikal B1', 'ic':'CXD90042'},
{'code':[0x2A, 0x2B], 'name':'Belize 2 A0', 'ic':'CXD90046'},
]
TORUS_VERS = [
{'code':0x03, 'v':'V1', 'name':'Marvell 88W8797', 'ic':['J20H071', 'SP88W8797']},
{'code':0x22, 'v':'V2', 'name':'Marvell 88W8897', 'ic':['AW-CB262', 'AW-NB218', 'DHSM-PS97', 'J20H091']},
{'code':0x30, 'v':'V3', 'name':'MediaTek MT7667BSN', 'ic':['AW-CB319', 'J20H096']},
]
MAGICS = {
"MBR" : {"o": 0x00, "v":b'SONY COMPUTER ENTERTAINMENT INC.'},
"MBR1" : {"o": 0x2000, "v":b'Sony Computer Entertainment Inc.'},
"MBR2" : {"o": 0x3000, "v":b'Sony Computer Entertainment Inc.'},
}
# MBR parser
class Partition(ctypes.Structure):
_pack_ = 1
_fields_ = [
("start_lba", ctypes.c_uint32),
("n_sectors", ctypes.c_uint32),
("type", ctypes.c_uint8), # part_id?
("flag", ctypes.c_uint8),
("unknown", ctypes.c_uint16),
("padding", ctypes.c_uint64)
]
def getName(self):
code = self.type
return PARTITIONS_TYPES[code] if code in PARTITIONS_TYPES else 'UNK_'+str(code)
def getOffset(self):
return self.start_lba * BLOCK_SIZE
def getSize(self):
return self.n_sectors * BLOCK_SIZE
class MBR_v1(ctypes.Structure):
_pack_ = 1
_fields_ = [
("magic", ctypes.c_uint8 * 0x20), # SONY COMPUTER ENTERTAINMENT INC.
("version", ctypes.c_uint32), # 1
("mbr1_start", ctypes.c_uint32), # ex: 0x10
("mbr2_start", ctypes.c_uint32), # ex: 0x18
("unk", ctypes.c_uint32 * 4), # ex: (1, 1, 8, 1)
("reserved", ctypes.c_uint32),
("unused", ctypes.c_uint8 * 0x1C0)
]
class MBR_v4(ctypes.Structure):
_pack_ = 1
_fields_ = [
("magic", ctypes.c_uint8 * 0x20), # Sony Computer Entertainment Inc.
("version", ctypes.c_uint32), # 4
("n_sectors", ctypes.c_uint32),
("reserved", ctypes.c_uint64),
("loader_start",ctypes.c_uint32), # ex: 0x11, 0x309
("loader_count",ctypes.c_uint32), # ex: 0x267
("reserved2", ctypes.c_uint64),
("partitions", Partition * 16)
]
PARTITIONS_TYPES = {
0:"empty",
1:"idstorage",
2:"sam_ipl",
3:"core_os",
6:"bd_hrl",
13:"emc_ipl",
14:"eap_kbl",
32:"emc_ipl",
33:"eap_kbl",
34:"nvs",
38:"wifi",
39:"vtrm",
40:"empty",
41:"C0050100",
}
# Functions ===============================================
def getConsoleRegion(file):
code = getNorData(file, 'REGION', True)
for k in PS_REGIONS:
if code in PS_REGIONS[k]['c']:
return [code, PS_REGIONS[k]['n']]
return [code, STR_UNKNOWN]
def getMemClock(file):
raw1 = getNorData(file,'MEMCLK')[0]
raw2 = getNorDataB(file,'MEMCLK')[0]
return [raw1, rawToClock(raw1), raw2, rawToClock(raw2)]
def rawToClock(raw):
if (0x10 <= raw <= 0x50):
return (raw - 0x10) * 25 + 400
return 0
def clockToRaw(frq):
return (frq - 400) // 25 + 0x10
def getSlotSwitchInfo(file):
pattern = list(getNorData(file,'CORE_SWCH'))
for i in range(0,len(SWITCH_BLOBS)):
if SWITCH_BLOBS[i]['v'] == pattern:
return SWITCH_TYPES[SWITCH_BLOBS[i]['t']]+' [#'+str(i+1)+']'
return SWITCH_TYPES[0]+' '+Utils.hex(bytes(pattern),'')
def getNorFW(f, active_slot = ''):
fw = getNorData(f, 'FW_VER')
if 0xFF in fw:
fw = getNorData(f, 'FW_V')
fw = '{:X}.{:02X}'.format(fw[1], fw[0])
"""
fw = getNorData(f, 'FW_VER')
o_fw = getNorData(f, 'FW_V')
fw = '{:X}.{:02X}'.format(fw[1], fw[0]) + ' {:X}.{:02X}'.format(o_fw[1], o_fw[0])
"""
mfw = getNorData(f, 'FW_MIN')
mfw = '{:X}.{:02X}'.format(mfw[1], mfw[0]) if mfw[0] != 0xFF else ''
bfw = ['']
if active_slot:
slot = 'a' if active_slot == 'b' else 'b'
pname = 's0_emc_ipl_'+slot
md5 = getNorPartitionMD5(f, pname)
data = getDataByPartition(pname)
if md5 in data:
fw2 = data[md5]['fw']
bfw = fw2 if len(fw2) == 1 else [fw2[0], fw2[-1]]
return {'c':fw, 'b':bfw, 'min':mfw}
def isFwInList(fw, fw_list):
try: fw_cur = int(fw.replace('.',''))
except: fw_cur = 0
fw_min = int(fw_list[0].replace('.',''))
fw_max = int(fw_list[-1].replace('.',''))
return fw_cur >= fw_min and fw_cur <= fw_max
def getFwFilename(item, folder):
try:
md5 = item['md5']
for file in os.listdir(folder):
path = os.path.join(folder, file)
if not os.path.isdir(path) and md5 in file:
return path
except Exception as e:
return ''
def getPartitionName(code):
return PARTITIONS_TYPES[code] if code in PARTITIONS_TYPES else 'Unk_'+str(code)
def getNorPartition(f, name):
if not name in SFLASH_PARTITIONS:
return ''
return Utils.getData(f, SFLASH_PARTITIONS[name]['o'], SFLASH_PARTITIONS[name]['l'])
def getNorPartitionMD5(f, name):
data = getNorPartition(f, name)
if len(data) > 0:
return hashlib.md5(data).hexdigest()
return ''
def getDataByPartition(name):
if not name:
return False
elif name.find('eap_kbl') >= 0:
return Data.EAP_KBL_MD5
elif name.find('emc_ipl') >= 0:
return Data.EMC_IPL_MD5
elif name.find('wifi') >= 0:
return Data.TORUS_FW_MD5
return False
def getDataByPartitionAndType(name, type, fw = False):
data = getDataByPartition(name)
items = []
if not data:
return items
for key in data:
if data[key]['t'] == type:
item = data[key]
item['md5'] = key
if fw and isFwInList(fw, item['fw']):
return item
items.append(item)
return {} if fw else items
def checkMagic(data, key):
if len(data) <= 0:
return False
if key in MAGICS:
offset = MAGICS[key]['o']
length = offset + len(MAGICS[key]['v'])
if data[offset:length] == MAGICS[key]['v']:
return True
return False
def getPartitionsInfo(f):
# f - file in rb/r+b mode
f.seek(MBR_SIZE)
# active slot at 0x1000
active = f.read(1)
base = MBR_SIZE*2 if active == 0x00 else MBR_SIZE*3
f.seek(base)
mbr = MBR_v4()
f.readinto(mbr)
partitions = []
for i in range(len(mbr.partitions)):
p = mbr.partitions[i]
if p.getSize() == 0:
continue
partitions.append({
'name' : p.getName(),
'offset' : p.getOffset() + base,
'size' : p.getSize(),
'type' : p.type,
})
return {'slot':active, 'base':base, 'parts':partitions}
def getTorusInfo(f):
torus_md5 = getPartitionMD5(f, 's0_wifi')
supports_5g = int.from_bytes(getNorData(f, '5G'), 'big')
torus = Data.TORUS_FW_MD5[torus_md5]['t'] if torus_md5 in Data.TORUS_FW_MD5 else 0
for item in TORUS_VERS:
if torus == item['code']:
data = item
data['s5g'] = supports_5g
return data
return {'code':torus, 'v':'?', 'name':STR_UNKNOWN, 's5g':supports_5g}
def getSouthBridge(f):
slot = getActiveSlot(f)
md5_emc_a = getNorPartitionMD5(f, 's0_emc_ipl_a')
md5_emc_b = getNorPartitionMD5(f, 's0_emc_ipl_b')
md5_eap = getNorPartitionMD5(f, 's0_eap_kbl')
emc_a = Data.EMC_IPL_MD5[md5_emc_a]['t'] if md5_emc_a in Data.EMC_IPL_MD5 else 0
emc_b = Data.EMC_IPL_MD5[md5_emc_b]['t'] if md5_emc_b in Data.EMC_IPL_MD5 else 0
eap = Data.EAP_KBL_MD5[md5_eap]['t'] if md5_eap in Data.EAP_KBL_MD5 else 0
# check EAP first
for k in range(len(SOUTHBRIDGES)):
code = SOUTHBRIDGES[k]['code']
if code[1] == eap: return SOUTHBRIDGES[k]
# check emc (active slot)
for k in range(len(SOUTHBRIDGES)):
code = SOUTHBRIDGES[k]['code']
if code[0] == (emc_a if slot == 'a' else emc_b): return SOUTHBRIDGES[k]
# check emc (inactive slot) last chance
for k in range(len(SOUTHBRIDGES)):
code = SOUTHBRIDGES[k]['code']
if code[0] == (emc_b if slot == 'a' else emc_a): return SOUTHBRIDGES[k]
# unknown SB
return {'code':[emc_a if emc_a else emc_b, eap], 'name':STR_UNKNOWN, 'ic':'XX'}
# NOR Areas data utils
def getNorAreaName(key):
if key in SFLASH_AREAS:
return SFLASH_AREAS[key]['n']
return STR_UNKNOWN
def setNorData(file, key, val):
if not key in SFLASH_AREAS:
return False
return Utils.setData(file, SFLASH_AREAS[key]['o'], val)
def setNorDataB(file, key, val):
if not key in SFLASH_AREAS:
return False
return Utils.setData(file, SFLASH_AREAS[key]['o'] + BACKUP_OFFSET, val)
def getNorData(file, key, decode = False):
if not key in SFLASH_AREAS:
return 'False' if decode else False
data = Utils.getData(file, SFLASH_AREAS[key]['o'], SFLASH_AREAS[key]['l'])
return data.decode('utf-8','ignore').strip('\x00') if decode else data
def getNorDataB(file, key, decode = False):
if not key in SFLASH_AREAS:
return 'False' if decode else False
data = Utils.getData(file, SFLASH_AREAS[key]['o'] + BACKUP_OFFSET, SFLASH_AREAS[key]['l'])
return data.decode('utf-8','ignore').strip('\x00') if decode else data
def getModel(f):
try:
model = int(getNorData(f, 'SKU', True)[4:6])
except:
model = 0
return model
def getMobo(board):
#mb_codes = 0x1c4000
codes = { 2: 'CV', 3: 'SA', 4: 'HA', 5: 'NV', }
prefix = codes[board[0]] if board[0] in codes else '??'
#mb_suffix = 0x1c4002 - All prefix 'CV' is 'N', all 'HA' is 'C', 'NV' is 'A','B' and 'G' no exist 'C'
suffix = '?'
if prefix == 'CV' and board[2] == 1: suffix = 'N'
if prefix == 'HA' and board[2] == 1: suffix = 'C'
if prefix == 'NV' and board[2] == 3: suffix = 'G'
if prefix == 'SA' or (prefix == 'NV' and board[2] <= 2):
suffix = chr(ord('A')-1+board[2])
#mb_rev = Revision of board - ??? No exist SAA, SAB, SAC and HAC > 001, all are 001 - if board[0] <= 'HA' and board[2] <= 'C' Revision is 001
rev = '001' if board[0] <= 4 and board[2] <= 3 else '00X'
return {'name':prefix + suffix + '-' + rev, 'type':'Retail' if board[1] == 2 else 'Non-Retail'}
def getInfoForLegitSwitch(f):
data = {
'sn':getNorData(f, 'SN', True),
'fw':getNorFW(f)['c'],
'slot':getNorData(f, 'ACT_SLOT'),
'switch':getNorData(f, 'CORE_SWCH'),
}
return data
def getActiveSlot(f):
return 'a' if getNorData(f, 'ACT_SLOT')[0] == 0x00 else 'b'
def checkNVS(data, key = 'NVS1'):
return STR_OK if not all(b == 0xFF or b == 0x00 for b in data) else STR_FAIL
def getOffsetRange(k, backup = False):
extra = BACKUP_OFFSET if backup else 0
return '%X~%X'%(SFLASH_AREAS[k]['o'] + extra, SFLASH_AREAS[k]['o'] + SFLASH_AREAS[k]['l'] + extra)
def getPartition(f, name):
if not name in SFLASH_PARTITIONS:
return ''
return Utils.getData(f, SFLASH_PARTITIONS[name]['o'], SFLASH_PARTITIONS[name]['l'])
def getPartitionMD5(f, name):
data = getPartition(f, name)
if len(data) > 0:
return hashlib.md5(data).hexdigest()
return ''
def getFWInfo(f, active_slot = ''):
fw = getNorData(f, 'FW_VER')
if b'\xFF' in fw:
fw = getNorData(f, 'FW_V')
# EAP holds current FW
if type(fw) == bytes and b'\xFF' in fw:
md5_eap = getPartitionMD5(f, 's0_eap_kbl')
fw_info = Data.EAP_KBL_MD5
if md5_eap in fw_info:
fws = fw_info[md5_eap]['fw']
fw = ' <-> '.join(fws if len(fws) == 1 else [fws[0], fws[-1]])
if type(fw) == bytes and b'\xFF' in fw:
md5_emc = getPartitionMD5(f, 's0_emc_ipl_' + active_slot)
fw_info = Data.EMC_IPL_MD5
if md5_emc in fw_info:
fws = fw_info[md5_emc]['fw']
fw = ' <-> '.join(fws if len(fws) == 1 else [fws[0], fws[-1]])
if type(fw) == bytes:
fw = '{:X}.{:02X}'.format(fw[1], fw[0])
"""
fw = getNorData(f, 'FW_VER')
o_fw = getNorData(f, 'FW_V')
fw = '{:X}.{:02X}'.format(fw[1], fw[0]) + ' {:X}.{:02X}'.format(o_fw[1], o_fw[0])
"""
mfw = getNorData(f, 'FW_MIN')
mfw = '{:X}.{:02X}'.format(mfw[1], mfw[0]) if mfw[0] != 0xFF else ''
bfw = ['']
if active_slot:
pname = 's0_emc_ipl_' + ('a' if active_slot == 'b' else 'b')
md5 = getPartitionMD5(f, pname)
fw_info_data = getDataByPartition(pname)
if md5 in fw_info_data:
fw2 = fw_info_data[md5]['fw']
bfw = fw2 if len(fw2) == 1 else [fw2[0], fw2[-1]]
return {'c':fw, 'b':bfw, 'min':mfw}
def getSFlashInfo(file = '-'):
with open(file, 'rb') as f:
active_slot = getActiveSlot(f)
sku = getNorData(f, 'SKU', True)
fw = getNorFW(f, active_slot)
SB = getSouthBridge(f)
torus = getTorusInfo(f)
samu = getNorData(f, 'SAMUBOOT')[0]
region = getConsoleRegion(f)
board = getNorData(f, 'BOARD_ID')
mobo = getMobo(board)
try:
hdd = (' / ').join(Utils.swapBytes(getNorData(f, 'HDD')).decode('utf-8').split())
except:
hdd = STR_NO_INFO
info = {
'FILE' : os.path.basename(file),
'MD5' : Utils.getFileMD5(file),
'SKU / Board ID': sku + ' [' + UI.highlight(Utils.hex(board, ':')) + '] ~' + mobo['name'],
'Region' : '[%s] %s / [%s]'%(region[0], region[1], mobo['type']),
'SN / Mobo SN' : getNorData(f, 'SN', True)+' / '+getNorData(f, 'MB_SN', True),
'Southbridge' : '%s [%s] [%02X:%02X]'%(SB['name'], SB['ic'], SB['code'][0], SB['code'][1]),
'Torus (WiFi)' : '%s [0x%02X]'%(torus['name'],torus['code']),
'MAC' : Utils.hex(getNorData(f, 'MAC'),':'),
'HDD' : hdd,
'FW (active)' : fw['c'] + ' ['+active_slot.upper()+']' + (' [min '+fw['min']+']' if fw['min'] else ''),
'FW (backup)' : ' <-> '.join(fw['b']),
'GDDR5' : ('0x{:02X} {:d}MHz | 0x{:02X} {:d}MHz').format(*getMemClock(f)),
'SAMU BOOT' : ('%d [0x%02X]')%(samu, samu),
'UART' : (Lang.STR_ON if getNorData(f, 'UART')[0] == 1 else Lang.STR_OFF),
'Slot switch' : getSlotSwitchInfo(f),
}
return info
def getCanonicalName(fpath):
with open(fpath, 'rb') as f:
sku = getNorData(f, 'SKU', True)[:9].replace('-','')
sn = getNorData(f, 'SN', True)
sn = sn if sn else '0'*10
sb = getSouthBridge(f)['ic'][-2:]
mobo = getMobo(getNorData(f, 'BOARD_ID'))['name']
slot = 'a' if getNorData(f, 'ACT_SLOT') == b'\x00' else 'b'
fw = getNorFW(f, slot)
fws = '-'.join(fw['b'])
return '_'.join([sku, sn, sb, mobo, fw['c'], slot, fws]).upper()
================================================
FILE: utils/slb2.py
================================================
#==========================================================
# 2BLS utils
# part of ps4 wee tools project
#==========================================================
import os, ctypes
SLB2_HEADER = b'SLB2'
SLB2_BLOCK_SIZE = 0x200
class SLB2Header(ctypes.Structure):
_pack_ = 1
_fields_ = [
("magic", ctypes.c_char * 4), # "SLB2"
("version", ctypes.c_uint32), # ex: 1
("flags", ctypes.c_uint32), # ex: 0
("entries", ctypes.c_uint32),
("blocks", ctypes.c_uint32),
("reserved", ctypes.c_uint32 * 3), # padding for alignment
]
class SLB2Entry(ctypes.Structure):
_pack_ = 1
_fields_ = [
("start", ctypes.c_uint32),
("size", ctypes.c_uint32),
("reserved", ctypes.c_uint8 * 8), # padding for alignment
("name", ctypes.c_char * 32)
]
def align(size, block):
return size + (0 if size % block == 0 else block - (size % block))
def getGet2BLSInfo(data):
e = {}
h = {}
header = SLB2Header.from_buffer_copy(data)
h['magic'] = header.magic.decode('utf-8')
h['version'] = header.version
h['entries'] = header.entries
h['blocks'] = header.blocks
h['data'] = len(data)
h['size'] = header.blocks * SLB2_BLOCK_SIZE
for i in range(header.entries):
offset = ctypes.sizeof(SLB2Header) + ctypes.sizeof(SLB2Entry) * i
entry = SLB2Entry.from_buffer_copy(data[offset:offset + ctypes.sizeof(SLB2Entry)])
e[i] = {
'name': entry.name.decode('utf-8'),
'start': entry.start,
'offset': entry.start * SLB2_BLOCK_SIZE,
'size': entry.size,
}
return {'header':h, 'entries':e}
def build2BLS(files):
if len(files) == 0:
return -1
data = b''
entries = b''
hsize = ctypes.sizeof(SLB2Header) + ctypes.sizeof(SLB2Entry) * len(files)
h_size = align(hsize, SLB2_BLOCK_SIZE)
h_blocks = h_size // SLB2_BLOCK_SIZE
last_block = h_blocks
for i in range(len(files)):
fname = os.path.basename(files[i])
fsize = os.path.getsize(files[i])
f_size = align(fsize,SLB2_BLOCK_SIZE)
f_blocks = f_size // SLB2_BLOCK_SIZE
f_padding = f_size - fsize
entry = SLB2Entry(start=last_block, size=fsize, name=bytes(fname, 'ascii'))
entries += bytes(entry)
last_block += f_blocks
with open(files[i],'rb') as f:
data += f.read()
if f_padding > 0:
data += b'\x00'*f_padding
e_padding = h_size - (ctypes.sizeof(SLB2Header) + len(entries))
if e_padding > 0:
entries += b'\x00'*e_padding
header = SLB2Header()
header.magic = SLB2_HEADER
header.version = 1
header.flags = 0
header.entries = len(files)
header.blocks = last_block
return bytes(header) + entries + data
================================================
FILE: utils/spiway.py
================================================
#==========================================================
# SPIWAY (original idea by Judges)
# https://github.com/hjudges/NORway
# part of ps4 wee tools project
# https://github.com/andy-man/ps4-wee-tools
#==========================================================
import time
from lang._i18n_ import *
from utils.serial import WeeSerial
class SpiFlasher(WeeSerial):
VERSION = [0,60] # Teensy programm HW version here
DISABLE_PULLUPS = 0
BUFFER = b''
BUFFER_SIZE = 0x8000
ICs = [
#Ven_ID Dev_ID Brand Type Blocks Addr_length 3B_cmd Sec_per_block Sec_count
[0xC2, 0x1920, 'Macronix', 'MX25L25635F', 512, 4, 0],
[0xC2, 0x1820, 'Macronix', 'MX25L12872F', 256, 3, 0],
[0xC2, 0x1120, 'Macronix', 'MX25L1006E', 2, 3, 0],
[0xEF, 0x10, 'Winbond', 'W25X10CL', 2, 3, 0],
[0xEF, 0x13, 'Winbond', 'W25Q80BV', 16, 3, 0],
[0xEF, 0x1940, 'Winbond', 'W25Q256FV', 512, 4, 1],
[0xEF, 0x1570, 'Winbond', '25Q16JVXXM', 32, 3, 0],
[0xEF, 0x1540, 'Winbond', '25Q16JVXXQ', 32, 3, 0],
[0xEF, 0x60, 'Winbond', 'W25Q128JW', 256, 3, 0],
[0x01, 0x1960, 'Spansion', 'S25FL256L', 512, 4, 0],
]
# Main config
class Config:
IC_ID = 0
VENDOR_ID = 0
DEVICE_ID = 0
BRAND = STR_UNKNOWN
TYPE = STR_UNKNOWN
BLOCK_COUNT = 0
ADDR_LEN = 0
USE_3B_CMD = 0
SEC_PER_BLOCK = 0
SEC_SIZE = 0
BLOCK_SIZE = 0
SEC_COUNT = 0
TOTAL_SIZE = 0
@classmethod
def reset(cls):
cls.load([0]*12, -1)
@classmethod
def load(cls, cfg, id = 0):
cls.IC_ID = id + 1
cls.VENDOR_ID = cfg[0]
cls.DEVICE_ID = cfg[1]
cls.BRAND = cfg[2]
cls.TYPE = cfg[3]
cls.BLOCK_COUNT = cfg[4]
cls.ADDR_LEN = cfg[5]
cls.USE_3B_CMD = cfg[6] if len(cfg) > 6 else 0
cls.SEC_PER_BLOCK = cfg[7] if len(cfg) > 7 else 16
cls.SEC_SIZE = cfg[8] if len(cfg) > 8 else 0x1000
cls.BLOCK_SIZE = cls.SEC_PER_BLOCK * cls.SEC_SIZE
cls.SEC_COUNT = cls.SEC_PER_BLOCK * cls.BLOCK_COUNT
cls.TOTAL_SIZE = cls.BLOCK_SIZE * cls.BLOCK_COUNT
# Teensy commands
class Cmd:
PING1 = 0 # Params: - / Return: VERSION_MAJOR[1]
PING2 = 1 # Params: - / Return: VERSION_MINOR[1] + Freemem[2]
BOOTLOADER = 2 # Params: - / Return: - / Exit to bootloader mode
IO_LOCK = 3 # - not implemented - in spiway fw
IO_RELEASE = 4 # - not implemented - in spiway fw
PULLUPS_DISABLE = 5 # Params: - / Return: - / Set IO_PULLUPS to 0x00
PULLUPS_ENABLE = 6 # Params: - / Return: - / Set IO_PULLUPS to 0xFF
SPI_ID = 7 # Params: - / Return: VENDOR_ID[1] + DEVICE_ID[2]
SPI_READBLOCK = 8 # Params: ADDRESS[4] / Return: STATUS[1] + DATA[BLOCK_SIZE]
SPI_WRITESECTOR = 9 # Params: ADDRESS[4] + DATA[SEC_SIZE] / Return: STATUS[1]
SPI_ERASEBLOCK = 10 # Params: ADDRESS[4] / Return: STATUS[1]
SPI_ERASECHIP = 11 # Params: - / Return: STATUS[1]
SPI_3BYTE_ADDRESS = 12 # Params: - / Return: - / Set mode: SPI_ADDRESS_LENGTH = 3
SPI_4BYTE_ADDRESS = 13 # Params: - / Return: - / Set mode: SPI_ADDRESS_LENGTH = 4
SPI_3BYTE_CMDS = 14 # Params: - / Return: - / Set mode: SPI_USE_3B_CMDS = 1
SPI_4BYTE_CMDS = 15 # Params: - / Return: - / Set mode: SPI_USE_3B_CMDS = 0
# There is no RESET command. The only way to do it unplug teensy from USB
def __init__(self, port, ver = False):
if port:
super().__init__(port, {'baudrate':9600, 'timeout':300, 'write_timeout':120})
self.BUFFER = b''
self.DISABLE_PULLUPS = 0
if ver != False:
self.VERSION = ver
# Main stuff
def __setConfig(self, ven_id = False, dev_id = False):
self.Config.reset()
if ven_id == False and dev_id == False:
return False
for id in range(len(self.ICs)):
cfg = self.ICs[id]
if cfg[0] == ven_id and cfg[1] == dev_id:
self.Config.load(cfg, id)
return id
self.Config.VENDOR_ID = ven_id
self.Config.DEVICE_ID = dev_id
self.error(STR_SPW_ERROR_CHIP)
return False
def __setAddress(self, address):
# set address (msb first)
self._write((address >> 24) & 0xFF)
self._write((address >> 16) & 0xFF)
self._write((address >> 8) & 0xFF)
self._write(address & 0xFF)
def __setMode(self):
self._write(self.Cmd.SPI_3BYTE_ADDRESS if self.Config.ADDR_LEN == 3 else self.Cmd.SPI_4BYTE_ADDRESS)
self._write(self.Cmd.SPI_3BYTE_CMDS if self.Config.USE_3B_CMD == 1 else self.Cmd.SPI_4BYTE_CMDS)
def __getStatusByCode(self, code):
if code == b'K':
return STR_OK
if code == b'T':
return STR_SPW_ERROR_WRITE
if code == b'R':
return STR_SPW_ERROR_READ
if code == b'V':
return STR_SPW_ERROR_VERIFY
if code == b'P':
return STR_SPW_ERROR_PROTECTED
if code == b'U':
return STR_SPW_ERROR_UNKNOWN
return STR_SPW_ERROR_UNK_STATUS + ' [0x{:02X}]'.format(code[0])
def __getStatus(self):
# read status byte
res = self._read(1)
if (res != b'K'): # K = ok
self.error('\n '+self.__getStatusByCode(res))
self.close()
return False
return True
def __eraseBlock(self, block):
self.__setMode()
self._write(self.Cmd.SPI_ERASEBLOCK)
self.__setAddress(block * self.Config.BLOCK_SIZE)
if self.__getStatus() == False:
self.error(STR_SPW_ERROR_ERASE_BLK%block)
return False
return True
def __readBlock(self, block):
self.__setMode()
self._write(self.Cmd.SPI_READBLOCK)
self.__setAddress(block * self.Config.BLOCK_SIZE)
if self.__getStatus() == False:
return False
data = self._read(self.Config.BLOCK_SIZE)
return data
def __writeSector(self, data, sector):
if len(data) != self.Config.SEC_SIZE:
self.error(STR_SPW_ERROR_DATA_SIZE%(len(data)))
self.__setMode()
self._write(self.Cmd.SPI_WRITESECTOR)
self.__setAddress(sector * self.Config.SEC_SIZE)
self._write(data)
return self.__getStatus()
def __writeBlock(self, data, block, verify):
dsize = len(data)
if dsize != self.Config.BLOCK_SIZE:
self.error(STR_SPW_ERROR_LENGTH%(dsize, self.Config.BLOCK_SIZE))
return False
sector = 0
while sector < self.Config.SEC_PER_BLOCK:
real_sector = (block * self.Config.SEC_PER_BLOCK) + sector
# At first erase block
if sector == 0:
self.__eraseBlock(block)
res = 1
self.__writeSector(data[sector*self.Config.SEC_SIZE:(sector+1)*self.Config.SEC_SIZE], real_sector)
if res == False:
return False
sector += 1
# verification
if verify == 1:
res = self.__readBlock(block)
if res == False or data != res:
self.error(STR_SPW_ERROR_BLK_CHK%block)
return -1
return True
def __checkBC(self, block, count):
if block >= self.Config.BLOCK_COUNT:
block = self.Config.BLOCK_COUNT - 1
if count == 0 or (block + count) > self.Config.BLOCK_COUNT:
count = self.Config.BLOCK_COUNT - block
return [block, count]
# Public methods
def bootloader(self):
self._write(self.Cmd.BOOTLOADER)
self._flush()
def reset(self):
# TODO: Find a way to reset, there is no cmd for reset in Teensy FW
self._flush()
self.BUFFER = b''
def ping(self):
self._write(self.Cmd.PING1)
self._write(self.Cmd.PING2)
info = self._read(4)
info = b'\x00'*4 if len(info) != 4 else info
ver = [info[0], info[1]]
ram = (info[2] << 8) | info[3]
if ver != self.VERSION:
maj, min = self.VERSION
self.error(STR_SPW_ERROR_VERSION%(maj, min))
self.close()
return {'RAM':ram, 'VER':ver}
def getChipId(self):
self._write(self.Cmd.PULLUPS_DISABLE if self.DISABLE_PULLUPS else self.Cmd.PULLUPS_ENABLE)
self._write(self.Cmd.SPI_ID)
info = self._read(3)
info = b'\x00'*3 if len(info) != 3 else info
ven_id = info[0]
dev_id = (info[2] << 8) | info[1]
self.__setConfig(ven_id, dev_id)
def getChipInfo(self):
self.getChipId()
cfg = self.Config
info = {
'Vendor / Device' : '0x%02X / 0x%04X'%(cfg.VENDOR_ID, cfg.DEVICE_ID),
'Brand' : cfg.BRAND,
'Chip type' : cfg.TYPE,
'Chip size' : '%d MB'%(cfg.TOTAL_SIZE // 1024**2),
'Sector size' : '%d bytes'%cfg.SEC_SIZE,
'Block size' : '%d bytes'%cfg.BLOCK_SIZE,
'Flash config' : '%d:%d | %d | %d | %d'%(cfg.ADDR_LEN, cfg.USE_3B_CMD, cfg.SEC_PER_BLOCK, cfg.BLOCK_COUNT, cfg.SEC_COUNT),
}
return info
def eraseChip(self, block = 0, count = 0):
# Check if chip config is known
if self.Config.IC_ID <= 0: return False
block, count = self.__checkBC(block, count)
# Doesn't allow to handle progress
#self._write(self.Cmd.SPI_ERASECHIP)
kb_pb = self.Config.BLOCK_SIZE // 1024
total = count * kb_pb
start = time.time()
for b in range(block, block+count):
res = self.__eraseBlock(b)
if res == False:
self.error(STR_SPW_ERROR_ERASE)
return False
progress = (b - block + 1) * kb_pb
percent = 100 if progress == total else progress // (total / 100)
elapsed = UI.cyan(STR_SECONDS%(time.time() - start))
self.printf(STR_SPW_PROGRESS%(b, progress, total, percent, elapsed), True)
return True
def readChip(self, block = 0, count = 0):
# Check if chip config is known
if self.Config.IC_ID <= 0: return False
block, count = self.__checkBC(block, count)
data = bytes()
kb_pb = self.Config.BLOCK_SIZE // 1024
total = count * kb_pb
start = time.time()
for b in range(block, block+count):
buf = self.__readBlock(b)
if buf == False:
return False
data += buf
progress = (b - block + 1) * kb_pb
percent = 100 if progress == total else progress // (total / 100)
elapsed = UI.cyan(STR_SECONDS%(time.time() - start))
self.printf(STR_SPW_PROGRESS%(b, progress, total, percent, elapsed), True)
return data
def writeChip(self, data, verify = 0, block = 0, count = 0):
# Check if chip config is known
if self.Config.IC_ID <= 0: return False
dsize = len(data)
block, count = self.__checkBC(block, count)
if dsize % self.Config.BLOCK_SIZE:
self.error(STR_SPW_ERR_BLOCK_ALIGN%self.Config.BLOCK_SIZE)
return False
if dsize != count * self.Config.BLOCK_SIZE:
self.error(STR_SPW_ERR_DATA_SIZE%(dsize, count * self.Config.BLOCK_SIZE))
return False
if block + count > self.Config.BLOCK_COUNT:
self.error(STR_SPW_ERR_OVERFLOW%self.Config.BLOCK_COUNT)
return False
kb_pb = self.Config.BLOCK_SIZE // 1024
total = count * kb_pb
start = time.time()
for b in range(block, block + count):
offset = self.Config.BLOCK_SIZE * (b - block)
res = self.__writeBlock(data[offset:offset + self.Config.BLOCK_SIZE], b, verify)
if res == False:
self.error(STR_SPW_ERROR_WRITE)
return False
"""
time.sleep(0.01)
"""
progress = (b - block + 1) * kb_pb
percent = 100 if progress == total else progress // (total / 100)
elapsed = UI.cyan(STR_SECONDS%(time.time() - start))
self.printf(STR_SPW_PROGRESS%(b, progress, total, percent, elapsed), True)
b += 1
return True
================================================
FILE: utils/syscon.py
================================================
#==========================================================
# Syscon utils
# part of ps4 wee tools project
# https://github.com/andy-man/ps4-wee-tools
#==========================================================
from utils.utils import *
import lang._i18n_ as Lang
BLOCK_SIZE = 0x400
BLOCK_COUNT = 512
DUMP_SIZE = BLOCK_SIZE * BLOCK_COUNT
MD5_SC_FW = {
'125cd5cc2d854e5f2812f060a7031044':'1.00_0',
'baea46d4d5bf6d9b00b51bda40db0f48':'1.0b_0',
'6741017a1499384dd7b07dc6def28d1e':'2.06_1',
'fa4dddb3f17315ecc028bf725b7702b1':'2.06_2',
'1c70248c249f0ac4f0c5555499afa6ef':'2.13_1',
'45ebe778279ca58b6bf200ff1bd2cb9e':'2.13_2',
'581d42d6a6c83992521420a23f02427c':'2.13_3',
"D72B5263F90BF0A196764F8C8572C952":"2.13_4",
"D89B1256E2A3B2D4C3044BFB5F44E8A5":"2.13_5",
'39a1bdd270d0dc2bdce8d81e7525af41':'2.23_1',
'a7d36425e5881770b2e9c4f925ced39f':'2.23_2',
'c42c250bbb7b30acd2f3960cfad9c8e3':'2.23_3',
'f7e0a6157fa9c04944b927051b5d4196':'2.23_4',
'263bd07f5b80f64aca8a107fee27ee08':'2.26_0',
}
SC_AREAS = {
'MAGIC_1': {'o':0x00000, 'l':2, 't':'b', 'n':b'\x80\x01'},
'MAGIC_2': {'o':0x000C4, 'l':10, 't':'s', 'n':b':Not:Used:'},
'MAGIC_3': {'o':0x00132, 'l':14, 't':'s', 'n':b' Sony Computer'},
'FW': {'o':0x00000, 'l':0x60000,'t':'b', 'n':'Syscon FW'},
'DEBUG': {'o':0x000C3, 'l':1, 't':'b', 'n':'Debug flag 0x04=off 0x85/0x84=on'},
'VERSION': {'o':0x00100, 'l':4, 't':'b', 'n':'FW version'},
'SNVS': {'o':0x60000, 'l':0xE000, 't':'b', 'n':'SNVS storage'},
'NVS': {'o':0x6E000, 'l':0x2000, 't':'b', 'n':'NVS storage'},
}
SC_E_TYPE = {
'MODE0' : 0x00,
'MODE1' : 0x01,
'MODE2' : 0x02,
'MODE3' : 0x03,
'BOOT0' : 0x04,
'BOOT1' : 0x05,
'BOOT2' : 0x06,
'BOOT3' : 0x07,
'FW_A' : 0x08,
'FW_B' : 0x09,
'LIC1' : 0x0A,
'LIC2' : 0x0B,
'PRE0C' : 0x0C,
'PRE0D' : 0x0D,
'PRE0E' : 0x0E,
'PRE0F' : 0x0F,
'PRE20' : 0x20,
'PRE21' : 0x21,
'PRE22' : 0x22,
'PRE23' : 0x23,
'SYS24' : 0x24,
'SYS25' : 0x25,
'SYS26' : 0x26,
'SYS27' : 0x27,
'SYS28' : 0x28,
'SYS29' : 0x29,
'SYS2A' : 0x2A,
'SYS2B' : 0x2B,
}
SC_TYPES_BOOT = [SC_E_TYPE['BOOT0'], SC_E_TYPE['BOOT1'], SC_E_TYPE['BOOT2'], SC_E_TYPE['BOOT3']]
SC_TYPES_MODES = [SC_E_TYPE['MODE0'], SC_E_TYPE['MODE1'], SC_E_TYPE['MODE2'], SC_E_TYPE['MODE3']]
SC_TYPES_UPD = [SC_E_TYPE['FW_A'], SC_E_TYPE['FW_B'], SC_E_TYPE['LIC1'], SC_E_TYPE['LIC2']]
SC_TYPES_PRE0 = [SC_E_TYPE['PRE0C'], SC_E_TYPE['PRE0D'], SC_E_TYPE['PRE0E'], SC_E_TYPE['PRE0F']]
SC_TYPES_PRE2 = [SC_E_TYPE['PRE20'], SC_E_TYPE['PRE21'], SC_E_TYPE['PRE22'], SC_E_TYPE['PRE23']]
SC_TYPES_SYS0 = [SC_E_TYPE['SYS24'], SC_E_TYPE['SYS25'], SC_E_TYPE['SYS26'], SC_E_TYPE['SYS27']]
SC_TYPES_SYS2 = [SC_E_TYPE['SYS28'], SC_E_TYPE['SYS29'], SC_E_TYPE['SYS2A'], SC_E_TYPE['SYS2B']]
# Functions ===============================================
def setSysconData(file, key, val):
if not key in SC_AREAS:
return False
return setData(file, SC_AREAS[key]['o'], val)
def getSysconData(fod, key):
if not key in SC_AREAS:
return False
if isinstance(fod, bytes):
return getMemData(fod, SC_AREAS[key]['o'], SC_AREAS[key]['l'])
else:
return getData(fod, SC_AREAS[key]['o'], SC_AREAS[key]['l'])
def checkSysconData(fod, keys):
for key in keys:
if getSysconData(fod, key) != SC_AREAS[key]['n']:
return False
return True
def checkSysconFW(file):
fw = bytearray(getSysconData(file, 'FW'))
# All hashes was calculated for non-debug syscon (0x04)
fw[SC_AREAS['DEBUG']['o']] = 0x04
md5 = hashlib.md5(fw).hexdigest()
if md5 in MD5_SC_FW:
return {'md5':md5, 'fw':MD5_SC_FW[md5]}
else:
return {'md5':md5, 'fw':False}
def getEntriesByType(type, entries):
indexes = []
for i in range(len(entries)-len(type)+1):
found = True
for k in range(len(type)):
if entries[i+k][1] != type[k]:
found = False
break
if found:
indexes.append(i)
return indexes
def getRecordPos(index, nvs):
data = {}
if index < 0:
return data
block_order = nvs.getDataBlocksOrder()
records_per_block = nvs.cfg.getDataRecordsCount()
data['block'] = block_order[len(block_order)-1 - index // records_per_block]
data['num'] = index % records_per_block
data['offset'] = nvs.getDataBlockOffset(data['block'], True) + data['num'] * NvsEntry.getEntrySize()
return data
def isSysconPatchable(records):
inds = getEntriesByType(SC_TYPES_UPD, records)
if len(inds) == 0:
return 0
last_fw_ind = inds[-1]
type = NvsEntry(records[last_fw_ind - len(SC_TYPES_UPD)]).getIndex()
if not type in SC_TYPES_UPD:
return 2
if last_fw_ind == len(records) - len(SC_TYPES_UPD):
return 1
for i in range(last_fw_ind, len(records)):
type = NvsEntry(records[i]).getIndex()
if type in SC_TYPES_PRE0 or type in SC_TYPES_PRE2:
return 0
return 3
# NVS Parser ==============================================
class NvsConfig:
cfg = {}
def __init__(self, cfg):
self.cfg = cfg
def getOffset(self):
return self.cfg['offset']
def getHeaderLength(self):
return self.cfg['header']['length']
def getHeaderCount(self):
return self.cfg['header']['count']
def getHeaderSize(self):
return self.getHeaderLength() * self.getHeaderCount()
def getDataFlatLength(self):
return self.cfg['data']['flat']
def getDataRecordsLength(self):
return self.cfg['data']['records']
def getDataCount(self):
return self.cfg['data']['count']
def getDataLength(self):
return self.getDataFlatLength() + self.getDataRecordsLength()
def getDataSize(self):
return self.getDataLength() * self.getDataCount()
def getDataRecordsCount(self):
return self.getDataRecordsLength() // NvsEntry.getEntrySize()
class NvsEntry:
entry = b''
def __init__(self, buf=b''):
if len(buf) < self.getEntryHeadSize() or self.checkMagic(buf) == 0:
self.entry = [0x00] * self.getEntryHeadSize()
else:
self.entry = bytearray(buf)
def getHeader(self):
return self.entry[:self.getEntryHeadSize()];
def getData(self):
return self.entry[self.getEntryHeadSize():self.getEntryHeadSize()+self.getEntryDataSize()];
def getEntry(self):
return self.entry
def getCounter(self):
return int.from_bytes(self.entry[4:4+3],"little")
def setCounter(self,val):
self.entry[4+0] = val & 0xFF
self.entry[4+1] = val >> 8 & 0xFF
self.entry[4+2] = val >> 16 & 0xFF
def getIndex(self):
return int.from_bytes(self.entry[1:1+2],"little")
def setIndex(self, val):
self.entry[1+0] = val & 0xFF
self.entry[1+1] = val >> 8 & 0xFF
def getLink(self):
return int.from_bytes(self.entry[3:3+1],"little")
def setLink(self, val):
self.entry[3] = val & 0xFF
def hasMagic(self):
return self.checkMagic(self.entry)
@staticmethod
def checkMagic(e):
m1 = 0b01 if e[0] == 0xA5 else 0
m2 = 0b10 if e[7] == 0xC3 else 0
return m1 | m2
@staticmethod
def getEntryHeadSize():
return 8
@staticmethod
def getEntryDataSize():
return 8
@staticmethod
def getEntrySize():
return 16
class NVStorage:
cfg = NvsConfig({})
header = b''
data = b''
active_volume = 0
active_volume_entry = NvsEntry('')
active_volume_entry_num = 1
def __init__(self, config, buffer):
self.cfg = config
if buffer and len(buffer):
self.load(buffer)
# General
def load(self, buf):
self.header = buf[:self.cfg.getHeaderSize()]
self.data = buf[len(self.header):]
self.findActiveVolume()
def getHeader(self):
return self.header
def getData(self):
return self.data
def getBytes(self):
return self.header + self.data
# Volumes
def getVolumeEntry(self, volume = 0, index = 0):
offset = (index) * NvsEntry.getEntryHeadSize() + self.cfg.getHeaderLength() * volume;
return self.header[offset:offset + NvsEntry.getEntryHeadSize()]
def getLastVolumeEntryOffset(self, real = False):
return self.getVolumeEntryOffset(self.active_volume_entry_num, real)
def getVolumeEntryOffset(self, index, real = False):
offset = NvsEntry.getEntryHeadSize() * index
return self.cfg.getOffset() + offset if real else offset
def getVolumeIndex(self, volume = 0):
entry = NvsEntry(self.getVolumeEntry(volume,0))
return entry.getIndex()
def findActiveVolume(self):
counter = 0
for volume in range(0, self.cfg.getHeaderCount()):
entries = self.getVolumeEntries(volume)
if not len(entries): continue
entry = NvsEntry(entries[-1])
if entry.getCounter() > counter:
counter = entry.getCounter()
self.active_volume = volume
self.active_volume_entry = entry
self.active_volume_entry_num = len(entries)-1
return self.active_volume
def getVolumeEntries(self, volume = 0):
length = self.cfg.getHeaderLength()
step = NvsEntry.getEntryHeadSize()
offset = length * volume
entries = list()
for i in range(0, offset+length, step):
entry = self.header[i:i+step]
if NvsEntry.checkMagic(entry) != 0:
entries.append(entry)
return entries
# Block Data
def getLastDataEntries(self):
return self.getDataBlockEntries(self.active_volume_entry.getLink())
def getLastDataBlockOffset(self, real = False):
return self.getDataBlockOffset(self.active_volume_entry.getLink(), real)
def getDataBlockOffset(self, index = 0, real = False):
offset = self.cfg.getDataLength() * index
return self.cfg.getOffset() + self.cfg.getHeaderSize() + offset + self.cfg.getDataFlatLength() if real else offset
def getDataBlock(self, index = 0):
offset = self.getDataBlockOffset(index)
return self.data[ offset : offset + self.cfg.getDataLength()]
def getDataBlockRecords(self, index = 0):
block = self.getDataBlock(index)
return block[self.cfg.getDataFlatLength():]
def getDataBlockEntries(self, index = 0):
data = self.getDataBlockRecords(index)
entry_size = NvsEntry.getEntrySize()
entries = []
for i in range(0, len(data), entry_size):
entry = data[i:i+entry_size]
if NvsEntry.checkMagic(entry) != 0:
entries.append(entry)
return entries
def getDataBlocksOrder(self):
v_entries = self.getVolumeEntries(self.active_volume)
max = len(v_entries) - self.cfg.getDataCount()
return [NvsEntry(v_entries[i-1]).getLink() for i in range(len(v_entries), max if max > 0 else 1, -1)]
def getAllDataEntries(self):
entries = []
for n in self.getDataBlocksOrder():
entries = self.getDataBlockEntries(n) + entries
return entries
# Flat Data (cache)
def getLastFlatEntries(self):
return self.getFlatDataEntries(self.active_volume_entry.getLink())
def getLastFlatDataOffset(self, real = False):
return self.getFlatDataOffset(self.active_volume_entry.getLink(), real)
def getFlatDataOffset(self, index = 0, real = False):
offset = self.cfg.getDataLength() * index
return self.cfg.getOffset() + self.cfg.getHeaderSize() + offset if real else offset
def getDataBlockFlat(self, index = 0):
block = self.getDataBlock(index)
return block[:self.cfg.getDataFlatLength()]
def getAllFlatData(self):
flatdata = []
for n in self.getDataBlocksOrder():
flatdata = [self.getDataBlockFlat(n)] + flatdata
return flatdata
def getFlatDataEntries(self, index = 0):
flatdata = self.getDataBlockFlat(index)
entry_size = NvsEntry.getEntrySize()
entries = []
for i in range(0, len(flatdata), entry_size):
entry = flatdata[i:i+entry_size]
entries.append(entry)
empty = 0
for i in range(len(entries)-1, -1, -1):
if entries[i] != b'\xFF'*entry_size:
entries = entries[0:i+1]
break
empty += 1
if empty == len(entries): entries = []
return entries
# Helpers
def getOWC(self):
# overwrite count
total_entries = 0
for volume in range(0, self.cfg.getHeaderCount()):
count = len(self.getVolumeEntries(volume))
if count > 0: total_entries += count - 1
return 0 if total_entries <= self.cfg.getDataCount() else total_entries // self.cfg.getDataCount()
def getRebuilded(self, entries = False, flatdata = False):
# get all enties and flatdata
entries = self.getAllDataEntries() if entries == False else entries
flatdata = self.getAllFlatData() if flatdata == False else flatdata
flatlength = self.cfg.getDataFlatLength()
# fix counters
for i in range(len(entries)):
entry = NvsEntry(entries[i])
entry.setCounter(i+1)
entries[i] = entry.getEntry()
# create new
header = b'\xA5\x00\x00\xFF\xFF\xFF\xFF\xC3'
data = b''
for i in range(self.cfg.getDataCount()):
start = i * self.cfg.getDataRecordsCount()
if start >= len(entries):
break
data += b'\xFF'*flatlength if i >= len(flatdata) or len(flatdata[i]) < flatlength else flatdata[i]
end = start + self.cfg.getDataRecordsCount()
for n in range(start, end if end <= len(entries) else len(entries)):
data += entries[n]
first = NvsEntry(entries[start])
first.setIndex(i)
first.setLink(i)
header += first.getHeader()
# adjust padding
hsize = self.cfg.getHeaderSize()
if len(header) < hsize:
header += b'\xFF'*(hsize - len(header))
dsize = self.cfg.getDataSize()
if len(data) < dsize:
data += b'\xFF'*(dsize - len(data))
return header + data
SNVS_CONFIG = NvsConfig({
"offset": SC_AREAS['SNVS']['o'],
"header": { "length":BLOCK_SIZE, "count":2 },
"data": { "flat":BLOCK_SIZE, "records":BLOCK_SIZE * 5, "count":8 },
})
NVS_CONFIG = NvsConfig({
"offset": SC_AREAS['NVS']['o'],
"header": { "length":BLOCK_SIZE, "count":2 },
"data": { "flat":BLOCK_SIZE, "records":BLOCK_SIZE * 2, "count":2 },
})
def getCanonicalName(fpath):
with open(fpath, 'rb') as f:
fw = getSysconData(f, 'VERSION')
SNVS = NVStorage(SNVS_CONFIG, getSysconData(f, 'SNVS'))
records = SNVS.getAllDataEntries()
order = ''.join(str(x) for x in SNVS.getDataBlocksOrder())
status = Lang.MENU_SC_STATUSES[isSysconPatchable(records)].replace(' ','_').lower()
return '_'.join(['syscon', '%X.%02X'%(fw[0],fw[2]), '%d'%len(records), '['+order+']', status])
================================================
FILE: utils/utils.py
================================================
#==========================================================
# Common utils
# part of ps4 wee tools project
#==========================================================
import hashlib, os, sys, math, random, datetime
import lang._i18n_ as Lang
# Common consts
INFO_FILE_SFLASH = '_sflash0_.txt'
INFO_FILE_2BLS = '_2bls_.txt'
ROOT_PATH = os.path.dirname(sys.executable) if getattr(sys, 'frozen', False) else os.path.dirname(os.path.dirname(__file__))
# Config stuff
class Config:
cfg = {}
file = ''
path = ''
def __init__(self, file='config.ini'):
self.file = file
self.path = os.path.realpath(file)
self.load()
def load(self, file = False):
path = file if file else self.path
if not os.path.isfile(path):
self.cfg = {}
return False
with open(path, 'r') as f:
lines = f.readlines()
for line in lines:
line = line.strip()
if len(line) == 0:
continue
item = line.split('=')
key = item[0].strip()
val = '='.join(item[1:]) if len(item) >= 2 else ''
if key: self.cfg[key] = val.strip()
return len(self.cfg)
def save(self, file = False):
path = file if file else self.path
try:
with open(path, 'w') as f:
for key in self.cfg:
f.write(f'{key} = {self.cfg[key]}\n')
except Exception as e:
print('CFG Error:', e)
return False
return True
def get(self, key, default=''):
return self.cfg.get(key, default)
def set(self, key, val):
self.cfg[key] = val
APP_CONFIG = Config()
# Functions
def getEmcCmd(str):
sum = 0
for i in range(len(str)):
sum += ord(str[i])
return str + ':%02X'%(sum & 0xFF)
def ceil(a, b):
return (a // b) + (1 if a % b else 0)
def checkCtrl(s, key):
return ord(s) + 0x40 == ord(key)
def genRandBytes(size):
return bytearray(random.getrandbits(8) for _ in range(size))
def getMemData(data, offset, lenght):
if len(data) >= offset+lenght:
return data[offset : offset+lenght]
return b''
def getData(file, off, len):
try:
if isinstance(file, str):
with open(file, 'rb') as f:
f.seek(off)
return f.read(len)
else:
file.seek(off)
return file.read(len)
except:
return ''
def setData(file, off, val):
try:
if isinstance(file, str):
with open(file, 'r+b') as f:
f.seek(off)
return f.write(val)
else:
file.seek(off)
return file.write(val)
except:
return ''
def checkFileSize(file, size):
if not file or not os.path.isfile(file):
print(Lang.STR_FILE_NOT_EXISTS%file)
input(Lang.STR_BACK)
return False
if os.stat(file).st_size != size:
print(Lang.STR_INCORRECT_SIZE%file)
input(Lang.STR_BACK)
return False
return True
def getFilePathWoExt(file, fix_spaces = False):
folder = os.path.dirname(file)
name = '.'.join(os.path.basename(file).split('.')[:-1])
return folder + os.path.sep + (name.replace(' ','_') if fix_spaces else name)
def getFileMD5(file):
f = open(file, 'rb')
f.seek(0)
with f:
res = f.read()
return hashlib.md5(res).hexdigest()
def getFilesList(path, ext = ''):
flist = []
for root, dirs, files in os.walk(path):
for name in files:
if ext:
if name.lower().endswith(ext):
flist.append(os.path.join(root, name))
else:
flist.append(os.path.join(root, name))
return flist
def percent(part, whole):
return 100 * float(part)/float(whole) if whole else 0
def compareData(d1, d2, step = 1):
min = len(d1) if len(d1) < len(d2) else len(d2)
ok = 0
for i in range(0, min, step):
if d1[i:i+step] == d2[i:i+step]:
ok += 1
return percent(ok, min // step)
def compareDataWithFiles(data, file_list, buf = 1, show_progress = False):
items = []
for i in range(len(file_list)):
if show_progress:
print('\r'+Lang.STR_PROGRESS%int(percent(i,len(file_list))),end='')
with open(file_list[i], 'rb') as f:
items.append({'path':file_list[i], 'eq':compareData(data, f.read(), buf)})
items.sort(key=lambda k: k['eq'], reverse=True)
return items
def getFileTime(path):
ts = os.stat(path).st_mtime
date = datetime.datetime.utcfromtimestamp(ts).strftime("%Y-%m-%d %H:%M:%S")
return {'ts':ts, 'date':date}
def hex(buf,sep=' '):
str = ""
for c in buf:
str += '{:02X}'.format(c)+sep
return str[:len(str)-len(sep)]
def swapBytes(arr):
res = [0]*len(arr)
for i in range(0,len(arr),2):
res[i] = arr[i+1]
res[i+1] = arr[i]
return bytes(res)
def getFileContents(path):
with open(path, 'rb') as f:
return f.read()
def savePatchData(path, data, patch = False):
with open(path, 'wb') as f:
f.write(data)
if patch:
patchFile(path, patch)
def patchFile(path, patch):
with open(path, 'r+b') as f:
for i in range(len(patch)):
f.seek(patch[i]['o'],0)
f.write(patch[i]['d'])
def entropy(file):
with open(file, "rb") as f:
data = f.read()
vals = {byte: 0 for byte in range(2**8)}
size = len(data)
pp = size // 100
for i in range(size):
vals[data[i]] += 1
if i % pp == 0:
print('\r'+Lang.STR_PROGRESS%(i // pp),end='')
probs = [val / size for val in vals.values()]
entropy = -sum(prob * math.log2(prob) for prob in probs if prob > 0)
return {'00':probs[0],'ff':probs[0xff],'ent':entropy}