]> git.openfabrics.org - ~adrianc/mstflint.git/commitdiff
Title: Deprecation of mstflint repository master
authorAdrian Chiris <adrianc@mellanox.com>
Tue, 24 Oct 2017 18:48:58 +0000 (21:48 +0300)
committerAdrian Chiris <adrianc@mellanox.com>
Tue, 24 Oct 2017 18:48:58 +0000 (21:48 +0300)
Description: mstflint repository has moved to github see README for additional details
Issue:N/A

175 files changed:
COPYING [deleted file]
LICENSE [deleted file]
Makefile.am [deleted file]
README
autogen.sh [deleted file]
cmdif/Makefile.am [deleted file]
cmdif/icmd_cif_common.c [deleted file]
cmdif/icmd_cif_common.h [deleted file]
cmdif/icmd_cif_macros.h [deleted file]
cmdif/icmd_cif_open.c [deleted file]
cmdif/icmd_cif_open.h [deleted file]
cmdif/tools_cif.c [deleted file]
cmdif/tools_cif.h [deleted file]
cmdparser/Makefile.am [deleted file]
cmdparser/cmdparser.cpp [deleted file]
cmdparser/cmdparser.h [deleted file]
cmdparser/my_getopt.c [deleted file]
cmdparser/my_getopt.h [deleted file]
common/Makefile.am [deleted file]
common/bit_slice.h [deleted file]
common/compatibility.h [deleted file]
common/tools_utils.h [deleted file]
common/tools_version.h [deleted file]
configure.ac [deleted file]
debian/changelog [deleted file]
debian/compat [deleted file]
debian/control [deleted file]
debian/copyright [deleted file]
debian/docs [deleted file]
debian/files [deleted file]
debian/mstflint.docs [deleted file]
debian/mstflint.substvars [deleted file]
debian/rules [deleted file]
debian/source/format [deleted file]
dev_mgt/Makefile.am [deleted file]
dev_mgt/tools_dev_types.c [deleted file]
dev_mgt/tools_dev_types.h [deleted file]
flint/Makefile.am [deleted file]
flint/cmd_line_parser.cpp [deleted file]
flint/err_msgs.h [deleted file]
flint/flint.cpp [deleted file]
flint/flint.h [deleted file]
flint/flint_params.cpp [deleted file]
flint/flint_params.h [deleted file]
flint/subcommands.cpp [deleted file]
flint/subcommands.h [deleted file]
gitversion.sh [deleted file]
include/mtcr_ul/mtcr.h [deleted file]
include/mtcr_ul/mtcr_com_defs.h [deleted file]
include/mtcr_ul/mtcr_mf.h [deleted file]
man/mstconfig.1 [deleted file]
man/mstflint.1 [deleted file]
man/mstmcra.1 [deleted file]
man/mstmread.1 [deleted file]
man/mstmtserver.1 [deleted file]
man/mstmwrite.1 [deleted file]
man/mstregdump.1 [deleted file]
man/mstvpd.1 [deleted file]
mflash/Makefile.am [deleted file]
mflash/mflash.c [deleted file]
mflash/mflash.h [deleted file]
mflash/mflash_access_layer.c [deleted file]
mflash/mflash_access_layer.h [deleted file]
mflash/mflash_common_structs.h [deleted file]
mflash/mflash_pack_layer.c [deleted file]
mflash/mflash_pack_layer.h [deleted file]
mflash/mflash_types.h [deleted file]
mft_utils/Makefile.am [deleted file]
mft_utils/calc_hw_crc.c [deleted file]
mft_utils/calc_hw_crc.h [deleted file]
mft_utils/errmsg.cpp [deleted file]
mft_utils/errmsg.h [deleted file]
mft_utils/mft_sig_handler.c [deleted file]
mft_utils/mft_sig_handler.h [deleted file]
mft_utils/mlarge_buffer.cpp [deleted file]
mft_utils/mlarge_buffer.h [deleted file]
mlxconfig/Makefile.am [deleted file]
mlxconfig/mlxcfg_lib.cpp [deleted file]
mlxconfig/mlxcfg_lib.h [deleted file]
mlxconfig/mlxcfg_param_lib.cpp [deleted file]
mlxconfig/mlxcfg_param_lib.h [deleted file]
mlxconfig/mlxcfg_parser.cpp [deleted file]
mlxconfig/mlxcfg_status.h [deleted file]
mlxconfig/mlxcfg_ui.cpp [deleted file]
mlxconfig/mlxcfg_ui.h [deleted file]
mlxfwops/Makefile.am [deleted file]
mlxfwops/lib/Makefile.am [deleted file]
mlxfwops/lib/aux_tlv_ops.cpp [deleted file]
mlxfwops/lib/aux_tlv_ops.h [deleted file]
mlxfwops/lib/flint_base.cpp [deleted file]
mlxfwops/lib/flint_base.h [deleted file]
mlxfwops/lib/flint_io.cpp [deleted file]
mlxfwops/lib/flint_io.h [deleted file]
mlxfwops/lib/fs2_ops.cpp [deleted file]
mlxfwops/lib/fs2_ops.h [deleted file]
mlxfwops/lib/fs3_ops.cpp [deleted file]
mlxfwops/lib/fs3_ops.h [deleted file]
mlxfwops/lib/fw_ops.cpp [deleted file]
mlxfwops/lib/fw_ops.h [deleted file]
mlxfwops/lib/mlxfwops.cpp [deleted file]
mlxfwops/lib/mlxfwops.h [deleted file]
mlxfwops/lib/mlxfwops_com.h [deleted file]
mlxfwops/uefi_c/mft_uefi_common.h [deleted file]
mstdump/Makefile.am [deleted file]
mstdump/crd_lib/Makefile.am [deleted file]
mstdump/crd_lib/crdump.c [deleted file]
mstdump/crd_lib/crdump.h [deleted file]
mstdump/crd_main/Makefile.am [deleted file]
mstdump/crd_main/mstdump.c [deleted file]
mstdump/mstdump_dbs/ConnectIB.csv [deleted file]
mstdump/mstdump_dbs/ConnectX2.csv [deleted file]
mstdump/mstdump_dbs/ConnectX3.csv [deleted file]
mstdump/mstdump_dbs/ConnectX3Pro.csv [deleted file]
mstdump/mstdump_dbs/ConnectX4.csv [deleted file]
mstdump/mstdump_dbs/ConnectX4LX.csv [deleted file]
mstdump/mstdump_dbs/InfiniScaleIV.csv [deleted file]
mstdump/mstdump_dbs/Makefile.am [deleted file]
mstdump/mstdump_dbs/Spectrum.csv [deleted file]
mstdump/mstdump_dbs/SwitchIB.csv [deleted file]
mstdump/mstdump_dbs/SwitchIB2.csv [deleted file]
mstdump/mstdump_dbs/SwitchX.csv [deleted file]
mstflint.spec.in [deleted file]
mtcr_ul/Makefile.am [deleted file]
mtcr_ul/mtcr_ib.h [deleted file]
mtcr_ul/mtcr_ib_ofed.c [deleted file]
mtcr_ul/mtcr_ib_res_mgt.c [deleted file]
mtcr_ul/mtcr_ib_res_mgt.h [deleted file]
mtcr_ul/mtcr_icmd_cif.h [deleted file]
mtcr_ul/mtcr_int_defs.h [deleted file]
mtcr_ul/mtcr_tools_cif.c [deleted file]
mtcr_ul/mtcr_tools_cif.h [deleted file]
mtcr_ul/mtcr_ul.c [deleted file]
mtcr_ul/mtcr_ul_com.c [deleted file]
mtcr_ul/mtcr_ul_com.h [deleted file]
mtcr_ul/mtcr_ul_icmd_cif.c [deleted file]
mtcr_ul/packets_common.c [deleted file]
mtcr_ul/packets_common.h [deleted file]
mtcr_ul/packets_layout.c [deleted file]
mtcr_ul/packets_layout.h [deleted file]
reg_access/Makefile.am [deleted file]
reg_access/reg_access.c [deleted file]
reg_access/reg_access.h [deleted file]
small_utils/Makefile.am [deleted file]
small_utils/hca_self_test.ofed [deleted file]
small_utils/hca_self_test.readme [deleted file]
small_utils/mcra.c [deleted file]
small_utils/mread.c [deleted file]
small_utils/mtserver.c [deleted file]
small_utils/mwrite.c [deleted file]
small_utils/tcp.c [deleted file]
small_utils/tcp.h [deleted file]
small_utils/vpd.c [deleted file]
tools_crypto/Makefile.am [deleted file]
tools_crypto/tools_md5.c [deleted file]
tools_crypto/tools_md5.h [deleted file]
tools_layouts/Makefile.am [deleted file]
tools_layouts/adb_to_c_utils.c [deleted file]
tools_layouts/adb_to_c_utils.h [deleted file]
tools_layouts/cibfw_layouts.c [deleted file]
tools_layouts/cibfw_layouts.h [deleted file]
tools_layouts/connectib_layouts.c [deleted file]
tools_layouts/connectib_layouts.h [deleted file]
tools_layouts/cx4fw_layouts.c [deleted file]
tools_layouts/cx4fw_layouts.h [deleted file]
tools_layouts/register_access_open_layouts.c [deleted file]
tools_layouts/register_access_open_layouts.h [deleted file]
tools_layouts/register_access_sib_layouts.c [deleted file]
tools_layouts/register_access_sib_layouts.h [deleted file]
tools_layouts/tools_open_layouts.c [deleted file]
tools_layouts/tools_open_layouts.h [deleted file]
tools_res_mgmt/Makefile.am [deleted file]
tools_res_mgmt/tools_res_mgmt.c [deleted file]
tools_res_mgmt/tools_res_mgmt.h [deleted file]
tools_res_mgmt/tools_time.c [deleted file]
tools_res_mgmt/tools_time.h [deleted file]

diff --git a/COPYING b/COPYING
deleted file mode 100644 (file)
index 21ab96e..0000000
--- a/COPYING
+++ /dev/null
@@ -1,378 +0,0 @@
-This software is available to you under a choice of one of two licenses.
-You may chose to be licensed under the terms of the the OpenIB.org BSD 
-license or the GNU General Public License (GPL) Version 2, both included
-below.
-
-Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.
-
-==================================================================
-
-                     OpenIB.org BSD license
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above
-    copyright notice, this list of conditions and the following
-    disclaimer in the documentation and/or other materials provided
-    with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-==================================================================
-
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  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
-this service 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 make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  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.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-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
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the 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 a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                            NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE 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.
-
-                     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
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    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 2 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, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision 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, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This 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 Library General
-Public License instead of this License.
diff --git a/LICENSE b/LICENSE
deleted file mode 100644 (file)
index e208335..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,30 +0,0 @@
- Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
-
- This software is available to you under a choice of one of two
- licenses.  You may choose to be licensed under the terms of the GNU
- General Public License (GPL) Version 2, available from the file
- COPYING in the main directory of this source tree, or the
- OpenIB.org BSD license below:
-
-     Redistribution and use in source and binary forms, with or
-     without modification, are permitted provided that the following
-     conditions are met:
-
-      - Redistributions of source code must retain the above
-        copyright notice, this list of conditions and the following
-        disclaimer.
-
-      - Redistributions in binary form must reproduce the above
-        copyright notice, this list of conditions and the following
-        disclaimer in the documentation and/or other materials
-        provided with the distribution.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644 (file)
index 2da1619..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#--
-# Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
-# 
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-# 
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-# 
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-# 
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-SUBDIRS = common mft_utils $(TOOLS_CRYPTO) tools_layouts mtcr_ul reg_access cmdif dev_mgt tools_res_mgmt mflash mlxconfig mlxfwops cmdparser flint small_utils mstdump
-
-man_MANS = man/mstflint.1 man/mstconfig.1 man/mstmcra.1 man/mstmread.1 man/mstmwrite.1 man/mstmtserver.1 man/mstregdump.1 man/mstvpd.1
-
-EXTRA_DIST = \
-       mstflint.spec \
-       small_utils/hca_self_test.ofed \
-       common/gitversion.h \
-       debian \
-       $(man_MANS)
-
diff --git a/README b/README
index 8039f1a1fdbb8477bbd6559a8b621243edaa61e1..4de08b93f2dd2cd354a77de4c81adc9e3da8ba06 100644 (file)
--- a/README
+++ b/README
@@ -3,176 +3,8 @@ Mellanox Technologies - www.mellanox.com
 
 MSTFLINT Package - Firmware Burning and Diagnostics Tools
 
-1) Overview
-    This package contains a burning tool and diagnostic tools for Mellanox
-    manufactured HCA/NIC cards. It also provides access to the relevant source
-    code. Please see the file LICENSE for licensing details.
-       This package is based on a subset of the Mellanox Firmware Tools (MFT) package.
-       For a full documentation of the MFT package, please refer to the downloads page
-       in Mellanox web site.
-
     ----------------------------------------------------------------------------
     NOTE:
     mstflint git repository has moved to github (https://github.com/Mellanox/mstflint)
     openfabrics mstflint repository is no longer maintained.
-
-    This burning tool should be used only with Mellanox-manufactured
-    HCA/NIC cards. Using it with cards manufactured by other vendors 
-    may be harmful  to  the cards (due to different configurations).
-    Using the diagnostic tools is normally safe for all HCAs/NICs.
     ----------------------------------------------------------------------------
-    
-2) Package Contents
-    a) mstflint source code
-    b) mflash lib
-       This lib provides low level Flash access through Mellanox HCAs.
-    c) mtcr lib (implemented in mtcr.h file)
-       This lib enables access to HCA hardware registers.
-    d) mstregdump utility
-       This utility dumps hardware registers from Mellanox hardware
-       for later analysis by Mellanox.
-    e) mstvpd
-       This utility dumps the on-card VPD.
-    f) mstmcra
-       This debug utility reads/writes a to/from the device configuration register space.
-    g) mstconfig
-       This tool sets or queries non-volatile configurable options for Mellanox HCAs.
-
-3) Installation
-    a) Build the mstflint utility. This package is built using a standard
-       autotools method.
-          
-       Example: 
-       > ./configure
-       > make
-       > make install
-
-       - Run "configure --help" for custom configuration options.
-       - Typically, root privileges are required to run "make install"
-
-4) Hardware Access Device Names
-   The tools in this package require a device name in the command
-   line. The device name is the identifier of the target CA.
-   This section describes the device name formats and the HW access flow.
-
-   a) The devices can be accessed by their PCI ID as displayed by lspci
-      (bus:dev.fn).
-      Example:
-      # List all Mellanox devices
-      > /sbin/lspci -d 15b3:
-        02:00.0 Ethernet controller: Mellanox Technologies MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s] (rev a0) 
-
-      # Use mstflint tool to query the firmware on this device
-      > mstflint -d 02:00.0 q
-
-    b) When the IB driver (mlx4 or mthca) is loaded, the devices can be accessed
-       by their IB device name.
-       Example:
-       # List the IB devices 
-       > ibv_devinfo | grep hca_id
-         hca_id: mlx4_0
-
-       # Use mstvpd tool to dump the VPD of this device
-       > mstvpd mlx4_0
-
-    c) PCI configuration access
-       In examples a and b above, the device is accessed via PCI Memory Mapping.
-       The device can also be accessed by PCI configuration cycles.
-       PCI configuration access is slower and less safe than memory access --
-       use it only if methods a and b above do not work.
-
-       To force configuration access, use device names in the following format:
-       /proc/bus/pci/<bus>/<dev.fn>
-
-       Example:
-       # List all Mellanox devices
-       > /sbin/lspci -d 15b3:
-         02:00.0 Ethernet controller: Mellanox Technologies MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s] (rev a0) 
-          
-       # Use mstregdump to dump HW registers, using PCI config cycles
-       > mstregdump /proc/bus/pci/02/00.0 > crdump.log
-
-       Note: Typically, you will need root privileges for hardware access
-
-       d) Accessing a multi-function device:
-
-          In some configuration, the CA device identifies as a multi-function device on PCI. E.G.:
-          > /sbin/lspci -d 15b3:
-          07:00.0 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
-          07:00.1 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
-          07:00.2 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
-          07:00.3 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
-          07:00.4 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
-          07:00.5 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
-          07:00.6 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
-          07:00.7 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
-
-          These multiple "logical" devices are actually a single physical device, so firmware update or "physical"
-          diagnostics should be run only on one of the functions.
-
-          When the device driver is loaded, only the primary physical function of the device can be accessed.
-          In Linux that would typically be function 0. This function can be accessed using memory mapping, as
-          described in sub section a) above. E.G.:
-          > mstflint -d 07:00.0 q
-
-          When the device driver is not loaded, all the functions can be accessed using configuration cycles, as
-          described in sub section c) above. It is recommended to use function 0 for FW update or diagnostics, E.G.:
-          > mstflint -d /proc/bus/pci/07/00.0 q
-
-5) Usage (mstflint):
-       Read mstflint usage. Enter "./mstflint -h" for a short help message, or
-       "./mstflint -hh" for a detailed help message.
-
-       Obtaining firmware files:
-       If you purchased your card from Mellanox Technologies, please use the
-       Mellanox website (www.mellanox.com, under 'Firmware' downloads) to
-       download the firmware for your card.
-       If you purchased your card from a vendor other than Mellanox, get a
-       specific firmware configuration (INI) file from your HCA card vendor and
-       generate the binary image.
-       
-       Use mstflint to burn a device according to the burning instructions in 
-       "mstflint -hh" and in Mellanox web site firmware page.
-
-6) Usage (mstregdump):
-       An internal register dump is displayed to the standard output.
-       Please store it in a file for analysis by Mellanox.
-
-       Example:
-       > mstregdump mthca0 > dumpfile
-
-7) Usage (mstvpd):
-    A VPD dump is displayed to the standard output.
-       A list of keywords to dump can be supplied after the -- flag
-       to apply an output filter.
-
-       Examples:
-       > mstvpd mlx4_0
-       ID: Hawk Dual Port
-       PN: MNPH29C-XTR
-       EC: X2
-       SN: MT1001X00749
-       V0: PCIe Gen2 x8
-       V1: N/A
-       YA: N/A
-       RW:
-
-    > mstvpd mlx4_0 -- PN ID
-       PN: MNPH29C-XTR
-       ID: Hawk Dual Port
-
-8) Usage (mstconfig):
-    Read mstconfig usage. Enter "mstconfig -h" for a help message.
-
-9) Problem Reporting:
-       Please collect the following information when reporting issues:
-
-       uname -a
-       cat /etc/issue
-       cat /proc/bus/pci/devices
-       mstflint -vv
-       lspci
-        mstflint -d 02:00.0 v
-        mstflint -d 02:00.0 q
-        mstvpd 02:00.0
-
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755 (executable)
index 6ba4a6f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#! /bin/sh
-
-# create config dir if not exist
-test -d config || mkdir config
-
-sh gitversion.sh ./common/gitversion.h
-
-set -x
-aclocal -I config
-libtoolize --force --copy
-autoheader
-automake --foreign --add-missing --copy
-autoconf
diff --git a/cmdif/Makefile.am b/cmdif/Makefile.am
deleted file mode 100644 (file)
index c6315d0..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-
-USER_DIR = $(top_srcdir)
-MTCR_DIR = $(USER_DIR)/include/mtcr_ul
-TOOLS_LAYOUTS_DIR = $(USER_DIR)/tools_layouts
-AM_CPPFLAGS = -I. -I../common -I../tools_layouts  -I$(MTCR_DIR) -I.. -I$(USER_DIR)/mtcr_ul
-
-AM_CFLAGS = -W -Wall -Werror -g -MP -MD $(COMPILER_FPIC) -DCMDIF_EXPORTS
-CMDIF_VERSION = 1
-noinst_LIBRARIES = libcmdif.a
-
-libcmdif_a_SOURCES = tools_cif.c tools_cif.h icmd_cif_common.c icmd_cif_common.h icmd_cif_open.c icmd_cif_open.h
-
diff --git a/cmdif/icmd_cif_common.c b/cmdif/icmd_cif_common.c
deleted file mode 100644 (file)
index 75b2fbc..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <mtcr.h>
-#include "icmd_cif_common.h"
-
-/*
- * get_last_err
- */
-char* gcif_get_last_err(){
-    return "Deprecated: General Error";
-}
-
-/*
- * gcif_err_str
- */
-char* gcif_err_str(int rc) {
-
-    switch(rc) {
-        case GCIF_STATUS_SUCCESS :
-            return "OK";
-        case GCIF_STATUS_INVALID_OPCODE :
-            return "Invalid opcode";
-        case GCIF_STATUS_INVALID_CMD :
-            return "Invalid cmd";
-        case GCIF_STATUS_OPERATIONAL_ERROR :
-            return "Operational error";
-        case GCIF_STATUS_CR_FAIL :
-            return "cr-space access failure";
-        case GCIF_STATUS_BAD_OPCODE :
-            return "unsupported opcode was used";
-        case GCIF_STATUS_SEMAPHORE_TO :
-            return "timed out while trying to take semaphore";
-        case GCIF_STATUS_EXECUTE_TO :
-            return "timed out while waiting for command to execute";
-        case GCIF_STATUS_IFC_BUSY :
-            return "command-interface is busy executing another command";
-        case GCIF_STATUS_BAD_PARAMETERS :
-            return "bad parameter";
-        case GCIF_STATUS_ICMD_NOT_READY:
-            return "command interface not ready";
-        case GCIF_STATUS_BAD_PARAM:
-            return "command interface bad param";
-        case GCIF_STATUS_UNSUPPORTED_ICMD_VERSION:
-            return "Unsupported icmd version";
-        case GCIF_STATUS_UNKNOWN_STATUS:
-            return "Unknown ICMD Status.";
-        case GCIF_STATUS_GENERAL_ERROR :
-            return "General error";
-        case GCIF_SIZE_EXCEEDS_LIMIT:
-            return "Size exceeds limit";
-        case GCIF_ICMD_NOT_SUPPORTED:
-            return "icmd not supported";
-        case GCIF_ICMD_INIT_FAILED:
-            return "icmd initialization failed";
-        case GCIF_ICMD_BUSY:
-            return "icmd busy";
-        default:
-            return "Unknown error";
-    }
-}
-
-/*
- * convert_rc
- */
-
-int convert_rc(int rc) {
-    switch (rc) {
-    case ME_ICMD_STATUS_CR_FAIL:
-        return GCIF_STATUS_CR_FAIL;
-    case ME_ICMD_STATUS_SEMAPHORE_TO:
-        return GCIF_STATUS_SEMAPHORE_TO;
-    case ME_ICMD_STATUS_EXECUTE_TO:
-        return GCIF_STATUS_EXECUTE_TO;
-    case ME_ICMD_STATUS_IFC_BUSY:
-        return GCIF_STATUS_IFC_BUSY;
-    case ME_ICMD_STATUS_ICMD_NOT_READY:
-        return GCIF_STATUS_ICMD_NOT_READY;
-    case ME_ICMD_UNSUPPORTED_ICMD_VERSION:
-        return GCIF_STATUS_UNSUPPORTED_ICMD_VERSION;
-    case ME_ICMD_INVALID_OPCODE:
-        return GCIF_STATUS_INVALID_OPCODE;
-    case ME_ICMD_INVALID_CMD:
-        return GCIF_STATUS_INVALID_CMD;
-    case ME_ICMD_OPERATIONAL_ERROR:
-        return GCIF_STATUS_OPERATIONAL_ERROR;
-    case ME_ICMD_BAD_PARAM:
-        return GCIF_STATUS_BAD_PARAM;
-    case ME_ICMD_ICM_NOT_AVAIL:
-        return GCIF_STATUS_ICM_NOT_AVAIL;
-    case ME_ICMD_WRITE_PROTECT:
-        return GCIF_STATUS_WRITE_PROTECT;
-    case ME_ICMD_UNKNOWN_STATUS:
-        return GCIF_STATUS_UNKNOWN_STATUS;
-    case ME_ICMD_SIZE_EXCEEDS_LIMIT:
-        return GCIF_SIZE_EXCEEDS_LIMIT;
-    case ME_ICMD_NOT_SUPPORTED:
-        return GCIF_ICMD_NOT_SUPPORTED;
-    case ME_ICMD_INIT_FAILED:
-        return GCIF_ICMD_INIT_FAILED;
-    case ME_ICMD_BUSY:
-        return GCIF_ICMD_BUSY;
-    default:
-        break;
-    }
-    return GCIF_STATUS_GENERAL_ERROR;
-}
diff --git a/cmdif/icmd_cif_common.h b/cmdif/icmd_cif_common.h
deleted file mode 100644 (file)
index bdc03c4..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef _ICMD_COMMON_
-#define _ICMD_COMMON_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* --------- Typedefs & Constants ---------------------------------- */
-
-/**
- * Possible status values returned by the API functions.
- * In some cases the status indicated in the cr-space may not fit
- * any of the below enumeration values, in which case the raw status
- * value will be returned.
- **/
-enum {
-    GCIF_STATUS_SUCCESS = 0,
-    GCIF_STATUS_INVALID_OPCODE ,
-    GCIF_STATUS_INVALID_CMD,
-    GCIF_STATUS_OPERATIONAL_ERROR,
-    GCIF_STATUS_BAD_PARAM,
-    GCIF_STATUS_CR_FAIL ,       // cr-space access failure
-    GCIF_STATUS_BAD_OPCODE,                 // unsupported opcode was used
-    GCIF_STATUS_SEMAPHORE_TO,               // timed out while trying to take semaphore
-    GCIF_STATUS_EXECUTE_TO,                 // timed out while waiting for command to execute
-    GCIF_STATUS_IFC_BUSY,                   // command-interface is busy executing another command
-    GCIF_STATUS_BAD_PARAMETERS,
-    GCIF_STATUS_GENERAL_ERROR,
-    GCIF_STATUS_ICMD_NOT_READY,
-    GCIF_STATUS_UNSUPPORTED_ICMD_VERSION,
-    GCIF_STATUS_ICM_NOT_AVAIL,
-    GCIF_STATUS_WRITE_PROTECT,
-    GCIF_STATUS_NO_MEM,
-    GCIF_SIZE_EXCEEDS_LIMIT,
-    GCIF_ICMD_NOT_SUPPORTED,
-    GCIF_ICMD_INIT_FAILED,
-    GCIF_ICMD_BUSY,
-    GCIF_STATUS_UNKNOWN_STATUS
-};
-
-enum {
-    GET_FW_INFO             = 0x8007,
-    FLASH_REG_ACCESS        = 0x9001,
-};
-
-
-enum {
-    RW_READ  = 0x1,
-    RW_WRITE = 0x0
-};
-
-/* --------- Functional API ---------------------------------------- */
-
-/**
-  * Returns the last error message recorded by the library
-  **/
-char* gcif_get_last_err();
-
-/**
-  * Returns the error message associated with the provided return code
-  **/
-char* gcif_err_str(int rc);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif
diff --git a/cmdif/icmd_cif_macros.h b/cmdif/icmd_cif_macros.h
deleted file mode 100644 (file)
index fa7f261..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef _ICMD_MACROS     /* guard */
-#define _ICMD_MACROS
-
-
-int convert_rc(int rc);
-
-#define IN
-#define OUT
-#define INOUT
-
-#ifdef _DEBUG_MODE
-#define DBG_PRINTF(...) fprintf(stderr, __VA_ARGS__)
-#else
-#define DBG_PRINTF(...)
-#endif
-
-/*
- * SEND_ICMD_FLOW macro is designed for the most common icmd flow
- * basically every command that simply packs a struct sends icmd and unpacks it should use
- * this to save code.
- * TODO: Adrianc- if needed separate struct_name to prefix+name in case we need to separate between different
- * 5th gen icmd structures i.e connectib/switchib/connectx4 (use ## to paste them together in the macro)
- */
-#define SEND_ICMD_FLOW_GENERIC(mf, op, struct_name, cmd_struct, should_pack, skip_write, pack_func, unpack_func)\
-    int _rc;\
-    int _cmd_size = struct_name##_size();\
-    u_int8_t _data[_cmd_size];\
-    memset(_data, 0, _cmd_size);\
-    if (should_pack) {\
-        pack_func(cmd_struct, _data);\
-    }\
-    _rc = icmd_send_command(mf, op, _data, _cmd_size, skip_write);\
-    if (_rc) {\
-        return convert_rc(_rc);\
-    }\
-    unpack_func(cmd_struct, _data);\
-    return GCIF_STATUS_SUCCESS
-
-#define SEND_ICMD_FLOW(mf, op, struct_name, cmd_struct, should_pack, skip_write)\
-    SEND_ICMD_FLOW_GENERIC(mf, op, struct_name, cmd_struct, should_pack, skip_write, struct_name##_pack, struct_name##_unpack)
-
-#define SEND_UNION_ICMD_FLOW(mf, op, struct_name, cmd_struct, should_pack, skip_write)\
-    int _rc;\
-    int _cmd_size = struct_name##_size();\
-    u_int8_t _data[_cmd_size];\
-    memset(_data, 0, _cmd_size);\
-    if (should_pack) {\
-        struct_name##_in_pack(&(cmd_struct->in), _data);\
-    }\
-    _rc = icmd_send_command(mf, op, _data, _cmd_size, skip_write);\
-    if (_rc) {\
-        return convert_rc(_rc);\
-    }\
-    struct_name##_unpack(cmd_struct, _data);\
-    return GCIF_STATUS_SUCCESS
-
-
-#endif
diff --git a/cmdif/icmd_cif_open.c b/cmdif/icmd_cif_open.c
deleted file mode 100644 (file)
index 84e8bb9..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdio.h>
-#include <bit_slice.h>
-#include <mtcr.h>
-
-#include "icmd_cif_common.h"
-#include "icmd_cif_open.h"
-#include "icmd_cif_macros.h"
-
-
-/*
- * gcif_get_fw_info
- */
-int gcif_get_fw_info(mfile *mf,
-                     OUT struct connectib_icmd_get_fw_info* fw_info)
-{
-    SEND_ICMD_FLOW(mf, GET_FW_INFO, connectib_icmd_get_fw_info, fw_info, 0, 1);
-}
diff --git a/cmdif/icmd_cif_open.h b/cmdif/icmd_cif_open.h
deleted file mode 100644 (file)
index 79d9bfe..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef _ICMD_OPEN_LIB     /* guard */
-#define _ICMD_OPEN_LIB
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <mtcr.h>
-#include <common/compatibility.h>
-#include <tools_layouts/connectib_layouts.h>
-#include "icmd_cif_common.h"
-
-#define IN
-#define OUT
-#define INOUT
-
-
-int gcif_get_fw_info(mfile *mf,
-                     OUT struct connectib_icmd_get_fw_info* fw_info);
-
-#undef IN
-#undef OUT
-#undef INOUT
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/cmdif/tools_cif.c b/cmdif/tools_cif.c
deleted file mode 100644 (file)
index c6afc68..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/* Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id$
- *
- */
-
-#include <common/compatibility.h>
-#include <common/bit_slice.h>
-
-#if !defined (__FreeBSD__) && !defined(UEFI_BUILD)
-#include <mtcr_tools_cif.h>
-#endif
-
-#include "tools_cif.h"
-
-#define TOOLS_HCR_MAX_MBOX 288
-#define QUERY_DEV_CAP_OP 0x3
-#define QUERY_DEF_PARAMS_OP 0x73
-#define HW_ACCESS_OP 0x60
-
-#define QPC_READ_OP 0x67
-#define QPC_WRITE_OP 0x69
-
-#define CHECK_RC(rc) \
-    if (rc) return rc;
-
-#define BE32_TO_CPU(s, n) do {                                          \
-       u_int32_t i;                                                   \
-    u_int32_t *p = (u_int32_t *)(s);                               \
-    for (i=0; i<(n); i++,p++)                                      \
-        *p = __be32_to_cpu(*p);                                    \
-    } while(0)
-
-#if __BYTE_ORDER == __BIG_ENDIAN
-
-#define SWAP_DW_BE(uint64_num)\
-    (((uint64_num) & 0xffffffffULL) << 32) | (((uint64_num) >> 32) & 0xffffffffULL)
-
-#else
-#define SWAP_DW_BE(uint64_num) (uint64_num)
-#endif
-
-//TODO: adrianc: if we find ourselves adding more and more commands consider using a macro to save code.
-//TODO: adrianc: when library expands consider returning its own error code
-
-MError tcif_query_dev_cap(mfile *dev, u_int32_t offset, u_int64_t* data)
-{
-    int rc = tools_cmdif_send_mbox_command(dev, 0, QUERY_DEV_CAP_OP, 0, offset, (u_int32_t*)data, 8, 1); CHECK_RC(rc);
-    BE32_TO_CPU(data, 2);
-    *data = SWAP_DW_BE(*data);
-    return ME_OK;
-}
-
-
-MError tcif_query_global_def_params(mfile* dev, struct tools_open_query_def_params_global* global_params)
-{
-    u_int8_t data[TOOLS_OPEN_QUERY_DEF_PARAMS_GLOBAL_SIZE] = {0};
-    int rc = tools_cmdif_send_mbox_command(dev, 0, QUERY_DEF_PARAMS_OP, 0, 0, data, sizeof(data), 0);CHECK_RC(rc);
-    tools_open_query_def_params_global_unpack(global_params, data);
-    return ME_OK;
-}
-
-
-MError tcif_query_per_port_def_params(mfile* dev, u_int8_t port, struct tools_open_query_def_params_per_port* port_params)
-{
-    u_int8_t data[TOOLS_OPEN_QUERY_DEF_PARAMS_PER_PORT_SIZE] = {0};
-    int rc = tools_cmdif_send_mbox_command(dev, 0, QUERY_DEF_PARAMS_OP, port, 0, data, sizeof(data), 0);CHECK_RC(rc);
-    tools_open_query_def_params_per_port_unpack(port_params, data);
-    return ME_OK;
-}
-
-
-MError tcif_qpc_context_read(mfile* dev, u_int32_t qpn, u_int32_t source, u_int8_t* data, u_int32_t len)
-{
-    u_int32_t input_mod = 0;
-    input_mod = MERGE(input_mod, source, 24,  8);
-    input_mod = MERGE(input_mod, qpn   ,  0, 24);
-    int rc = tools_cmdif_send_mbox_command(dev, input_mod, QPC_READ_OP, 0, 0, data, len, 1);
-    CHECK_RC(rc);
-    return ME_OK;
-}
-
-
-MError tcif_qpc_context_write(mfile* dev, u_int32_t qpn, u_int32_t source, u_int8_t* data, u_int32_t len)
-{
-    u_int32_t input_mod = 0;
-    input_mod = MERGE(input_mod, source, 24,  8);
-    input_mod = MERGE(input_mod, qpn   ,  0, 24);
-    int rc = tools_cmdif_send_mbox_command(dev, input_mod, QPC_WRITE_OP, 0, 0, data, len, 0);
-    CHECK_RC(rc);
-    return ME_OK;
-}
-
-
-MError tcif_hw_access(mfile* dev, u_int64_t key, int lock_unlock)
-{
-    return tools_cmdif_send_inline_cmd(dev, key, NULL, 0, HW_ACCESS_OP, lock_unlock);
-}
-const char* tcif_err2str(MError rc) {
-    return m_err2str(rc);
-}
-
-
-MError tcif_cr_mbox_supported(mfile* dev)
-{
-#if defined(__FreeBSD__) || defined(UEFI_BUILD)
-    (void)dev;
-    return ME_NOT_IMPLEMENTED;
-#else
-    return tools_cmdif_is_cr_mbox_supported(dev);
-#endif
-
-}
diff --git a/cmdif/tools_cif.h b/cmdif/tools_cif.h
deleted file mode 100644 (file)
index 6b636fa..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/* Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id$
- *
- */
-
-#ifndef TOOLS_CIF_H
-#define TOOLS_CIF_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <mtcr.h>
-#include <tools_layouts/tools_open_layouts.h>
-
-
-/**
- * tcif_query_dev_cap:
- * @param[in]  dev           A pointer to a device context.
- * @param[in]  offs          offset in even dword to read from the DEV_CAP vector
- * @param[out] data          Quad-word read from the device capabilities vector from offset: offs
-
- * @return     One of the MError* values, or a raw
- **/
-MError tcif_query_dev_cap(mfile* dev, u_int32_t offs, u_int64_t* data);
-
-/**
- * tcif_query_global_def_params:
- * @param[in]     dev           A pointer to a device context.
- * @param[in/out] global_params pointer to global params struct
-
- * @return     One of the MError* values, or a raw
- **/
-MError tcif_query_global_def_params(mfile* dev, struct tools_open_query_def_params_global* global_params);
-
-/**
- * tcif_query_per_port_def_params:
- * @param[in]     dev           A pointer to a device context.
- * @param[in]     port          Port that the query will be performed on (1 or 2)
- * @param[in/out] port_params   Pointer to port params struct
-
- * @return     One of the MError* values, or a raw
- **/
-MError tcif_query_per_port_def_params(mfile* dev, u_int8_t port, struct tools_open_query_def_params_per_port* port_params);
-
-/**
- * tcif_qpc_context_read:
- * @param[in]     dev           A pointer to a device context.
- * @param[in]     qpn           QP Number
- * @param[in]     source        QP Source
- * @param[in]     data          Data that was read
- *
- * @return     One of the MError* values, or a raw
- **/
-MError tcif_qpc_context_read(mfile* dev, u_int32_t qpn, u_int32_t source, u_int8_t* data, u_int32_t len);
-
-/**
- * tcif_qpc_context_write:
- * @param[in]     dev           A pointer to a device context.
- * @param[in]     qpn           QP Number
- * @param[in]     source        QP Source
- * @param[in]     data          Data to be written
- *
- * @return     One of the MError* values, or a raw
- **/
-MError tcif_qpc_context_write(mfile* dev, u_int32_t qpn, u_int32_t source, u_int8_t* data, u_int32_t len);
-
-
-/**
- * tcif_hw_access:
- * @param[in]  dev           A pointer to a device context.
- * @param[in]  key           key with which we attempt to lock/unlock the cr-space (should be 0 for locking)
- * @param[out] lock_unlock   1-lock , 0-unlock
-
- * @return     One of the MError* values, or a raw
- **/
-MError tcif_hw_access(mfile* dev, u_int64_t key, int lock_unlock);
-
-/**
- * tcif_cr_mailbox_supported:
- * @param[in]  dev           A pointer to a device context.
-
- * @return     ME_OK                - cr mailbox supported
- *             ME_SEM_LOCKED        - tools HCR semaphore locked
- *             ME_CMDIF_NOT_SUPP    - cr mailbox not supported
- **/
-MError tcif_cr_mbox_supported(mfile* dev);
-
-/**
- * tcif_err2str:
- * @param[in]  rc            return code from one of the above functions
-
- * @return     string describing the error occured.
- **/
-const char* tcif_err2str(MError rc);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* TOOLS_CIF_H */
diff --git a/cmdparser/Makefile.am b/cmdparser/Makefile.am
deleted file mode 100644 (file)
index 952a074..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-
-AM_CPPFLAGS = -W  -g -MP -MD -fPIC
-
-noinst_LIBRARIES = libcmdparser.a
-
-libcmdparser_a_SOURCES = cmdparser.cpp my_getopt.c cmdparser.h my_getopt.h
-
diff --git a/cmdparser/cmdparser.cpp b/cmdparser/cmdparser.cpp
deleted file mode 100644 (file)
index 0e38a05..0000000
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <errno.h>
-#include "my_getopt.h"
-#include "cmdparser.h"
-
-
-/****************************************************/
-typedef vector < bool > vec_bool;
-
-
-/****************************************************/
-/************class CommandLineRequester**************/
-/****************************************************/
-/* private methods */
-string CommandLineRequester::BuildOptStr(option_ifc_t &opt)
-{
-    string str;
-
-    if (opt.option_short_name != ' ') {
-        str += "-";
-        str += opt.option_short_name;
-        str += "|";
-    }
-    str += "--";
-    str += opt.option_name;
-    if (opt.option_value != "") {
-        str += " ";
-        str += opt.option_value;
-    }
-    return str;
-}
-
-
-/* public methods */
-#define OPT_STR_LEN 40
-#define OPT_DESC_LEN 40
-#define PREFIX_SPACE "        "
-#define PREFIX_SHORT_SPACE "    "
-
-
-string CommandLineRequester::GetUsageSynopsis(bool hidden_options)
-{
-    string str = "";
-    string curr_str = PREFIX_SPACE;
-
-    for (vec_option_t::iterator it = this->options.begin(); it != this->options.end(); ++it) {
-        if (hidden_options == false) {          //display only not hidden options
-            if ((*it).hidden == true) {
-                continue;
-            }
-        } else {                                //display only hidden options
-            if ((*it).hidden == false) {
-                continue;
-            }
-        }
-
-        curr_str += (*it).is_mandatory ? "<" : "[";
-        curr_str += this->BuildOptStr(*it);
-        curr_str += (*it).is_mandatory ? ">" : "]";
-        if (curr_str.size() < OPT_STR_LEN) {
-            curr_str += " ";
-        } else {
-            str += curr_str;
-            str += "\n";
-            curr_str = PREFIX_SPACE;
-        }
-    }
-    if (curr_str != PREFIX_SPACE) {
-        str += curr_str;
-        str += "\n";
-    }
-
-    if (str != "") {
-        str = PREFIX_SHORT_SPACE + this->name + "\n" + str;
-    }
-
-    return str;
-}
-
-
-string CommandLineRequester::GetUsageDescription()
-{
-    if (this->description == "")
-        return "";
-    string str = this->description;
-
-    int prev_found = 0;
-    int found2 = str.find('\n', prev_found);
-    int found = str.find(" ", prev_found);
-    while (found != (int)string::npos) {
-        if ((found2 != (int)string::npos) && (found2 < found)) {
-            prev_found = found2;
-        }
-        if ((found - prev_found) > OPT_DESC_LEN + OPT_STR_LEN) {
-            prev_found = found + 1;
-            str.insert(found + 1, "\n");
-        }
-        found2 = str.find('\n', found + 1);
-        found = str.find(" ", found + 1);
-    }
-
-    prev_found = 0;
-    found = str.find('\n', prev_found);
-    while (found != (int)string::npos) {
-        str.insert(found + 1, PREFIX_SPACE);
-        prev_found = found + strlen(PREFIX_SPACE);
-        found = str.find('\n', prev_found);
-    }
-
-    str = PREFIX_SPACE + str;
-    str = PREFIX_SHORT_SPACE + this->name + "\n" + str + "\n";
-
-    return str;
-}
-
-
-string CommandLineRequester::GetUsageOptions(bool hidden_options)
-{
-    string str = "";
-    string opt_str, desc_str;
-
-    for (vec_option_t::iterator it = this->options.begin(); it != this->options.end(); ++it) {
-        if (hidden_options == false) {          //display only not hidden options
-            if ((*it).hidden == true) {
-                continue;
-            }
-        } else {                                //display only hidden options
-            if ((*it).hidden == false) {
-                continue;
-            }
-        }
-
-        opt_str = PREFIX_SPACE;
-        opt_str += this->BuildOptStr(*it);
-        while (opt_str.size() < OPT_STR_LEN - 2)
-            opt_str += " ";
-        opt_str += ": ";
-
-        desc_str = (*it).description;
-        int prev_found = 0;
-        int found2 = desc_str.find('\n', prev_found);
-        int found = desc_str.find(" ", prev_found);
-        while (found != (int)string::npos) {
-            if ((found2 != (int)string::npos) && (found2 < found)) {
-                prev_found = found2;
-            }
-            if ((found - prev_found + 1) > OPT_DESC_LEN) {
-                prev_found = found + 1;
-                desc_str.insert(found + 1, "\n");
-            }
-            found2 = desc_str.find('\n', found + 1);
-            found = desc_str.find(" ", found + 1);
-        }
-
-        prev_found = 0;
-        found = desc_str.find('\n', prev_found);
-        while (found != (int)string::npos) {
-            for (int i = 0; i < OPT_STR_LEN; ++i)
-                desc_str.insert(found + 1, " ");
-            prev_found = found + OPT_STR_LEN;
-            found = desc_str.find('\n', prev_found);
-        }
-
-        str += opt_str;
-        str += desc_str;
-        str += "\n";
-    }
-
-    if (str != "") {
-        str = PREFIX_SHORT_SPACE + this->name + "\n" + str;
-    }
-
-    return str;
-}
-
-
-/****************************************************/
-/**************class CommandLineParser***************/
-/****************************************************/
-/* private methods */
-void CommandLineParser::SetLastError(const char *fmt, ...)
-{
-    char buff[1024];
-    va_list args;
-
-    memset(buff, 0, sizeof(buff));
-    va_start(args, fmt);
-    vsprintf(buff, fmt, args);
-    va_end(args);
-
-    this->last_error.assign(buff);
-    return;
-}
-
-
-/* public methods */
-int CommandLineParser::AddRequester(CommandLineRequester *p_req)
-{
-    for (vec_option_t::iterator it = p_req->GetOptions().begin();
-            it != p_req->GetOptions().end(); ++it) {
-        //long option must be valid
-        if ((*it).option_name == "") {
-            this->SetLastError("Requester \"%s\" has long option empty",
-                    p_req->GetName().c_str());
-            return 1;
-        }
-
-        //check if long option already exists
-        map_str_p_command_line_req::iterator it2 =
-                this->long_opt_to_req_map.find((*it).option_name);
-        if (it2 != this->long_opt_to_req_map.end()) {
-            this->SetLastError("Option \"%s\" from requester \"%s\" "   \
-                    "already exists in requester \"%s\"",
-                    (*it).option_name.c_str(),
-                    p_req->GetName().c_str(),
-                    (*it2).second->GetName().c_str());
-            return 1;
-        }
-
-        //check if short option already exists
-        if ((*it).option_short_name != ' ') {   //if space than no short option
-            map_char_str::iterator it2 =
-                    this->short_opt_to_long_opt.find((*it).option_short_name);
-            if (it2 != this->short_opt_to_long_opt.end()) {
-                this->SetLastError("Option \'%c\' from requester \"%s\" "   \
-                        "already exists in requester \"%s\"",
-                        (*it).option_short_name,
-                        p_req->GetName().c_str(),
-                        this->long_opt_to_req_map[(*it2).second]->GetName().c_str());
-                return 1;
-            }
-        }
-    }
-
-    //finally add the requester
-    for (vec_option_t::iterator it = p_req->GetOptions().begin();
-            it != p_req->GetOptions().end(); ++it) {
-        this->long_opt_to_req_map[(*it).option_name] = p_req;
-        if ((*it).option_short_name != ' ') //if space than no short option
-            this->short_opt_to_long_opt[(*it).option_short_name] = (*it).option_name;
-    }
-    this->p_requesters_list.push_back(p_req);
-    return 0;
-}
-
-
-string CommandLineParser::GetUsage(bool hidden_options)
-{
-    string res;
-
-    //name
-    res = "NAME\n";
-    res += PREFIX_SHORT_SPACE;
-    res += this->name;
-    res += "\n";
-
-    //synopsis
-    res += "SYNOPSIS\n";
-    for (list_p_command_line_req::iterator it = this->p_requesters_list.begin();
-            it != this->p_requesters_list.end(); ++it) {
-        res += (*it)->GetUsageSynopsis(hidden_options);
-    }
-
-    //description
-    if (hidden_options == false) {
-        res += "DESCRIPTION\n";
-        for (list_p_command_line_req::iterator it = this->p_requesters_list.begin();
-                it != this->p_requesters_list.end(); ++it) {
-            res += (*it)->GetUsageDescription();
-        }
-    }
-
-    //options
-    res += "OPTIONS\n";
-    for (list_p_command_line_req::iterator it = this->p_requesters_list.begin();
-            it != this->p_requesters_list.end(); ++it) {
-        res += (*it)->GetUsageOptions(hidden_options);
-    }
-    return res;
-}
-
-
-ParseStatus CommandLineParser::ParseOptions(int argc, char **argv,
-        bool to_ignore_unknown_options, list_p_command_line_req *p_ignored_requesters_list)
-{
-    char **internal_argv;
-    struct option *options_arr = NULL;
-    string options_str = "";
-    vec_bool returned_option_types_vec;
-    ParseStatus rc = PARSE_ERROR;
-    unsigned num_options = 0;
-    int option_type;
-    int option_index = 0;
-    unsigned i = 0;
-
-    //allocate internal_argv
-    internal_argv = new char *[argc];
-    if (!internal_argv) {
-        this->SetLastError("Fail to allocate internal argv for parsing");
-        return PARSE_ERROR;
-    }
-    for (int j = 0; j < argc; ++j) {
-        internal_argv[j] = NULL;
-    }
-    for (int j = 0; j < argc; ++j) {
-        internal_argv[j] = new char[strlen(argv[j]) + 1];
-        if (!internal_argv[j]) {
-            this->SetLastError("Fail to allocate internal argv[%u] for parsing", j);
-            rc = PARSE_ERROR;
-                       goto argv_err_exit;
-        }
-        strcpy(internal_argv[j], argv[j]);
-    }
-
-    //allocate long_options_arr
-    num_options = this->long_opt_to_req_map.size();
-    options_arr = new struct option[num_options + 1];
-    if (!options_arr) {
-        this->SetLastError("Fail to allocate long_options_arr");
-        rc = PARSE_ERROR;
-        goto parse_exit;
-    }
-    memset(options_arr, 0, sizeof(struct option)*(num_options + 1));
-
-    /*
-     * fill options array and options string with
-     *  getopt_long_only() formats
-     * also create vector of possible options type
-     * that can be return by getopt_long_only()
-     */
-    i = 0;
-    for (list_p_command_line_req::iterator it = this->p_requesters_list.begin();
-            it != this->p_requesters_list.end(); ++it) {
-        for (vec_option_t::iterator it2 = (*it)->GetOptions().begin();
-                it2 != (*it)->GetOptions().end(); ++it2) {
-            options_str += (*it2).option_short_name;
-            options_arr[i].name = (*it2).option_name.c_str();
-            if ((*it2).option_value != "") {
-                options_arr[i].has_arg = 1;
-                options_str += ":";
-            } else {
-                options_arr[i].has_arg = 0;
-            }
-            options_arr[i].flag = 0;
-            if ((*it2).option_short_name != ' ') {
-                options_arr[i].val = (*it2).option_short_name;
-            } else {
-                options_arr[i].val = 0;
-            }
-
-            if (returned_option_types_vec.empty() || (returned_option_types_vec.size() < (unsigned int)options_arr[i].val + 1))
-                    for (unsigned j = returned_option_types_vec.size(); j < (unsigned int)options_arr[i].val + 1; ++j)
-                        returned_option_types_vec.push_back(false);
-            returned_option_types_vec[options_arr[i].val] = true;
-            //printf("%c %d ", options_arr[i].val, options_arr[i].val);
-            ++i;
-        }
-    }
-
-    //finally parse all options
-    if (to_ignore_unknown_options == true)
-        tools_opterr = 0;
-    else
-        tools_opterr = 1;
-    tools_optind = 0;
-
-    ParseStatus curr_result;
-    while ((option_type = tools_getopt_long_only(argc, internal_argv, options_str.c_str(),
-            options_arr, &option_index)) != -1) {
-        //printf("option_type=\'%c\'\n", option_type);
-
-        string long_opt_name;
-        if (option_type == 0) {
-            long_opt_name = options_arr[option_index].name;
-            goto do_handle_option;
-        } else if (option_type == '?') {
-            if (to_ignore_unknown_options == true)
-                continue;
-            this->SetLastError("Bad input parameter");
-            goto parse_exit;
-        } else if (returned_option_types_vec[option_type] == true) {
-            long_opt_name = this->short_opt_to_long_opt[option_type];
-            goto do_handle_option;
-        } else {
-            this->SetLastError("getopt_long_only() returned character code 0%o", option_type);
-            goto parse_exit;
-        }
-
-do_handle_option:
-        CommandLineRequester *p_req = this->long_opt_to_req_map[long_opt_name];
-        bool ignore_this_req = false;
-        if (p_ignored_requesters_list)
-            for (list_p_command_line_req::iterator it = p_ignored_requesters_list->begin();
-                    it != p_ignored_requesters_list->end(); ++it) {
-                if (p_req == (*it)) {
-                    ignore_this_req = true;
-                    break;
-                }
-            }
-        if (ignore_this_req == false) {
-            curr_result = p_req->HandleOption(long_opt_name, (tools_optarg == NULL) ? "" : tools_optarg);
-            if (curr_result) {
-                rc = curr_result;
-                this->SetLastError("Failed to handle option %s", long_opt_name.c_str());
-                goto parse_exit;
-            }
-        }
-        continue;
-    }
-
-    if (tools_optind < argc) {
-        while (tools_optind < argc) {
-            this->last_unknown_options += internal_argv[tools_optind];
-            this->last_unknown_options += " ";
-            ++tools_optind;
-        }
-        /*if (this->last_unknown_options != "")   //remove last space
-            this->last_unknown_options.erase(this->last_unknown_options.end() - 1,
-                    this->last_unknown_options.end());*/
-        if (to_ignore_unknown_options == false) {
-            string str = "Found some non-option ARGV-elements ";
-            str += this->last_unknown_options;
-            this->SetLastError(str.c_str());
-            goto parse_exit;
-        }
-    }
-
-    rc = PARSE_OK;
-parse_exit:
-    for (int i = 0; i < argc; ++i)
-        delete [] internal_argv[i];
-    delete [] internal_argv;
-    delete [] options_arr;
-    return rc;
-argv_err_exit:
-       for (int i = 0; i < argc; ++i)
-        delete [] internal_argv[i];
-    delete [] internal_argv;
-    return rc;
-}
-
diff --git a/cmdparser/cmdparser.h b/cmdparser/cmdparser.h
deleted file mode 100644 (file)
index 5501fac..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#ifndef _OPT_PARSER_H_
-#define _OPT_PARSER_H_
-
-
-#include <stdlib.h>
-#include <list>
-#include <vector>
-#include <map>
-#include <string>
-using namespace std;
-
-
-/******************************************************/
-typedef enum
-{
-    //Returns: 0 - OK / 1 - parsing error / 2 - OK but need to exit / 3 - some other error
-    PARSE_OK = 0,
-    PARSE_ERROR = 1,
-    PARSE_OK_WITH_EXIT = 3,
-    PARSE_ERROR_SHOW_USAGE = 4
-} ParseStatus;
-
-typedef struct option_ifc {
-    string option_name;             //must be valid
-    char   option_short_name;       //can be used as short option, if space than no short flag
-    string option_value;            //if "" has no argument
-    string description;             //will be display in usage
-    bool hidden;                    //if hidden than will not be diaplayed in regular usage
-    bool is_mandatory;
-} option_ifc_t;
-
-typedef vector < struct option_ifc > vec_option_t;
-
-
-class CommandLineRequester {
-protected:
-    // members
-    vec_option_t options;
-    string name;
-    string description;
-
-    // methods
-    string BuildOptStr(option_ifc_t &opt);
-
-public:
-    // methods
-    CommandLineRequester(string req_name) : name(req_name) {}
-    virtual ~CommandLineRequester() {}
-
-    inline void AddOptions(option_ifc_t options[], int arr_size) {
-        for (int i = 0; i < arr_size; ++i)
-            this->options.push_back(options[i]);
-    }
-    inline void AddOptions(string option_name,
-            char option_short_name,
-            string option_value,
-            string description,
-           bool hidden = false,
-           bool is_mandatory = false) {
-        option_ifc_t opt;
-        opt.option_name = option_name;
-        opt.option_short_name = option_short_name;
-        opt.option_value = option_value;
-        opt.description = description;
-        opt.hidden = hidden;
-       opt.is_mandatory = is_mandatory;
-        this->options.push_back(opt);
-    }
-    inline void AddDescription(string desc) { this->description = desc; }
-    inline vec_option_t& GetOptions() { return this->options; }
-    inline string& GetName() { return this->name; }
-
-    string GetUsageSynopsis(bool hidden_options = false);
-    string GetUsageDescription();
-    string GetUsageOptions(bool hidden_options = false);
-
-    virtual ParseStatus HandleOption(string name, string value) = 0;
-};
-
-
-/******************************************************/
-typedef list < CommandLineRequester * > list_p_command_line_req;
-typedef map < char, string > map_char_str;
-typedef map < string, CommandLineRequester * > map_str_p_command_line_req;
-
-
-class CommandLineParser {
-private:
-    // members
-    list_p_command_line_req p_requesters_list;
-    map_char_str short_opt_to_long_opt;
-    map_str_p_command_line_req long_opt_to_req_map;
-
-    string name;
-    string last_error;
-    string last_unknown_options;
-
-    // methods
-    void SetLastError(const char *fmt, ...);
-
-public:
-    // methods
-    CommandLineParser(string parser_name) :
-        name(parser_name), last_error(""), last_unknown_options("") {}
-    ~CommandLineParser() {}
-
-    inline const char * GetErrDesc() { return this->last_error.c_str(); }
-    inline const char * GetUnknownOptions() { return this->last_unknown_options.c_str(); }
-
-    int AddRequester(CommandLineRequester *p_req);      //if multiple option than fail
-
-    ParseStatus ParseOptions(int argc, char **argv,
-            bool to_ignore_unknown_options = false,
-            list_p_command_line_req *p_ignored_requesters_list = NULL);
-
-    string GetUsage(bool hidden_options = false);
-};
-
-
-#endif          /* not defined _OPT_PARSER_H_ */
diff --git a/cmdparser/my_getopt.c b/cmdparser/my_getopt.c
deleted file mode 100755 (executable)
index be6281d..0000000
+++ /dev/null
@@ -1,1086 +0,0 @@
- /* Getopt for GNU.
-    NOTE: getopt is now part of the C library, so if you don't know what
-    "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
-    before changing it!
-
-    Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97
-         Free Software Foundation, Inc.
-
-    The GNU C Library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Library General Public License as
-    published by the Free Software Foundation; either version 2 of the
-    License, or (at your option) any later version.
-
-    The GNU C Library 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
-    Library General Public License for more details.
-
-    You should have received a copy of the GNU Library General Public
-    License along with the GNU C Library; see the file COPYING.LIB.  If not,
-    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-    Boston, MA 02111-1307, USA.  */
\f
- /* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
-    Ditto for AIX 3.2 and <stdlib.h>.  */
- #ifndef _NO_PROTO
- #define _NO_PROTO
- #endif
-
- #ifdef HAVE_CONFIG_H
- #include <config.h>
- #endif
-
- #if !defined (__STDC__) || !__STDC__
- /* This is a separate conditional since some stdc systems
-    reject `defined (const)'.  */
- #ifndef const
- #define const
- #endif
- #endif
-
- #include <stdio.h>
-
- /* Comment out all this code if we are using the GNU C Library, and are not
-    actually compiling the library itself.  This code is part of the GNU C
-    Library, but also included in many other GNU distributions.  Compiling
-    and linking in this code is a waste when using the GNU C library
-    (especially if it is a shared library).  Rather than having every GNU
-    program understand `configure --with-gnu-libc' and omit the object files,
-    it is simpler to just do this in the source for each such file.  */
-
- #define GETOPT_INTERFACE_VERSION 2
- #if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2
- #include <gnu-versions.h>
- #if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
- #define ELIDE_CODE
- #endif
- #endif
-
-
-
- /* This needs to come after some library #include
-    to get __GNU_LIBRARY__ defined.  */
- #ifdef  __GNU_LIBRARY__
- /* Don't include stdlib.h for non-GNU C libraries because some of them
-    contain conflicting prototypes for getopt.  */
- #include <stdlib.h>
- #include <unistd.h>
- #endif  /* GNU C library.  */
-
- #ifdef HAVE_STRING_H
- # include <string.h>       /* strstr / strdup */
- #else
- # ifdef HAVE_STRINGS_H
- #  include <strings.h>       /* strstr / strdup */
- # endif
- #endif
-
- #ifdef VMS
- #include <unixlib.h>
- #if HAVE_STRING_H - 0
- #include <string.h>
- #endif
- #endif
-#include <string.h>
- #ifndef _
- /* This is for other GNU distributions with internationalized messages.
-    When compiling libc, the _ macro is predefined.  */
- #ifdef HAVE_LIBINTL_H
- # include <libintl.h>
- # define _(msgid)       gettext (msgid)
- #else
- # define _(msgid)       (msgid)
- #endif
- #endif
-
- /* This version of `getopt' appears to the caller like standard Unix `getopt'
-    but it behaves differently for the user, since it allows the user
-    to intersperse the options with the other arguments.
-
-    As `getopt' works, it permutes the elements of ARGV so that,
-    when it is done, all the options precede everything else.  Thus
-    all application programs are extended to handle flexible argument order.
-
-    Setting the environment variable POSIXLY_CORRECT disables permutation.
-    Then the behavior is completely standard.
-
-    GNU application programs can use a third alternative mode in which
-    they can distinguish the relative order of options and other arguments.  */
-
- #include "my_getopt.h"
-
- /* For communication from `getopt' to the caller.
-    When `getopt' finds an option that takes an argument,
-    the argument value is returned here.
-    Also, when `ordering' is RETURN_IN_ORDER,
-    each non-option ARGV-element is returned here.  */
-
- char *tools_optarg = NULL;
-
- /* Index in ARGV of the next element to be scanned.
-    This is used for communication to and from the caller
-    and for communication between successive calls to `getopt'.
-
-    On entry to `getopt', zero means this is the first call; initialize.
-
-    When `getopt' returns -1, this is the index of the first of the
-    non-option elements that the caller should itself scan.
-
-    Otherwise, `tools_optind' communicates from one call to the next
-    how much of ARGV has been scanned so far.  */
-
- /* 1003.2 says this must be 1 before any call.  */
- int tools_optind = 1;
-
- /* Formerly, initialization of getopt depended on tools_optind==0, which
-    causes problems with re-calling getopt as programs generally don't
-    know that. */
-
- int __getopt_initialized = 0;
-
- /* The next char to be scanned in the option-element
-    in which the last option character we returned was found.
-    This allows us to pick up the scan where we left off.
-
-    If this is zero, or a null string, it means resume the scan
-    by advancing to the next ARGV-element.  */
-
- static char *nextchar;
-
- /* Callers store zero here to inhibit the error message
-    for unrecognized options.  */
-
- int tools_opterr = 1;
-
- /* Set to an option character which was unrecognized.
-    This must be initialized on some systems to avoid linking in the
-    system's own getopt implementation.  */
-
- int tools_optopt = '?';
-
- /* Describe how to deal with options that follow non-option ARGV-elements.
-
-    If the caller did not specify anything,
-    the default is REQUIRE_ORDER if the environment variable
-    POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
-    REQUIRE_ORDER means don't recognize them as options;
-    stop option processing when the first non-option is seen.
-    This is what Unix does.
-    This mode of operation is selected by either setting the environment
-    variable POSIXLY_CORRECT, or using `+' as the first character
-    of the list of option characters.
-
-    PERMUTE is the default.  We permute the contents of ARGV as we scan,
-    so that eventually all the non-options are at the end.  This allows options
-    to be given in any order, even with programs that were not written to
-    expect this.
-
-    RETURN_IN_ORDER is an option available to programs that were written
-    to expect options and other ARGV-elements in any order and that care about
-    the ordering of the two.  We describe each non-option ARGV-element
-    as if it were the argument of an option with character code 1.
-    Using `-' as the first character of the list of option characters
-    selects this mode of operation.
-
-    The special argument `--' forces an end of option-scanning regardless
-    of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
-    `--' can cause `getopt' to return -1 with `tools_optind' != ARGC.  */
-
- static enum
- {
-   REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
- } ordering;
-
- /* Value of POSIXLY_CORRECT environment variable.  */
- static char *posixly_correct;
\f
- #ifdef  __GNU_LIBRARY__
- /* We want to avoid inclusion of string.h with non-GNU libraries
-    because there are many ways it can cause trouble.
-    On some systems, it contains special magic macros that don't work
-    in GCC.  */
- #include <string.h>
- #define my_index        strchr
- #else
-
- /* Avoid depending on library functions or files
-    whose names are inconsistent.  */
-
- char *getenv ();
-
- static char *
- my_index (str, chr)
-      const char *str;
-      int chr;
- {
-   while (*str)
-     {
-       if (*str == chr)
-         return (char *) str;
-       str++;
-     }
-   return 0;
- }
-
- /* If using GCC, we can safely declare strlen this way.
-    If not using GCC, it is ok not to declare it.  */
- #ifdef __GNUC__
- /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
-    That was relevant to code that was here before.  */
- #if !defined (__STDC__) || !__STDC__
- /* gcc with -traditional declares the built-in strlen to return int,
-    and has done so at least since version 2.4.5. -- rms.  */
- extern int strlen (const char *);
- #endif /* not __STDC__ */
- #endif /* __GNUC__ */
-
- #endif /* not __GNU_LIBRARY__ */
\f
- /* Handle permutation of arguments.  */
-
- /* Describe the part of ARGV that contains non-options that have
-    been skipped.  `first_nonopt' is the index in ARGV of the first of them;
-    `last_nonopt' is the index after the last of them.  */
-
- static int first_nonopt;
- static int last_nonopt;
-
- #ifdef _LIBC
- /* Bash 2.0 gives us an environment variable containing flags
-    indicating ARGV elements that should not be considered arguments.  */
-
- /* Defined in getopt_init.c  */
- extern char *__getopt_nonoption_flags;
-
- static int nonoption_flags_max_len;
- static int nonoption_flags_len;
-
- static int original_argc;
- static char *const *original_argv;
-
- /* Make sure the environment variable bash 2.0 puts in the environment
-    is valid for the getopt call we must make sure that the ARGV passed
-    to getopt is that one passed to the process.  */
- static void
- __attribute__ ((unused))
- store_args_and_env (int argc, char *const *argv)
- {
-   /* XXX This is no good solution.  We should rather copy the args so
-      that we can compare them later.  But we must not use malloc(3).  */
-   original_argc = argc;
-   original_argv = argv;
- }
- # ifdef text_set_element
- text_set_element (__libc_subinit, store_args_and_env);
- # endif /* text_set_element */
-
- # define SWAP_FLAGS(ch1, ch2) \
-   if (nonoption_flags_len > 0)                                                \
-     {                                                                         \
-       char __tmp = __getopt_nonoption_flags[ch1];                             \
-       __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];          \
-       __getopt_nonoption_flags[ch2] = __tmp;                                  \
-     }
- #else   /* !_LIBC */
- # define SWAP_FLAGS(ch1, ch2)
- #endif  /* _LIBC */
-
- /* Exchange two adjacent subsequences of ARGV.
-    One subsequence is elements [first_nonopt,last_nonopt)
-    which contains all the non-options that have been skipped so far.
-    The other is elements [last_nonopt,tools_optind), which contains all
-    the options processed since those non-options were skipped.
-
-    `first_nonopt' and `last_nonopt' are relocated so that they describe
-    the new indices of the non-options in ARGV after they are moved.  */
-
- #if defined (__STDC__) && __STDC__
- static void exchange (char **);
- #endif
-
- static void
- exchange (argv)
-      char **argv;
- {
-   int bottom = first_nonopt;
-   int middle = last_nonopt;
-   int top = tools_optind;
-   char *tem;
-
-   /* Exchange the shorter segment with the far end of the longer segment.
-      That puts the shorter segment into the right place.
-      It leaves the longer segment in the right place overall,
-      but it consists of two parts that need to be swapped next.  */
-
- #ifdef _LIBC
-   /* First make sure the handling of the `__getopt_nonoption_flags'
-      string can work normally.  Our top argument must be in the range
-      of the string.  */
-   if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
-     {
-       /* We must extend the array.  The user plays games with us and
-          presents new arguments.  */
-       char *new_str = malloc (top + 1);
-       if (new_str == NULL)
-         nonoption_flags_len = nonoption_flags_max_len = 0;
-       else
-         {
-           memset (__mempcpy (new_str, __getopt_nonoption_flags,
-                              nonoption_flags_max_len),
-                   '\0', top + 1 - nonoption_flags_max_len);
-           nonoption_flags_max_len = top + 1;
-           __getopt_nonoption_flags = new_str;
-         }
-     }
- #endif
-
-   while (top > middle && middle > bottom)
-     {
-       if (top - middle > middle - bottom)
-         {
-           /* Bottom segment is the short one.  */
-           int len = middle - bottom;
-           register int i;
-
-           /* Swap it with the top part of the top segment.  */
-           for (i = 0; i < len; i++)
-             {
-               tem = argv[bottom + i];
-               argv[bottom + i] = argv[top - (middle - bottom) + i];
-               argv[top - (middle - bottom) + i] = tem;
-               SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
-             }
-           /* Exclude the moved bottom segment from further swapping.  */
-           top -= len;
-         }
-       else
-         {
-           /* Top segment is the short one.  */
-           int len = top - middle;
-           register int i;
-
-           /* Swap it with the bottom part of the bottom segment.  */
-           for (i = 0; i < len; i++)
-             {
-               tem = argv[bottom + i];
-               argv[bottom + i] = argv[middle + i];
-               argv[middle + i] = tem;
-               SWAP_FLAGS (bottom + i, middle + i);
-             }
-           /* Exclude the moved top segment from further swapping.  */
-           bottom += len;
-         }
-     }
-
-   /* Update records for the slots the non-options now occupy.  */
-
-   first_nonopt += (tools_optind - last_nonopt);
-   last_nonopt = tools_optind;
- }
-
- /* Initialize the internal data when the first call is made.  */
-
- #if defined (__STDC__) && __STDC__
- static const char *_getopt_initialize (int, char *const *, const char *);
- #endif
- static const char *
- _getopt_initialize (argc, argv, optstring)
-      int argc;
-      char *const *argv;
-      const char *optstring;
- {
-   /* Start processing options with ARGV-element 1 (since ARGV-element 0
-      is the program name); the sequence of previously skipped
-      non-option ARGV-elements is empty.  */
-   // avoid compiler warnings
-   (void) argc;
-   (void) argv;
-   first_nonopt = last_nonopt = tools_optind;
-
-   nextchar = NULL;
-
-   posixly_correct = getenv ("POSIXLY_CORRECT");
-
-   /* Determine how to handle the ordering of options and nonoptions.  */
-
-   if (optstring[0] == '-')
-     {
-       ordering = RETURN_IN_ORDER;
-       ++optstring;
-     }
-   else if (optstring[0] == '+')
-     {
-       ordering = REQUIRE_ORDER;
-       ++optstring;
-     }
-   else if (posixly_correct != NULL)
-     ordering = REQUIRE_ORDER;
-   else
-     ordering = PERMUTE;
-
- #ifdef _LIBC
-   if (posixly_correct == NULL
-       && argc == original_argc && argv == original_argv)
-     {
-       if (nonoption_flags_max_len == 0)
-         {
-           if (__getopt_nonoption_flags == NULL
-               || __getopt_nonoption_flags[0] == '\0')
-             nonoption_flags_max_len = -1;
-           else
-             {
-               const char *orig_str = __getopt_nonoption_flags;
-               int len = nonoption_flags_max_len = strlen (orig_str);
-               if (nonoption_flags_max_len < argc)
-                 nonoption_flags_max_len = argc;
-               __getopt_nonoption_flags =
-                 (char *) malloc (nonoption_flags_max_len);
-               if (__getopt_nonoption_flags == NULL)
-                 nonoption_flags_max_len = -1;
-               else
-                 memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
-                         '\0', nonoption_flags_max_len - len);
-             }
-         }
-       nonoption_flags_len = nonoption_flags_max_len;
-     }
-   else
-     nonoption_flags_len = 0;
- #endif
-
-   return optstring;
- }
\f
- /* Scan elements of ARGV (whose length is ARGC) for option characters
-    given in OPTSTRING.
-
-    If an element of ARGV starts with '-', and is not exactly "-" or "--",
-    then it is an option element.  The characters of this element
-    (aside from the initial '-') are option characters.  If `getopt'
-    is called repeatedly, it returns successively each of the option characters
-    from each of the option elements.
-
-    If `getopt' finds another option character, it returns that character,
-    updating `tools_optind' and `nextchar' so that the next call to `getopt' can
-    resume the scan with the following option character or ARGV-element.
-
-    If there are no more option characters, `getopt' returns -1.
-    Then `tools_optind' is the index in ARGV of the first ARGV-element
-    that is not an option.  (The ARGV-elements have been permuted
-    so that those that are not options now come last.)
-
-    OPTSTRING is a string containing the legitimate option characters.
-    If an option character is seen that is not listed in OPTSTRING,
-    return '?' after printing an error message.  If you set `tools_opterr' to
-    zero, the error message is suppressed but we still return '?'.
-
-    If a char in OPTSTRING is followed by a colon, that means it wants an arg,
-    so the following text in the same ARGV-element, or the text of the following
-    ARGV-element, is returned in `tools_optarg'.  Two colons mean an option that
-    wants an optional arg; if there is text in the current ARGV-element,
-    it is returned in `tools_optarg', otherwise `tools_optarg' is set to zero.
-
-    If OPTSTRING starts with `-' or `+', it requests different methods of
-    handling the non-option ARGV-elements.
-    See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
-
-    Long-named options begin with `--' instead of `-'.
-    Their names may be abbreviated as long as the abbreviation is unique
-    or is an exact match for some defined option.  If they have an
-    argument, it follows the option name in the same ARGV-element, separated
-    from the option name by a `=', or else the in next ARGV-element.
-    When `getopt' finds a long-named option, it returns 0 if that option's
-    `flag' field is nonzero, the value of the option's `val' field
-    if the `flag' field is zero.
-
-    The elements of ARGV aren't really const, because we permute them.
-    But we pretend they're const in the prototype to be compatible
-    with other systems.
-
-    LONGOPTS is a vector of `struct option' terminated by an
-    element containing a name which is zero.
-
-    LONGIND returns the index in LONGOPT of the long-named option found.
-    It is only valid when a long-named option has been found by the most
-    recent call.
-
-    If LONG_ONLY is nonzero, '-' as well as '--' can introduce
-    long-named options.  */
-
- int
- _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
-      int argc;
-      char *const *argv;
-      const char *optstring;
-      const struct option *longopts;
-      int *longind;
-      int long_only;
- {
-   tools_optarg = NULL;
-
-   if (tools_optind == 0 || !__getopt_initialized)
-     {
-       if (tools_optind == 0)
-         tools_optind = 1;     /* Don't scan ARGV[0], the program name.  */
-       optstring = _getopt_initialize (argc, argv, optstring);
-       __getopt_initialized = 1;
-     }
-
-   /* Test whether ARGV[tools_optind] points to a non-option argument.
-      Either it does not have option syntax, or there is an environment flag
-      from the shell indicating it is not an option.  The later information
-      is only used when the used in the GNU libc.  */
- #ifdef _LIBC
- #define NONOPTION_P (argv[tools_optind][0] != '-' || argv[tools_optind][1] == '\0'        \
-                      || (tools_optind < nonoption_flags_len                         \
-                          && __getopt_nonoption_flags[tools_optind] == '1'))
- #else
- #define NONOPTION_P (argv[tools_optind][0] != '-' || argv[tools_optind][1] == '\0')
- #endif
-
-   if (nextchar == NULL || *nextchar == '\0')
-     {
-       /* Advance to the next ARGV-element.  */
-
-       /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
-          moved back by the user (who may also have changed the arguments).  */
-       if (last_nonopt > tools_optind)
-         last_nonopt = tools_optind;
-       if (first_nonopt > tools_optind)
-         first_nonopt = tools_optind;
-
-       if (ordering == PERMUTE)
-         {
-           /* If we have just processed some options following some non-options,
-              exchange them so that the options come first.  */
-
-           if (first_nonopt != last_nonopt && last_nonopt != tools_optind)
-             exchange ((char **) argv);
-           else if (last_nonopt != tools_optind)
-             first_nonopt = tools_optind;
-
-           /* Skip any additional non-options
-              and extend the range of non-options previously skipped.  */
-
-           while (tools_optind < argc && NONOPTION_P)
-             tools_optind++;
-           last_nonopt = tools_optind;
-         }
-
-       /* The special ARGV-element `--' means premature end of options.
-          Skip it like a null option,
-          then exchange with previous non-options as if it were an option,
-          then skip everything else like a non-option.  */
-
-       if (tools_optind != argc && !strcmp (argv[tools_optind], "--"))
-         {
-           tools_optind++;
-
-           if (first_nonopt != last_nonopt && last_nonopt != tools_optind)
-             exchange ((char **) argv);
-           else if (first_nonopt == last_nonopt)
-             first_nonopt = tools_optind;
-           last_nonopt = argc;
-
-           tools_optind = argc;
-         }
-
-       /* If we have done all the ARGV-elements, stop the scan
-          and back over any non-options that we skipped and permuted.  */
-
-       if (tools_optind == argc)
-         {
-           /* Set the next-arg-index to point at the non-options
-              that we previously skipped, so the caller will digest them.  */
-           if (first_nonopt != last_nonopt)
-             tools_optind = first_nonopt;
-           return -1;
-         }
-
-       /* If we have come to a non-option and did not permute it,
-          either stop the scan or describe it to the caller and pass it by.  */
-
-       if (NONOPTION_P)
-         {
-           if (ordering == REQUIRE_ORDER)
-             return -1;
-           tools_optarg = argv[tools_optind++];
-           return 1;
-         }
-
-       /* We have found another option-ARGV-element.
-          Skip the initial punctuation.  */
-
-       nextchar = (argv[tools_optind] + 1
-                   + (longopts != NULL && argv[tools_optind][1] == '-'));
-     }
-
-   /* Decode the current option-ARGV-element.  */
-
-   /* Check whether the ARGV-element is a long option.
-
-      If long_only and the ARGV-element has the form "-f", where f is
-      a valid short option, don't consider it an abbreviated form of
-      a long option that starts with f.  Otherwise there would be no
-      way to give the -f short option.
-
-      On the other hand, if there's a long option "fubar" and
-      the ARGV-element is "-fu", do consider that an abbreviation of
-      the long option, just like "--fu", and not "-f" with arg "u".
-
-      This distinction seems to be the most useful approach.  */
-
-   if (longopts != NULL
-       && (argv[tools_optind][1] == '-'
-           || (long_only && (argv[tools_optind][2] || !my_index (optstring, argv[tools_optind][1])))))
-     {
-       char *nameend;
-       const struct option *p;
-       const struct option *pfound = NULL;
-       int exact = 0;
-       int ambig = 0;
-       int indfound = -1;
-       int option_index;
-
-       for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
-         /* Do nothing.  */ ;
-
-       /* Test all long options for either exact match
-          or abbreviated matches.  */
-       for (p = longopts, option_index = 0; p->name; p++, option_index++)
-         if (!strncmp (p->name, nextchar, nameend - nextchar))
-           {
-             if ((unsigned int) (nameend - nextchar)
-                 == (unsigned int) strlen (p->name))
-               {
-                 /* Exact match found.  */
-                 pfound = p;
-                 indfound = option_index;
-                 exact = 1;
-                 break;
-               }
-             else if (pfound == NULL)
-               {
-                 /* First nonexact match found.  */
-                 pfound = p;
-                 indfound = option_index;
-               }
-             else
-               /* Second or later nonexact match found.  */
-               ambig = 1;
-           }
-
-       if (ambig && !exact)
-         {
-           if (tools_opterr)
-             fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
-                      argv[0], argv[tools_optind]);
-           nextchar += strlen (nextchar);
-           tools_optind++;
-           tools_optopt = 0;
-           return '?';
-         }
-
-       if (pfound != NULL)
-         {
-           option_index = indfound;
-           tools_optind++;
-           if (*nameend)
-             {
-               /* Don't test has_arg with >, because some C compilers don't
-                  allow it to be used on enums.  */
-               if (pfound->has_arg)
-                 {
-                 tools_optarg = nameend + 1;
-                 }
-               else
-                 {
-                   if (tools_opterr) {
-                    if (argv[tools_optind - 1][1] == '-') {
-                     /* --option */
-                     fprintf (stderr,
-                      _("%s: option `--%s' doesn't allow an argument\n"),
-                      argv[0], pfound->name);
-                   } else {
-                     /* +option or -option */
-                     fprintf (stderr,
-                      _("%s: option `%c%s' doesn't allow an argument\n"),
-                      argv[0], argv[tools_optind - 1][0], pfound->name);
-                     }
-                   }
-                   nextchar += strlen (nextchar);
-
-                   tools_optopt = pfound->val;
-                   return '?';
-                 }
-             }
-           else if (pfound->has_arg == 1)
-             {
-               if (tools_optind < argc)
-                 tools_optarg = argv[tools_optind++];
-               else
-                 {
-                   if (tools_opterr)
-                     fprintf (stderr,
-                            _("%s: option `%s' requires an argument\n"),
-                            argv[0], argv[tools_optind - 1]);
-                   nextchar += strlen (nextchar);
-                   tools_optopt = pfound->val;
-                   return optstring[0] == ':' ? ':' : '?';
-                 }
-             }
-           nextchar += strlen (nextchar);
-           if (longind != NULL)
-             *longind = option_index;
-           if (pfound->flag)
-             {
-               *(pfound->flag) = pfound->val;
-               return 0;
-             }
-           return pfound->val;
-         }
-
-       /* Can't find it as a long option.  If this is not getopt_long_only,
-          or the option starts with '--' or is not a valid short
-          option, then it's an error.
-          Otherwise interpret it as a short option.  */
-       if (!long_only || argv[tools_optind][1] == '-'
-           || my_index (optstring, *nextchar) == NULL)
-         {
-           if (tools_opterr)
-             {
-               if (argv[tools_optind][1] == '-')
-                 /* --option */
-                 fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
-                          argv[0], nextchar);
-               else
-                 /* +option or -option */
-                 fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
-                          argv[0], argv[tools_optind][0], nextchar);
-             }
-           nextchar = (char *) "";
-           tools_optind++;
-           tools_optopt = 0;
-           return '?';
-         }
-     }
-
-   /* Look at and handle the next short option-character.  */
-
-   {
-     char c = *nextchar++;
-     char *temp = my_index (optstring, c);
-
-     /* Increment `tools_optind' when we start to process its last character.  */
-     if (*nextchar == '\0')
-       ++tools_optind;
-
-     if (temp == NULL || c == ':')
-       {
-         if (tools_opterr)
-           {
-             if (posixly_correct)
-               /* 1003.2 specifies the format of this message.  */
-               fprintf (stderr, _("%s: illegal option -- %c\n"),
-                        argv[0], c);
-             else
-               fprintf (stderr, _("%s: invalid option -- %c\n"),
-                        argv[0], c);
-           }
-         tools_optopt = c;
-         return '?';
-       }
-     /* Convenience. Treat POSIX -W foo same as long option --foo */
-     if (temp[0] == 'W' && temp[1] == ';')
-       {
-         char *nameend;
-         const struct option *p;
-         const struct option *pfound = NULL;
-         int exact = 0;
-         int ambig = 0;
-         int indfound = 0;
-         int option_index;
-
-         /* This is an option that requires an argument.  */
-         if (*nextchar != '\0')
-           {
-             tools_optarg = nextchar;
-             /* If we end this ARGV-element by taking the rest as an arg,
-                we must advance to the next element now.  */
-             tools_optind++;
-           }
-         else if (tools_optind == argc)
-           {
-             if (tools_opterr)
-               {
-                 /* 1003.2 specifies the format of this message.  */
-                 fprintf (stderr, _("%s: option requires an argument -- %c\n"),
-                          argv[0], c);
-               }
-             tools_optopt = c;
-             if (optstring[0] == ':')
-               c = ':';
-             else
-               c = '?';
-             return c;
-           }
-         else
-           /* We already incremented `tools_optind' once;
-              increment it again when taking next ARGV-elt as argument.  */
-           tools_optarg = argv[tools_optind++];
-
-         /* tools_optarg is now the argument, see if it's in the
-            table of longopts.  */
-
-         for (nextchar = nameend = tools_optarg; *nameend && *nameend != '='; nameend++)
-           /* Do nothing.  */ ;
-
-         /* Test all long options for either exact match
-            or abbreviated matches.  */
-         for (p = longopts, option_index = 0; p->name; p++, option_index++)
-           if (!strncmp (p->name, nextchar, nameend - nextchar))
-             {
-               if ((unsigned int) (nameend - nextchar) == strlen (p->name))
-                 {
-                   /* Exact match found.  */
-                   pfound = p;
-                   indfound = option_index;
-                   exact = 1;
-                   break;
-                 }
-               else if (pfound == NULL)
-                 {
-                   /* First nonexact match found.  */
-                   pfound = p;
-                   indfound = option_index;
-                 }
-               else
-                 /* Second or later nonexact match found.  */
-                 ambig = 1;
-             }
-         if (ambig && !exact)
-           {
-             if (tools_opterr)
-               fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
-                        argv[0], argv[tools_optind]);
-             nextchar += strlen (nextchar);
-             tools_optind++;
-             return '?';
-           }
-         if (pfound != NULL)
-           {
-             option_index = indfound;
-             if (*nameend)
-               {
-                 /* Don't test has_arg with >, because some C compilers don't
-                    allow it to be used on enums.  */
-                 if (pfound->has_arg)
-                   tools_optarg = nameend + 1;
-                 else
-                   {
-                     if (tools_opterr)
-                       fprintf (stderr, _("\
- %s: option `-W %s' doesn't allow an argument\n"),
-                                argv[0], pfound->name);
-
-                     nextchar += strlen (nextchar);
-                     return '?';
-                   }
-               }
-             else if (pfound->has_arg == 1)
-               {
-                 if (tools_optind < argc)
-                   tools_optarg = argv[tools_optind++];
-                 else
-                   {
-                     if (tools_opterr)
-                       fprintf (stderr,
-                                _("%s: option `%s' requires an argument\n"),
-                                argv[0], argv[tools_optind - 1]);
-                     nextchar += strlen (nextchar);
-                     return optstring[0] == ':' ? ':' : '?';
-                   }
-               }
-             nextchar += strlen (nextchar);
-             if (longind != NULL)
-               *longind = option_index;
-             if (pfound->flag)
-               {
-                 *(pfound->flag) = pfound->val;
-                 return 0;
-               }
-             return pfound->val;
-           }
-           nextchar = NULL;
-           return 'W';   /* Let the application handle it.   */
-       }
-     if (temp[1] == ':')
-       {
-         if (temp[2] == ':')
-           {
-             /* This is an option that accepts an argument optionally.  */
-             if (*nextchar != '\0')
-               {
-                 tools_optarg = nextchar;
-                 tools_optind++;
-               }
-             else
-               tools_optarg = NULL;
-             nextchar = NULL;
-           }
-         else
-           {
-             /* This is an option that requires an argument.  */
-             if (*nextchar != '\0')
-               {
-                 tools_optarg = nextchar;
-                 /* If we end this ARGV-element by taking the rest as an arg,
-                    we must advance to the next element now.  */
-                 tools_optind++;
-               }
-             else if (tools_optind == argc)
-               {
-                 if (tools_opterr)
-                   {
-                     /* 1003.2 specifies the format of this message.  */
-                     fprintf (stderr,
-                            _("%s: option requires an argument -- %c\n"),
-                            argv[0], c);
-                   }
-                 tools_optopt = c;
-                 if (optstring[0] == ':')
-                   c = ':';
-                 else
-                   c = '?';
-               }
-             else
-               /* We already incremented `tools_optind' once;
-                  increment it again when taking next ARGV-elt as argument.  */
-               tools_optarg = argv[tools_optind++];
-             nextchar = NULL;
-           }
-       }
-     return c;
-   }
- }
-
- int
- tools_getopt (argc, argv, optstring)
-      int argc;
-      char *const *argv;
-      const char *optstring;
- {
-   return _getopt_internal (argc, argv, optstring,
-                            (const struct option *) 0,
-                            (int *) 0,
-                            0);
- }
-
- int
- tools_getopt_long (argc, argv, optstring, longopts, longindex)
-      int argc;
-      char *const *argv;
-      const char *optstring;
-      const struct option *longopts;
-      int *longindex;
- {
-   return _getopt_internal (argc, argv, optstring,
-                            longopts,
-                            longindex,
-                            0);
- }
-
-
- int
- tools_getopt_long_only (argc, argv, optstring, longopts, longindex)
-      int argc;
-      char *const *argv;
-      const char *optstring;
-      const struct option *longopts;
-      int *longindex;
- {
-   return _getopt_internal (argc, argv, optstring,
-                            longopts,
-                            longindex,
-                            1);
- }
-
\f
- #ifdef TEST
-
- /* Compile with -DTEST to make an executable for use in testing
-    the above definition of `getopt'.  */
-
- int
- main (argc, argv)
-      int argc;
-      char **argv;
- {
-   int c;
-   int digit_optind = 0;
-
-   while (1)
-     {
-       int this_option_optind = tools_optind ? tools_optind : 1;
-
-       c = getopt (argc, argv, "abc:d:0123456789");
-       if (c == -1)
-         break;
-
-       switch (c)
-         {
-         case '0':
-         case '1':
-         case '2':
-         case '3':
-         case '4':
-         case '5':
-         case '6':
-         case '7':
-         case '8':
-         case '9':
-           if (digit_optind != 0 && digit_optind != this_option_optind)
-             printf ("digits occur in two different argv-elements.\n");
-           digit_optind = this_option_optind;
-           printf ("option %c\n", c);
-           break;
-
-         case 'a':
-           printf ("option a\n");
-           break;
-
-         case 'b':
-           printf ("option b\n");
-           break;
-
-         case 'c':
-           printf ("option c with value `%s'\n", tools_optarg);
-           break;
-
-         case '?':
-           break;
-
-         default:
-           printf ("?? getopt returned character code 0%o ??\n", c);
-         }
-     }
-
-   if (tools_optind < argc)
-     {
-       printf ("non-option ARGV-elements: ");
-       while (tools_optind < argc)
-         printf ("%s ", argv[tools_optind++]);
-       printf ("\n");
-     }
-
-   exit (0);
- }
-
- #endif /* TEST */
-
-int hello()
-{
-       return 1;
-}
diff --git a/cmdparser/my_getopt.h b/cmdparser/my_getopt.h
deleted file mode 100755 (executable)
index b470f81..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
- /* Declarations for getopt.
-    Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
-
-    The GNU C Library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Library General Public License as
-    published by the Free Software Foundation; either version 2 of the
-    License, or (at your option) any later version.
-
-    The GNU C Library 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
-    Library General Public License for more details.
-
-    You should have received a copy of the GNU Library General Public
-    License along with the GNU C Library; see the file COPYING.LIB.  If not,
-    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-    Boston, MA 02111-1307, USA.  */
-
- #ifndef _TOOLS_GETOPT_H
- #define _TOOLS_GETOPT_H
-
- #ifdef  __cplusplus
- extern "C" {
- #endif
-
- /* For communication from `getopt' to the caller.
-    When `getopt' finds an option that takes an argument,
-    the argument value is returned here.
-    Also, when `ordering' is RETURN_IN_ORDER,
-    each non-option ARGV-element is returned here.  */
-
- extern char *tools_optarg;
-
- /* Index in ARGV of the next element to be scanned.
-    This is used for communication to and from the caller
-    and for communication between successive calls to `getopt'.
-
-    On entry to `getopt', zero means this is the first call; initialize.
-
-    When `getopt' returns -1, this is the index of the first of the
-    non-option elements that the caller should itself scan.
-
-    Otherwise, `optind' communicates from one call to the next
-    how much of ARGV has been scanned so far.  */
-
- extern int tools_optind;
-
- /* Callers store zero here to inhibit the error message `getopt' prints
-    for unrecognized options.  */
-
- extern int tools_opterr;
-
- /* Set to an option character which was unrecognized.  */
-
- extern int tools_optopt;
-
- /* Describe the long-named options requested by the application.
-    The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
-    of `struct option' terminated by an element containing a name which is
-    zero.
-
-    The field `has_arg' is:
-    no_argument          (or 0) if the option does not take an argument,
-    required_argument    (or 1) if the option requires an argument,
-    optional_argument    (or 2) if the option takes an optional argument.
-
-    If the field `flag' is not NULL, it points to a variable that is set
-    to the value given in the field `val' when the option is found, but
-    left unchanged if the option is not found.
-
-    To have a long-named option do something other than set an `int' to
-    a compiled-in constant, such as set a value from `optarg', set the
-    option's `flag' field to zero and its `val' field to a nonzero
-    value (the equivalent single-letter option character, if there is
-    one).  For long options that have a zero `flag' field, `getopt'
-    returns the contents of the `val' field.  */
-
- struct option
- {
- #if defined (__STDC__) && __STDC__
-   const char *name;
- #else
-   char *name;
- #endif
-   /* has_arg can't be an enum because some compilers complain about
-      type mismatches in all the code that assumes it is an int.  */
-   int has_arg;
-   int *flag;
-   int val;
- };
-
- /* Names for the values of the `has_arg' field of `struct option'.  */
-
- #define tools_no_argument             0
- #define tools_required_argument       1
- #define tools_optional_argument       2
-
-int tools_getopt (
-        int argc,
-        char *const *argv,
-        const char *shortopts);
-
-int tools_getopt_long (
-        int argc,
-        char *const *argv,
-        const char *shortopts,
-        const struct option *longopts,
-        int *longind);
-
-int tools_getopt_long_only (
-        int argc,
-        char *const *argv,
-        const char *shortopts,
-        const struct option *longopts,
-        int *longind);
-
- #ifdef  __cplusplus
- }
- #endif
-
- #endif /* _TOOLS_GETOPT_H */
diff --git a/common/Makefile.am b/common/Makefile.am
deleted file mode 100644 (file)
index 982c5aa..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-
-noinst_HEADERS=compatibility.h bit_slice.h tools_utils.h tools_utils.h tools_version.h
-
diff --git a/common/bit_slice.h b/common/bit_slice.h
deleted file mode 100644 (file)
index f257c9b..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef BIT_SLICE_H
-#define BIT_SLICE_H
-
-// BIT Slicing macros
-#define ONES32(size)                    ((size)?(0xffffffff>>(32-(size))):0)
-#define MASK32(offset,size)             (ONES32(size)<<(offset))
-
-#define EXTRACT_C(source,offset,size)   ((((unsigned)(source))>>(offset)) & ONES32(size))
-#define EXTRACT(src,start,len)          (((len)==32)?(src):EXTRACT_C(src,start,len))
-#define EXT(src,end,start)              EXTRACT(src,start,end-start+1)
-
-#define MERGE_C(rsrc1,rsrc2,start,len)  ((((rsrc2)<<(start)) & (MASK32((start),(len)))) | ((rsrc1) & (~MASK32((start),(len)))))
-#define MERGE(rsrc1,rsrc2,start,len)    (((len)==32)?(rsrc2):MERGE_C(rsrc1,rsrc2,start,len))
-#define INSERTF(src1, start1, src2, start2, len) MERGE((src1), EXTRACT((src2), (start2), (len)), (start1), (len))
-
-#define ONES64(size)                    ((size)?(0xffffffffffffffffULL>>(64-(size))):0)
-#define MASK64(offset,size)             (ONES64(size)<<(offset))
-
-#define EXTRACT_C64(source,offset,size)   ((((unsigned long long)(source))>>(offset)) & ONES64(size))
-#define EXTRACT64(src,start,len)          (((len)==64)?(src):EXTRACT_C64(src,start,len))
-
-#define MERGE_C64(rsrc1,rsrc2,start,len)  ((((u_int64_t)(rsrc2)<<(start)) & (MASK64((start),(len)))) | ((rsrc1) & (~MASK64((start),(len)))))
-#define MERGE64(rsrc1,rsrc2,start,len)    (((len)==64)?(rsrc2):MERGE_C64(rsrc1,rsrc2,start,len))
-#define INSERTF64(src1, start1, src2, start2, len) MERGE64((src1), EXTRACT64((src2), (start2), (len)), (start1), (len))
-#define EXT64(src,end,start)              EXTRACT64(src,start,end-start+1)
-
-#ifndef __cplusplus
-enum cpp_bool {false=0,true};
-typedef unsigned char bool;
-#endif
-
-#endif
diff --git a/common/compatibility.h b/common/compatibility.h
deleted file mode 100644 (file)
index 8dc85e3..0000000
+++ /dev/null
@@ -1,427 +0,0 @@
-/*
- * Copyright (C) Jan 2006 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  compatibility.h - Miscellaneous systems compatibility issues
- *
- *  Version: $Id: compatibility.h 3261 2007-01-28 14:59:53Z orenk $
- *
- */
-
-#ifndef COMPATIBILITY_H
-#define COMPATIBILITY_H
-
-#include <stdio.h>
-
-#if defined(__ia64__) || defined(__x86_64__) || defined(__PPC64__)
-    #define U64L       "l"
-#else
-    #define U64L       "ll"
-#endif
-
-
-/* define macros to the architecture of the CPU */
-#if defined(__linux) || defined(__FreeBSD__)             /* __linux || __FreeBSD__ */
-#   if defined(__i386__)
-#       define ARCH_x86
-#   elif defined(__x86_64__)
-#       define ARCH_x86_64
-#   elif defined(__ia64__)
-#       define ARCH_ia64
-#   elif defined(__PPC64__)
-#       define ARCH_ppc64
-#   elif defined(__PPC__)
-#       define ARCH_ppc
-#   elif defined(__aarch64__)
-#       define ARCH_arm64
-#   else
-#       error Unknown CPU architecture using the linux OS
-#   endif
-#elif defined(__MINGW32__) || defined(__MINGW64__)              /* Windows MINGW */
-#   if defined(__MINGW32__)
-#       define ARCH_x86
-#   elif defined(__MINGW64__)
-#       define ARCH_x86_64
-#   else
-#       error Unknown CPU architecture using the windows-mingw OS
-#   endif
-#elif defined(_WIN32) || defined(_WIN64)                /* Windows */
-#   if defined(_WIN32)
-#       define ARCH_x86
-#   elif defined(_WIN64)
-#       define ARCH_x86_64
-#   else
-#       error Unknown CPU architecture using the windows OS
-#   endif
-#else                                                   /* Unknown */
-#   error Unknown OS
-#endif
-
-/* define macros for print fields */
-#define U32D_FMT    "%u"
-#define U32H_FMT    "0x%08x"
-#define UH_FMT          "0x%x"
-#define STR_FMT     "%s"
-#define U16H_FMT    "0x%04x"
-#define U8H_FMT     "0x%02x"
-
-#if defined(ARCH_x86) || defined(ARCH_ppc) || defined(UEFI_BUILD)
-#   if defined(__MINGW32__) || defined(__MINGW64__)
-#       include <inttypes.h>
-#       define U64D_FMT    "0x%"PRId64
-#       define U64H_FMT    "0x%"PRIx64
-#       define U64H_FMT_GEN ""PRIx64
-#       define U48H_FMT    "0x%"PRIx64
-#       define U64D_FMT_GEN ""PRId64
-#   else
-#       define U64D_FMT     "%llu"
-#       define U64H_FMT     "0x%016llx"
-#       define U64H_FMT_GEN "llx"
-#       define U48H_FMT     "0x%012llx"
-#       define U64D_FMT_GEN "llu"
-#   endif
-#elif defined (ARCH_ia64) || defined(ARCH_x86_64) || defined(ARCH_ppc64) || defined(ARCH_arm64)
-#    define U64D_FMT     "%lu"
-#    define U64H_FMT     "0x%016lx"
-#    define U48H_FMT     "0x%012lx"
-#    define U64H_FMT_GEN "lx"
-#    define U64D_FMT_GEN "lu"
-#else
-#   error Unknown architecture
-#endif  /* ARCH */
-
-
-/* define msleep(x) - sleeps for x milliseconds */
-#if defined(_WIN32) || defined(__MINGW32__) || defined(__MINGW64__)
-    #include <Winsock2.h>
-    #include <winsock2.h>
-    #include <windows.h>
-    #define msleep(x)   Sleep(x)
-#else
-    #include <unistd.h>
-    #define msleep(x)   usleep(((unsigned long)x)*1000)
-#endif
-
-/*
- * Only for architectures which can't do swab by themselves
- */
-#define ___my_swab16(x) \
-((u_int16_t)( \
-        (((u_int16_t)(x) & (u_int16_t)0x00ffU) << 8) | \
-        (((u_int16_t)(x) & (u_int16_t)0xff00U) >> 8) ))
-#define ___my_swab32(x) \
-((u_int32_t)( \
-        (((u_int32_t)(x) & (u_int32_t)0x000000ffUL) << 24) | \
-        (((u_int32_t)(x) & (u_int32_t)0x0000ff00UL) <<  8) | \
-        (((u_int32_t)(x) & (u_int32_t)0x00ff0000UL) >>  8) | \
-        (((u_int32_t)(x) & (u_int32_t)0xff000000UL) >> 24) ))
-#define ___my_swab64(x) \
-((u_int64_t)( \
-        (u_int64_t)(((u_int64_t)(x) & (u_int64_t)0x00000000000000ffULL) << 56) | \
-        (u_int64_t)(((u_int64_t)(x) & (u_int64_t)0x000000000000ff00ULL) << 40) | \
-        (u_int64_t)(((u_int64_t)(x) & (u_int64_t)0x0000000000ff0000ULL) << 24) | \
-        (u_int64_t)(((u_int64_t)(x) & (u_int64_t)0x00000000ff000000ULL) <<  8) | \
-        (u_int64_t)(((u_int64_t)(x) & (u_int64_t)0x000000ff00000000ULL) >>  8) | \
-        (u_int64_t)(((u_int64_t)(x) & (u_int64_t)0x0000ff0000000000ULL) >> 24) | \
-        (u_int64_t)(((u_int64_t)(x) & (u_int64_t)0x00ff000000000000ULL) >> 40) | \
-        (u_int64_t)(((u_int64_t)(x) & (u_int64_t)0xff00000000000000ULL) >> 56) ))
-
-/*
- * Linux
- */
-#if defined(linux) || defined(__FreeBSD__)
-// #include <asm/byteorder.h>
-    #include <unistd.h>
-    #include <sys/types.h>
-
-    #if defined (__FreeBSD__)
-    #include <sys/endian.h>
-    #else
-    #include <endian.h>
-    #endif
-
-    #undef __be64_to_cpu
-    #undef __be32_to_cpu
-    #undef __be16_to_cpu
-    #undef __cpu_to_be64
-    #undef __cpu_to_be32
-    #undef __cpu_to_be16
-    #undef __le64_to_cpu
-    #undef __le32_to_cpu
-    #undef __le16_to_cpu
-    #undef __cpu_to_le64
-    #undef __cpu_to_le32
-    #undef __cpu_to_le16
-
-    #if __BYTE_ORDER == __LITTLE_ENDIAN
-
-        #define __be64_to_cpu(x) ___my_swab64(x)
-        #define __be32_to_cpu(x) ___my_swab32(x)
-        #define __be16_to_cpu(x) ___my_swab16(x)
-        #define __cpu_to_be64(x) ___my_swab64(x)
-        #define __cpu_to_be32(x) ___my_swab32(x)
-        #define __cpu_to_be16(x) ___my_swab16(x)
-        #define __le64_to_cpu(x) (x)
-        #define __le32_to_cpu(x) (x)
-        #define __le16_to_cpu(x) (x)
-        #define __cpu_to_le64(x) (x)
-        #define __cpu_to_le32(x) (x)
-        #define __cpu_to_le16(x) (x)
-
-    #elif __BYTE_ORDER == __BIG_ENDIAN
-
-        #define __be64_to_cpu(x) (x)
-        #define __be32_to_cpu(x) (x)
-        #define __be16_to_cpu(x) (x)
-        #define __cpu_to_be64(x) (x)
-        #define __cpu_to_be32(x) (x)
-        #define __cpu_to_be16(x) (x)
-        #define __le64_to_cpu(x) ___my_swab64(x)
-        #define __le32_to_cpu(x) ___my_swab32(x)
-        #define __le16_to_cpu(x) ___my_swab16(x)
-        #define __cpu_to_le64(x) ___my_swab64(x)
-        #define __cpu_to_le32(x) ___my_swab32(x)
-        #define __cpu_to_le16(x) ___my_swab16(x)
-
-    #endif // __BYTE_ORDER
-
-#endif
-
-/*
- * Windows (CYGWIN)
- */
-#if defined(__CYGWIN32__)
-    #include <asm/byteorder.h>
-    #include <unistd.h>
-
-    #define __be64_to_cpu(x) ___my_swab64(x)
-    #define __be32_to_cpu(x) ___my_swab32(x)
-    #define __be16_to_cpu(x) ___my_swab16(x)
-    #define __cpu_to_be64(x) ___my_swab64(x)
-    #define __cpu_to_be32(x) ___my_swab32(x)
-    #define __cpu_to_be16(x) ___my_swab16(x)
-    #define __le64_to_cpu(x) (x)
-    #define __le32_to_cpu(x) (x)
-    #define __le16_to_cpu(x) (x)
-    #define __cpu_to_le64(x) (x)
-    #define __cpu_to_le32(x) (x)
-    #define __cpu_to_le16(x) (x)
-
-#endif
-
-/*
- * Windows (DDK)
- */
-#if defined(__WIN__)
-    #include <Winsock2.h>
-    #include <winsock2.h>
-    #include <windows.h>
-    #include <io.h>
-
-    #define __LITTLE_ENDIAN 1234
-    #define __BIG_ENDIAN 4321
-    #define __BYTE_ORDER __LITTLE_ENDIAN
-
-    #define __be64_to_cpu(x) ___my_swab64(x)
-    #define __be32_to_cpu(x) ___my_swab32(x)
-    #define __be16_to_cpu(x) ___my_swab16(x)
-    #define __cpu_to_be64(x) ___my_swab64(x)
-    #define __cpu_to_be32(x) ___my_swab32(x)
-    #define __cpu_to_be16(x) ___my_swab16(x)
-    #define __le64_to_cpu(x) (x)
-    #define __le32_to_cpu(x) (x)
-    #define __le16_to_cpu(x) (x)
-    #define __cpu_to_le64(x) (x)
-    #define __cpu_to_le32(x) (x)
-    #define __cpu_to_le16(x) (x)
-
-
-    #if defined(__MINGW32__) || defined(__MINGW64__)
-        #include <stdint.h>
-        #ifndef   MFT_TOOLS_VARS
-            #define MFT_TOOLS_VARS
-            typedef uint8_t  u_int8_t;
-            typedef uint16_t u_int16_t;
-            typedef uint32_t u_int32_t;
-            typedef uint64_t u_int64_t;
-        #endif
-        #include <string.h>      // Get a define for strcasecmp
-        // #define usleep(x) Sleep((x + 999)/1000)
-
-    #else
-        typedef unsigned __int8  u_int8_t;
-        typedef __int8           int8_t;
-        typedef unsigned __int16 u_int16_t;
-        typedef __int16          int16_t;
-        typedef unsigned __int32 u_int32_t;
-        typedef __int32          int32_t;
-        typedef unsigned __int64 u_int64_t;
-        typedef __int64          int64_t;
-
-        #define strcasecmp    _stricmp
-        #define strtoll       _strtoi64
-        #define strtoull      _strtoui64
-        #define strdup        _strdup
-
-    #endif
-
-    #ifndef __WIN__ // TBD : investigate crash on win
-inline
-    #endif
-
-    #define COMP_CDECL    __cdecl
-    #define COMP_OPEN     ::_open
-    #define COMP_CLOSE    ::_close
-    #define COMP_READ     ::_read
-    #define COMP_FSTAT    ::_fstat
-
-    #ifndef __cplusplus
-        #define close _close
-    #endif
-
-typedef struct _stat  Stat;
-
-    #define PRIx64 "I64x"
-    #define PRIu64 "I64u"
-/*
-    #ifdef __cplusplus
-static inline int pread(int fd, void *buf, int count, u_int64_t offset) {return -1;}
-static inline int pwrite(int fd, const void *buf, int count, u_int64_t offset) {return -1;}
-    #else
-static inline int pread(int fd, void *buf, int count, u_int64_t offset) {return -1;}
-static inline int pwrite(int fd, const void *buf, int count, u_int64_t offset) {return -1;}
-    #endif
-*/
-#else
-
-    #define COMP_CDECL
-    #define COMP_OPEN     ::open
-    #define COMP_CLOSE    ::close
-    #define COMP_READ     ::read
-    #define COMP_FSTAT    ::fstat
-
-typedef struct stat  Stat;
-
-    #include <sys/time.h>
-    #include <strings.h>
-
-#endif
-
-
-
-/*
- * MAC (Darwin)
- */
-#if defined(__APPLE_CC__)
-    #include <architecture/byte_order.h>
-
-    #define __swab64(x)      NXSwapLongLong(x)
-    #define __swab32(x)      NXSwapLong(x)
-    #define __swab16(x)      NXSwapShort(x)
-    #define __be64_to_cpu(x) NXSwapBigLongLongToHost(x)
-    #define __be32_to_cpu(x) NXSwapBigLongToHost(x)
-    #define __be16_to_cpu(x) NXSwapBigShortToHost(x)
-    #define __le64_to_cpu(x) NXSwapLittleLongLongToHost(x)
-    #define __le32_to_cpu(x) NXSwapLittleLongToHost(x)
-    #define __le16_to_cpu(x) NXSwapLittleShortToHost(x)
-    #define __cpu_to_be64(x) NXSwapHostLongLongToBig(x)
-    #define __cpu_to_be32(x) NXSwapHostLongToBig(x)
-    #define __cpu_to_be16(x) NXSwapHostShortToBig(x)
-    #define __cpu_to_le64(x) NXSwapHostLongLongToLittle(x)
-    #define __cpu_to_le32(x) NXSwapHostLongToLittle(x)
-    #define __cpu_to_le16(x) NXSwapHostShortToLittle(x)
-
-    #define __LITTLE_ENDIAN 1234
-    #define __BIG_ENDIAN    4321
-    #define __PDP_ENDIAN    3412
-    #define __BYTE_ORDER    __BIG_ENDIAN
-#endif
-
-/*
- * Solaris
- * -------
- */
-#if defined(__sparc__)
-    #include <sys/byteorder.h>
-    #include <sys/types.h>
-    #include <unistd.h>
-
-    #define __be64_to_cpu(x) (x)
-    #define __be32_to_cpu(x) (x)
-    #define __be16_to_cpu(x) (x)
-    #define __cpu_to_be64(x) (x)
-    #define __cpu_to_be32(x) (x)
-    #define __cpu_to_be16(x) (x)
-    #define __le64_to_cpu(x) ___my_swab64(x)
-    #define __le32_to_cpu(x) ___my_swab32(x)
-    #define __le16_to_cpu(x) ___my_swab16(x)
-    #define __cpu_to_le64(x) ___my_swab64(x)
-    #define __cpu_to_le32(x) ___my_swab32(x)
-    #define __cpu_to_le16(x) ___my_swab16(x)
-
-typedef uint64_t u_int64_t;
-typedef uint32_t u_int32_t;
-typedef uint16_t u_int16_t;
-typedef uint8_t  u_int8_t;
-
-#endif
-
-// Convert BYTES - DWORDS with MEMCPY BE
-#define BYTES_TO_DWORD_BE(dw_dest, byte_src) do {   u_int32_t tmp;\
-                                                    memcpy(&tmp, byte_src, 4);\
-                                                    *(dw_dest) = __be32_to_cpu(tmp);\
-                                                } while (0)
-
-#define DWORD_TO_BYTES_BE(bytes_dest, dw_src) do { u_int32_t tmp;\
-                                                   tmp = __cpu_to_be32(*(dw_src));\
-                                                   memcpy(bytes_dest, &tmp, 4);\
-                                                 } while (0)
-
-/*
- * Old GCC
- * -------
- */
-#if !defined(__WIN__) && defined(__cplusplus) && __GNUG__ < 3
-    #include <algo.h>
-#endif
-
-#define __STDC_FORMAT_MACROS
-#if !defined(__WIN__) && !defined(UEFI_BUILD)
-    #include <inttypes.h>
-#endif
-
-#if defined(__VMKERNEL_UW_VMKLINUX__) || defined(__VMKERNEL_UW_NATIVE__)
-    #define ROOT_PATH "/opt/mellanox/"
-#else
-    #define ROOT_PATH "/"
-#endif
-
-#endif
-
diff --git a/common/tools_utils.h b/common/tools_utils.h
deleted file mode 100755 (executable)
index 7fe1a59..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef TOOLS_UTILS_H
-#define TOOLS_UTILS_H
-
-#include "compatibility.h"
-
-#define CPU_TO_BE32(x)                __cpu_to_be32(x)
-#define CPU_TO_LE32(x)                __cpu_to_le32(x)
-#define BE32_TO_CPU(x)                __be32_to_cpu(x)
-#define LE32_TO_CPU(x)                __le32_to_cpu(x)
-#define CPU_TO_BE16(x)                __cpu_to_be16(x)
-#define CPU_TO_LE16(x)                __cpu_to_le16(x)
-#define BE16_TO_CPU(x)                __be16_to_cpu(x)
-#define LE16_TO_CPU(x)                __le16_to_cpu(x)
-#define CPU_TO_BE64(x)                __cpu_to_be64(x)
-#define CPU_TO_LE64(x)                __cpu_to_le64(x)
-#define BE64_TO_CPU(x)                __be64_to_cpu(x)
-#define LE64_TO_CPU(x)                __le64_to_cpu(x)
-
-#define FIELD_8_OF_BUFF(buf, offset) (*(u_int8_t*)((u_int8_t*)(buf) + (offset)))
-#define FIELD_16_OF_BUFF(buf, offset) (*(u_int16_t*)((u_int8_t*)(buf) + (offset)))
-#define FIELD_32_OF_BUFF(buf, offset) (*(u_int32_t*)((u_int8_t*)(buf) + (offset)))
-#define FIELD_64_OF_BUFF(buf, offset) (*(u_int64_t*)((u_int8_t*)(buf) + (offset)))
-#define BYTE_N(buf, n)  FIELD_8_OF_BUFF((buf), (n))
-#define WORD_N(buf, n)  FIELD_16_OF_BUFF((buf), (n) * 2)
-#define DWORD_N(buf, n) FIELD_32_OF_BUFF((buf), (n) * 4)
-#define QWORD_N(buf, n) FIELD_64_OF_BUFF((buf), (n) * 8)
-#define QWORD_EXTRACT_DWORD_HI(qword) ((u_int64_t)(qword) >> 32)
-#define QWORD_EXTRACT_DWORD_LO(qword) ((u_int64_t)(qword) & (u_int64_t)0xffffffff)
-#define QWORD_INSERT_DWORD_HI(qword, dword) qword = ((qword & (u_int64_t)0xffffffff) | ((u_int64_t)dword << 32))
-#define QWORD_INSERT_DWORD_LO(qword, dword) qword = ((qword & (u_int64_t)0xffffffff00000000) | ((u_int64_t)dword))
-#define U32_TO_U64(dword1, dword2) ((((u_int64_t)(dword1)) << 32) | (((u_int64_t)(dword2)) & 0xffffffff))
-
-
-#define TOOLS_MAX(a,b) ((a) > (b) ? (a) : (b))
-#define TOOLS_MIN(a,b) ((a) < (b) ? (a) : (b))
-#define TOOLS_ARR_SZ(arr) (sizeof((arr))/sizeof((arr)[0]))
-
-/**
- * Suppress compiler warning about unused variable.
- */
-#define TOOLS_UNUSED(var) ((void)var)
-
-
-#endif // TOOLS_UTILS_H
-
diff --git a/common/tools_version.h b/common/tools_version.h
deleted file mode 100644 (file)
index e3a242f..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-//
-// Generic version for all tools
-//
-#ifndef TOOLS_VERSION_H
-#define TOOLS_VERSION_H
-
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-// To be replaced by an external script:
-#include "gitversion.h"
-#ifndef TOOLS_GIT_SHA
-    #define TOOLS_GIT_SHA "6469M"
-#endif
-
-#ifdef HAVE_CONFIG_H
-    #include <config.h>
-    #ifndef MFT_VERSION_STR
-        #define MFT_VERSION_STR PACKAGE_STRING
-    #endif
-#endif
-
-#ifndef MFT_VERSION_STR
-    #define MFT_VERSION_STR "mft V.V.V-R"
-#endif
-
-static inline
-int get_version_string(char* buf, int buf_size, const char* exe_name, const char* tool_version) {
-    int len = 0;
-    // "svn ci" updates the below line
-
-
-    if (tool_version == NULL || !strcmp(tool_version, "")) {
-        len = snprintf(buf, buf_size, "%s, ", exe_name);
-    } else {
-        len = snprintf(buf, buf_size, "%s %s, ", exe_name, tool_version);
-    }
-    // cut out first and last "$" from the SVN version string:
-    len += snprintf(buf + len, buf_size - len, "%s, built on %s, %s. Git SHA Hash: %s",
-                  MFT_VERSION_STR,
-                  __DATE__,
-                  __TIME__,
-                  TOOLS_GIT_SHA);
-    return len;
-}
-
-static inline
-void print_version_string(const char* exe_name, const char* tool_version) {
-    char buf[1024];
-    get_version_string(buf, sizeof(buf), exe_name, tool_version);
-    printf("%s\n", buf);
-}
-
-#endif // TOOLS_VERSION_H
diff --git a/configure.ac b/configure.ac
deleted file mode 100644 (file)
index 8ef242c..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-
-AC_INIT(mstflint, 4.4.0, adrianc@mellanox.co.il)
-
-AC_DEFINE_UNQUOTED([PROJECT], ["mstflint"], [Define the project name.])
-AC_SUBST([PROJECT])
-
-AC_DEFINE_UNQUOTED([VERSION], ["4.4.0"], [Define the project version.])
-AC_SUBST([VERSION])
-
-AC_CONFIG_AUX_DIR(config)
-AC_CONFIG_SRCDIR([README])
-AM_INIT_AUTOMAKE
-
-dnl Checks for programs
-AC_PROG_CC
-AC_PROG_CXX
-AM_PROG_AR
-AC_PROG_LIBTOOL
-AC_CONFIG_HEADERS( config.h )
-
-dnl Checks for headers
-AC_CHECK_HEADER(termios.h,[CXXFLAGS="${CXXFLAGS} -DHAVE_TERMIOS_H"])
-
-TOOLS_CRYPTO=""
-
-AC_MSG_CHECKING(--enable-dc argument)
-AC_ARG_ENABLE(dc,
-                   [  --disable-dc            Disable mstflint "dc" command. Eliminates zlib dependency],
-                   [enable_dc=$enableval],
-                   [enable_dc="yes"])
-AC_MSG_RESULT($enable_dc)
-if test "$enable_dc" = "yes"; then
-  AC_CHECK_HEADER(zlib.h,,AC_MSG_ERROR([cannot find zlib.h . Use --disable-dc to remove this dependaency]))
-  AC_CHECK_LIB(z, uncompress,, AC_MSG_ERROR([cannot find zlib uncompress() function. Use --disable-dc to remove this dependaency]))
-fi
-
-AM_CONDITIONAL(ENABLE_DC, [test  "x$enable_dc" = "xyes"])
-AC_SUBST(ENABLE_DC)
-
-AC_MSG_CHECKING(--enable-inband argument)
-AC_ARG_ENABLE(inband,
-                   [  --disable-inband        Disable inabnd access. Prevents FW updtes for Mellanox SwitchX and ConnectIB devices. Eliminates infiniband/mad.h dependency],
-                   [enable_inband=$enableval],
-                   [enable_inband="yes"])
-AC_MSG_RESULT($enable_inband)
-if test "x$enable_inband" = "xyes"; then
-  AC_CHECK_HEADER(infiniband/mad.h,,AC_MSG_ERROR([cannot find infiniband/mad.h . Use --disable-inband to remove this dependaency]))
-fi
-
-AM_CONDITIONAL(ENABLE_INBAND, [test  "x$enable_inband" = "xyes"])
-
-AC_MSG_CHECKING(--enable-cs argument)
-AC_ARG_ENABLE(cs,
-            [  --enable-cs          Enable mstflint "checksum" command, dependant of openssl library],
-            [enable_cs="yes"],
-            [enable_cs="no"])
-AC_MSG_RESULT($enable_cs)
-if test "x$enable_cs" = "xyes"; then
-  AC_CHECK_HEADER(openssl/md5.h,,AC_MSG_ERROR([cannot find openssl/md5.h . remove --enable-openssl to remove this dependaency or install openssl]))
-  TOOLS_CRYPTO="tools_crypto"
-fi
-AC_SUBST(TOOLS_CRYPTO)
-AM_CONDITIONAL(ENABLE_OPENSSL, [test  "x$enable_cs" = "xyes"])
-
-AC_ARG_ENABLE([static_libstdcpp],
-    AS_HELP_STRING([--enable-static-libstdcpp], [Enable link static to libstdc++]))
-
-AS_IF([test "x$enable_static_libstdcpp" = "xyes"], [
-  CXXFLAGS="$CXXFLAGS -static-libstdc++"
-])
-
-AC_ARG_ENABLE([dynamic_ld],
-    AS_HELP_STRING([--enable-dynamic-ld], [Enable dynamic link to ld64.so]))
-
-AS_IF([test "x$enable_dynamic_ld" = "xyes"], [
-  LDFLAGS="$LDFLAGS -Wl,--dynamic-linker=/lib64/ld64.so.2"
-])
-
-CFLAGS="$CFLAGS -Werror -DMST_UL"
-CXXFLAGS="$CXXFLAGS -Werror -DMST_UL"
-
-AC_CONFIG_FILES( mstflint.spec )
-
-AS_IF([test "x$enable_cs" = "xyes"], [
-        AC_CONFIG_FILES(tools_crypto/Makefile)
-    ])
-
-AC_OUTPUT( Makefile common/Makefile mft_utils/Makefile mtcr_ul/Makefile dev_mgt/Makefile tools_layouts/Makefile reg_access/Makefile \
-        cmdif/Makefile tools_res_mgmt/Makefile mlxconfig/Makefile mflash/Makefile mlxfwops/Makefile mlxfwops/lib/Makefile cmdparser/Makefile flint/Makefile \
-               small_utils/Makefile mstdump/Makefile mstdump/crd_lib/Makefile mstdump/crd_main/Makefile  mstdump/mstdump_dbs/Makefile )
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644 (file)
index 2223ede..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-mstflint (4.4.0-1) unstable; urgency=low
-
-  * Updated from MFT-4.4.0
-
- -- Adrian Chiris <adrianc@unknown>  Tue, 24 May 2016 15:31:33 +0200
-
-
-mstflint (4.3.0-1) unstable; urgency=low
-
-  * Updated from MFT-4.4.0 initial release
-
- -- Adrian Chiris <adrianc@unknown>  Wed, 23 Mar 2016 15:31:33 +0200
-
-
-mstflint (4.3.0-1) unstable; urgency=low
-
-  * Updated from MFT-4.3.0
-
- -- Adrian Chiris <adrianc@unknown>  Mon, 11 Jan 2016 15:31:33 +0200
-
-
-mstflint (4.1.0-1) unstable; urgency=low
-
-  * Updated from MFT-4.1.0
-
- -- Adrian Chiris <adrianc@unknown>  Wed, 26 Aug 2015 15:31:33 +0200
-
-
-mstflint (4.0.1-1) unstable; urgency=low
-
-  * Updated from MFT-4.0.1
-
- -- Adrian Chiris <adrianc@unknown>  Wed, 03 Jun 2015 13:38:33 +0200
-
-
-mstflint (4.0.0-1) unstable; urgency=low
-
-  * Updated from MFT-4.0.0
-
- -- Adrian Chiris <adrianc@unknown>  Sun, 19 Apr 2015 16:17:33 +0200
-mstflint (4.0.0) unstable; urgency=low
-
-  * Updated from MFT-4.0.0 initial release
-
- -- Adrian Chiris <adrianc@unknown>  Thu, 5 Feb 2015 10:20:33 +0200
-mstflint (3.8.0) unstable; urgency=low
-
-  * Updated from MFT-3.8.0
-
- -- Adrian Chiris <adrianc@unknown>  Mon, 17 Nov 2014 09:00:33 +0200
-
-
-mstflint (3.7.1) unstable; urgency=low
-
-  * Updated from MFT-3.7.1
-
- -- Adrian Chiris <adrianc@unknown>  Mon, 12 Oct 2014 09:00:33 +0200
-
-
-mstflint (3.7.0) unstable; urgency=low
-
-  * Updated from MFT-3.7.0
-
- -- Adrian Chiris <adrianc@unknown>  Mon, 28 Jul 2014 09:00:33 +0200
-
-
-mstflint (3.7.0) unstable; urgency=low
-
-  * Updated from MFT-3.7.0 initial relese
-
- -- Adrian Chiris <adrianc@unknown>  Sun, 3 Jun 2014 14:08:33 +0200
-
-
-mstflint (3.6.0) unstable; urgency=low
-
-  * Updated from MFT-3.6.0
-
- -- Adrian Chiris <adrianc@unknown>  Thu, 3 Apr 2014 19:09:33 +0200
-
-
-mstflint (3.5.0) unstable; urgency=low
-
-  * Updated from MFT-3.5.0
-
- -- Omer Dagan <omerd@unknown>  Tue, 25 Dec 2013 16:49:33 +0200
-
-
-mstflint (3.0) unstable; urgency=low
-
-  * Initial Debian release
-
- -- Omer Dagan <omerd@unknown>  Sun, 24 Jan 2013 16:49:33 +0200
diff --git a/debian/compat b/debian/compat
deleted file mode 100644 (file)
index 45a4fb7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-8
diff --git a/debian/control b/debian/control
deleted file mode 100644 (file)
index 65bf6c3..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Source: mstflint
-Section: net
-Priority: extra
-Maintainer: Gal Sivan <gsivan@unknown>
-Build-Depends: debhelper (>= 8.0.0), autotools-dev
-Standards-Version: 3.9.2
-Homepage: http://www.mellanox.com
-#Vcs-Git: git://git.debian.org/collab-maint/mstflint.git
-#Vcs-Browser: http://git.debian.org/?p=collab-maint/mstflint.git;a=summary
-
-Package: mstflint
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: Mellanox firmware burning application
- This package contains firmware update tool, vpd dump and register dump tools
- for network adapters based on Mellanox Technologies chips.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644 (file)
index 0753136..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-Format: http://dep.debian.net/deps/dep5
-Upstream-Name: mstflint
-Source: <url://example.com>
-
-Files: *
-Copyright: <years> <put author's name and email here>
-           <years> <likewise for another author>
-License: <special license>
- <Put the license of the package here indented by 1 space>
- <This follows the format of Description: lines in control file>
- .
- <Including paragraphs>
-
-# If you want to use GPL v2 or later for the /debian/* files use 
-# the following clauses, or change it to suit. Delete these two lines
-Files: debian/*
-Copyright: 2012 Gal Sivan <gsivan@unknown>
-License: GPL-2+
- This package 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 2 of the License, or
- (at your option) any later version.
- .
- This package 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 <http://www.gnu.org/licenses/>
- .
- On Debian systems, the complete text of the GNU General
- Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
-
-# Please also look if there are files or directories which have a
-# different copyright/license attached and list them here.
diff --git a/debian/docs b/debian/docs
deleted file mode 100644 (file)
index 52530c5..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-hca_self_test.readme
-README
diff --git a/debian/files b/debian/files
deleted file mode 100644 (file)
index 1ab53c7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-mstflint_1.4mlnx4-1_amd64.deb net extra
diff --git a/debian/mstflint.docs b/debian/mstflint.docs
deleted file mode 100644 (file)
index e845566..0000000
+++ /dev/null
@@ -1 +0,0 @@
-README
diff --git a/debian/mstflint.substvars b/debian/mstflint.substvars
deleted file mode 100644 (file)
index eaeca62..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-shlibs:Depends=libc6 (>= 2.14), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1), zlib1g (>= 1:1.1.4)
-misc:Depends=
diff --git a/debian/rules b/debian/rules
deleted file mode 100755 (executable)
index a578276..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/make -f
-# -*- makefile -*-
-# Sample debian/rules that uses debhelper.
-#
-# This file was originally written by Joey Hess and Craig Small.
-# As a special exception, when this file is copied by dh-make into a
-# dh-make output file, you may use that output file without restriction.
-# This special exception was added by Craig Small in version 0.37 of dh-make.
-#
-# Modified to make a template file for a multi-binary package with separated
-# build-arch and build-indep targets  by Bill Allombert 2001
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-# This has to be exported to make some magic below work.
-export DH_OPTIONS
-DEB_CONFIGURE_EXTRA_FLAGS ?= ""
-
-
-%:
-       dh $@ 
-
-override_dh_auto_configure:
-       dh_auto_configure -- $(DEB_CONFIGURE_EXTRA_FLAGS)
diff --git a/debian/source/format b/debian/source/format
deleted file mode 100644 (file)
index 163aaf8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3.0 (quilt)
diff --git a/dev_mgt/Makefile.am b/dev_mgt/Makefile.am
deleted file mode 100644 (file)
index 147f7aa..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-
-AM_CPPFLAGS = -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/common  -I$(top_srcdir)/include/mtcr_ul
-
-AM_CFLAGS = -W -Wall -g -MP -MD -Wswitch-enum $(COMPILER_FPIC) -DMTCR_EXPORT
-noinst_LIBRARIES = libdev_mgt.a
-
-libdev_mgt_a_SOURCES = \
-                                               tools_dev_types.c \
-                                               tools_dev_types.h \
-                                               $(top_srcdir)/common/bit_slice.h       \
-                                               $(top_srcdir)/common/compatibility.h   \
-                                               $(top_srcdir)/common/tools_version.h
-
diff --git a/dev_mgt/tools_dev_types.c b/dev_mgt/tools_dev_types.c
deleted file mode 100644 (file)
index eca37f9..0000000
+++ /dev/null
@@ -1,539 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <reg_access/reg_access.h>
-#include "tools_dev_types.h"
-
-enum dm_dev_type {
-    DM_UNKNOWN = -1,
-    DM_HCA,
-    DM_SWITCH,
-    DM_BRIDGE,
-    DM_QSFP_CABLE,
-    DM_SFP_CABLE,
-};
-
-struct dev_info {
-    dm_dev_id_t      dm_id;
-    u_int16_t        hw_dev_id;
-    int              hw_rev_id;  /* -1 means all revisions match this record */
-    int              sw_dev_id;  /* -1 means all hw ids  match this record */
-    const char*      name;
-    int              port_num;
-    enum dm_dev_type dev_type;
-};
-
-#define DEVID_ADDR                          0xf0014
-#define CABLEID_ADDR                        0x0
-#define SFP_51_ADDR                         92
-#define SFP_51_PAGING_ADDR                  64
-
-#ifdef CABLES_SUPP
-enum dm_dev_type getCableType(u_int8_t id) {
-    switch (id) {
-        case 0xd:
-        case 0x11:
-        case 0xe:
-        case 0xc:
-            return DM_QSFP_CABLE;
-        case 0x3:
-            return DM_SFP_CABLE;
-        default:
-            return DM_UNKNOWN;
-    }
-}
-#endif
-
-static struct dev_info g_devs_info[] = {
-    {
-        .dm_id     = DeviceInfiniScaleIV,
-        .hw_dev_id = 0x01b3,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "InfiniScaleIV",
-        .port_num  = 36,
-        .dev_type  = DM_SWITCH
-    },
-    {
-        .dm_id     = DeviceSwitchX,
-        .hw_dev_id = 0x0245,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "SwitchX",
-        .port_num  = 64,
-        .dev_type  = DM_SWITCH
-    },
-    {
-        .dm_id     = DeviceConnectX2,
-        .hw_dev_id = 0x190,
-        .hw_rev_id = 0xb0,
-        .sw_dev_id = -1,
-        .name      = "ConnectX2",
-        .port_num  = 2,
-        .dev_type  = DM_HCA
-    },
-
-    {
-        .dm_id     = DeviceConnectX3,
-        .hw_dev_id = 0x1f5,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "ConnectX3",
-        .port_num  = 2,
-        .dev_type  = DM_HCA
-    },
-    {
-        .dm_id     = DeviceConnectIB,
-        .hw_dev_id = 0x1ff,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "ConnectIB",
-        .port_num  = 2,
-        .dev_type  = DM_HCA
-    },
-    {
-        .dm_id     = DeviceConnectX3Pro,
-        .hw_dev_id = 0x1f7,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "ConnectX3Pro",
-        .port_num  = 2,
-        .dev_type  = DM_HCA
-    },
-    {
-        .dm_id     = DeviceSwitchIB,
-        .hw_dev_id = 0x247,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "SwitchIB",
-        .port_num  = 36,
-        .dev_type  = DM_SWITCH
-    },
-    {
-        .dm_id     = DeviceSpectrum,
-        .hw_dev_id = 0x249,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "Spectrum",
-        .port_num  = 64,
-        .dev_type  = DM_SWITCH
-    },
-    {
-        .dm_id     = DeviceConnectX4,
-        .hw_dev_id = 0x209,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "ConnectX4",
-        .port_num  = 2,
-        .dev_type  = DM_HCA
-    },
-    {
-        .dm_id     = DeviceConnectX4LX,
-        .hw_dev_id = 0x20b,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "ConnectX4LX",
-        .port_num  = 2,
-        .dev_type  = DM_HCA
-    },
-    {
-        .dm_id     = DeviceConnectX5,
-        .hw_dev_id = 0x20d,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "ConnectX5",
-        .port_num  = 2,
-        .dev_type  = DM_HCA
-    },
-    {
-        .dm_id     = DeviceFPGA,
-        .hw_dev_id = 0x600,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "FPGA",
-        .port_num  = 2,
-        .dev_type  = DM_HCA
-    },
-    {
-        .dm_id     = DeviceFPGANewton,
-        .hw_dev_id = 0xfff, // Dummy device ID till we have official one
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "FPGA_NEWTON",
-        .port_num  = 2,
-        .dev_type  = DM_HCA
-    },
-    {
-        .dm_id     = DeviceSwitchIB2,
-        .hw_dev_id = 0x24b,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "SwitchIB2",
-        .port_num  = 36,
-        .dev_type  = DM_SWITCH
-    },
-    {
-        .dm_id     = DeviceCable,
-        .hw_dev_id = 0xffff,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "Cable",
-        .port_num  = -1,
-        .dev_type  = DM_QSFP_CABLE
-    },
-    {
-        .dm_id     = DeviceCableQSFP,
-        .hw_dev_id = 0xffff,
-        .hw_rev_id = 0,
-        .sw_dev_id = -1,
-        .name      = "CableQSFP",
-        .port_num  = -1,
-        .dev_type  = DM_QSFP_CABLE
-    },
-    {
-        .dm_id     = DeviceCableQSFPaging,
-        .hw_dev_id = 0xffff,
-        .hw_rev_id = 1,
-        .sw_dev_id = -1,
-        .name      = "CableQSFPaging",
-        .port_num  = -1,
-        .dev_type  = DM_QSFP_CABLE
-    },
-    {
-        .dm_id     = DeviceCableSFP,
-        .hw_dev_id = 0xffff,
-        .hw_rev_id = 1,
-        .sw_dev_id = -1,
-        .name      = "CableSFP",
-        .port_num  = -1,
-        .dev_type  = DM_SFP_CABLE
-    },
-    {
-        .dm_id     = DeviceCableSFP51,
-        .hw_dev_id = 0xffff,
-        .hw_rev_id = 1,
-        .sw_dev_id = -1,
-        .name      = "CableSFP51",
-        .port_num  = -1,
-        .dev_type  = DM_SFP_CABLE
-    },
-    {
-        .dm_id     = DeviceCableSFP51Paging,
-        .hw_dev_id = 0xffff,
-        .hw_rev_id = 1,
-        .sw_dev_id = -1,
-        .name      = "CableSFP51Paging",
-        .port_num  = -1,
-        .dev_type  = DM_SFP_CABLE
-    },
-    {
-        .dm_id     = DeviceDummy,
-        .hw_dev_id = 0x1,
-        .hw_rev_id = -1,
-        .sw_dev_id = -1,
-        .name      = "DummyDevice",
-        .port_num  = 2,
-        .dev_type  = DM_HCA
-    },
-    {
-        .dm_id     = DeviceUnknown,
-        .hw_dev_id = 0,
-        .hw_rev_id = 0,
-        .sw_dev_id = 0,
-        .name      = "Unknown Device",
-        .port_num  = -1,
-        .dev_type  = DM_UNKNOWN
-    }
-};
-
-static const struct dev_info* get_entry(dm_dev_id_t type)
-{
-    const struct dev_info* p = g_devs_info;
-    while (p->dm_id != DeviceUnknown) {
-        if (type == p->dm_id) {
-            break;
-        }
-        p++;
-    }
-    return p;
-}
-
-static const struct dev_info* get_entry_by_dev_rev_id(u_int32_t hw_dev_id, u_int32_t hw_rev_id)
-{
-    const struct dev_info* p = g_devs_info;
-    while (p->dm_id != DeviceUnknown) {
-        if (hw_dev_id == p->hw_dev_id) {
-            if ((p->hw_rev_id == -1) ||  ((int)hw_rev_id == p->hw_rev_id)) {
-                break;
-            }
-        }
-        p++;
-    }
-    return p;
-}
-
-/**
- * Returns 0 on success and 1 on failure.
- */
-int dm_get_device_id(mfile* mf,
-                    dm_dev_id_t* ptr_dm_dev_id,
-                    u_int32_t*   ptr_hw_dev_id,
-                    u_int32_t*   ptr_hw_rev)
-{
-    u_int32_t dword;
-    int rc;
-    u_int32_t dev_flags;
-
-    //Special case: FPGA device:
-#ifndef MST_UL
-    if (mf->tp == MST_FPGA) {
-        *ptr_dm_dev_id = DeviceFPGA;
-        *ptr_hw_dev_id = 0x600;
-        return 0;
-    }
-    if (mf->tp == MST_FPGA_NEWTON) {
-       *ptr_dm_dev_id = DeviceFPGANewton;
-       *ptr_hw_dev_id = 0xfff;
-       return 0;
-    }
-#endif
-#ifdef CABLES_SUPP
-    if (mf->tp == MST_CABLE) {
-        //printf("-D- Getting cable ID\n");
-        if (mread4(mf, CABLEID_ADDR, &dword) != 4)
-        {
-            //printf("FATAL - crspace read (0x%x) failed: %s\n", DEVID_ADDR, strerror(errno));
-            return 1;
-        }
-        dword = __cpu_to_le32(dword); // Cable pages are in LE
-        *ptr_hw_dev_id = 0xffff;
-        u_int8_t id = EXTRACT(dword, 0, 8);
-        enum dm_dev_type cbl_type = getCableType(id);
-        if (cbl_type == DM_QSFP_CABLE) {
-            // Get Byte 2 bit 2 ~ bit 18
-            u_int8_t paging = EXTRACT(dword, 18, 1);
-            //printf("DWORD: %#x, paging: %d\n", dword, paging);
-            if (paging == 0) {
-                *ptr_dm_dev_id = DeviceCableQSFPaging;
-            } else {
-                *ptr_dm_dev_id = DeviceCableQSFP;
-            }
-        } else if (cbl_type == DM_SFP_CABLE) {
-            *ptr_dm_dev_id = DeviceCableSFP;
-            if (mread4(mf, SFP_51_ADDR, &dword) != 4)
-            {
-               //printf("FATAL - crspace read (0x%x) failed: %s\n", DEVID_ADDR, strerror(errno));
-               return 1;
-            }
-            u_int8_t byte = EXTRACT(dword, 6, 1); //Byte 92 bit 6
-            if (byte) {
-                *ptr_dm_dev_id = DeviceCableSFP51;
-                if (mread4(mf, SFP_51_PAGING_ADDR, &dword) != 4)
-                {
-                   //printf("FATAL - crspace read (0x%x) failed: %s\n", DEVID_ADDR, strerror(errno));
-                   return 1;
-                }
-                byte = EXTRACT(dword, 4, 1); //Byte 64 bit 4
-                if (byte) {
-                    *ptr_dm_dev_id = DeviceCableSFP51Paging;
-                }
-            }
-        } else {
-            *ptr_dm_dev_id = DeviceUnknown;
-        }
-        return 0;
-    }
-#endif
-
-
-    rc = mget_mdevs_flags(mf, &dev_flags);
-    if (rc) {
-        dev_flags = 0;
-    }
-    // get hw id
-    // Special case for MLNX OS getting dev_id using REG MGIR
-    if (dev_flags & MDEVS_MLNX_OS) {
-        reg_access_status_t rc;
-        struct register_access_sib_mgir mgir;
-        memset(&mgir, 0, sizeof(mgir));
-        rc = reg_access_mgir(mf, REG_ACCESS_METHOD_GET, &mgir);
-        //printf("-D- RC[%s] -- REVID: %d -- DEVID: %d hw_dev_id: %d\n", m_err2str(rc), mgir.HWInfo.REVID, mgir.HWInfo.DEVID, mgir.HWInfo.hw_dev_id);
-        if (rc) {
-            dword = get_entry(DeviceSwitchX)->hw_dev_id;
-            *ptr_hw_rev    = 0;
-            *ptr_hw_dev_id = get_entry(DeviceSwitchX)->hw_dev_id;
-        } else {
-            dword = mgir.HWInfo.hw_dev_id;
-            if (dword == 0) {
-                dword = get_entry(DeviceSwitchX)->hw_dev_id;
-                *ptr_hw_dev_id = get_entry(DeviceSwitchX)->hw_dev_id;
-                *ptr_hw_rev = mgir.HWInfo.REVID & 0xf;
-            } else {
-                *ptr_hw_dev_id = dword;
-                *ptr_hw_rev = 0; //WA: MGIR should have also hw_rev_id and then we can use it.
-            }
-        }
-    } else {
-        if (mread4(mf, DEVID_ADDR, &dword) != 4)
-        {
-            //printf("FATAL - crspace read (0x%x) failed: %s\n", DEVID_ADDR, strerror(errno));
-            return 1;
-        }
-
-        *ptr_hw_dev_id = EXTRACT(dword, 0, 16);
-        *ptr_hw_rev    = EXTRACT(dword, 16, 8);
-    }
-
-    *ptr_dm_dev_id = get_entry_by_dev_rev_id(*ptr_hw_dev_id, *ptr_hw_rev)->dm_id;
-
-    if (*ptr_dm_dev_id == DeviceUnknown) {
-
-        /* Dev id not matched in array */
-        //printf("FATAL - Can't find devid id\n");
-        return 1; // TODO - fix return vals.
-    }
-    return 0;
-}
-
-int dm_get_device_id_offline(u_int32_t devid,
-                             u_int32_t chip_rev,
-                             dm_dev_id_t* ptr_dev_type)
-{
-    *ptr_dev_type = get_entry_by_dev_rev_id(devid, chip_rev)->dm_id;
-    return *ptr_dev_type == DeviceUnknown;
-}
-
-const char* dm_dev_type2str(dm_dev_id_t type)
-{
-    return get_entry(type)->name;
-}
-
-dm_dev_id_t dm_dev_str2type(const char* str)
-{
-    const struct dev_info* p = g_devs_info;
-    if (!str) {
-        return DeviceUnknown;
-    }
-    while (p->dm_id != DeviceUnknown) {
-        if (strcmp(str,p->name) == 0) {
-            return p->dm_id;
-        }
-        p++;
-    }
-    return DeviceUnknown;
-}
-
-int dm_get_hw_ports_num(dm_dev_id_t type)
-{
-    return get_entry(type)->port_num;
-}
-
-int dm_dev_is_hca(dm_dev_id_t type) {
-    return get_entry(type)->dev_type == DM_HCA;
-}
-
-int dm_dev_is_switch(dm_dev_id_t type)
-{
-    return get_entry(type)->dev_type == DM_SWITCH;
-}
-
-int dm_dev_is_bridge(dm_dev_id_t type)
-{
-    return get_entry(type)->dev_type == DM_BRIDGE;
-}
-
-int dm_dev_is_cable(dm_dev_id_t type)
-{
-    return (get_entry(type)->dev_type == DM_QSFP_CABLE || get_entry(type)->dev_type == DM_SFP_CABLE);
-}
-
-u_int32_t dm_get_hw_dev_id(dm_dev_id_t type)
-{
-    return get_entry(type)->hw_dev_id;
-}
-
-u_int32_t dm_get_hw_rev_id(dm_dev_id_t type)
-{
-    return get_entry(type)->hw_rev_id;
-}
-
-int dm_is_fpp_supported(dm_dev_id_t type)
-{
-    const struct dev_info* dp = get_entry(type);
-    if (
-        dp->dm_id == DeviceConnectIB ||
-        dp->dm_id == DeviceConnectX4 ||
-        dp->dm_id == DeviceConnectX4LX ||
-        dp->dm_id == DeviceConnectX5) {
-        return 1;
-    } else {
-        return 0;
-    }
-}
-
-int dm_is_device_supported(dm_dev_id_t type)
-{
-    return get_entry(type)->dm_id != DeviceUnknown;
-}
-
-int dm_is_livefish_mode(mfile* mf)
-{
-    if(!mf || !mf->dinfo) {
-        return 0;
-    }
-    dm_dev_id_t devid_t;
-    u_int32_t devid = 0;
-    u_int32_t revid = 0;
-    int rc = dm_get_device_id(mf, &devid_t, &devid, &revid);
-    if (rc) {
-        // Could not detrmine , by default is not livefish
-        return 0;
-    }
-    u_int32_t swid = mf->dinfo->pci.dev_id;
-    //printf("-D- swid: %#x, devid: %#x\n", swid, devid);
-    if (devid_t == DeviceConnectX2    ||
-        devid_t == DeviceConnectX3    ||
-        devid_t == DeviceConnectX3Pro ||
-        devid_t == DeviceSwitchX        ) {
-        return (devid == swid - 1);
-    } else {
-        return (devid == swid);
-    }
-
-    return 0;
-}
-
diff --git a/dev_mgt/tools_dev_types.h b/dev_mgt/tools_dev_types.h
deleted file mode 100644 (file)
index 432dc4e..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#ifndef TOOLS_DEV_TYPE_H
-#define TOOLS_DEV_TYPE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <common/bit_slice.h>
-#include <common/compatibility.h>
-#include <mtcr.h>
-
-enum dm_dev_id
-{
-    DeviceUnknown = -1,       //Dummy Device - Marker for indicating error.
-    DeviceStartMarker = 0,    // Dummy Device - Marker for first device
-                              // to let user iterate from DeviceStartMarker to DeviceEndMarker
-                              // Note: Call dm_is_device_supported() to see if a device is supported by the lib.
-
-    DeviceInfiniScale = 0,  // UnSupported
-    DeviceInfiniHost,       // UnSupported
-    DeviceInfiniHostIIIEx,  // UnSupported
-    DeviceInfiniHostIIIEx_MF,// UnSupported
-    DeviceInfiniScaleIII,   // UnSupported
-    DeviceInfiniHostIIILx,  // UnSupported
-    DeviceConnectX,         // UnSupported
-    DeviceConnectX2,       
-    DeviceInfiniScaleIV,
-    DeviceBridgeX,          // UnSupported
-    DeviceSwitchX,
-    DeviceConnectX3,
-    DeviceConnectIB,
-    DeviceConnectX3Pro,
-    DeviceSwitchIB,
-    DeviceSpectrum,
-    DeviceConnectX4,
-    DeviceConnectX4LX,
-    DeviceConnectX5,
-    DeviceFPGA,
-    DeviceSwitchIB2,
-    DeviceFPGANewton,
-    DeviceCable,
-    DeviceCableQSFP,
-    DeviceCableQSFPaging,
-    DeviceCableSFP,
-    DeviceCableSFP51,
-    DeviceCableSFP51Paging,
-    DeviceDummy,
-
-    DeviceEndMarker           // Dummy Device - Marker for indicating end of devices when iterating
-};
-
-typedef enum dm_dev_id dm_dev_id_t;
-
-/**
- * Returns 0 on success and 1 on failure.
- */
-int dm_get_device_id(mfile* mf,
-                     dm_dev_id_t* ptr_dev_type,
-                     u_int32_t* ptr_dev_id,
-                     u_int32_t* ptr_chip_rev);
-
-/**
- * Returns 0 on success and 1 on failure.
- */
-int dm_get_device_id_offline(u_int32_t devid,
-                             u_int32_t chip_rev,
-                             dm_dev_id_t* ptr_dev_type);
-
-
-/**
- * Returns 1 if device is supported and 0 otherwise (library dependant)
- */
-int dm_is_device_supported(dm_dev_id_t type);
-
-
-/**
- * Returns the device name as a "const char*"
- */
-const char* dm_dev_type2str(dm_dev_id_t type);
-
-/**
- * Returns the device id
- */
-dm_dev_id_t dm_dev_str2type(const char* str);
-
-/**
- * A predicate returning if the device is an hca
- */
-int dm_dev_is_hca(dm_dev_id_t type);
-
-/**
- * A predicate returning if the device is a switch
- */
-int dm_dev_is_switch(dm_dev_id_t type);
-
-/**
- * A predicate returning if the device is a bridge
- */
-int dm_dev_is_bridge(dm_dev_id_t type);
-
-/**
- * A predicate returning if the device is a Cable
- */
-int dm_dev_is_cable(dm_dev_id_t type);
-
-/**
- * Returns the max num of ports or -1 on error
- */
-int dm_get_hw_ports_num(dm_dev_id_t type);
-
-/**
- * Returns the HW device id of the givn device type or zero on failure.
- */
-u_int32_t dm_get_hw_dev_id(dm_dev_id_t type);
-
-/**
- * Returns the HW chip revision of the given device type or zero on failures,
- * This is useful to distinguish between ConnectX2 and ConnectX.
- */
-u_int32_t dm_get_hw_rev_id(dm_dev_id_t type);
-
-/**
- * A predicate returning if the device supports Function Per Port
- */
-int dm_is_fpp_supported(dm_dev_id_t type);
-
-/*
- * A predicate returning if the device is in LiveFish mode
- */
-int dm_is_livefish_mode(mfile* mf);
-
-#ifdef __cplusplus
-}       /* end of 'extern "C"' */
-#endif
-
-#endif // TOOLS_DEV_TYPE_H
diff --git a/flint/Makefile.am b/flint/Makefile.am
deleted file mode 100755 (executable)
index d2cb8c5..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or othint2_oem.er materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-MTCR_DIR    = $(top_srcdir)/mtcr_ul
-MTCR_INC_DIR = $(top_srcdir)/include/mtcr_ul
-MFLASH_DIR  = $(top_srcdir)/mflash
-COMMON_DIR  = $(top_srcdir)/common
-LAYOUTS_DIR = $(top_srcdir)/tools_layouts
-MFT_UTILS_DIR = $(top_srcdir)/mft_utils
-CMDIF_DIR   = $(top_srcdir)/cmdif
-
-AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir) -I$(MTCR_DIR) -I$(MFLASH_DIR) -I$(COMMON_DIR) \
-           -I$(LAYOUTS_DIR) -I$(MFT_UTILS_DIR) -I$(MTCR_INC_DIR)
-
-mstflint_CXXFLAGS = -Wall -W -g -MP -MD -pipe -DEXTERNAL
-bin_PROGRAMS = mstflint
-
-mstflint_SOURCES = flint.cpp flint.h subcommands.cpp subcommands.h\
-                                       flint_params.cpp flint_params.h cmd_line_parser.cpp err_msgs.h
-
-mstflint_LDADD =  ../mlxfwops/lib/libmlxfwops.a  \
-                  ../cmdparser/libcmdparser.a    \
-                 ../mflash/libmflash.a          \
-                 ../tools_res_mgmt/libtools_res_mgmt.a \
-                 $(CMDIF_DIR)/libcmdif.a        \
-                 ../reg_access/libreg_access.a  \
-                 ../dev_mgt/libdev_mgt.a        \
-                 ../mtcr_ul/libmtcr_ul.a        \
-                  ../tools_layouts/libtools_layouts.a \
-                 ../mft_utils/libmftutils.a\
-                 $(LIBSTD_CPP) -ldl
-
-
-if ENABLE_DC
-mstflint_LDADD += -lz
-else
-mstflint_CXXFLAGS += -DNO_ZLIB
-endif
-
-if ENABLE_OPENSSL
-mstflint_LDADD += $(top_srcdir)/tools_crypto/libtools_crypto.a -lcrypto
-else
-endif
-
-#get mst device examples and tool name from makefile
-mstflint_CXXFLAGS+= -DFLINT_NAME=\"mstflint\" -DFLINT_DISPLAY_NAME=\"MstFlint\"
-mstflint_CXXFLAGS += -DMST_DEV_EXAMPLE1=\"03:00.0\" -DMST_DEV_EXAMPLE2=\"mlx4_0\" -DMST_DEV_EXAMPLE3=\"03:00.0\" -DMST_DEV_EXAMPLE4=\"04:00.0\"
-
diff --git a/flint/cmd_line_parser.cpp b/flint/cmd_line_parser.cpp
deleted file mode 100644 (file)
index 7167b4c..0000000
+++ /dev/null
@@ -1,925 +0,0 @@
-/*
- *
- * cmd_line_parser.cpp - FLash INTerface
- *
- * Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id$
- *
- */
-
-#include <iostream>
-#include <stdio.h>
-#include <errno.h>
-// Flint includes
-#include "flint.h"
-#include <common/tools_version.h>
-#include "mlxfwops/lib/flint_io.h"
-
-#ifndef FLINT_NAME
-    #ifdef __GNUC__
-        #define FLINT_NAME "flint"
-    #else
-        #define FLINT_NAME "flint"
-    #endif
-#endif
-
-using namespace std;
-
-/******************************
- * Data structures containing
- * Meta data about subcommands
- * and flags
- ******************************/
-class SubCmdMetaData {
-private:
-    class SubCmd {
-    public:
-        SubCmd(string s, string l, sub_cmd_t n):  shortf(s), longf(l), cmdNum(n) {}
-        ~SubCmd(){}
-        string shortf;
-        string longf;
-        sub_cmd_t cmdNum;
-    };
-    vector<class SubCmd*> _sCmds;
-public:
-    SubCmdMetaData();
-    ~SubCmdMetaData();
-    sub_cmd_t getCmdNum(string flag);
-};
-
-SubCmdMetaData::SubCmdMetaData() {
-    _sCmds.push_back(new SubCmd("b", "burn", SC_Burn));
-    _sCmds.push_back(new SubCmd("q", "query", SC_Query));
-    _sCmds.push_back(new SubCmd("v", "verify", SC_Verify));
-    _sCmds.push_back(new SubCmd("", "swreset", SC_Swreset));
-    _sCmds.push_back(new SubCmd("", "reset_cfg", SC_ResetCfg));
-    _sCmds.push_back(new SubCmd("", "brom", SC_Brom));
-    _sCmds.push_back(new SubCmd("", "drom", SC_Drom));
-    _sCmds.push_back(new SubCmd("", "rrom", SC_Rrom));
-    _sCmds.push_back(new SubCmd("", "qrom", SC_Qrom));
-    _sCmds.push_back(new SubCmd("", "bb", SC_Bb));
-    _sCmds.push_back(new SubCmd("", "sg", SC_Sg));
-#ifndef EXTERNAL
-    _sCmds.push_back(new SubCmd("", "smg", SC_Smg));
-    _sCmds.push_back(new SubCmd("", "set_vpd", SC_Set_Vpd));
-#endif
-    _sCmds.push_back(new SubCmd("", "sv", SC_Sv));
-    _sCmds.push_back(new SubCmd("", "ri", SC_Ri));
-    _sCmds.push_back(new SubCmd("", "dc", SC_Dc));
-    _sCmds.push_back(new SubCmd("", "dh", SC_Dh));
-    _sCmds.push_back(new SubCmd("", "set_key", SC_Set_Key));
-    _sCmds.push_back(new SubCmd("", "hw_access", SC_Hw_Access));
-    _sCmds.push_back(new SubCmd("", "hw", SC_Hw));
-    _sCmds.push_back(new SubCmd("e", "erase", SC_Erase));
-    _sCmds.push_back(new SubCmd("", "rw", SC_Rw));
-    _sCmds.push_back(new SubCmd("", "ww", SC_Ww));
-    _sCmds.push_back(new SubCmd("", "wwne", SC_Wwne));
-    _sCmds.push_back(new SubCmd("", "wbne", SC_Wbne));
-    _sCmds.push_back(new SubCmd("", "wb", SC_Wb));
-    _sCmds.push_back(new SubCmd("", "rb", SC_Rb));
-    _sCmds.push_back(new SubCmd("", "clear_semaphore", SC_Clear_Sem));
-    _sCmds.push_back(new SubCmd("", "fi", SC_Fix_Img));
-    _sCmds.push_back(new SubCmd("cs", "checksum", SC_Check_Sum));
-    _sCmds.push_back(new SubCmd("ts", "timestamp", SC_Time_Stamp));
-    _sCmds.push_back(new SubCmd("ci", "cache_image", SC_Cache_Image));
-}
-
-SubCmdMetaData::~SubCmdMetaData() {
-    for (vector<class SubCmd*>::iterator it= _sCmds.begin(); it != _sCmds.end(); ++it )
-    {
-        delete *it;
-    }
-}
-
-sub_cmd_t SubCmdMetaData::getCmdNum(string flag)
-{
-    for (vector<class SubCmd*>::iterator it= _sCmds.begin(); it != _sCmds.end(); ++it )
-    {
-        if (((*it)->shortf == flag) || ((*it)->longf == flag)) {
-            return (*it)->cmdNum;
-        }
-    }
-    return SC_No_Cmd;
-}
-
-
-class FlagMetaData {
-private:
-    class Flag {
-    public:
-        Flag(string s, string l, int n):  shortf(s), longf(l), argNum(n) {}
-        ~Flag(){}
-        string shortf;
-        string longf;
-        int argNum;
-    };
-    vector<class Flag*> _flags;
-public:
-    FlagMetaData();
-    ~FlagMetaData();
-    int getNumOfArgs(string flag);
-};
-
-FlagMetaData::FlagMetaData() {
-    _flags.push_back(new Flag("d", "device", 1));
-    _flags.push_back(new Flag("", "guid", 1));
-    _flags.push_back(new Flag("", "guids", GUIDS));
-    _flags.push_back(new Flag("", "mac", 1));
-    _flags.push_back(new Flag("", "macs", MACS));
-    _flags.push_back(new Flag("", "uid", 1));
-    _flags.push_back(new Flag("", "blank_guids", 0));
-    _flags.push_back(new Flag("", "clear_semaphore", 0));
-    _flags.push_back(new Flag("h", "help", 0));
-    _flags.push_back(new Flag("", "hh", 0));
-    _flags.push_back(new Flag("i", "image", 1));
-    _flags.push_back(new Flag("", "qq", 0));
-    _flags.push_back(new Flag("", "nofs", 0));
-    _flags.push_back(new Flag("", "allow_psid_change", 0));
-    _flags.push_back(new Flag("", "allow_rom_change", 0));
-    _flags.push_back(new Flag("", "override_cache_replacement", 0));
-    _flags.push_back(new Flag("", "ocr", 0));
-    _flags.push_back(new Flag("", "no_flash_verify", 0));
-    _flags.push_back(new Flag("s", "silent", 0));
-    _flags.push_back(new Flag("y", "yes", 0));
-    _flags.push_back(new Flag("", "no", 0));
-    _flags.push_back(new Flag("", "vsd", 1));
-    _flags.push_back(new Flag("", "use_image_ps", 0));
-    _flags.push_back(new Flag("", "use_image_guids", 0));
-    _flags.push_back(new Flag("", "use_image_rom", 0));
-    _flags.push_back(new Flag("", "ignore_dev_data", 0));
-    _flags.push_back(new Flag("", "dual_image", 0));
-    _flags.push_back(new Flag("", "striped_image", 0));
-    _flags.push_back(new Flag("", "banks", 1));
-    _flags.push_back(new Flag("", "log", 1));
-    _flags.push_back(new Flag("", "flash_params", 1)); //its actually 3 but separated by comma so we refer to them as one
-    _flags.push_back(new Flag("v", "version", 0));
-    _flags.push_back(new Flag("", "no_devid_check", 0));
-    _flags.push_back(new Flag("", "use_fw", 0));
-    _flags.push_back(new Flag("", "use_dev_img_info", 0));
-}
-
-FlagMetaData::~FlagMetaData() {
-    for (vector<class Flag*>::iterator it= _flags.begin(); it != _flags.end(); ++it )
-    {
-        delete *it;
-    }
-}
-
-int FlagMetaData::getNumOfArgs(string flag)
-{
-    for (vector<class Flag*>::iterator it= _flags.begin(); it != _flags.end(); ++it )
-    {
-        if (((*it)->shortf == flag) || ((*it)->longf == flag)) {
-            return (*it)->argNum;
-        }
-    }
-    return -1;
-}
-
-/********************
- * Helper Functions:
- *******************/
-
-// NOTE : number of parameters extracted in the container should be checked.
-static void splitByDelimiters(std::vector<string>& container, string str, const char* delimiters )
-{
-       if (str.size() == 0 ) {
-               return;
-       }
-       char* cStr = strcpy(new char[str.size()+1], str.c_str());
-       char* ptr;
-       ptr = strtok(cStr, delimiters);
-
-       while (ptr != NULL) {
-               container.push_back(ptr);
-               ptr = strtok(NULL, delimiters);
-       }
-       delete[] cStr;
-       return;
-}
-
-char* stripFlag(char* flag) {
-    char* strippedFlagStart = NULL;
-    if (flag[0] != '-') { // not a flag
-        return flag;
-    };
-    if ((flag[0] == '-') && (flag[1] == '-'))
-        strippedFlagStart = &flag[2];
-    else {
-        strippedFlagStart = &flag[1];
-    }
-    return strippedFlagStart;
-}
-
-int countArgs(string args) {
-    if (args.size() == 0)
-        return 0;
-    int count = 1;
-    for (string::iterator it = args.begin(); it < args.end(); ++it) {
-        if (*it == ',')
-            count++;
-    }
-    return count;
-}
-
-bool verifyNumOfArgs(string name, string value) {
-    //HACK : we don't check device numOfArgs because image device format might contain ","
-    if ((name == "device") || (name == "d") ) {
-        return true;
-    }
-    if ((name == "image") || (name == "i") ) {
-        return true;
-    }
-    // Hack : VSD can be empty or contain "," so we shouldnt count its args
-    if (name == "vsd") {
-        return true;
-    }
-
-    int expected = FlagMetaData().getNumOfArgs(name);
-    if (expected < 0) {
-        printf(FLINT_INVALID_FLAG_ERROR, name.c_str());
-        return false;
-    }
-    //HACK : flash_params is 3 argument but given with comma separated instead of spaces like the rest
-    // so flag_arg_num gives a wrong value
-
-    if (name == "flash_params")
-        expected = 3;
-    int actual = countArgs(value);
-    if (actual < expected) {
-        printf(FLINT_TOO_FEW_ARGS_ERROR,expected, actual);
-        return false;
-    } else if (actual > expected) {
-        printf(FLINT_TOO_MANY_ARGS_ERROR, expected, actual);
-        return false;
-    }
-    return true;
-}
-
-bool strToNum(string str, u_int64_t& num, int base=0)
-{
-    char *endp;
-    char* numStr = strcpy(new char[str.size() + 1],str.c_str());
-    num = strtoul(numStr, &endp, base);
-    if (*endp) {
-        delete[] numStr;
-        return false;
-    }
-    delete[] numStr;
-    return true;
-}
-
-//this function is used in extracting both guids and macs from user
-bool getGUIDFromStr(string str, guid_t& guid, string prefixErr="")
-{
-    char* endp;
-    u_int64_t g;
-    g = strtoull(str.c_str(), &endp, 16);
-    if (*endp || (g == 0xffffffffffffffffULL && errno == ERANGE)) {
-        if (prefixErr.size() == 0) {
-            printf("-E- Invalid Guid/Mac/Uid syntax (%s) %s \n", str.c_str(), errno ? strerror(errno) : "" );
-        } else {
-            printf("%s\n", prefixErr.c_str());
-        }
-        return false;
-    }
-    guid.h = (u_int32_t)(g >> 32);
-    guid.l = (u_int32_t)(g & 0xffffffff);
-    return true;
-}
-
-guid_t incrGuid(guid_t baseGuid, unsigned int incrVal)
-{
-    u_int64_t g = baseGuid.h;
-    g = (g << 32) | baseGuid.l;
-    g += incrVal;
-    guid_t userGuid;
-    userGuid.h = (u_int32_t)(g >> 32);
-    userGuid.l = (u_int32_t)g;
-    return userGuid;
-}
-
-guid_t GetBaseMac(guid_t baseGuid)
-{
-    guid_t baseMac;
-    baseMac.l = (baseGuid.l & 0x00ffffff) | ((baseGuid.h & 0xff00) << 16);
-    baseMac.h = baseGuid.h >> 16;
-    return baseMac;
-}
-
-bool parseFlashParams(string params, flash_params_t& fp)
-{
-    // Step 1 split by ","
-    std::vector<std::string> paramVec;
-    splitByDelimiters(paramVec, params, ",");
-    if (paramVec.size() != 3) {
-        return false;
-    }
-    // Step 2 extract params
-    fp.type_name = strcpy(new char[paramVec[0].length()+1], paramVec[0].c_str());
-    if (!fp.type_name) {
-        return false;
-    }
-    u_int64_t tmp;
-    if (!strToNum(paramVec[1], tmp)) {
-        delete[] fp.type_name;
-        return false;
-    }
-    fp.log2size = (int)tmp;
-    if (!strToNum(paramVec[2], tmp)) {
-        delete[] fp.type_name;
-        return false;
-    }
-    fp.num_of_flashes = (int)tmp;
-    return true;
-}
-
-/************************************
- *Implementation of the Command line
- *Parsing part of the Flint class
- ************************************/
-
-#define FLASH_LIST_SZ 256
-
-void Flint::initCmdParser() {
-    AddDescription("flint is a FW (firmware) burning and flash memory operations tool for\n"
-            "Mellanox Infiniband HCAs, Ethernet NIC cards, and switch devices.");
-
-    AddOptions("device",
-                'd',
-                "<device>",
-                "Device flash is connected to.\n"
-                "Commands affected: all");
-
-    AddOptions("image",
-               'i',
-                "<image>",
-                "Binary image file.\n"
-                "Commands affected: burn, verify");
-
-    AddOptions("help",
-               'h',
-                "",
-                "Prints this message and exits");
-
-    AddOptions("hh",
-               ' ',
-                "",
-                "Prints extended command help");
-
-    AddOptions("yes",
-               'y',
-                "",
-                "Non interactive mode - assume answer\n"
-                "\"yes\" to all questions.\n"
-                "Commands affected: all");
-
-    AddOptions("no",
-               ' ',
-                "",
-                "Non interactive mode - assume answer\n"
-                "\"no\" to all questions.\n"
-                "Commands affected: all");
-
-    AddOptions("guid",
-               ' ',
-                "<GUID>",
-                "GUID base value. 4 GUIDs\n"
-                "are automatically assigned to the following values:\n\n"
-                "guid   -> node GUID\n"
-                "guid+1 -> port1\n"
-                "guid+2 -> port2\n"
-                "guid+3 -> system image GUID.\n\n"
-                "Note: port2 guid will be assigned even for a\n"
-                "single port HCA - The HCA ignores this value.\n\n"
-                "Commands affected: burn, sg");
-
-    AddOptions("guids",
-               ' ',
-                "<GUIDS...>",
-                "4 GUIDs must be specified here.\n"
-                "The specified GUIDs are assigned\n"
-                "to the following fields, respectively:\n"
-                "node, port1, port2 and system image GUID.\n\n"
-                "Note: port2 guid must be specified even for a\n"
-                "single port HCA - The HCA ignores this value.\n"
-                "It can be set to 0x0.\n\n"
-                "Commands affected: burn, sg");
-
-    AddOptions("mac",
-               ' ',
-                "<MAC>",
-                "MAC address base value. 2 MACs\n"
-                "are automatically assigned to the\n"
-                "following values:\n\n"
-                "mac    -> port1\n"
-                "mac+1  -> port2\n\n"
-                "Commands affected: burn, sg");
-
-    AddOptions("macs",
-               ' ',
-                "<MACs...>",
-                "2 MACs must be specified here.\n"
-                "The specified MACs are assigned\n"
-                "to port1, port2, respectively.\n"
-                "Commands affected: burn, sg\n\n"
-                "Note: -mac/-macs flags are applicable only for Mellanox\n"
-                "\tTechnologies ethernet products.");
-
-    AddOptions("uid",
-               ' ',
-                "<UID>",
-                "ConnectIB/SwitchIB only. Derive and set the device UIDs (GUIDs, MACs, WWNs).\n"
-                "UIDs are derived from the given base UID according to Mellanox Methodology\n"
-                "Commands affected: burn, sg");
-
-    AddOptions("blank_guids",
-               ' ',
-                "",
-                "Burn the image with blank GUIDs and MACs (where\n"
-                "applicable). These values can be set later using\n"
-                "the \"sg\" command (see details below).\n\n"
-                "Commands affected: burn");
-
-    AddOptions("clear_semaphore",
-               ' ',
-                "",
-                "Force clear the flash semaphore on the device.\n"
-                "No command is allowed when this flag is used.\n"
-                "NOTE: May result in system instability or flash\n"
-                "\tcorruption if the device or another\n"
-                "\tapplication is currently using the flash.\n"
-                "\tExercise caution.\n");
-
-    AddOptions("qq",
-               ' ',
-                "",
-                "Run a quick query. When specified, flint will not perform full\n"
-                "image integrity checks during the query operation. This may shorten\n"
-                "execution time when running over slow interfaces (e.g., I2C, MTUSB-1).\n"
-                "Commands affected: burn, query");
-
-    AddOptions("nofs",
-               ' ',
-                "",
-                "Burn image in a non failsafe manner.");
-
-    AddOptions("allow_psid_change",
-               ' ',
-                "",
-                "Allow burning a FW image with a different PSID (Parameter Set ID)than the\n"
-                "one currently on flash. Note that changing a PSID may cause the device to\n"
-                "malfunction. Use only if you know what you are doing");
-
-    AddOptions("allow_rom_change",
-               ' ',
-                "",
-                "Allow burning/removing a ROM to/from FW image when product version is present.\n"
-                "Use only if you know what you are doing");
-
-    AddOptions("override_cache_replacement",
-               ' ',
-                "",
-                "On SwitchX/ConnectIB devices:\n"
-                "Allow accessing the flash even if the cache replacement mode is enabled.\n"
-                "NOTE: This flag is intended for advanced users only.\n"
-                "\tRunning in this mode may cause the firmware to hang.\n");
-
-    AddOptions("no_flash_verify",
-               ' ',
-                "",
-                "Do not verify each write on the flash.");
-
-    AddOptions("use_fw",
-               ' ',
-                "",
-                "Flash access will be done using FW (ConnectX-3/ConnectX-3Pro only).");
-
-    AddOptions("silent",
-               's',
-                "",
-                "Do not print burn progress flyer.\n"
-                "Commands affected: burn");
-
-    AddOptions("vsd",
-               ' ',
-                "<string>",
-                "Write this string, of up to 208 characters, to VSD when burn.");
-
-    AddOptions("use_image_ps",
-               ' ',
-                "",
-                "Burn vsd as appears in the given image - do not keep existing VSD on flash.\n"
-                "Commands affected: burn");
-
-    AddOptions("use_image_guids",
-               ' ',
-                "",
-                "Burn (guids/macs) as appears in the given image.\n"
-                "Commands affected: burn");
-
-    AddOptions("use_image_rom",
-               ' ',
-                "",
-                "Do not save the ROM which exists in the device.\n"
-                "Commands affected: burn");
-
-    AddOptions("ignore_dev_data",
-               ' ',
-                "",
-                "Do not attempt to take device data sections from device(sections will be taken from the image. FS3 Only).\n"
-                "Commands affected: burn");
-
-    AddOptions("use_dev_img_info",
-               ' ',
-                "",
-                "preserve select image info fields from the device upon FW update (FS3 Only).\n"
-                "Commands affected: burn",
-                true);
-
-    AddOptions("dual_image",
-               ' ',
-                "",
-                "Make the burn process burn two images on flash (previously default algorithm). Current"
-                "default failsafe burn process burns a single image (in alternating locations).\n"
-                "Commands affected: burn");
-
-    AddOptions("striped_image",
-               ' ',
-                "",
-                "Use this flag to indicate that the given image file is in a \"striped image\" format.\n"
-                "Commands affected: query verify");
-
-    AddOptions("banks",
-               ' ',
-                "<bank>",
-                "Set the number of attached flash devices (banks)");
-
-    AddOptions("log",
-               ' ',
-                "<log_file>",
-                "Print the burning status to the specified log file");
-
-    char flashList[FLASH_LIST_SZ];
-    char flashParDesc[FLASH_LIST_SZ*2];
-    Flash::get_flash_list(flashList);
-    snprintf(flashParDesc, FLASH_LIST_SZ*2,"Use the given parameters to access the flash instead of reading them from the flash.\n"\
-                                                                  "Supported parameters:\n"\
-                                                                  "Type: The type of the flash, such as:%s.\n"\
-                                                                  "log2size: The log2 of the flash size."\
-                                                                  "num_of_flashes: the number of the flashes connected to the device.", flashList);
-
-
-    AddOptions("flash_params",
-               ' ',
-                "<type, log2size, num_of_flashes>", flashParDesc);
-
-    AddOptions("version",
-               'v',
-                "",
-                "Version info.");
-
-    AddOptions("no_devid_check",
-               ' ',
-                "",
-                "ignore device_id checks", true);
-
-    AddOptions("ocr",
-               ' ',
-                "",
-                "another flag for override cache replacement", true);
-
-
-    _cmdParser.AddRequester(this);
-}
-
-ParseStatus Flint::HandleOption(string name, string value)
-{
-    //TODO: consider verifying num of args inside each if statements that needs its arg num verified
-    //      thus we will be able to get rid of the hacks inside the function in the expense of a longer code.
-    if (!(verifyNumOfArgs(name, value)))
-                return PARSE_ERROR;
-
-    if (name == "device" || name == "d" )
-    {
-        _flintParams.device_specified = true;
-        _flintParams.device = value;
-    }
-    else if (name == "help" || name == "h")
-    {
-        cout<< _cmdParser.GetUsage()<<endl;
-        cout<<"COMMANDS SUMMARY:"<<endl;
-        for (map_sub_cmd_t_to_subcommand::iterator it=_subcommands.begin(); it != _subcommands.end(); it++)
-        {
-                       if (it->first == SC_ResetCfg) {
-                               // hidden command so "forget" mentioning it
-                               continue;
-                       }
-            string str1 = "  "+it->second->getFlagL()+((it->second->getFlagS() == "") ? ("  ") : ("|"))+it->second->getFlagS()\
-                    +" "+it->second->getParam();
-            string str2 = ": " + it->second->getDesc()+"\n";
-            printf("%-44s %s", str1.c_str(), str2.c_str());
-        }
-        cout<<endl<<"  Return values:\n  0 - Successful completion\n  1 - An error has occurred\n"
-                "  7 - For burn command - FW already updated - burn was aborted."<<endl << endl;
-        return PARSE_OK_WITH_EXIT;
-    }
-    else if (name == "version" || name == "v")
-    {
-#ifdef EXTERNAL
-            print_version_string(FLINT_NAME, "");
-#else
-            print_version_string(FLINT_NAME"(oem)", "");
-#endif
-            return PARSE_OK_WITH_EXIT;
-    }
-    else if (name == "hh")
-    {
-        cout << _cmdParser.GetUsage()<<endl;
-        cout<<"COMMANDS SUMMARY:"<<endl;
-        for (map_sub_cmd_t_to_subcommand::iterator it=_subcommands.begin(); it != _subcommands.end(); it++)
-            {
-                string str1 = "  "+it->second->getFlagL()+((it->second->getFlagS() == "") ? ("  ") : ("|"))+it->second->getFlagS()\
-                        +" "+it->second->getParam();
-                string str2 = ": " + it->second->getDesc()+"\n";
-                printf("%-40s %s", str1.c_str(), str2.c_str());
-            }
-        cout<<endl<<endl<<"COMMANDS DESCRIPTION:"<<endl;
-        for (map_sub_cmd_t_to_subcommand::iterator it=_subcommands.begin(); it != _subcommands.end(); it++)
-                {
-                               if (it->first == SC_ResetCfg) {
-                                       // hidden command so "forget" mentioning it
-                                       continue;
-                               }
-                    cout<<"  Name:"<<endl<<"\t"<<it->second->getName()<<endl\
-                            <<"  Description:"<<endl<<"\t"<<it->second->getExtDesc()<<endl\
-                            <<"  Command:"<<endl<<"\t"<<it->second->getFlagL()<<\
-                            ((it->second->getFlagS() == "") ? ("  ") : ("|"))+it->second->getFlagS()\
-                            <<" "<<it->second->getParam()<<endl\
-                            <<"  Parameters:"<<endl<<"\t"<<it->second->getParamExp()<<endl\
-                            <<"  Examples:"<<endl<<"\t"<<it->second->getExample()<<endl<<endl<<endl;
-                }
-                cout<<endl<<"  Return values:\n  0 - Successful completion\n  1 - An error has occurred\n"
-                        "  7 - For burn command - FW already updated - burn was aborted."<<endl<< endl;
-        return PARSE_OK_WITH_EXIT;
-    }
-    else if (name == "no_devid_check") {
-            _flintParams.no_devid_check = true;
-    }
-    else if (name == "guid") {
-        _flintParams.guid_specified = true;
-        guid_t g;
-        if (!getGUIDFromStr(value, g)) {
-            return PARSE_ERROR;
-        }
-        for (int i=0; i<GUIDS ; i++){
-            _flintParams.user_guids.push_back(incrGuid(g,i));
-        }
-       // for (std::vector<guid_t>::iterator it=_flintParams.user_guids.begin();it != _flintParams.user_guids.end(); it++){
-       //     printf("%8.8x%8.8x\n",it->h,it->l);
-       // }
-    } else if (name == "guids") {
-        _flintParams.guids_specified = true;
-        std::vector<std::string> strs;
-        splitByDelimiters(strs, value,",");
-        if (strs.size() != GUIDS) {
-               return PARSE_ERROR;
-        }
-        for (int i=0; i<GUIDS; i++) {
-            guid_t g;
-            if (!getGUIDFromStr(strs[i], g)){
-                return PARSE_ERROR;
-            }else{
-                _flintParams.user_guids.push_back(g);
-            }
-        }
-    } else if (name == "mac") {
-        _flintParams.mac_specified = true;
-        guid_t m;
-        if (!getGUIDFromStr(value, m)){
-            return PARSE_ERROR;
-        }
-        for (int i=0; i<MACS ; i++){
-            _flintParams.user_macs.push_back(incrGuid(m,i));
-        }
-    } else if (name == "macs") {
-        _flintParams.macs_specified = true;
-        std::vector<std::string> strs;
-        splitByDelimiters(strs, value,",");
-        if (strs.size() != MACS) {
-               return PARSE_ERROR;
-        }
-        for (int i=0; i<MACS; i++) {
-            guid_t m;
-            if (!getGUIDFromStr(strs[i], m)){
-                return PARSE_ERROR;
-            }else{
-                _flintParams.user_macs.push_back(m);
-            }
-        }
-    } else if (name == "uid") {
-        _flintParams.uid_specified = true;
-        if (!getGUIDFromStr(value, _flintParams.baseUid)) {
-            return PARSE_ERROR;
-        }
-    } else if (name == "blank_guids") {
-        _flintParams.blank_guids = true;
-    } else if (name == "clear_semaphore") {
-        _flintParams.clear_semaphore = true;
-    } else if (name == "image" || name == "i") {
-        _flintParams.image_specified = true;
-        _flintParams.image = value;
-    } else if (name == "qq") {
-        _flintParams.quick_query = true;
-    } else if (name == "nofs") {
-        _flintParams.nofs = true;
-    } else if (name == "allow_psid_change") {
-        _flintParams.allow_psid_change = true;
-    } else if (name == "allow_rom_change") {
-        _flintParams.allow_rom_change = true;
-    } else if (name == "override_cache_replacement" || name == "ocr") {
-        _flintParams.override_cache_replacement = true;
-    } else if (name == "use_fw") {
-        _flintParams.use_fw = true;
-    } else if (name == "no_flash_verify") {
-        _flintParams.no_flash_verify = true;
-    } else if (name == "silent" || name == "s") {
-        _flintParams.silent = true;
-    } else if (name == "yes" || name == "y") {
-        _flintParams.yes = true;
-    } else if (name == "no") {
-        _flintParams.no = true;
-    } else if (name == "vsd") {
-        _flintParams.vsd_specified = true;
-        _flintParams.vsd = value;
-    } else if (name == "use_image_ps") {
-        _flintParams.use_image_ps = true;
-    } else if (name == "use_image_guids") {
-        _flintParams.use_image_guids = true;
-    } else if (name == "use_image_rom") {
-        _flintParams.use_image_rom = true;
-    } else if (name == "ignore_dev_data") {
-        _flintParams.ignore_dev_data = true;
-    } else if (name == "dual_image") {
-        _flintParams.dual_image = true;
-    } else if (name == "striped_image") {
-        _flintParams.striped_image = true;
-    }else if (name == "use_dev_img_info") {
-        _flintParams.use_dev_img_info = true;
-    }else if (name == "banks") {
-        _flintParams.banks_specified = true;
-        u_int64_t banksNum;
-        if (!strToNum(value, banksNum)) {
-            return PARSE_ERROR;
-        }
-        _flintParams.banks = (int)banksNum;
-    } else if (name == "log") {
-        _flintParams.log_specified = true;
-        _flintParams.log = value;
-    } else if (name == "flash_params") {
-        _flintParams.flash_params_specified = true;
-        if (!parseFlashParams(value, _flintParams.flash_params)) {
-            return PARSE_ERROR;
-        }
-        //printf("-D- flashType=%s , log2size = %d , numOfBanks = %d\n", _flintParams.flash_params.type_name, _flintParams.flash_params.log2size, _flintParams.flash_params.num_of_flashes);
-    } else {
-        cout << "Unknown Flag: " << name;
-        return PARSE_ERROR;
-    }
-    return PARSE_OK;
-}
-
-#define IS_NUM(cha) (((cha) >= '0') && ((cha) <= '9'))
-
-ParseStatus Flint::parseCmdLine(int argc, char* argv[]) {
-    //Step1 separate between option section and cmd section
-    SubCmdMetaData subCmds;
-    FlagMetaData flags;
-    char **argvCmd = NULL;
-    char **argvOpt = NULL;
-    int argcCmd = 0, argcOpt = 0;
-    for (int i = (argc - 1); i > 0; i--) {
-        if ((subCmds.getCmdNum(argv[i])) != SC_No_Cmd) { // i.e we found a subcommand
-        argcOpt = i;
-        argvOpt = argv;
-        argcCmd = argc - i;
-        argvCmd = &argv[i];
-        }
-    }
-    if (argcCmd == 0) {
-        //no subcommand found
-        argcOpt = argc;
-        argvOpt = argv;
-    }
-    //printf("-D- argcOpt:%d argvOpt:%s argcCmd:%d argvCmd:%s\n", argcOpt, argvOpt[0], argcCmd, argvCmd[0]);
-    //_cmdparser should deal with the case of no arguments in argv except the program.
-    //Step2 unite with comma multiple args in the options section
-    char* newArgv[argcOpt];
-    int newArgc = 0;
-    int i = 1, j = 1, argStart = 1, argEnd = 1;
-    //first arg is the flint command we can copy as is
-    newArgv[0] = strcpy(new char[strlen(argvOpt[0]) + 1], argvOpt[0]);
-    while (i < argcOpt) {
-        if (argvOpt[i][0] == '-' && !IS_NUM(argvOpt[i][1])) //its a flag (and not a number) so we copy to new_argv as is
-        {
-            newArgv[j] = strcpy(new char[strlen(argvOpt[i]) + 1],
-                    argvOpt[i]);
-            i++;
-            j++;
-        } else //its an argument
-        {
-            //find next flag if exsists
-            argStart = i;
-            argEnd = i;
-            int argsSize = 0;
-            while (argEnd < argcOpt && (argvOpt[argEnd][0] != '-' || IS_NUM(argvOpt[argEnd][1]))) {
-                argsSize += strlen(argvOpt[argEnd]) + 1; //for the comma
-                argEnd++;
-            }
-            i = argEnd;
-            //concatenate all the args with comma between them to a single string
-            newArgv[j] = new char[argsSize + 1];
-            newArgv[j][0] = '\0';
-            while (argStart < argEnd) {
-                if (argStart == argEnd - 1) {
-                    //no need to add comma to the last arg
-                    strcat(newArgv[j], argvOpt[argStart]);
-                } else {
-                    strcat(newArgv[j], argvOpt[argStart]);
-                    strcat(newArgv[j], ",");
-                }
-                argStart++;
-            }
-            j++;
-        }
-    }
-    newArgc = j;
-
-    //Step3 set the command and its args in the FlintParams struct if present
-    ParseStatus rc;
-    if (argcCmd > 0) {
-        this->_flintParams.cmd = subCmds.getCmdNum(argvCmd[0]);
-        for (int i = 1; i < argcCmd; ++i) {
-            this->_flintParams.cmd_params.push_back(string(argvCmd[i]));
-        }
-    } else //no command found deal with either missing/invalid command
-    {
-        //find last flag
-        int lastFlagPos;
-        char* strippedFlag;
-        for (lastFlagPos = argc - 1; lastFlagPos > 0; lastFlagPos--) {
-            if (argv[lastFlagPos][0] == '-' && !IS_NUM(argv[lastFlagPos][1]))
-                break;
-        }
-        if (lastFlagPos == 0) {
-            cout << FLINT_NO_OPTIONS_FOUND_ERROR << endl;
-            rc = PARSE_ERROR;
-            goto clean_up;
-        }
-        strippedFlag = stripFlag(argv[lastFlagPos]);
-        //check how many args it needs
-        int numOfArgs = flags.getNumOfArgs(strippedFlag);
-        //if too many args return arg in pos num_of_args+1 as the invalid command.
-        if ((argc - 1 - lastFlagPos) > numOfArgs) {
-            printf(FLINT_INVALID_COMMAD_ERROR, argv[argc - 1]);
-            rc = PARSE_ERROR;
-            goto clean_up;
-        }
-    }
-    //Step5 parse option section using _cmdParser
-    rc = this->_cmdParser.ParseOptions(newArgc, newArgv);
-    // Step 6 Delete allocated memory
-    clean_up: for (int i = 0; i < newArgc; i++) {
-        delete[] newArgv[i];
-    }
-    return rc;
-}
diff --git a/flint/err_msgs.h b/flint/err_msgs.h
deleted file mode 100644 (file)
index 6f8bc18..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- *
- * err_msgs.h - FLash INTerface
- *
- * Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id$
- *
- */
-
-
-#ifndef __ERR_MSGS_H__
-#define __ERR_MSGS_H__
-
-/**********************
- * Flint Status Code
- *********************/
-
-typedef enum {
-    FLINT_SUCCESS = 0,
-    FLINT_FAILED = 1,
-    FLINT_BURN_ABORTED = 7
-}FlintStatus;
-
-/***********************
- * Flint Error Messages
- **********************/
-
-#define FLINT_CLEAR_SEM_CMD_ERROR             "No command is allowed when -clear_semaphore flag is given.\n"
-#define FLINT_COMMAND_FLAGS_ERROR             "For %s command, Please specify %s.\n"
-#define FLINT_PARSE_MEM_ERROR                 "Failed to allocate memory for parsing.\n "
-#define FLINT_NO_OPTIONS_FOUND_ERROR          "No options found. "
-#define FLINT_INVALID_COMMAD_ERROR            "Invalid command: %s\n"
-#define FLINT_TOO_MANY_ARGS_ERROR             "Too many arguments. Expected: %d , Received: %d\n"
-#define FLINT_TOO_FEW_ARGS_ERROR              "Too few arguments. Expected: %d , Received: %d\n"
-#define FLINT_NO_COMMAND_ERROR                "No command found."
-#define FLINT_OPEN_FWOPS_DEVICE_ERROR         "Cannot open Device: %s. %s\n"
-#define FLINT_OPEN_FWOPS_IMAGE_ERROR          "Cannot open Image: %s. %s\n"
-#define FLINT_DEVICE_AND_IMAGE_ERROR          "Please specify either Device or Image.\n"
-#define FLINT_NO_DEVICE_ERROR                 "Please specify Device.\n"
-#define FLINT_NO_IMAGE_ERROR                  "Please specify Image file.\n"
-#define FLINT_MISSED_ARG_ERROR                "Missed %s parameter after \"%s\" command.\n"
-#define FLINT_CMD_ARGS_ERROR                  "Command \"%s\" requires %d arguments, but %d arguments were given\n"
-#define FLINT_CMD_ARGS_ERROR2                 "Command \"%s\" requires at most %d arguments, but %d arguments were given\n"
-#define FLINT_CMD_ARGS_ERROR3                 "Command \"%s\" requires at least %d arguments, but %d arguments were given\n"
-#define FLINT_CMD_ARGS_ERROR4                 "Command \"%s\" requires %d or %d arguments, but %d arguments were given\n"
-#define FLINT_CMD_ARGS_ERROR5                 "Command \"%s\" does not require arguments\n"
-#define FLINT_INVALID_OPTION_ERROR            "Unknown option \"%s\" for the \"%s\" command. you can use %s.\n"
-#define FLINT_INVALID_FLAG_ERROR              "Invalid switch \"%s\" is specified.\n"
-#define FLINT_INVALID_FLAG_WITH_FLAG_ERROR    "Cannot specify \"%s\" flag with \"%s\" flag.\n"
-#define FLINT_INVALID_FLAG_WITHOUT_FLAG_ERROR "\"%s\" flag must be specified with \"%s\" flag.\n"
-#define FLINT_INVALID_FLAG_WITH_CMD_ERROR     "Cannot specify flag: %s with Command: %s\n"
-#define FLINT_CMD_VERIFY_ERROR                "FW image verification failed: %s. AN HCA DEVICE CAN NOT BOOT FROM THIS IMAGE.\n"
-#define FLINT_FAILED_QUERY_ERROR              "Failed to query %s: %s.%s\n"
-#define FLINT_COMMAND_DEVICE_IMAGE_ERROR      "Command \"%s\" requires both image and device to be specified.\n"
-#define FLINT_COMMAND_DEVICE_ERROR            "Command \"%s\" requires device, but an image file was given.\n"
-#define FLINT_COMMAND_IMAGE_ERROR             "Command \"%s\" requires an image file, but device was given.\n"
-#define FLINT_COMMAND_DEVICE_ERROR2           "Command \"%s\" requires device, but both an image file and a device are given.\n"
-#define FLINT_COMMAND_IMAGE_ERROR2            "Command \"%s\" requires an image, but both an image file and a device are given.\n"
-#define FLINT_HW_SET_ARGS_ERROR               "bad argument of hw set command : %s, it should be in the format PARAM_NAME=VALUE\n"
-#define FLINT_HW_COMMAND_ERROR                "HW %s failed. %s\n"
-#define FLINT_SWRESET_ERROR                   "Software reset failed. %s\n"
-#define FLINT_ERASE_SEC_ERROR                 "Erase sector failed. %s\n"
-#define FLINT_INVALID_ADDR_ERROR              "Invalid address \"%s\"\n"
-#define FLINT_FLASH_READ_ERROR                "Flash read failed. %s\n"
-#define FLINT_FLASH_WRITE_ERROR               "Flash write failed. %s\n"
-#define FLINT_INVALID_DATA_ERROR              "Invalid data \"%s\"\n"
-#define FLINT_INVALID_SIZE_ERROR              "Invalid size \"%s\", Length should be 4-bytes aligned.\n"
-#define FLINT_INVALID_ARG_ERROR               "Invalid argument \"%s\"\n"
-#define FLINT_OPEN_FILE_ERROR                 "Cannot open %s: %s\n"
-#define FLINT_WRITE_FILE_ERROR                "Failed to write to %s: %s\n"
-#define FLINT_IO_OPEN_ERROR                   "Failed to open %s: %s\n"
-#define FLINT_IMAGE_READ_ERROR                "Failed to read image. %s\n"
-#define FLINT_READ_ERROR                      "Failed to read from %s. %s\n"
-#define FLINT_WIN_NOT_SUPP_ERROR              "Command \"%s\" is not supported in windows.\n"
-#define FLINT_WIN_ONLY_SUPP_ERROR             "Command  \"%s\" is supported only in windows.\n"
-#define FLINT_GEN_COMMAND_ERROR               "Failed to execute command %s. %s\n"
-#define FLINT_FS3_BB_ERROR                    "bb command is not supported anymore in FS3 image, please use b for burning FS3 image.\n"
-#define FLINT_FS3_BURN_ERROR                  "Burning FS3 image failed: %s\n"
-#define FLINT_FS2_BURN_ERROR                  "Burning FS2 image failed: %s\n"
-#define FLINT_PSID_ERROR                      "PSID mismatch. The PSID on flash (%s) differs from the PSID in the given image (%s).\n"
-#define FLINT_FS2_STRIPED_ERROR               "The -striped_image cannot be used with the burn command\n"
-#define FLINT_IMG_DEV_COMPAT_ERROR            "The given device requires an %s image type, but the given image file does not contain an %s FW image\n"
-#define FLINT_UNKNOWN_FW_TYPE_ERROR           "Unknown Firmware Type.\n"
-#define FLINT_READ_ROM_ERROR                  "Read ROM failed. %s\n"
-#define FLINT_SG_GUID_ERROR                   "Cannot set GUIDs: %s\n"
-#define FLINT_SG_UID_ERROR                    "Failed to set UID: %s\n"
-#define FLINT_MFG_ERROR                       "Failed to set manufacture guids: %s\n"
-#define FLINT_VSD_ERROR                       "Failed to set the VSD: %s\n"
-#define FLINT_VPD_ERROR                       "Failed to set VPD: %s\n"
-#define FLINT_SET_KEY_ERROR                   "Failed to set the HW access key: %s\n"
-#define FLINT_RESET_CFG_ERROR                 "Failed to reset Configuration: %s\n"
-#define FLINT_FIX_IMG_ERROR                   "Failed to fix device image: %s\n"
-#define FLINT_DROM_ERROR                      "Remove ROM failed: %s\n"
-#define FLINT_BROM_ERROR                      "Burn ROM failed: %s\n"
-#define FLINT_DUMP_ERROR                      "Failed dumping %s : %s\n"
-#define FLINT_ROM_QUERY_ERROR                 "Image file rom (%s) query failed. %s\n"
-#define FLINT_WB_FILE_ERROR                   "failed to open file: %s. %s\n"
-#define FLINT_WB_ERROR                        "write Block Failed. %s\n"
-#define FLINT_NO_ZLIB_ERROR                   "Executable was compiled with \"dump files\" option disabled.\n"
-#define FLINT_FLAG_WITH_FLAG_ERROR            "\"%s\" flag must be specified with \"%s\" flag.\n"
-#define FLINT_INVALID_PASSWORD                "Invalid Password.\n"
-#define FLINT_NO_GUID_MAC_FLAGS_ERROR         "Can not set GUIDs/MACs: please run with -uid/-guid/-mac flag.\n"
-#define FLINT_NO_UID_FLAG_ERROR               "Can not set GUIDs/MACs: uid is not specified, please run with -uid flag.\n"
-#define FLINT_CHECKSUM_ERROR                  "Failed to calculate checksum on %s: %s\n"
-#define FLINT_CHECKSUM_MISSMATCH_ERROR        "Given checksum: %s does not match the checksum calculated on device FW: %s.\n"
-#define FLINT_CHECKSUM_PARSE_ERROR            "Failed to parse given checksum.\n"
-#define FLINT_CHECKSUM_LEN_ERROR              "MD5 checksum should be exactly 16 bytes long.\n"
-#define FLINT_CHECKSUM_HEX_ERROR              "MD5 checksum should contain only hexadecimal digits.\n"
-#define FLINT_CACHE_IMAGE_ERROR                 "Failed to issue image cache request to driver. %s. make sure Mellanox driver is loaded and working properly.\n"
-
-/**************************
- * Flint Warning Messages
- *************************/
-#define FLINT_QQ_WARRNING               "-W- Running quick query - Skipping full image integrity checks.\n"
-#define FLINT_NOT_MLNX_FW_WARNING      "-W- Not a Mellanox FW image (vendor_id = 0x%04x). VSD and PSID are not displayed.\n"
-#define FLINT_BLANK_GUIDS_WARNING      "-W- GUIDs/MACs values and their CRC are not set.\n"
-#define FLINT_MULTI_BIT_WARNING        "Multicast bit (bit 40) is set."
-#define FLINT_MORE_48_BITS_WARNING     "More than 48 bits are used."
-#define FLINT_BAD_MAC_ADRESS_WARNING   "\n-W- Bad mac address ( %4.4x%8.8x ): %s\n"
-#define FLINT_MAC_ENTRIES_WARNING      "-W- Cannot get MAC address: Expecting %d entries in guid section, got %d. Probably an old FW image. Please update.\n"
-#define FLINT_INTERRUPT_WARRNING       "\n-W- An internal error occurred. This program cannot be interrupted.\n"
-#define FLINT_SET_GUIDS_WARRNING       "-W- GUIDs are already set, re-burning image with the new GUIDs ...\n"
-#define FLINT_OCR_WARRNING             "\n-W- Firmware flash cache access is enabled. Running in this mode may cause the firmware to hang.\n"
-#endif
diff --git a/flint/flint.cpp b/flint/flint.cpp
deleted file mode 100644 (file)
index dedce9d..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- *
- * flint.cpp - FLash INTerface
- *
- * Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id$
- *
- */
-
-#include <iostream>
-#include <signal.h>
-
-#include "flint.h"
-
-//Globals:
-Flint* gFlint = NULL;
-extern FILE* flint_log_fh;
-//signal handler section
-
-#define BURN_INTERRUPTED 0x1234
-
-void TerminationHandler(int signum);
-
-#ifdef __WIN__
-#include <windows.h>
-
-static BOOL CtrlHandler( DWORD fdwCtrlType )
-{
-    switch( fdwCtrlType )
-    {
-      // Handle the CTRL-C signal.
-      case CTRL_C_EVENT:
-      // CTRL-CLOSE: confirm that the user wants to exit.
-      case CTRL_CLOSE_EVENT:
-      // Pass other signals to the next handler.
-      case CTRL_BREAK_EVENT:
-      case CTRL_LOGOFF_EVENT:
-      case CTRL_SHUTDOWN_EVENT:
-         TerminationHandler(SIGINT);
-          return TRUE;
-
-      default:
-        return FALSE;
-    }
- }
-
-#endif
-
-
-void TerminationHandler(int signum)
-{
-    static volatile sig_atomic_t fatal_error_in_progress = 0;
-
-    if (fatal_error_in_progress) {
-        raise (signum);
-    }
-    fatal_error_in_progress = 1;
-
-    signal (signum, SIG_DFL);
-    write_result_to_log(BURN_INTERRUPTED, "");
-    close_log();
-    if (gFlint != NULL) {
-        printf("\n Received signal %d. Cleaning up ...\n", signum);
-        fflush(stdout);
-        //sleep(1); // Legacy from the Old Flint
-        delete gFlint;
-        gFlint = NULL;
-        printf(" Done.\n");
-    }
-    raise(signum);
-}
-
-
-void initHandler()
-{
-#ifdef __WIN__
-#define SIGNAL_NUM 3
-    int signalList[SIGNAL_NUM] = {SIGINT, SIGTERM, SIGABRT};
-    SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, true );
-#else
-#define SIGNAL_NUM 4
-    int signalList[SIGNAL_NUM] = {SIGINT, SIGTERM, SIGPIPE, SIGHUP};
-#endif
-
-    //set the signal handler
-    for (int i=0; i < SIGNAL_NUM ; i++) {
-        void (*prevFunc)(int);
-        prevFunc = signal(signalList[i],TerminationHandler);
-        if (prevFunc == SIG_ERR) {
-            printf("-E- failed to set signal Handler.");
-            exit(FLINT_FAILED);
-        }
-    }
-}
-
-//End of signal handler section.
-
-
-map_sub_cmd_t_to_subcommand Flint::initSubcommandMap()
-{
-    map_sub_cmd_t_to_subcommand cmdMap;
-    cmdMap[SC_Burn] = new BurnSubCommand();
-    cmdMap[SC_Query] = new QuerySubCommand();
-    cmdMap[SC_Verify] = new VerifySubCommand();
-    cmdMap[SC_Swreset] = new SwResetSubCommand();
-    cmdMap[SC_ResetCfg] = new ResetCfgSubCommand();
-    cmdMap[SC_Brom] = new BromSubCommand();
-    cmdMap[SC_Drom] = new DromSubCommand();
-    cmdMap[SC_Rrom] = new RromSubCommand();
-    cmdMap[SC_Qrom] = new RomQuerySubCommand();
-    cmdMap[SC_Bb] = new BbSubCommand();
-    cmdMap[SC_Sg] = new SgSubCommand();
-#ifndef EXTERNAL
-    cmdMap[SC_Smg] = new SmgSubCommand();
-    cmdMap[SC_Set_Vpd] = new SetVpdSubCommand();
-    cmdMap[SC_Fix_Img] = new FiSubCommand();
-#endif
-    cmdMap[SC_Sv] = new SvSubCommand();
-    cmdMap[SC_Ri] = new RiSubCommand();
-    cmdMap[SC_Dc] = new DcSubCommand();
-    cmdMap[SC_Dh] = new DhSubCommand();
-    cmdMap[SC_Set_Key] = new SetKeySubCommand();
-    cmdMap[SC_Hw_Access] = new HwAccessSubCommand();
-    cmdMap[SC_Hw] = new HwSubCommand();
-    cmdMap[SC_Erase] = new EraseSubCommand();
-    cmdMap[SC_Rw] = new RwSubCommand();
-    cmdMap[SC_Ww] = new WwSubCommand();
-    cmdMap[SC_Wwne] = new WwneSubCommand();
-    cmdMap[SC_Wbne] = new WbneSubCommand();
-    cmdMap[SC_Wb] = new WbSubCommand();
-    cmdMap[SC_Rb] = new RbSubCommand();
-    cmdMap[SC_Clear_Sem] = new ClearSemSubCommand();
-    cmdMap[SC_Check_Sum] = new CheckSumSubCommand();
-    cmdMap[SC_Time_Stamp] = new TimeStampSubCommand();
-    cmdMap[SC_Cache_Image] = new CacheImageSubCommand();
-    return cmdMap;
-}
-
-void Flint::deInitSubcommandMap(map_sub_cmd_t_to_subcommand cmdMap)
-{
-    for (map_sub_cmd_t_to_subcommand::iterator it = cmdMap.begin(); it != cmdMap.end(); ++it)
-        delete it->second;
-}
-
-
-Flint::Flint():
-        CommandLineRequester(FLINT_DISPLAY_NAME" [OPTIONS] <command> [Parameters]"),
-        _flintParams(),
-        _cmdParser(FLINT_DISPLAY_NAME" - Flash Interface"),
-        _subcommands(initSubcommandMap())
-{
-    initCmdParser();
-}
-
-Flint::~Flint()
-{
-    deInitSubcommandMap(_subcommands);
-    if (_flintParams.flash_params.type_name) {
-        delete[] _flintParams.flash_params.type_name;
-    }
-}
-
-FlintStatus Flint::run(int argc, char* argv[])
-{
-    //Step1 parse input
-    //There are some memory allocations parseCmdLine
-    ParseStatus status;
-    try {
-        status = this->parseCmdLine(argc, argv);;
-    } catch (exception& e) {
-        cout << "-E- " << e.what() << endl;
-        return FLINT_FAILED;
-    }
-    if (status == PARSE_OK_WITH_EXIT) {
-        return FLINT_SUCCESS;
-    } else if (status == PARSE_ERROR || status == PARSE_ERROR_SHOW_USAGE) {
-        if (string(_cmdParser.GetErrDesc()).length() > 0) {
-            cout << "-E- " << this->_cmdParser.GetErrDesc() << endl;
-        }
-        return FLINT_FAILED;
-    }
-
-    if (_flintParams.cmd == SC_No_Cmd && !_flintParams.clear_semaphore)
-    {
-        cout << FLINT_NO_COMMAND_ERROR << endl;
-        return FLINT_FAILED;
-    }
-    if (_flintParams.clear_semaphore) {
-        if (_flintParams.cmd != SC_No_Cmd) {
-            printf(FLINT_CLEAR_SEM_CMD_ERROR);
-            return FLINT_FAILED;
-        }
-        _flintParams.cmd = SC_Clear_Sem;
-    }
-
-    //TODO: adrianc: remove use_fw flag and this condition before MFT-4.1.0
-    if (_flintParams.use_fw && _flintParams.override_cache_replacement) {
-        printf("-E- flags --use_fw and --override_cache_replacement/-ocr cannot be specified simultaneously");
-        return FLINT_FAILED;
-    }
-
-    // Step 2 save argv as a single cmd string in flint params for the log functionallity
-    for(int i=0; i<argc; i++) {
-        _flintParams.fullCmd = _flintParams.fullCmd + argv[i] + " ";
-    }
-    //TODO: Step 3 check flintParams for contradictions?
-    //Step 4 execute command from the correct subcommand class
-    if (_subcommands.count(_flintParams.cmd) == 0) {
-        // should not be reached
-        printf("-E- FATAL: command object not found.");
-        return FLINT_FAILED;
-    }
-    _subcommands[_flintParams.cmd]->setParams(_flintParams);
-    return _subcommands[_flintParams.cmd]->executeCommand();
-}
-
-
-int main(int argc, char* argv[])
-{
-    initHandler();
-    try
-    {
-    gFlint = new Flint();
-    FlintStatus rc = gFlint->run(argc, argv);
-    if (gFlint) {
-        delete gFlint;
-        gFlint = NULL;
-       }
-    return rc;
-    }
-    catch (std::exception& e)
-    {
-        cout<<"-E- "<<e.what()<<endl;
-        return FLINT_FAILED;
-    }
-}
diff --git a/flint/flint.h b/flint/flint.h
deleted file mode 100644 (file)
index 24b68c7..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *
- * flint2.h - FLash INTerface
- *
- * Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id$
- *
- */
-
-#ifndef __FLINT_H__
-#define __FLINT_H__
-
-#include <string.h>
-#include "flint_params.h"
-#include "subcommands.h"
-#include <cmdparser/cmdparser.h>
-#include "err_msgs.h"
-
-using namespace std;
-
-typedef map <sub_cmd_t, SubCommand*> map_sub_cmd_t_to_subcommand;
-typedef map <string, string> map_string_to_string;
-typedef map <string, int> map_string_to_int;
-
-map_string_to_string initShortToLongFlagMap();
-map_string_to_int initLongFlagToNumOfArgsMap();
-void deInitSubcommandMap(map_sub_cmd_t_to_subcommand cmdMap);
-map_sub_cmd_t_to_subcommand initSubcommandMap();
-
-class Flint : public CommandLineRequester
-{
-private:
-    FlintParams _flintParams;
-    CommandLineParser   _cmdParser;
-    map_sub_cmd_t_to_subcommand _subcommands;
-
-    //methods
-    map_sub_cmd_t_to_subcommand initSubcommandMap();
-    void deInitSubcommandMap(map_sub_cmd_t_to_subcommand cmdMap);
-
-public:
-    Flint();
-    ~Flint();
-    void initCmdParser();
-    virtual ParseStatus HandleOption(string name, string value);
-    ParseStatus parseCmdLine(int argc, char* argv[]);
-    FlintStatus run(int argc, char* argv[]);
-};
-#endif
diff --git a/flint/flint_params.cpp b/flint/flint_params.cpp
deleted file mode 100644 (file)
index a89ba11..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *
- * flint_params.cpp - FLash INTerface
- *
- * Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id$
- *
- */
-
-#include "flint_params.h"
-
-FlintParams::FlintParams()
-{
-    help = false;
-    version = false;
-    extended_help = false;
-    guids_specified = false;
-    guid_specified = false;
-    mac_specified = false;
-    macs_specified = false;
-    uid_specified = false;
-    device_specified = false;
-    blank_guids = false;
-    clear_semaphore = false;
-    quick_query = true;  //should now be true by default
-    image_specified = false;
-    nofs = false;
-    allow_psid_change = false;
-    allow_rom_change = false;
-    override_cache_replacement = false;
-    use_fw = false; // access flash via FW on CX3/CX3Pro
-    no_flash_verify = false;
-    silent = false;
-    yes = false;
-    no = false;
-    vsd_specified = false;
-    use_image_ps = false;
-    use_image_guids = false;
-    use_image_rom = false;
-    dual_image = false;
-    striped_image = false;
-    ignore_dev_data = false;
-    banks_specified = false;
-    banks = -1; // must be -1 for mflash to get default num of flash
-    log_specified = false;
-    flash_params_specified = false;
-    flash_params.type_name = (char*)NULL;
-    no_devid_check = false;
-    cmd = SC_No_Cmd;
-    baseUid.h = 0;
-    baseUid.l = 0;
-    flash_params.num_of_flashes = 0;
-    flash_params.log2size = 0;
-    use_dev_img_info = false;
-}
-
-FlintParams::~FlintParams()
-{
-
-}
diff --git a/flint/flint_params.h b/flint/flint_params.h
deleted file mode 100644 (file)
index 0a987a0..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- *
- * flint_params.h - FLash INTerface
- *
- * Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id$
- *
- */
-
-#ifndef __FLINTPARAMS__
-#define __FLINTPARAMS__
-
-#include <string>
-#include <vector>
-#include "mlxfwops/lib/mlxfwops_com.h"
-#include "mflash/mflash.h"
-
-using namespace std;
-
-typedef enum {
-    SC_No_Cmd = 0,
-    SC_Burn,
-    SC_Query,
-    SC_Verify,
-    SC_Swreset,
-    SC_ResetCfg,
-    SC_Brom,
-    SC_Drom,
-    SC_Rrom,
-    SC_Bb,
-    SC_Sg,
-    SC_Smg,
-    SC_Set_Vpd,
-    SC_Sv,
-    SC_Ri,
-    SC_Dc,
-    SC_Dh,
-    SC_Set_Key,
-    SC_Hw_Access,
-    SC_Hw,
-    SC_Erase,
-    SC_Rw,
-    SC_Ww,
-    SC_Wwne,
-    SC_Wbne,
-    SC_Wb,
-    SC_Rb,
-    SC_Clear_Sem,
-    SC_Fix_Img,
-    SC_Qrom,
-    SC_Check_Sum,
-    SC_Time_Stamp,
-    SC_Cache_Image
-} sub_cmd_t;
-
-class FlintParams {
-public:
-    //add more params
-    FlintParams();
-    ~FlintParams();
-    bool device_specified;
-    string device;
-    bool guids_specified;
-    bool guid_specified;
-    std::vector<guid_t> user_guids;
-    bool mac_specified;
-    bool macs_specified;
-    std::vector<guid_t> user_macs;
-    bool uid_specified;
-    guid_t baseUid;
-    bool help;
-    bool version;
-    bool extended_help;
-    bool blank_guids;
-    bool clear_semaphore;
-    bool quick_query;
-    bool image_specified;
-    string image;
-    bool nofs;
-    bool allow_psid_change;
-    bool allow_rom_change;
-    bool override_cache_replacement;
-    bool use_fw;
-    bool no_flash_verify;
-    bool silent;
-    bool yes;
-    bool no;
-    bool vsd_specified;
-    string vsd;
-    bool use_image_ps;
-    bool use_image_guids;
-    bool use_image_rom;
-    bool dual_image;
-    bool striped_image;
-    bool ignore_dev_data;
-    bool banks_specified;
-    int banks;
-    bool log_specified;
-    string log;
-    bool flash_params_specified;
-    flash_params_t flash_params;
-    bool no_devid_check;
-    sub_cmd_t cmd;
-    vector<string> cmd_params;
-    string fullCmd;
-    bool use_dev_img_info;
-};
-
-#endif
diff --git a/flint/subcommands.cpp b/flint/subcommands.cpp
deleted file mode 100644 (file)
index 71a9fbd..0000000
+++ /dev/null
@@ -1,4355 +0,0 @@
-/*
- *
- * subcommands.cpp - FLash INTerface
- *
- * Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id$
- *
- */
-
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <time.h>
-#include <iostream>
-#include <sstream>
-#include <string>
-
-#include <common/compatibility.h>
-
-#ifndef NO_ZLIB
-    #include <zlib.h>
-#endif
-
-#if !defined(__WIN__) && !defined(__DJGPP__) && !defined(UEFI_BUILD) && defined(HAVE_TERMIOS_H)
-    // used in mygetchar
-    #include <termios.h>
-#endif
-
-#ifdef __WIN__
-#include <windows.h>
-#include <ctype.h>
-
-#include <win_driver_cif.h>
-#endif
-
-#include "subcommands.h"
-
-using namespace std;
-
-#define INDENT "\t\t\t\t\t\t"
-#define INDENTEX "\t"
-
-/***********************************
- *  Log file writing implementation
-************************************/
-
-//global log file header
-FILE* flint_log_fh = NULL;
-
-#define BURN_INTERRUPTED 0x1234
-
-void close_log()
-{
-    if (flint_log_fh != NULL) {
-        fclose(flint_log_fh);
-        flint_log_fh = NULL;
-    }
-    return;
-}
-
-#define ARR_SIZE(arr) sizeof(arr)/sizeof(arr[0])
-
-const char*   month_2monstr (int month) {
-    static const char* month_2monstr_arr[] = {
-        "Jan",
-        "Feb",
-        "Mar",
-        "Apr",
-        "May",
-        "Jun",
-        "Jul",
-        "Aug",
-        "Sep",
-        "Oct",
-        "Nov",
-        "Dec",
-    };
-    int arr_size = (int)ARR_SIZE(month_2monstr_arr);
-    return month < arr_size ? month_2monstr_arr[month] : "???";
-}
-
-void print_time_to_log()
-{
-    time_t rawtime;
-    struct tm * timeinfo;
-
-    if (flint_log_fh == NULL) {
-        return;
-    }
-    time ( &rawtime );
-    timeinfo = localtime ( &rawtime );
-
-    fprintf(flint_log_fh, "%-3s %2d %02d:%02d:%02d ", month_2monstr(timeinfo->tm_mon), timeinfo->tm_mday,
-            timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
-    return;
-}
-
-int print_line_to_log(const char* format, ...)
-{
-    va_list  args;
-    if (flint_log_fh == NULL) {
-        return 0;
-    }
-    print_time_to_log();
-    va_start(args, format);
-    vfprintf(flint_log_fh, format, args);
-    va_end(args);
-    return 0;
-}
-
-int write_cmd_to_log(string fullCmd , sub_cmd_t cmd, bool write)
-{
-    if (!write) {
-        return 0;
-    }
-    char pre_str[50];
-    if (flint_log_fh == NULL) {
-        return 0;
-    }
-    if (cmd == SC_Brom) {
-        snprintf(pre_str, 50, "ROM");
-    } else {
-        snprintf(pre_str, 50, "FW");
-    }
-    print_time_to_log();
-    fprintf(flint_log_fh, "Start %s burning: ", pre_str);
-    fprintf(flint_log_fh, "%s ", fullCmd.c_str());
-    fprintf(flint_log_fh, "\n");
-    return 0;
-}
-
-int write_result_to_log(int is_failed, const char* err_msg, bool write)
-{
-    if (!write) {
-        return 0;
-    }
-    char msg[MAX_ERR_STR_LEN + 1] = {0};
-    strncpy(msg, err_msg, MAX_ERR_STR_LEN);
-    if (is_failed == 0) {
-        print_line_to_log("Burn completed successfully\n");
-    } else if (is_failed == BURN_INTERRUPTED) {
-        print_line_to_log("Burn interrupted by user\n");
-    } else {
-        int msg_len = strlen(msg);
-        // cleanup the msg
-        for (int i = 0; i < msg_len; i++) {
-            if (msg[i] == '\n') {
-                if (i == msg_len - 1) {
-                    msg[i] = '\0';
-                } else {
-                    msg[i] = ' ';
-                }
-            }
-        }
-        print_line_to_log("Burn failed: %s\n", msg);
-    }
-    return 0;
-}
-/*******************
- *  Static functions
- ******************/
-
-static bool str2Num(const char* str, u_int32_t& num) {
-    char* endp;
-    u_int32_t tempNum;
-
-    if (!str) {
-        return false;
-    }
-    tempNum = strtoul(str, &endp, 0);
-    if (*endp) {
-        return false;
-    }
-    num = tempNum;
-    return true;
-}
-
-/*******************
- * Class: Subcommand
- ******************/
-
-
-#define MAX_ERR_STR_LEN 1024
-#define PRE_ERR_MSG "-E-"
-
-bool SubCommand::isCmdSupportLog() {
-    // a subcommand supports Logging if: A & B where:
-    // A. it is either Burn, Burn Block or Burn ROM.
-    // B. log flag was given in the cmd line.
-
-    switch (_cmdType) {
-        case SC_Burn:
-        case SC_Bb:
-        case SC_Brom:
-            return _flintParams.log_specified;
-        default:
-            return false;
-    }
-    return false;
-}
-
-void SubCommand::reportErr(bool shouldPrint, const char *format, ...)
-{
-    va_list  args;
-
-    va_start(args, format);
-
-    if (vsnprintf(_errBuff, FLINT_ERR_LEN, format, args) >= FLINT_ERR_LEN) {
-        strcpy(&_errBuff[FLINT_ERR_LEN - 5], "...\n");
-    }
-    //print to the user and to the log if needed
-    if (shouldPrint) {
-        fprintf(stdout,PRE_ERR_MSG" %s",_errBuff);
-    }
-    write_result_to_log(FLINT_FAILED,_errBuff, isCmdSupportLog());
-    va_end(args);
-
-    return;
-}
-
-bool SubCommand::writeToFile(string filePath, const std::vector<u_int8_t>& buff) {
-    FILE* fh;
-    if ((fh = fopen(filePath.c_str(), "wb")) == NULL) {
-        reportErr(true, FLINT_OPEN_FILE_ERROR, filePath.c_str(), strerror(errno));
-        return false;
-    }
-    // Write
-    if (fwrite(&buff[0], 1, buff.size(), fh) != buff.size()) {
-        fclose(fh);
-        reportErr(true, FLINT_WRITE_FILE_ERROR, filePath.c_str(), strerror(errno));
-        return false;
-    }
-    fclose(fh);
-    return true;
-}
-
-void SubCommand::openLog()
-{
-    if (isCmdSupportLog()) {
-        flint_log_fh = fopen(_flintParams.log.c_str(), "a+");
-        if (flint_log_fh == NULL) {
-            printf("-W- Failed to open log file \"%s\": %s. No logs will be saved\n", _flintParams.log.c_str()
-                    , strerror(errno));
-        }
-        write_cmd_to_log(_flintParams.fullCmd, _flintParams.cmd, _flintParams.log_specified);
-    }
-}
-
-int SubCommand::verifyCbFunc(char* str)
-{
-    printf("%s", str);
-    return 0;
-}
-
-
-int SubCommand::CbCommon(int completion, char*preStr, char* endStr)
-{
-    if (completion < 100) {
-            printf("\r%s%03d%%", preStr, completion);
-        }else if (completion == 100) {
-            printf("\r%sOK  \n", preStr);
-        } else {// printing endStr
-            if (endStr){
-                printf("\r%s\n", endStr);
-            }
-    }
-    fflush(stdout);
-    return 0;
-}
-
-// HACK: the endStr is printed when we reach 101% this is for backward compat with the original flint
-// output. thus in subcommands that use these callbacks you will see we manually call them at the end with the 101 arg
-
-int SubCommand::burnCbFs3Func(int completion)
-{
-    char* message = (char*)"Burning FS3 FW image without signatures - ";
-    char* endStr =  (char*)"Restoring signature                     - OK";
-    return CbCommon(completion, message, endStr);
-}
-
-int SubCommand::burnCbFs2Func(int completion)
-{
-    char* message = (char*)"Burning FS2 FW image without signatures - ";
-    char* endStr =  (char*)"Restoring signature                     - OK";
-    return CbCommon(completion, message, endStr);
-}
-
-int SubCommand::bromCbFunc(int completion)
-{
-    char* message = (char*)"Burning ROM image    - ";
-    char* endStr =  (char*)"Restoring signature  - OK";
-    return CbCommon(completion, message, endStr);
-}
-
-int SubCommand::dromCbFunc(int completion)
-{
-    char* message = (char*)"Removing ROM image    - ";
-    char* endStr =  (char*)"Restoring signature  - OK";
-    return CbCommon(completion, message, endStr);
-}
-
-int SubCommand::resetCfgCbFunc(int completion)
-{
-    char* message = (char*)"Resetting NV configuration - ";
-    char* endStr =  (char*)"Restoring signature        - OK";
-    return CbCommon(completion, message, endStr);
-}
-
-
-int SubCommand::burnBCbFunc(int completion)
-{
-    return CbCommon(completion,(char*)"");
-}
-
-int SubCommand::vsdCbFunc(int completion)
-{
-    char* message = (char*)"Setting the VSD      - ";
-    char* endStr =  (char*)"Restoring signature  - OK";
-    return CbCommon(completion, message, endStr);
-}
-
-int SubCommand::setKeyCbFunc(int completion)
-{
-    char* message = (char*)"Setting the HW Key   - ";
-    char* endStr =  (char*)"Restoring signature  - OK";
-    return CbCommon(completion, message, endStr);
-}
-
-int SubCommand::wbCbFunc(int completion)
-{
-    char* message = (char*)"Writing Block:   - ";
-    return CbCommon(completion, message, NULL);
-}
-
-#define ERR_BUFF_SIZE 1024
-FlintStatus SubCommand:: openOps()
-{
-    char errBuff[ERR_BUFF_SIZE];
-    errBuff[0] = '\0';
-    if (_flintParams.device_specified) {
-        // fillup the fw_ops_params_t struct
-        FwOperations::fw_ops_params_t fwParams;
-        memset(&fwParams, 0 , sizeof(FwOperations::fw_ops_params_t));
-        fwParams.errBuff = errBuff;
-        fwParams.errBuffSize = ERR_BUFF_SIZE;
-        fwParams.flashParams =_flintParams.flash_params_specified ? &_flintParams.flash_params : NULL;
-        fwParams.forceLock = _flintParams.clear_semaphore;
-        fwParams.hndlType = FHT_MST_DEV;
-        fwParams.ignoreCacheRep = _flintParams.override_cache_replacement ? 1 : 0;
-        fwParams.mstHndl = strcpy(new char[_flintParams.device.length()+1],_flintParams.device.c_str());
-        fwParams.numOfBanks = _flintParams.banks;
-        fwParams.readOnly = false;
-        fwParams.noFlashVerify = _flintParams.no_flash_verify;
-        fwParams.cx3FwAccess = _flintParams.use_fw;
-        _fwOps = FwOperations::FwOperationsCreate(fwParams);
-        delete[] fwParams.mstHndl;
-    }
-    if (_flintParams.image_specified) {
-        _imgOps = FwOperations::FwOperationsCreate((void*)_flintParams.image.c_str(), NULL, NULL,\
-                FHT_FW_FILE, errBuff, 1024);
-    }
-    if (_flintParams.device_specified && _fwOps == NULL)
-    {
-        reportErr(true, FLINT_OPEN_FWOPS_DEVICE_ERROR, _flintParams.device.c_str(), strlen(errBuff) != 0 ? errBuff : "");
-        return FLINT_FAILED;
-    }
-    if (_flintParams.image_specified && _imgOps == NULL)
-    {
-        reportErr(true, FLINT_OPEN_FWOPS_IMAGE_ERROR, _flintParams.image.c_str(), strlen(errBuff) != 0 ? errBuff : "");
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-
-
-
-FlintStatus SubCommand:: openIo()
-{
-    //TODO: consider adding a parameter for when image/device will be opened as "readOnly" in the open routine.
-    if (_flintParams.device_specified && _flintParams.image_specified) {
-        //should not arrive here as we verify params at each subcommand.
-        reportErr(true, FLINT_DEVICE_AND_IMAGE_ERROR);
-        return FLINT_FAILED;
-    }
-    if (_flintParams.device_specified) {
-        _io = new Flash;
-        if (!((Flash*)_io)->open(_flintParams.device.c_str(), _flintParams.clear_semaphore, false, _flintParams.banks, \
-                _flintParams.flash_params_specified ? &_flintParams.flash_params : NULL, _flintParams.override_cache_replacement, true, _flintParams.use_fw)) {
-            // if we have Hw_Access command we dont fail straght away
-            if (_flintParams.cmd == SC_Hw_Access && ((Flash*)_io)->get_cr_space_locked()) {
-                return FLINT_SUCCESS;
-            }
-            reportErr(true, FLINT_IO_OPEN_ERROR, "Device", (_io)->err());
-            delete _io;
-            _io = NULL;
-            return FLINT_FAILED;
-        }
-        // we have successfully opened a Flash Obj
-        //set no flash verify if needed (default =false)
-        ((Flash*)_io)->set_no_flash_verify(_flintParams.no_flash_verify);
-    } else if (_flintParams.image_specified) {
-        _io = new FImage;
-        if (!((FImage*)_io)->open(_flintParams.image.c_str())) {
-            reportErr(true, FLINT_IO_OPEN_ERROR, "Image", (_io)->err());
-            delete _io;
-            _io = NULL;
-            return FLINT_FAILED;
-        }
-    }
-    return FLINT_SUCCESS;
-}
-
-bool SubCommand::basicVerifyParams()
-{
-    if (!_flintParams.log_specified) {
-        char* logFile;
-        logFile = getenv(FLINT_LOG_ENV);
-        if (logFile) {
-            _flintParams.log = logFile;
-            _flintParams.log_specified = true;
-        }
-    }
-    //open log if needed
-    openLog();
-
-    if (_maxCmdParamNum == _minCmdParamNum && _maxCmdParamNum != -1 && (int)_flintParams.cmd_params.size() != _maxCmdParamNum) {
-        reportErr(true, FLINT_CMD_ARGS_ERROR, _name.c_str(), _maxCmdParamNum, _flintParams.cmd_params.size());
-        return false;
-    } else if (_maxCmdParamNum != -1 && (int)_flintParams.cmd_params.size() > _maxCmdParamNum) { // _maxCmdParamNum == -1 means ignore this check
-        if (_maxCmdParamNum) {
-            reportErr(true, FLINT_CMD_ARGS_ERROR2, _name.c_str(), _maxCmdParamNum, _flintParams.cmd_params.size());
-        } else {
-            reportErr(true, FLINT_CMD_ARGS_ERROR5, _name.c_str());
-        }
-        return false;
-    } else if (_minCmdParamNum != -1 && (int)_flintParams.cmd_params.size() < _minCmdParamNum) { // _minCmdParamNum == -1 means ignore this check
-        reportErr(true, FLINT_CMD_ARGS_ERROR3, _name.c_str(), _minCmdParamNum, _flintParams.cmd_params.size());
-        return false;
-    }
-
-    switch (_v) {
-    case Wtv_Img:
-        if ( _flintParams.device_specified == true) {
-                _flintParams.image_specified ? reportErr(true, FLINT_COMMAND_IMAGE_ERROR2,_name.c_str()) :
-                        reportErr(true, FLINT_COMMAND_IMAGE_ERROR, _name.c_str());
-                return false;
-            }
-            if ( _flintParams.image_specified == false ) {
-                reportErr(true, FLINT_NO_IMAGE_ERROR);
-                return false;
-            }
-            break;
-    case Wtv_Dev:
-        if ( _flintParams.image_specified == true) {
-                _flintParams.device_specified ? reportErr(true, FLINT_COMMAND_DEVICE_ERROR2,_name.c_str()) :
-                        reportErr(true, FLINT_COMMAND_DEVICE_ERROR, _name.c_str());
-                return false;
-            }
-            if ( _flintParams.device_specified == false ) {
-                reportErr(true, FLINT_NO_DEVICE_ERROR);
-                return false;
-            }
-            break;
-    case Wtv_Dev_And_Img:
-        if (( _flintParams.image_specified == false) || ( _flintParams.device_specified == false)) {
-            reportErr(true, FLINT_COMMAND_DEVICE_IMAGE_ERROR, _name.c_str());
-            return false;
-        }
-        break;
-    case Wtv_Dev_Or_Img:
-        if ( _flintParams.image_specified == true && _flintParams.device_specified == true) {
-                reportErr(true, FLINT_DEVICE_AND_IMAGE_ERROR);
-                return false;
-            }
-        if ( _flintParams.device_specified == false  && _flintParams.image_specified == false ) {
-                reportErr(true, FLINT_DEVICE_AND_IMAGE_ERROR);
-                return false;
-            }
-            break;
-    default:
-        reportErr(true, "Failed to verify parms(internal error).");
-        return false;
-    }
-
-    if (_flintParams.device_specified && _flintParams.striped_image) {
-        reportErr(true, FLINT_INVALID_FLAG_WITH_FLAG_ERROR, "-device", "-striped_image");
-        return false;
-    }
-
-    if (_flintParams.override_cache_replacement) {
-        printf(FLINT_OCR_WARRNING);
-    }
-    return true;
-}
-
-FlintStatus SubCommand::preFwOps()
-{
-    if (!basicVerifyParams()) {
-        return FLINT_FAILED;
-    }
-    if (!verifyParams()) {
-        return FLINT_FAILED;
-    }
-    return openOps();
-}
-
-FlintStatus SubCommand::preFwAccess()
-{
-    if (!basicVerifyParams()) {
-        return FLINT_FAILED;
-    }
-    if (!verifyParams()) {
-        return FLINT_FAILED;
-    }
-    return openIo();
-}
-
-SubCommand::~SubCommand()
-{
-    if (_fwOps != NULL) {
-        _fwOps->FwCleanUp();
-        delete _fwOps;
-    }
-    if (_imgOps != NULL) {
-        _imgOps->FwCleanUp();
-        delete _imgOps;
-    }
-    if (_io != NULL) {
-        _io->close();
-        delete _io;
-    }
-
-
-}
-
-bool SubCommand::getRomsInfo(FBase* io, roms_info_t& romsInfo)
-{
-    std::vector<u_int8_t> romSector;
-    romSector.clear();
-    romSector.resize(io->get_size());
-    if (!io->read(0, &romSector[0], io->get_size())) {
-           reportErr(true, FLINT_READ_ERROR,_flintParams.image.c_str(), io->err());
-           return false;
-       }
-    FwOperations::RomInfo info(romSector, false);
-    info.ParseInfo();
-    info.initRomsInfo(&romsInfo);
-    return true;
-}
-
-bool SubCommand::getGUIDFromStr(string str, guid_t& guid, string prefixErr)
-{
-    char* endp;
-    u_int64_t g;
-    g = strtoull(str.c_str(), &endp, 16);
-    if (*endp || (g == 0xffffffffffffffffULL && errno == ERANGE)) {
-        if (prefixErr.size() == 0) {
-            reportErr(true, "Invalid GUID syntax (%s) %s \n", str.c_str(), errno ? strerror(errno) : "" );
-        } else {
-            reportErr(true, "%s\n", prefixErr.c_str());
-        }
-        return false;
-    }
-    guid.h = (u_int32_t)(g >> 32);
-    guid.l = (u_int32_t)(g & 0xffffffff);
-    return true;
-}
-
-
-#if !defined(__WIN__) && !defined(__DJGPP__) && !defined(UEFI_BUILD) && defined(HAVE_TERMIOS_H)
-static int mygetch(void)
-{
-    struct termios oldt,
-    newt;
-    int ch;
-    tcgetattr( STDIN_FILENO, &oldt );
-    newt = oldt;
-    newt.c_lflag &= ~( ICANON | ECHO );
-    tcsetattr( STDIN_FILENO, TCSANOW, &newt );
-    ch = getchar();
-    tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
-    return ch;
-}
-
-bool SubCommand::getPasswordFromUser(const char *preStr, char buffer[MAX_PASSWORD_LEN+1])
-{
-    char c;
-    int pos = 0;
-
-    printf("%s: ", preStr);
-    do {
-        c = mygetch();
-
-        if( ((pos < MAX_PASSWORD_LEN)) && isprint(c) ) {
-            buffer[ pos++ ] = c;
-            printf("%c", '*');
-        } else if( (c == 8 || c == 127) && pos ) {
-            buffer[ pos-- ] = '\0';
-            printf("%s", "\b \b");
-        }
-
-
-    } while( c != '\n' );
-    printf("\n");
-    buffer[pos] = '\0';
-    return true;
-}
-
-#else
-bool SubCommand::getPasswordFromUser(const char *preStr, char buffer[MAX_PASSWORD_LEN+1])
-{
-    static HANDLE stdinHndl = NULL;
-    DWORD numOfBytesRead = 0;
-    DWORD oldConsoleMode, consoleMode;
-    BOOL status = FALSE;
-    char ch;
-    int i;
-
-    if (!stdinHndl) {
-        // adrianc: this might be problematic if called and stdout was alreading overriden use CIN$ instead
-        stdinHndl = GetStdHandle(STD_INPUT_HANDLE);
-    }
-    printf("%s:", preStr);
-
-    // disable console echoing
-    if (!GetConsoleMode(stdinHndl, &oldConsoleMode)) {
-        reportErr(true, "Failed to get console mode.\n");
-        return false;
-    }
-
-    consoleMode = oldConsoleMode & ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT);
-
-    if (! SetConsoleMode(stdinHndl, consoleMode))  {
-        reportErr(true, "Failed to set console mode.\n");
-        return 1;
-     }
-    // read chars from stdin and print * to stdout using putchar
-    for(i = 0; ; ) {
-        status = ReadFile(stdinHndl, &ch, sizeof(char), &numOfBytesRead, NULL);
-        if (!status || numOfBytesRead != sizeof(char) || ch == '\n' || ch == '\r' || i == (MAX_PASSWORD_LEN -1) ) {
-            // user finished giving the pw
-            if (!SetConsoleMode(stdinHndl, oldConsoleMode)) {
-                reportErr(true, "Failed to restore console mode.\n");
-                return false;
-            }
-            if (!status || numOfBytesRead != sizeof(char)) {
-                reportErr(true, "Failed to get input from console.\n");
-                return false;
-            }
-            break;
-        }
-        if (isalpha(ch) || isdigit(ch)) {
-            putchar('*');
-            buffer[i++] = ch;
-        } else if (ch == '\b' && i){
-            //delete last astrix and set correct position
-            printf("\b \b");
-            i--;
-        }
-    }
-    buffer[i] = '\0';
-    putchar('\n');
-    return true;
-}
-
-#endif
-
-//
-// Asks user a yes/no question.
-// Returns true if user chose Y, false if user chose N.
-//
-
-bool SubCommand::askUser(const char *question, bool printAbrtMsg) {
-    if (question == NULL) {
-        printf("\n Do you want to continue ? (y/n) [n] : ");
-    } else {
-        printf("\n %s ? (y/n) [n] : ", question);
-
-    }
-
-    if (_flintParams.yes)
-        printf("y\n");
-    else {
-        if (_flintParams.no) {
-            printf("n\n");
-            reportErr(false, "-no flag is set\n");
-            return false;
-        }
-
-        fflush(stdout);
-        std::string answer;
-        std::getline(std::cin, answer);
-        //fgets(ansbuff, 30, stdin);
-        //if (!fscanf(stdin, "%[^\n]30s", ansbuff)) {
-        //     return false;
-        //}
-
-        if (  strcasecmp(answer.c_str(), "y") &&
-              strcasecmp(answer.c_str(), "yes"))  {
-
-            if (printAbrtMsg) {
-            reportErr(true, "Aborted by user\n");
-            }
-            return false;
-        }
-    }
-    return true;
-}
-
-void SubCommand::displayOneExpRomInfo(const rom_info_t& info) {
-
-       const char* typeStr = FwOperations::expRomType2Str(info.exp_rom_product_id);
-    if (info.exp_rom_product_id == 0xf) {// version id in this case is the freeStr that was moved to exp_rom_ver[0] in mlxfwops
-        printf("devid=%d version_id=%d type=%s ", info.exp_rom_dev_id,info.exp_rom_ver[0], typeStr);
-    } else {
-       if (typeStr) {
-               printf("type=%s ", typeStr);
-       } else {
-                printf("0x%x - Unknown ROM product ID\n", info.exp_rom_product_id);
-                return;
-       }
-
-        printf("version=%d", info.exp_rom_ver[0]);
-        if (info.exp_rom_product_id >= 0x10) {
-            printf(".%d.%d", info.exp_rom_ver[1], info.exp_rom_ver[2]);
-
-            if (info.exp_rom_dev_id != EXP_ROM_GEN_DEVID) {
-                // Do not display if 0 - ROM is the same for all device IDs
-                printf(" devid=%d", info.exp_rom_dev_id);
-            }
-            if (info.exp_rom_port) {
-                // Do not display if 0 - port independent
-                printf(" port=%d", info.exp_rom_port);
-            }
-            if (info.exp_rom_product_id != 0x12) { // on CLP(0x12) there is no meaning to protocol
-               switch (info.exp_rom_proto) {
-               case ER_IB:
-                       printf(" proto=IB");
-                       break;
-               case ER_ETH:
-                       printf(" proto=ETH");
-                       break;
-               case ER_VPI:
-                       printf(" proto=VPI");
-                       break;
-               default:
-                       break;
-               }
-            }
-        }
-    }
-    return;
-}
-
-
-void SubCommand::displayExpRomInfo(const roms_info_t& romsInfo, const char *preStr)
-{
-    int i;
-    int strLen = strlen(preStr);
-
-    if (romsInfo.num_of_exp_rom > 0) {
-        for (i = 0; i < romsInfo.num_of_exp_rom; i++) {
-            // Print the pre string or spaces
-            if (i == 0) {
-                printf("%s", preStr);
-            } else {
-                int j;
-                for ( j = 0; j < strLen; j++) {
-                    printf("%s", " ");
-                }
-            }
-            // Display a ROM info
-            displayOneExpRomInfo(romsInfo.rom_info[i]);
-            if (i != romsInfo.num_of_exp_rom - 1) { // Don't print new line after the info of the last ROM
-                printf("\n");
-            }
-        }
-        if (romsInfo.exp_rom_warning) {
-            printf(" (-W- %s)", romsInfo.exp_rom_warning_msg);
-        }
-        printf("\n");
-    } else {
-        printf("%s", preStr);
-        printf("N/A");
-        if (romsInfo.exp_rom_err_msg_valid) {
-            printf(" (-E- %s)", romsInfo.exp_rom_err_msg);
-        }
-        printf("\n");
-    }
-    return;
-}
-
-bool SubCommand::printGuidLine(guid_t* new_guids, guid_t* old_guids, int guid_index)
-{
-    printf(GUID_FORMAT GUID_SPACES, new_guids[guid_index].h, new_guids[guid_index].l);
-    if (old_guids != NULL) {
-        printf(GUID_FORMAT,  old_guids[guid_index].h, old_guids[guid_index].l);
-    }else {
-        printf("      N/A");
-    }
-    printf("\n");
-    return true;
-}
-
-bool SubCommand::printMacLine(guid_t* new_guids, guid_t* old_guids, int mac_index)
-{
-    printf("    " MAC_FORMAT MAC_SPACES, new_guids[mac_index].h, new_guids[mac_index].l);
-    if (old_guids != NULL) {
-        printf(MAC_FORMAT, old_guids[mac_index].h, old_guids[mac_index].l);
-    } else {
-        printf("  N/A");
-    }
-    printf("\n");
-    return true;
-}
-
-bool SubCommand::printGUIDsFunc(guid_t guids[GUIDS],guid_t macs[MACS], guid_t old_guids[GUIDS],\
-        guid_t old_macs[MACS], bool print_guids, bool print_macs, int portNum, bool old_guid_fmt) {
-
-    if (print_guids) {
-        printf("        Node  GUID:     ");
-        printGuidLine(guids,old_guids, 0);
-        if (portNum > 0) {
-            printf("        Port1 GUID:     ");
-            printGuidLine(guids,old_guids, 1);
-        }
-        if (portNum > 1) {
-            printf("        Port2 GUID:     ");
-            printGuidLine(guids,old_guids, 2);
-        }
-        if (!old_guid_fmt) {
-            printf("        Sys.Image GUID: ");
-            printGuidLine(guids,old_guids, 3);
-        }
-    }
-
-    if (print_macs) {
-        printf("        Port1 MAC:      ");
-        printMacLine(macs, old_macs, 0);
-        printf("        Port2 MAC:      ");
-        printMacLine(macs, old_macs, 1);
-    }
-    return true;
-}
-
-bool SubCommand::reportGuidChanges(guid_t* new_guids, guid_t* new_macs,\
-                                    guid_t* old_guids, guid_t* old_macs, bool printGuids,\
-                                    bool printMacs, int guidNum)
-{
-    //should be used ONLY on FS2 in current implementation
-    printf("    You are about to change the Guids/Macs/Uids on the %s:\n\n", _flintParams.device_specified ? "device" : "image");
-    printf("                        New Values      " GUID_SPACES "Current Values\n");
-   printGUIDsFunc(new_guids, new_macs,
-              old_guids, old_macs,
-              printGuids,
-              printMacs,
-              guidNum,
-              guidNum < GUIDS);
-
-    if (!askUser())
-        return false;
-
-    return true;
-}
-
-//used for dc and dh subcommands
-
-bool SubCommand::unzipDataFile (std::vector<u_int8_t> data, std::vector<u_int8_t> &newData, const char *sectionName)
-{
-#ifndef NO_ZLIB
-    int rc;
-    if (data.empty()) {
-        reportErr(true, "%s section not found in the given image.", sectionName);
-        return false;
-    }
-    // restore endianess.
-    TOCPUn(&(data[0]), data.size()/4);
-
-    // uncompress:
-    uLongf destLen = data.size();
-    destLen *= 40; // Assuming this is the best compression ratio
-    vector<u_int8_t> dest(destLen);
-
-    for (int i = 0; i < 32; i++) {
-        rc = uncompress((Bytef *)&(dest[0]), &destLen,
-                            (const Bytef *)&(data[0]), data.size());
-        if (rc != Z_BUF_ERROR) {
-            break;
-        }
-        destLen *= 2;
-        dest.resize(destLen);
-    }
-
-    if (rc != Z_OK) {
-        reportErr(true, "Failed uncompressing FW configuration section. uncompress returns %d", rc);
-        return false;
-    }
-    // printf("%s", (char*)&(dest[0]));
-
-    newData = dest;
-    newData[destLen] = 0; // Terminating NULL
-    newData.resize(destLen + 1);
-    return true;
-#else
-    // avoid warnings
-    (void) data;
-    (void) newData;
-    (void) sectionName;
-    reportErr(true, FLINT_NO_ZLIB_ERROR);
-    return false;
-#endif
-}
-
-bool SubCommand::dumpFile(const char* confFile, std::vector<u_int8_t>& data, const char *sectionName) {
-    FILE* out;
-    vector<u_int8_t> dest;
-
-    if (confFile == NULL) {
-        out = stdout;
-    } else {
-        out = fopen(confFile, "w");
-
-        if (out == NULL) {
-            reportErr(true, "Can not open file %s for write: %s.", confFile, strerror(errno));
-            return false;
-        }
-    }
-    if (unzipDataFile(data, dest, sectionName) == false) {
-        return false;
-    }
-    fprintf(out, "%s", (char*)&(dest[0]));
-
-    if (confFile != NULL) {
-        fclose(out);
-    }
-    return true;
-}
-
-bool SubCommand::checkGuidsFlags (u_int16_t devType, u_int8_t fwType,
-                            bool guidsSpecified, bool macsSpecified, bool uidSpecified, bool ibDev, bool ethDev) {
-    (void)ibDev;
-    if (guidsSpecified || macsSpecified || uidSpecified) {
-        if (uidSpecified && fwType != FIT_FS3) {
-            reportErr(true, "-uid flag is applicable only for FS3 FW Only.\n");
-            return false;
-        } else if (fwType != FIT_FS2 && !ethDev && macsSpecified ) {
-            reportErr(true, "-mac(s) flag is not applicable for IB MT%d device.\n", devType);
-            return false;
-        }
-    }
-    return true;
-}
-
-void SubCommand::printMissingGuidErr(bool ibDev, bool ethDev)
-{
-    const char* missingInfo;
-    const char* missingFlags;
-
-    if (ibDev && ethDev) {
-        missingInfo  = "GUIDs / MACs";
-        missingFlags = "-guid(s) / -mac(s)";
-    } else if (ibDev) {
-        missingInfo  = "GUIDs";
-        missingFlags = "-guid(s)";
-    } else {
-        missingInfo  = "MACs";
-        missingFlags = "-mac(s)";
-    }
-
-    printf("Please specify %s (using command line flags %s ).\n", missingInfo, missingFlags);
-    return;
-}
-
-bool SubCommand::extractValuesFromString(string valStr, u_int8_t values[2], string origArg) {
-    // check if we need to extract 2 values or 1
-    u_int32_t tempNum0 = 0, tempNum1 = 0;
-    string tempNumStr;
-    if (valStr.find(',') != string::npos) {
-        std::stringstream ss((valStr.c_str()));
-        // get first value
-        if (!std::getline(ss, tempNumStr, ',')) {
-            reportErr(true, FLINT_INVALID_ARG_ERROR,origArg.c_str());
-            return false;
-        }
-        if (!str2Num(tempNumStr.c_str(), tempNum0)) {
-            reportErr(true, FLINT_INVALID_ARG_ERROR, origArg.c_str());
-            return false;
-        }
-        // get second value
-        if (!std::getline(ss, tempNumStr, ',')) {
-            reportErr(true, FLINT_INVALID_ARG_ERROR, origArg.c_str());
-            return false;
-        }
-        if (!str2Num(tempNumStr.c_str(), tempNum1)) {
-            reportErr(true, FLINT_INVALID_ARG_ERROR, origArg.c_str());
-            return false;
-        }
-        // make sure no other tokens are present
-        if (!(!std::getline(ss, tempNumStr, ','))) {
-            reportErr(true, FLINT_INVALID_ARG_ERROR, origArg.c_str());
-            return false;
-        }
-    } else {
-        if (!str2Num(valStr.c_str(), tempNum0)) {
-            reportErr(true, FLINT_INVALID_ARG_ERROR, origArg.c_str());
-            return false;
-        }
-        tempNum1 = tempNum0;
-    }
-    // perform checks
-    if (tempNum0 >= 255 || tempNum1 >= 255) {
-        reportErr(true, "Invalid argument values, values should be taken from the range [0..254]\n");
-        return false;
-    }
-    values[0] = tempNum0;
-    values[1] = tempNum1;
-    return true;
-}
-
-bool SubCommand::extractUIDArgs(std::vector<string>& cmdArgs, u_int8_t numOfGuids[2], u_int8_t stepSize[2]){
-    //extract num_of_guids and step_size from numGuidsStr, stepStr
-    string tag, valStr;
-    for (std::vector<string>::iterator it = cmdArgs.begin(); it != cmdArgs.end(); it++) {
-        std::stringstream ss((it->c_str()));
-        // get the tag
-        if (!std::getline(ss, tag, '=')) {
-            reportErr(true, FLINT_INVALID_ARG_ERROR,it->c_str());
-            return false;
-        }
-        // get the val
-        if (!std::getline(ss, valStr, '=')) {
-            reportErr(true, FLINT_INVALID_ARG_ERROR,it->c_str());
-            return false;
-        }
-        // make sure no other tokens are present
-        if (!(!std::getline(ss, valStr, '='))) {
-            reportErr(true, FLINT_INVALID_ARG_ERROR,it->c_str());
-            return false;
-        }
-        if (tag == "guids_num") {
-            if (!extractValuesFromString(valStr, numOfGuids, *it)) {
-                return false;
-            }
-        } else if (tag == "step_size") {
-            if (!extractValuesFromString(valStr, stepSize, *it)) {
-                return false;
-            }
-        } else {
-            reportErr(true, FLINT_INVALID_ARG_ERROR, it->c_str());
-            return false;
-        }
-    }
-    return true;
-}
-
-/***********************
- *Class: BurnSubCommand
- **********************/
-
-BurnSubCommand:: BurnSubCommand()
-{
-    _name = "burn";
-    _desc = "Burn flash";
-    _extendedDesc = "Burn flash \n"
-                    INDENTEX "Performs failsafe FW update from a raw binary image.";
-    _flagLong = "burn";
-    _flagShort = "b";
-    _param = "";
-    _paramExp = "None";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " -i image1.bin burn\n"
-              INDENTEX FLINT_NAME " -d " MST_DEV_EXAMPLE2 " -guid 0x2c9000100d050 -i image1.bin b";
-    _v = Wtv_Dev_And_Img;
-    _maxCmdParamNum = 0;
-    _cmdType = SC_Burn;
-    _fwType = 0;
-    _devQueryRes = 0;
-    memset(&_devInfo, 0, sizeof(_devInfo));
-    memset(&_imgInfo, 0, sizeof(_imgInfo));
-}
-
-BurnSubCommand:: ~BurnSubCommand()
-{
-    closeLog();
-    if (_burnParams.userVsd != NULL) {
-        delete[] _burnParams.userVsd;
-    }
-}
-
-bool BurnSubCommand::verifyParams()
-{
-    if ((_flintParams.guid_specified || _flintParams.guids_specified) && (_flintParams.uid_specified)) {
-            reportErr(true, FLINT_COMMAND_FLAGS_ERROR, _name.c_str(), "either GUIDs / UID (using command line flags -guid(s) / -uid )");
-            return false;
-        }
-    if ((_flintParams.mac_specified || _flintParams.macs_specified) && (_flintParams.uid_specified)) {
-            reportErr(true, FLINT_COMMAND_FLAGS_ERROR, _name.c_str(), "either MACs / UID (using command line flags -mac(s) / -uid )");
-            return false;
-        }
-    bool GuidsFromUser = _flintParams.guid_specified || _flintParams.guids_specified ||\
-            _flintParams.uid_specified || \
-            _flintParams.mac_specified || _flintParams.macs_specified;
-    if (GuidsFromUser && _flintParams.use_image_guids) {
-        reportErr(true, FLINT_INVALID_FLAG_WITH_FLAG_ERROR,"GUIDs/UIDs/MACs", "-use_image_guids");
-        return false;
-    }
-    if ((GuidsFromUser || _flintParams.use_image_guids) && _flintParams.blank_guids) {
-        reportErr(true, FLINT_INVALID_FLAG_WITH_FLAG_ERROR, _flintParams.use_image_guids ? \
-                "-use_image_guids" : "GUIDs/UIDs/MACs", "-blank_guids");
-        return false;
-    }
-    if (_flintParams.guid_specified && _flintParams.guids_specified) {
-        reportErr(true, FLINT_INVALID_FLAG_WITH_FLAG_ERROR, "-guids", "-guid" );
-        return false;
-    }
-    if (_flintParams.mac_specified && _flintParams.macs_specified) {
-        reportErr(true, FLINT_INVALID_FLAG_WITH_FLAG_ERROR, "-macs", "-mac" );
-        return false;
-    }
-    if (_flintParams.use_image_ps && _flintParams.vsd_specified) {
-        reportErr(true, FLINT_INVALID_FLAG_WITH_FLAG_ERROR, "-use_image_ps", "-vsd");
-        return false;
-    }
-    if (_flintParams.ignore_dev_data && !_flintParams.nofs) {
-        reportErr(true, FLINT_INVALID_FLAG_WITHOUT_FLAG_ERROR, "-nofs", "-ignore_dev_data");
-        return false;
-    }
-    return true;
-}
-
-void BurnSubCommand::updateBurnParams()
-{
-    _burnParams.progressFunc = _flintParams.silent == true ? (ProgressCallBack)NULL :\
-               _fwType == FIT_FS2? &burnCbFs2Func : &burnCbFs3Func;
-    _burnParams.userGuidsSpecified = _flintParams.guids_specified || _flintParams.guid_specified;
-    _burnParams.userMacsSpecified = _flintParams.macs_specified || _flintParams.mac_specified;
-    _burnParams.userUidSpecified = _flintParams.uid_specified;
-    _burnParams.vsdSpecified = _flintParams.vsd_specified;
-    _burnParams.blankGuids = _flintParams.blank_guids;
-    _burnParams.burnFailsafe = !_flintParams.nofs;
-    _burnParams.allowPsidChange = _flintParams.allow_psid_change;
-    _burnParams.useDevImgInfo = _flintParams.use_dev_img_info;
-    _burnParams.useImagePs = _flintParams.use_image_ps;
-    _burnParams.burnRomOptions = _flintParams.use_image_rom ? FwOperations::ExtBurnParams::BRO_ONLY_FROM_IMG \
-                                                                : FwOperations::ExtBurnParams::BRO_DEFAULT ;
-    _burnParams.useImageGuids = _flintParams.use_image_guids;
-    _burnParams.singleImageBurn = !_flintParams.dual_image;
-    _burnParams.noDevidCheck = _flintParams.no_devid_check;
-    _burnParams.useImgDevData = _flintParams.ignore_dev_data;
-    if (_burnParams.userGuidsSpecified) {
-        _burnParams.userUids = _flintParams.user_guids;
-    }
-    if (_burnParams.userUidSpecified) {
-        _burnParams.userUids.resize(0);
-        _burnParams.userUids.push_back(_flintParams.baseUid);
-    }
-    if (_burnParams.userMacsSpecified) {
-        if (!_burnParams.userGuidsSpecified) {
-            //we dont care about the first 4 values
-            _burnParams.userUids.resize(GUIDS);
-        }
-        _burnParams.userUids.push_back(_flintParams.user_macs[0]);
-        _burnParams.userUids.push_back(_flintParams.user_macs[1]);
-    }
-    if (_burnParams.vsdSpecified) {
-        _burnParams.userVsd = strcpy(new char[_flintParams.vsd.size()+1], _flintParams.vsd.c_str());
-    }
-    //make sure its of max size and fill the rest with 0xffff
-    _burnParams.userUids.resize(MAX_GUIDS, (guid_t){0xffffffff,0xffffffff});
-}
-
-#define VERSION_FORMAT(minor) minor < 100 ? "%d.%d.%04d" : "%d.%04d.%04d"
-bool BurnSubCommand::checkFwVersion()
-{
-    char curr_ver[124], new_ver[124];
-    printf("\n");
-    printf("    Current FW version on flash:  ");
-    if (_devInfo.fw_info.fw_ver[0] != 0) { // i.e if we have a fw_version we assume this is != 0
-        snprintf(curr_ver, 124, VERSION_FORMAT(_devInfo.fw_info.fw_ver[1]), _devInfo.fw_info.fw_ver[0], _devInfo.fw_info.fw_ver[1], _devInfo.fw_info.fw_ver[2]);
-    } else {
-        snprintf(curr_ver, 124, "N/A");
-    }
-    printf("%s", curr_ver); printf("\n");
-
-    printf("    New FW version:               ");
-    if (_imgInfo.fw_info.fw_ver[0] != 0) {
-        snprintf(new_ver, 124, VERSION_FORMAT(_imgInfo.fw_info.fw_ver[1]), _imgInfo.fw_info.fw_ver[0], _imgInfo.fw_info.fw_ver[1], _imgInfo.fw_info.fw_ver[2]);
-    } else {
-        snprintf(new_ver, 124, "N/A");
-    }
-    printf("%s", new_ver); printf("\n");
-
-    if (_flintParams.log_specified) {
-        print_line_to_log("Current FW version on flash: %s,  New FW version: %s\n", curr_ver, new_ver);
-    }
-    int verStatus;
-
-    if (_devInfo.fw_info.fw_ver[0] != 0  &&
-            _imgInfo.fw_info.fw_ver[0] != 0) { // nofs pitfall here - on nofs burn no fwver of device
-        verStatus = FwOperations::FwVerLessThan(_devInfo.fw_info.fw_ver, _imgInfo.fw_info.fw_ver);
-        if (verStatus == FVI_EQUAL || verStatus == FVI_GREATER) {
-            printf("\n    Note: The new FW version is %s the current FW version on flash.\n", verStatus == FVI_EQUAL ? "the same as" : "older than");
-            if (!askUser()) {
-                return false;
-            }
-        }
-    }
-
-    printf("\n");
-    _burnParams.ignoreVersionCheck = true;
-    return true;
-}
-
-bool BurnSubCommand::checkPSID()
-{
-    if (strlen(_imgInfo.fw_info.psid) != 0  && strlen(_devInfo.fw_info.psid) != 0 &&
-            strncmp( _imgInfo.fw_info.psid, _devInfo.fw_info.psid, PSID_LEN)) {
-        if (_flintParams.allow_psid_change) {
-                 printf("\n    You are about to replace current PSID on flash - \"%s\" with a different PSID - \"%s\".\n"
-                        "    Note: It is highly recommended not to change the PSID.\n",
-                        _devInfo.fw_info.psid, _imgInfo.fw_info.psid);
-                 if (! askUser()) {
-                     return false;
-                 }
-         } else {
-                 printf("\n");
-                 reportErr(true, FLINT_PSID_ERROR, _devInfo.fw_info.psid, _imgInfo.fw_info.psid);
-                 return false;
-         }
-    }
-    return true;
-}
-
-FlintStatus BurnSubCommand::burnFs3()
-{
-    // Here we want to burn FS3 device so we check if the image is indeed FS3 image
-    if (_imgInfo.fw_type != FIT_FS3 && _imgInfo.fw_type != FIT_FS4) {
-        reportErr(true, FLINT_IMG_DEV_COMPAT_ERROR, "FS3", "FS3");
-        return FLINT_FAILED;
-    }
-    // on FS3 burn we require query to pass
-    if (!_devQueryRes && _burnParams.burnFailsafe) {
-        reportErr(true, FLINT_FS3_BURN_ERROR, _fwOps->err());
-        return FLINT_FAILED;
-    }
-    //check FwVersion
-    if ( !checkFwVersion()) {
-        return FLINT_BURN_ABORTED;
-    }
-    // check Psid
-    if (_devQueryRes && !checkPSID()) {
-        return FLINT_FAILED;
-    }
-    // deal with rom
-    dealWithExpRom();
-    bool getRomFromDev = ( _burnParams.burnRomOptions == FwOperations::ExtBurnParams::BRO_FROM_DEV_IF_EXIST);
-    if (!getRomFromDev && !checkMatchingExpRomDevId(_imgInfo)) {
-        printf("Image file ROM: FW is for device %d, but Exp-ROM is for device %d\n", _imgInfo.fw_info.dev_type,\
-                _imgInfo.fw_info.roms_info.exp_rom_com_devid);
-        if (!askUser()) {
-            return FLINT_FAILED;
-        }
-    }
-    if (!_burnParams.burnFailsafe) {
-        printf("Burn process will not be failsafe. No checks will be performed.\n");
-        if (_burnParams.useImgDevData) {
-            printf("ALL flash, including the device data sections will be overwritten.\n");
-        }
-        printf("If this process fails, computer may remain in an inoperable state.\n");
-        if (!askUser()) {
-            return FLINT_FAILED;
-        }
-    }
-
-    if (!_fwOps->FwBurnAdvanced(_imgOps, _burnParams)) {
-        reportErr(true, FLINT_FS3_BURN_ERROR, _fwOps->err());
-        return FLINT_FAILED;
-    }
-    PRINT_PROGRESS(_burnParams.progressFunc, 101);
-    write_result_to_log(FLINT_SUCCESS, "", _flintParams.log_specified);
-    const char* resetRec = _fwOps->FwGetResetRecommandationStr();
-    if (resetRec) {
-        printf("-I- %s\n", resetRec);
-    }
-    return FLINT_SUCCESS;
-}
-
-FlintStatus BurnSubCommand::burnFs2()
-{
-
-    if (_flintParams.striped_image) {
-        reportErr(true, FLINT_FS2_STRIPED_ERROR);
-        return FLINT_FAILED;
-    }
-    if (_imgInfo.fw_type != FIT_FS2) {
-        reportErr(true, FLINT_IMG_DEV_COMPAT_ERROR, "FS2", "FS2");
-        return FLINT_FAILED;
-    }
-
-    //CheckMatchingHwDevId is done in mlxfwops burn routine.
-    //CheckMatchingDevId is done in mlxfwops burn routine.
-
-    dealWithExpRom();
-    bool getRomFromDev = _burnParams.burnRomOptions == FwOperations::ExtBurnParams::BRO_FROM_DEV_IF_EXIST;
-    if (!getRomFromDev && !checkMatchingExpRomDevId(_imgInfo)) {
-        printf("Image file ROM: FW is for device %d, but Exp-ROM is for device %d\n", _imgInfo.fw_info.dev_type,\
-                _imgInfo.fw_info.roms_info.exp_rom_com_devid);
-        if (!askUser()) {
-            return FLINT_FAILED;
-        }
-    }
-
-    //deal with guids
-    if (!dealWithGuids()) {
-        return FLINT_FAILED;
-    }
-
-    //deal with failsifity should be made in fwops as we dont know if image/device fw is failsafe
-    if (_burnParams.burnFailsafe & (!_imgInfo.fw_info.is_failsafe || !_devInfo.fw_info.is_failsafe)) {
-
-        if ((!_imgInfo.fw_info.is_failsafe && !_devInfo.fw_info.is_failsafe)) {
-            // When both image and flash are non-failsafe, flint will burn in a non-failsafe mode
-            _burnParams.burnFailsafe = false;
-        } else {
-            // when only one of image and flash is non-failsafe, flint will fail with appropriate message
-            reportErr(true, "Failsafe burn failed: FW image in the %s is non failsafe.\n"
-            "    you cannot burn a%s failsafe image over a%s failsafe image in a failsafe mode.\n"
-            "    If you want to burn in non failsafe mode, use the \"-nofs\" switch.\n",
-            _imgInfo.fw_info.is_failsafe ? "flash" : "given file",  _imgInfo.fw_info.is_failsafe? "" : " non",\
-            _devInfo.fw_info.is_failsafe ? "" : " non");
-            return FLINT_FAILED;
-        }
-    }
-
-    //deal with vsd
-    if (!dealWithVSD()) {
-        return FLINT_FAILED;
-    }
-
-    //check versions
-    if (!checkFwVersion()) {
-        return FLINT_BURN_ABORTED;
-    }
-    //check Psid
-    if (_devQueryRes && !checkPSID()) {
-        return FLINT_FAILED;
-    }
-
-    // Warn if a fw which does not support config is burnt over fw that does support config
-    // The other way (new fw with config, old fw w/o config) is a normal update flow.
-    // Update: all fw should now support config sectors, so we just check any missmatch in the config pads
-
-
-    // Verify config offset. Should never be different between image and flash (unless changing PSID).
-    if (_imgInfo.fs2_info.config_pad != _devInfo.fs2_info.config_pad) {
-        printf("\n");
-        printf("-W- Configuration section offset on flash (%u sectors) differs from the"
-                " Configuration section offset in the given image (%u sectors)."
-                " Current device configuration (if exists) will be deleted.\n",
-                           _devInfo.fs2_info.config_pad,
-                           _imgInfo.fs2_info.config_pad);
-        if (_burnParams.allowPsidChange) {
-            if (!askUser()) {
-                return FLINT_FAILED;
-            }
-        } else {
-                reportErr(true, "Use the '-allow_psid_change' flag to force this change.\n");
-                return FLINT_FAILED;
-        }
-    }
-
-    if (!_burnParams.burnFailsafe) {
-        printf("Burn process will not be failsafe. No checks will be performed.\n");
-        printf("ALL flash, including the Invariant Sector will be overwritten.\n");
-        printf("If this process fails, computer may remain in an inoperable state.\n");
-        if (!askUser()) {
-            return FLINT_FAILED;
-        }
-    }
-
-    //Finally we can burn
-    if (!_fwOps->FwBurnAdvanced(_imgOps, _burnParams))
-    {
-        reportErr(true, FLINT_FS2_BURN_ERROR, _fwOps->err());
-        return FLINT_FAILED;
-    }
-    PRINT_PROGRESS(_burnParams.progressFunc, 101);
-    write_result_to_log(FLINT_SUCCESS, "", _flintParams.log_specified);
-    return FLINT_SUCCESS;
-}
-
-bool BurnSubCommand::dealWithVSD()
-{
-    if (!(_burnParams.vsdSpecified || _burnParams.useImagePs) && !((strlen(_devInfo.fw_info.psid) != 0 \
-            && _devInfo.fw_info.vsd_sect_found))) {
-        printf("\n");
-        if (_burnParams.burnFailsafe) {
-            reportErr(true, "Can not extract VSD/PSID info from flash.\n"
-                    "    Can not burn in a failsafe mode. Please use \"-nofs\" flag to burn in a non failsafe mode.\n");
-            return false;
-        } else {
-            printf("-W- Can not extract VSD/PSID info from flash.\n\n"
-                    "    To use a specific VSD, abort and re-burn specifying the\n"
-                    "    needed info (using command line flags -vsd / -use_image_ps).\n"
-                    "    You can also continue burn using blank VSD.\n");
-            if (!askUser()) {
-                    return false;
-            }
-        }
-    }
-    return true;
-}
-
-bool BurnSubCommand::dealWithGuids()
-{
-    bool read_guids = true;
-    bool ib_dev;
-    bool eth_dev;
-    // Get the FW types
-    FwOperations::SetDevFlags(_imgInfo.fw_info.chip_type, _imgInfo.fw_info.dev_type, (fw_img_type)_imgInfo.fw_type, ib_dev, eth_dev);
-    //setDevFlags(_imgInfo, ib_dev, eth_dev);
-
-    // Check if there is a need to read guids
-    if (_burnParams.useImageGuids || _burnParams.blankGuids
-            || (_burnParams.userGuidsSpecified && ib_dev)
-            || (_burnParams.userMacsSpecified)) {
-        read_guids = false;
-    }
-    // Check if the burnt FW is ok and readable in order to get the GUIDs later
-    if (read_guids && !_devQueryRes) {
-        //printMissingGuidErr(ib_dev, eth_dev);
-        if (_burnParams.burnFailsafe) {
-            reportErr(true,
-                    "Can not extract GUIDs/MACs info from flash, %s\n"
-                            "    Can not burn in a failsafe mode.\n"
-                            "    If you want to burn in non failsafe mode, use the \"-nofs\" switch.\n", _fwOps->err());
-        } else {
-            reportErr(true, "Can not extract GUIDs/MACs info from flash, %s", _fwOps->err());
-            printMissingGuidErr(ib_dev, eth_dev);
-        }
-        return false;
-    }
-    // Check guids flag to ensure correct patching of guids in mlxfwops
-    bool is_guids_specified = _burnParams.userGuidsSpecified
-            || _burnParams.userMacsSpecified
-            || _burnParams.userUidSpecified;
-    if (is_guids_specified) {
-        if (!checkGuidsFlags( _imgInfo.fw_info.dev_type, _fwType,\
-                _burnParams.userGuidsSpecified, _burnParams.userMacsSpecified, _burnParams.userUidSpecified, ib_dev, eth_dev)) {
-            return false;
-        }
-    }
-    //report guid changes if needed. and update the user_guids vector in _burnParams
-     if (is_guids_specified || _flintParams.use_image_guids) {
-         guid_t* new_guids = ( _burnParams.userGuidsSpecified || _burnParams.userUidSpecified )?\
-                 &_burnParams.userUids[0] : _devInfo.fs2_info.guids;
-         guid_t* new_macs = _burnParams.userMacsSpecified != 0 ? &_burnParams.userUids[GUIDS] : &_devInfo.fs2_info.guids[GUIDS];
-         guid_t* old_guids = !_devQueryRes ? NULL : _devInfo.fs2_info.guids;
-         guid_t* old_macs = old_guids != NULL ? &old_guids[GUIDS] : NULL;
-         if (!is_guids_specified && _flintParams.use_image_guids) {
-             new_guids = _imgInfo.fs2_info.guids;
-             new_macs = &_imgInfo.fs2_info.guids[GUIDS];
-         }
-         //printf("-D- l=%d, h=%d\n", new_macs->l, new_macs->h);
-             if (!reportGuidChanges(new_guids, new_macs, old_guids, old_macs, ib_dev,\
-                     eth_dev, _imgInfo.fs2_info.guid_num)) {
-                 return false;
-             }
-
-    }
-    return true;
-}
-
-#define IS_HCA(chipType) \
-    (((chipType) == CT_CONNECTX) || ((chipType) == CT_CONNECT_IB) || ((chipType) == CT_CONNECTX4) || ((chipType) == CT_CONNECTX4_LX) || ((chipType) == CT_CONNECTX5))
-
-void BurnSubCommand::dealWithExpRom()
-{
-    bool getRomFromDev = false;
-    // Check exp rom:
-    bool fs2Cond = _fwType == FIT_FS2? (_devQueryRes && IS_HCA(_devInfo.fw_info.chip_type) && \
-            (FwOperations::IsFwSupportingRomModify(_devInfo.fw_info.fw_ver) || (_imgInfo.fw_info.roms_info.num_of_exp_rom > 0))\
-            && !_flintParams.use_image_rom && !strcmp(_devInfo.fw_info.product_ver,"") && !strcmp(_imgInfo.fw_info.product_ver, "")) : false;
-
-    bool fs3Cond = _fwType == FIT_FS3 ? (_devQueryRes && IS_HCA(_devInfo.fw_info.chip_type) && \
-            (FwOperations::IsFwSupportingRomModify(_devInfo.fw_info.fw_ver) || (_imgInfo.fw_info.roms_info.num_of_exp_rom > 0))\
-            && !_flintParams.use_image_rom) && !strcmp(_devInfo.fw_info.product_ver,"") && !strcmp(_imgInfo.fw_info.product_ver, "") : false;
-
-    bool cond = _fwType == FIT_FS2 ? fs2Cond : fs3Cond;
-
-    if (cond) {
-        // Enter here when:
-        //                  The fw on the flash is OK (passed query, and it should pass verify in mlxfwops) &&
-        //                  ( The device is connectx ||  connectib    )&&
-        //                  The image fw supports modifying ROM OR it contains ROM &&.
-        //                  The user didn't ask to burn the image rom. &&
-        //                  The  fw on the flash doesn't contain product version
-
-        if (_imgInfo.fw_info.roms_info.num_of_exp_rom > 0 && _devInfo.fw_info.roms_info.num_of_exp_rom > 0) {
-            printf("\n    Note: Both the image file and the flash contain a ROM image.\n"
-                   "          Select \"yes\" to use the ROM from the given image file.\n"
-                   "          Select \"no\" to keep the existing ROM in the flash\n");
-
-            displayExpRomInfo(_devInfo.fw_info.roms_info, "    Current ROM info on flash: ");
-            displayExpRomInfo(_imgInfo.fw_info.roms_info, "    ROM info from image file : ");
-            if (!askUser("Use the ROM from the image file", false)) {
-                getRomFromDev = true;
-            } else {
-                getRomFromDev = false;
-            }
-        } else if (!(_imgInfo.fw_info.roms_info.num_of_exp_rom > 0) && _devInfo.fw_info.roms_info.num_of_exp_rom > 0) {
-            getRomFromDev = true;
-        }
-    }
-    if (getRomFromDev) {
-        _burnParams.burnRomOptions = FwOperations::ExtBurnParams::BRO_FROM_DEV_IF_EXIST;
-    }
-    return;
-}
-
-bool BurnSubCommand::checkMatchingExpRomDevId(const fw_info_t& info)
-{
-    if ((info.fw_info.roms_info.num_of_exp_rom > 0) && (info.fw_info.dev_type)
-            && (info.fw_info.roms_info.exp_rom_com_devid != EXP_ROM_GEN_DEVID) \
-            && (info.fw_info.roms_info.exp_rom_com_devid != MISS_MATCH_DEV_ID)
-            && (info.fw_info.dev_type != info.fw_info.roms_info.exp_rom_com_devid)) {
-        return false;
-    }
-    return true;
-}
-
-FlintStatus BurnSubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    //set fw type
-    _fwType = _fwOps->FwType();
-    // query both image and device (deviceQuery can fail but we save rc)
-    _devQueryRes = _fwOps->FwQuery(&_devInfo);
-    if (!_imgOps->FwQuery(&_imgInfo))
-    {
-        reportErr(true, FLINT_FAILED_QUERY_ERROR, "image", _flintParams.image.c_str(), _imgOps->err());
-        return FLINT_FAILED;
-    }
-    //updateBurnParams with input given by user
-    updateBurnParams();
-    if (_fwType == FIT_FS3 || _fwType == FIT_FS4) {
-
-        return burnFs3();//CodeView: change the name of this function
-    } else if (_fwType == FIT_FS2) {
-        return burnFs2();
-    }
-    // unknown fw type
-    reportErr(true, FLINT_UNKNOWN_FW_TYPE_ERROR);
-    return FLINT_FAILED;
-}
-
-/***********************
- *Class: QuerySubCommand
- **********************/
-
-bool QuerySubCommand::verifyParams()
-{
-    if (_flintParams.cmd_params.size() > 1)
-    {
-        reportErr(true, FLINT_CMD_ARGS_ERROR,_name.c_str(), 1, (int)_flintParams.cmd_params.size());
-        return false;
-    }
-    if ((_flintParams.cmd_params.size() == 1) && _flintParams.cmd_params[0] != "full")
-    {
-        reportErr(true, FLINT_INVALID_OPTION_ERROR, _flintParams.cmd_params[0].c_str(), _name.c_str(), "full");
-        return false;
-    }
-    return true;
-}
-
-bool QuerySubCommand::checkMac(u_int64_t mac, string& warrStr) {
-    if ((mac >> 40) & 0x1) {
-
-        warrStr = FLINT_MULTI_BIT_WARNING;
-        return false;
-    }
-
-    if (mac >> 48) {
-        warrStr = FLINT_MORE_48_BITS_WARNING;
-        return false;
-    }
-
-    return true;
-}
-
-bool QuerySubCommand::displayFs2Uids(const fw_info_t& fwInfo)
-{
-    const char* mac_indent = "";
-    bool ibDev;
-    bool ethDev;
-    FwOperations::SetDevFlags(fwInfo.fw_info.chip_type, fwInfo.fw_info.dev_type, (fw_img_type)fwInfo.fw_type, ibDev, ethDev);
-    //setDevFlags(fwInfo, ibDev, ethDev);
-    int numPorts = 2;
-    if ((fwInfo.fw_info.chip_type == CT_IS4 || fwInfo.fw_info.chip_type == CT_SWITCHX)) {
-        numPorts = 0;
-    }
-    //we do not support cards with one port anymore.
-
-    // GUIDS:
-    if (ibDev) {
-        //report("GUID Des:        Node             Port1            ");
-        printf("Description:         Node             ");
-        if (numPorts > 0)
-            printf("Port1            ");
-        if (numPorts > 1)
-            printf("Port2            ");
-        printf( "Sys image\n");
-
-        printf("GUIDs:               ");
-        for (u_int32_t i=0; i < GUIDS; i++) {
-            if ((i == 1 && numPorts < 1) ||
-                (i == 2 && numPorts < 2)) {
-                continue;
-            }
-            printf(GUID_FORMAT " ", fwInfo.fs2_info.guids[i].h, fwInfo.fs2_info.guids[i].l);
-        }
-        if (numPorts > 0) {
-            mac_indent = "                 ";
-        }
-    }
-    // MACS:
-    if (ethDev) {
-        if (fwInfo.fs2_info.guid_num == 6) {
-            if (!ibDev) {
-                printf("Description:%s    Port1            Port2\n", mac_indent);
-            } else if (fwInfo.fw_info.chip_type == CT_SWITCHX) {
-                printf("\nDescription:         Base             Switch\n");
-            } else {
-                printf("\n");
-            }
-            printf("MACs:        %s       ", mac_indent);
-            for (u_int32_t i=GUIDS; i < 6; i++) {
-                printf("     " MAC_FORMAT , fwInfo.fs2_info.guids[i].h, fwInfo.fs2_info.guids[i].l);
-            }
-
-            for (u_int32_t i=GUIDS; i < 6; i++) {
-                u_int64_t mac = (((u_int64_t)fwInfo.fs2_info.guids[i].h) << 32) | fwInfo.fs2_info.guids[i].l;
-                string warrStr;
-                if (!fwInfo.fs2_info.blank_guids && !checkMac(mac, warrStr)) {
-                    if (i==GUIDS) printf("\n\n");
-                    printf(FLINT_BAD_MAC_ADRESS_WARNING, fwInfo.fs2_info.guids[i].h, fwInfo.fs2_info.guids[i].l, warrStr.c_str());
-                }
-            }
-        } else {
-            printf(FLINT_MAC_ENTRIES_WARNING, 6, fwInfo.fs2_info.guid_num);
-        }
-    }
-
-    printf("\n");
-    return true;
-}
-
-#define BASE_STR "Base"
-#define PRINT_FS3_UID(uid1, str, printStep) \
-    printf("%-16s     %016" U64H_FMT_GEN "        %d", str, uid1.uid, uid1.num_allocated);\
-    if (printStep) {\
-        printf("          %d", uid1.step);\
-    }\
-    printf("\n");
-
-static inline void printFs3Uids(struct fs3_uid_entry uid, struct fs3_uid_entry orig_uid, string guidMac, bool printStep)
-{
-    string prefix = BASE_STR + string(" ") + guidMac + ":";
-    PRINT_FS3_UID(uid, prefix.c_str(), printStep);
-    if (uid.uid !=  orig_uid.uid || uid.num_allocated != orig_uid.num_allocated  || ( printStep && uid.step != orig_uid.step)) {
-        // Print MFG UIDs as well
-        prefix = "Orig " + prefix;
-        PRINT_FS3_UID(orig_uid, prefix.c_str(), printStep);
-    }
-}
-
-bool QuerySubCommand::displayFs3Uids(const fw_info_t& fwInfo)
-{
-    if (fwInfo.fs3_info.fs3_uids_info.valid_field) {
-        // new GUIDs format
-        printf("Description:         UID                GuidsNumber\n");
-        printFs3Uids(fwInfo.fs3_info.fs3_uids_info.cx4_uids.base_guid, fwInfo.fs3_info.orig_fs3_uids_info.cx4_uids.base_guid, "GUID", false);
-        printFs3Uids(fwInfo.fs3_info.fs3_uids_info.cx4_uids.base_mac, fwInfo.fs3_info.orig_fs3_uids_info.cx4_uids.base_mac, "MAC", false);
-    } else {
-        printf("Description:         UID                GuidsNumber  Step\n");
-        string firstGuid = (fwInfo.fw_info.chip_type != CT_SWITCH_IB) ? "GUID1" : "GUID";
-        string firstMac = (fwInfo.fw_info.chip_type != CT_SWITCH_IB) ? "MAC1" : "MAC";
-
-        printFs3Uids(fwInfo.fs3_info.fs3_uids_info.cib_uids.guids[0], fwInfo.fs3_info.orig_fs3_uids_info.cib_uids.guids[0], firstGuid, true);
-        if (fwInfo.fw_info.chip_type != CT_SWITCH_IB) {
-            printFs3Uids(fwInfo.fs3_info.fs3_uids_info.cib_uids.guids[1], fwInfo.fs3_info.orig_fs3_uids_info.cib_uids.guids[1], "GUID2", true);
-        }
-        printFs3Uids(fwInfo.fs3_info.fs3_uids_info.cib_uids.macs[0], fwInfo.fs3_info.orig_fs3_uids_info.cib_uids.macs[0], firstMac, true);
-        if (fwInfo.fw_info.chip_type != CT_SWITCH_IB) {
-            printFs3Uids(fwInfo.fs3_info.fs3_uids_info.cib_uids.macs[1], fwInfo.fs3_info.orig_fs3_uids_info.cib_uids.macs[1], "MAC2", true);
-        }
-    }
-    return true;
-}
-
-
-
-FlintStatus QuerySubCommand::printInfo(const fw_info_t& fwInfo, bool fullQuery)
-{
-    //char imageTypeStr[4] = {'\0', '\0', '\0', '\0'};
-    bool isFs2 = (fwInfo.fw_type == FIT_FS2) ? true : false;
-    bool isFs3 = (fwInfo.fw_type == FIT_FS3) ? true : false;
-    bool isFs4 = (fwInfo.fw_type == FIT_FS4) ? true : false;
-
-    /*switch(fwInfo.fw_type){
-        case FIT_FS2:
-            snprintf(imageTypeStr, 4, "FS2");
-            break;
-        case FIT_FS3:
-            snprintf(imageTypeStr, 4, "FS3");
-            break;
-        case FIT_FS4:
-            snprintf(imageTypeStr, 4, "FS4");
-            break;
-    }*/
-    printf("Image type:          %s\n", isFs2 ? "FS2" : (isFs3 ? "FS3" : isFs4 ? "FS4" : "Unknown"));
-
-    if (fwInfo.fw_info.fw_ver[0] || fwInfo.fw_info.fw_ver[1] || fwInfo.fw_info.fw_ver[2]) {
-        char versionStr[64] = {0};
-        snprintf(versionStr, 64, VERSION_FORMAT(fwInfo.fw_info.fw_ver[1]), fwInfo.fw_info.fw_ver[0], fwInfo.fw_info.fw_ver[1],
-                fwInfo.fw_info.fw_ver[2]);
-        printf("FW Version:          %s\n", versionStr);
-        if ((fwInfo.fw_info.running_fw_ver[0] || fwInfo.fw_info.running_fw_ver[1] || fwInfo.fw_info.running_fw_ver[2]) && \
-                (fwInfo.fw_info.running_fw_ver[0] != fwInfo.fw_info.fw_ver[0] || \
-                        fwInfo.fw_info.running_fw_ver[1] != fwInfo.fw_info.fw_ver[1] || \
-                        fwInfo.fw_info.running_fw_ver[2] != fwInfo.fw_info.fw_ver[2])) {
-            snprintf(versionStr, 64, VERSION_FORMAT(fwInfo.fw_info.running_fw_ver[1]), fwInfo.fw_info.running_fw_ver[0], fwInfo.fw_info.running_fw_ver[1],
-                    fwInfo.fw_info.running_fw_ver[2]);
-            printf("FW Version(Running): %s\n", versionStr);
-        }
-    }
-
-    if (fwInfo.fw_info.fw_rel_date[0] || fwInfo.fw_info.fw_rel_date[1] || fwInfo.fw_info.fw_rel_date[2]) {
-        printf("FW Release Date:     %x.%x.%x\n", fwInfo.fw_info.fw_rel_date[0], fwInfo.fw_info.fw_rel_date[1],\
-                fwInfo.fw_info.fw_rel_date[2]);
-    }
-
-    if (fullQuery) { // there is no full query atm just quick query
-        if (fwInfo.fw_info.min_fit_ver[0] || fwInfo.fw_info.min_fit_ver[1]\
-                || fwInfo.fw_info.min_fit_ver[2]||fwInfo.fw_info.min_fit_ver[3]) {
-            printf("Min FIT Version:     %d.%d.%d.%d\n", fwInfo.fw_info.min_fit_ver[0],\
-                    fwInfo.fw_info.min_fit_ver[1], fwInfo.fw_info.min_fit_ver[2], fwInfo.fw_info.min_fit_ver[3]);
-        }
-        if ((fwInfo.fw_info.mic_ver[0] || fwInfo.fw_info.mic_ver[1] || fwInfo.fw_info.mic_ver[2])) {
-            printf("MIC Version:         %d.%d.%d\n", fwInfo.fw_info.mic_ver[0],\
-                    fwInfo.fw_info.mic_ver[1], fwInfo.fw_info.mic_ver[2]);
-        }
-        if (isFs2) {
-            if (fwInfo.fs2_info.config_sectors) {
-                printf("Config Sectors:      %d\n", fwInfo.fs2_info.config_sectors);
-            }
-            if (fwInfo.fs2_info.config_pad) {
-                    printf("Config Pad:          %d\n", fwInfo.fs2_info.config_pad);
-            }
-            if (strlen(fwInfo.fs2_info.prs_name)) {
-                printf("PRS Name:            %s\n", fwInfo.fs2_info.prs_name);
-            }
-        } else { // FS3
-            if (strlen(fwInfo.fs3_info.prs_name)) {
-                printf("PRS Name:            %s\n", fwInfo.fs3_info.prs_name);
-            }
-            if (strlen(fwInfo.fs3_info.orig_prs_name)) {
-                printf("Orig PRS Name:       %s\n", fwInfo.fs3_info.orig_prs_name);
-            }
-            if (strlen(fwInfo.fs3_info.name)) {
-                printf("Part Number:         %s\n", fwInfo.fs3_info.name);
-            }
-            if (strlen(fwInfo.fs3_info.description)) {
-                printf("Description:         %s\n", fwInfo.fs3_info.description);
-            }
-        }
-    }
-
-    if (strlen(fwInfo.fw_info.product_ver)) {
-        printf("Product Version:     %s\n", fwInfo.fw_info.product_ver);
-    }
-
-    if (fwInfo.fw_info.roms_info.exp_rom_found) {
-        displayExpRomInfo(fwInfo.fw_info.roms_info, "Rom Info:            ");
-    }
-
-    if (isFs2)
-    {
-        printf("Device ID:           %d\n", fwInfo.fw_info.dev_type);
-    }
-
-    if (isFs2 && fwInfo.fs2_info.access_key_exists) {
-        printf("HW Access Key:       ");
-        if (fwInfo.fs2_info.access_key_value.l || fwInfo.fs2_info.access_key_value.h) {
-            printf("Enabled\n");
-        } else {
-            printf("Disabled\n");
-        }
-    }
-
-    if (!isFs2)/*i.e its fs3*/{
-        if (!displayFs3Uids(fwInfo)) {
-            return FLINT_FAILED;
-        }
-    } else {
-        if (!displayFs2Uids(fwInfo)) {
-            return FLINT_FAILED;
-        }
-    }
-
-    // VSD, PSID
-    if (!fwInfo.fw_info.vsd_vendor_id || fwInfo.fw_info.vsd_vendor_id == MELLANOX_VENDOR_ID) {
-        if (!isFs2) {
-            printf("Image VSD:           %s\n", fwInfo.fs3_info.image_vsd);
-            printf("Device VSD:          %s\n", fwInfo.fw_info.vsd);
-            printf("PSID:                %s\n", fwInfo.fw_info.psid);
-            if (strncmp(fwInfo.fw_info.psid, fwInfo.fs3_info.orig_psid, 13) != 0) {
-                printf("Orig PSID:           %s\n", fwInfo.fs3_info.orig_psid);
-            }
-        } else {
-            printf("VSD:                 %s\n", fwInfo.fw_info.vsd);
-            printf("PSID:                %s\n", fwInfo.fw_info.psid);
-        }
-    } else {
-        printf(FLINT_NOT_MLNX_FW_WARNING, fwInfo.fw_info.vsd_vendor_id);
-    }
-
-    if (isFs2 && fwInfo.fs2_info.blank_guids) { //blankGuids only exsists in FS2 image type in mlxfwops why?
-        printf(FLINT_BLANK_GUIDS_WARNING);
-    }
-    return FLINT_SUCCESS;
-}
-
-QuerySubCommand:: QuerySubCommand()
-{
-    _name = "query";
-    _desc = "Query misc. flash/firmware characteristics, use \"full\"\n"
-            INDENT"to get more information.";
-    _extendedDesc = "Query miscellaneous FW and flash parameters \n"
-                INDENTEX "Display FW Version, GUIDs, PSID, and other info";
-    _flagLong = "query";
-    _flagShort = "q";
-    _param = "[full]";
-    _paramExp = "None";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " query";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 1;
-    _cmdType = SC_Query;
-}
-
-QuerySubCommand:: ~QuerySubCommand()
-{
-
-}
-
-FlintStatus QuerySubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    fw_info_t fwInfo;
-    FwOperations* ops;
-    bool fullQuery = false;
-    //check on what we are wroking
-    ops = (_flintParams.device_specified) ? _fwOps : _imgOps;
-    if (!ops->FwQuery(&fwInfo, true, _flintParams.striped_image))
-    {
-        reportErr(true, FLINT_FAILED_QUERY_ERROR,_flintParams.device_specified? "Device" : "image",
-                _flintParams.device_specified? _flintParams.device.c_str() : _flintParams.image.c_str(), ops->err());
-        return FLINT_FAILED;
-    }
-    //print fw_info nicely to the user
-    // we actually dont use "regular" query , just quick
-    //ORENK - no use to display quick query message to the user if we dont do it in any other way
-    if (_flintParams.cmd_params.size() == 1) {
-        fullQuery=true;
-    }
-    return printInfo(fwInfo, fullQuery);
-}
-
-/***********************
- *Class: VerifySubCommand
- ***********************/
-VerifySubCommand:: VerifySubCommand()
-{
-    _name = "verify";
-    _desc = "Verify entire flash, use \"showitoc\" to see ITOC headers\n"
-            INDENT"in FS3 image only.";
-    _extendedDesc = "Verify entire flash.";
-    _flagLong = "verify";
-    _flagShort = "v";
-    _param = "[showitoc]";
-    _paramExp = "None";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " v";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 1;
-    _cmdType = SC_Verify;
-}
-
-VerifySubCommand:: ~VerifySubCommand()
-{
-
-}
-
-bool VerifySubCommand::verifyParams()
-{
-
-    if (_flintParams.cmd_params.size() > 1)
-    {
-        reportErr(true, FLINT_CMD_ARGS_ERROR,_name.c_str(), 0, (int)_flintParams.cmd_params.size());
-        return false;
-    }
-    if ((_flintParams.cmd_params.size() == 1) && _flintParams.cmd_params[0] != "showitoc")
-    {
-        reportErr(true, FLINT_INVALID_OPTION_ERROR, _flintParams.cmd_params[0].c_str(), _name.c_str(), "swhoitoc");
-        return false;
-    }
-
-    return true;
-}
-
-
-
-
-FlintStatus VerifySubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    FwOperations* ops;
-    bool showItoc = (_flintParams.cmd_params.size() == 1) ? true : false;
-    //check on what we are wroking
-    ops = (_flintParams.device_specified) ? _fwOps : _imgOps;
-    if (!ops->FwVerify(&verifyCbFunc, _flintParams.striped_image, showItoc)) {
-        printf("\n\n");
-        reportErr(true, FLINT_CMD_VERIFY_ERROR, ops->err());
-
-        return FLINT_FAILED;
-    }
-    //get status of blank guids in fs2 only can either bring from FwVerify as another parameter. ask mohammad
-    if (ops->FwType() == FIT_FS2) {
-        fw_info_t fwInfo;
-        if (!ops->FwQuery(&fwInfo, true,  _flintParams.striped_image)) {
-            printf("\n\n");
-            reportErr(true, "Failed to get Guids status. %s\n", ops->err());
-            return FLINT_FAILED;
-        }
-        if (fwInfo.fs2_info.blank_guids) {
-            printf("\n\n");
-            reportErr(true, FLINT_CMD_VERIFY_ERROR, "BLANK GUIDS");
-            return FLINT_FAILED;
-        }
-    }
-    printf("\n-I- FW image verification succeeded. Image is bootable.\n\n");
-    return FLINT_SUCCESS;
-}
-
-/***********************
- *Class: SwResetSubCommand
- **********************/
-SwResetSubCommand:: SwResetSubCommand() {
-    _name = "swreset";
-    _desc = "SW reset the target un-managed switch device. This command\n"
-            INDENT"is supported only in the In-Band access method.";
-    _extendedDesc = "SW reset the target un-managed switch device. This command\n"
-                INDENTEX "is supported only in the In-Band access method.";
-    _flagLong = "swreset";
-    _flagShort = "";
-    _param = "";
-    _paramExp = "None";
-    _example = "None";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 0;
-    _cmdType = SC_Swreset;
-}
-
-SwResetSubCommand:: ~SwResetSubCommand() {
-
-}
-
-
-bool SwResetSubCommand::verifyParams() {
-    if (_flintParams.cmd_params.size() != 0) {
-        reportErr(true, FLINT_CMD_ARGS_ERROR,_name.c_str() , 0, (int)_flintParams.cmd_params.size());
-        return false;
-    }
-    return true;
-}
-
-FlintStatus SwResetSubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    printf("-I- Resetting device %s ...\n", _flintParams.device.c_str());
-            if (!_fwOps->FwSwReset()) {
-                reportErr(true, FLINT_SWRESET_ERROR, _fwOps->err());
-                return FLINT_FAILED;
-            }
-    return FLINT_SUCCESS;
-}
-
-/***********************
- *Class: BromSubCommand
- **********************/
-BromSubCommand:: BromSubCommand()
-{
-    _name = "brom";
-    _desc = "Burn the specified ROM file on the flash.";
-    _extendedDesc = "Burn the specified exp-ROM on the flash.";
-    _flagLong = "brom";
-    _flagShort = "";
-    _param = "<ROM-file>";
-    _paramExp = "file: The exp-ROM file.";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " brom exp-rom.rom";
-    _v = Wtv_Dev_Or_Img;
-    _cmdType = SC_Brom;
-    _maxCmdParamNum = 1;
-    _minCmdParamNum = 1;
-    memset(&_info, 0, sizeof(_info));
-    memset(&_romsInfo, 0, sizeof(_romsInfo));
-}
-
-BromSubCommand:: ~BromSubCommand()
-{
-    closeLog();
-    _fRom.close();
-}
-
-
-bool BromSubCommand::getExpRomStrVer(roms_info_t& roms_info, char* version) {
-    if (roms_info.rom_info[0].exp_rom_product_id >= 0x10) {
-        sprintf(version, "%d.%d.%d", roms_info.rom_info[0].exp_rom_ver[0], roms_info.rom_info[0].exp_rom_ver[1],
-                roms_info.rom_info[0].exp_rom_ver[2]);
-    } else {
-        sprintf(version, "%d", roms_info.rom_info[0].exp_rom_ver[0]);
-    }
-    return true;
-}
-
-
-FlintStatus BromSubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-
-    FwOperations *ops = _flintParams.device_specified ? _fwOps : _imgOps;
-    // query device
-    if (!ops->FwQuery(&_info)) {
-        reportErr(true, FLINT_FAILED_QUERY_ERROR, "Device", _flintParams.device.c_str(),
-                ops->err());
-        return FLINT_FAILED;
-    }
-    // get roms info
-    if (!_fRom.open(_flintParams.cmd_params[0].c_str())) {
-        reportErr(true, FLINT_BROM_ERROR, _fRom.err());
-        return FLINT_FAILED;
-    }
-    if (!getRomsInfo(&_fRom, _romsInfo)) {
-        return FLINT_FAILED;
-    }
-    //check devids
-    if ((_romsInfo.num_of_exp_rom > 0) && (_info.fw_info.dev_type)
-            && (_romsInfo.exp_rom_com_devid != EXP_ROM_GEN_DEVID) \
-            && (_romsInfo.exp_rom_com_devid != MISS_MATCH_DEV_ID)
-            && (_info.fw_info.dev_type != _romsInfo.exp_rom_com_devid)) {
-        printf("-W- Image file ROM: FW is for device %d, but Exp-ROM is for device %d\n",\
-                _info.fw_info.dev_type, _romsInfo.exp_rom_com_devid);
-        if (!askUser()) {
-            return FLINT_FAILED;
-        }
-    }
-    char romVer1[50], romVer2[50];
-    printf("\n");
-    const char *infoStr = "    Current ROM info on flash: ";
-    const char *infoStr2 = "    New ROM info:              ";
-    if (_info.fw_info.roms_info.num_of_exp_rom > 0) {
-        displayExpRomInfo(_info.fw_info.roms_info, infoStr);
-        getExpRomStrVer(_info.fw_info.roms_info, romVer1);
-    } else {
-        printf("%s", infoStr);
-        snprintf(romVer1, 50, "N/A");
-        printf("%s\n", romVer1);
-    }
-    displayExpRomInfo(_romsInfo, infoStr2);
-    getExpRomStrVer(_romsInfo, romVer2);
-    //add new line to space up before showing burn precentage
-    printf("\n");
-    //print correct msg to log
-    if (_info.fw_info.roms_info.num_of_exp_rom != 0) {
-        print_line_to_log("Current ROM version on flash (1st ROM of %d): %s, New ROM version (1st ROM of %d): %s\n",\
-                        _info.fw_info.roms_info.num_of_exp_rom, romVer1, _romsInfo.num_of_exp_rom, romVer2);
-    } else {
-        print_line_to_log("Current ROM version on flash: %s, New ROM version(1st ROM of %d): %s\n",romVer1, _romsInfo.num_of_exp_rom, romVer2);
-    }
-    // burn the rom
-    printf("-I- Preparing to burn ROM ...\n");
-    if (!ops->FwBurnRom(&_fRom, _flintParams.allow_rom_change, true, bromCbFunc)) {
-            reportErr(true, FLINT_BROM_ERROR, ops->err());
-            return FLINT_FAILED;
-        }
-    bromCbFunc(101);
-    printf("\n");
-    write_result_to_log(FLINT_SUCCESS, "", _flintParams.log_specified);
-    return FLINT_SUCCESS;
-}
-
-/***********************
- *Class: Delete ROM
- **********************/
-DromSubCommand:: DromSubCommand()
-{
-    _name = "drom";
-    _desc = "Remove the ROM section from the flash.";
-    _extendedDesc = "Remove the exp-ROM from the flash if it is existing.";
-    _flagLong = "drom";
-    _flagShort = "";
-    _param = "";
-    _paramExp = "None";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " drom";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 0;
-    _cmdType = SC_Drom;
-}
-
-DromSubCommand:: ~DromSubCommand()
-{
-
-}
-
-bool DromSubCommand::verifyParams()
-{
-    if (_flintParams.cmd_params.size() != 0) {
-        reportErr(true, FLINT_CMD_ARGS_ERROR,_name.c_str() , 0, (int)_flintParams.cmd_params.size());
-        return false;
-    }
-    return true;
-}
-
-FlintStatus DromSubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    // leave an empty line before printing from callback
-    FwOperations *ops = _flintParams.device_specified ? _fwOps : _imgOps;
-
-    printf("\n");
-    printf("-I- Preparing to remove ROM ...\n");
-    if(!ops->FwDeleteRom(_flintParams.allow_rom_change, dromCbFunc)) {
-        reportErr(true, FLINT_DROM_ERROR, ops->err());
-        return FLINT_FAILED;
-    }
-    dromCbFunc(101);
-    return FLINT_SUCCESS;
-}
-/***********************
- *Class: Read ROM
- **********************/
-RromSubCommand:: RromSubCommand()
-{
-    _name = "rrom";
-    _desc = "Read the ROM section from the flash.";
-    _extendedDesc = "Read the exp-ROM from the flash if it is existing.";
-    _flagLong = "rrom";
-    _flagShort = "";
-    _param = "<out-file>";
-    _paramExp = "file: filename to write the exp-ROM to.";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " rrom exp-rom.rom";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 1;
-    _minCmdParamNum = 1;
-    _cmdType = SC_Rrom;
-}
-
-RromSubCommand:: ~RromSubCommand()
-{
-
-}
-
-bool RromSubCommand::verifyParams()
-{
-    FILE * file;
-    if ((file = fopen(_flintParams.cmd_params[0].c_str(), "r")) != NULL) {
-        fclose(file);
-        printf(
-                "\n-W- The given ROM file is existing, you are going to overwrite it.\n");
-        if (!askUser()) {
-            return false;
-        }
-    }
-    return true;
-}
-
-FlintStatus RromSubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-         return FLINT_FAILED;
-     }
-    //get the rom sector if present.
-    std::vector<u_int8_t> romSect;
-    FwOperations* ops = _flintParams.device_specified ? _fwOps : _imgOps;
-    if (!ops->FwReadRom(romSect)) {
-        reportErr(true, FLINT_READ_ROM_ERROR, ops->err());
-        return FLINT_FAILED;
-    }
-    //TOCPUn(&(romSect[0]), romSect.size()/4);
-    if (!writeToFile(_flintParams.cmd_params[0], romSect)) {
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-
-
-
-/***********************
- *Class:
- **********************/
-BbSubCommand:: BbSubCommand()
-{
-    _name = "bb";
-    _desc = "Burn Block - Burns the given image as is. No checks are done.";
-    _extendedDesc = "Burns entire flash verbatim from raw binary image. No checks are done on the flash or\n"
-                INDENTEX "on the given image file. No fields (such as VSD or Guids) are read from flash.";
-    _flagLong = "bb";
-    _flagShort = "";
-    _param = "";
-    _paramExp = "None";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " -i image1.bin bb";
-    _v = Wtv_Dev_And_Img;
-    _maxCmdParamNum = 0;
-    _cmdType = SC_Bb;
-}
-
-BbSubCommand:: ~BbSubCommand()
-{
-    closeLog();
-}
-
-bool BbSubCommand:: verifyParams()
-{
-    if (_flintParams.cmd_params.size() != 0) {
-        reportErr(true, FLINT_CMD_ARGS_ERROR, _name.c_str(), 0, (int)(_flintParams.cmd_params.size()));
-        return false;
-    }
-    return true;
-}
-
-FlintStatus BbSubCommand:: executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    if (_fwOps->FwType() == FIT_FS3) {
-        reportErr(true, FLINT_FS3_BB_ERROR);
-        return FLINT_FAILED;
-    }
-
-
-    printf("\n");
-    printf("Block burn: The given image will be burnt as is. No fields (such\n");
-    printf("as GUIDS,VSD) are taken from current image on flash.\n");
-    printf("Burn process will not be failsafe. No checks will be performed.\n");
-    printf("ALL flash, including the Invariant Sector will be overwritten.\n");
-    printf("If this process fails, computer may remain in an inoperable state.\n");
-    if (!askUser()) {
-        return FLINT_FAILED;
-    }
-    ProgressCallBack progressFunc = _flintParams.silent == true ? (ProgressCallBack)NULL : &burnBCbFunc;
-    if (!_fwOps->FwBurnBlock(_imgOps, progressFunc)) {
-        reportErr(true, "Non failsafe burn failed: %s\n", _fwOps->err());
-        return FLINT_FAILED;
-    }
-    printf("\n");
-    write_result_to_log(FLINT_SUCCESS, "", _flintParams.log_specified);
-    return FLINT_SUCCESS;
-}
-
-/***********************
- *Class:
- **********************/
-SgSubCommand:: SgSubCommand()
-{
-    _name = "sg";
-    _desc = "Set GUIDs.";
-    _extendedDesc = "Set GUIDs/MACs/UIDs in the given device/image.\n"
-                INDENTEX "Use -guid(s), -mac(s) and -uid(s) flags to set the desired values.\n"
-                INDENTEX "- On pre-ConnectX devices, the sg command  is used in production to apply GUIDs/MACs values\n"
-                INDENTEX "to cards that were pre-burnt with blank GUIDs. It is not meant for\n"
-                INDENTEX "use in field.\n"
-                INDENTEX "- On 4th generation devices, this command can operate on both image file and image on flash.\n"
-                INDENTEX "If the GUIDs/MACs/UIDs in the image on flash are non-blank,\n"
-                INDENTEX "flint will re-burn the current image using the given GUIDs/MACs/UIDs.";
-    _flagLong = "sg";
-    _flagShort = "";
-    _param = "[guids_num=<num|num_port1,num_port2> step_size=<size|size_port1,size_port2>] | [nocrc]";
-    _paramExp = "nocrc: (optional) When specified the flint would not update\n"
-                INDENTEX "the full image crc after changing the guids\n"
-                INDENTEX "guids_num: (optional) number of GUIDs to be allocated per physical port (FS3 Only)\n"
-                INDENTEX "step_size: (optional) step size between GUIDs (FS3 Only)\n"
-                INDENTEX "Note: guids_num/step_size values can be specified per port or for both ports";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " -guid 0x0002c9000100d050 sg"
-  "\n" INDENTEX FLINT_NAME " -d " MST_DEV_EXAMPLE4 " -guid 0x0002c9000100d050 -mac 0x0002c900d050 sg";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 2;
-    _cmdType = SC_Sg;
-    _ops     = NULL;
-    memset(&_info, 0, sizeof(_info));
-    memset(&_sgParams, 0, sizeof(_sgParams));
-    memset(&(_sgParams.numOfGUIDsPP), 0xff, sizeof(_sgParams.numOfGUIDsPP));
-    memset(&(_sgParams.stepSizePP), 0xff, sizeof(_sgParams.stepSizePP));
-    _sgParams.usePPAttr = true;
-}
-
-SgSubCommand:: ~SgSubCommand()
-{
-
-}
-
-bool SgSubCommand::verifyParams()
-{
-    if ((_flintParams.cmd_params.size() == 1 && _flintParams.cmd_params[0] != "nocrc")||\
-            (_flintParams.cmd_params.size() == 2 && \
-                    !extractUIDArgs(_flintParams.cmd_params, _sgParams.numOfGUIDsPP, _sgParams.stepSizePP))) {
-        reportErr(true, "The sg parameter should be \"nocrc\", \"guids_num=<num> step_size=<size>\" or nothing\n");
-        return false;
-    }
-
-    if (_flintParams.cmd_params.size()> 2) {
-        reportErr(true, FLINT_CMD_ARGS_ERROR2,_name.c_str(), 1, (int)_flintParams.cmd_params.size());
-        return false;
-    }
-    if (!(_flintParams.guid_specified || _flintParams.guids_specified ||\
-            _flintParams.uid_specified || \
-            _flintParams.mac_specified || _flintParams.macs_specified)){
-        reportErr(true, FLINT_COMMAND_FLAGS_ERROR, _name.c_str(), "GUIDs / MACs / UID (using command line flags -guid(s) / -mac(s) / -uid )");
-        return false;
-    }
-    if ((_flintParams.guid_specified || _flintParams.guids_specified) && (_flintParams.uid_specified)) {
-        reportErr(true, FLINT_COMMAND_FLAGS_ERROR, _name.c_str(), "either GUIDs / UIDs (using command line flags -guid(s) / -uid )");
-        return false;
-    }
-    if ((_flintParams.mac_specified || _flintParams.macs_specified) && (_flintParams.uid_specified)) {
-        reportErr(true, FLINT_COMMAND_FLAGS_ERROR, _name.c_str(), "either MACs / UIDs (using command line flags -mac(s) / -uid )");
-        return false;
-    }
-    if (_flintParams.guid_specified && _flintParams.guids_specified) {
-        reportErr(true, FLINT_INVALID_FLAG_WITH_FLAG_ERROR, "-guids", "-guid" );
-        return false;
-    }
-    if (_flintParams.mac_specified && _flintParams.macs_specified) {
-        reportErr(true, FLINT_INVALID_FLAG_WITH_FLAG_ERROR, "-macs", "-mac" );
-        return false;
-    }
-
-    _sgParams.guidsSpecified = _flintParams.guid_specified || _flintParams.guids_specified;
-    _sgParams.macsSpecified = _flintParams.mac_specified || _flintParams.macs_specified;
-    _sgParams.uidSpecified = _flintParams.uid_specified;
-    _sgParams.updateCrc = !(_flintParams.cmd_params.size() == 1);
-    _sgParams.stripedImage = _flintParams.striped_image;
-    return true;
-}
-
-void SgSubCommand::setUserGuidsAndMacs()
-{
-    // _sgParams.userGuids contains either guids and macs (or just guids) or just uids
-    // we are required to specifiy to mlxfwops a guid vector of MAX_GUIDS size regardless if user gives only guids
-    // or only macs or uids
-    if ( _sgParams.guidsSpecified) {
-
-        _sgParams.userGuids = _flintParams.user_guids;
-    }
-    if (_sgParams.macsSpecified) {
-        if (!_sgParams.guidsSpecified) {
-            //it inits the guids with zeroes but mlxfwops will set them to 0xffff
-            //can set default init if needed
-            _sgParams.userGuids.resize(GUIDS);
-        }
-        _sgParams.userGuids.push_back(_flintParams.user_macs[0]);
-        _sgParams.userGuids.push_back(_flintParams.user_macs[1]);
-    }
-    if (_sgParams.uidSpecified) {
-        _sgParams.userGuids.resize(0);
-        _sgParams.userGuids.push_back(_flintParams.baseUid);
-    }
-    _sgParams.userGuids.resize(MAX_GUIDS);
-}
-
-bool SgSubCommand::CheckSetGuidsFlags()
-{
-    bool ibDev;
-    bool ethDev;
-    FwOperations::SetDevFlags(_info.fw_info.chip_type, _info.fw_info.dev_type, (fw_img_type)_info.fw_type, ibDev, ethDev);
-    //setDevFlags(_info, ibDev,ethDev);
-
-    if (_sgParams.macsSpecified || _sgParams.guidsSpecified || _sgParams.uidSpecified) {
-        if (!checkGuidsFlags(_info.fw_info.dev_type,_info.fw_type,\
-                _sgParams.guidsSpecified, _sgParams.macsSpecified, _sgParams.uidSpecified, ibDev, ethDev)) {
-            return false;
-        }
-    } else {
-        printf("-E- ");
-        printMissingGuidErr(ibDev, ethDev);
-        printf("\n");
-        return false;
-    }
-
-    return true;
-}
-
-FlintStatus SgSubCommand::sgFs2()
-{
-    //different behaviours for fs2 device with blank guids and fs2 device with guids or image
-    //different behaviour if isfailesafe or not
-    if (_flintParams.cmd_params.size() > 1) {
-        reportErr(true, FLINT_CMD_ARGS_ERROR2, _name.c_str(), 1, _flintParams.cmd_params.size());
-    }
-
-    if (_flintParams.device_specified && !_info.fs2_info.blank_guids) {
-        // 2- FS2 device with no blank Guids
-        printf(FLINT_SET_GUIDS_WARRNING);
-    }
-
-    if (!CheckSetGuidsFlags()){
-        return FLINT_FAILED;
-    }
-
-    if (_flintParams.image_specified || !_info.fs2_info.blank_guids) {
-        //report guid changes
-        bool ethDev;
-        bool ibDev;
-        FwOperations::SetDevFlags(_info.fw_info.chip_type, _info.fw_info.dev_type, (fw_img_type)_info.fw_type, ibDev, ethDev);
-        //setDevFlags(_info, ibDev, ethDev);
-        //decide what are our new guids/macs
-        guid_t *new_guids = (_sgParams.guidsSpecified ||_sgParams.uidSpecified) ? & _sgParams.userGuids[0] : &_info.fs2_info.guids[0] ;
-        guid_t *new_macs =  _sgParams.macsSpecified ? &_sgParams.userGuids[GUIDS] : &_info.fs2_info.guids[GUIDS] ;
-
-        if (!reportGuidChanges(new_guids, new_macs, &_info.fs2_info.guids[0], &_info.fs2_info.guids[GUIDS], ibDev,\
-                ethDev, _info.fs2_info.guid_num)){
-            return FLINT_FAILED;
-        }
-    }
-    if (!_ops->FwSetGuids(_sgParams, &verifyCbFunc, &burnCbFs2Func)) {
-        reportErr(true, FLINT_SG_GUID_ERROR, _ops->err());
-        return FLINT_FAILED;
-    }
-    burnCbFs2Func(101);
-    return FLINT_SUCCESS;
-}
-
-FlintStatus SgSubCommand::sgFs3()
-{
-    if (!CheckSetGuidsFlags()){
-        return FLINT_FAILED;
-    }
-    if (_flintParams.guids_specified || _flintParams.macs_specified) {
-        reportErr(true, FLINT_NO_GUID_MAC_FLAGS_ERROR);
-        return FLINT_FAILED;
-    }
-
-    // TODO: create method that checks the flags for FS3/FS2
-    if (_info.fw_info.chip_type == CT_CONNECT_IB || _info.fw_info.chip_type == CT_SWITCH_IB || _info.fw_info.chip_type == CT_SWITCH_IB2) {
-        if (!_flintParams.uid_specified) {
-            reportErr(true, FLINT_NO_UID_FLAG_ERROR);
-            return FLINT_FAILED;
-        }
-            // for connectib we just need the base guid so we put it in the first location.
-            _sgParams.userGuids.resize(1);
-            _sgParams.userGuids[0]= _flintParams.baseUid;
-    } else {
-        if (!_flintParams.uid_specified && !_flintParams.guid_specified && !_flintParams.mac_specified) {
-            reportErr(true, FLINT_NO_GUID_MAC_FLAGS_ERROR);
-            return FLINT_FAILED;
-        }
-        if (_flintParams.uid_specified) {
-            _sgParams.userGuids.resize(1);
-            _sgParams.userGuids[0]= _flintParams.baseUid;
-        } else {
-            // guids and/or macs were specified
-            _sgParams.userGuids.resize(2);
-            _sgParams.userGuids[0]= _sgParams.guidsSpecified ? _flintParams.user_guids[0] : (guid_t){0, 0};
-            _sgParams.userGuids[1]= _sgParams.macsSpecified ? _flintParams.user_macs[0] : (guid_t){0, 0};
-        }
-    }
-
-    if (!_ops->FwSetGuids(_sgParams, &verifyCbFunc)) {
-        reportErr(true, FLINT_SG_UID_ERROR, _ops->err());
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-
-FlintStatus SgSubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    // query device
-    _ops = _flintParams.device_specified ? _fwOps : _imgOps;
-    bool stripedImage = _flintParams.striped_image && _flintParams.image_specified;
-    if (!_ops->FwQuery(&_info, true, stripedImage)) {
-        reportErr(true, FLINT_SG_GUID_ERROR, _ops->err());
-        return FLINT_FAILED;
-    }
-    setUserGuidsAndMacs();
-    if (_info.fw_type == FIT_FS2) {
-        return sgFs2();
-    }
-    return sgFs3();
-}
-
-/*****************************
- *Class: Set Manufacture GUIDs
- *****************************/
-SmgSubCommand:: SmgSubCommand()
-{
-    _name = "smg";
-    _desc = "Set manufacture GUIDs (For FS3 image only).";
-    _extendedDesc = "Set manufacture GUID, Set manufacture GUIDs in the given FS3 image.\n"
-                INDENTEX "Use -uid flag to set the desired GUIDs, intended for production use only.";
-    _flagLong = "smg";
-    _flagShort = "";
-    _param = "[guids_num=<num|num_port1,num_port2> step_size=<size|size_port1,size_port2>]";
-    _paramExp = "guids_num: (optional) number of GUIDs to be allocated per physical port\n"
-                INDENTEX "step_size: (optional) step size between GUIDs\n"
-                INDENTEX "Note: guids_num/step_size values can be specified per port or for both ports";
-    _example = FLINT_NAME " -i fw_image.bin -uid 0x0002c9000100d050 smg"
-#ifndef __WIN__
-               "\n" INDENTEX FLINT_NAME " -d " MST_DEV_EXAMPLE3 " -uid 0x0002c9000100d050 smg (should be used when device is idle)"
-#endif
-               "\n" INDENTEX FLINT_NAME " -d " MST_DEV_EXAMPLE4 " -guid 0x0002c9000100d050 -mac 0x0002c900d050 smg (should be used when device is idle)";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 2;
-    _cmdType = SC_Smg;
-    _ops = NULL;
-    memset(&_baseGuid, 0, sizeof(_baseGuid));
-    memset(&_info, 0, sizeof(_info));
-    memset(&(_baseGuid.num_of_guids_pp), 0xff, sizeof(_baseGuid.num_of_guids_pp));
-    memset(&(_baseGuid.step_size_pp), 0xff, sizeof(_baseGuid.step_size_pp));
-    _baseGuid.use_pp_attr = 1;
-}
-
-SmgSubCommand:: ~SmgSubCommand()
-{
-
-}
-
-bool SmgSubCommand::verifyParams()
-{
-    if (!_flintParams.uid_specified && !_flintParams.guid_specified && !_flintParams.mac_specified) {
-        reportErr(true, FLINT_COMMAND_FLAGS_ERROR, _name.c_str(), "\"-uid or -guid/-mac\" flags");
-        return false;
-    }
-    if (_flintParams.guids_specified) {
-        reportErr(true, FLINT_INVALID_OPTION_ERROR, "\"-guids\"", _name.c_str(), "\"-guid\"");
-        return false;
-    }
-    if (_flintParams.macs_specified) {
-        reportErr(true, FLINT_INVALID_OPTION_ERROR, "\"-macs\"", _name.c_str(), "\"-mac\"");
-        return false;
-    }
-    if (_flintParams.uid_specified && (_flintParams.guid_specified || _flintParams.mac_specified)) {
-        reportErr(true, FLINT_INVALID_FLAG_WITH_FLAG_ERROR, "\"-uid\"", "\"-guid\"/-mac\"");
-                return false;
-    }
-
-    if (_flintParams.cmd_params.size() != 0 && _flintParams.cmd_params.size() != 2) {
-        reportErr(true, FLINT_CMD_ARGS_ERROR4, _name.c_str(), 0, 2, _flintParams.cmd_params.size());
-        return false;
-    }
-
-    if (_flintParams.cmd_params.size() == 2 &&\
-        !extractUIDArgs(_flintParams.cmd_params, _baseGuid.num_of_guids_pp, _baseGuid.step_size_pp)) {
-        return false;
-    }
-
-    if (_flintParams.uid_specified) {
-        _baseGuid.set_mac_from_guid = true;
-    }
-
-    _baseGuid.base_guid_specified = _flintParams.uid_specified || _flintParams.guid_specified;
-    if (_baseGuid.base_guid_specified) {
-        _baseGuid.base_guid = _flintParams.uid_specified ? _flintParams.baseUid : _flintParams.user_guids[0];
-    }
-
-    _baseGuid.base_mac_specified = _flintParams.mac_specified;
-    if (_baseGuid.base_mac_specified) {
-        _baseGuid.base_mac = _flintParams.user_macs[0];
-    }
-    //printf("-D-"GUID_FORMAT"\n", _baseGuid.h, _baseGuid.l);
-    return true;
-}
-
-FlintStatus SmgSubCommand::executeCommand()
-{
-    if (preFwOps()) {
-        return FLINT_FAILED;
-    }
-    _ops = _flintParams.device_specified ? _fwOps : _imgOps;
-    //TODO: dispaly MFG guid changes
-     bool stripedImage = _flintParams.striped_image && _flintParams.image_specified;
-     if (!_ops->FwQuery(&_info, true, stripedImage)) {
-         reportErr(true, FLINT_MFG_ERROR, _ops->err());
-         return FLINT_FAILED;
-     }
-
-     if (_info.fw_info.chip_type == CT_CONNECT_IB || _info.fw_info.chip_type == CT_SWITCH_IB || _info.fw_info.chip_type == CT_SWITCH_IB2) {
-         if (!_flintParams.uid_specified) {
-         reportErr(true, "Can not set GUIDs/MACs: uid is not specified, please run with -uid flag.\n");
-         return FLINT_FAILED;
-         }
-     } else {
-         if (!_flintParams.uid_specified && !_flintParams.guid_specified && !_flintParams.mac_specified ) {
-             reportErr(true, "Can not set GUIDs/MACs: GUIDs/MACs are not specified, please run with -uid/-guid/-mac flags.\n");
-             return FLINT_FAILED;
-         }
-     }
-
-    bool ret;
-    ret = _ops->FwSetMFG(_baseGuid, &verifyCbFunc);
-    if (!ret) {
-        reportErr(true, FLINT_MFG_ERROR, _ops->err());
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-
-/***********************
- *Class: Set Vpd Subcommand
- **********************/
-SetVpdSubCommand:: SetVpdSubCommand()
-{
-    _name = "set vpd";
-    _desc = "Set read-only VPD (For FS3 image only).";
-    _extendedDesc = "Set Read-only VPD, Set VPD in the given FS3 image, intended for production use only.";
-    _flagLong = "set_vpd";
-    _flagShort = "";
-    _param = "[vpd file]";
-    _paramExp = "vpd file: bin file containing the vpd data";
-    _example = FLINT_NAME " -i fw_image.bin set_vpd vpd.bin"
-#ifndef __WIN__
-                       "\n" INDENTEX FLINT_NAME " -d " MST_DEV_EXAMPLE3 " -override_cache_replacement set_vpd vpd.bin (should be used when device is idle)"
-#endif
-                       ;
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 1;
-    _minCmdParamNum = 1;
-    _cmdType = SC_Set_Vpd;
-}
-
-SetVpdSubCommand:: ~SetVpdSubCommand()
-{
-
-}
-
-FlintStatus SetVpdSubCommand:: executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    FwOperations *ops = _flintParams.device_specified ? _fwOps : _imgOps;
-    if (!ops->FwSetVPD((char*)_flintParams.cmd_params[0].c_str(), &verifyCbFunc)) {
-        reportErr(true, FLINT_VPD_ERROR, ops->err());
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-
-/***********************
- *Class: Set VSD
- **********************/
-SvSubCommand:: SvSubCommand()
-{
-    _name = "sv";
-    _desc = "Set the VSD.";
-    _extendedDesc = "Set VSD in the given device/image.\n"
-                INDENTEX "Use -vsd flag to set the desired VSD string.";
-    _flagLong = "sv";
-    _flagShort = "";
-    _param = "";
-    _paramExp = "None";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " -vsd VSD_STRING sv"
-#ifndef __WIN__
-               "\n" INDENTEX FLINT_NAME " -d " MST_DEV_EXAMPLE3 " -vsd VSD_STRING -override_cache_replacement sv (should be used when device is idle)\n"
-#endif
-               ;
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 0;
-    _cmdType = SC_Sv;
-}
-
-SvSubCommand:: ~SvSubCommand()
-{
-
-}
-
-bool SvSubCommand::verifyParams()
-{
-    if (!_flintParams.vsd_specified) {
-        reportErr(true, FLINT_COMMAND_FLAGS_ERROR, _name.c_str(), "\"-vsd\"");
-        return false;
-    }
-    // we verify that -vsd has a parameter in the cmd parser
-
-    return true;
-}
-
-FlintStatus SvSubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    FwOperations* ops = _flintParams.device_specified ? _fwOps : _imgOps;
-    if (!ops->FwSetVSD((char*)_flintParams.vsd.c_str(), &vsdCbFunc, &verifyCbFunc)) {
-        reportErr(true, FLINT_VSD_ERROR, ops->err());
-        return FLINT_FAILED;
-    }
-
-    if (ops->FwType() == FIT_FS2) {
-        // print "restoring signature" on FS2 to be consistent with FS3 output
-        vsdCbFunc(101);
-    }
-    return FLINT_SUCCESS;
-}
-
-
-
-/*******************************
- *Class: Read Image SubCommand
- ******************************/
-RiSubCommand:: RiSubCommand()
-{
-    _name = "ri";
-    _desc = "Read the fw image on the flash.";
-    _extendedDesc = "Read the FW image from flash and write it to a file.";
-    _flagLong = "ri";
-    _flagShort = "";
-    _param = "<out-file>";
-    _paramExp = "file: filename to write the image to (raw binary).";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " ri file.bin";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 1;
-    _minCmdParamNum = 1;
-    _cmdType = SC_Ri;
-}
-
-RiSubCommand:: ~RiSubCommand()
-{
-
-}
-
-FlintStatus RiSubCommand::executeCommand() {
-    //init fw operation object
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    // Check if we have permission to write to file
-    FILE* fh;
-    if ((fh = fopen(_flintParams.cmd_params[0].c_str(), "wb")) == NULL) {
-        reportErr(true, "Can not open %s: %s\n", _flintParams.cmd_params[0].c_str(), strerror(errno));
-        return FLINT_FAILED;
-    } else {
-               fclose(fh);
-           }
-    u_int32_t imgSize;
-    //on first call we get the image size
-    if (!_fwOps->FwReadData(NULL, &imgSize)) {
-        reportErr(true, FLINT_IMAGE_READ_ERROR, _fwOps->err());
-        return FLINT_FAILED;
-    }
-    std::vector<u_int8_t> imgBuff(imgSize);
-    //on second call we fill it
-    if (!_fwOps->FwReadData((void*)(&imgBuff[0]),&imgSize)) {
-        reportErr(true, FLINT_IMAGE_READ_ERROR, _fwOps->err());
-        return FLINT_FAILED;
-    }
-    return writeImageToFile(_flintParams.cmd_params[0].c_str(), &(imgBuff[0]), imgSize );
-}
-
-FlintStatus RiSubCommand::writeImageToFile(const char *file_name, u_int8_t *data, u_int32_t length)
-{
-    FILE* fh;
-    if ((fh = fopen(file_name, "wb")) == NULL) {
-        reportErr(true, "Can not open %s: %s\n", file_name, strerror(errno));
-        return FLINT_FAILED;
-    }
-
-    // Write output
-    if (fwrite(data, 1, length, fh) != length) {
-        fclose(fh);
-        reportErr(true, "Failed to write to %s: %s\n", file_name, strerror(errno));
-        return FLINT_FAILED;
-    }
-    fclose(fh);
-    return FLINT_SUCCESS;
-}
-
-/***********************
- *Class: Dump Conf SubCommand
- **********************/
-DcSubCommand:: DcSubCommand() {
-    _name = "dc";
-    _desc = "Dump Configuration: print fw configuration file for the given image.";
-    _extendedDesc = "Print (to screen or to a file) the FW configuration text file used by the image generation process.\n"
-                INDENTEX "This command would fail if the image does not contain a FW configuration section. Existence of this\n"
-                INDENTEX "section depends on the version of the image generation tool.";
-    _flagLong = "dc";
-    _flagShort = "";
-    _param = "[out-file]";
-    _paramExp = "file: (optional) filename to write the dumped configuration to. If not given, the data\n"
-                INDENTEX "is printed to screen";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " dc";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 1;
-    _cmdType = SC_Dc;
-}
-
-DcSubCommand:: ~DcSubCommand() {
-
-}
-
-bool DcSubCommand::verifyParams() {
-    if (_flintParams.cmd_params.size() > 1) {
-        reportErr(true, FLINT_CMD_ARGS_ERROR2, _name.c_str(), 1, (int)_flintParams.cmd_params.size());
-        return false;
-    }
-    return true;
-}
-
-FlintStatus DcSubCommand::executeCommand() {
-    FwOperations* ops;
-    //init fw operation object
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    //check on what we are wroking
-    ops = (_flintParams.device_specified) ? _fwOps : _imgOps;
-    const char* file = _flintParams.cmd_params.size() == 1 ? _flintParams.cmd_params[0].c_str() : (const char*) NULL;
-    if (!ops->FwGetSection((ops->FwType() == FIT_FS2) ? (int)H_FW_CONF : (int)FS3_DBG_FW_INI, _sect, _flintParams.striped_image)) {
-        reportErr(true, FLINT_DUMP_ERROR, "Fw Configuration", ops->err());
-        return FLINT_FAILED;
-    }
-    if (!dumpFile(file, _sect, "Fw Configuration")) {
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-
-/***********************
- *Class:Dump Hash SubCommand
- **********************/
-DhSubCommand:: DhSubCommand()
-{
-    _name = "dh";
-    _desc = "Dump Hash: dump the hash if it is integrated in the FW image";
-    _extendedDesc = "Print (to screen or to a file) the HASH text file used by the FW.\n"
-                INDENTEX "This command would fail if the image does not contain a Hash file.";
-    _flagLong = "dh";
-    _flagShort = "";
-    _param = "[out-file]";
-    _paramExp = "file - (optional) filename to write the dumped tracer hash file to. If not given, the data\n"
-                INDENTEX "is printed to screen";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " dh hash.csv";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 1;
-    _cmdType = SC_Dh;
-}
-
-DhSubCommand:: ~DhSubCommand()
-{
-
-}
-
-bool DhSubCommand::verifyParams() {
-    if (_flintParams.cmd_params.size() > 1) {
-        reportErr(true, FLINT_CMD_ARGS_ERROR2, _name.c_str(), 1, (int)_flintParams.cmd_params.size());
-        return false;
-    }
-    return true;
-}
-
-FlintStatus DhSubCommand::executeCommand() {
-    FwOperations* ops;
-    //init fw operation object
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    //check on what we are wroking
-    ops = (_flintParams.device_specified) ? _fwOps : _imgOps;
-    const char* file = _flintParams.cmd_params.size() == 1 ? _flintParams.cmd_params[0].c_str() : (const char*) NULL;
-    if (!ops->FwGetSection(H_HASH_FILE, _sect,  _flintParams.striped_image)) {
-        reportErr(true, FLINT_DUMP_ERROR, "Hash file", ops->err());
-        return FLINT_FAILED;
-    }
-    if (!dumpFile(file, _sect, "Fw Configuration")) {
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-
-/***********************
- *Class:Set Key SubCommand
- **********************/
-SetKeySubCommand:: SetKeySubCommand()
-{
-    _name = "set_key";
-    _desc = "Set/Update the HW access key which is used to enable/disable access to HW.\n"
-            INDENT"The key can be provided in the command line or interactively typed after\n"
-            INDENT"the command is given\n"
-            INDENT"NOTE: The new key is activated only after the device is reset.";
-    _extendedDesc = "Set/Update the HW access key which is used to enable/disable access to HW.";
-    _flagLong = "set_key";
-    _flagShort = "";
-    _param = "[key]";
-    _paramExp = "key: (optional) The new key you intend to set (in hex).";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " set_key 1234deaf5678";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 1;
-    _cmdType = SC_Set_Key;
-    _getKeyInter = false;
-    memset(&_userKey, 0, sizeof(_userKey));
-}
-
-SetKeySubCommand:: ~SetKeySubCommand()
-{
-
-}
-
-bool SetKeySubCommand::verifyParams()
-{
-    if (_flintParams.cmd_params.size() > 1 ) {
-        reportErr(true, FLINT_CMD_ARGS_ERROR2, _name.c_str(), 1, (int)_flintParams.cmd_params.size());
-        return false;
-    }
-    _getKeyInter = (_flintParams.cmd_params.size() == 0);
-    return true;
-}
-
-bool SetKeySubCommand::getKeyInteractively()
-{
-    char keyArr[MAX_PASSWORD_LEN+1] = {0};
-    getPasswordFromUser("Enter Key ", keyArr );
-    if (strlen(keyArr) == 0) {
-        reportErr(true, FLINT_INVALID_PASSWORD);
-        return false;
-    }
-
-    if (!getGUIDFromStr(keyArr, _userKey,\
-                       "Invalid Key syntax, it should contain only hexa numbers and of appropriate length.")) {
-        return false;
-    }
-    // verify key
-    hw_key_t verKey;
-    getPasswordFromUser("Verify Key ", keyArr );
-    if (!getGUIDFromStr(keyArr, verKey,\
-                       "Invalid Key syntax, it should contain only hexa numbers and of appropriate length.")) {
-        return false;
-    }
-    if (_userKey.h != verKey.h || _userKey.l != verKey.l) {
-        reportErr(true, FLINT_SET_KEY_ERROR, "The keys you entered did not match.");
-        return false;
-    }
-    return true;
-}
-
-FlintStatus SetKeySubCommand::executeCommand ()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-
-    if (_getKeyInter) {
-        if (!getKeyInteractively()) {
-            return FLINT_FAILED;
-        }
-    } else {
-        if (!getGUIDFromStr(_flintParams.cmd_params[0], _userKey, \
-                "Invalid Key syntax, it should contain only hexa numbers and of appropriate length.")) {
-            return FLINT_FAILED;
-        }
-    }
-    if (!_fwOps->FwSetAccessKey(_userKey, &setKeyCbFunc)) {
-        reportErr(true, FLINT_SET_KEY_ERROR, _fwOps->err());
-        return FLINT_FAILED;
-    }
-    setKeyCbFunc(101);
-    printf("\n-I- New key was updated successfully in the flash. "\
-            "In order to activate the new key you should reboot or restart the driver.\n");
-
-    return FLINT_SUCCESS;
-}
-
-/***********************
- *Class:HwAccess SubCommand
- **********************/
-HwAccessSubCommand:: HwAccessSubCommand()
-{
-    _name = "hw_access";
-    _desc = "Enable/disable the access to the HW.\n"
-            INDENT"The key can be provided in the command line or interactively typed after\n"
-            INDENT"the command is given";
-    _extendedDesc = "Enable/disable the access to the HW.";
-    _flagLong = "hw_access";
-    _flagShort = "";
-    _param = "<enable|disable> [key]";
-    _paramExp = "<enable/disable>: Specify if you intend to disable or enable the HW access.\n"
-                INDENTEX "                   You will be asked to type a key when you try to enable HW access.\n"
-                INDENTEX "key:               (optional) The key you intend to use for enabling the HW access.\n"
-                       INDENTEX "                   Key format consists of at most 16 Hexadecimal digits.";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " hw_access enable";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 2;
-    _cmdType = SC_Hw_Access;
-}
-
-HwAccessSubCommand:: ~HwAccessSubCommand()
-{
-
-}
-
-bool HwAccessSubCommand::verifyParams()
-{
-    if (_flintParams.cmd_params.size() == 0) {
-        reportErr(true, FLINT_MISSED_ARG_ERROR,"<disable/enable>",_name.c_str());
-        return false;
-    }
-    if (_flintParams.cmd_params.size() > 2) {
-        reportErr(true, FLINT_CMD_ARGS_ERROR2, _name.c_str(), 2, (int)_flintParams.cmd_params.size());
-        return false;
-    }
-    if( _flintParams.cmd_params[0] != "enable" && _flintParams.cmd_params[0] != "disable") {
-        reportErr(true, FLINT_INVALID_OPTION_ERROR, _flintParams.cmd_params[0].c_str(), _name.c_str(), "enable or disable");
-        return false;
-    }
-    return true;
-}
-
-FlintStatus HwAccessSubCommand:: disableHwAccess()
-{
-    if (((Flash*)_io)->get_cr_space_locked()) {
-        printf("-I- HW access already disabled\n");
-    } else {
-        if (!((Flash*)_io)->disable_hw_access()) {
-            printf(FLINT_GEN_COMMAND_ERROR, _name.c_str(), _io->err());
-            return FLINT_FAILED;
-        }
-    }
-    return FLINT_SUCCESS;
-}
-FlintStatus HwAccessSubCommand:: enableHwAccess()
-{
-    u_int64_t key;
-    if (((Flash*)_io)->get_cr_space_locked() == 0) {
-        printf("-I- HW access already enabled\n");
-    } else {
-        hw_key_t keyStruct;
-        //now we need to get the key from the user (either given in the parameters or we get it during runtime)
-        if (_flintParams.cmd_params.size() == 2) {
-             if (!getGUIDFromStr(_flintParams.cmd_params[1], keyStruct,\
-                     "Invalid Key syntax, it should contain only hexa numbers and of appropriate length.")) {
-                 return FLINT_FAILED;
-             }
-        } else {//we need to get the key from user during runtime
-            char keyArr[MAX_PASSWORD_LEN+1];
-            getPasswordFromUser("Enter Key ", keyArr );
-            if (!getGUIDFromStr(keyArr, keyStruct,\
-                    "Invalid Key syntax, it should contain only hexa numbers and of appropriate length.")) {
-                return FLINT_FAILED;
-            }
-        }
-        key = ((u_int64_t)keyStruct.h << 32) | keyStruct.l;
-        if (!((Flash*)_io)->enable_hw_access(key)) {
-            reportErr(true, FLINT_GEN_COMMAND_ERROR, _name.c_str(), _io->err());
-            return FLINT_FAILED;
-        }
-    }
-    return FLINT_SUCCESS;
-}
-
-FlintStatus HwAccessSubCommand:: executeCommand()
-{
-    if (preFwAccess() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    if (_flintParams.cmd_params[0] == "disable") {
-        return disableHwAccess();
-    }
-    //else its enable hw access
-    return enableHwAccess();
-}
-
-/***********************
- *Class: Hw SubCommand
- **********************/
-HwSubCommand:: HwSubCommand()
-{
-#ifndef EXTERNAL
-    _name = "hw";
-    _desc = "Set/query HW info and flash attributes.";
-    _extendedDesc = "Access HW info and flash attributes.";
-    _flagLong = "hw";
-    _flagShort = "";
-    _param = "<query|set> [ATTR=VAL]";
-    _paramExp = "query: query HW info\n"
-       INDENTEX "set [ATTR=VAL]: set flash attribure\n"
-       INDENTEX "Supported attributes:\n"
-       INDENTEX "    QuadEn: can be 0 or 1\n"
-       INDENTEX "    DummyCycles: can be [1..15]\n"
-       INDENTEX "    Flash[0|1|2|3].WriteProtected can be:\n"
-       INDENTEX "        <Top|Bottom>,<1|2|4|8|16|32|64>-<Sectors|SubSectors>";
-    _example = "flint -d " MST_DEV_EXAMPLE1 " hw query\n"
-            INDENTEX FLINT_NAME " -d " MST_DEV_EXAMPLE1 " hw set QuadEn=1\n"
-            INDENTEX FLINT_NAME " -d " MST_DEV_EXAMPLE1 " hw set Flash1.WriteProtected=Top,1-SubSectors";
-#else
-    _name = "Hw";
-    _desc = "Query HW info and flash attributes.";
-    _extendedDesc = "Query HW info and flash attributes.";
-    _flagLong = "hw";
-    _flagShort = "";
-    _param = "query";
-    _paramExp = "query";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " hw query";
-#endif
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 2;
-    _minCmdParamNum = 1;
-    _cmdType = SC_Hw;
-}
-
-HwSubCommand:: ~HwSubCommand()
-{
-
-}
-
-bool HwSubCommand::verifyParams() {
-#ifdef EXTERNAL
-     if (_flintParams.cmd_params.size() != 1) {
-         reportErr(true, FLINT_CMD_ARGS_ERROR2, _name.c_str(), 1, (int)_flintParams.cmd_params.size());
-         return false;
-     }
-
-     if (_flintParams.cmd_params[0] != "query"){
-         reportErr(true, FLINT_INVALID_OPTION_ERROR, _flintParams.cmd_params[0].c_str(), _name.c_str(), "query");
-         return false;
-     }
-#else
-     if (_flintParams.cmd_params.size() > 2 || _flintParams.cmd_params.size() == 0) {
-              reportErr(true, FLINT_CMD_ARGS_ERROR2, _name.c_str(), 2, (int)_flintParams.cmd_params.size());
-              return false;
-          }
-     if ((_flintParams.cmd_params[0] != "query") && (_flintParams.cmd_params[0] != "set")) {
-         reportErr(true, FLINT_INVALID_OPTION_ERROR, _flintParams.cmd_params[0].c_str(), _name.c_str(), "query or set");
-         return false;
-     }
-     if ((_flintParams.cmd_params[0] == "set") && (_flintParams.cmd_params.size() != 2)) {
-         reportErr(true, FLINT_CMD_ARGS_ERROR, _name.c_str(),2 , (int)_flintParams.cmd_params.size());
-         return false;
-     }
-#endif
-
-     return true;
-}
-
-FlintStatus HwSubCommand::printAttr(const ext_flash_attr_t& attr) {
-    printf("HW Info:\n");
-    printf("  HwDevId               %d\n",     attr.hw_dev_id);
-    printf("  HwRevId               0x%x\n",   attr.rev_id);
-
-    printf("Flash Info:\n");
-    if (attr.type_str != NULL) {
-        // we don't print the flash type in old devices
-        printf("  Type                  %s\n",     attr.type_str);
-    }
-    printf("  TotalSize             0x%x\n",   attr.size);
-    printf("  Banks                 0x%x\n",   attr.banks_num);
-    printf("  SectorSize            0x%x\n",   attr.sector_size );
-    printf("  WriteBlockSize        0x%x\n",   attr.block_write);
-    printf("  CmdSet                0x%x\n",   attr.command_set);
-
-    // Quad EN query
-    if (attr.quad_en_support) {
-        switch (attr.mf_get_quad_en_rc) {
-            case MFE_OK:
-                printf("  " QUAD_EN_PARAM "                %d\n", attr.quad_en);
-                break;
-            case MFE_MISMATCH_PARAM:
-                printf("-E- There is a mismatch in the " QUAD_EN_PARAM " attribute between the flashes attached to the device\n");
-                break;
-            case MFE_NOT_SUPPORTED_OPERATION:
-                break;
-            default:
-                printf("Failed to get " QUAD_EN_PARAM " attribute: %s (%s)",\
-                        errno == 0 ? "" : strerror(errno), mf_err2str(attr.mf_get_quad_en_rc));
-                return FLINT_FAILED;
-        }
-    }
-    // Dummy Cycles query
-    if (attr.dummy_cycles_support) {
-        switch (attr.mf_get_dummy_cycles_rc) {
-            case MFE_OK:
-                printf("  " DUMMY_CYCLES_PARAM "           %d\n", attr.dummy_cycles);
-                break;
-            case MFE_MISMATCH_PARAM:
-                printf("-E- There is a mismatch in the " DUMMY_CYCLES_PARAM " attribute between the flashes attached to the device\n");
-                break;
-            case MFE_NOT_SUPPORTED_OPERATION:
-                break;
-            default:
-                printf("Failed to get " DUMMY_CYCLES_PARAM " attribute: %s (%s)",\
-                        errno == 0 ? "" : strerror(errno), mf_err2str(attr.mf_get_dummy_cycles_rc));
-                return FLINT_FAILED;
-        }
-    }
-    // Flash write protected info query
-    if (attr.write_protect_support) {
-        int bank;
-        int rc;
-        for (bank = 0; bank < attr.banks_num; bank++) {
-            write_protect_info_t protect_info = attr.protect_info_array[bank];
-            rc = attr.mf_get_write_protect_rc_array[bank];
-            if (rc == MFE_OK) {
-                printf("  " FLASH_NAME "%d." WRITE_PROTECT "   ", bank);
-                if (protect_info.sectors_num != 0) {
-                    printf("%s,", (protect_info.is_bottom ? WP_BOTTOM_STR : WP_TOP_STR));
-                    printf("%d-", protect_info.sectors_num);
-                    printf("%s\n", (protect_info.is_subsector ? WP_SUBSEC_STR : WP_SEC_STR));
-                } else {
-                    printf(WP_DISABLED_STR"\n");
-                }
-            } else {
-                if (rc != MFE_NOT_SUPPORTED_OPERATION) { // We ignore the read when operation is not supported!
-                    printf("Failed to get write_protected info: %s (%s)", errno == 0 ? "" : strerror(errno), mf_err2str(rc));
-                    return FLINT_FAILED;
-                }
-            }
-       }
-    }
-    return FLINT_SUCCESS;
-}
-
-FlintStatus HwSubCommand::executeCommand()
-{
-    //init fw operation object
-    if (preFwAccess() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    if (_flintParams.cmd_params[0] == "set") {
-        char* cmdParam = strcpy(new char[_flintParams.cmd_params[1].size() + 1],
-                _flintParams.cmd_params[1].c_str());
-        char *paramName, *paramValStr;
-        paramName = strtok(cmdParam, "=");
-        paramValStr = strtok(NULL, "=");
-        //printf("-D- param_name = %s, param_val_str=%s, cmdParam=%s\n", paramName, paramValStr, cmdParam);
-        if (paramName == NULL || paramValStr == NULL) {
-            delete[] cmdParam;
-            reportErr(true, FLINT_HW_SET_ARGS_ERROR, _flintParams.cmd_params[1].c_str());
-            return FLINT_FAILED;
-        }
-        if (!((Flash*) _io)->set_attr(paramName, paramValStr)) {
-            delete[] cmdParam;
-            reportErr(true, FLINT_HW_COMMAND_ERROR, "set", _io->err());
-            return FLINT_FAILED;
-        }
-        printf("-I- %s parameter was set successfully\n", paramName);
-        delete[] cmdParam;
-    } else {
-        ext_flash_attr_t attr;
-        attr.type_str = (char*)NULL;
-        if (!((Flash*) _io)->get_attr(attr)) {
-            reportErr(true, FLINT_HW_COMMAND_ERROR, "query", _io->err());
-            if (attr.type_str) {
-                delete[] attr.type_str;
-            }
-            return FLINT_FAILED;
-        }
-        FlintStatus rc = printAttr(attr);
-        //str is allocated in get_attr
-        if (attr.type_str) {
-            delete[] attr.type_str;
-        }
-        if (rc == FLINT_FAILED) {
-            return FLINT_FAILED;
-        }
-
-    }
-    return FLINT_SUCCESS;
-}
-
-/**************************
- *Class: Erase SubCommand
- *************************/
-EraseSubCommand:: EraseSubCommand()
-{
-    _name = "erase";
-    _desc = "Erases sector.";
-    _extendedDesc = "Erases a sector that contains specified address.";
-    _flagLong = "erase";
-    _flagShort = "e";
-    _param = "<addr>";
-    _paramExp = "addr - address of word in sector that you want to erase.";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " erase 0x10000";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 1;
-    _minCmdParamNum = 1;
-    _cmdType = SC_Erase;
-}
-
-EraseSubCommand:: ~EraseSubCommand()
-{
-
-}
-
-FlintStatus EraseSubCommand::executeCommand() {
-    if (preFwAccess() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    u_int32_t   addr;
-    char *addrStr = strcpy(new char[_flintParams.cmd_params[0].size() + 1], _flintParams.cmd_params[0].c_str());
-    char    *endp;
-    // Address of sector to erase
-    addr = strtoul(addrStr, &endp, 0);
-    if (*endp) {
-        reportErr(true, FLINT_INVALID_ADDR_ERROR, _flintParams.cmd_params[0].c_str());
-        delete[] addrStr;
-        return FLINT_FAILED;
-    }
-    delete[] addrStr;
-    // Erase
-    if (!((Flash*)_io)->erase_sector(addr)) {
-        reportErr(true, FLINT_ERASE_SEC_ERROR, _io->err());
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-
-/*****************************
- *Class: Read Dword SubCommand
- *****************************/
-RwSubCommand:: RwSubCommand() {
-    _name = "rw";
-    _desc = "Read one dword from flash";
-    _extendedDesc = "Read one dword from flash.";
-    _flagLong = "rw";
-    _flagShort = "";
-    _param = "<addr>";
-    _paramExp = "addr - address of word to read";
-    _example = "flint -d " MST_DEV_EXAMPLE1 " rw 0x20";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 1;
-    _minCmdParamNum = 1;
-    _cmdType = SC_Rw;
-}
-
-RwSubCommand:: ~RwSubCommand() {
-
-}
-
-FlintStatus RwSubCommand::executeCommand() {
-    if (preFwAccess() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    u_int32_t addr;
-    u_int32_t data;
-    char *addrStr = strcpy(new char[_flintParams.cmd_params[0].size() + 1], _flintParams.cmd_params[0].c_str());
-    char *endp;
-    addr = strtoul(addrStr, &endp, 0);
-    if (*endp) {
-        reportErr(true, FLINT_INVALID_ADDR_ERROR, _flintParams.cmd_params[0].c_str());
-        delete[] addrStr;
-        return FLINT_FAILED;
-    }
-    delete[] addrStr;
-    if (_flintParams.device_specified ? !((Flash*)_io)->read(addr, &data)\
-            : !((FImage*)_io)->read(addr, &data)) {
-        reportErr(true, FLINT_FLASH_READ_ERROR, _io->err());
-        return FLINT_FAILED;
-        }
-    printf("0x%08x\n", (unsigned int)__cpu_to_be32(data));
-    return FLINT_SUCCESS;
-}
-
-/******************************
- *Class: Write Dword Subcommand
- ******************************/
-WwSubCommand:: WwSubCommand()
-{
-    _name = "ww";
-    _desc = "Write one dword to flash";
-    _extendedDesc = "Write one dword to flash.\n"
-                INDENTEX "Note that the utility will read an entire flash sector,\n"
-                INDENTEX "modify one word and write the sector back. This may take\n"
-                INDENTEX "a few seconds.";
-    _flagLong = "ww";
-    _flagShort = "";
-    _param = "<addr> <data>";
-    _paramExp = "addr - address of word\n"
-                INDENTEX "data - value of word";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " ww 0x10008 0x5a445a44";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 2;
-    _minCmdParamNum = 2;
-    _cmdType = SC_Ww;
-}
-
-WwSubCommand:: ~WwSubCommand()
-{
-
-}
-
-FlintStatus WwSubCommand::executeCommand() {
-    //init fw operation object
-    if (preFwAccess() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    u_int32_t addr;
-    u_int32_t data;
-    char *addrStr = strcpy(new char[_flintParams.cmd_params[0].size() + 1], _flintParams.cmd_params[0].c_str());
-    char *dataStr = strcpy(new char[_flintParams.cmd_params[1].size() + 1], _flintParams.cmd_params[1].c_str());
-    char *endp;
-    addr = strtoul(addrStr, &endp, 0);
-    if (*endp) {
-        reportErr(true, FLINT_INVALID_ADDR_ERROR, _flintParams.cmd_params[0].c_str());
-        delete[] addrStr;
-        delete[] dataStr;
-        return FLINT_FAILED;
-    }
-    data =strtoul(dataStr, &endp, 0);
-    if (*endp) {
-        reportErr(true, FLINT_INVALID_DATA_ERROR, _flintParams.cmd_params[1].c_str());
-        delete[] addrStr;
-        delete[] dataStr;
-        return FLINT_FAILED;
-    }
-    delete[] addrStr;
-    delete[] dataStr;
-    data = __cpu_to_be32(data);
-    if (!((Flash*)_io)->write(addr, data)) {
-        reportErr(true, FLINT_FLASH_WRITE_ERROR, _io->err());
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-/***************************************
- *Class: Write Dword No Erase SubCommand
- ***************************************/
-WwneSubCommand:: WwneSubCommand()
-{
-    _name = "wwne";
-    _desc = "Write one dword to flash without sector erase";
-    _extendedDesc = "Write one dword to flash without sector erase.\n"
-                INDENTEX "Note that the result of operation is undefined and depends\n"
-                INDENTEX "on flash type. Usually \"bitwise AND\" (&) between specified\n"
-                INDENTEX "word and previous flash contents will be written to\n"
-                INDENTEX "specified address.";
-    _flagLong = "wwne";
-    _flagShort = "";
-    _param = "<addr> <data>";
-    _paramExp = "addr - address of word\n"
-                INDENTEX "data - value of word";
-    _example = "flint -d " MST_DEV_EXAMPLE1 " wwne 0x10008 0x5a445a44";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 2;
-    _minCmdParamNum = 2;
-    _cmdType = SC_Wwne;
-}
-
-WwneSubCommand:: ~WwneSubCommand()
-{
-
-}
-
-FlintStatus WwneSubCommand::executeCommand() {
-    //init fw operation object
-    if (preFwAccess() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    u_int32_t addr;
-    u_int32_t data;
-    char *addrStr = strcpy(new char[_flintParams.cmd_params[0].size() + 1], _flintParams.cmd_params[0].c_str());
-    char *dataStr = strcpy(new char[_flintParams.cmd_params[1].size() + 1], _flintParams.cmd_params[1].c_str());
-    char *endp;
-    addr = strtoul(addrStr, &endp, 0);
-    if (*endp) {
-        reportErr(true, FLINT_INVALID_ADDR_ERROR, _flintParams.cmd_params[0].c_str());
-        delete[] addrStr;
-        delete[] dataStr;
-        return FLINT_FAILED;
-    }
-    data =strtoul(dataStr, &endp, 0);
-    if (*endp) {
-        reportErr(true, FLINT_INVALID_DATA_ERROR, _flintParams.cmd_params[1].c_str());
-        delete[] addrStr;
-        delete[] dataStr;
-        return FLINT_FAILED;
-    }
-    delete[] addrStr;
-    delete[] dataStr;
-    data = __cpu_to_be32(data);
-    if (!((Flash*)_io)->write(addr, &data, 4, true)) {
-        reportErr(true, FLINT_FLASH_WRITE_ERROR, _io->err());
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-
-/**************************************
- *Class:Write Block  SubCommand
- **************************************/
-WbSubCommand:: WbSubCommand() {
-    _name = "wb";
-    _desc = "Write a data block to flash.";
-    _extendedDesc = "Write a block of data to the flash.";
-    _flagLong = "wb";
-    _flagShort = "";
-    _param = "<data-file> <addr>";
-    _paramExp = "data-file - file that contains the data to be written\n"
-                INDENTEX "addr - address to write the block to\n";
-
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " wb myData.bin 0x0";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 2;
-    _minCmdParamNum = 2;
-    _cmdType = SC_Wb;
-}
-
-WbSubCommand:: ~WbSubCommand() {
-
-}
-
-bool WbSubCommand::extractData(const std::vector<string>& cmdParams , u_int32_t* addr, std::vector<u_int8_t>& data) {
-    // get address
-    char *endp;
-    char* addrStr = strcpy(new char[cmdParams[1].size() + 1],cmdParams[1].c_str());
-    *addr = strtoul(addrStr, &endp, 0);
-    if (*endp) {
-        reportErr(true, FLINT_INVALID_ADDR_ERROR, cmdParams[1].c_str());
-        delete[] addrStr;
-        return false;
-    }
-    delete[] addrStr;
-    // get data
-    FImage img;
-    if (!img.open(cmdParams[0].c_str())) {
-        reportErr(true, FLINT_WB_FILE_ERROR, cmdParams[0].c_str(), img.err());
-        return false;
-    }
-    //copy data to vector
-    data.resize(img.getBufLength());
-    memcpy(&data[0], img.getBuf(), img.getBufLength());
-
-    return true;
-}
-
-FlintStatus WbSubCommand::executeCommand() {
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    u_int32_t addr;
-    std::vector<u_int8_t> data;
-    if (!extractData(_flintParams.cmd_params, &addr, data)) {
-        return FLINT_FAILED;
-    }
-    //printf("-D- writing to addr:0x%08x %lu bytes\n",addr , data.size());
-    if (!_fwOps->FwWriteBlock(addr, data, wbCbFunc)) {
-        reportErr(true, FLINT_WB_ERROR, _fwOps->err());
-        return FLINT_FAILED;
-    }
-    wbCbFunc(101);
-    return FLINT_SUCCESS;
-}
-
-/**************************************
- *Class:Write Block No Erase SubCommand
- **************************************/
-WbneSubCommand:: WbneSubCommand() {
-    _name = "wbne";
-    _desc = "Write a data block to flash without sector erase.";
-    _extendedDesc = "Write a block of data to the flash without erasing.";
-    _flagLong = "wbne";
-    _flagShort = "";
-    _param = "<addr> <size> <data ...>";
-    _paramExp = "addr - address of block\n"
-                INDENTEX "size - size of data to write in bytes\n"
-                INDENTEX "data - data to write - space separated dwords";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " wbne 0x10000 12 0x30000 0x76800 0x5a445a44";
-    _v = Wtv_Dev;
-    _minCmdParamNum = 3;
-    _cmdType = SC_Wbne;
-}
-
-WbneSubCommand:: ~WbneSubCommand() {
-
-}
-
-bool WbneSubCommand::writeBlock(u_int32_t addr, std::vector<u_int32_t> dataVec) {
-    //we should work only on flash.
-    //check if flash is big enough
-    if (addr + (dataVec.size()*4) > ((Flash*)_io)->get_size()) {
-       reportErr(true, "Writing %#x bytes from address %#x is out of flash limits (%#x bytes)\n",
-                            (unsigned int)(dataVec.size()*4), (unsigned int)addr, (unsigned int)_io->get_size());
-       return false;
-    }
-    if (!((Flash*)_io)->write(addr, &dataVec[0], (dataVec.size()*4), true)) {
-        reportErr(true, FLINT_FLASH_WRITE_ERROR,_io->err());
-        return false;
-    }
-    return true;
-}
-
-bool WbneSubCommand::extractData(const std::vector<string>& cmdParams , u_int32_t* addr, std::vector<u_int32_t>& data) {
-    char *endp;
-    char* addrStr = strcpy(new char[cmdParams[0].size() + 1],cmdParams[0].c_str());
-    *addr = strtoul(addrStr, &endp, 0);
-    if (*endp) {
-        reportErr(true, FLINT_INVALID_ADDR_ERROR, cmdParams[0].c_str());
-        delete[] addrStr;
-        return false;
-    }
-    delete[] addrStr;
-    char* sizeStr = strcpy(new char[cmdParams[1].size() + 1],cmdParams[1].c_str());
-    u_int32_t size = strtoul(sizeStr, &endp, 0);
-    if (*endp || size % 4 || size/4 != (cmdParams.size()-2)) {
-                    reportErr(true, FLINT_INVALID_SIZE_ERROR, sizeStr);
-                    delete[] sizeStr;
-                    return false;
-                }
-    delete[] sizeStr;
-    for (u_int32_t i = 2; i < cmdParams.size(); i++) {
-        char* dataStr = strcpy(new char[cmdParams[i].size() + 1],cmdParams[i].c_str());
-        data.push_back(__cpu_to_be32(strtoul(dataStr, &endp, 0)));
-        if (*endp) {
-            reportErr(true, FLINT_INVALID_DATA_ERROR, dataStr);
-            delete[] dataStr;
-            return false;
-        }
-        delete[] dataStr;
-    }
-    return true;
-}
-
-FlintStatus WbneSubCommand::executeCommand() {
-    if (preFwAccess() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    u_int32_t addr;
-    std::vector<u_int32_t> data;
-    if (!extractData(_flintParams.cmd_params, &addr, data)) {
-        return FLINT_FAILED;
-    }
-    //printf("-D- writing to addr:0x%08x %lu bytes\n",addr , data.size()*4);
-    if (!writeBlock(addr, data)) {
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-
-/***********************
- *Class: ReadBlock
- **********************/
-RbSubCommand:: RbSubCommand()
-{
-    _name = "rb";
-    _desc = "Read  a data block from flash";
-    _extendedDesc = "Read a data block from the flash and write it to a file or to screen.";
-    _flagLong = "rb";
-    _flagShort = "";
-    _param = "<addr> <size> [out-file]";
-    _paramExp = "addr - address of block\n"
-                INDENTEX "size - size of data to read in bytes\n"
-                INDENTEX "file - filename to write the block (raw binary). If not given, the data\n"
-                INDENTEX "is printed to screen";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " rb 0x10000 100 file.bin";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 3;
-    _minCmdParamNum = 2;
-    _cmdType = SC_Rb;
-}
-
-RbSubCommand:: ~RbSubCommand()
-{
-
-}
-
-bool RbSubCommand::readBlock(u_int32_t addr, std::vector<u_int8_t>& buff, bool isFlash) {
-    //check if flash is big enough
-    if (addr + buff.size() > _io->get_size()) {
-        reportErr(true, "Reading %#x bytes from address %#x is out of flash limits (%#x bytes)\n",
-                            (unsigned int)(buff.size()), (unsigned int)addr, (unsigned int)_io->get_size());
-        return false;
-    }
-    //read from flash/image
-    if (isFlash ? !((Flash*)_io)->read(addr, &buff[0], buff.size()) :\
-            !((FImage*)_io)->read(addr, &buff[0], buff.size())) {
-        reportErr(true, FLINT_IMAGE_READ_ERROR, _io->err());
-        return false;
-    }
-    return true;
-}
-
-bool RbSubCommand::printToScreen(const std::vector<u_int8_t>& buff) {
-    for (u_int32_t i=0; i < buff.size(); i+=4) {
-        u_int32_t word = *((u_int32_t*)(&buff[0] + i));
-        word  = __be32_to_cpu(word);
-        printf("0x%08x ", word);
-    }
-    printf("\n");
-    return true;
-}
-
-FlintStatus RbSubCommand::executeCommand() {
-       //init fw operation object
-    if (preFwAccess() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    bool wTF = _flintParams.cmd_params.size() == 3 ? true : false;
-    //extract address and size to read from cmdline
-    u_int32_t addr;
-    u_int32_t size;
-    char *endp;
-    char* addrStr = strcpy(new char[_flintParams.cmd_params[0].size() + 1],_flintParams.cmd_params[0].c_str());
-    addr = strtoul(addrStr, &endp, 0);
-    if (*endp) {
-        reportErr(true, FLINT_INVALID_ADDR_ERROR, _flintParams.cmd_params[0].c_str());
-        delete[] addrStr;
-        return FLINT_FAILED;
-    }
-    delete[] addrStr;
-    char* sizeStr = strcpy(new char[_flintParams.cmd_params[1].size() + 1],_flintParams.cmd_params[1].c_str());
-    size = strtoul(sizeStr, &endp, 0);
-    if (*endp || size % 4) {
-        reportErr(true, FLINT_INVALID_SIZE_ERROR, sizeStr);
-        delete[] sizeStr;
-        return FLINT_FAILED;
-    }
-    delete[] sizeStr;
-    //init byte vector and fill it with data
-    std::vector<u_int8_t> data(size);
-    if (!readBlock(addr, data, _flintParams.device_specified)) {
-        return FLINT_FAILED;
-    }
-    //print either to file or to screen
-    FlintStatus rc;
-    if (wTF) {
-        rc = writeToFile(_flintParams.cmd_params[2], data) == true ? FLINT_SUCCESS : FLINT_FAILED ;
-    } else {
-        rc = printToScreen(data) == true ? FLINT_SUCCESS : FLINT_FAILED ;
-    }
-    return rc;
-}
-
-/***********************
- *Class: ClearSemaphore
- **********************/
-ClearSemSubCommand:: ClearSemSubCommand()
-{
-    _name = "clear_semaphore";
-    _desc = "Clear flash semaphore.";
-    _extendedDesc = "Clear flash semaphore.";
-    _flagLong = "clear_semaphore";
-    _flagShort = "";
-    _param = "";
-    _paramExp = "";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " -clear_semaphore";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 0;
-    _cmdType = SC_Clear_Sem;
-}
-
-ClearSemSubCommand:: ~ClearSemSubCommand()
-{
-
-}
-
-FlintStatus ClearSemSubCommand::executeCommand()
-{
-    _flintParams.clear_semaphore = true;
-    return preFwAccess();
-}
-
-
-/***********************
- *Class: RomQuery
- **********************/
-RomQuerySubCommand:: RomQuerySubCommand()
-{
-    _name = "qrom";
-    _desc = "query ROM image.";
-    _extendedDesc = "query ROM image.";
-    _flagLong = "qrom";
-    _flagShort = "";
-    _param = "";
-    _paramExp = "";
-    _example = FLINT_NAME " -i ROM_image.bin qrom ";
-    _v = Wtv_Img;
-    _maxCmdParamNum = 0;
-    _cmdType = SC_Qrom;
-    memset(&_romsInfo, 0, sizeof(_romsInfo));
-}
-
-RomQuerySubCommand:: ~RomQuerySubCommand()
-{
-
-}
-
-
-FlintStatus RomQuerySubCommand::executeCommand()
-{
-    if (preFwAccess() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-
-    getRomsInfo(_io, _romsInfo);
-    if (_romsInfo.exp_rom_err_msg_valid != 0){
-        reportErr(true, FLINT_ROM_QUERY_ERROR, _flintParams.image.c_str(), _romsInfo.exp_rom_err_msg);
-        return FLINT_FAILED;
-    }
-    displayExpRomInfo(_romsInfo , "Rom Info: ");
-    return FLINT_SUCCESS;
-
-}
-
-/***********************
- *Class: ResetCfg
- **********************/
-ResetCfgSubCommand:: ResetCfgSubCommand()
-{
-    _name = "reset_cfg";
-    _desc = "reset non-volatile configuration.";
-    _extendedDesc = "reset non-volatile configuration to their default value.";
-    _flagLong = "reset_cfg";
-    _flagShort = "r";
-    _param = "";
-    _paramExp = "";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " reset_cfg";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 0;
-    _cmdType = SC_ResetCfg;
-}
-
-ResetCfgSubCommand:: ~ResetCfgSubCommand()
-{
-
-}
-
-
-FlintStatus ResetCfgSubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    printf("-W- Resetting device configuration using Flint should be done as a last resort.\n");
-    printf("-W- Please attempt to reset configuration via mlxconfig tool if possible.\n");
-    printf("-W- Only proceed if you know what you are doing.\n");
-    if (!askUser("reset non-volatile configuration")) {
-       return FLINT_FAILED;
-    }
-
-    printf("Resetting...");
-    if (!_fwOps->FwResetNvData()){
-       printf(" Failed!\n");
-        reportErr(true, FLINT_RESET_CFG_ERROR, _fwOps->err());
-        return FLINT_FAILED;
-    }
-    printf(" SUCCESS!\n");
-    printf("\n-I- Configuration were successfully reset. reboot or restart the driver is required.\n");
-
-    return FLINT_SUCCESS;
-
-}
-
-/***********************
- *Class: FixImage
- **********************/
-FiSubCommand:: FiSubCommand()
-{
-    _name = "fix image";
-    _desc = "fix image on N25Q0XX flash.";
-    _extendedDesc = "fix image on N25Q0XX flash.(shifting all device data sectors)";
-    _flagLong = "fi";
-    _flagShort = "";
-    _param = "";
-    _paramExp = "";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " fi";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 0;
-    _cmdType = SC_Fix_Img;
-}
-
-FiSubCommand:: ~FiSubCommand()
-{
-
-}
-
-
-FlintStatus FiSubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-
-    if (!askUser("Fix device fw?")) {
-       return FLINT_FAILED;
-    }
-
-    if (!_fwOps->FwShiftDevData(&verifyCbFunc)){
-        reportErr(true, FLINT_FIX_IMG_ERROR, _fwOps->err());
-        return FLINT_FAILED;
-    }
-    printf("\n-I- Fw was successfully fixed. reboot or restart the driver is required.\n");
-    return FLINT_SUCCESS;
-
-}
-
-/***********************
- *Class: CheckSum
- **********************/
-CheckSumSubCommand:: CheckSumSubCommand()
-{
-    _name = "checksum";
-    _desc = "perform MD5 checksum on FW.";
-    _extendedDesc = "perform an MD5 checksum on relevant(non-persistent between FW upgrades) data on device/image.";
-    _flagLong = "checksum";
-    _flagShort = "cs";
-    _param = "";
-    _paramExp = "";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " checksum";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 0;
-    _cmdType = SC_Check_Sum;
-    memset(_checkSum, 0, sizeof(_checkSum));
-}
-
-CheckSumSubCommand:: ~CheckSumSubCommand()
-{
-
-}
-
-bool CheckSumSubCommand::extractChecksumFromStr(string str, u_int8_t checkSum[16])
-{
-    char ptr[2];
-    int i = 15;
-    if (str.size() < 2) {
-        reportErr(true, FLINT_CHECKSUM_LEN_ERROR );
-        return false;
-    }
-    if (!strncasecmp(str.c_str(), "0x", 2)) {
-        // str starts with 0x or 0X, remove prefix
-        str = &(str.c_str()[2]);
-    }
-
-    if (str.size() != 32) {
-        reportErr(true, FLINT_CHECKSUM_LEN_ERROR );
-        return false;
-    }
-    stringstream ss(str);
-    while (i >= 0) {
-        ss.read(ptr, 2);
-        if (!isxdigit(ptr[0]) || !isxdigit(ptr[1])) {
-            reportErr(true, FLINT_CHECKSUM_HEX_ERROR);
-            return false;
-        }
-        checkSum[i] = (u_int8_t)strtoul(ptr, NULL, 16);
-        if (!checkSum[i] && strncmp(ptr, "00", 2)) {
-            reportErr(true, FLINT_CHECKSUM_PARSE_ERROR);
-            return false;
-        }
-        i--;
-    }
-    return true;
-}
-
-string CheckSumSubCommand::checkSum2Str(u_int8_t chksm[16])
-{
-    stringstream ss;
-    for (int i=15; i >= 0; i--) {
-        char chunk[3];
-        snprintf(chunk, 3, "%02x", chksm[i]);
-        ss << chunk;
-    }
-    string s = ss.str();
-    return s;
-}
-
-FlintStatus CheckSumSubCommand::executeCommand()
-{
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    FwOperations* ops = _fwOps ? _fwOps : _imgOps;
-    printf("-I- Calculating Checksum ...\n");
-    if (!ops->FwCalcMD5(_checkSum)){
-        reportErr(true, FLINT_CHECKSUM_ERROR, (_flintParams.device_specified ? "device" : "image"), ops->err());
-        return FLINT_FAILED;
-    }
-    // just print it!
-    printf("Checksum: %s\n", checkSum2Str(_checkSum).c_str());
-    return FLINT_SUCCESS;
-
-}
-
-
-/***********************
- *Class: TimeStamp
- **********************/
-TimeStampSubCommand:: TimeStampSubCommand()
-{
-    _name = "time stamp";
-    _desc = "FW time stamping.";
-    _extendedDesc = "set/query/reset time stamp on device/image.";
-    _flagLong = "timestamp";
-    _flagShort = "ts";
-    _param = "<set|query|reset> [timestamp] [FW version]";
-    _paramExp = "set <timestamp> [FW version] : set the specified timestamp. if set on device FW version must be specified\n"
-        INDENTEX "                               timestamp should comply with ISO 8601 format and provided with UTC timezone: YYYY-MM-DDThh:mm:ssZ\n"
-                INDENTEX "query : query device/image to view the timestamp\n"
-                INDENTEX "reset : reset the timestamp, remove the timestamp from device/image.\n";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE4 " ts set 2015-12-24T14:52:33Z 14.12.1100\n"
-      INDENTEX FLINT_NAME " -d " MST_DEV_EXAMPLE4 " ts reset\n"
-      INDENTEX FLINT_NAME " -i ./fw4115.bin ts set\n"
-      INDENTEX FLINT_NAME " -i ./fw4115.bin ts query";
-    _v = Wtv_Dev_Or_Img;
-    _maxCmdParamNum = 3;
-    _minCmdParamNum = 1;
-    _cmdType = SC_Time_Stamp;
-    memset(&_userFwVer, 0, sizeof(_userFwVer));
-    memset(&_userTsEntry, 0, sizeof(_userTsEntry));
-    _operation = TS_No_Command;
-    _ops = (FwOperations*)NULL;
-}
-
-TimeStampSubCommand:: ~TimeStampSubCommand()
-{
-
-}
-bool TimeStampSubCommand::parseFwVersion(string verStr)
-{
-    unsigned int major = 0;
-    unsigned int minor = 0;
-    unsigned int subminor = 0;
-    int count = sscanf(verStr.c_str(), "%02d.%02d.%04d", &major, &minor, &subminor);
-    if (count !=3) {
-        count = sscanf(verStr.c_str(), "%02d.%04d.%04d", &major, &minor, &subminor);
-        if (count != 3) {
-            reportErr(true, "Failed to parse FW version. expected format: MM.mm.ssss\n");
-            return false;
-        }
-    }
-    _userFwVer.fw_ver_major = major;
-    _userFwVer.fw_ver_minor = minor;
-    _userFwVer.fw_ver_subminor = subminor;
-    //printf("-D- Fw version: %d.%d.%d\n", _userFwVer.fw_ver_major, _userFwVer.fw_ver_minor, _userFwVer.fw_ver_subminor);
-    return true;
-}
-
-#define BCD2_TO_NUM(bcd)\
-    ((((bcd) >> 4 & 0xf) * 10) + ((bcd) & 0xf))
-
-#define BCD4_TO_NUM(bcd) \
-        ((BCD2_TO_NUM((bcd) >> 8 & 0xff) * 100) + (BCD2_TO_NUM((bcd) & 0xff)))
-
-#define NUM2_TO_BCD(num) \
-    ((((num) / 10) * 16) + ((num) % 10))
-
-#define NUM4_TO_BCD(num) \
-        ((NUM2_TO_BCD((num) / 100 ) * 256) + NUM2_TO_BCD((num) % 100 ))
-
-u_int8_t TimeStampSubCommand::getDaysInMonth(u_int16_t year, u_int8_t month)
-{
-    u_int8_t days = 0;
-    bool isLeapYear = year % 4 == 0; // evenly divisible by 4
-    isLeapYear &= (year % 100 != 0) || (year % 400 == 0); // not evenly divided by 100 or  evenly divisible by 400
-    switch(month) {
-    case 2:
-        days = isLeapYear ? 29 : 28;
-        break;
-    case 4:
-    case 6:
-    case 9:
-    case 11:
-        days = 30;
-        break;
-    case 1:
-    case 3:
-    case 5:
-    case 7:
-    case 8:
-    case 10:
-    case 12:
-        days = 31;
-        break;
-    default:
-        break;
-    }
-    return days;
-}
-
-void TimeStampSubCommand::getMachineUTCTime()
-{
-    time_t rawTime;
-    struct tm * timeInfo;
-    time ( &rawTime );
-    timeInfo = gmtime ( &rawTime );
-
-    _userTsEntry.ts_year = NUM4_TO_BCD(timeInfo->tm_year + 1900);
-    _userTsEntry.ts_month = NUM2_TO_BCD(timeInfo->tm_mon + 1);
-    _userTsEntry.ts_day = NUM2_TO_BCD(timeInfo->tm_mday);
-    _userTsEntry.ts_hour = NUM2_TO_BCD(timeInfo->tm_hour);
-    _userTsEntry.ts_minutes = NUM2_TO_BCD(timeInfo->tm_min);
-    _userTsEntry.ts_seconds =  NUM2_TO_BCD(timeInfo->tm_sec);
-
-    //printf("-D- timestamp: %04x-%02x-%02xT%02x:%02x:%02x\n", _userTsEntry.ts_year, _userTsEntry.ts_month,
-    //                                                        _userTsEntry.ts_day, _userTsEntry.ts_hour, _userTsEntry.ts_minutes, _userTsEntry.ts_seconds);
-    return;
-}
-
-bool TimeStampSubCommand::parseTimeStamp(string tsStr)
-{
-    unsigned int year = 0;
-    unsigned int month = 0;
-    unsigned int day = 0;
-    unsigned int hour = 0;
-    unsigned int minutes = 0;
-    unsigned int seconds = 0;
-    if (*tsStr.rbegin() != 'Z') {
-        reportErr(true, "Failed to parse timestamp: Timestamp timezone must be UTC. format should be: YYYY-MM-DDThh:mm:ssZ\n");
-        return false;
-    }
-    // scan and store
-    int count = sscanf(tsStr.c_str(), "%04d-%02d-%02dT%02d:%02d:%02dZ", &year, &month, &day, &hour, &minutes, &seconds);
-    if (count !=6) {
-        reportErr(true, "Failed to parse timestamp: input should be compliant to the following ISO 8601 format: YYYY-MM-DDThh:mm:ssZ\n");
-        return false;
-    }
-    // check time args
-    if ( month == 0 || month > 12) {
-        reportErr(true, "Failed to parse timestamp: illegal month value (%d)\n", month);
-                return false;
-    }
-    if (day > getDaysInMonth(year, month)) {
-        reportErr(true, "Failed to parse timestamp: illegal day value (%d)\n", day);
-                return false;
-    }
-    if ( hour  > 23 || minutes  > 59 || seconds  > 59 ) {
-        reportErr(true, "Failed to parse timestamp: illegal time value (%02d:%02d:%02d)\n", hour, minutes, seconds);
-                return false;
-    }
-    // store as BCD
-    _userTsEntry.ts_year = NUM4_TO_BCD(year);
-    _userTsEntry.ts_month = NUM2_TO_BCD(month);
-    _userTsEntry.ts_day = NUM2_TO_BCD(day);
-    _userTsEntry.ts_hour = NUM2_TO_BCD(hour);
-    _userTsEntry.ts_minutes = NUM2_TO_BCD(minutes);
-    _userTsEntry.ts_seconds =  NUM2_TO_BCD(seconds);
-
-    //printf("-D- timestamp: %04x-%02x-%02xT%02x:%02x:%02x\n", _userTsEntry.ts_year, _userTsEntry.ts_month,
-    //                                                        _userTsEntry.ts_day, _userTsEntry.ts_hour, _userTsEntry.ts_minutes, _userTsEntry.ts_seconds);
-    return true;
-}
-
-bool TimeStampSubCommand::verifyParams()
-{
-    if (_flintParams.cmd_params[0] == "query") {
-        if (_flintParams.cmd_params.size() > 1) {
-            reportErr(true, "query operation requires no arguments.\n");
-            return false;
-        }
-        _operation = TimeStampSubCommand::TS_Query;
-    } else if (_flintParams.cmd_params[0] == "set") {
-        if (_flintParams.image_specified && _flintParams.cmd_params.size() > 2) {
-            reportErr(true, "too many arguments for set operation on image.\n");
-            return false;
-        } else if (_flintParams.device_specified && _flintParams.cmd_params.size() != 3) {
-            reportErr(true, "set operation on device requires timestamp and FW version arguments.\n\n");
-            return false;
-        }
-        _operation = TimeStampSubCommand::TS_Set;
-        // attempt to parse timestamp and fw version
-        if (_flintParams.image_specified && _flintParams.cmd_params.size() == 1) {
-            // take time from machine
-            getMachineUTCTime();
-        } else if (!parseTimeStamp(_flintParams.cmd_params[1])) {
-            return false;
-        }
-        if (_flintParams.device_specified && !parseFwVersion(_flintParams.cmd_params[2])) {
-            return false;
-        }
-    } else if (_flintParams.cmd_params[0] == "reset") {
-        if (_flintParams.cmd_params.size() > 1) {
-            reportErr(true, "erase operation requires no arguments.\n");
-            return false;
-        }
-        _operation = TimeStampSubCommand::TS_Reset;
-    } else {
-        reportErr(true, "Unknown operation, allowed operations: query/set/reset.\n");
-        return false;
-    }
-    return true;
-}
-
-void TimeStampSubCommand::printTsAndFwVer(string prefix, struct tools_open_ts_entry& tsEntry, struct tools_open_fw_version& fwVer)
-{
-    printf("%-24s: %04x-%02x-%02xT%02x:%02x:%02xZ    %02d.%02d.%04d\n", prefix.c_str(), tsEntry.ts_year, tsEntry.ts_month, tsEntry.ts_day,
-                                                                     tsEntry.ts_hour, tsEntry.ts_minutes, tsEntry.ts_seconds,
-                                                                     fwVer.fw_ver_major, fwVer.fw_ver_minor, fwVer.fw_ver_subminor);
-}
-
-bool TimeStampSubCommand::queryTs()
-{
-    struct tools_open_ts_entry tsEntry;
-    struct tools_open_fw_version fwVer;
-    memset(&tsEntry, 0, sizeof(tsEntry));
-    memset(&fwVer, 0, sizeof(fwVer));
-    // get and Print Current Running FW TS in case of device
-    if (_flintParams.device_specified) {
-        if (!_ops->FwQueryTimeStamp(tsEntry, fwVer, true)) {
-            printf("%-24s: N/A. %s\n", "Current timestamp", _ops->err());
-        } else {
-            printTsAndFwVer("Current timestamp", tsEntry, fwVer);
-        }
-    }
-    // get and print next FW timestamp
-    if (!_ops->FwQueryTimeStamp(tsEntry, fwVer, false)) {
-        printf("%-24s: N/A. %s\n", "Next timestamp", _ops->err());
-    } else {
-        printTsAndFwVer("Next timestamp", tsEntry, fwVer);
-    }
-    return true;
-}
-
-bool TimeStampSubCommand::setTs()
-{
-    if (!_ops->FwSetTimeStamp(_userTsEntry, _userFwVer)) {
-        reportErr(false, "%s", _ops->err());
-        return false;
-    }
-    return true;
-}
-
-bool TimeStampSubCommand::resetTs()
-{
-    if (!_ops->FwResetTimeStamp()) {
-        reportErr(false, "%s", _ops->err());
-        return false;
-    }
-    return true;
-}
-
-FlintStatus TimeStampSubCommand::executeCommand()
-{
-    bool rc;
-
-    if (preFwOps() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    _ops = _flintParams.device_specified ? _fwOps : _imgOps;
-    (void)_ops;
-    switch (_operation) {
-    case TimeStampSubCommand::TS_Set:
-        rc = setTs();
-        break;
-    case TimeStampSubCommand::TS_Query:
-        rc = queryTs();
-        break;
-    case TimeStampSubCommand::TS_Reset:
-        rc = resetTs();
-        break;
-    default:
-        // should not be reached
-        reportErr(true, "Failed to perform timestamp operation: Unknown Error\n");
-        return FLINT_FAILED;
-    }
-    if (!rc) {
-        printf("-E- Failed to perform timestamp %s operation. %s\n", _flintParams.cmd_params[0].c_str(), _errBuff);
-        return FLINT_FAILED;
-    }
-    return FLINT_SUCCESS;
-}
-
-
-/***********************
- *Class: CacheImage
- **********************/
-CacheImageSubCommand:: CacheImageSubCommand()
-{
-    _name = "cache image";
-    _desc = "cache FW image(Windows only).";
-    _extendedDesc = "cache the FW image using Mellanox driver to allow faster FW load time upon loading the driver(Windows only).";
-    _flagLong = "cache_image";
-    _flagShort = "ci";
-    _param = "";
-    _paramExp = "";
-    _example = FLINT_NAME " -d " MST_DEV_EXAMPLE1 " cache_image";
-    _v = Wtv_Dev;
-    _maxCmdParamNum = 0;
-    _minCmdParamNum = 0;
-    _cmdType = SC_Cache_Image;
-}
-
-CacheImageSubCommand:: ~CacheImageSubCommand()
-{
-
-}
-
-FlintStatus CacheImageSubCommand:: executeCommand()
-{
-#ifdef __WIN__
-    int rc;
-
-    if (preFwAccess() == FLINT_FAILED) {
-        return FLINT_FAILED;
-    }
-    rc = wdcif_send_image_cache_request(((Flash*)_io)->getMfileObj());
-    if (rc) {
-        reportErr(true, FLINT_CACHE_IMAGE_ERROR, wdcif_err_str(rc));
-        return FLINT_FAILED;
-    }
-    printf("\n-I- FW was successfully cached by driver.\n");
-    return FLINT_SUCCESS;
-#else
-    reportErr(true, FLINT_WIN_ONLY_SUPP_ERROR, _name.c_str());
-    return FLINT_FAILED;
-#endif
-}
diff --git a/flint/subcommands.h b/flint/subcommands.h
deleted file mode 100644 (file)
index e066d24..0000000
+++ /dev/null
@@ -1,547 +0,0 @@
-/*
- *
- * subcommands.h - FLash INTerface
- *
- * Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id$
- *
- */
-
-#ifndef __SUBCOMMANDS_H__
-#define __SUBCOMMANDS_H__
-
-#define MAX_PASSWORD_LEN 256
-
-#include <string>
-
-#include <tools_layouts/tools_open_layouts.h>
-
-#include "flint_params.h"
-#include "mlxfwops/lib/fw_ops.h"
-#include "err_msgs.h"
-using namespace std;
-
-//we might need to close the log from the main program in case of interrupt
-void close_log();
-void print_time_to_log();
-int print_line_to_log(const char* format, ...);
-int write_cmd_to_log(char* av[], int ac, CommandType cmd, bool write=true);
-int write_result_to_log(int is_failed, const char* err_msg, bool write=true);
-
-typedef enum what_to_ver {
-    Wtv_Img,
-    Wtv_Dev,
-    Wtv_Dev_And_Img,
-    Wtv_Dev_Or_Img,
-    Wtv_Uninitilized
-} what_to_ver_t;
-/*Subcommand classes:*/
-
-#define FLINT_ERR_LEN 1024
-
-class SubCommand
-{
-protected:
-    FwOperations *_fwOps;
-    FwOperations *_imgOps;
-    FBase* _io;
-    what_to_ver_t _v;
-    int _maxCmdParamNum;
-    int _minCmdParamNum;
-    FlintParams _flintParams;
-    //info about the Subcommand
-    string _name;
-    string _desc;
-    string _extendedDesc;
-    string _flagLong;
-    string _flagShort;
-    string _param;
-    string _paramExp;
-    string _example;
-    char  _errBuff[FLINT_ERR_LEN];
-    sub_cmd_t _cmdType;
-
-
-    //Methods that are commonly used in the various subcommands:
-    //TODO: add middle classes and segregate as much of these common methods between these classes
-
-    virtual bool verifyParams() {return true;};
-    bool basicVerifyParams();
-    FlintStatus openOps();
-    FlintStatus openIo();
-    virtual FlintStatus preFwOps();
-    virtual FlintStatus preFwAccess();
-
-    bool getRomsInfo(FBase* io, roms_info_t& romsInfo);
-    void displayOneExpRomInfo(const rom_info_t& info);
-    void displayExpRomInfo(const roms_info_t& romsInfo, const char *preStr);
-
-    static int verifyCbFunc(char* str);
-    static int CbCommon(int completion, char*preStr, char* endStr=NULL);
-    static int burnCbFs2Func(int completion);
-    static int burnCbFs3Func(int completion);
-    static int burnBCbFunc(int completion);
-    static int vsdCbFunc(int completion);
-    static int setKeyCbFunc(int completion);
-    static int bromCbFunc(int completion);
-    static int dromCbFunc(int completion);
-    static int wbCbFunc(int completion);
-    static int resetCfgCbFunc(int completion);
-
-    bool printGuidLine(guid_t* new_guids, guid_t* old_guids, int guid_index);
-    bool printMacLine(guid_t* new_guids, guid_t* old_guids, int mac_index);
-    bool printGUIDsFunc(guid_t guids[GUIDS],guid_t macs[MACS], guid_t old_guids[GUIDS],\
-            guid_t old_macs[MACS], bool print_guids, bool print_macs, int portNum, bool old_guid_fmt);
-    bool reportGuidChanges(guid_t* new_guids, guid_t* new_macs,\
-                                        guid_t* old_guids, guid_t* old_macs, bool printGuids,\
-                                        bool printMacs, int guidNum);
-    bool checkGuidsFlags(u_int16_t devType, u_int8_t fwType,
-            bool guidsSpecified, bool macsSpecified, bool uidSpecified, bool ibDev, bool ethDev);
-    void printMissingGuidErr(bool ibDev, bool ethDev);
-
-    bool extractUIDArgs(std::vector<string>& cmdArgs, u_int8_t numOfGuids[2], u_int8_t stepSize[2]);
-    bool extractValuesFromString(string valStr, u_int8_t values[2], string origArg);
-    bool getGUIDFromStr(string str, guid_t& guid, string prefixErr="");
-    bool  getPasswordFromUser(const char *preStr, char buffer[MAX_PASSWORD_LEN+1]);
-    bool askUser(const char* question=NULL, bool printAbrtMsg=true);
-
-    bool isCmdSupportLog();
-    void openLog();
-    inline void closeLog() {close_log();}
-    //print errors to an err buff, log if needed and stdout
-    void reportErr(bool shouldPrint, const char *format, ...);
-
-    bool writeToFile(string filePath, const std::vector<u_int8_t>& buff);
-
-    bool dumpFile(const char* confFile, std::vector<u_int8_t>& data, const char *sectionName);
-    bool unzipDataFile (std::vector<u_int8_t> data, std::vector<u_int8_t> &newData, const char *sectionName);
-
-
-
-public:
-    SubCommand(): _fwOps(NULL), _imgOps(NULL), _io(NULL), _v(Wtv_Uninitilized), _maxCmdParamNum(-1),  _minCmdParamNum(-1)
-    {
-        _cmdType = SC_No_Cmd;
-        memset(_errBuff, 0, sizeof(_errBuff));
-    }
-    virtual ~SubCommand();
-    virtual FlintStatus executeCommand() = 0;
-    inline void setParams(const FlintParams& flintParams) {_flintParams = flintParams;}
-    inline string& getName() {return this->_name;}
-    inline string& getDesc() {return this->_desc;}
-    inline string& getExtDesc() {return this->_extendedDesc;}
-    inline string& getFlagL() {return this->_flagLong;}
-    inline string& getFlagS() {return this->_flagShort;}
-    inline string& getParam() {return this->_param;}
-    inline string& getParamExp() {return this->_paramExp;}
-    inline string& getExample() {return this->_example;}
-};
-
-class BurnSubCommand : public SubCommand
-{
-private:
-       u_int8_t _fwType;
-    fw_info_t _devInfo;
-    fw_info_t _imgInfo;
-    FwOperations::ExtBurnParams _burnParams;
-    bool _devQueryRes;
-
-    FlintStatus burnFs3();
-    FlintStatus burnFs2();
-    bool checkFwVersion();
-    bool checkPSID();
-    void updateBurnParams();
-    void dealWithExpRom();
-    bool checkMatchingExpRomDevId(const fw_info_t& info);
-    bool dealWithGuids();
-    bool dealWithVSD();
-public:
-    BurnSubCommand();
-    ~BurnSubCommand();
-    FlintStatus executeCommand();
-    bool verifyParams();
-};
-
-class QuerySubCommand : public SubCommand
-{
-private:
-    FlintStatus printInfo(const fw_info_t& fwInfo, bool fullQuery);
-    bool displayFs3Uids(const fw_info_t& fwInfo);
-    bool displayFs2Uids(const fw_info_t& fwInfo);
-    bool checkMac(u_int64_t mac, string& warrStr);
-public:
-    QuerySubCommand();
-    ~QuerySubCommand();
-    FlintStatus executeCommand();
-    bool verifyParams();
-};
-
-class VerifySubCommand : public SubCommand
-{
-private:
-
-public:
-    VerifySubCommand();
-    ~VerifySubCommand();
-    FlintStatus executeCommand();
-    bool verifyParams();
-};
-
-class SwResetSubCommand : public SubCommand
-{
-private:
-
-public:
-    SwResetSubCommand();
-    ~SwResetSubCommand();
-    FlintStatus executeCommand();
-    bool verifyParams();
-};
-
-class BromSubCommand : public SubCommand
-{
-private:
-    fw_info_t _info;
-    roms_info_t _romsInfo;
-    FImage _fRom;
-public:
-    BromSubCommand();
-    ~BromSubCommand();
-    inline FlintStatus executeCommand();
-    bool getExpRomStrVer(roms_info_t& roms_info, char* version);
-};
-
-class DromSubCommand : public SubCommand
-{
-public:
-    DromSubCommand();
-    ~DromSubCommand();
-    FlintStatus executeCommand();
-    inline bool verifyParams();
-};
-
-class RromSubCommand : public SubCommand
-{
-private:
-
-public:
-    RromSubCommand();
-    ~RromSubCommand();
-    FlintStatus executeCommand();
-    bool verifyParams();
-};
-
-class BbSubCommand : public SubCommand
-{
-private:
-
-public:
-    BbSubCommand();
-    ~BbSubCommand();
-    FlintStatus executeCommand();
-    inline bool verifyParams();
-};
-
-class SgSubCommand : public SubCommand
-{
-private:
-    fw_info_t _info;
-    FwOperations* _ops;
-    FwOperations::sg_params_t _sgParams;
-
-    FlintStatus sgFs2();
-    FlintStatus sgFs3();
-    void setUserGuidsAndMacs();
-    bool CheckSetGuidsFlags();
-public:
-    SgSubCommand();
-    ~SgSubCommand();
-    FlintStatus executeCommand();
-    bool verifyParams();
-};
-
-class SmgSubCommand : public SubCommand
-{
-private:
-    fs3_uid_t _baseGuid;
-    fw_info_t _info;
-    FwOperations* _ops;
-public:
-    SmgSubCommand();
-    ~SmgSubCommand();
-    inline FlintStatus executeCommand();
-    inline bool verifyParams();
-};
-
-class SetVpdSubCommand : public SubCommand
-{
-private:
-
-public:
-    SetVpdSubCommand();
-    ~SetVpdSubCommand();
-    FlintStatus executeCommand();
-};
-
-class SvSubCommand : public SubCommand
-{
-private:
-
-public:
-    SvSubCommand();
-    ~SvSubCommand();
-    FlintStatus executeCommand();
-    bool verifyParams();
-};
-class RiSubCommand : public SubCommand
-{
-private:
-    FlintStatus writeImageToFile(const char *file_name, u_int8_t *data, u_int32_t length);
-public:
-    RiSubCommand();
-    ~RiSubCommand();
-    FlintStatus executeCommand();
-};
-
-class DcSubCommand : public SubCommand
-{
-private:
-    std::vector<u_int8_t> _sect;
-public:
-    DcSubCommand();
-    ~DcSubCommand();
-    FlintStatus executeCommand();
-    bool verifyParams();
-};
-class DhSubCommand : public SubCommand
-{
-private:
-    std::vector<u_int8_t> _sect;
-public:
-    DhSubCommand();
-    ~DhSubCommand();
-    FlintStatus executeCommand();
-    bool verifyParams();
-};
-
-class SetKeySubCommand : public SubCommand
-{
-private:
-    hw_key_t _userKey;
-    bool _getKeyInter;
-    bool getKeyInteractively();
-public:
-    SetKeySubCommand();
-    ~SetKeySubCommand();
-    inline FlintStatus executeCommand();
-    inline bool verifyParams();
-};
-class HwAccessSubCommand : public SubCommand
-{
-private:
-    FlintStatus disableHwAccess();
-    FlintStatus enableHwAccess();
-public:
-    HwAccessSubCommand();
-    ~HwAccessSubCommand();
-    FlintStatus executeCommand();
-    bool verifyParams();
-};
-
-class HwSubCommand : public SubCommand
-{
-private:
-    FlintStatus printAttr(const ext_flash_attr_t& attr);
-public:
-    HwSubCommand();
-    ~HwSubCommand();
-    inline FlintStatus executeCommand();
-    inline bool verifyParams();
-};
-class EraseSubCommand : public SubCommand
-{
-private:
-
-public:
-    EraseSubCommand();
-    ~EraseSubCommand();
-    inline FlintStatus executeCommand();
-};
-class RwSubCommand : public SubCommand
-{
-private:
-
-public:
-    RwSubCommand();
-    ~RwSubCommand();
-    inline FlintStatus executeCommand();
-};
-class WwSubCommand : public SubCommand
-{
-private:
-
-public:
-    WwSubCommand();
-    ~WwSubCommand();
-    inline FlintStatus executeCommand();
-};
-
-class WwneSubCommand : public SubCommand
-{
-private:
-
-public:
-    WwneSubCommand();
-    ~WwneSubCommand();
-    inline FlintStatus executeCommand();
-};
-
-class WbSubCommand : public SubCommand
-{
-private:
-    bool extractData(const std::vector<string>& cmdParams , u_int32_t* addr, std::vector<u_int8_t>& data);
-public:
-    WbSubCommand();
-    ~WbSubCommand();
-    FlintStatus executeCommand();
-};
-
-
-class WbneSubCommand : public SubCommand
-{
-private:
-    bool extractData(const std::vector<string>& cmdParams , u_int32_t* addr, std::vector<u_int32_t>& data);
-    bool writeBlock(u_int32_t addr, std::vector<u_int32_t> dataVec);
-public:
-    WbneSubCommand();
-    ~WbneSubCommand();
-    FlintStatus executeCommand();
-};
-
-class RbSubCommand : public SubCommand
-{
-private:
-    bool printToScreen(const std::vector<u_int8_t>& buff);
-    bool readBlock(u_int32_t addr, std::vector<u_int8_t>& buff, bool isFlash);
-public:
-    RbSubCommand();
-    ~RbSubCommand();
-    FlintStatus executeCommand();
-};
-
-class ClearSemSubCommand : public SubCommand
-{
-private:
-
-public:
-    ClearSemSubCommand();
-    ~ClearSemSubCommand();
-    FlintStatus executeCommand();
-};
-
-class RomQuerySubCommand : public SubCommand
-{
-private:
-    roms_info_t _romsInfo;
-public:
-    RomQuerySubCommand();
-    ~RomQuerySubCommand();
-    FlintStatus executeCommand();
-};
-
-class ResetCfgSubCommand : public SubCommand
-{
-public:
-    ResetCfgSubCommand();
-    ~ResetCfgSubCommand();
-    FlintStatus executeCommand();
-};
-
-class FiSubCommand : public SubCommand
-{
-public:
-    FiSubCommand();
-    ~FiSubCommand();
-    FlintStatus executeCommand();
-};
-
-class CheckSumSubCommand : public SubCommand
-{
-public:
-    CheckSumSubCommand();
-    ~CheckSumSubCommand();
-    FlintStatus executeCommand();
-private:
-    bool extractChecksumFromStr(string str, u_int8_t checkSum[16]);
-    string checkSum2Str(u_int8_t checkSum[16]);
-    u_int8_t _checkSum[16];
-};
-
-class TimeStampSubCommand : public SubCommand
-{
-public:
-    TimeStampSubCommand();
-    ~TimeStampSubCommand();
-    FlintStatus executeCommand();
-private:
-    enum {
-        TS_No_Command,
-        TS_Query,
-        TS_Set,
-        TS_Reset
-    };
-
-    bool verifyParams();
-    bool parseTimeStamp(string tsStr);
-    bool parseFwVersion(string verStr);
-    inline u_int8_t getDaysInMonth(u_int16_t year, u_int8_t month);
-    inline void printTsAndFwVer(string prefix, struct tools_open_ts_entry& tsEntry, struct tools_open_fw_version& fwVer);
-    void getMachineUTCTime();
-    bool queryTs();
-    bool setTs();
-    bool resetTs();
-
-    int _operation;
-    FwOperations* _ops;
-    struct tools_open_ts_entry _userTsEntry;
-    struct tools_open_fw_version _userFwVer;
-};
-
-class CacheImageSubCommand : public SubCommand
-{
-public:
-    CacheImageSubCommand();
-    ~CacheImageSubCommand();
-    FlintStatus executeCommand();
-};
-
-#endif
diff --git a/gitversion.sh b/gitversion.sh
deleted file mode 100755 (executable)
index 8fe67a4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-if git rev-parse --short HEAD > gitversion.tmp
-then
-    echo "#define TOOLS_GIT_SHA \"`tr -d '\n' < gitversion.tmp`\"" > $1 
-fi
-rm gitversion.tmp
diff --git a/include/mtcr_ul/mtcr.h b/include/mtcr_ul/mtcr.h
deleted file mode 100644 (file)
index 5306d0e..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef MTCR_H
-#define MTCR_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <sys/types.h>
-
-#include "mtcr_com_defs.h"
-#include "mtcr_mf.h"
-
-typedef enum mtcr_access_method {
-    MTCR_ACCESS_ERROR  = MST_ERROR,
-    MTCR_ACCESS_MEMORY = MST_PCI,
-    MTCR_ACCESS_CONFIG = MST_PCICONF,
-    MTCR_ACCESS_INBAND = MST_IB
-} mtcr_access_method_t;
-/*
- * Read 4 bytes, return number of succ. read bytes or -1 on failure
- */
-int mread4(mfile *mf, unsigned int offset, u_int32_t *value);
-
-/*
- * Write 4 bytes, return number of succ. written bytes or -1 on failure
- */
-int mwrite4(mfile *mf, unsigned int offset, u_int32_t value);
-
-
-int mread4_block (mfile *mf, unsigned int offset, u_int32_t* data, int byte_len);
-int mwrite4_block (mfile *mf, unsigned int offset, u_int32_t* data, int byte_len);
-
-int msw_reset(mfile *mf);
-int mhca_reset(mfile *mf);
-
-/*
- * Get list of MST (Mellanox Software Tools) devices.
- * Put all device names as null-terminated strings to buf.
- *
- * Return number of devices found or -1 if buf overflow
- */
-int mdevices(char *buf, int len, int mask);
-
-
-/*
- * Get list of MST (Mellanox Software Tools) devices info records.
- * Return a dynamic allocated array of dev_info records.
- * len will be updated to hold the array length
- *
- */
-dev_info* mdevices_info(int mask, int* len);
-
-void mdevice_info_destroy(dev_info* dev_info, int len);
-void mdevices_info_destroy(dev_info* dev_info, int len);
-
-int mget_mdevs_type(mfile *mf, u_int32_t *mtype);
-
-/*
- * Open Mellanox Software tools (mst) driver. Device type==INFINIHOST
- * Return valid mfile ptr or 0 on failure
- */
-mfile *mopen(const char *name);
-
-mfile *mopend(const char *name, int type);
-
-mfile *mopen_fw_ctx(void* fw_cmd_context, void* fw_cmd_func, void* extra_data);
-
-mfile *mopen_adv(const char *name, MType mtype);
-
-/*
- * Close Mellanox driver
- * req. descriptor
- */
-int mclose(mfile *mf);
-
-unsigned char mset_i2c_slave(mfile *mf, unsigned char new_i2c_slave);
-
-int mget_mdevs_flags(mfile *mf, u_int32_t *devs_flags);
-
-int maccess_reg_mad(mfile *mf, u_int8_t *data);
-
-int mos_reg_access(mfile *mf, int reg_access, void *reg_data, u_int32_t cmd_type);
-
-int maccess_reg_cmdif(mfile *mf, reg_access_t reg_access, void *reg_data, u_int32_t cmd_type);
-
-int maccess_reg(mfile     *mf,
-                u_int16_t  reg_id,
-                maccess_reg_method_t reg_method,
-                void*      reg_data,
-                u_int32_t  reg_size,
-                u_int32_t      r_size_reg, // used when sending via icmd interface (how much data should be read back to the user)
-                u_int32_t      w_size_reg, // used when sending via icmd interface (how much data should be written to the scratchpad)
-                                                   // if you dont know what you are doing then r_size_reg = w_size_reg = your_register_size
-                int       *reg_status);
-
-int icmd_send_command(mfile *mf, int opcode, void* data, int data_size, int skip_write);
-
-int icmd_clear_semaphore(mfile *mf);
-
-
-int tools_cmdif_send_inline_cmd(mfile* mf, u_int64_t in_param, u_int64_t* out_param,
-                                u_int32_t input_modifier, u_int16_t opcode, u_int8_t  opcode_modifier);
-
-int tools_cmdif_send_mbox_command(mfile* mf, u_int32_t input_modifier, u_int16_t opcode, u_int8_t  opcode_modifier,
-                                  int data_offs_in_mbox, void* data, int data_size, int skip_write);
-
-int tools_cmdif_unlock_semaphore(mfile *mf);
-
-
-int mget_max_reg_size(mfile *mf);
-
-const char* m_err2str(MError status);
-
-int mread_buffer(mfile *mf, unsigned int offset, u_int8_t* data, int byte_len);
-int mwrite_buffer(mfile *mf, unsigned int offset, u_int8_t* data, int byte_len);
-
-int mget_vsec_supp(mfile* mf);
-
-int mget_addr_space(mfile* mf);
-int mset_addr_space(mfile* mf, int space);
-
-int mclear_pci_semaphore(const char* name);
-
-#ifdef __cplusplus
-}
-#endif
-
-#define DEV_MST_EXAMPLE1 "mlx4_0"
-#define DEV_MST_EXAMPLE2 "03:00.0"
-
-#endif
diff --git a/include/mtcr_ul/mtcr_com_defs.h b/include/mtcr_ul/mtcr_com_defs.h
deleted file mode 100644 (file)
index 7aa3a38..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#ifndef _MTCR_COM_DEFS_H
-#define _MTCR_COM_DEFS_H
-
-#ifdef __WIN__
-
-#include<winsock2.h>
-#include <windows.h>
-
-#ifdef MTCR_EXPORTS
-#define MTCR_API __declspec(dllexport)
-#else
-#define MTCR_API __declspec(dllimport)
-#endif
-
-typedef unsigned __int8  u_int8_t;
-typedef __int8           int8_t;
-typedef unsigned __int16 u_int16_t;
-typedef __int16          int16_t;
-typedef unsigned __int32 u_int32_t;
-typedef __int32          int32_t;
-typedef unsigned __int64 u_int64_t;
-typedef __int64          int64_t;
-
-#if defined(_WIN64)
-    typedef __int64 MT_long_ptr_t;
-    typedef unsigned __int64 MT_ulong_ptr_t;
-#else
-    typedef _W64 long MT_long_ptr_t;
-    typedef _W64 unsigned long MT_ulong_ptr_t;
-#endif
-
-#elif defined(__DJGPP__)
-
-    typedef unsigned char    u_int8_t;
-    typedef char             int8_t;
-    typedef unsigned short   u_int16_t;
-    typedef short            int16_t;
-    typedef unsigned int     u_int32_t;
-    typedef long             int32_t;
-    typedef unsigned long long u_int64_t;
-    typedef long long        int64_t;
-
-#define bswap_32(x) ntohl(x)
-#define MTCR_API
-
-#else  /* UNIX */
-
-#include <sys/types.h>
-#define MTCR_API
-
-#endif
-
-//#ifndef USE_IB_MGT
-typedef struct mib_private_t {
-        int dummy;
-} MIB_Private;
-//#else
-//#include "mtcr_ib_private.h"
-//#endif
-
-typedef enum MError {
-    ME_OK = 0,
-    ME_ERROR,
-    ME_BAD_PARAMS,
-    ME_CR_ERROR,
-    ME_NOT_IMPLEMENTED,
-
-    ME_SEM_LOCKED,
-    ME_MEM_ERROR,
-
-    ME_MAD_SEND_FAILED,
-    ME_UNKOWN_ACCESS_TYPE,
-    ME_UNSUPPORTED_DEVICE,
-    ME_REG_NOT_SUPPORTED,
-
-    ME_PCI_READ_ERROR,
-    ME_PCI_WRITE_ERROR,
-    ME_PCI_SPACE_NOT_SUPPORTED,
-    ME_PCI_IFC_TOUT,
-
-    ME_UNSUPPORTED_OPERATION,
-    ME_UNSUPPORTED_ACCESS_TYPE,
-
-    // errors regarding REG_ACCESS
-    ME_REG_ACCESS_OK = 0,
-    ME_REG_ACCESS_BAD_STATUS_ERR = 0x100,
-    ME_REG_ACCESS_BAD_METHOD,
-    ME_REG_ACCESS_NOT_SUPPORTED,
-    ME_REG_ACCESS_DEV_BUSY,
-    ME_REG_ACCESS_VER_NOT_SUPP,
-    ME_REG_ACCESS_UNKNOWN_TLV,
-    ME_REG_ACCESS_REG_NOT_SUPP,
-    ME_REG_ACCESS_CLASS_NOT_SUPP,
-    ME_REG_ACCESS_METHOD_NOT_SUPP,
-    ME_REG_ACCESS_BAD_PARAM,
-    ME_REG_ACCESS_RES_NOT_AVLBL,
-    ME_REG_ACCESS_MSG_RECPT_ACK,
-    ME_REG_ACCESS_UNKNOWN_ERR,
-    ME_REG_ACCESS_SIZE_EXCCEEDS_LIMIT,
-    ME_REG_ACCESS_CONF_CORRUPT,
-    ME_REG_ACCESS_LEN_TOO_SMALL,
-    ME_REG_ACCESS_BAD_CONFIG,
-    ME_REG_ACCESS_ERASE_EXEEDED,
-    ME_REG_ACCESS_INTERNAL_ERROR,
-
-    // errors regarding ICMD
-    ME_ICMD_STATUS_CR_FAIL = 0x200,       // cr-space access failure
-    ME_ICMD_INVALID_OPCODE,
-    ME_ICMD_INVALID_CMD,
-    ME_ICMD_OPERATIONAL_ERROR,
-    ME_ICMD_BAD_PARAM,
-    ME_ICMD_BUSY,
-    ME_ICMD_INIT_FAILED,
-    ME_ICMD_NOT_SUPPORTED,
-    ME_ICMD_STATUS_SEMAPHORE_TO,          // timed out while trying to take semaphore
-    ME_ICMD_STATUS_EXECUTE_TO,            // timed out while waiting for command to execute
-    ME_ICMD_STATUS_IFC_BUSY,
-    ME_ICMD_STATUS_ICMD_NOT_READY,
-    ME_ICMD_UNSUPPORTED_ICMD_VERSION,
-    ME_ICMD_UNKNOWN_STATUS,
-    ME_ICMD_ICM_NOT_AVAIL,
-    ME_ICMD_WRITE_PROTECT,
-    ME_ICMD_SIZE_EXCEEDS_LIMIT,
-
-    //errors regarding Tools CMDIF
-    ME_CMDIF_BUSY = 0x300,
-    ME_CMDIF_TOUT,
-    ME_CMDIF_BAD_STATUS,
-    ME_CMDIF_BAD_OP,
-    ME_CMDIF_NOT_SUPP,
-    ME_CMDIF_BAD_SYS,
-    ME_CMDIF_UNKN_TLV,
-    ME_CMDIF_RES_STATE,
-    ME_CMDIF_UNKN_STATUS,
-
-    //errors regarding MAD IF
-    ME_MAD_BUSY = 0x400,
-    ME_MAD_REDIRECT,
-    ME_MAD_BAD_VER,
-    ME_MAD_METHOD_NOT_SUPP,
-    ME_MAD_METHOD_ATTR_COMB_NOT_SUPP,
-    ME_MAD_BAD_DATA,
-    ME_MAD_GENERAL_ERR,
-
-    ME_LAST
-} MError;
-
-// typedefs for UEFI
-#ifdef UEFI_BUILD
-#include <mft_uefi_common.h>
-#endif
-typedef enum MType_t {
-    MST_ERROR = 0x0,
-    MST_FPGA = 0x1,
-    MST_MLNXOS = 0x2,
-    MST_LPC = 0x4,
-    MST_PCI = 0x8,
-    MST_PCICONF = 0x10,
-    /*MST_CALBR,*/
-    MST_USB = 0x20,
-    MST_IB = 0x40,
-    MST_IF = 0x80,
-    MST_PPC = 0x100,
-    MST_USB_DIMAX = 0x200,
-    MST_FWCTX = 0x400,
-    MST_REMOTE = 0x800,
-#ifdef ENABLE_MST_DEV_I2C
-    MST_DEV_I2C = 0x1000,
-#endif
-    // 0x2000 reserved
-    MST_FPGA_NEWTON = 0x4000,
-    MST_CABLE = 0x8000,
-    MST_DEFAULT = 0xffffffff & ~MST_FPGA & ~MST_CABLE
-} MType;
-
-typedef enum DType_t {
-    MST_GAMLA, MST_TAVOR, MST_DIMM, MST_NOADDR
-} DType;
-#define MST_ANAFA2 MST_TAVOR
-#define MST_EEPROM MST_GAMLA
-typedef enum Mdevs_t {
-    MDEVS_GAMLA = 0x01, /*  Each device that actually is a Gamla */
-    MDEVS_I2CM = 0x02, /*  Each device that can work as I2C master */
-    MDEVS_MEM = 0x04, /*  Each device that is a memory driver (vtop) */
-    MDEVS_TAVOR_DDR = 0x08, /*  Each device that maps to DDR */
-    MDEVS_TAVOR_UAR = 0x10, /*  Each device that maps to UAR */
-    MDEVS_TAVOR_CR = 0x20, /*  Each device that maps to CR */
-    MDEVS_IF = 0x40, /*  Standard device  interface */
-    MDEVS_REM = 0x80, /*  Remote devices */
-    MDEVS_PPC = 0x100, /*  PPC devices */
-    MDEVS_DEV_I2C = 0x200, /* Generic linux kernel i2c device */
-    MDEVS_IB = 0x400, /* Cr access over IB Mads */
-    MDEVS_MLNX_OS = 0x800, /* access by CmdIf in MlnxOS */
-    MDEVS_FWCTX = 0x900, /* access by func/context (like UEFI) */
-    MDEVS_LPC = 0x1000,/* Access LPC region */
-    MDEVS_FPGA = 0x2000,/* Access LPC region */
-    MDEVS_FPGA_NEWTON = 0x4000,/* Access LPC region */
-    MDEVS_CABLE = 0x8000,
-    MDEVS_TAVOR = (MDEVS_TAVOR_DDR | MDEVS_TAVOR_UAR | MDEVS_TAVOR_CR), MDEVS_ALL = 0xffffffff
-} Mdevs;
-
-typedef enum {
-    MACCESS_REG_METHOD_GET = 1,
-    MACCESS_REG_METHOD_SET = 2
-} maccess_reg_method_t;
-
-typedef enum {
-    AS_ICMD = 3, AS_CR_SPACE = 2, AS_SEMAPHORE = 0xa
-} address_space_t;
-
-typedef struct dev_info_t {
-        Mdevs type;
-        char dev_name[512];
-        int ul_mode;
-
-        union {
-                struct {
-                        u_int16_t domain;
-                        u_int8_t bus;
-                        u_int8_t dev;
-                        u_int8_t func;
-
-                        u_int16_t dev_id;
-                        u_int16_t vend_id;
-                        u_int32_t class_id;
-                        u_int16_t subsys_id;
-                        u_int16_t subsys_vend_id;
-
-                        char cr_dev[512];
-                        char conf_dev[512];
-                        char** net_devs;      // Null terminated array
-                        char** ib_devs;       // Null terminated array
-                        char numa_node[4096];     //
-                } pci;
-
-                struct {
-                        u_int32_t mtusb_serial;
-                        u_int32_t TBD;
-                } usb;
-
-                struct {
-                        u_int32_t TBD;
-                } ib;
-
-                struct {
-                        u_int32_t TBD;
-                } remote;
-        };
-} dev_info;
-
-
-typedef enum {
-    RA_MFPA=0x9010,
-    RA_MFBA=0x9011,
-    RA_MFBE=0x9012,
-} reg_access_t;
-
-typedef struct mfile_t mfile;
-
-#endif
diff --git a/include/mtcr_ul/mtcr_mf.h b/include/mtcr_ul/mtcr_mf.h
deleted file mode 100644 (file)
index d2e0e5b..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef __MTCR_MF__
-#define __MTCR_MF__
-
-typedef struct icmd_params_t {
-        int icmd_opened;
-        int took_semaphore;
-        int ctrl_addr;
-        int cmd_addr;
-        u_int32_t max_cmd_size;
-        int semaphore_addr;
-        int static_cfg_not_done_addr;
-        int static_cfg_not_done_offs;
-        u_int32_t lock_key;
-        int ib_semaphore_lock_supported;
-} icmd_params;
-
-typedef struct ctx_params_t {
-        void *fw_cmd_context;
-        void *fw_cmd_func;
-} ctx_params;
-
-typedef struct io_region_t {
-        unsigned int start;
-        unsigned int end;
-} io_region;
-
-typedef struct tools_hcr_params_t {
-        int supp_cr_mbox; // 1: mbox supported , -1: mbox not supported
-} tools_hcr_params;
-
-typedef struct access_reg_params_t {
-        int max_reg_size;
-} access_reg_params;
-
-typedef void (*f_mpci_change)        (mfile *mf);
-
-/*  All fields in follow structure are not supposed to be used */
-/*  or modified by user programs. Except i2c_slave that may be */
-/*  modified before each access to target I2C slave address */
-struct mfile_t {
-        MType tp; /*  type of driver */
-        MType res_tp; /*  Will be used with HCR if need */
-        DType dtype; /*  target device to access to */
-        DType itype; /*  interface device to access via */
-        int is_i2cm; /*  use device as I2C master */
-        int is_vm; /*  if the machine is VM    */
-        int cr_access; /* If cr access is allowed in MLNXOS devices */
-        unsigned char i2c_slave;
-        io_region* iorw_regions; /* For LPC devices */
-        int regions_num;
-        char* dev_name;
-        int fd;
-        int res_fd; /*  Will be used with HCR if need*/
-        int sock; /*  in not -1 - remote interface */
-        void *ptr;
-        unsigned int map_size;
-        unsigned long long start_idx;
-        /************************ FPGA DDR3 *********************************/
-        void *ddr3_ptr;
-        unsigned long long ddr3_start_idx;
-        unsigned int ddr3_map_size;
-        /********************************************************************/
-        MIB_Private mib; /*  Data for IB interface (if relevant) */
-        void *ctx;
-        unsigned int i2c_RESERVED; /*  Reserved for internal usage (i2c internal) */
-        enum Mdevs_t flags;
-        u_int32_t connectx_wa_slot; /* apply connectx cr write workaround */
-        int connectx_wa_last_op_write;
-        u_int32_t connectx_wa_stat;
-        u_int64_t connectx_wa_max_retries;
-        u_int64_t connectx_wa_num_of_writes;
-        u_int64_t connectx_wa_num_of_retry_writes;
-        int server_ver_major;
-        int server_ver_minor;
-        unsigned int proto_type;
-        dev_info* dinfo;
-
-        //for ICMD access
-        icmd_params icmd;
-        // for UEFI
-        ctx_params context;
-        // for new pci capability
-        int old_mst;
-        int vsec_supp;
-        unsigned int vsec_addr;
-        int address_space;
-        int multifunction;
-        // for tools HCR access
-        tools_hcr_params hcr_params;
-        // for sending access registers
-        access_reg_params acc_reg_params;
-        // UL
-        void* ul_ctx;
-        // Dynamic libs Ctx
-        void* dl_context;
-        // Cables CTX
-        int is_cable;
-        void* cable_ctx;
-        f_mpci_change mpci_change;
-};
-
-#endif
diff --git a/man/mstconfig.1 b/man/mstconfig.1
deleted file mode 100644 (file)
index 9c600af..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-.TH MSTCONFIG "4.4.0" "" ""
-.SH NAME
-mstconfig
-.IP
-.SH SYNOPSIS:
-.IP
-mstconfig [\-d <mst device> ] [\-y|\-e] <s[et] <parameters to set>|q[uery]|r[eset]>
-.IP
-.SH OPTIONS:
-.TP
-\fB\-d\fR|\-\-dev <device>
-: Perform operation for a specified mst device.
-.TP
-\fB\-f\fR|\-\-file <conf_file>
-: raw configuration file.
-.TP
-\fB\-h\fR|\-\-help
-: Display help message.
-.TP
-\fB\-hh\fR|\-\-full_help
-: Display full help message.
-.TP
-\fB\-v\fR|\-\-version
-: Display version info.
-.TP
-\fB\-e\fR|\-\-show_default
-: Show default configurations.
-.TP
-\fB\-y\fR|\-\-yes
-: Answer yes in prompt.
-.IP
-.SH COMMANDS:
-.TP
-clear_semaphore
-: clear the tool semaphore.
-.TP
-q[uery]
-: query current supported configurations.
-.TP
-r[eset]
-: reset all configurations to their default value.
-.TP
-s[et]
-: set configurations to a specific device.
-.TP
-set_raw
-: set raw configuration file.(5th generation devices only.)
-.IP
-Supported Configurations:
-.IP
-\fBBoot Settings Extras:\fR These parameters are relevant only for servers using legacy BIOS PXE boot (flexboot).
-.IP
-IP_VER=<IPv4|IPv4_IPv6|IPv6|IPv6_IPv4>
-.IP
-IP_VER_P1=<IPv4|IPv4_IPv6|IPv6|IPv6_IPv4>
-.IP
-IP_VER_P2=<IPv4|IPv4_IPv6|IPv6|IPv6_IPv4>
-.IP
-\fBExternal Ports:\fR
-.IP
-ALLOW_RD_COUNTERS=<False|True>
-.IP
-PORT_OWNER=<False|True>
-.IP
-\fBIB Dynamically Connect:\fR
-.IP
-DCR_LIFO_SIZE=<SIZE>
-.IP
-LOG_DCR_HASH_TABLE_SIZE=<SIZE>
-.IP
-\fBInfiniband Boot Settings:\fR
-.IP
-BOOT_PKEY_P1=<PKEY>
-.IP
-BOOT_PKEY_P2=<PKEY>
-.IP
-\fBInternal Settings:\fR
-.IP
-INT_LOG_MAX_PAYLOAD_SIZE=<4KB|Auto>
-.IP
-\fBPCI Settings:\fR
-.IP
-FPP_EN=<False|True>
-.IP
-LOG_BAR_SIZE=<base_2_log_in_mb>
-.IP
-NUM_OF_VFS=<NUM>
-.IP
-NUM_PF_MSIX=<NUM>
-.IP
-NUM_VF_MSIX=<NUM>
-.IP
-PF_LOG_BAR_SIZE=<base_2_log_in_mb>
-.IP
-SRIOV_EN=<False|True>
-.IP
-VF_LOG_BAR_SIZE=<base_2_log_in_mb>
-.IP
-\fBPreboot Boot Settings:\fR Settings that control the legacy option ROM
-.IP
-BOOT_OPTION_ROM_EN_P1=<False|True>
-.IP
-BOOT_OPTION_ROM_EN_P2=<False|True>
-.IP
-BOOT_RETRY_CNT_P1=<0..7>
-.IP
-BOOT_RETRY_CNT_P2=<0..7>
-.IP
-BOOT_VLAN_EN_P1=<False|True>
-.IP
-BOOT_VLAN_EN_P2=<False|True>
-.IP
-BOOT_VLAN_P1=<VLAN ID>
-.IP
-BOOT_VLAN_P2=<VLAN ID>
-.IP
-LEGACY_BOOT_PROTOCOL_P1=<Both|None|PXE|iSCSI>
-.IP
-LEGACY_BOOT_PROTOCOL_P2=<Both|None|PXE|iSCSI>
-.IP
-\fBRoCE Congestion Control ECN:\fR
-.IP
-CLAMP_TGT_RATE_AFTER_TIME_INC_P1=<0|1>
-.IP
-CLAMP_TGT_RATE_AFTER_TIME_INC_P2=<0|1>
-.IP
-CLAMP_TGT_RATE_P1=<0|1>
-.IP
-CLAMP_TGT_RATE_P2=<0|1>
-.IP
-CNP_802P_PRIO_P1=<NUM>
-.IP
-CNP_802P_PRIO_P2=<NUM>
-.IP
-CNP_DSCP_P1=<0..7>
-.IP
-CNP_DSCP_P2=<0..7>
-.IP
-DCE_TCP_G_P1=<NUM>
-.IP
-DCE_TCP_G_P2=<NUM>
-.IP
-DCE_TCP_RTT_P1=<USEC>
-.IP
-DCE_TCP_RTT_P2=<USEC>
-.IP
-INITIAL_ALPHA_VALUE_P1=<NUM>
-.IP
-INITIAL_ALPHA_VALUE_P2=<NUM>
-.IP
-MIN_TIME_BETWEEN_CNPS_P1=<USEC>
-.IP
-MIN_TIME_BETWEEN_CNPS_P2=<USEC>
-.IP
-RATE_REDUCE_MONITOR_PERIOD_P1=<USEC>
-.IP
-RATE_REDUCE_MONITOR_PERIOD_P2=<USEC>
-.IP
-RATE_TO_SET_ON_FIRST_CNP_P1=<RATE_IN_MBIT>
-.IP
-RATE_TO_SET_ON_FIRST_CNP_P2=<RATE_IN_MBIT>
-.IP
-RPG_AI_RATE_P1=<RATE_IN_MBIT>
-.IP
-RPG_AI_RATE_P2=<RATE_IN_MBIT>
-.IP
-RPG_BYTE_RESET_P1=<BYTE_NUM>
-.IP
-RPG_BYTE_RESET_P2=<BYTE_NUM>
-.IP
-RPG_GD_P1=<0..15>
-.IP
-RPG_GD_P2=<0..15>
-.IP
-RPG_HAI_RATE_P1=<RATE_IN_MBIT>
-.IP
-RPG_HAI_RATE_P2=<RATE_IN_MBIT>
-.IP
-RPG_MAX_RATE_P1=<RATE_IN_MBIT>
-.IP
-RPG_MAX_RATE_P2=<RATE_IN_MBIT>
-.IP
-RPG_MIN_DEC_FAC_P1=<1..100>
-.IP
-RPG_MIN_DEC_FAC_P2=<1..100>
-.IP
-RPG_MIN_RATE_P1=<RATE_IN_MBIT>
-.IP
-RPG_MIN_RATE_P2=<RATE_IN_MBIT>
-.IP
-RPG_THRESHOLD_P1=<0..31>
-.IP
-RPG_THRESHOLD_P2=<0..31>
-.IP
-RPG_TIME_RESET_P1=<USEC>
-.IP
-RPG_TIME_RESET_P2=<USEC>
-.IP
-\fBRoCE Congestion Control Parameters:\fR
-.IP
-ROCE_CC_ALGORITHM_P1=<ECN|QCN>
-.IP
-ROCE_CC_ALGORITHM_P2=<ECN|QCN>
-.IP
-ROCE_CC_PRIO_MASK_P1=<0..255>
-.IP
-ROCE_CC_PRIO_MASK_P2=<0..255>
-.IP
-\fBRoCE V1.5 next protocol:\fR
-.IP
-ROCE_NEXT_PROTOCOL=<0..255>
-.IP
-\fBVPI Settings:\fR Control network link type
-.IP
-LINK_TYPE_P1=<ETH|IB|VPI>
-.IP
-LINK_TYPE_P2=<ETH|IB|VPI>
-.IP
-\fBWake On LAN:\R
-.IP
-WOL_MAGIC_EN=<False|True>
-.IP
-WOL_MAGIC_EN_P1=<False|True>
-.IP
-WOL_MAGIC_EN_P2=<False|True>
-.IP
-.SH Examples:
-.TP
-To query current configuration
-: mstconfig \fB\-d\fR \fI04:00.0\fP query
-.TP
-To set configuration
-: mstconfig \fB\-d\fR \fI05:00.0\fP set SRIOV_EN=1 NUM_OF_VFS=16 WOL_MAGIC_EN_P1=1
-.TP
-To set raw configuration
-: mstconfig \fB\-d\fR \fI05:00.0\fP \fB\-f\fR conf_file set_raw
-.TP
-To reset configuration
-: mstconfig \fB\-d\fR \fI04:00.0\fP reset
-.IP
-.SH Supported devices:
-.IP
-4th Generation devices: ConnectX3, ConnectX3\-Pro (FW 2.31.5000 and above).
-.IP
-5th Generation devices: ConnectIB, ConnectX4, ConnectX4\-LX.
-.IP
-.TP
-\fBNote: query device to view supported configurations.\fR
-
diff --git a/man/mstflint.1 b/man/mstflint.1
deleted file mode 100644 (file)
index 4e87267..0000000
+++ /dev/null
@@ -1,965 +0,0 @@
-.\"Text automatically generated by txt2man
-.TH mstflint 4.4.0  "May 2016" "" ""
-.SH NAME
-\fBmstflint \fP- Flash Interface
-.SH SYNOPSIS
-.nf
-.fam C
-  \fBmstflint\fP [\fIOPTIONS\fP] <command> [\fIParameters\fP]
-      [\fB-d\fP|\fB--device\fP <device>] [\fB--guid\fP <GUID>]
-      [\fB--guids\fP <GUIDS\.\.\.>] [\fB--mac\fP <MAC>]
-      [\fB--macs\fP <MACs\.\.\.>] [\fB--uid\fP <UID>]
-      [\fB--blank_guids\fP] [\fB--clear_semaphore\fP]
-      [\fB-h\fP|\fB--help\fP] [\fB--hh\fP] [\fB-i\fP|\fB--image\fP <image>]
-      [\fB--qq\fP] [\fB--nofs\fP] [\fB--allow_psid_change\fP] [\fB--allow_rom_change\fP]
-      [\fB--override_cache_replacement\fP] [\fB--no_flash_verify\fP]
-      [\fB-s\fP|\fB--silent\fP] [\fB-y\fP|\fB--yes\fP] [\fB--no\fP] [\fB--vsd\fP <string>]
-      [\fB--use_image_ps\fP] [\fB--use_image_guids\fP]
-      [\fB--use_image_rom\fP] [\fB--dual_image\fP] [\fB--ignore_dev_data\fP]
-      [\fB--use_fw\fP] [\fB--striped_image\fP] [\fB--banks\fP <bank>]
-      [\fB--log\fP <log_file>] [\fB--flash_params\fP <type, log2size, num_of_flashes>]
-      [\fB-v\fP|\fB--version\fP] 
-.fam T
-.fi
-.fam T
-.fi
-.SH DESCRIPTION
-\fBmstflint\fP [\fIOPTIONS\fP] <command> [\fIParameters\fP]
-mstflint is a FW (firmware) burning and flash memory operations tool for
-Mellanox Infiniband HCAs, Ethernet NIC cards, and switch devices.
-.SH OPTIONS
-\fBmstflint\fP [\fIOPTIONS\fP] <command> [\fIParameters\fP]
-.RS
-.TP
-.B
-\fB-d\fP|\fB--device\fP <device>
-: Device flash is connected to.
-Commands affected: all
-.TP
-.B
-\fB--guid\fP <GUID>
-: GUID base value. 4 GUIDs
-are automatically assigned to the following 
-values:
-.RS
-.TP
-.B
-guid
--> node GUID
-guid+1 -> port1
-guid+2 -> port2
-guid+3 -> system image GUID.
-.PP
-Note: port2 guid will be assigned even 
-for a
-single port HCA - The HCA ignores this value.
-.PP
-Commands affected: burn, sg
-.RE
-.TP
-.B
-\fB--guids\fP <GUIDS\.\.\.>
-: 4 GUIDs must be specified here.
-The specified GUIDs are assigned
-to the following fields, respectively:
-node, port1, port2 and system image GUID.
-.RS
-.PP
-Note: port2 guid must be specified even 
-for a
-single port HCA - The HCA ignores this value.
-It can be set to 0x0.
-.PP
-Commands affected: burn, sg
-.RE
-.TP
-.B
-\fB--mac\fP <MAC>
-: MAC address base value. 2 MACs
-are automatically assigned to the
-following values:
-.RS
-.TP
-.B
-mac
--> port1
-.TP
-.B
-mac+1
--> port2
-.PP
-Commands affected: burn, sg
-.RE
-.TP
-.B
-\fB--macs\fP <MACs\.\.\.>
-: 2 MACs must be specified here.
-The specified MACs are assigned
-to port1, port2, respectively.
-Commands affected: burn, sg
-.RS
-.PP
-Note: \fB-mac\fP/\fB-macs\fP flags are applicable only 
-for Mellanox
-Technologies ethernet products.
-.RE
-.TP
-.B
-\fB--uid\fP <UID>
-: ConnectIB/SwitchIB only. Derive and set the device UIDs 
-(GUIDs, MACs).
-UIDs are derived from the given base UID 
-according to Mellanox Methodology
-Commands affected: burn, sg
-.TP
-.B
-\fB--blank_guids\fP
-: Burn the image with blank GUIDs and MACs 
-(where
-applicable). These values can be 
-set later using
-the "sg" command (see details below).
-.RS
-.PP
-Commands affected: burn
-.RE
-.TP
-.B
-\fB--clear_semaphore\fP
-: Force clear the flash semaphore on the device.
-No command is allowed when this flag is 
-used.
-NOTE: May result in system instability 
-or flash
-corruption if the device or another
-application is currently using the flash.
-Exercise caution.
-.TP
-.B
-\fB-h\fP|\fB--help\fP
-: Prints this message and exits
-.TP
-.B
-\fB--hh\fP
-: Prints extended command help
-.TP
-.B
-\fB-i\fP|\fB--image\fP <image>
-: Binary image file.
-Commands affected: burn, verify
-.TP
-.B
-\fB--qq\fP
-: Run a quick query. When specified, mstflint 
-will not perform full
-image integrity checks during the query 
-operation. This may shorten
-execution time when running over slow interfaces 
-(e.g., I2C, MTUSB-1).
-Commands affected: burn, query
-.TP
-.B
-\fB--nofs\fP
-: Burn image in a non failsafe manner.
-.TP
-.B
-\fB--allow_psid_change\fP
-: Allow burning a FW image with a different 
-PSID (Parameter Set ID)than the
-one currently on flash. Note that changing 
-a PSID may cause the device to
-malfunction. Use only if you know what you 
-are doing
-.TP
-.B
-\fB--allow_rom_change\fP
-: Allow burning/removing a ROM to/from FW image 
-when product version is present.
-Use only if you know what you are doing
-.TP
-.B
-\fB--override_cache_replacement\fP
-: On SwitchX/ConnectIB devices:
-Allow accessing the flash even if the cache 
-replacement mode is enabled.
-NOTE: This flag is intended for advanced 
-users only.
-Running in this mode may cause the firmware 
-to hang.
-.TP
-.B
-\fB--no_flash_verify\fP
-: Do not verify each write on the flash.
-.TP
-.B
-\fB-s\fP|\fB--silent\fP
-: Do not print burn progress flyer.
-Commands affected: burn
-.TP
-.B
-\fB-y\fP|\fB--yes\fP
-: Non interactive mode - assume answer
-"yes" to all questions.
-Commands affected: all
-.TP
-.B
-\fB--no\fP
-: Non interactive mode - assume answer
-"no" to all questions.
-Commands affected: all
-.TP
-.B
-\fB--vsd\fP <string>
-: Write this string, of up to 208 characters, 
-to VSD when burn.
-.TP
-.B
-\fB--use_image_ps\fP
-: Burn vsd as appears in the given image - 
-do not keep existing VSD on flash.
-Commands affected: burn
-.TP
-.B
-\fB--use_image_guids\fP
-: Burn (guids/uids/macs) as appears in the 
-given image.
-Commands affected: burn
-.TP
-.B
-\fB--use_image_rom\fP
-: Do not save the ROM which exists in the device.
-Commands affected: burn
-.TP
-.B
-\fB--ignore_dev_data\fP
-: Do not attempt to take device data sections
-from device(sections will be taken from the image. FS3 Only).
-Commands affected: burn
-.TP
-.B
-\fB--use_fw\fP
-: Access to flash using FW (ConnectX3/ConnectX3Pro Device Only)
-Commands affected: all
-.TP
-.B
-\fB--dual_image\fP
-: Make the burn process burn two images on 
-flash (previously default algorithm). Currentdefault 
-failsafe burn process burns a single image 
-(in alternating locations).
-Commands affected: burn
-.TP
-.B
-\fB--striped_image\fP
-: Use this flag to indicate that the given 
-image file is in a "striped image" format.
-Commands affected: query verify
-.TP
-.B
-\fB--banks\fP <bank>
-: Set the number of attached flash devices 
-(banks)
-.TP
-.B
-\fB--log\fP <log_file>
-: Print the burning status to the specified 
-log file
-\fB--flash_params\fP <type, log2size, num_of_flashes>: Use the given parameters to access the flash 
-instead of reading them from the flash.
-Supported parameters:
-Type: The type of the flash, such as: M25PXxx, 
-M25Pxx, N25Q0XX, SST25VFxx, W25QxxBV, W25Xxx, 
-AT25DFxxx, S25FLXXXP.
-log2size: The log2 of the flash size.num_of_flashes: 
-the number of the flashes connected to the 
-device.
-.TP
-.B
-\fB-v\fP|\fB--version\fP
-: Version info.
-.RE
-.RE
-.PP
-.SH
-COMMANDS SUMMARY:
-.RS
-.TP
-.B
-burn|b
-: Burn flash
-.TP
-.B
-query|q [full]
-                                : Query misc. flash/firmware characteristics, use "full"
-to get more information.
-.TP
-.B
-verify|v [showitoc]
-                                : Verify entire flash, use "showitoc" to see ITOC headers
-in FS3 image only.
-.TP
-.B
-swreset
-                                : SW reset the target un-managed switch device. This command
-is supported only in the In-Band access method.
-.TP
-.B
-brom
-<ROM-file>                      : Burn the specified ROM file on the flash.
-.TP
-.B
-drom
-                                : Remove the ROM section from the flash.
-.TP
-.B
-rrom
-<out-file>                      : Read the ROM section from the flash.
-.TP
-.B
-bb
-: Burn Block - Burns the given image as is. No checks are done.
-.TP
-.B
-sg
-[guids_num=<num> step_size=<size>] 
-[nocrc]                         : Set GUIDs.
-
-.TP
-.B
-set_vpd
-[vpd file]                      : Set read-only VPD (For FS3 image only).
-.TP
-.B
-sv
-: Set the VSD.
-.TP
-.B
-ri
-<out-file>                      : Read the fw image on the flash.
-.TP
-.B
-dc
-[out-file]                      : Dump Configuration: print fw configuration file for the given image.
-.TP
-.B
-dh
-[out-file]                      : Dump Hash: dump the hash if it is integrated in the FW image
-.TP
-.B
-set_key
-[key]                           : Set/Update the HW access key which is used to enable/disable access to HW.
-The key can be provided in the command line or interactively typed after
-the command is given
-NOTE: The new key is activated only after the device is reset.
-.TP
-.B
-hw_access
-<enable|disable> [key]          : Enable/disable the access to the HW.
-The key can be provided in the command line or interactively typed after
-the command is given
-.TP
-.B
-hw
-<query|set> [ATTR=VAL]          : Set/query HW info and flash attributes.
-.TP
-.B
-erase|e <addr>
-: Erases sector.
-.TP
-.B
-rw
-<addr>                          : Read one dword from flash
-.TP
-.B
-ww
-<addr> <data>                   : Write one dword to flash
-.TP
-.B
-wwne
-<addr> <data>                   : Write one dword to flash without sector erase
-.TP
-.B
-wbne
-<addr> <size> <data \.\.\.>        : Write a data block to flash without sector erase.
-.TP
-.B
-wb
-<data-file> <addr>              : Write a data block to flash.
-.TP
-.B
-rb
-<addr> <size> [out-file]        : Read  a data block from flash
-.TP
-.B
-qrom
-                                : query rom in a given image.
- .TP
-.B
-checksum|cs                     
-                                : perform MD5 checksum on FW.
-.TP
-.B
-timestamp|ts <set|query|reset> [timestamp] [FW version] 
-                                : FW time stamping.
-.RE
-.PP
-
-.RE
-.PP
-.SH
-COMMANDS DESCRIPTION:
-.RS
-.SS
-
-.TP
-.B
-\fIName\fP: burn
-.IP
-\fIDescription\fP: Burn flash. Performs failsafe FW update from a raw binary image.
-.IP
-\fICommand\fP: burn|b
-.IP
-\fIParameters\fP: None
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 \fB-i\fP image1.bin burn
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 \fB-guid\fP 0x2c9000100d050 \fB-i\fP image1.bin b
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: query
-.IP
-\fIDescription\fP: Query miscellaneous FW and flash parameters. 
-.IP
-Display FW Version, GUIDs, PSID, and other info.
-.IP
-\fICommand\fP: query|q [full]
-.IP
-\fIParameters\fP: None
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 query
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: verify
-.IP
-\fIDescription\fP: Verify entire flash.
-.IP
-\fICommand\fP: verify|v [showitoc]
-.IP
-\fIParameters\fP: None
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 v
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: swreset
-.IP
-\fIDescription\fP: SW reset the target un-managed switch device. 
-.IP
-This command is supported only in the In-Band access method.
-.IP
-\fICommand\fP: swreset
-.IP
-\fIParameters\fP: None
-.IP
-\fIExamples\fP: None
-
-."***************************************************************************************
-.RE
-.TP
-.B
-\fIName\fP: brom
-.IP
-\fIDescription\fP: Burn the specified exp-ROM on the flash.
-.IP
-\fICommand\fP: brom <ROM-file>
-.IP
-\fIParameters\fP: file: The exp-ROM file.
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 brom exp-rom.rom
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: drom
-.IP
-\fIDescription\fP: Remove the exp-ROM from the flash if it is existing.
-.IP
-\fICommand\fP: drom
-.IP
-\fIParameters\fP: None
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 drom
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: rrom
-.IP
-\fIDescription\fP: Read the exp-ROM from the flash if it is existing.
-.IP
-\fICommand\fP: rrom <out-file>
-.IP
-\fIParameters\fP: file: filename to write the exp-ROM to.
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 rrom exp-rom.rom
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: bb
-.IP
-\fIDescription\fP: Burns entire flash verbatim from raw binary image. No checks are done on the flash or
-.IP
-on the given image file. No fields (such as VSD or Guids) are read from flash.
-.IP
-\fICommand\fP: bb
-.IP
-\fIParameters\fP: None
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 \fB-i\fP image1.bin bb
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: sg
-.IP
-\fIDescription\fP: Set GUIDs/MACs/UIDs in the given device/image.
-.IP
-Use \fB-guid\fP(s), \fB-mac\fP(s) and \fB-uid\fP(s) flags to set the desired values.
-.IP
-- On pre-ConnectX devices, the sg command is used in production to apply GUIDs/MACs values
-.IP
-to cards that were pre-burnt with blank GUIDs. It is not meant for use in field.
-.IP 
-On 4th generation devices, this command can operate on both image file and image on flash.
-.IP
-If the GUIDs/MACs/UIDs in the image on flash are non-blank,
-.IP
-mstflint will re-burn the current image using the given GUIDs/MACs/UIDs.
-.IP
-\fICommand\fP: sg   [guids_num=<num> step_size=<size>] | [nocrc]
-.IP
-\fIParameters\fP:
-.IP
-nocrc: (optional) When specified the mstflint would not update
-.IP
-the full image crc after changing the guids
-.IP
-num_of_guids: number of GUIDs to be allocated per physical port (FS3 Only)
-.IP
-step_size: step size between GUIDs (FS3 Only)
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 \fB-guid\fP 0x0002c9000100d050 sg
-.IP \(bu 4
-mstflint -d 08:00.0 -guid 0x0002c9000100d050 -mac 0x0002c900d050 sg
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: set vpd
-.IP
-\fIDescription\fP: Set Read-only VPD, Set VPD in the given FS3 image.
-.IP
-\fICommand\fP: set_vpd [vpd file]
-.IP
-\fIParameters\fP: vpd file: bin file containing the vpd data
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-i\fP fw_image.bin set_vpd vpd.bin
-
-."***************************************************************************************
-
-.RE
-.TP
-.b
-\fIName\fP: sv
-.IP
-\fIDescription\fP: Set VSD in the given device/image.
-.IP
-Use \fB-vsd\fP flag to set the desired VSD string.
-.IP
-\fICommand\fP: sv
-.IP
-\fIParameters\fP: None
-.IP
-\fIExamples\fP: 
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 \fB-vsd\fP VSD_STRING sv
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: ri
-.IP
-\fIDescription\fP: Read the FW image from flash and write it to a file.
-.IP
-\fICommand\fP: ri <out-file>
-.IP
-\fIParameters\fP: file: filename to write the image to (raw binary).
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 ri file.bin
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: dc
-.IP
-\fIDescription\fP:Print (to screen or to a file) the FW configuration text file used by the image generation process.
-.IP
-This command would fail if the image does not contain a FW configuration section. Existence of this
-.IP
-section depends on the version of the image generation tool.
-.IP
-\fICommand\fP: dc [out-file]
-.IP
-\fIParameters\fP: file: (optional) filename to write the dumped configuration to. If not given, the data is printed to screen.
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 dc
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: dh
-\fIDescription\fP: Print (to screen or to a file) the HASH text file used by the FW.
-.IP
-This command would fail if the image does not contain a Hash file.
-.IP
-\fICommand\fP: dh [out-file]
-.IP
-\fIParameters\fP: file - (optional) filename to write the dumped tracer hash file to. If not given, the data is printed to screen.
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 dh hash.csv
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: set_key
-.IP
-\fIDescription\fP: Set/Update the HW access key which is used to enable/disable access to HW.
-.IP
-\fICommand\fP: set_key [key]
-.IP
-\fIParameters\fP: key: (optional) The new key you intend to set (in hex).
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 set_key 1234deaf5678
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: hw_access
-.IP
-\fIDescription\fP: Enable/disable the access to the HW.
-.IP
-\fICommand\fP: hw_access <enable|disable> [key]
-.IP
-\fIParameters\fP: <enable/disable>: Specify if you intend to disable or enable the HW access.
-.IP
-You will be asked to type a key when you try to enable HW access.
-.IP
-.B
-key: (optional) The key you intend to use for enabling the HW access.
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 hw_access enable
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: hw
-.IP
-\fIDescription\fP: Access HW info and flash attributes.
-.IP
-\fICommand\fP: hw <query|set> [ATTR=VAL]
-.IP
-\fIParameters\fP: query: query HW info
-.IP
-set [ATTR=VAL]: set flash attribure
-.IP
-Supported attributes:
-.IP
-QuadEn: can be 0 or 1
-.IP
-DummyCycles: can be [1..15]
-.IP
-Flash[0|1|2|3].WriteProtected can be:
-.IP
-<Top|Bottom>,<1|2|4|8|16|32|64>-<Sectors|SubSectors>
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 hw query
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 hw set QuadEn=1
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 hw set Flash1.WriteProtected=Top,1-SubSectors
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: erase
-.IP
-\fIDescription\fP: Erases a sector that contains specified address.
-.IP
-\fICommand\fP: erase|e <addr>
-.IP
-\fIParameters\fP: addr - address of word in sector that you want to erase.
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 erase 0x10000
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: rw
-.IP
-\fIDescription\fP: Read one dword from flash.
-.IP
-\fICommand\fP: rw <addr>
-.IP
-\fIParameters\fP: addr - address of word to read
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 rw 0x20
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: ww
-.IP
-\fIDescription\fP: Write one dword to flash.
-.IP
-Note that the utility will read an entire flash sector,
-.IP
-modify one word and write the sector back. This may take a few seconds.
-.IP
-\fICommand\fP: ww <addr> <data>
-.IP
-\fIParameters\fP: addr - address of word
-.IP
-data - value of word
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 ww 0x10008 0x5a445a44
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: wwne
-.IP
-\fIDescription\fP: Write one dword to flash without sector erase.
-.IP
-Note that the result of operation is undefined and depends
-.IP
-on flash type. Usually "bitwise AND" (&) between specified
-.IP
-word and previous flash contents will be written to specified address.
-.IP
-\fICommand\fP: wwne <addr> <data>
-.IP
-\fIParameters\fP:
-.IP
-addr - address of word
-.IP
-data - value of word
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 wwne 0x10008 0x5a445a44
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: wbne
-.IP
-\fIDescription\fP: Write a block of data to the flash without erasing.
-.IP
-\fICommand\fP: wbne <addr> <size> <data \.\.\.>
-.IP
-\fIParameters\fP: addr - address of block
-.IP
-size - size of data to write in bytes
-.IP
-data - data to write - space separated dwords
-.IP
-Examples:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 wbne 0x10000 12 0x30000 0x76800 0x5a445a44
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: wb
-.IP
-\fIDescription\fP: Write a block of data to the flash.
-.IP
-\fICommand\fP: wb <data-file> <addr>
-.IP
-\fIParameters\fP: data-file - file that contains the data to be written
-.IP
-addr - address to write the block to
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 wb myData.bin 0x0
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: rb
-.IP
-\fIDescription\fP:
-.IP
-Read a data block from the flash and write it to a file or to screen.
-.IP
-\fICommand\fP: rb <addr> <size> [out-file]
-.IP
-\fIParameters\fP: addr - address of block
-.IP
-size - size of data to read in bytes
-.IP
-file - filename to write the block (raw binary). If not given, the data is printed to screen.
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 rb 0x10000 100 file.bin
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: qrom
-.IP
-\fIDescription\fP: query rom in a given image.
-.IP
-\fI'Command\fP: qrom
-.IP
-\fIParameters\fP: None
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-i\fP fw_image.bin qrom 
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: checksum
-.IP
-\fIDescription\fP: perform an MD5 checksum on relevant(non-persistent between FW upgrades) data on device/image.
-.IP
-\fI'Command\fP: checksum|cs
-.IP
-\fIParameters\fP: None
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 checksum
-
-."***************************************************************************************
-
-.RE
-.TP
-.B
-\fIName\fP: time stamp
-.IP
-\fIDescription\fP: set/query/reset time stamp on device/image.
-.IP
-\fI'Command\fP: timestamp|ts <set|query|reset> [timestamp] [FW version]
-.IP
-\fIParameters\fP: 
-        set <timestamp> [FW version] : set the specified timestamp. if set on device FW version must be specified
-                                       timestamp should comply with ISO 8601 format and provided with UTC timezone: YYYY-MM-DDThh:mm:ssZ
-        query : query device/image to view the timestamp
-        reset : reset the timestamp, remove the timestamp from device/image.
-.IP
-\fIExamples\fP:
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 ts set 2015\-12\-24T14:52:33Z 14.12.1100
-.IP \(bu 4
-mstflint \fB-d\fP 04:00.0 ts reset
-.IP \(bu 4
-mstflint \fB-i\fP ./fw4115.bin ts set
-.IP \(bu 4
-mstflint \fB-i\fP ./fw4115.bin ts query
-
-.RE
-Return values:
-0 - Successful completion
-1 - An error has occurred
-7 - For burn command - FW already updated - burn was aborted.
diff --git a/man/mstmcra.1 b/man/mstmcra.1
deleted file mode 100644 (file)
index d7a72e2..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-.TH MSTMCRA "4.4.0" "" ""
-.SH NAME
-mstmcra
-.IP
-.SH SYNOPSIS:
-.IP
-Mellanox Configuration Registers Access tool
-
-mstmcra [-s <i2c-slave>] [-a <adb dump>] [-v] [-h] <device>
-     <addr[.<bit offset>:<bit size>]|[,<bytes number>]> [data]
-
-    If data is given, operation is write. Otherwise it is read.
-    If a bit range is given in the address (E.G.: 0xf0014.16:8):
-          For read  - Only the requested bits are printed.
-          For write - Read-Modify-Write. Only the requested bits are changed.
-    If 'bytes number' is given in the address (E.G.: 0xf0014,16):
-          For read  - Will read a block (its size is the given bytes number).
-          For write - User need to give list of dwrods to write,
-                      number of dwords should be (bytes number/4).
-.IP
-.SH OPTIONS:
-.TP
-\fB-s\fR <i2c\-slave> : I2C slave address.
-.TP
-\fB-a\fR <dump file>  : adb dump file, used for access by path.
-.TP
-\fB-h\fR              : Print this help message.
-.TP
-\fB-v\fR              : Display version info
-.IP
-.SH Environment Vairables:
-.TP
-ADB_DUMP              : Holds the path to adb dump, used for access by path (can be overriden by "\-a").
-.TP
diff --git a/man/mstmread.1 b/man/mstmread.1
deleted file mode 100644 (file)
index 5946cc1..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-.TH MSTMREAD "4.4.0" "" ""
-.SH NAME
-mstmread
-.IP
-.SH SYNOPSIS:
-.IP
-Mellanox Read Configuration Register Tool
-
-mstmread <device> <addr>
-.IP
diff --git a/man/mstmtserver.1 b/man/mstmtserver.1
deleted file mode 100644 (file)
index bccd186..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-.TH MSTMTSERVER "4.4.0" "" ""
-.SH NAME
-mstmtserver
-.IP
-.SH SYNOPSIS:
-.IP
-mstmtserver [options]
-.IP
-.SH OPTIONS:
-.TP
-\fB-p\fR[ort] <port> - Listen to specify port (default is 23108).
-.TP
-\fB-d\fR[ebug]       - Print all socket traffic (for debuging only).
-.TP
-\fB-h\fR[elp]        - Print help message.
-.TP
diff --git a/man/mstmwrite.1 b/man/mstmwrite.1
deleted file mode 100644 (file)
index 9a1464d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-.TH MSTMWRITE "4.4.0" "" ""
-.SH NAME
-mstmwrite
-.IP
-.SH SYNOPSIS:
-.IP
-Mellanox Write Configuration Register Tool
-
-mstmread <device> <addr> <value>
-.IP
diff --git a/man/mstregdump.1 b/man/mstregdump.1
deleted file mode 100644 (file)
index bf29abd..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-.TH MSTREGDUMP "4.4.0" "" ""
-.SH NAME
-mstregdump
-.IP
-.SH SYNOPSIS:
-.IP
-Mellanox mstdump utility, dumps device internal configuration data
-
-mstregdump [-full] <device> [i2c-slave] [-v[ersion] [-h[elp]]]
-.IP
-.SH OPTIONS:
-.TP
-\fB-full\fR           : Dump more expanded list of addresses
-         \fBNote\fR : be careful when using this flag, None safe addresses might be read.
-.TP
-\fB-h\fR              : Print this help message.
-.TP
-\fB-v\fR              : Display version info
-.IP
-.SH EXAMPLE:
-.TP
-mstregdump 04:00.0
-.TP
diff --git a/man/mstvpd.1 b/man/mstvpd.1
deleted file mode 100644 (file)
index 2f69f81..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-.TH MSTVPD "4.4.0" "" ""
-.SH NAME
-mstvpd
-.IP
-.SH SYNOPSIS:
-.IP
-Mellanox VPD read tool
-
-mstvpd [-m|-n] [-t ##] <file> [\-- keyword ...]
-.IP
-.SH OPTIONS:
-.TP
-\fB-h\fR      :Print this help.
-.TP
-\fB-v\fR      :Print tool version.
-.TP
-\fB-m\fR      :Dump raw VPD data to stdout.
-.TP
-\fB-n\fR      :Do not validate check sum.
-.TP
-\fB-r\fR      :Do not check and display the VPD_W tag in the vpd data.
-.TP
-\fB-t\fR ##   :Time out after ## seconds. (Default is 30.)
-.IP
-.SH File:
-.TP
-The PCI id number of the HCA (for example, "2:00.0"),
-.TP
-the device name (such as "mlx4_0")
-.TP
-the absolute path to the device ("/sys/class/infiniband/mlx4_0/device")
-.TP
-or '-' to read VPD data from the standard input.
-.IP
-.SH Keyword(s):
-.TP
-Only display the requested information. (ID, PN, EC, SN, etc...)
diff --git a/mflash/Makefile.am b/mflash/Makefile.am
deleted file mode 100644 (file)
index 44ac7cc..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-AM_CPPFLAGS = -I. -I$(top_srcdir)/include/mtcr_ul -I$(top_srcdir)/common -I$(top_srcdir)/tools_layouts -I$(top_srcdir)/reg_access \
-          -I$(top_srcdir)/cmdif -I$(top_srcdir)/tools_res_mgmt
-
-AM_CFLAGS = -MD -pipe -Wall -W -DMST_UL -g ${MFLASH_INBAND_FLAG}
-
-noinst_LTLIBRARIES = libmflash.a
-
-libmflash_a_SOURCES =  mflash.c mflash.h\
-                       mflash_pack_layer.c mflash_pack_layer.h mflash_access_layer.c mflash_access_layer.h\
-                       mflash_types.h mlash_common_structs.h
-
-noinst_HEADERS = mflash.h mflash_types.h mflash_common_structs.h
diff --git a/mflash/mflash.c b/mflash/mflash.c
deleted file mode 100644 (file)
index 299441c..0000000
+++ /dev/null
@@ -1,3094 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-#ifdef IRISC
-
-#define NULL 0
-
-#else
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-
-#include <common/bit_slice.h>
-#include <mtcr.h>
-#include <reg_access.h>
-
-#ifndef UEFI_BUILD
-#include <tools_cif.h>
-#endif
-
-#include "mflash_pack_layer.h"
-#include "mflash_access_layer.h"
-#include "mflash.h"
-
-#define ICMD_MAX_BLOCK_WRITE   128
-#define INBAND_MAX_BLOCK_WRITE 32
-
-#define ARR_SIZE(arr) sizeof(arr)/sizeof(arr[0])
-
-#ifndef __WIN__
-
-#if defined __DJGPP__
-//
-// DJGPP - GCC PORT TO MS DOS
-//
-#include <netinet/in.h>
-#include <unistd.h>
-
-#define bswap_32(x) ntohl(x)
-
-#endif // __DJGPP__
-
-#define OP_NOT_SUPPORTED EOPNOTSUPP
-
-#else // __WIN__
-
-//
-// Windows (Under DDK)
-//
-#define OP_NOT_SUPPORTED EINVAL
-#define usleep(x) Sleep(((x + 999)/1000))
-
-#endif // __WIN__
-#endif
-
-#ifndef zero
-#define zero 0
-#endif
-
-// Timer definitions (needed when polling flash semaphore in windows)
-#ifndef __WIN__
-#define TIMER_INIT(...)
-#define TIMER_STOP(...)
-#define TIMER_PRINT(...)
-#define TIMER_GET_DIFF(...)
-#define TIMER_INIT_AND_START(...)
-#define TIMER_STOP_GET_DIFF(...)
-#define TIMER_CHECK(...)
-#else
-#include <windows.h>
-#define TIMER_INIT()\
-    SYSTEMTIME _start, _end;\
-    int _diff_in_sec, _diff_in_ms;\
-    (void)_diff_in_sec;\
-    (void)_diff_in_ms
-#define TIMER_START()\
-    GetSystemTime(&_start)
-#define TIMER_STOP()\
-    GetSystemTime(&_end)
-#define TIMER_PRINT(...)\
-    _diff_in_sec = _end.wSecond - _start.wSecond;\
-    _diff_in_ms = (_end.wMilliseconds - _start.wMilliseconds;\
-    printf(__VA_ARGS__);\
-    printf("it took %d sec %d and ms to run.\n", _diff_in_sec, _diff_in_ms)
-#define TIMER_GET_DIFF(diff_in_sec, diff_in_ms)\
-    diff_in_sec = _end.wSecond - _start.wSecond;\
-    diff_in_ms = _end.wMilliseconds - _start.wMilliseconds
-#define TIMER_INIT_AND_START()\
-    TIMER_INIT();\
-    TIMER_START()
-#define TIMER_STOP_GET_DIFF(diff_in_sec, diff_in_ms)\
-    TIMER_STOP();\
-    TIMER_GET_DIFF(diff_in_sec, diff_in_ms)
-#define TIMER_CHECK(max_sec, max_ms, action_on_tout)\
-    TIMER_STOP();\
-    _diff_in_sec = _end.wSecond - _start.wSecond;\
-    _diff_in_ms = _end.wMilliseconds - _start.wMilliseconds;\
-    if (_diff_in_sec >= max_sec && _diff_in_ms > max_ms) {\
-        action_on_tout;\
-    }
-#endif
-
-//
-// Mellanox Technologies LTD Devices naming/abbreviation convention in this file:
-//
-// ConnectX         cntx
-// ConnectIB        cib
-
-
-/*
-*  Low level operations
-*/
-
-/* Flash Functions: */
-
-// This is an interface function when running in IRISC
-int mf_open_fw(mflash* mfl, flash_params_t* flash_params, int num_of_banks);
-int cntx_int_spi_get_status_data(mflash* mfl, u_int8_t op_type, u_int32_t* status, u_int8_t data_num);
-
-// forward decl:
-int mfl_com_lock(mflash* mfl);
-int release_semaphore(mflash* mfl, int ignore_writer_lock);
-
-
-// NOTE: This macro returns ... not nice.
-#define CHECK_RC(rc) do {if (rc) return rc;} while(0)
-#define CHECK_RC_REL_SEM(mfl, rc) do {if (rc) {release_semaphore(mfl, 0); return rc;}} while(0)
-
-#define ARRSIZE(arr) (sizeof(arr)/sizeof(arr[0]))
-
-#ifdef ESS
-#define MREAD4(offs, val)  do {*val=READ_WORD(offs);} while (0)
-#define MWRITE4(offs, val) do {WRITE_WORD(offs, val);} while (0)
-#else
-#define MREAD4(offs, val)  do { if (mread4 (mfl->mf, offs, val) != 4) { \
-                                  /*fprintf(stderr, "-E- Cr read (0x%08x) failed: %s(%d)\n", (u_int32_t)(offs), strerror(errno), (u_int32_t)errno);*/ \
-                  return 2; } /*printf("-D- %s:%d mread4: offs = %#x, val = %#x\n", __FUNCTION__, __LINE__, offs, val);*/\
-                                  } while (0)
-
-#define MWRITE4(offs, val) do { if (mwrite4(mfl->mf, offs, val) != 4) { \
-                                  /*fprintf(stderr, "-E- Cr write (0x%08x, 0x%08x) failed: %s(%d)\n", (u_int32_t)(offs), (u_int32_t)(val), strerror(errno), (u_int32_t)errno);*/ \
-                  return 2; } /*printf("-D- %s:%d mwrite4: offs = %#x, val = %#x\n",   __FUNCTION__, __LINE__, offs, val);*/ \
-                                  } while (0)
-#endif
-
-// Constants:
-
-// General:
-#define GPIO_DIR_L       0xf008c
-#define GPIO_POL_L       0xf0094
-#define GPIO_MOD_L       0xf009c
-#define GPIO_DAT_L       0xf0084
-#define GPIO_DATACLEAR_L 0xf00d4
-#define GPIO_DATASET_L   0xf00dc
-
-#define SEMAP63          0xf03fc
-
-// InfiniHost specific
-#define IDLE           0
-#define READ4          (1<<29)
-#define WRITE1         (2<<29)
-
-#define CR_FLASH       0xf01a4
-#define ADDR_MSK       0x7ffffUL
-#define CMD_MASK       0xe0000000UL
-
-#define SST_STATUS_REG_VAL   0x80
-#define ATMEL_STATUS_REG_VAL 0x0
-
-#define CPUMODE_MSK    0xc0000000UL
-#define CPUMODE_SHIFT  30
-#define CPUMODE        0xf0150
-
-#define IS4_HW_ID 0x1b3
-#define SWITCHX_HW_ID 0x245
-#define CONNECTX_HW_ID  0x190
-#define CX3_PRO_HW_ID 0x1F7
-#define CX3_HW_ID     0x1F5
-#define CX4_HW_ID        0x209
-#define CX4LX_HW_ID   0x20b
-#define CX5_HW_ID     0x20d
-#define CONNECT_IB_HW_ID 0x1FF
-#define SWITCH_IB_HW_ID 0x247
-#define SPECTRUM_HW_ID 0x249
-#define SWITCH_IB2_HW_ID 0x24b
-
-/*
- * Device IDs Macros:
- */
-
-#define IS_CONNECTX_4TH_GEN_FAMILY(dev_id) \
-        (((dev_id) == CONNECTX_HW_ID) || ((dev_id) == CX3_HW_ID) || ((dev_id) == CX3_PRO_HW_ID))
-#define IS_IS4_FAMILY(dev_id) \
-    (((dev_id) == IS4_HW_ID))
-#define IS_SX(dev_id) \
-        ((dev_id) == SWITCHX_HW_ID)
-#define IS_SIB(dev_id) \
-        ((dev_id) == SWITCH_IB_HW_ID)
-#define IS_SIB2(dev_id) \
-        ((dev_id) == SWITCH_IB2_HW_ID)
-#define IS_SEN(dev_id) \
-        ((dev_id) == SPECTRUM_HW_ID)
-#define IS_CONNECT_IB(dev_id) \
-        ((dev_id) == CONNECT_IB_HW_ID)
-#define IS_CONNECTX4(dev_id) \
-        ((dev_id) == CX4_HW_ID)
-#define IS_CONNECTX4LX(dev_id) \
-        ((dev_id) == CX4LX_HW_ID)
-#define IS_CONNECTX5(dev_id) \
-        ((dev_id) == CX5_HW_ID)
-#define HAS_TOOLS_CMDIF(dev_id) \
-    ((((dev_id) == CX3_HW_ID) || ((dev_id) == CX3_PRO_HW_ID)))
-#define HAS_ICMD_IF(dev_id) \
-    ((IS_CONNECT_IB(dev_id)) || (IS_SIB(dev_id)) || (IS_CONNECTX4(dev_id)) || (IS_CONNECTX4LX(dev_id)) || (IS_SEN(dev_id)) || (IS_SIB2(dev_id)) || (IS_CONNECTX5(dev_id)))
-#define IS_SWITCH(dev_id) \
-       ((IS_IS4_FAMILY(dev_id)) || (IS_SX(dev_id)) || (IS_SIB(dev_id)) || (IS_SEN(dev_id)) || (IS_SIB2(dev_id)))
-#define SUPPORTS_SW_RESET(devid)\
-        (((devid) == IS4_HW_ID) || ((devid) == SWITCHX_HW_ID) || ((devid) == SWITCH_IB_HW_ID) || ((devid) == SWITCH_IB2_HW_ID))
-
-
-// Write/Erase delays
-// ------------------
-// The below delays improve CPU utilization when doing long operations by
-// sleeping instead of full throtle polling.
-// Their values are set so they will not lenghen burn time (at least not by a meaningfull duration)
-// and will save cpu. The delays are divided to an initial_delay, and then retry num_of_retries times waiting retry_delay.
-// The initial delay is set according to the fastest flash we currently support (W25QxxBV).
-// The retry_delay*num_of_retries is set according to the slowest flash maximum AC timing.
-//
-// To test there's no performance degradation by these delay: set DELAYS to 0 and RETRIES to infinity, and compare perf.
-
-enum FlashConstant {
-    // All time values are in usecs
-    WRITE_BLOCK_INIT_DELAY       = 10,
-    WRITE_ADDITIONAL_BYTE_DELAY  = 1,
-    WRITE_BLOCK_RETRY_DELAY      = 10,
-    WRITE_BLOCK_RETRIES          = 30000,
-
-    ERASE_SUBSECTOR_INIT_DELAY   = 20000,
-    ERASE_SUBSECTOR_RETRY_DELAY  = 300,
-    ERASE_SUBSECTOR_RETRIES      = 10000,
-
-    FLASH_CMD_CNT  = 5000,      // Number of reads till flash cmd is zeroed
-
-    GPIO_SEM_TRIES = 1024 ,     // Number of tries to obtain a GPIO sem.
-
-    MAX_WRITE_BUFFER_SIZE = 256 // Max buffer size for buffer write devices
-};
-
-
-enum IntelFlashCommand {
-    FC_ReadID      = 0x90,
-    FC_Read        = 0xFF,
-    FC_Erase       = 0x20,
-    FC_Confirm     = 0xD0,
-    FC_Clear       = 0x50,
-    FC_Write       = 0x40,
-    FC_LoadPB      = 0xE0,
-    FC_PBWrite     = 0x0C,
-    FC_Status      = 0x70,
-    FC_Suspend     = 0xB0,
-    FC_Resume      = 0xD0,
-    FC_ReadESR     = 0x71,
-    FC_QueryCFI    = 0x98,
-    FC_SCSErase    = 0x28,
-    FC_SCSWrite    = 0xE8
-};
-
-enum IntelFlashStatus {
-    FS_Ready       = 0x80,
-    FS_Suspended   = 0x40,
-    FS_Error       = 0x3E,
-    FS_BlockError  = 0x3F
-};
-
-
-//static inline
-static u_int32_t log2up (u_int32_t in) {
-    u_int32_t i;
-    for (i = 0; i < 32; i++) {
-        if (in <= (u_int32_t)(1 << i))
-            break;
-    }
-
-    return i;
-}
-
-// ConnectX SPI interface:
-int cntx_flash_init               (mflash* mfl, flash_params_t* flash_params);
-int cntx_flash_init_direct_access (mflash* mfl, flash_params_t* flash_params);
-
-int cntx_st_spi_reset          (mflash* mfl);
-int cntx_st_spi_erase_sect     (mflash* mfl, u_int32_t addr);
-
-int cntx_st_spi_block_write_ex (mflash*   mfl,
-                                u_int32_t blk_addr,
-                                u_int32_t blk_size,
-                                u_int8_t* data,
-                                u_int8_t  is_first,
-                                u_int8_t  is_last,
-                                u_int32_t total_size);
-
-int cntx_sst_spi_block_write_ex (mflash* mfl,
-                                 u_int32_t blk_addr,
-                                 u_int32_t blk_size,
-                                 u_int8_t* data);
-
-
-int cntx_st_spi_block_read_ex  (mflash*   mfl,
-                                u_int32_t blk_addr,
-                                u_int32_t blk_size,
-                                u_int8_t* data,
-                                u_int8_t  is_first,
-                                u_int8_t  is_last);
-
-int cntx_spi_get_type(mflash* mfl, u_int8_t op_type, u_int8_t *vendor, u_int8_t *type, u_int8_t *capacity);
-
-int cntx_spi_write_status_reg(mflash* mfl, u_int32_t status_reg, u_int8_t write_cmd, u_int8_t bytes_num);
-
-int spi_get_num_of_flashes(int prev_num_of_flashes);
-
-#ifndef UEFI_BUILD
-static int trm2mfe_err(trm_sts rc);
-#endif
-
-int my_memset(void* dst, u_int8_t data, u_int32_t len) {
-    u_int32_t i;
-    u_int8_t* bytes = (u_int8_t*)dst;
-
-    for (i = 0; i < len;  i++) {
-        bytes[i] = data;
-    }
-
-    return 0;
-}
-
-int my_memcpy(void* dst, void* src, u_int32_t len) {
-    u_int32_t i;
-    u_int8_t* dbytes = (u_int8_t*)dst;
-    u_int8_t* sbytes = (u_int8_t*)src;
-
-    for (i = 0; i < len;  i++) {
-        dbytes[i] = sbytes[i];
-    }
-
-    return 0;
-}
-
-#if 0 // TODO: Currently the polling is in max throttle - no sleep is done
-int usleep(u_int32_t usecs) {
-    u_int32_t i;
-    u_int32_t stub = 0;
-    // TODO: Some more intelegent /accurate way to do it, or remove T.Os completely.
-    u_int32_t loops = (usecs << 9);
-    for (i = 0; i < loops; i++) {
-        stub++;
-    }
-
-    return stub;
-}
-#endif
-
-int write_chunks   (mflash* mfl, u_int32_t addr, u_int32_t len, u_int8_t* data) {
-    int       rc;
-    u_int8_t  *p         = (u_int8_t *)data;
-
-    int       all_ffs;
-
-    // TODO - Check MAX_WRITE_BUFFER_SIZE against block_size in open (or here)
-    u_int8_t  tmp_buff[MAX_WRITE_BUFFER_SIZE];
-
-    if (!mfl) {
-        return MFE_BAD_PARAMS;
-    }
-
-    //printf("-D- write_chunks(addr=%x, size=%x)\n", addr, len);
-
-    while (len) {
-        u_int32_t i;
-        u_int32_t prefix_pad_size = 0;
-        u_int32_t suffix_pad_size = 0;
-
-        u_int32_t block_size = mfl->attr.block_write;
-        u_int32_t block_mask = ~(block_size - 1 );
-
-        u_int32_t block_addr = addr & block_mask;
-        u_int32_t data_size  = block_size;
-
-        u_int8_t* block_data = p;
-
-        //
-        // To keep things simple, we always write full blocks.
-        // (there's an option to write partial buffer, but Intel reference code always
-        // writes full buffer, with pads if needed. I do the same ...)
-        //
-        // The First and last cycles (can be the same one) may not be block aligned.
-        // If this is the case, copy the block data to a 0xFF padded temp buffer (writing 0xFF
-        // does not effect the flash)
-        //
-
-        prefix_pad_size = addr - block_addr;
-
-        if ((addr & block_mask) == ((addr + len) & block_mask)) {
-            suffix_pad_size = block_size - ((addr + len) % block_size);
-        }
-
-        if (suffix_pad_size || prefix_pad_size) {
-            my_memset(tmp_buff, 0xff, block_size);
-
-            data_size -= prefix_pad_size;
-            data_size -= suffix_pad_size;
-
-            my_memcpy(tmp_buff + prefix_pad_size, p , data_size);
-
-            block_data = tmp_buff;
-        } else if (mfl->attr.page_write) {
-            // current write is aligned to block size,
-            // write data to next page, or to last full block (if we're in the last block in a page)
-            u_int32_t page_mask             = ~(mfl->attr.page_write - 1);
-            u_int32_t next_page_addr        = (addr + mfl->attr.page_write + 1) & page_mask;
-            u_int32_t size_to_page_boundary = next_page_addr - addr;
-            if (len > size_to_page_boundary) {
-                block_size = size_to_page_boundary;
-            } else {
-                block_size = len & block_mask;
-            }
-            data_size = block_size;
-        }
-
-        //
-        // Check to see if there's something to do
-        //
-        all_ffs = 1;
-        for (i = 0; i < block_size ; i++) {
-            if (block_data[i] != 0xff) {
-                all_ffs = 0;
-                break;
-            }
-        }
-
-        if (!all_ffs) {
-            rc = mfl->f_write_blk(mfl, block_addr, block_size, block_data); CHECK_RC(rc);
-
-            if (mfl->opts[MFO_NO_VERIFY] == 0) {
-                u_int8_t verify_buffer[MAX_WRITE_BUFFER_SIZE];
-                rc = mfl->f_reset(mfl);                                CHECK_RC(rc);
-                rc = mfl->f_read(mfl, addr, data_size, verify_buffer); CHECK_RC(rc);
-                // Verify data
-                for (i = 0 ; i < data_size ; i++) {
-                   // printf("-D- Verify: addr = %#x, verify_buffer[%d] = %#x, block_data[%d] = %#x\n",
-                   //         addr, i, verify_buffer[i], i + prefix_pad_size, block_data[i + prefix_pad_size]);
-                    if (verify_buffer[i] != block_data[i + prefix_pad_size]) {
-                        //return _f.errmsg("Write verification failed. Addr %08x - exp:%02x act:%02x\n",
-                        //       addr + i,
-                        //       block_data[i + prefix_pad_size] ,
-                        //       verify_buffer[i]);
-                        return MFE_VERIFY_ERROR;
-                    }
-                }
-            }
-        }
-
-        //
-        // loop advance
-        //
-
-        addr += data_size;
-        p    += data_size;
-        len  -= data_size;
-    }
-
-    rc = mfl->f_reset(mfl); CHECK_RC(rc);
-
-    return MFE_OK;
-}
-
-
-////////////////////////////////////////
-//
-// ST SPI functions - common for InfiniHostIIILx and ConnectX
-//
-////////////////////////////////////////
-enum StFlashCommand {
-    SFC_SE    = 0xD8,
-    SFC_SSE   = 0x20,
-    SFC_PP    = 0x02,
-    SFC_RDSR  = 0x05,
-    SFC_RDSR2 = 0x35,
-    SFC_WREN  = 0x06,
-    SFC_READ  = 0x03,
-    SFC_FAST_READ  = 0x3B,
-    SFC_QUAD_READ  = 0x3B,
-    SFC_RES   = 0xAB,
-    SFC_JEDEC = 0x9F,
-    SFC_RDNVR = 0xB5,
-    SFC_WRNVR = 0xB1,
-    SFC_WRSR  = 0x01
-};
-
-#define SST_FLASH_NAME   "SST25VFxx"
-#define WINBOND_NAME     "W25QxxBV"
-#define WINBOND_W25X     "W25Xxx"
-#define ATMEL_NAME       "AT25DFxxx"
-#define S25FLXXXP_NAME   "S25FLXXXP"
-#define S25FL116K_NAME   "S25FL11xx"
-#define MACRONIX_NAME   "MX25L16xxx"
-
-typedef enum flash_vendor {
-    FV_ST      = 0x20,
-    FV_SST     = 0xbf,
-    FV_WINBOND = 0xef,
-    FV_ATMEL   = 0x1f,
-    FV_S25FLXXXX = 0x01,
-    FV_MX25K16XXX = 0xc2,
-} flash_vendor_t;
-
-typedef enum flash_memory_type {
-    FMT_ST_M25P  = 0x20,
-    FMT_ST_M25PX = 0x71,
-    FMT_SST_25   = 0x25,
-    FMT_WINBOND  = 0x40,
-    FMT_WINBOND_W25X = 0x30,
-    FMT_ATMEL    = 0x2,
-    FMT_N25QXXX  = 0xba,
-    FMT_S25FLXXXP = 0x02,
-    FMT_S25FL116K = 0x40,
-} flash_memory_type_t;
-
-flash_info_t g_flash_info_arr[] =
-{
-        {"M25PXxx",      FV_ST,      FMT_ST_M25PX,     MCS_STSPI,  SFC_SSE, FSS_4KB,  1, 0, 0, 0, 0},
-        {"M25Pxx",       FV_ST,      FMT_ST_M25P,      MCS_STSPI,  SFC_SE,  FSS_64KB, 0, 0, 0, 0, 0},
-        {"N25Q0XX",      FV_ST,      FMT_N25QXXX,      MCS_STSPI,  SFC_SSE, FSS_4KB,  1, 1, 1, 0, 1},
-        {SST_FLASH_NAME, FV_SST,     FMT_SST_25,       MCS_SSTSPI, SFC_SE,  FSS_64KB, 0, 0, 0, 0, 0},
-        {WINBOND_NAME,   FV_WINBOND, FMT_WINBOND,      MCS_STSPI,  SFC_SSE, FSS_4KB,  1, 1, 1, 1, 0},
-        {WINBOND_W25X,   FV_WINBOND, FMT_WINBOND_W25X, MCS_STSPI,  SFC_SSE, FSS_4KB,  0, 0, 0, 0, 0},
-        {ATMEL_NAME,     FV_ATMEL,   FMT_ATMEL,        MCS_STSPI,  SFC_SSE, FSS_4KB,  0, 0, 0, 0, 0},
-        {S25FLXXXP_NAME, FV_S25FLXXXX, FMT_S25FLXXXP,  MCS_STSPI,  SFC_SE,  FSS_64KB, 0, 0, 0, 0, 0},
-        {S25FL116K_NAME, FV_S25FLXXXX, FMT_S25FL116K, MCS_STSPI,   SFC_SSE, FSS_4KB,  1, 1, 1, 1, 0}, // this flash actually supports quad and write protect but we dont need it at this moment
-        {MACRONIX_NAME,  FV_MX25K16XXX, FMT_ST_M25P, MCS_STSPI,    SFC_SSE, FSS_4KB,  0, 0, 0, 0, 0}, // this flash actually supports write protection but we dont use it at this time
-};
-
-int cntx_sst_get_log2size(u_int8_t capacity, int* log2spi_size)
-{
-    switch (capacity) {
-        case 0x41:
-            *log2spi_size = 0x15;
-            break;
-        case 0x4A:
-            *log2spi_size = 0x16;
-            break;
-        case 0x8D:
-            *log2spi_size = 0x13;
-            break;
-        case 0x8E:
-            *log2spi_size = 0x14;
-            break;
-        default:
-            return MFE_UNSUPPORTED_FLASH_TOPOLOGY;
-    }
-    return 0;
-}
-
-int get_log2size_by_capcity(unsigned type_index, u_int8_t capacity, int *log2size) {
-
-    flash_info_t *flash_info = &g_flash_info_arr[type_index];
-
-    if (flash_info->type == FMT_SST_25 && flash_info->vendor == FV_SST) {
-        return cntx_sst_get_log2size(capacity, log2size);
-    } else {
-        *log2size = capacity;
-    }
-    return MFE_OK;
-}
-
-int get_type_index_by_vendor_and_type(u_int8_t vendor, u_int8_t type, unsigned *type_index)
-{
-    unsigned i, arr_size;
-    arr_size = ARR_SIZE(g_flash_info_arr);
-
-    for (i = 0; i < arr_size; i++) {
-        flash_info_t *flash_info = &g_flash_info_arr[i];
-        if (flash_info->vendor == vendor && flash_info->type == type) {
-            *type_index = i;
-            return MFE_OK;
-        }
-    }
-    return MFE_UNSUPPORTED_FLASH_TYPE;
-}
-
-void mf_flash_list(char *flash_arr)
-{
-    int i;
-    int arr_index = 0;
-
-    int arr_size = ARR_SIZE(g_flash_info_arr);
-    for (i = 0; i < arr_size; i++) {
-           flash_info_t *flash_info = &g_flash_info_arr[i];
-           int name_len = strlen(flash_info->name);
-           strcpy(&flash_arr[arr_index], flash_info->name);
-           arr_index += name_len;
-           if (i != arr_size - 1) {
-               flash_arr[arr_index++] = ',';
-               flash_arr[arr_index++] = ' ';
-           }
-    }
-    flash_arr[arr_index] = '\0';
-    return;
-}
-
-int get_type_index_by_name(const char *type_name, unsigned *type_index)
-{
-    unsigned i, arr_size;
-    arr_size = ARR_SIZE(g_flash_info_arr);
-    for (i = 0; i < arr_size; i++) {
-        flash_info_t *flash_info = &g_flash_info_arr[i];
-        if (!strcmp(type_name, flash_info->name)) {
-            *type_index = i;
-            return MFE_OK;
-        }
-    }
-    printf("-E- The flash name \"%s\" is unknown\n.", type_name);
-    return MFE_UNSUPPORTED_FLASH_TYPE;
-}
-
-int is_no_flash_detected(u_int8_t type, u_int8_t vendor, u_int8_t capacity) {
-    if ((type == 0xff && vendor == 0xff && capacity == 0xff) ||
-        (type == 0x0 && vendor == 0x0 && capacity == 0x0)) {
-        return 1;
-    }
-    return 0;
-}
-
-int get_flash_info_by_res(mflash* mfl, unsigned *type_index, int *log2size, u_int8_t *no_flash, unsigned char *es_p)
-{
-    int rc;
-
-
-    *no_flash = 0;
-
-    rc = mfl->f_spi_status(mfl, SFC_RES, es_p); CHECK_RC(rc);
-    // printf("-D- get_flash_info_by_res: es = %#x\n", *es_p);
-    if ((*es_p >= 0x10 && *es_p < 0x17)) {
-        *log2size = *es_p + 1;
-        return get_type_index_by_vendor_and_type(FV_ST, FMT_ST_M25P, type_index);
-    } else if (*es_p == 0xff || *es_p == 0x0) {
-        *no_flash = 1;
-    } else {
-        return MFE_UNSUPPORTED_FLASH_TYPE;
-    }
-    return MFE_OK;
-}
-
-int cntx_get_flash_info(mflash* mfl, flash_info_t *f_info, int *log2size, u_int8_t *no_flash)
-{
-    int rc;
-    u_int8_t type = 0, capacity = 0, vendor = 0, no_flash_res = 0, no_flash_rdid = 0;
-    unsigned char es = 0;
-    unsigned type_index = 0;
-    // Assume there is a flash.
-    *no_flash = 0;
-
-    rc = cntx_spi_get_type(mfl, SFC_JEDEC, &vendor, &type, &capacity); CHECK_RC(rc);
-    no_flash_rdid = is_no_flash_detected(type, vendor, capacity);
-    // printf("-D- cntx_spi_get_type: rc: %#x, vendor=%#x, type=%#x, capacity=%#x\n", rc, vendor, type, capacity);
-    // printf("-D- rc = %d, no_flash_rdid = %d\n", rc, no_flash_rdid);
-    if (get_type_index_by_vendor_and_type(vendor, type, &type_index) == MFE_OK) {
-        // RDID Succeded.
-        // Get the capacity
-        if (get_log2size_by_capcity(type_index, capacity, log2size) != MFE_OK) {
-            printf("-E- SST SPI flash #%d (vendor: %#x, type: %#x, capacity:%#x) is not supported.\n", get_bank_int(mfl), vendor,
-                    type, capacity);
-            rc = MFE_UNSUPPORTED_FLASH_TOPOLOGY;
-        }
-         rc = MFE_OK;
-    } else if (no_flash_rdid) {
-    // printf("-D- no support for rdid\n");
-    // RDID Failed due to:
-    // 1- RDID is not supported but RES is - Old flashes.
-    // 2- There is no Flash
-    // 3- Flash is not supported
-
-        // Trying RES
-        rc = get_flash_info_by_res(mfl, &type_index, log2size, &no_flash_res, &es);
-        if (rc == 0 && no_flash_res == 1) {
-            // RES Succeeded due to: no flash, unsupported flash or old flash.
-                *no_flash = 1;
-            // when no_flash_rdid == 0 then "1- RDID is not supported but RES is - Old flashes."
-        }
-    } else {
-        rc = MFE_UNSUPPORTED_FLASH_TYPE;
-    }
-
-    if (rc == MFE_UNSUPPORTED_FLASH_TYPE) {
-        printf("-E- SPI flash #%d (vendor: %#x, memory type: %#x, es: %#x) is not supported.\n", get_bank_int(mfl), vendor, type, es);
-    }
-    // printf("-D- rc = %d, no_flash_res = %d, type_index = %d.\n", rc, no_flash_res, *type_index);
-    if (rc == MFE_OK && *no_flash == 0) {
-        memcpy(f_info, &g_flash_info_arr[type_index], sizeof(flash_info_t));
-    }
-    return rc;
-}
-
-int compare_flash_params(flash_params_t *flash_params, int bank_num, const char *type_name, int log2size)
-{
-    if (strcmp(flash_params->type_name, type_name) != 0) {
-        printf("-E- SPI flash #%d (type: %s)differs in type from SPI flash #%d(type: %s). "
-               "All flash devices must be of the same type.\n",
-               bank_num, type_name, bank_num - 1, flash_params->type_name);
-        return MFE_UNSUPPORTED_FLASH_TOPOLOGY;
-    }
-    if (flash_params->log2size != log2size){
-        printf ("-E- SPI flash #%d (log2size: %#x) differs in size from SPI flash #%d (log2size: %#x). "
-                  "All flash devices must be of the same size.\n",
-                  bank_num, log2size, bank_num - 1, flash_params->log2size);
-        return MFE_UNSUPPORTED_FLASH_TOPOLOGY;
-
-    }
-    return MFE_OK;
-}
-
-int cntx_st_spi_get_status(mflash* mfl, u_int8_t op_type, u_int8_t* status) {
-    u_int32_t flash_data;
-    int rc;
-
-    rc = cntx_int_spi_get_status_data(mfl, op_type, &flash_data, 1); CHECK_RC(rc);
-    *status = EXTRACT(flash_data, 0, 8);
-    return MFE_OK;
-}
-
-int get_num_of_banks_int(mflash *mfl) {
-    int num;
-    if ( (mfl->opts[MFO_USER_BANKS_NUM] == 0) && (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] != ATBM_NO) && ((num = get_num_of_banks(mfl->mf)) != -1) ){
-        return num; // if mfpa register is supported get the exact number of flash banks
-    }
-    return mfl->opts[MFO_NUM_OF_BANKS];
-}
-
-int get_flash_params(mflash* mfl, flash_params_t *flash_params, flash_info_t *flash_info)
-{
-    int num_of_flashes = get_num_of_banks_int(mfl);
-    int spi_sel, rc;
-    int params_were_set = 0;
-    flash_info_t tmp_flash_info;
-    memset(flash_params, 0, sizeof(flash_params_t));
-    memset (flash_info, 0, sizeof(flash_info_t));
-    memset (&tmp_flash_info, 0, sizeof(flash_info_t));
-
-    // if number of flash banks is zero exit with error
-    if (num_of_flashes == 0) {
-        return MFE_NO_FLASH_DETECTED;
-    }
-
-    for (spi_sel = 0 ; spi_sel < num_of_flashes ; spi_sel++) {
-            int log2size;
-            u_int8_t no_flash = 0;
-            const char *type_name;
-            rc = set_bank(mfl, spi_sel); CHECK_RC(rc);
-            rc = mfl->f_get_info(mfl, &tmp_flash_info, &log2size, &no_flash); CHECK_RC(rc);
-            //printf("-D- spi_sel = %d, num_of_flashes = %d, rc = %d, no_flash = %d\n", spi_sel, num_of_flashes, rc, no_flash);
-
-            if (no_flash == 1) {
-                // This bank is empty and also the following banks will be empty.
-                if (flash_params->num_of_flashes == 0) {
-                    // if we haven't detected any 'supported' flash, return an error.
-                    return MFE_NO_FLASH_DETECTED;
-                }
-                break;
-            }
-
-            type_name = tmp_flash_info.name;
-            if (params_were_set == 0) {
-                flash_params->type_name = type_name;
-                flash_params->log2size  = log2size;
-                memcpy(flash_info, &tmp_flash_info, sizeof(flash_info_t));
-                params_were_set = 1;
-            } else {
-                rc = compare_flash_params(flash_params, spi_sel, type_name, log2size); CHECK_RC(rc);
-            }
-            // Init SST flash.
-            if (mfl->access_type == MFAT_MFILE) {
-                if (flash_info->vendor ==  FV_SST && flash_info->type == FMT_SST_25) {
-                    rc = cntx_spi_write_status_reg(mfl, SST_STATUS_REG_VAL, SFC_WRSR, 1); CHECK_RC(rc);
-                } else if (flash_info->vendor ==  FV_ATMEL && flash_info->type == FMT_ATMEL) {
-                    rc = cntx_spi_write_status_reg(mfl, ATMEL_STATUS_REG_VAL, SFC_WRSR, 1); CHECK_RC(rc);
-                }
-            }
-
-            flash_params->num_of_flashes++;
-    }
-    return MFE_OK;
-}
-
-int spi_fill_attr_from_params(mflash* mfl, flash_params_t* flash_params, flash_info_t *flash_info)
-{
-    mfl->attr.log2_bank_size = flash_params->log2size;
-    mfl->attr.bank_size      = 1 << flash_params->log2size;
-    mfl->attr.size           = mfl->attr.bank_size * flash_params->num_of_flashes;
-    mfl->attr.block_write                = 16; // In SPI context, this is the transaction size. Max is 16.
-    // HACK: Use fw_sector size as the sector size only in CX3 family devices for now
-    // TODO: adrianc : this sould be in sx_get_flash_info_by_type()
-    if (HAS_TOOLS_CMDIF(mfl->attr.hw_dev_id)) {
-        flash_info->sector_size = mfl->attr.fw_flash_sector_sz ? mfl->attr.fw_flash_sector_sz : flash_info->sector_size;
-    }
-    mfl->attr.sector_size = flash_info->sector_size;
-    mfl->attr.support_sub_and_sector = flash_info->support_sub_and_sector;
-    mfl->attr.command_set   = flash_info->command_set;
-    mfl->attr.erase_command = flash_info->erase_command;
-    mfl->attr.type_str      = flash_info->name;
-
-    mfl->attr.quad_en_support = flash_info->quad_en_support;
-    mfl->attr.dummy_cycles_support = flash_info->dummy_cycles_support;
-
-    mfl->attr.write_protect_support  = flash_info->write_protected_support;
-    mfl->attr.protect_sub_and_sector = flash_info->protect_sub_and_sector;
-    mfl->attr.banks_num              = flash_params->num_of_flashes;
-    mfl->attr.vendor                 = flash_info->vendor;
-    mfl->attr.type                   = flash_info->type;
-    return MFE_OK;
-}
-
-#define GET_FLASH_RETRY 2
-int st_spi_fill_attr(mflash* mfl, flash_params_t* flash_params) {
-    int rc;
-    flash_params_t *cur_flash_params, tmp_flash_params;
-    flash_info_t flash_info;
-    unsigned type_index;
-
-    // printf("-D- st_spi_fill_attr: ignore_detect = %d, log2size = %#x.\n", mfl->ignore_flash_detect, mfl->user_attr.log2size);
-    if (flash_params == NULL) {
-        int i = 0;
-        // Get flash params from the flash itself
-        cur_flash_params = &tmp_flash_params;
-
-        while (i < GET_FLASH_RETRY) {
-            rc = get_flash_params(mfl, cur_flash_params, &flash_info);
-            if (rc != MFE_NO_FLASH_DETECTED) {
-                break;
-            }
-            i++;
-        }
-        CHECK_RC(rc);
-
-    } else {
-        // Get the flash params from the user.
-        rc = get_type_index_by_name(flash_params->type_name, &type_index); CHECK_RC(rc);
-        memcpy(&flash_info, &(g_flash_info_arr[type_index]), sizeof(flash_info_t));
-        cur_flash_params = flash_params;
-    }
-    // Init the flash attr according to the flash parameters (which was wither given by the user or read from the flash)
-    rc = spi_fill_attr_from_params(mfl, cur_flash_params, &flash_info); CHECK_RC(rc);
-    // printf("-D- spi_size = %#x,  log2spi_size = %#x, bank_size = %#x, flashes_num = %d\n", mfl->attr.size, mfl->attr.log2_bank_size,
-    //       mfl->attr.bank_size, cur_flash_params->num_of_flashes);
-    return MFE_OK;
-}
-
-int st_spi_wait_wip(mflash* mfl, u_int32_t init_delay_us, u_int32_t retry_delay_us, u_int32_t num_of_retries) {
-
-    int       rc;
-    u_int8_t  status;
-    u_int32_t i;
-
-    usleep(init_delay_us);
-
-    for (i = 0; i < num_of_retries; ++i) {
-        rc = mfl->f_spi_status(mfl, SFC_RDSR, &status); CHECK_RC(rc);
-        if ((status & 1) == 0) {
-            return MFE_OK;
-        }
-        usleep(retry_delay_us);
-    }
-
-    return MFE_WRITE_TIMEOUT;
-}
-
-int read_chunks   (mflash* mfl, u_int32_t addr, u_int32_t len, u_int8_t* data) {
-
-    int       rc;
-    u_int8_t  *p         = (u_int8_t *)data;
-
-    if (!mfl) {
-        return MFE_BAD_PARAMS;
-    }
-
-    // Note:
-    // Assuming read block is the same as write block size.
-    // This is true for current Mellanox devices SPI flash access implementation.
-    // Check for future devices.
-    u_int32_t block_size = mfl->attr.block_write;
-    u_int32_t block_mask;
-
-    // TODO - Check MAX_WRITE_BUFFER_SIZE against block_size in open (or here)
-    u_int8_t  tmp_buff[MAX_WRITE_BUFFER_SIZE];
-
-    block_mask = ~(block_size - 1);
-
-    while (len) {
-        u_int32_t i;
-        u_int32_t prefix_pad_size = 0;
-        u_int32_t suffix_pad_size = 0;
-
-        u_int32_t block_addr = addr & block_mask;
-        u_int32_t data_size  = block_size;
-
-        u_int8_t* block_data = p;
-
-        //
-        // First and last cycles (can be the same one) may not be block aligned.
-        // Check the status, and copy data to a padded temp bufer if not alligned.
-        // (there's an option to write partial buffer, but Intel reference code always
-        // writes full buffer, with pads if needed. I do the dame ...)
-        //
-
-        prefix_pad_size = addr - block_addr;
-
-        if ((addr & block_mask) == ((addr + len) & block_mask)) {
-            suffix_pad_size = block_size - ((addr + len) % block_size);
-        }
-
-        if (suffix_pad_size || prefix_pad_size) {
-            // block exceeds given buffer - read to a temp bufer and
-            // copy the required data to user's bufer.
-            data_size -= suffix_pad_size;
-            data_size -= prefix_pad_size;
-            block_data = tmp_buff;
-        }
-        rc = mfl->f_read_blk(mfl, block_addr, block_size, block_data); CHECK_RC(rc);
-
-        if (suffix_pad_size || prefix_pad_size) {
-            for (i = 0; i < data_size; i++) {
-                p[i] = tmp_buff[prefix_pad_size + i];
-            }
-        }
-
-        //
-        // loop advance
-        //
-
-        addr += data_size;
-        p    += data_size;
-        len  -= data_size;
-    }
-
-    return MFE_OK;
-}
-
-////////////////////////////////////////
-//
-// InfiniHostIIILx spi  access functions
-//
-////////////////////////////////////////
-
-
-//
-// Relevant CR addresses, Bit offset and bit size
-//
-
-enum CrConstans {
-    CR_FLASH_GW     = 0xf0400,
-    CR_FLASH_ADDR   = 0xf0404,
-    CR_FLASH_DATA   = 0xf0408,
-    CR_FLASH_CS     = 0xf0418,
-
-    CR_GPIO_LOCK    = 0xf00ec,
-
-    BO_READ_OP      = 0,
-    BO_ADDR_INCR    = 1,
-
-    BO_LPC_STOP     = 3,
-    BO_SPI_NO_DATA  = 4,
-    BO_SPI_NO_ADDR  = 5,
-    BO_SPI_SPECIAL  = 6,
-
-    BO_MSIZE        = 8,
-    BS_MSIZE        = 3,
-
-    BO_STATUS       = 26,
-    BS_STATUS       = 4,
-
-    BO_BUSY         = 30,
-
-    BO_SPI_ADDR     = 0,
-    BS_SPI_ADDR     = 24,
-
-    BO_SPI_CMD      = 24,
-    BS_SPI_CMD      = 8,
-
-    BO_SPI_GPIO     = 25,
-    BS_SPI_GPIO     = 4
-};
-
-int gw_wait_ready(mflash* mfl, const char* msg) {
-    u_int32_t gw_cmd;
-    u_int32_t cnt = 0;
-    (void)msg; // NOT USED FOR NOW
-    do {
-        // Timeout checks
-        if (++cnt > FLASH_CMD_CNT) {
-            //return errmsg("Flash gateway timeout: %s.", msg);
-            return MFE_TIMEOUT;
-        }
-
-        MREAD4(CR_FLASH_GW, &gw_cmd);
-
-    } while (EXTRACT(gw_cmd, BO_BUSY, 1));
-
-    return MFE_OK;
-}
-
-
-int empty_reset          (mflash* mfl) {
-    (void)mfl; /* avoid compiler warning */
-    return MFE_OK;
-}
-
-//////////////////////////////////////////
-//
-// ConnectX functions implementation
-//
-//////////////////////////////////////////
-enum CntxCrConstants{
-    HCR_FLASH_CMD     = 0xf0400,
-    HCR_FLASH_ADDR    = 0xf0404,
-
-    HCR_FLASH_DATA    = 0xf0410,
-
-    HBO_READ_OP       = 0,
-    HBO_ADDR_AUTO_INC = 1,
-    HBO_CMD_PHASE     = 2,
-    HBO_ADDR_PHASE    = 3,
-    HBO_DATA_PHASE    = 4,
-    HBO_CS_HOLD       = 5,
-
-    HBO_MSIZE         = 8,
-    HBS_MSIZE         = 3,
-
-    HBO_CHIP_SELECT   = 11,
-    HBS_CHIP_SELECT   =  2,
-
-    HBO_FLASH_ENABLE  = 13,
-
-    HBO_CMD           = 16,
-    HBS_CMD           =  8,
-
-    HBO_BUSY          = 30,
-    HBO_LOCK          = 31,
-
-    HBO_ADDR          =  0,
-    HBS_ADDR          = 24,
-
-
-    // GPIOs
-    HCR_GPIO_LOCK     = 0xf0048,
-    HCR_GPIO_LOCK_VAL = 0xd42f,
-
-    HCR_GPIO_DATA_OUT = 0xf0040,
-    HCR_GPIO_MODE0    = 0xf0050,
-    HCR_GPIO_MODE1    = 0xf004c,
-
-    HBO_GPIO_CS       = 25,
-    HBS_GPIO_CS       =  4
-};
-
-int empty_set_bank(mflash* mfl, u_int32_t bank) {
-    // NULL function - No actual work here - in ConnectX the curr_bank is written in the command word.
-    (void)mfl; // Avoid Compiler warning
-    (void)bank;   // Avoid Compiler warning
-    return MFE_OK;
-}
-
-int cntx_exec_cmd(mflash* mfl, u_int32_t gw_cmd, char* msg) {
-    if (!IS_CONNECTX_4TH_GEN_FAMILY(mfl->attr.hw_dev_id)) {
-        // for old devices lock bit is separate from the flash HW ifc
-        //for new devices need to make sure this bit remains locked when writing the dword
-        gw_cmd = MERGE(gw_cmd,              1,       31,                       1);
-    }
-    gw_cmd = MERGE(gw_cmd,              1, HBO_BUSY,                       1);
-    gw_cmd = MERGE(gw_cmd,              1, HBO_FLASH_ENABLE,               1);
-    gw_cmd = MERGE(gw_cmd, (u_int32_t)mfl->curr_bank,
-                                           HBO_CHIP_SELECT,  HBS_CHIP_SELECT);
-    //  printf("-D- cntx_exec_cmd: %s, gw_cmd = %#x\n", msg, gw_cmd);
-    MWRITE4(CR_FLASH_GW,   gw_cmd);
-    return gw_wait_ready(mfl, msg);
-}
-
-/*
- * execute a flash GW command and get the output: data0...data3 from the flash interface
- *
- * mfl - pointer to an initilized mflash obj
- * gw_cmd - the flash gateway command to execute
- * buff - pointer to a buffer where the output data from the flash GW will be written to
- * buff_dword_sz - size for buff in dwords
- * addr - if != NULL *addr will be written to the addr bits of the flash GW. (for commands that read from flash)
- * msg - optional string that describes the action for debug purposes, not used ATM however its recommended to put usefull
- *        data for future dubugabillity.
- * return : MFE_OK (0) upon success or a value != 0 upon error accroding to mlfash error code.
- */
-int cntx_exec_cmd_get(mflash* mfl, u_int32_t gw_cmd, u_int32_t* buff,int buff_dword_sz, u_int32_t* addr, char* msg)
-{
-    int rc;
-    if (!mfl ||!buff || !buff_dword_sz) {
-        return MFE_BAD_PARAMS;
-    }
-
-    rc = mfl_com_lock(mfl); CHECK_RC(rc);
-
-    // write GW addr if needed
-    if (addr) {
-        if (mwrite4(mfl->mf, HCR_FLASH_ADDR, *addr) != 4) {
-            release_semaphore(mfl, 0);
-            return MFE_CR_ERROR;
-        }
-    }
-    // execute gw command
-    rc = cntx_exec_cmd(mfl, gw_cmd, msg); CHECK_RC_REL_SEM(mfl, rc);
-    // copy data from CR-space to buff
-    if (mread4_block(mfl->mf, HCR_FLASH_DATA, buff, (buff_dword_sz << 2)) != (buff_dword_sz << 2 )) {
-        release_semaphore(mfl, 0);
-        return MFE_CR_ERROR;
-    }
-    //release semaphore
-    release_semaphore(mfl, 0);
-    return MFE_OK;
-}
-
-/*
- * Set input in: data0...data3 from the flash interface and execute a flash GW command
- *
- * mfl - pointer to an initilized mflash obj
- * gw_cmd - the flash gateway command to execute
- * buff - if != NULL pointer to a buffer to the input data for the flash GW.
- * buff_dword_sz - size for buff in dwords
- * addr - if != NULL *addr will be written to the addr bits of the flash GW. (for commands that write from flash)
- * msg - optional string that describes the action for debug purposes, not used ATM however its recommended to put usefull
- *        data for future dubugabillity.
- * return : MFE_OK (0) upon success or a value != 0 upon error accroding to mlfash error code.
- */
-int cntx_exec_cmd_set(mflash* mfl, u_int32_t gw_cmd, u_int32_t* buff,int buff_dword_sz, u_int32_t* addr, char* msg)
-{
-    int rc;
-    if (!mfl) {
-        return MFE_BAD_PARAMS;
-    }
-
-    rc = mfl_com_lock(mfl); CHECK_RC(rc);
-
-    // write data from buff to CR-space
-    if (buff && buff_dword_sz) {
-        if (mwrite4_block(mfl->mf, HCR_FLASH_DATA, buff, (buff_dword_sz << 2)) != (buff_dword_sz << 2 )) {
-            release_semaphore(mfl, 0);
-            return MFE_CR_ERROR;
-        }
-    }
-
-    // write GW addr if needed
-    if (addr) {
-        if (mwrite4(mfl->mf, HCR_FLASH_ADDR, *addr) != 4) {
-            release_semaphore(mfl, 0);
-            return MFE_CR_ERROR;
-        }
-    }
-    // execute gw command
-    rc = cntx_exec_cmd(mfl, gw_cmd, msg); CHECK_RC_REL_SEM(mfl, rc);
-
-    //release semaphore
-    release_semaphore(mfl, 0);
-    return MFE_OK;
-}
-
-int cntx_int_spi_get_status_data(mflash* mfl, u_int8_t op_type, u_int32_t* status, u_int8_t bytes_num)
-{
-    int rc;
-
-    u_int32_t gw_cmd  = 0;
-    u_int32_t flash_data = 0;
-    //TODO: adrianc: update msize from log2(bytes_num)
-    gw_cmd = MERGE(gw_cmd,       1, HBO_READ_OP,    1);
-    gw_cmd = MERGE(gw_cmd,       1, HBO_CMD_PHASE,  1);
-    gw_cmd = MERGE(gw_cmd,       1, HBO_DATA_PHASE, 1);
-    gw_cmd = MERGE(gw_cmd,       2, HBO_MSIZE,      HBS_MSIZE);
-
-    gw_cmd = MERGE(gw_cmd, op_type, HBO_CMD,        HBS_CMD);
-
-    if (bytes_num > 4) {
-        return MFE_BAD_PARAMS;
-    }
-    rc = cntx_exec_cmd_get(mfl, gw_cmd, &flash_data, 1, NULL, "Read id");  CHECK_RC(rc);
-
-    // printf("-D- cntx_int_spi_get_status_data: op=%02x status=%08x\n", op_type, flash_data);
-    *status = (flash_data >> 8*(4 - bytes_num));
-    return MFE_OK;
-}
-
-int cntx_st_spi_write_enable(mflash* mfl) {
-    u_int32_t gw_cmd  = 0;
-    int rc;
-    // Write enable:
-    gw_cmd = MERGE(gw_cmd,        1, HBO_CMD_PHASE,       1);
-    gw_cmd = MERGE(gw_cmd, SFC_WREN, HBO_CMD,       HBS_CMD);
-
-
-    rc = cntx_exec_cmd_set(mfl, gw_cmd, NULL, 0, NULL, "WREN command"); CHECK_RC(rc);
-
-    //gw_cmd =  MERGE(gw_cmd, 1               , HBO_CS_HOLD,    1);
-
-    //MWRITE4(CR_FLASH_GW,   gw_cmd);
-
-    return MFE_OK;
-}
-
-/*
- * Consts needed to extract the needed data for the jedec ID
- *  from various flash types.
- */
-enum {
-    JEDEC_ATMEL_CAPACITY_BITOFF = 16,
-    JEDEC_ATMEL_CAPACITY_BITLEN = 5,
-    JEDEC_ATMEL_TYPE_BITOFF = 21,
-    JEDEC_ATMEL_TYPE_BITLEN = 3,
-
-    JEDEC_VENDOR_ID_BITOFF = 24,
-    JEDEC_VENDOR_ID_BITLEN = 8,
-
-    JEDEC_CAPACITY_BITOFF = 8,
-    JEDEC_CAPACITY_BITLEN = 8,
-
-    JEDEC_TYPE_BITOFF = 16,
-    JEDEC_TYPE_BITLEN = 8
-};
-
-
-int get_flash_info_for_atmel(u_int32_t jedec_id, u_int8_t* type, u_int8_t* capacity)
-{
-    u_int8_t tmp_cap;
-
-    tmp_cap = EXTRACT(jedec_id, JEDEC_ATMEL_CAPACITY_BITOFF, JEDEC_ATMEL_CAPACITY_BITLEN);
-    *type   = EXTRACT(jedec_id, JEDEC_ATMEL_TYPE_BITOFF, JEDEC_ATMEL_TYPE_BITLEN);
-    switch (tmp_cap) {
-        case 0x4:
-            *capacity = 0x13;
-            break;
-        case 0x5:
-            *capacity = 0x14;
-            break;
-        case 0x6:
-            *capacity = 0x15;
-            break;
-        case 0x7:
-            *capacity = 0x16;
-            break;
-        default:
-            return MFE_UNSUPPORTED_FLASH_TOPOLOGY;
-    }
-
-    return MFE_OK;
-
-}
-int get_info_from_jededc_id(u_int32_t jedec_id, u_int8_t *vendor, u_int8_t* type, u_int8_t* capacity)
-{
-    int rc;
-    *vendor   = EXTRACT(jedec_id, JEDEC_VENDOR_ID_BITOFF, JEDEC_VENDOR_ID_BITLEN);
-    if (*vendor == FV_ATMEL) {
-        rc = get_flash_info_for_atmel(jedec_id, type, capacity); CHECK_RC(rc);
-    } else {
-        *type     = EXTRACT(jedec_id, JEDEC_TYPE_BITOFF, JEDEC_TYPE_BITLEN);
-        *capacity = EXTRACT(jedec_id, JEDEC_CAPACITY_BITOFF, JEDEC_CAPACITY_BITLEN);
-    }
-
-    return MFE_OK;
-}
-
-int cntx_spi_get_type(mflash* mfl, u_int8_t op_type, u_int8_t *vendor, u_int8_t* type, u_int8_t* capacity) {
-    u_int32_t flash_data = 0;
-    int rc;
-
-    rc = cntx_int_spi_get_status_data(mfl, op_type, &flash_data, 4); CHECK_RC(rc);
-    //printf("-D- jedec_info = %#x\n", flash_data);
-    // Get type and some other info from jededc_id
-    get_info_from_jededc_id(flash_data, vendor, type, capacity);
-    // printf("-D- cntx_spi_get_type: vendor = %#x, type = %#x, capacity = %#x\n", *vendor, *type, *capacity);
-    return MFE_OK;
-}
-int cntx_spi_write_status_reg(mflash* mfl, u_int32_t status_reg, u_int8_t write_cmd, u_int8_t bytes_num)
-{
-    int rc;
-    u_int32_t gw_cmd = 0;
-    // TODO: adrianc: add support for dynamic writes of power of 2 bytes_num not just 1,2 bytes
-    rc = cntx_st_spi_write_enable(mfl); CHECK_RC(rc);
-    gw_cmd = MERGE(gw_cmd,        1, HBO_CMD_PHASE,  1);
-    gw_cmd = MERGE(gw_cmd,        1, HBO_DATA_PHASE, 1);
-
-    gw_cmd = MERGE(gw_cmd, write_cmd, HBO_CMD,        HBS_CMD);
-
-    if (bytes_num != 1 && bytes_num != 2) {
-        return MFE_NOT_SUPPORTED_OPERATION;
-    }
-    // push status reg to upper bytes
-    status_reg = status_reg << ((bytes_num==2) ? 16 : 24);
-    if (bytes_num == 2) {
-        gw_cmd = MERGE(gw_cmd, 1, HBO_MSIZE,      1);
-    }
-    rc = cntx_exec_cmd_set(mfl, gw_cmd, &status_reg, 1, NULL, "Write-Status-Register");
-    // wait for flash to write the register
-    msleep(30);
-    return rc;
-}
-
-
-
-int cntx_init_gpios(mflash* mfl) {
-    //
-    // Set Multi SPI CS to output and with value of 1 (inactive)
-    // Assuming 4 flashes. If there are less than 4 flashes and there's
-    // an access to a void flash, the access will fail.
-    //
-
-    u_int32_t       spi_en      = 0xf;
-
-    u_int32_t       mode0;
-    u_int32_t       mode1;
-    u_int32_t       data;
-
-    // Set 4 Chip selects to 1
-    MREAD4(HCR_GPIO_DATA_OUT, &data);
-    data = MERGE(data, spi_en, BO_SPI_GPIO, BS_SPI_GPIO);
-    MWRITE4(HCR_GPIO_DATA_OUT, data);
-
-    MREAD4(HCR_GPIO_MODE0, &mode0);
-    MREAD4(HCR_GPIO_MODE1, &mode1);
-
-    // Set 4 Chip selects to outputs
-    if (EXTRACT(mode0, HBO_GPIO_CS, HBS_GPIO_CS) != spi_en ||
-        EXTRACT(mode1, HBO_GPIO_CS, HBS_GPIO_CS) != 0          ) {
-        mode0 = MERGE(mode0,  spi_en, BO_SPI_GPIO, BS_SPI_GPIO);
-        mode1 = MERGE(mode1, ~spi_en, BO_SPI_GPIO, BS_SPI_GPIO);
-
-        // unlock gpio
-        MWRITE4(HCR_GPIO_LOCK , HCR_GPIO_LOCK_VAL);
-
-        MWRITE4(HCR_GPIO_MODE0, mode0);
-        MWRITE4(HCR_GPIO_MODE1, mode1);
-
-        // re-lock
-        MWRITE4(HCR_GPIO_LOCK , 0);
-    }
-
-    return MFE_OK;
-}
-
-#define MFLASH_ENV "MFLASH_BANKS"
-
-int spi_get_num_of_flashes(int prev_num_of_flashes)
-{
-    char* mflash_env;
-    int num;
-
-    if (prev_num_of_flashes != -1) {
-        return prev_num_of_flashes;
-    }
-
-    mflash_env = getenv(MFLASH_ENV);
-    if (mflash_env) {
-        num =  atol(mflash_env);
-        // make sure the value makes sense
-        num = (num > 16 || num <= 0) ? -1 : num;
-        return num;
-    }
-
-    return -1;
-}
-
-int spi_update_num_of_banks(mflash* mfl, int prev_num_of_flashes)
-{
-    int num_of_banks;
-
-    num_of_banks = spi_get_num_of_flashes(prev_num_of_flashes);
-    if (num_of_banks == -1) {
-        if (IS_SX(mfl->attr.hw_dev_id) || IS_SIB(mfl->attr.hw_dev_id) || IS_SEN(mfl->attr.hw_dev_id) || IS_SIB2(mfl->attr.hw_dev_id)) {
-            mfl->opts[MFO_NUM_OF_BANKS] = 2;
-        } else {
-            mfl->opts[MFO_NUM_OF_BANKS] = 1;
-        }
-        mfl->opts[MFO_USER_BANKS_NUM] = 0;
-    } else {
-        mfl->opts[MFO_NUM_OF_BANKS]   = num_of_banks;
-        mfl->opts[MFO_USER_BANKS_NUM] = 1;
-    }
-    return MFE_OK;
-}
-
-
-int cntx_st_spi_reset          (mflash* mfl) {
-    (void)mfl;
-    return MFE_OK;
-}
-
-int cntx_st_spi_page_read    (mflash* mfl, u_int32_t addr, u_int32_t size, u_int8_t* data) {
-    int rc;
-
-    u_int32_t last_blk_addr;
-    u_int32_t last_addr;
-    u_int8_t  is_first = 1;
-    u_int8_t  is_last  = 0;
-    u_int8_t* p        = data;
-
-    if (addr & ((u_int32_t)mfl->attr.block_write - 1)) {
-        return MFE_BAD_ALIGN;
-    }
-
-    if (size & ((u_int32_t)mfl->attr.block_write - 1)) {
-         return MFE_BAD_ALIGN;
-    }
-
-    //printf("-D- cntx_st_spi_page_read(addr=%05x, u_int32_t size=%03x)\n", addr, size);
-
-    last_addr     = addr + size;
-    last_blk_addr = last_addr - mfl->attr.block_write;
-
-    while (addr < last_addr) {
-        if (addr == last_blk_addr) {
-            is_last = 1;
-        }
-
-        rc = cntx_st_spi_block_read_ex(mfl, addr, mfl->attr.block_write, p, is_first, is_last); CHECK_RC(rc);
-
-        is_first = 0;
-        addr += mfl->attr.block_write;
-        p    += mfl->attr.block_write;
-    }
-
-    return MFE_OK;
-}
-
-/*
-int get_flash_offset(u_int32_t addr, int log2_bank_size, u_int32_t *flash_addr_p)
-{
-    *flash_addr_p = addr & ONES32(log2_bank_size);
-    return MFE_OK;
-}
-*/
-
-int cntx_st_spi_block_read_ex  (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_size, u_int8_t* data, u_int8_t is_first, u_int8_t is_last) {
-    int rc;
-    u_int32_t i;
-    u_int32_t gw_cmd   = 0;
-    u_int32_t gw_addr  = 0;
-
-    //printf("-D- cntx_st_spi_block_read_ex(addr=%05x, u_int32_t size=%03x, first=%d, last=%d)\n", blk_addr, blk_size, (u_int32_t) is_first, (u_int32_t) is_last);
-    COM_CHECK_ALLIGN(blk_addr, blk_size);
-
-    if (blk_size > (u_int32_t)mfl->attr.block_write  || blk_size < 4) {
-        return MFE_BAD_PARAMS;
-    }
-
-    rc = set_bank(mfl, blk_addr);        CHECK_RC(rc);
-
-    if (is_first) {
-        gw_cmd = MERGE(gw_cmd, 1               , HBO_CMD_PHASE,  1);
-        gw_cmd = MERGE(gw_cmd, 1               , HBO_ADDR_PHASE, 1);
-        gw_cmd = MERGE(gw_cmd, SFC_READ        , HBO_CMD,        HBS_CMD);
-
-        rc = get_flash_offset(blk_addr, mfl->attr.log2_bank_size, &gw_addr); CHECK_RC(rc);
-    }
-    //printf("-D- gw_addr = %#x, gw_cmd = %#x, blk_addr = %#x, mfl->attr.log2_bank_size = %#x\n", gw_addr, gw_cmd, blk_addr, mfl->attr.log2_bank_size);
-    if (!is_last) {
-        gw_cmd = MERGE(gw_cmd, 1               , HBO_CS_HOLD,    1);
-    }
-
-    // Read the data block
-    gw_cmd = MERGE(gw_cmd, 1, HBO_READ_OP,           1);
-    gw_cmd = MERGE(gw_cmd, 1, HBO_DATA_PHASE,        1);
-    gw_cmd = MERGE(gw_cmd, log2up(blk_size), BO_MSIZE,       BS_MSIZE);
-
-    rc = cntx_exec_cmd_get(mfl, gw_cmd,(u_int32_t*)data, (blk_size >> 2), &gw_addr, "Read"); CHECK_RC(rc);
-
-    ////if (mread_by_chunks(mfl->mf, HCR_FLASH_DATA, data, blk_size) != (int)blk_size) {
-    //if (mread4_block(mfl->mf, HCR_FLASH_DATA, (u_int32_t*)data, blk_size) != (int)blk_size) {
-    //    return 2;
-        //fprintf(stderr, "-E- Cr read (0x%08x) failed: %s(%d)\n", HCR_FLASH_DATA, strerror(errno), (u_int32_t)errno);
-        //exit(2);
-    //}
-
-    for (i = 0; i < blk_size ; i+= 4) {
-        *(u_int32_t*)(data + i) = __be32_to_cpu(*(u_int32_t*)(data + i));
-    }
-    return MFE_OK;
-}
-
-int cntx_st_spi_block_read  (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_size, u_int8_t* data) {
-    return cntx_st_spi_block_read_ex(mfl, blk_addr, blk_size, data, 1, 1);
-}
-
-int cntx_st_spi_block_read_old  (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_size, u_int8_t* data) {
-    int rc;
-    u_int32_t offs;
-    u_int32_t gw_cmd   = 0;
-    u_int32_t gw_addr  = 0;
-
-    COM_CHECK_ALLIGN(blk_addr, blk_size);
-
-    if (blk_size > (u_int32_t)mfl->attr.block_write  || blk_size < 4) {
-        return MFE_BAD_PARAMS;
-    }
-
-    rc = set_bank(mfl, blk_addr);        CHECK_RC(rc);
-
-    // Read the data block
-    gw_cmd = MERGE(gw_cmd, 1, HBO_READ_OP,           1);
-    gw_cmd = MERGE(gw_cmd, 1, HBO_CMD_PHASE,         1);
-    gw_cmd = MERGE(gw_cmd, 1, HBO_ADDR_PHASE,        1);
-    gw_cmd = MERGE(gw_cmd, 1, HBO_DATA_PHASE,        1);
-    gw_cmd = MERGE(gw_cmd, log2up(blk_size), BO_MSIZE,       BS_MSIZE);
-    gw_cmd = MERGE(gw_cmd, SFC_READ, HBO_CMD,       HBS_CMD);
-
-    gw_addr = blk_addr & ONES32(mfl->attr.log2_bank_size);
-
-    rc = cntx_exec_cmd_get(mfl, gw_cmd, (u_int32_t*)data, (blk_size >> 2), &gw_addr, "Read"); CHECK_RC(rc);
-
-    // Data:
-    for (offs = 0 ; offs < blk_size ; offs += 4) {
-        *((u_int32_t*)(data + offs))= __cpu_to_be32(*((u_int32_t*)(data + offs)));
-    }
-
-    return MFE_OK;
-}
-
-
-int cntx_st_spi_page_write    (mflash* mfl, u_int32_t addr, u_int32_t size, u_int8_t* data) {
-    int rc;
-
-    u_int32_t last_blk_addr;
-    u_int32_t last_addr;
-    u_int8_t  is_first = 1;
-    u_int8_t  is_last  = 0;
-    u_int8_t* p        = data;
-
-    WRITE_CHECK_ALLIGN(addr, mfl->attr.block_write, size);
-
-    last_addr     = addr + size;
-    last_blk_addr = last_addr - mfl->attr.block_write;
-
-    while (addr < last_addr) {
-        if (addr == last_blk_addr) {
-            is_last = 1;
-        }
-        rc = cntx_st_spi_block_write_ex(mfl, addr, mfl->attr.block_write, p, is_first, is_last, size); CHECK_RC(rc);
-
-        is_first = 0;
-        addr += mfl->attr.block_write;
-        p    += mfl->attr.block_write;
-
-    }
-
-    return MFE_OK;
-}
-
-int cntx_sst_spi_byte_write    (mflash* mfl, u_int32_t addr, u_int32_t size, u_int8_t* data) {
-    int rc;
-
-    u_int32_t last_addr;
-    u_int8_t* p        = data;
-
-    WRITE_CHECK_ALLIGN(addr, mfl->attr.block_write, size);
-
-    last_addr     = addr + size;
-
-    while (addr < last_addr) {
-        rc = cntx_sst_spi_block_write_ex(mfl, addr, mfl->attr.block_write, p); CHECK_RC(rc);
-        addr++;
-        p++;
-    }
-
-    return MFE_OK;
-}
-
-int cntx_st_spi_block_write_ex (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_size, u_int8_t* data, u_int8_t is_first, u_int8_t is_last, u_int32_t total_size) {
-    int rc;
-    u_int32_t offs;
-    u_int32_t gw_cmd   = 0;
-    u_int32_t gw_addr  = 0;
-    u_int32_t buff[4];
-
-    if (blk_addr & ((u_int32_t)mfl->attr.block_write - 1 )) {
-        return MFE_BAD_ALIGN;
-    }
-
-    // sanity check ??? remove ???
-    if (blk_size != (u_int32_t)mfl->attr.block_write ) {
-        return MFE_BAD_PARAMS;
-    }
-
-    rc = set_bank(mfl, blk_addr);        CHECK_RC(rc);
-
-    gw_cmd = MERGE(gw_cmd, 1               , HBO_DATA_PHASE, 1);
-    gw_cmd = MERGE(gw_cmd, log2up(blk_size), HBO_MSIZE,      HBS_MSIZE);
-
-    if (is_first) {
-        rc = cntx_st_spi_write_enable(mfl); CHECK_RC(rc);
-
-        // Write the data block
-        gw_cmd = MERGE(gw_cmd, 1               , HBO_CMD_PHASE,  1);
-        gw_cmd = MERGE(gw_cmd, 1               , HBO_ADDR_PHASE, 1);
-        gw_cmd = MERGE(gw_cmd, SFC_PP          , HBO_CMD,        HBS_CMD);
-        gw_addr = blk_addr & ONES32(mfl->attr.log2_bank_size);
-        //printf("-D- gw_addr = %#x, blk_addr = %#x\n", gw_addr, blk_addr);
-    }
-
-    if (!is_last) {
-        gw_cmd = MERGE(gw_cmd, 1               , HBO_CS_HOLD,    1);
-    }
-
-    // Data:
-    for (offs = 0 ; offs < blk_size ; offs += 4) {
-        u_int32_t word = zero;
-
-        word = MERGE(word, data[offs + 0] , 24 , 8);
-        word = MERGE(word, data[offs + 1] , 16 , 8);
-        word = MERGE(word, data[offs + 2] ,  8 , 8);
-        word = MERGE(word, data[offs + 3] ,  0 , 8);
-        //MWRITE4(HCR_FLASH_DATA + offs, word );
-        buff[offs/4] = word;
-        //printf("-D- word = %#x, %d\n", word, HBS_CMD);
-    }
-
-    rc = cntx_exec_cmd_set(mfl, gw_cmd, buff, (blk_size >> 2), &gw_addr, "PP command"); CHECK_RC(rc);
-
-    //
-    // Wait for end of write in flash (WriteInProgress = 0):
-    //
-
-    if (is_last) {
-        rc = st_spi_wait_wip(mfl, WRITE_BLOCK_INIT_DELAY + WRITE_ADDITIONAL_BYTE_DELAY * total_size, WRITE_BLOCK_RETRY_DELAY, WRITE_BLOCK_RETRIES); CHECK_RC(rc);
-    }
-
-    return MFE_OK;
-}
-
-int cntx_sst_spi_block_write_ex (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_size, u_int8_t* data) {
-    int rc;
-    u_int32_t gw_cmd   = 0;
-    u_int32_t gw_addr  = 0;
-    u_int32_t word = zero;
-
-    // sanity check ??? remove ???
-    if (blk_size != (u_int32_t)mfl->attr.block_write ) {
-        return MFE_BAD_PARAMS;
-    }
-
-    rc = set_bank(mfl, blk_addr);        CHECK_RC(rc);
-
-    gw_cmd = MERGE(gw_cmd, 1               , HBO_DATA_PHASE, 1);
-    gw_cmd = MERGE(gw_cmd, 0, HBO_MSIZE,      HBS_MSIZE);
-
-    rc = cntx_st_spi_write_enable(mfl); CHECK_RC(rc);
-
-    // Write the data block
-    gw_cmd = MERGE(gw_cmd, 1               , HBO_CMD_PHASE,  1);
-    gw_cmd = MERGE(gw_cmd, 1               , HBO_ADDR_PHASE, 1);
-    gw_cmd = MERGE(gw_cmd, 0x02            , HBO_CMD,        HBS_CMD);
-
-    gw_addr = blk_addr & ONES32(mfl->attr.log2_bank_size);
-
-    //gw_cmd = MERGE(gw_cmd, 1               , HBO_CS_HOLD,    1);
-
-    word = MERGE(word, data[0] , 24 , 8);
-
-    //printf("-D- data[0] = %#x, gw_addr = %#x, word = %#x, gw_cmd = %#x\n", data[0], gw_addr, word, gw_cmd);
-
-    rc = cntx_exec_cmd_set(mfl, gw_cmd, &word, 1, &gw_addr, "PB command"); CHECK_RC(rc);
-
-    rc = st_spi_wait_wip(mfl, 0, 0, 50000); CHECK_RC(rc); // Full throttle polling - no cpu optimization for this flash
-
-    return MFE_OK;
-}
-
-
-int cntx_st_spi_block_write     (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_size, u_int8_t* data) {
-   return cntx_st_spi_block_write_ex(mfl, blk_addr, blk_size, data, 1, 1, blk_size);
-}
-
-int cntx_st_spi_erase_sect(mflash* mfl, u_int32_t addr) {
-    int rc;
-
-    u_int32_t gw_cmd  = 0;
-    u_int32_t gw_addr = 0;
-    rc = set_bank(mfl, addr); CHECK_RC(rc);
-
-    rc = cntx_st_spi_write_enable(mfl); CHECK_RC(rc);
-
-    // Erase sector command:
-    gw_cmd = MERGE(gw_cmd,      1, HBO_CMD_PHASE,  1);
-    gw_cmd = MERGE(gw_cmd,      1, HBO_ADDR_PHASE, 1);
-    gw_cmd = MERGE(gw_cmd, mfl->attr.erase_command, HBO_CMD,        HBS_CMD);
-
-    gw_addr = addr & ONES32(mfl->attr.log2_bank_size);
-
-    // printf("-D- cntx_st_spi_erase_sect: addr = %#x, gw_cmd = %#x.\n", addr, gw_cmd);
-
-    rc = cntx_exec_cmd_set(mfl, gw_cmd, NULL, 0, &gw_addr, "ES"); CHECK_RC(rc);
-
-    // Wait for erase completion
-    rc = st_spi_wait_wip(mfl, ERASE_SUBSECTOR_INIT_DELAY, ERASE_SUBSECTOR_RETRY_DELAY, ERASE_SUBSECTOR_RETRIES); CHECK_RC(rc);
-
-    return MFE_OK;
-}
-
-
-f_mf_write get_write_blk_func(int command_set)
-{
-    if (command_set == MCS_STSPI) {
-        return cntx_st_spi_page_write;
-    }
-    return cntx_sst_spi_byte_write;
-}
-
-int old_flash_lock(mflash* mfl, int lock_state) {
-
-    // Obtain GPIO Semaphore
-    static u_int32_t cnt = 0;
-    u_int32_t word;
-
-    // timeout at 5 seconds
-    TIMER_INIT_AND_START();
-
-    if (lock_state) {
-        do {
-            if (++cnt > GPIO_SEM_TRIES) {
-                cnt = 0;
-                //printf("-E- Can not obtain Flash semaphore");
-                return MFE_SEM_LOCKED;
-            }
-            MREAD4(SEMAP63, &word);
-            if (word) {
-                msleep(1);
-            }
-            TIMER_CHECK(5, 0, cnt = 0; return MFE_SEM_LOCKED);
-        } while (word);
-    } else {
-        MWRITE4(SEMAP63, 0);
-        if (cnt > 1) {
-            // we are not alone...
-            msleep(1);
-        }
-        cnt = 0;
-    }
-    mfl->is_locked = (lock_state != 0);
-    return MFE_OK;
-}
-
-
-int cntx_flash_init_direct_access(mflash* mfl, flash_params_t* flash_params) {
-    int rc;
-    u_int32_t tmp;
-
-    // Without too much details:
-    // When the ConnectX boots up without a valid FW , the PCIE link may be unstable.
-    // In that case, turn off the auto reset on link down, so we'll be able to burn the device.
-    MREAD4(0x41270, &tmp);
-    if (tmp > 0xfff00000) {
-       //we are in livefish.
-        u_int32_t tmp1;
-        MREAD4(0xf3834, &tmp1);
-        tmp1 = MERGE(tmp1, 2, 27, 2);
-        MWRITE4(0xf3834, tmp1);
-
-    }
-
-    //TODO: Enable page_read (slightly better perf)
-    //mfl->f_read           = cntx_st_spi_page_read;
-    mfl->f_read           = read_chunks;
-    mfl->f_read_blk       = cntx_st_spi_block_read;
-    mfl->f_lock           = old_flash_lock; // Flash lock has same address and functionality as in InfiniHost.
-    mfl->f_set_bank       = empty_set_bank;
-    mfl->f_get_info       = cntx_get_flash_info;
-
-    //if (is_life_fish) {
-    //    rc = cntx_init_gpios(mfl);  CHECK_RC(rc);
-    //}
-
-    mfl->f_spi_status = cntx_st_spi_get_status;
-    mfl->supp_sr_mod = 1;
-
-    rc = st_spi_fill_attr(mfl, flash_params);   CHECK_RC(rc);
-
-    if (mfl->attr.command_set == MCS_STSPI || mfl->attr.command_set == MCS_SSTSPI) {
-        mfl->f_reset      = empty_reset; // Null func
-        mfl->f_write_blk  = get_write_blk_func(mfl->attr.command_set);
-
-        mfl->attr.page_write = 256;
-        mfl->f_write      = write_chunks;
-        mfl->f_erase_sect = cntx_st_spi_erase_sect;
-    } else {
-        return MFE_UNSUPPORTED_FLASH_TYPE;
-    }
-
-    rc = mfl->f_reset(mfl);
-
-    return MFE_OK;
-}
-
-// InfiniScale 4 (IS4) functions:
-
-int is4_init_gpios(mflash* mfl) {
-    (void)mfl;
-    return MFE_NOT_IMPLEMENTED;
-}
-
-
-int is4_flash_lock(mflash* mfl, int lock_state) {
-    // Obtain GPIO Semaphore
-    static u_int32_t cnt = 0;
-    u_int32_t word;
-    u_int32_t lock_status = 0;
-
-    // timeout at 5 seconds
-    TIMER_INIT_AND_START();
-
-    if (lock_state) {
-        do {
-            if (++cnt > GPIO_SEM_TRIES) {
-                cnt = 0;
-                //printf("-E- Can not obtain Flash semaphore");
-                return MFE_SEM_LOCKED;
-            }
-            MREAD4(HCR_FLASH_CMD, &word);
-            lock_status = EXTRACT(word, HBO_LOCK, 1);
-            if (lock_status) {
-                msleep(1);
-            }
-            TIMER_CHECK(5, 0, cnt = 0; return MFE_SEM_LOCKED);
-        } while (lock_status);
-    } else {
-        MWRITE4(HCR_FLASH_CMD, 0);
-        if (cnt > 1) {
-            // we are not alone
-            msleep(1);
-        }
-        cnt = 0;
-    }
-
-    mfl->is_locked = (lock_state != 0);
-    return MFE_OK;
-}
-
-#define CACHE_REPLACEMNT_EN_ADDR 0xf0420
-int disable_cache_replacement(mflash *mfl)
-{
-    u_int32_t data;
-    MREAD4(CACHE_REPLACEMNT_EN_ADDR, &data);
-    data = MERGE(data, 0, 0, 1); // We put 0 in the first bit of the read data
-    MWRITE4(CACHE_REPLACEMNT_EN_ADDR, data);
-
-    return 0;
-}
-
-int restore_cache_replacemnt(mflash *mfl)
-{
-    u_int32_t data;
-    MREAD4(CACHE_REPLACEMNT_EN_ADDR, &data);
-    data = MERGE(data, 1, 0, 1); // We put 1 in the first bit of the read data
-    MWRITE4(CACHE_REPLACEMNT_EN_ADDR, data);
-    return MFE_OK;
-}
-
-int connectib_flash_lock(mflash* mfl, int lock_state)
-{
-   int rc;
-   if (lock_state == 1) { // lock the flash
-       rc = is4_flash_lock(mfl, lock_state); CHECK_RC(rc);
-       rc = disable_cache_replacement(mfl);  CHECK_RC(rc);
-       rc = gw_wait_ready(mfl, "WAIT TO BUSY"); CHECK_RC(rc);
-   } else { // unlock the flash
-       rc = restore_cache_replacemnt(mfl);   CHECK_RC(rc);
-       rc = is4_flash_lock(mfl, lock_state); CHECK_RC(rc);
-   }
-   return MFE_OK;
-}
-
-#define SX_CS_SUPPORT_ADDR 0xF0420
-
-int sx_init_cs_support(mflash* mfl) {
-    if (IS_SX(mfl->attr.hw_dev_id)) {
-        u_int8_t cs_support_mask = 0;
-        u_int32_t data;
-        if (mfl->opts[MFO_USER_BANKS_NUM] == 0) {
-            // We assume we have only 2 flashes on SX
-            mfl->opts[MFO_NUM_OF_BANKS] = 2;
-        }
-        // Prepare the bit mask of the banks number
-        cs_support_mask = (1 << mfl->opts[MFO_NUM_OF_BANKS]) - 1;
-
-        // Read Modify write the cs support field
-        MREAD4(SX_CS_SUPPORT_ADDR, &data);
-        data = MERGE(data, cs_support_mask, 0, 4);
-        MWRITE4(SX_CS_SUPPORT_ADDR, data);
-    }
-    return 0;
-}
-
-#define HW_DEV_ID     0xf0014
-#define CACHE_REP_OFF 0xf0408
-#define CASHE_REP_CMD 0xf040c
-
-int check_cache_replacement_gaurd(mflash* mfl, u_int8_t *needs_cache_replacement)
-{
-
-    *needs_cache_replacement = 0;
-
-    // When we access via command interface, we assume there is a cache replacement!
-    if (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_MLNXOS_CMDIF) {
-        if (mfl->opts[MFO_IGNORE_CASHE_REP_GUARD]) {
-            // dont allow overidding cache replacement in mellanox OS env
-            return MFE_OCR_NOT_SUPPORTED;
-        }
-        *needs_cache_replacement = 1;
-        return MFE_OK;
-    }
-
-    if (mfl->opts[MFO_IGNORE_CASHE_REP_GUARD] == 0) {
-        u_int32_t off, cmd, data;
-
-        // Read the Cache replacement offset
-        MREAD4(CACHE_REP_OFF, &data);
-        off = EXTRACT(data, 0, 26);
-        // Read the Cache replacement cmd
-        MREAD4(CASHE_REP_CMD, &data);
-        cmd = EXTRACT(data, 16, 8);
-        // Check if the offset and cmd are zero in order to continue burning.
-        if (cmd != 0 || off != 0) {
-            *needs_cache_replacement = 1;
-        }
-    } else {
-        // Here we ignore the cache replacement check
-        // We need to execute a write in order to do any needed cache replacement
-        // Reset the HW ID which is read only register.
-        MWRITE4(HW_DEV_ID, 0);
-    }
-
-    return MFE_OK;
-}
-
-int mfl_com_lock(mflash* mfl)
-{
-    int rc;
-    // if we already locked the semaphore we dont want to re-lock it
-    if (mfl->is_locked && (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] != ATBM_INBAND || mfl->opts[MFO_IGNORE_CASHE_REP_GUARD] == 1)) { // on inband w/o ocr we need to extend the lock
-        return MFE_OK;
-    }
-    rc = mfl->f_lock(mfl, 1);
-    if (!mfl->opts[MFO_IGNORE_SEM_LOCK]) {
-        CHECK_RC(rc);
-    } else {
-        mfl->is_locked = 1;
-    }
-    return MFE_OK;
-}
-
-int     mf_release_semaphore(mflash* mfl)
-{
-    return release_semaphore(mfl, 1);
-}
-
-int release_semaphore(mflash* mfl, int ignore_writer_lock) {
-    int rc;
-    if (mfl->is_locked && mfl->f_lock && (!mfl->writer_lock || ignore_writer_lock)) {
-        rc = mfl->f_lock(mfl, 0); CHECK_RC(rc);
-    }
-    return MFE_OK;
-}
-
-// ConnectX and Is4 flash interfaces are identical (except lock function)
-// Use same functions
-//
-// TODO: Unify fith ConnectX inif function
-
-int gen4_flash_init_com(mflash* mfl, flash_params_t* flash_params, u_int8_t init_cs_support) {
-
-    int rc;
-
-    //TODO: Enable page_read (slightly better perf)
-    //mfl->f_read           = cntx_st_spi_page_read;
-    mfl->f_read           = read_chunks;
-    mfl->f_read_blk       = cntx_st_spi_block_read;
-    mfl->f_set_bank       = empty_set_bank;
-    mfl->f_get_info       = cntx_get_flash_info;
-
-
-    if (init_cs_support) {
-        // Update the chip_select_support according to the banks number of cs.
-        rc = sx_init_cs_support(mfl);  CHECK_RC(rc);
-    }
-    mfl->f_spi_status = cntx_st_spi_get_status;
-    mfl->supp_sr_mod = 1;
-
-    rc = st_spi_fill_attr(mfl, flash_params);   CHECK_RC(rc);
-
-    if        (mfl->attr.command_set == MCS_STSPI || mfl->attr.command_set == MCS_SSTSPI) {
-        mfl->f_reset      = empty_reset; // Null func
-        //mfl->f_write_blk  = cntx_st_spi_block_write;
-        mfl->f_write_blk  = get_write_blk_func(mfl->attr.command_set);
-        mfl->attr.page_write = 256;
-        mfl->f_write      = write_chunks;
-        mfl->f_erase_sect = cntx_st_spi_erase_sect;
-    } else {
-        return MFE_UNSUPPORTED_FLASH_TYPE;
-    }
-
-    rc = mfl->f_reset(mfl);
-
-    return MFE_OK;
-
-}
-
-int is4_flash_init(mflash* mfl, flash_params_t* flash_params)
-{
-    mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_NO;
-    mfl->f_lock           = is4_flash_lock;
-    return gen4_flash_init_com(mfl, flash_params, 0);
-}
-
-int sx_flash_init_direct_access(mflash* mfl, flash_params_t* flash_params)
-{
-    mfl->f_lock           = is4_flash_lock;
-    return gen4_flash_init_com(mfl, flash_params, 1);
-}
-
-int fifth_gen_init_direct_access(mflash* mfl, flash_params_t* flash_params)
-{
-    mfl->f_lock           = connectib_flash_lock;
-    return gen4_flash_init_com(mfl, flash_params, 0);
-}
-
-/*
-typedef int (*f_sx_flash_lock)      (mflash* mfl, int lock_state);
-typedef int (*f_sx_erase_sect)      (mflash* mfl, u_int32_t addr);
-typedef int (*f_sx_block_access)    (mflash* mfl, u_int32_t addr, u_int32_t size, u_int8_t* data);
-typedef int (*f_sx_get_flash_info)  (mflash* mfl, unsigned *type_index, int *log2size, u_int8_t *no_flash);
-*/
-
-
-int sx_get_flash_info(mflash* mfl, flash_info_t* f_info, int *log2size, u_int8_t *no_flash)
-{
-    int rc;
-    int sem_rc;
-    sem_rc = mfl_com_lock(mfl); CHECK_RC(sem_rc);
-    rc = sx_get_flash_info_by_type(mfl, f_info, log2size, no_flash);
-    sem_rc = release_semaphore(mfl, 0); CHECK_RC(sem_rc);
-    return rc;
-}
-
-
-int sx_block_read(mflash* mfl, u_int32_t blk_addr, u_int32_t blk_size, u_int8_t* data)
-{
-    int rc;
-    int sem_rc;
-    sem_rc = mfl_com_lock(mfl); CHECK_RC(sem_rc);
-    rc = sx_block_read_by_type(mfl, blk_addr, blk_size, data);
-    sem_rc = release_semaphore(mfl, 0); CHECK_RC(sem_rc);
-    return rc;
-}
-
-int sx_block_write(mflash* mfl, u_int32_t addr, u_int32_t size, u_int8_t* data)
-{
-    int rc;
-    int sem_rc;
-    sem_rc = mfl_com_lock(mfl); CHECK_RC(sem_rc);
-    rc = sx_block_write_by_type(mfl, addr, size, data);
-    sem_rc = release_semaphore(mfl, 0); CHECK_RC(sem_rc);
-    return rc;
-}
-
-int sx_flash_lock(mflash* mfl, int lock_state)
-{
-    return sx_flash_lock_by_type(mfl, lock_state);
-}
-
-int sx_erase_sect(mflash* mfl, u_int32_t addr)
-{
-    int rc;
-    int sem_rc;
-    sem_rc = mfl_com_lock(mfl); CHECK_RC(sem_rc);
-    rc = sx_erase_sect_by_type(mfl, addr, mfl->attr.sector_size);
-    sem_rc = release_semaphore(mfl, 0); CHECK_RC(sem_rc);
-    return rc;
-}
-
-
-int empty_get_status(mflash* mfl, u_int8_t op_type, u_int8_t* status)
-{
-    // Avoid warnings
-    (void)mfl;
-    (void)op_type;
-    (void)status;
-
-    return MFE_NOT_SUPPORTED_OPERATION;
-}
-
-#define MAX_BLOCK_SIZE(hw_dev_id)\
-        (((hw_dev_id) == CX3_HW_ID || hw_dev_id == CX3_PRO_HW_ID) ? MAX_WRITE_BUFFER_SIZE : 128)
-
-static int update_max_write_size(mflash* mfl)
-{
-    u_int32_t max_reg_size = mget_max_reg_size(mfl->mf);
-    u_int32_t max_block_size = MAX_BLOCK_SIZE(mfl->attr.hw_dev_id);
-    if (!max_reg_size) {
-       return MFE_BAD_PARAMS;
-    }
-    max_reg_size = NEAREST_POW2(max_reg_size);
-    // limit maximal write to max_block_size
-    max_block_size = max_reg_size < max_block_size ? max_reg_size : max_block_size;
-    mfl->attr.block_write = max_block_size;
-    mfl->attr.page_write  = max_block_size;
-    return ME_OK;
-}
-
-// access flash via FW using Flash Access Registers (either by INBAND/ICMD/TOOLS_HCR)
-int flash_init_inband_access(mflash* mfl, flash_params_t* flash_params)
-{
-    int rc;
-
-    mfl->f_read       = read_chunks;
-    mfl->f_write      = write_chunks;
-    mfl->f_reset      = empty_reset;
-    mfl->f_set_bank   = empty_set_bank;
-
-
-    mfl->f_get_info   = sx_get_flash_info;
-    mfl->f_lock       = sx_flash_lock;
-    mfl->f_erase_sect = sx_erase_sect;
-    mfl->f_write_blk  = sx_block_write;
-    mfl->f_read_blk   = sx_block_read;
-    mfl->f_spi_status = empty_get_status;
-
-    mfl->supp_sr_mod = 0;
-
-    // Get the flash attribute
-    rc = st_spi_fill_attr(mfl, flash_params); CHECK_RC(rc);
-    update_max_write_size(mfl); CHECK_RC(rc);
-    return MFE_OK;
-}
-
-int uefi_flash_init(mflash* mfl, flash_params_t* flash_params)
-{
-    int rc;
-
-    mfl->f_read       = read_chunks;
-    mfl->f_write      = write_chunks;
-    mfl->f_reset      = empty_reset;
-    mfl->f_set_bank   = empty_set_bank;
-
-    mfl->f_get_info   = sx_get_flash_info;
-    mfl->f_lock       = sx_flash_lock;
-    mfl->f_erase_sect = sx_erase_sect;
-    mfl->f_write_blk  = sx_block_write;
-    mfl->f_read_blk   = sx_block_read;
-    mfl->f_spi_status = empty_get_status;
-
-    mfl->supp_sr_mod = 0;
-
-    // Get the flash attribute
-
-    rc = st_spi_fill_attr(mfl, flash_params);   CHECK_RC(rc);
-    update_max_write_size(mfl); CHECK_RC(rc);
-    return MFE_OK;
-}
-
-
-int flash_init_fw_access(mflash* mfl, flash_params_t* flash_params)
-{
-    // This function checks the access type in order to select the access functions
-
-    int rc;
-    if ( mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] != ATBM_NO) {
-        rc = flash_init_inband_access(mfl, flash_params); CHECK_RC(rc);
-    } else {
-        return MFE_DIRECT_FW_ACCESS_DISABLED;
-    }
-
-    if (mfl->opts[MFO_IGNORE_SEM_LOCK]) {
-       rc = mfl->f_lock(mfl, 0); CHECK_RC(rc);
-    }
-    return MFE_OK;
-}
-
-int sx_flash_init(mflash* mfl, flash_params_t* flash_params)
-{
-    int rc;
-    u_int8_t needs_cache_replacement;
-
-    rc = check_cache_replacement_gaurd(mfl, &needs_cache_replacement); CHECK_RC(rc);
-
-    if (needs_cache_replacement) {
-        rc = flash_init_fw_access(mfl, flash_params); CHECK_RC(rc);
-    } else {
-        rc = sx_flash_init_direct_access(mfl, flash_params); CHECK_RC(rc);
-    }
-    return MFE_OK;
-}
-
-
-int icmd_init(mflash *mfl)
-{
-    // Clear  semaphore when asked to by flint or any tool using mflash
-    if (mfl->opts[MFO_IGNORE_SEM_LOCK]) {
-        if (icmd_clear_semaphore(mfl->mf) != ME_OK) {
-            return MFE_CR_ERROR;
-        }
-    }
-    return MFE_OK;
-}
-
-int tools_cmdif_init(mflash *mfl)
-{
-    // Clear  semaphore when asked to by flint or any tool using mflash
-    if (mfl->opts[MFO_IGNORE_SEM_LOCK]) {
-        if (tools_cmdif_unlock_semaphore(mfl->mf) != ME_OK) {
-            return MFE_CR_ERROR;
-        }
-    }
-    return MFE_OK;
-}
-
-int fifth_gen_flash_init(mflash* mfl, flash_params_t* flash_params)
-{
-    int rc;
-    u_int8_t needs_cache_replacement;
-
-    rc = check_cache_replacement_gaurd(mfl, &needs_cache_replacement); CHECK_RC(rc);
-
-    if (needs_cache_replacement) {
-        if (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_ICMD) {
-            rc = icmd_init(mfl); CHECK_RC(rc);
-        }
-        rc = flash_init_fw_access(mfl, flash_params); CHECK_RC(rc);
-    } else {
-        rc = fifth_gen_init_direct_access(mfl, flash_params); CHECK_RC(rc);
-    }
-    return MFE_OK;
-}
-
-int cntx_flash_init(mflash* mfl, flash_params_t* flash_params)
-{
-    int rc;
-
-    if ( mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_TOOLS_CMDIF &&\
-         mfl->opts[MFO_IGNORE_CASHE_REP_GUARD] == 0 &&\
-         mfl->opts[MFO_CX3_FW_ACCESS_EN]) {
-        #ifdef UEFI_BUILD
-        // tools CMDIF not supported in UEFI
-        rc = ME_NOT_IMPLEMENTED;
-        #else
-        rc = tcif_cr_mbox_supported(mfl->mf);
-        #endif
-        // init with direct access if not supported
-        if (rc == ME_NOT_IMPLEMENTED || rc == ME_CMDIF_NOT_SUPP ) {
-            mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_NO;
-            return cntx_flash_init_direct_access(mfl, flash_params);
-        }
-        if (rc == ME_SEM_LOCKED && !mfl->opts[MFO_IGNORE_SEM_LOCK]) {
-            return MFE_SEM_LOCKED;
-        }
-        rc = tools_cmdif_init(mfl); CHECK_RC(rc);
-        rc = flash_init_fw_access(mfl, flash_params); CHECK_RC(rc);
-    } else {
-        mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_NO;
-        rc = cntx_flash_init_direct_access(mfl, flash_params); CHECK_RC(rc);
-    }
-    return MFE_OK;
-}
-
-//
-// Interface functions:
-//
-
-#define CHECK_OUT_OF_RANGE(addr, len, size) {\
-        if (addr > size || addr + len > size) {\
-            return MFE_OUT_OF_RANGE;\
-        }\
-}
-
-int     mf_read        (mflash* mfl, u_int32_t addr, u_int32_t len, u_int8_t* data) {
-    // printf("mfl->attr.size = %#x, addr = %#x, len = %d\n", mfl->attr.size, addr, len);
-
-    CHECK_OUT_OF_RANGE(addr, len, mfl->attr.size);
-    //printf("-D- mf_read:  addr: %#x, len: %d\n", addr, len);
-    return mfl->f_read(mfl, addr, len, data);
-}
-
-int     mf_write       (mflash* mfl, u_int32_t addr, u_int32_t len, u_int8_t* data) {
-    CHECK_OUT_OF_RANGE(addr, len, mfl->attr.size);
-    // Locking semaphore for the entire existence of the mflash obj for write and erase only.
-    int rc = mfl_com_lock(mfl); CHECK_RC(rc);
-    mfl->writer_lock = 1;
-    return mfl->f_write(mfl, addr, len, data);
-}
-
-static int erase_com(mflash* mfl, u_int32_t addr, unsigned int sector_size, int erase_cmd)
-{
-    int rc;
-    u_int32_t backup_sector_size;
-    int backup_erase_command;
-    if (addr >= mfl->attr.size) {
-        return MFE_OUT_OF_RANGE;
-    }
-    // Locking semaphore for the entire existence of the mflash obj for write and erase only.
-    rc = mfl_com_lock(mfl); CHECK_RC(rc);
-    mfl->writer_lock = 1;
-    backup_sector_size = mfl->attr.sector_size;
-    backup_erase_command = mfl->attr.erase_command;
-    mfl->attr.sector_size = sector_size;
-    mfl->attr.erase_command = erase_cmd;
-    rc = mfl->f_erase_sect(mfl, addr);
-    mfl->attr.sector_size = backup_sector_size;
-    mfl->attr.erase_command = backup_erase_command;
-    return rc;
-}
-
-int     mf_erase(mflash* mfl, u_int32_t addr) {
-    return erase_com(mfl, addr, mfl->attr.sector_size, mfl->attr.erase_command);
-}
-
-int     mf_erase_64k_sector(mflash* mfl, u_int32_t addr) {
-    if (!mfl->attr.support_sub_and_sector) {
-        return MFE_UNSUPPORTED_ERASE_OPERATION;
-    }
-    return erase_com(mfl, addr, FSS_64KB, SFC_SE);
-}
-
-int     mf_erase_4k_sector(mflash* mfl, u_int32_t addr) {
-    if (!mfl->attr.support_sub_and_sector) {
-        return MFE_UNSUPPORTED_ERASE_OPERATION;
-    }
-    return erase_com(mfl, addr, FSS_4KB, SFC_SSE);
-}
-
-int mf_open_ignore_lock(mflash* mfl) {
-    mfl->opts[MFO_IGNORE_SEM_LOCK] = 1;
-    return mf_open_fw(mfl, NULL, -1);
-}
-
-#define CR_LOCK_HW_ID 0xbad0cafe
-
-#ifndef MST_UL
-#define IS_PCI_DEV(access_type) (access_type == MST_PCICONF || access_type == MST_PCI)
-#else
-#define IS_PCI_DEV(access_type) (access_type == MTCR_ACCESS_CONFIG || access_type == MTCR_ACCESS_MEMORY)
-#endif
-
-
-
-int get_dev_info(mflash* mfl)
-{
-    u_int32_t dev_flags;
-    u_int32_t access_type;
-    int rc;
-    u_int32_t dev_id;
-    mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_NO;
-    rc = mget_mdevs_flags(mfl->mf, &dev_flags); CHECK_RC(rc);
-    rc = mget_mdevs_type(mfl->mf, &access_type); CHECK_RC(rc);
-
-    // get hw id
-    // Special case for MLNX OS getting dev_id using REG MGIR
-    if (dev_flags & MDEVS_MLNX_OS) {
-    #ifndef UEFI_BUILD
-        reg_access_status_t rc;
-        struct register_access_sib_mgir mgir;
-        memset(&mgir, 0, sizeof(mgir));
-        rc = reg_access_mgir(mfl->mf, REG_ACCESS_METHOD_GET, &mgir);
-        //printf("-D- RC[%s] -- REVID: %d -- DEVID: %d hw_dev_id: %d\n", m_err2str(rc), mgir.HWInfo.REVID, mgir.HWInfo.DEVID, mgir.HWInfo.hw_dev_id);
-        if (rc) {
-            dev_id = SWITCHX_HW_ID;
-            mfl->attr.rev_id    = 0;
-            mfl->attr.hw_dev_id = SWITCHX_HW_ID;
-        } else {
-            dev_id = mgir.HWInfo.hw_dev_id;
-            if (dev_id == 0) {
-                dev_id = SWITCHX_HW_ID;
-                mfl->attr.hw_dev_id = SWITCHX_HW_ID;
-                mfl->attr.rev_id = mgir.HWInfo.REVID & 0xf;
-            } else {
-                mfl->attr.hw_dev_id = dev_id;
-                mfl->attr.rev_id = 0; //WA: MGIR should have also hw_rev_id and then we can use it.
-            }
-        }
-    #else
-        // no MLNX_OS in UEFI, no mgir register in UEFI package
-        // we should never reach here
-        return MFE_UNKOWN_ACCESS_TYPE;
-    #endif
-    } else {
-        MREAD4(HW_DEV_ID, &dev_id);
-        if (dev_id == CR_LOCK_HW_ID) {
-            return MFE_LOCKED_CRSPACE;
-        }
-        mfl->attr.rev_id    = (dev_id & 0xff0000) >> 16;
-        mfl->attr.hw_dev_id = dev_id & 0xffff;
-    }
-
-    if (dev_flags & MDEVS_MLNX_OS) {
-          mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_MLNXOS_CMDIF;
-    } else if (dev_flags & MDEVS_IB){
-          mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_INBAND;
-    } else { // not mlnxOS or IB device - check HW ID to determine Access type
-         if (HAS_ICMD_IF(mfl->attr.hw_dev_id)){
-             if (mfl->opts[MFO_IGNORE_CASHE_REP_GUARD] == 0) {
-                 mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_ICMD;
-             }
-         } else if (HAS_TOOLS_CMDIF(mfl->attr.hw_dev_id) && (IS_PCI_DEV(access_type))) {
-             if (mfl->opts[MFO_IGNORE_CASHE_REP_GUARD] == 0) {
-                    mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] = ATBM_TOOLS_CMDIF;
-             }
-         }
-    }
-    return MFE_OK;
-
-}
-//Caller must zero the mflash struct before calling this func.
-int mf_open_fw(mflash* mfl, flash_params_t* flash_params, int num_of_banks)
-{
-    int rc;
-    if (!mfl) {
-        return MFE_BAD_PARAMS;
-    }
-    rc = set_bank_int(mfl, -1); CHECK_RC(rc);
-    if (mfl->access_type == MFAT_MFILE ) {
-        rc = get_dev_info(mfl); CHECK_RC(rc);
-
-#ifndef UEFI_BUILD
-        trm_sts trm_rc;
-        trm_rc = trm_create(&(mfl->trm), mfl->mf);
-        if (trm_rc) {
-            return trm2mfe_err(trm_rc);
-        }
-#endif
-
-        mfl->opts[MFO_NUM_OF_BANKS] = spi_get_num_of_flashes(num_of_banks);
-        rc = spi_update_num_of_banks(mfl, num_of_banks);CHECK_RC(rc);
-
-        if (IS_CONNECTX_4TH_GEN_FAMILY(mfl->attr.hw_dev_id)) {
-            rc = cntx_flash_init(mfl, flash_params);
-        } else if (IS_IS4_FAMILY(mfl->attr.hw_dev_id)) {
-            rc = is4_flash_init(mfl, flash_params);
-        } else if (IS_SX(mfl->attr.hw_dev_id)) {
-            rc = sx_flash_init(mfl, flash_params);
-        } else if (HAS_ICMD_IF(mfl->attr.hw_dev_id)) {
-            rc = fifth_gen_flash_init(mfl, flash_params);
-        } else if (mfl->attr.hw_dev_id == 0xffff) {
-            rc = MFE_HW_DEVID_ERROR;
-        } else {
-            rc = MFE_UNSUPPORTED_DEVICE;
-        }
-        CHECK_RC(rc);
-    } else if (mfl->access_type == MFAT_UEFI) {
-        mfl->opts[MFO_NUM_OF_BANKS] = 1; // We have only one flash in ConnectIB and ConnectX-3 - Need to specify it better!
-        rc = uefi_flash_init(mfl, flash_params); CHECK_RC(rc);
-    } else {
-        return MFE_UNKOWN_ACCESS_TYPE;
-    }
-    mfl->f_set_bank(mfl,0);
-
-    return MFE_OK;
-}
-
-int     mf_opend_int       (mflash** pmfl, void* access_dev, int num_of_banks, flash_params_t* flash_params, int ignore_cache_rep_guard, u_int8_t access_type,
-        void* dev_extra, int cx3_fw_access) {
-    int rc;
-    *pmfl = (mflash*)malloc(sizeof(mflash));
-    if (!*pmfl) {
-        return MFE_NOMEM;
-    }
-
-    memset(*pmfl, 0, sizeof(mflash));
-
-    (*pmfl)->opts[MFO_IGNORE_CASHE_REP_GUARD] = ignore_cache_rep_guard;
-    (*pmfl)->opts[MFO_CX3_FW_ACCESS_EN] = cx3_fw_access;
-    (*pmfl)->access_type = access_type;
-
-    if (access_type ==  MFAT_MFILE) {
-        (*pmfl)->mf = (mfile*)access_dev;
-    } else if (access_type ==  MFAT_UEFI) {
-       // open mfile as uefi
-        if (!((*pmfl)->mf = mopen_fw_ctx(access_dev, ((uefi_dev_extra_t*)dev_extra)->fw_cmd_func,\
-                ((uefi_dev_extra_t*)dev_extra)->dev_info)) ){
-               return MFE_NOMEM;
-       }
-       // fill some device information
-       if (((uefi_dev_extra_t*)dev_extra)->dev_info) {
-               (*pmfl)->attr.hw_dev_id = ((uefi_dev_extra_t*)dev_extra)->dev_info->hw_dev_id;
-               (*pmfl)->attr.rev_id = ((uefi_dev_extra_t*)dev_extra)->dev_info->rev_id;
-       }
-    }
-    rc = mf_open_fw(*pmfl, flash_params, num_of_banks);
-    return rc;
-}
-
-
-int     mf_opend       (mflash** pmfl, struct mfile_t* mf, int num_of_banks, flash_params_t* flash_params, int ignore_cache_rep_guard) {
-    return mf_opend_int(pmfl, mf, num_of_banks, flash_params, ignore_cache_rep_guard, MFAT_MFILE, NULL, 0);
-}
-
-
-int     mf_open_uefi(mflash** pmfl, uefi_Dev_t *uefi_dev, uefi_dev_extra_t* uefi_dev_extra)
-{
-
-    return mf_opend_int(pmfl, (void*)uefi_dev, 4, NULL, 0, MFAT_UEFI, (void*)uefi_dev_extra, 0);
-}
-
-int     mf_open_int        (mflash** pmfl, const char* dev, int num_of_banks, flash_params_t* flash_params,
-        int ignore_cache_rep_guard, int cx3_fw_access)
-{
-    mfile*  mf;
-
-    int rc;
-
-    if (!dev) {
-        return MFE_BAD_PARAMS;
-    }
-
-    mf = mopen(dev);
-
-    if (!mf) {
-        return MFE_CR_ERROR;
-    }
-
-    rc = mf_opend_int(pmfl, (struct mfile_t*) mf, num_of_banks, flash_params, ignore_cache_rep_guard, MFAT_MFILE, NULL, cx3_fw_access);
-
-    if ((*pmfl)) {
-        (*pmfl)->opts[MFO_CLOSE_MF_ON_EXIT] = 1;
-    }
-    CHECK_RC(rc);
-    return MFE_OK;
-}
-
-int     mf_open_adv       (mflash** pmfl, const char* dev, int num_of_banks, flash_params_t* flash_params,
-        int ignore_cache_rep_guard, int cx3_fw_access) {
-    return mf_open_int(pmfl, dev, num_of_banks, flash_params, ignore_cache_rep_guard, cx3_fw_access);
-}
-
-int     mf_open       (mflash** pmfl, const char* dev, int num_of_banks, flash_params_t* flash_params,
-        int ignore_cache_rep_guard) {
-    return mf_open_int(pmfl, dev, num_of_banks, flash_params, ignore_cache_rep_guard, 0);
-}
-
-void     mf_close       (mflash* mfl) {
-    if (!mfl) {
-        return;
-    }
-
-    if (mfl->f_reset) {
-        mfl->f_reset(mfl);
-    }
-
-    if (mfl->f_set_bank) {
-        (void)set_bank(mfl, 0);
-    }
-    // we release if we have writer_lock or not doesnt matter on close ...
-    release_semaphore(mfl, 1);
-
-    if (mfl->mf && (mfl)->opts[MFO_CLOSE_MF_ON_EXIT]) {
-        mclose(mfl->mf);
-    }
-#ifndef UEFI_BUILD
-    if (mfl->trm) {
-        trm_destroy(mfl->trm);
-        mfl->trm = (trm_ctx)NULL;
-    }
-#endif
-    free(mfl);
-    return;
-}
-
-
-int     mf_get_attr    (mflash* mfl, flash_attr* attr) {
-    *attr = mfl->attr;
-    return MFE_OK;
-}
-
-int     mf_sw_reset     (mflash* mfl) {
-    if (!SUPPORTS_SW_RESET(mfl->attr.hw_dev_id)) {
-        return MFE_UNSUPPORTED_DEVICE;
-    }
-    if (msw_reset(mfl->mf)) {
-        if (errno == EPERM) {
-            return MFE_CMD_SUPPORTED_INBAND_ONLY;
-        } else if (errno == OP_NOT_SUPPORTED) {
-            return MFE_MANAGED_SWITCH_NOT_SUPPORTED;
-        } else {
-
-            return MFE_ERROR;
-        }
-    }
-
-    return MFE_OK;
-}
-
-
-const char*   mf_err2str (int err_code) {
-
-    switch (err_code) {
-    case MFE_OK:
-        return "MFE_OK";
-    case MFE_ERROR :
-        return "MFE_GENERAL_ERROR";
-    case MFE_BAD_PARAMS:
-        return "MFE_BAD_PARAMS";
-    case MFE_CR_ERROR :
-        return "MFE_CR_ERROR";
-    case MFE_HW_DEVID_ERROR:
-        return "Read a corrupted device id (0xffff). Probably HW/PCI access problem.";
-    case MFE_INVAL:
-        return "MFE_INVAL";
-    case MFE_NOT_IMPLEMENTED:
-        return "MFE_NOT_IMPLEMENTED";
-    case MFE_UNSUPPORTED_FLASH_TOPOLOGY:
-        return "MFE_UNSUPPORTED_FLASH_TOPOLOGY";
-    case MFE_UNSUPPORTED_FLASH_TYPE:
-        return "MFE_UNSUPPORTED_FLASH_TYPE";
-    case MFE_CFI_FAILED:
-        return "MFE_CFI_FAILED";
-    case MFE_TIMEOUT:
-        return "MFE_TIMEOUT";
-    case MFE_ERASE_TIMEOUT:
-        return "MFE_ERASE_TIMEOUT";
-    case MFE_WRITE_TIMEOUT:
-        return "MFE_WRITE_TIMEOUT";
-    case MFE_ERASE_ERROR:
-        return "MFE_ERASE_ERROR";
-    case MFE_WRITE_ERROR:
-        return "MFE_WRITE_ERROR";
-    case MFE_BAD_ALIGN:
-        return "MFE_BAD_ALIGN";
-    case MFE_SEM_LOCKED:
-        return "MFE_SEM_LOCKED";
-    case MFE_VERIFY_ERROR:
-        return "MFE_VERIFY_ERROR";
-    case MFE_NOMEM:
-        return "MFE_NOMEM";
-    case MFE_OUT_OF_RANGE:
-        return "MFE_OUT_OF_RANGE";
-    case MFE_CMD_SUPPORTED_INBAND_ONLY:
-        return "Command supported over IB interface only.";
-    case MFE_NO_FLASH_DETECTED:
-        return "MFE_NO_FLASH_DETECTED";
-    case MFE_LOCKED_CRSPACE:
-        return "MFE_HW_ACCESS_DISABLED";
-    case MFE_CMDIF_BAD_STATUS_ERR:
-        return "MFE_CMDIF_BAD_STATUS_ERR";
-    case MFE_CMDIF_TIMEOUT_ERR:
-        return "MFE_CMDIF_TIMEOUT_ERR";
-    case MFE_CMDIF_GO_BIT_BUSY:
-        return "MFE_CMDIF_GO_BIT_BUSY";
-    case MFE_CMDIF_BAD_OP:
-        return "MFE_CMDIF_BAD_OP";
-    case MFE_MISSING_KEY:
-        return "No key was set";
-    case MFE_MISMATCH_KEY:
-        return "The given key is incorrect";
-    case MFE_UNKNOWN_REG:
-        return "MFE_UNKNOWN_REG";
-    case MFE_DIRECT_FW_ACCESS_DISABLED:
-        return "MFE_DIRECT_FW_ACCESS_DISABLED";
-    case MFE_MANAGED_SWITCH_NOT_SUPPORTED:
-        return "MFE_MANAGED_SWITCH_NOT_SUPPORTED";
-    case MFE_NOT_SUPPORTED_OPERATION:
-        return "MFE_NOT_SUPPORTED_OPERATION";
-    case MFE_FLASH_NOT_EXIST:
-        return "MFE_FLASH_NOT_EXIST";
-    case MFE_MISMATCH_PARAM:
-        return "MFE_MISMATCH_PARAM";
-    case MFE_EXCEED_SUBSECTORS_MAX_NUM:
-        return "MFE_EXCEED_SUBSECTORS_MAX_NUM";
-    case MFE_EXCEED_SECTORS_MAX_NUM:
-        return "MFE_EXCEED_SECTORS_MAX_NUM";
-    case MFE_SECTORS_NUM_NOT_POWER_OF_TWO:
-        return "MFE_SECTORS_NUM_NOT_POWER_OF_TWO";
-    case MFE_UNKOWN_ACCESS_TYPE:
-        return "MFE_UNKOWN_ACCESS_TYPE";
-    case MFE_UNSUPPORTED_DEVICE:
-        return "MFE_UNSUPPORTED_DEVICE";
-    case MFE_UNSUPPORTED_ERASE_OPERATION:
-        return "MFE_UNSUPPORTED_ERASE_OPERATION";
-    case MFE_OLD_DEVICE_TYPE:
-        return "MFE_OLD_DEVICE_TYPE";
-    case MFE_ICMD_INIT_FAILED:
-        return "MFE_ICMD_INIT_FAILED";
-    case MFE_ICMD_NOT_SUPPORTED:
-        return "MFE_ICMD_NOT_SUPPORTED";
-    case MFE_HW_ACCESS_NOT_SUPP:
-        return "Secure host mode is not enabled in this FW.";
-    case MFE_MAD_SEND_ERR:
-        return "MFE_MAD_SEND_ERR";
-    case MFE_ICMD_BAD_PARAM:
-        return "MFE_ICMD_BAD_PARAM";
-    case MFE_ICMD_INVALID_OPCODE:
-        return "MFE_ICMD_INVALID_OPCODE";
-    case MFE_ICMD_INVALID_CMD:
-        return "MFE_ICMD_INVALID_CMD";
-    case MFE_ICMD_OPERATIONAL_ERROR:
-        return "MFE_ICMD_OPERATIONAL_ERROR";
-    case MFE_REG_ACCESS_BAD_METHOD:
-        return "MFE_REG_ACCESS_BAD_METHOD";
-    case MFE_REG_ACCESS_NOT_SUPPORTED:
-        return "MFE_REG_ACCESS_NOT_SUPPORTED";
-    case MFE_REG_ACCESS_DEV_BUSY:
-        return "MFE_REG_ACCESS_DEV_BUSY";
-    case MFE_REG_ACCESS_VER_NOT_SUPP:
-        return "MFE_REG_ACCESS_VER_NOT_SUPP";
-    case MFE_REG_ACCESS_UNKNOWN_TLV:
-        return "MFE_REG_ACCESS_UNKNOWN_TLV";
-    case MFE_REG_ACCESS_REG_NOT_SUPP:
-        return "MFE_REG_ACCESS_REG_NOT_SUPP";
-    case MFE_REG_ACCESS_CLASS_NOT_SUPP:
-        return "MFE_REG_ACCESS_CLASS_NOT_SUPP";
-    case MFE_REG_ACCESS_METHOD_NOT_SUPP:
-        return "MFE_REG_ACCESS_METHOD_NOT_SUPP";
-    case MFE_REG_ACCESS_BAD_PARAM:
-        return "MFE_REG_ACCESS_BAD_PARAM";
-    case MFE_REG_ACCESS_RES_NOT_AVLBL:
-        return "MFE_REG_ACCESS_RESOURCE_NOT_AVAILABLE";
-    case MFE_REG_ACCESS_MSG_RECPT_ACK:
-        return "MFE_REG_ACCESS_MSG_RECPT_ACK";
-    case MFE_REG_ACCESS_UNKNOWN_ERR:
-        return "MFE_REG_ACCESS_UNKNOWN_ERR";
-    case MFE_REG_ACCESS_SIZE_EXCCEEDS_LIMIT:
-        return "MFE_REG_ACCESS_SIZE_EXCCEEDS_LIMIT";
-    case MFE_PCICONF:
-        return "Access to device should be through configuration cycles.";
-    case MFE_ILLEGAL_BANK_NUM:
-        return "MFE_ILLEGAL_BANK_NUM";
-    case MFE_OCR_NOT_SUPPORTED:
-        return "Direct flash access is not supported.";
-    default:
-        return "Unknown error";
-    }
-}
-
-#ifndef UEFI_BUILD
-int trm2mfe_err(trm_sts rc)
-{
-    switch (rc) {
-    case TRM_STS_DEV_NOT_SUPPORTED:
-        return MFE_UNSUPPORTED_DEVICE;
-    case TRM_STS_CR_ACCESS_ERR:
-        return MFE_CR_ERROR;
-    case TRM_STS_MEM_ERROR:
-        return MFE_NOMEM;
-    default:
-        return MFE_ERROR;
-    }
-}
-#endif
-
-int     mf_set_opt     (mflash* mfl, MfOpt opt, int  val) {
-    if ((int)opt < 0 || opt >= MFO_LAST) {
-        return MFE_BAD_PARAMS;
-    }
-    mfl->opts[opt] = val;
-    return MFE_OK;
-}
-
-int     mf_get_opt     (mflash* mfl, MfOpt opt, int *val) {
-    if ((int)opt < 0 || opt >= MFO_LAST) {
-        return MFE_BAD_PARAMS;
-    }
-    *val = mfl->opts[opt];
-    return MFE_OK;
-}
-
-
-int     mf_cr_read     (mflash* mfl, u_int32_t cr_addr, u_int32_t* data) {
-    if (mread4(mfl->mf, cr_addr, data) != 4) {
-        return MFE_CR_ERROR;
-    }
-    return MFE_OK;
-}
-int     mf_cr_write    (mflash* mfl, u_int32_t cr_addr, u_int32_t  data) {
-    if (mwrite4(mfl->mf, cr_addr, data) != 4) {
-        return MFE_CR_ERROR;
-    }
-    return MFE_OK;
-}
-
-int    mf_update_boot_addr(mflash* mfl, u_int32_t boot_addr)
-{
-    if (mfl->access_type != MFAT_UEFI && mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] != ATBM_MLNXOS_CMDIF) {
-        // the boot addr will be updated directly via cr-space
-        return mf_cr_write(mfl, BOOT_CR_SPACE_ADDR, ((boot_addr << 8) | 0x06));
-    }
-    // the boot addr will be updated via reg
-    return mf_update_boot_addr_by_type(mfl, boot_addr);
-}
-
-int     mf_read_modify_status_winbond (mflash *mfl, u_int8_t bank_num, u_int8_t is_first_status_reg, u_int8_t param, u_int8_t offset, u_int8_t size)
-{
-    u_int8_t status1 = 0, status2 = 0, use_rdsr2 = 0;
-    u_int32_t status = 0;
-    u_int8_t bytes_to_write = 1;
-    int rc;
-
-    rc = set_bank_int(mfl, bank_num); CHECK_RC(rc);
-    if ( (mfl->attr.vendor == FV_WINBOND &&  mfl->attr.type == FMT_WINBOND) ||
-         (mfl->attr.vendor ==  FV_S25FLXXXX && mfl->attr.type == FMT_S25FL116K)) {
-        /*
-         * if we have 2 status registers, winbond are allowing us to write both of them
-         * in a single command WRSR  status_reg1 located in MSB, status_reg2 after status_reg1
-         */
-        use_rdsr2 = 1;
-    }
-
-    // Read register status
-    rc = mfl->f_spi_status(mfl, SFC_RDSR, &status1); CHECK_RC(rc);
-    if (use_rdsr2) {
-        rc = mfl->f_spi_status(mfl, SFC_RDSR2, &status2); CHECK_RC(rc);
-        status = MERGE(0, status2, 0, 8);
-        bytes_to_write = 2;
-    }
-    // Prepare the read status word
-    status = MERGE(status, status1, 8, 8);
-    // Modify the status according to the function arguments
-    status = MERGE(status, param, offset + is_first_status_reg * 8 , size);
-    // fix status register in case we dont need to write status register 2
-    if (bytes_to_write == 1) {
-        status = status >> 8;
-    }
-    // Write register status
-    rc = cntx_spi_write_status_reg(mfl, status, SFC_WRSR, bytes_to_write); CHECK_RC(rc);
-    return MFE_OK;
-}
-#define QUAD_EN_OFFSET 1
-#define QUAD_EN_OFFSET_ST 3
-#define DUMMY_CYCLES_OFFSET_ST 12
-
-int mf_read_modify_status_new(mflash *mfl, u_int8_t bank_num, u_int8_t read_cmd, u_int8_t write_cmd, u_int8_t val,
-                              u_int8_t offset, u_int8_t size, u_int8_t bytes_num)
-{
-    int rc;
-    u_int32_t status = 0;
-
-    rc = set_bank_int(mfl, bank_num); CHECK_RC(rc);
-    rc = cntx_int_spi_get_status_data(mfl, read_cmd, &status, bytes_num); CHECK_RC(rc);
-    status = MERGE(status, val, offset, size);
-    rc = cntx_spi_write_status_reg(mfl, status, write_cmd, bytes_num); CHECK_RC(rc);
-    return MFE_OK;
-}
-
-int mf_get_param_int(mflash* mfl, u_int8_t *param_p, u_int8_t cmd, u_int8_t offset, u_int8_t bit_size,\
-                                                       u_int8_t bytes_num, u_int8_t enabled_val)
-{
-    u_int32_t status = 0, is_first = 1, bank;
-    int rc;
-    for (bank = 0; bank < mfl->attr.banks_num; bank++ ) {
-        u_int8_t curr_val;
-        rc = set_bank_int(mfl, bank); CHECK_RC(rc);
-        rc = cntx_int_spi_get_status_data(mfl, cmd, &status, bytes_num); CHECK_RC(rc);
-
-        curr_val = EXTRACT(status, offset, bit_size);
-        if (bit_size == 1) {
-               curr_val = (curr_val == enabled_val);
-        }
-
-        if (is_first) {
-            *param_p = curr_val;
-            is_first = 0;
-        } else {
-            if (*param_p != curr_val) {
-                return MFE_MISMATCH_PARAM;
-            }
-        }
-    }
-    return MFE_OK;
-}
-
-int     mf_set_dummy_cycles (mflash *mfl, u_int8_t num_of_cycles)
-{
-       if (!mfl || num_of_cycles < 1 || num_of_cycles > 15) {
-        return MFE_BAD_PARAMS;
-       }
-    int bank, rc;
-    if (!(mfl->attr.dummy_cycles_support && mfl->supp_sr_mod)) {
-        return MFE_NOT_SUPPORTED_OPERATION;
-    }
-    for (bank = 0; bank < mfl->attr.banks_num; bank++) {
-        rc =  mf_read_modify_status_new(mfl, bank, SFC_RDNVR, SFC_WRNVR, num_of_cycles, DUMMY_CYCLES_OFFSET_ST, 4, 2); CHECK_RC(rc);
-    }
-    return MFE_OK;
-}
-
-int mf_get_dummy_cycles(mflash* mfl, u_int8_t *dummy_cycles_p)
-{
-       if (!mfl || !dummy_cycles_p) {
-        return MFE_BAD_PARAMS;
-       }
-    if (!(mfl->attr.dummy_cycles_support && mfl->supp_sr_mod)) {
-        return MFE_NOT_SUPPORTED_OPERATION;
-    }
-    return  mf_get_param_int(mfl, dummy_cycles_p, SFC_RDNVR, DUMMY_CYCLES_OFFSET_ST, 4, 2, 0);
-    return MFE_OK;
-}
-
-
-
-int     mf_set_quad_en (mflash *mfl, u_int8_t quad_en)
-{
-       if (!mfl) {
-               return MFE_BAD_PARAMS;
-       }
-    int bank, rc;
-    if (!(mfl->attr.quad_en_support && mfl->supp_sr_mod)) {
-        return MFE_NOT_SUPPORTED_OPERATION;
-    }
-    for (bank = 0; bank < mfl->attr.banks_num; bank++) {
-        if (mfl->attr.vendor == FV_WINBOND ||  mfl->attr.vendor == FV_S25FLXXXX) {
-            rc = mf_read_modify_status_winbond(mfl, bank, 0, quad_en, QUAD_EN_OFFSET, 1); CHECK_RC(rc);
-        } else if (mfl->attr.vendor == FV_ST) {
-            rc = mf_read_modify_status_new(mfl, bank, SFC_RDNVR, SFC_WRNVR, !quad_en, QUAD_EN_OFFSET_ST, 1, 2); CHECK_RC(rc);
-        }
-    }
-    return MFE_OK;
-}
-
-int mf_get_quad_en(mflash* mfl, u_int8_t *quad_en_p)
-{
-       if (!mfl || !quad_en_p) {
-               return MFE_BAD_PARAMS;
-       }
-    if (!(mfl->attr.quad_en_support && mfl->supp_sr_mod)) {
-        return MFE_NOT_SUPPORTED_OPERATION;
-    }
-
-    if (mfl->attr.vendor == FV_WINBOND || mfl->attr.vendor == FV_S25FLXXXX) {
-        return  mf_get_param_int(mfl, quad_en_p, SFC_RDSR2, QUAD_EN_OFFSET, 1, 1, 1);
-    } else if (mfl->attr.vendor == FV_ST) {
-        return  mf_get_param_int(mfl, quad_en_p, SFC_RDNVR, QUAD_EN_OFFSET_ST, 1, 2, 0);
-    }
-    return MFE_NOT_SUPPORTED_OPERATION;
-}
-
-#define REG1_TB_OFFSET  5
-#define REG1_SEC_OFFSET 6
-#define REG1_BP_OFFSET 2
-#define REG1_BP_SIZE   3
-#define ONE_BIT_SIZE   1
-
-#define WRITE_PROTECT_CHECKS(mfl, bank_num) { \
-           if (!mfl->attr.write_protect_support) {\
-               return MFE_NOT_SUPPORTED_OPERATION;\
-           }\
-           if (bank_num >= mfl->attr.banks_num) {\
-               return MFE_FLASH_NOT_EXIST;\
-           }\
-}
-#define MAX_SUBSECTOR_NUM 8
-#define MAX_SECTORS_NUM   64
-
-int     mf_set_write_protect(mflash *mfl, u_int8_t bank_num, write_protect_info_t *protect_info)
-{
-    u_int8_t protect_mask = 0, log2_sect_num = 0;
-    u_int8_t sectors_num =  protect_info->sectors_num;
-
-    //printf("-D- mf_set_write_protect: bank_num = %#x, subsec: %#x, bottom: %#x, sectors_num=%#x\n", bank_num,
-    //       protect_info->is_subsector, protect_info->is_bottom, protect_info->sectors_num);
-
-    WRITE_PROTECT_CHECKS(mfl, bank_num);
-    if (((protect_info->sectors_num - 1) & protect_info->sectors_num) != 0) {
-        return MFE_SECTORS_NUM_NOT_POWER_OF_TWO;
-    }
-    if (protect_info->sectors_num > MAX_SECTORS_NUM) {
-        return MFE_EXCEED_SECTORS_MAX_NUM;
-    }
-
-    if (mfl->attr.protect_sub_and_sector && protect_info->is_subsector) {
-        if (protect_info->sectors_num > MAX_SUBSECTOR_NUM) {
-            return MFE_EXCEED_SUBSECTORS_MAX_NUM;
-        }
-    }
-
-    for (log2_sect_num = 0; log2_sect_num < 8; log2_sect_num++) {
-        if (sectors_num == 0) {
-            break;
-        }
-        sectors_num >>= 1;
-        // printf("-D- sectors_num = %d\n", sectors_num);
-    }
-    u_int8_t modify_size = 0;
-
-    protect_mask = MERGE(protect_mask, log2_sect_num, 0, REG1_BP_SIZE);
-    modify_size += REG1_BP_SIZE;
-
-    protect_mask = MERGE(protect_mask, protect_info->is_bottom, REG1_BP_SIZE, ONE_BIT_SIZE);
-    modify_size += ONE_BIT_SIZE;
-    if (mfl->attr.protect_sub_and_sector) {
-        protect_mask = MERGE(protect_mask, protect_info->is_subsector, REG1_BP_SIZE + ONE_BIT_SIZE, ONE_BIT_SIZE);
-        modify_size += ONE_BIT_SIZE;
-    }
-    return mf_read_modify_status_winbond(mfl, bank_num, 1, protect_mask, REG1_BP_OFFSET, modify_size);
-}
-
-int     mf_get_write_protect(mflash *mfl, u_int8_t bank_num, write_protect_info_t *protect_info)
-{
-    int rc;
-    u_int8_t status;
-
-    WRITE_PROTECT_CHECKS(mfl, bank_num);
-    rc = set_bank_int(mfl, bank_num); CHECK_RC(rc);
-    rc = mfl->f_spi_status(mfl, SFC_RDSR, &status); CHECK_RC(rc);
-    protect_info->is_bottom = EXTRACT(status, REG1_TB_OFFSET, 1);
-
-    if (mfl->attr.protect_sub_and_sector) {
-        protect_info->is_subsector = EXTRACT(status, REG1_SEC_OFFSET, 1);
-    } else {
-        protect_info->is_subsector = 0;
-    }
-
-    protect_info->sectors_num = 1 << (EXTRACT(status, REG1_BP_OFFSET, REG1_BP_SIZE) - 1);
-
-    return MFE_OK;
-}
-
-int mf_enable_hw_access(mflash* mfl, u_int64_t key)
-{
-#ifndef UEFI_BUILD
-    int rc;
-    rc = tcif_hw_access(mfl->mf, key, 0 /* Unlock */);
-    return (rc == ME_CMDIF_UNKN_TLV) ? MFE_MISMATCH_KEY : MError2MfError(rc);
-#else
-    (void)mfl;
-    (void)key;
-    return MFE_NOT_SUPPORTED_OPERATION;
-#endif
-}
-
-int mf_disable_hw_access(mflash* mfl)
-{
-#ifndef UEFI_BUILD
-    int rc;
-    // We need to release the semaphore because we will not have any access to semaphore after disabling the HW access
-    rc = release_semaphore(mfl, 1); CHECK_RC(rc);
-    rc = tcif_hw_access(mfl->mf, 0, 1 /* Lock */);
-    // translate to operation specific errors
-    switch (rc) {
-    case ME_CMDIF_UNKN_TLV:
-        rc = MFE_MISMATCH_KEY;
-        break;
-    case ME_CMDIF_BAD_OP:
-        rc = MFE_MISSING_KEY;
-        break;
-    default:
-        rc =  MError2MfError(rc);
-        break;
-    }
-    return rc;
-#else
-    (void)mfl;
-    return MFE_NOT_SUPPORTED_OPERATION;
-#endif
-}
-
-mfile* mf_get_mfile(mflash* mfl)
-{
-    return mfl->mf;
-}
-
diff --git a/mflash/mflash.h b/mflash/mflash.h
deleted file mode 100644 (file)
index f0b255a..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- *
- * mflash.h - Mellanox Technilogies LTD. Flash access lib heared file
- * ==================================================================
- *
- * Copyright (c) 2005 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id: $
- *
- */
-#ifndef MFLASH_H
-#define MFLASH_H
-
-#include <compatibility.h>
-#include <mtcr.h>
-#include "mflash_types.h"
-#include "mflash_common_structs.h"
-
-#include <mlxfwops/uefi_c/mft_uefi_common.h>
-
-#ifdef __cplusplus
-#define EXTERN_C_START extern "C" {
-#define EXTERN_C_END   }
-#else
-#define EXTERN_C_START
-#define EXTERN_C_END
-#endif
-
-EXTERN_C_START
-
-typedef enum MfCommandSet {
-    CS_INTEL   = 1,
-    CS_AMD     = 2,
-
-    MCS_STSPI  = 0x80,  // This is not a "real" CFI command set - it's used as a "Meta" command set number.
-    MCS_SSTSPI = 0x81
-} MfCommandSet;
-
-typedef struct flash_params {
-    const char *type_name;
-    int log2size;
-    int num_of_flashes;
-} flash_params_t;
-
-typedef struct write_protect_info {
-    u_int8_t is_subsector;
-    u_int8_t is_bottom;
-    u_int8_t sectors_num;
-} write_protect_info_t;
-
-/////////////////////////////////////////////
-//
-// MFLASH INTERFACE FUNCTIONS
-//
-// Return value:
-// All functions returns MfError enum values.
-//
-/////////////////////////////////////////////
-
-struct mfile_t;
-
-
-//
-// open/close functions:
-// This lib is used pretty much like a C file: open it, use and close when done.
-//
-// mf_open(): Allocates and init the mflash object to be used with the other lib funcs.
-//   OUT: pmfl - The opened mflash struct is returned here.
-//   IN : dev  - The string name of the crspace device to use.
-//
-// mf_opend(): Same as mf_open, but uses an already opened crspace device.
-//
-// mf_open_ignore_lock() :
-//   THIS FUNCTION IS NOT SAFE -
-//   It ignores the flash semaphore during flash init sequence.
-//   Use only after one of the above open() failed because of MFE_SEM_LOCKED
-//   and you are absolutely sure that the lock can be overridden (E.G. semaphore
-//   remained in locked state due to previous kill of the burning app).
-//
-// mf_close() : Deallocates mflash resources.
-//   Note: User should call mf_close() even if mf_open failed (and the returning mfl is not NULL)
-//
-int     mf_open        (mflash** pmfl, const char* dev, int num_of_banks, flash_params_t* flash_params,
-        int ignore_cache_rep_guard);
-int     mf_opend       (mflash** pmfl, struct mfile_t* mf, int num_of_banks,  flash_params_t* flash_params,
-        int ignore_cache_rep_guard);
-int     mf_open_adv       (mflash** pmfl, const char* dev, int num_of_banks, flash_params_t* flash_params,
-        int ignore_cache_rep_guard, int cx3_fw_access);
-
-int     mf_open_uefi(mflash** pmfl, uefi_Dev_t *uefi_dev, uefi_dev_extra_t* dev_extra);
-
-int     mf_open_ignore_lock(mflash* mfl);
-void     mf_close       (mflash* mfl);
-
-//
-// Flash access functions:
-// The data buffer should be pre-allocated by caller. The rest is quite self explanatory. .
-//
-int     mf_read        (mflash* mfl, u_int32_t addr, u_int32_t len, u_int8_t* data);
-int     mf_write       (mflash* mfl, u_int32_t addr, u_int32_t len, u_int8_t* data);
-// mf_erase performs an erase on the smallest block
-int     mf_erase(mflash* mfl, u_int32_t addr);
-// adv erasing
-int     mf_erase_64k_sector(mflash* mfl, u_int32_t addr);
-int     mf_erase_4k_sector(mflash* mfl, u_int32_t addr);
-
-// swap between erasing 4KB or 64KB chunks (performance optimization)
-
-
-//
-// Crspace access through mflash:
-//
-int     mf_cr_read     (mflash* mfl, u_int32_t cr_addr, u_int32_t* data);
-int     mf_cr_write    (mflash* mfl, u_int32_t cr_addr, u_int32_t  data);
-
-int     mf_update_boot_addr(mflash* mfl, u_int32_t boot_addr);
-// Software reset the target device. Currently supported for InfiniScale4 switch via IB interface only.
-int     mf_sw_reset     (mflash* mfl);
-//
-// mf_get_attr(): Returns the flash_attr struct
-//
-int     mf_get_attr    (mflash* mfl, flash_attr* attr);
-
-int     mf_set_quad_en (mflash *mfl, u_int8_t quad_en);
-int     mf_get_quad_en (mflash *mfl, u_int8_t *quad_en);
-
-int     mf_set_write_protect(mflash *mfl, u_int8_t bank_num, write_protect_info_t *protect_info);
-int     mf_get_write_protect(mflash *mfl, u_int8_t bank_num, write_protect_info_t *protect_info);
-
-int     mf_set_dummy_cycles (mflash *mfl, u_int8_t num_of_cycles);
-int     mf_get_dummy_cycles (mflash *mfl, u_int8_t *num_of_cycles);
-
-//
-// Set/Get for some options.
-//
-int     mf_set_opt     (mflash* mfl, MfOpt opt, int  val);
-int     mf_get_opt     (mflash* mfl, MfOpt opt, int *val);
-
-int     mf_enable_hw_access(mflash* mfl, u_int64_t key);
-int     mf_disable_hw_access(mflash* mfl);
-int     mf_release_semaphore(mflash* mfl);
-
-// get mfile object
-mfile* mf_get_mfile(mflash* mfl);
-
-//
-// err code to string translation for printing.
-//
-const char* mf_err2str (int err_code);
-
-void mf_flash_list(char *flash_list);
-
-EXTERN_C_END
-
-#endif // MFLASH_H
-
-
-
diff --git a/mflash/mflash_access_layer.c b/mflash/mflash_access_layer.c
deleted file mode 100755 (executable)
index f5e6836..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <mtcr.h>
-#include <reg_access.h>
-
-#include "mflash_types.h"
-#include "mflash_pack_layer.h"
-#include "mflash_access_layer.h"
-
-extern flash_info_t g_flash_info_arr[];
-
- // On windows we don't support cmdIf access!
-int check_access_type(mflash* mfl)
-//TODO: re-write in a more elegant way.
-{
-    if (mfl->access_type == MFAT_MFILE) {
-        switch (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE]) {
-        case ATBM_INBAND:
-        #ifdef NO_INBAND_ACCESS
-            return MFE_NOT_SUPPORTED_OPERATION;
-        #endif
-    #ifndef _WIN_
-        case ATBM_MLNXOS_CMDIF:
-    #endif
-        case ATBM_ICMD:
-        case ATBM_TOOLS_CMDIF:
-            break;
-        default:
-            return MFE_UNKOWN_ACCESS_TYPE;
-        }
-       } else if (mfl->access_type == MFAT_UEFI) {
-    } else {
-        return MFE_UNKOWN_ACCESS_TYPE;
-    }
-    return MFE_OK;
-}
-
-
-int sx_get_flash_info_by_type(mflash* mfl, flash_info_t *f_info, int *log2size, u_int8_t *no_flash)
-{
-    int rc;
-    u_int8_t vendor, type, capacity;
-    u_int32_t jedec_id;
-    unsigned type_index = 0;
-    u_int8_t support_sub_and_sector = 0;
-
-
-    rc = check_access_type( mfl); CHECK_RC(rc);
-    rc = com_get_jedec(mfl->mf, get_bank_int(mfl), &jedec_id, &(mfl->attr.fw_flash_sector_sz), &support_sub_and_sector); CHECK_RC(rc);
-    //printf("-D- jedec_id = %#x\n", jedec_id);
-    rc = get_info_from_jededc_id(jedec_id, &vendor, &type, &capacity); CHECK_RC(rc);
-    // Return there is no flash when all the params are 0xff
-    if (vendor == 0xff && type == 0xff && capacity == 0xff) {
-        *no_flash = 1;
-        return MFE_OK;
-    }
-    rc = get_type_index_by_vendor_and_type(vendor, type, &type_index); CHECK_RC(rc);
-    rc = get_log2size_by_capcity(type_index, capacity, log2size);    CHECK_RC(rc);
-
-    memcpy(f_info, &(g_flash_info_arr[type_index]), sizeof(flash_info_t));
-    f_info->support_sub_and_sector = support_sub_and_sector;
-    return MFE_OK;
-}
-
-int sx_block_read_by_type(mflash* mfl, u_int32_t blk_addr, u_int32_t blk_size, u_int8_t* data)
-{
-    int rc, bank;
-    u_int32_t flash_offset;
-
-    if (blk_size > (u_int32_t)mfl->attr.block_write  || blk_size < 4) {
-        return MFE_BAD_PARAMS;
-    }
-    rc = mfl_get_bank_info(mfl, blk_addr, &flash_offset, &bank); CHECK_RC(rc);
-    COM_CHECK_ALLIGN(flash_offset, blk_size);
-
-    rc = check_access_type( mfl); CHECK_RC(rc);
-    rc = sx_st_block_access(mfl->mf, flash_offset, bank, blk_size, data, REG_ACCESS_METHOD_GET);CHECK_RC(rc);
-
-    return MFE_OK;
-}
-
-int sx_block_write_by_type(mflash* mfl, u_int32_t addr, u_int32_t size, u_int8_t* data)
-{
-    int rc, bank;
-    u_int32_t flash_offset;
-
-    WRITE_CHECK_ALLIGN(addr, mfl->attr.block_write, size);
-
-
-    rc = mfl_get_bank_info(mfl, addr, &flash_offset, &bank); CHECK_RC(rc);
-    COM_CHECK_ALLIGN(flash_offset, size);
-
-    rc = check_access_type( mfl); CHECK_RC(rc);
-    rc = sx_st_block_access(mfl->mf, flash_offset, bank, size, data, REG_ACCESS_METHOD_SET);CHECK_RC(rc);
-    return MFE_OK;
-}
-
-#define MAX_FLASH_PROG_SEM_RETRY_CNT 2048
-static int lock_flash_programing_sem(mflash* mfl)
-{
-#ifndef UEFI_BUILD
-    int rc;
-    if (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_ICMD || mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_INBAND) {
-        rc = trm_lock(mfl->trm, TRM_RES_FLASH_PROGRAMING, MAX_FLASH_PROG_SEM_RETRY_CNT);
-        if (rc && rc != TRM_STS_RES_NOT_SUPPORTED) {
-            return MFE_SEM_LOCKED;
-        }
-    } else if (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_TOOLS_CMDIF) {
-        rc = trm_lock(mfl->trm, TRM_RES_HCR_FLASH_PROGRAMING, MAX_FLASH_PROG_SEM_RETRY_CNT);
-        if (rc && rc != TRM_STS_RES_NOT_SUPPORTED) {
-            return MFE_SEM_LOCKED;
-        }
-    }
-#endif
-    return MFE_OK;
-}
-
-static int unlock_flash_programing_sem(mflash* mfl)
-{
-#ifndef UEFI_BUILD
-    int rc;
-    if (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_ICMD || mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_INBAND) {
-        rc = trm_unlock(mfl->trm, TRM_RES_FLASH_PROGRAMING);
-        if (rc && rc != TRM_STS_RES_NOT_SUPPORTED) {
-            return MFE_SEM_LOCKED;
-        }
-    } else if (mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_TOOLS_CMDIF) {
-        rc = trm_unlock(mfl->trm, TRM_RES_HCR_FLASH_PROGRAMING);
-        if (rc && rc != TRM_STS_RES_NOT_SUPPORTED) {
-            return MFE_SEM_LOCKED;
-        }
-    }
-#endif
-    return MFE_OK;
-}
-
-int sx_flash_lock_by_type(mflash* mfl, int lock_state)
-{
-       // burning through some FW interface , lock flash programing semaphore if possible
-    int rc;
-    if (lock_state) {
-        rc = lock_flash_programing_sem(mfl);
-    } else {
-        rc = unlock_flash_programing_sem(mfl);
-    }
-    if (rc == MFE_OK) {
-        mfl->is_locked = (lock_state != 0);
-    }
-    return rc;
-}
-
-int sx_erase_sect_by_type(mflash* mfl, u_int32_t addr, u_int32_t erase_size)
-{
-    int rc, bank;
-    u_int32_t flash_addr;
-
-    rc = mfl_get_bank_info(mfl, addr, &flash_addr, &bank); CHECK_RC(rc);
-    rc = check_access_type( mfl); CHECK_RC(rc);
-    rc = common_erase_sector(mfl->mf, flash_addr, bank, erase_size); CHECK_RC(rc);
-    return MFE_OK;
-}
-
-int mf_update_boot_addr_by_type(mflash* mfl, u_int32_t boot_addr)
-{
-    int rc;
-    if (mfl->access_type == MFAT_UEFI || mfl->opts[MFO_FW_ACCESS_TYPE_BY_MFILE] == ATBM_MLNXOS_CMDIF) {
-        // No CR-Space access - use mfpa register
-        rc = run_mfpa_command(mfl->mf, REG_ACCESS_METHOD_SET, get_bank_int(mfl), boot_addr, NULL, NULL, NULL, NULL); CHECK_RC(rc);
-    }
-    return MFE_OK;
-}
diff --git a/mflash/mflash_access_layer.h b/mflash/mflash_access_layer.h
deleted file mode 100755 (executable)
index 622e79e..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef MFLASH_ACCESS_LAYER_H_
-#define MFLASH_ACCESS_LAYER_H_
-
-#include <compatibility.h>
-
-#include "mflash_common_structs.h"
-
-#define BOOT_CR_SPACE_ADDR 0xf0000
-
-int sx_get_flash_info_by_type(mflash* mfl, flash_info_t* type_index, int *log2size, u_int8_t *no_flash);
-int sx_block_read_by_type(mflash* mfl, u_int32_t blk_addr, u_int32_t blk_size, u_int8_t* data);
-int sx_block_write_by_type(mflash* mfl, u_int32_t addr, u_int32_t size, u_int8_t* data);
-int sx_flash_lock_by_type(mflash* mfl, int lock_state);
-int sx_erase_sect_by_type(mflash* mfl, u_int32_t addr, u_int32_t erase_size);
-int mf_update_boot_addr_by_type(mflash* mfl, u_int32_t boot_addr);
-
-
-#endif /* MFLASH_ACCESS_LAYER_H_ */
diff --git a/mflash/mflash_common_structs.h b/mflash/mflash_common_structs.h
deleted file mode 100644 (file)
index f03a089..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef MFLASH_COMMON_STRUCTS_H
-#define MFLASH_COMMON_STRUCTS_H
-
-typedef struct mflash mflash;
-
-typedef enum MfOpt {
-    MFO_NO_VERIFY = 0,
-    MFO_AMD_UNLOCK_BYPASS,
-    MFO_AMD_BYTE_MODE,
-    MFO_IGNORE_SEM_LOCK,
-    MFO_CLOSE_MF_ON_EXIT,
-    MFO_NUM_OF_BANKS,
-    MFO_IGNORE_CASHE_REP_GUARD,
-    MFO_USER_BANKS_NUM,
-    MFO_FW_ACCESS_TYPE_BY_MFILE,
-    MFO_SX_TYPE,
-    MFO_NEW_CACHE_REPLACEMENT_EN,
-    MFO_CX3_FW_ACCESS_EN,
-    MFO_LAST
-} MfOpt;
-
-enum MfAccessType {
-    MFAT_MFILE = 0,
-    MFAT_UEFI,
-};
-
-/////////////////////////////////////////////
-//
-// Flash attributes struct
-//
-/////////////////////////////////////////////
-typedef struct flash_attr {
-    const char *type_str;
-    //
-    // hw_dev_id    hw dev id of the HCA.
-    //
-    u_int32_t hw_dev_id;
-    u_int32_t rev_id;
-
-    //
-    // size:        Total size (in bytes) of all flash devices connected to
-    //              the device (forming a contigous address space)
-    //
-    u_int32_t size;
-
-    //
-    // sector_size: Flash sector size (in bytes).
-    //              Assuming a single sector size for the flash.
-    //
-    u_int32_t sector_size;
-
-    int       num_erase_blocks;         // Number of sector defs.
-
-    //
-    // bank_size:   Different bank means a different chip sellect or gpio settings is needed when crossing
-    //              this alignment.
-    //              This may indicate a different flash device (for SPI flash in InfiniHostIIILx / ConnectX).
-    //              Or GPIO change for parallel flash (in InfiniHostIII / InfiniHost)
-    //
-    int bank_size;
-    int log2_bank_size;
-
-    //
-    // Command set (taken from CFI terminology)
-    //
-    int command_set;
-
-    u_int8_t erase_command;
-
-    //
-    // block_write - if block write is supported, holds the block size in bytes. 0 otherwise.
-    //               The meaning of "block write" is not the same in parallel and serial flash.
-    //
-    int block_write;
-
-    //
-    // page_write -  if page write is supported, holds the page size in bytes. 0 otherwise.
-    //
-    int page_write;
-
-    u_int8_t banks_num;
-    u_int8_t quad_en_support;
-    u_int8_t dummy_cycles_support;
-    u_int8_t write_protect_support;
-    u_int8_t protect_sub_and_sector;
-    u_int8_t vendor;
-    u_int8_t type;
-    // the flash sector size as seen by FW
-    u_int32_t fw_flash_sector_sz;
-
-    u_int8_t support_sub_and_sector; // true if flash can work in both 64KB and 4KB sectors
-
-
-} flash_attr;
-
-typedef struct flash_info {
-    const char *name;
-    u_int8_t vendor;
-    u_int8_t type;
-    int command_set;
-    int erase_command;
-    u_int32_t sector_size;
-    u_int8_t support_sub_and_sector;
-    u_int8_t quad_en_support;
-    u_int8_t write_protected_support;
-    u_int8_t protect_sub_and_sector;
-    u_int8_t dummy_cycles_support;
-} flash_info_t;
-
-
-#endif // MFLASH_COMMON_STRUCTS_H
-
-
-
diff --git a/mflash/mflash_pack_layer.c b/mflash/mflash_pack_layer.c
deleted file mode 100755 (executable)
index e9ecdb8..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "compatibility.h"
-#include "bit_slice.h"
-#include "mtcr.h"
-#include "reg_access.h"
-
-#include "mflash_types.h"
-#include "mflash_pack_layer.h"
-
-int sx_st_block_access(mfile *mf, u_int32_t flash_addr, u_int8_t bank, u_int32_t size, u_int8_t* data,
-        u_int8_t method)
-{
-    struct register_access_mfba mfba;
-    int rc;
-    int max_size = mget_max_reg_size(mf);
-    if (!max_size) {
-       return MFE_BAD_PARAMS;
-    }
-    // when writing max size is limited to the nearest power of 2 of the max_size
-    // while limiting it to 256 bytes
-    max_size = NEAREST_POW2(max_size);
-
-    if (size > (u_int32_t)max_size) {
-        return MFE_BAD_PARAMS;
-    }
-
-    // Init mfba
-    memset(&mfba, 0, sizeof(mfba));
-    mfba.address = flash_addr;
-    mfba.fs      = bank;
-    mfba.size    = size;
-
-    if (method == REG_ACCESS_METHOD_SET) {
-        u_int32_t i;
-        for (i = 0; i < size/4; i++) {
-            mfba.data[i] = __le32_to_cpu(*((u_int32_t*)&(data[4*i])));
-        }
-    }
-    rc = reg_access_mfba (mf, (reg_access_method_t) method, &mfba); CHECK_RC(MError2MfError(rc));
-
-    // Get data from mfba
-    if (method == REG_ACCESS_METHOD_GET) {
-        u_int32_t i;
-        for (i = 0; i < size/4; i++) {
-            *((u_int32_t*)&(data[i*4]))= __cpu_to_le32(mfba.data[i]);
-        }
-    }
-    return MFE_OK;
-}
-
-
-int common_erase_sector(mfile *mf, u_int32_t addr, u_int8_t flash_bank, u_int32_t erase_size)
-{
-       struct register_access_mfbe    mfbe;
-    if (addr & (erase_size-1)) {
-        return MFE_ERASE_ERROR;
-    }
-    memset(&mfbe, 0, sizeof(mfbe));
-    mfbe.address = addr;
-    mfbe.fs      = flash_bank;
-    if (erase_size == FSS_64KB) {
-        mfbe.bulk_64kb_erase = 1;
-    }
-    return MError2MfError(reg_access_mfbe (mf, REG_ACCESS_METHOD_SET, &mfbe));
-}
-
-int run_mfpa_command(mfile *mf, u_int8_t access_cmd, u_int8_t flash_bank, u_int32_t boot_address,\
-                     u_int32_t *jedec_p, int *num_of_banks, u_int32_t* fw_sector_size, u_int8_t* support_sub_and_sector)
-{
-       struct register_access_mfpa    mfpa;
-    int rc;
-
-    memset(&mfpa, 0, sizeof(mfpa));
-    mfpa.fs = flash_bank;
-
-    if (access_cmd == REG_ACCESS_METHOD_SET) {
-        mfpa.boot_address = boot_address;
-    }
-    rc = MError2MfError(reg_access_mfpa (mf, access_cmd, &mfpa));
-
-    if (rc && rc != MFE_REG_ACCESS_BAD_PARAM) {
-        // if rc is REG_ACCESS_BAD_PARAM it means we dont have that flash bank connected (no need to fail)
-        return rc;
-    }
-
-    if (access_cmd == REG_ACCESS_METHOD_GET && jedec_p != NULL) {
-        // swap bytes as they are inverted
-        *jedec_p = ___my_swab32(mfpa.jedec_id);
-        // HACK: FW had a bug and returned the same jedec-ID even there was no flash, so when flash doesn't exist jedec will be modified to 0xffffffff
-        if (flash_bank >= mfpa.flash_num || rc == MFE_REG_ACCESS_BAD_PARAM) {
-            *jedec_p = 0xffffffff;
-        }
-    }
-    if (num_of_banks != NULL) {
-        *num_of_banks = mfpa.flash_num;
-    }
-
-    if (fw_sector_size != NULL) {
-        if (mfpa.sector_size) {
-            *fw_sector_size = 1 << mfpa.sector_size; // 2^log2_sector_size_in_KB
-            // Hack: some CX3 FW has this number in KB, possible values : 4 or 64
-            if (*fw_sector_size == 4 || *fw_sector_size == 64 ) {
-                *fw_sector_size *= 1024;
-            }
-        } else {
-            *fw_sector_size = 0;
-        }
-    }
-
-    if (support_sub_and_sector != NULL) {
-        *support_sub_and_sector = mfpa.bulk_64kb_erase_en;
-    }
-
-    return MFE_OK;
-}
-
-int get_num_of_banks(mfile *mf)
-{
-    int num_of_banks;
-    int rc = run_mfpa_command(mf, REG_ACCESS_METHOD_GET, 0, 0, NULL, &num_of_banks, NULL, NULL);
-    if (rc) {
-        return -1;
-    }
-    return num_of_banks;
-}
-
-int com_get_jedec(mfile *mf, u_int8_t flash_bank, u_int32_t *jedec_p, u_int32_t* fw_flash_sector_size, u_int8_t* supp_sub_and_sector)
-{
-    return run_mfpa_command(mf, REG_ACCESS_METHOD_GET, flash_bank, 0, jedec_p, NULL, fw_flash_sector_size, supp_sub_and_sector);
-}
-
-/*
- * getters and setters for mfl->curr_bank
- * manily used to  monitor values mfl->curr_bank recieves
- * used for a verification hack to make sure facebook reset bug doesnt reproduce.
- * (bug where accessing gpio of flash bank 4 caused system reboot)
- */
-#define MFLASH_BANK_DEBUG "MFLASH_BANK_DEBUG"
-int set_bank_int(mflash* mfl, int bank_num) {
-    const char* mflash_env;
-    int max_bank;
-
-    // dont update curr_bank if not needed
-    if (mfl->curr_bank == bank_num) {
-        return ME_OK;
-    }
-
-    mflash_env = getenv(MFLASH_BANK_DEBUG);
-        if (mflash_env) {
-            max_bank =  atol(mflash_env);
-            if (bank_num > max_bank) {
-                printf("-E- there was an attempt to set the flash bank to: %d. max allowed value: %d\n", bank_num, max_bank);
-                return MFE_ILLEGAL_BANK_NUM;
-            }
-        }
-    mfl->curr_bank = bank_num;
-    return ME_OK;
-}
-
-int get_bank_int(mflash* mfl) {
-    return mfl->curr_bank;
-}
-
-int set_bank(mflash* mfl, u_int32_t addr) {
-    int bank = addr >> mfl->attr.log2_bank_size;
-    int rc;
-
-    if (get_bank_int(mfl) != bank) {
-        rc = set_bank_int(mfl, bank); CHECK_RC(rc);
-        return mfl->f_set_bank(mfl, bank);
-    }
-
-    return MFE_OK;
-}
-
-int get_flash_offset(u_int32_t addr, int log2_bank_size, u_int32_t *flash_addr_p)
-{
-    *flash_addr_p = addr & ONES32(log2_bank_size);
-    return MFE_OK;
-}
-
-int mfl_get_bank_info(mflash *mfl, u_int32_t addr, u_int32_t *flash_off_p, int *bank_p)
-{
-    int rc;
-    // Get the bank number
-    rc = set_bank(mfl, addr);                                           CHECK_RC(rc);
-    *bank_p = get_bank_int(mfl);
-    // Get the offset in the flash
-    rc = get_flash_offset(addr, mfl->attr.log2_bank_size, flash_off_p); CHECK_RC(rc);
-    return MFE_OK;
-}
-
-MfError MError2MfError(MError rc) {
-   switch(rc) {
-   case ME_OK:
-          return MFE_OK;
-   case ME_ERROR:
-          return MFE_ERROR;
-   case ME_BAD_PARAMS:
-          return MFE_BAD_PARAMS;
-   case ME_CR_ERROR:
-          return MFE_CR_ERROR;
-   case ME_NOT_IMPLEMENTED:
-          return MFE_NOT_IMPLEMENTED;
-   case ME_SEM_LOCKED:
-          return MFE_SEM_LOCKED;
-   case ME_MEM_ERROR:
-          return MFE_NOMEM;
-   case ME_MAD_SEND_FAILED:
-          return MFE_MAD_SEND_ERR;
-   case ME_UNKOWN_ACCESS_TYPE:
-          return MFE_UNKOWN_ACCESS_TYPE;
-   case ME_UNSUPPORTED_DEVICE:
-          return MFE_UNSUPPORTED_DEVICE;
-   case ME_ICMD_STATUS_CR_FAIL:
-          return MFE_CR_ERROR;
-   case ME_ICMD_STATUS_SEMAPHORE_TO:
-          return MFE_SEM_LOCKED;
-   case ME_ICMD_STATUS_EXECUTE_TO:
-          return MFE_CMDIF_TIMEOUT_ERR;
-   case ME_ICMD_STATUS_IFC_BUSY:
-          return MFE_CMDIF_TIMEOUT_ERR;
-   case ME_ICMD_STATUS_ICMD_NOT_READY:
-          return MFE_CMDIF_GO_BIT_BUSY;
-   case ME_ICMD_UNSUPPORTED_ICMD_VERSION:
-          return MFE_ICMD_NOT_SUPPORTED;
-   case ME_ICMD_NOT_SUPPORTED:
-          return MFE_ICMD_NOT_SUPPORTED;
-   case ME_ICMD_INVALID_OPCODE:
-       return MFE_ICMD_INVALID_OPCODE;
-   case ME_ICMD_INVALID_CMD:
-       return MFE_ICMD_INVALID_CMD;
-   case ME_ICMD_OPERATIONAL_ERROR:
-       return MFE_ICMD_OPERATIONAL_ERROR;
-   case ME_ICMD_BAD_PARAM:
-       return MFE_ICMD_BAD_PARAM;
-   case ME_ICMD_BUSY:
-       return MFE_CMDIF_TIMEOUT_ERR;
-
-   case ME_REG_ACCESS_BAD_METHOD:
-       return MFE_REG_ACCESS_BAD_METHOD;
-   case ME_REG_ACCESS_NOT_SUPPORTED:
-       return MFE_REG_ACCESS_NOT_SUPPORTED;
-   case ME_REG_ACCESS_DEV_BUSY:
-       return MFE_REG_ACCESS_DEV_BUSY;
-   case ME_REG_ACCESS_VER_NOT_SUPP:
-       return MFE_REG_ACCESS_VER_NOT_SUPP;
-   case ME_REG_ACCESS_UNKNOWN_TLV:
-       return MFE_REG_ACCESS_UNKNOWN_TLV;
-   case ME_REG_ACCESS_REG_NOT_SUPP:
-       return MFE_REG_ACCESS_REG_NOT_SUPP;
-   case ME_REG_ACCESS_CLASS_NOT_SUPP:
-       return MFE_REG_ACCESS_CLASS_NOT_SUPP;
-   case ME_REG_ACCESS_METHOD_NOT_SUPP:
-       return MFE_REG_ACCESS_METHOD_NOT_SUPP;
-   case ME_REG_ACCESS_BAD_PARAM:
-       return MFE_REG_ACCESS_BAD_PARAM;
-   case ME_REG_ACCESS_RES_NOT_AVLBL:
-       return MFE_REG_ACCESS_RES_NOT_AVLBL;
-   case ME_REG_ACCESS_MSG_RECPT_ACK:
-       return MFE_REG_ACCESS_MSG_RECPT_ACK;
-   case ME_REG_ACCESS_UNKNOWN_ERR:
-       return MFE_REG_ACCESS_UNKNOWN_ERR;
-   case ME_REG_ACCESS_SIZE_EXCCEEDS_LIMIT:
-       return MFE_REG_ACCESS_SIZE_EXCCEEDS_LIMIT;
-
-   case ME_CMDIF_UNKN_TLV:
-       return MFE_CMDIF_UNKN_TLV;
-   case ME_CMDIF_BAD_OP:
-       return MFE_CMDIF_BAD_OP;
-   default:
-          break;
-   }
-   return MFE_INVAL;
-}
diff --git a/mflash/mflash_pack_layer.h b/mflash/mflash_pack_layer.h
deleted file mode 100755 (executable)
index f36859c..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- * mflash_inband.h
- *
- *  Created on: Jul 6, 2011
- *      Author: mohammad
- */
-
-#ifndef MFLASH_COMMON_H_
-#define MFLASH_COMMON_H_
-
-#include "mflash_types.h"
-#include "mflash_common_structs.h"
-
-#ifndef UEFI_BUILD
-#include <tools_res_mgmt.h>
-#else
-typedef void* trm_ctx;
-#endif
-
-// TODO: use: (int)log2((float)num)  
-#define NEAREST_POW2(num)\
-       (num) < (256) ? ((num) < (128) ? ((num) < (64) ? ((num) < (32) ? ((num) < (16) ? ((num) < (8) ? (4) : (8)): (16)): (32)): (64)): (128)): (256)
-
-#ifndef CHECK_RC
-    #define CHECK_RC(rc) do {if (rc) return rc;} while(0)
-#endif
-
-#ifndef ARR_SIZE
-    #define ARR_SIZE(arr) sizeof(arr)/sizeof(arr[0])
-#endif
-
-#ifndef IRISC
-#define MFLASH_ERR_STR_SIZE 1024
-#else
-#define MFLASH_ERR_STR_SIZE    4
-#endif
-typedef int (*f_mf_lock)      (mflash* mfl, int lock_state);
-
-typedef int (*f_mf_set_bank)  (mflash* mfl, u_int32_t bank);
-typedef int (*f_mf_read)      (mflash* mfl, u_int32_t addr, u_int32_t len, u_int8_t* data);
-typedef int (*f_mf_write)     (mflash* mfl, u_int32_t addr, u_int32_t len, u_int8_t* data);
-typedef int (*f_mf_erase_sect)(mflash* mfl, u_int32_t addr);
-typedef int (*f_mf_reset)     (mflash* mfl);
-
-typedef int (*f_st_spi_status)(mflash* mfl, u_int8_t op_type, u_int8_t* status);
-typedef int (*f_mf_get_info)  (mflash* mfl, flash_info_t *f_info, int *log2size, u_int8_t *no_flash);
-/////////////////////////////////////////////
-//
-// MFlash struct
-//
-/////////////////////////////////////////////
-struct mflash {
-#ifndef IRISC
-       mfile*      mf;
-#endif
-
-       // Functions:
-       f_mf_lock       f_lock;
-
-       f_mf_set_bank   f_set_bank;
-       f_mf_get_info   f_get_info;
-
-       f_mf_read       f_read;
-       f_mf_write      f_write;
-       f_mf_write      f_write_blk;   // write and write_block have the same signateure, but theyr'e not the same func !
-       f_mf_read       f_read_blk;    // read  and read_block have the same signateure, but theyr'e not the same func !
-       f_mf_erase_sect f_erase_sect;
-       f_mf_reset      f_reset;
-
-       // Relevant for SPI flash (InfiniHostIIILx, ConnectX) only
-       f_st_spi_status f_spi_status;
-       // when set(1) we support modification of the flash status register
-       u_int8_t supp_sr_mod;
-
-       int             curr_bank;
-       int             is_locked;
-       // if writer_lock is set, semaphore should be freed only in mf_close()/disable_hw_access()
-       int             writer_lock;
-
-       flash_attr      attr;
-
-       int             opts[MFO_LAST];
-       char            last_err_str[MFLASH_ERR_STR_SIZE];
-
-       u_int8_t   access_type; //0 = mfile , 1 = uefi
-       trm_ctx trm;
-
-};
-
-enum AccessTypeByMfile{
-    ATBM_NO = 0,
-    ATBM_INBAND,
-    ATBM_MLNXOS_CMDIF,
-    ATBM_ICMD,
-    ATBM_TOOLS_CMDIF,
-};
-
-/*
-#ifndef __WIN__
-
-#ifdef __FreeBSD__
-#define SWAPL(l) ntohl(l)
-#include <sys/endian.h>
-#else // Linux
-#include <byteswap.h>
-#include <endian.h>
-
-#define SWAPL(l) bswap_32(l)
-#endif
-
-#else
-
-#include <io.h>
-#include <Winsock2.h>
-#define SWAPL(l) ntohl(l)
-#define __BYTE_ORDER __LITTLE_ENDIAN
-*/
-
-/*
-#define __cpu_to_be32(val) SWAPL(val) // Win is only run on LE CPUS
-#define inline __inline
-#define __cpu_to_be32(val) SWAPL(val) // Win is only run on LE CPUS
-*/
-//#endif
-
-/*
-#ifndef __cpu_to_le32
-
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-    #define __cpu_to_le32(x) (x)
-#elif __BYTE_ORDER == __BIG_ENDIAN
-    #define __cpu_to_le32(x) SWAPL(x)
-#endif // __BYTE_ORDER
-
-#endif
-
-#ifndef __le32_to_cpu
-    #define __le32_to_cpu(x) __cpu_to_le32(x)
-#endif
-*/
-
-#define WRITE_CHECK_ALLIGN(addr, block_write, size) {\
-    if (addr & ((u_int32_t)block_write - 1)) {\
-        return MFE_BAD_ALIGN;\
-    }\
-    if (size & ((u_int32_t)block_write - 1)) {\
-         return MFE_BAD_ALIGN;\
-    }\
-}
-
-#define COM_CHECK_ALLIGN(flash_addr, size) {\
-    if (flash_addr & (size - 1 )) {\
-        return MFE_BAD_ALIGN;\
-    }\
-}
-
-//////////////////////////////////// SX FLASH functions ////////////////////////////////////
-
-typedef u_int32_t (*f_reg_pack)   (void *data_to_pack,  u_int8_t *packed_buffer);
-typedef void      (*f_reg_unpack) (void *unpacked_data, u_int8_t *buffer_to_unpack);
-typedef void      (*f_reg_dump)   (void *data_to_print, FILE *out_port);
-
-int sx_st_block_access(mfile *mf, u_int32_t flash_addr, u_int8_t bank, u_int32_t size, u_int8_t* data,\
-               u_int8_t method);
-
-
-int common_erase_sector(mfile *mf, u_int32_t addr, u_int8_t flash_bank, u_int32_t erase_size);
-
-int run_mfpa_command(mfile *mf, u_int8_t access_cmd, u_int8_t flash_bank, u_int32_t boot_address,\
-                    u_int32_t *jedec_p, int *num_of_banks, u_int32_t* fw_flash_sector_sz, u_int8_t* supp_sub_and_sector);
-
-int com_get_jedec(mfile *mf, u_int8_t flash_bank, u_int32_t *jedec_p, u_int32_t* fw_flash_sector_sz, u_int8_t* supp_sub_and_sector);
-int get_num_of_banks(mfile *mf);
-int get_info_from_jededc_id(u_int32_t jededc_id, u_int8_t *vendor, u_int8_t* type, u_int8_t* capacity);
-int get_type_index_by_vendor_and_type(u_int8_t vendor, u_int8_t type, unsigned *type_index);
-int get_log2size_by_capcity(unsigned type_index, u_int8_t capacity, int *log2size);
-int get_max_reg_size(mfile *mf);
-
-int set_bank(mflash* mfl, u_int32_t addr);
-int set_bank_int(mflash* mfl, int bank_num);
-int get_bank_int(mflash* mfl);
-int get_flash_offset(u_int32_t addr, int log2_bank_size, u_int32_t *flash_addr_p);
-int mfl_get_bank_info(mflash *mfl, u_int32_t addr, u_int32_t *flash_off_p, int *bank_p);
-MfError MError2MfError(MError rc);
-
-#endif /* MFLASH_COMMON_H_ */
diff --git a/mflash/mflash_types.h b/mflash/mflash_types.h
deleted file mode 100644 (file)
index f9ff938..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef MFLASH_TYPES_H
-#define MFLASH_TYPES_H
-
-typedef enum {
-    FSS_4KB = 0x1000,
-    FSS_64KB = 0x10000
-} Flash_Sector_Size_t;
-
-
-typedef enum MfError {
-    MFE_OK = 0,
-    MFE_ERROR,
-    MFE_BAD_PARAMS,
-    MFE_CR_ERROR,
-    MFE_HW_DEVID_ERROR,
-    MFE_INVAL,
-    MFE_NOT_IMPLEMENTED,
-    MFE_UNSUPPORTED_FLASH_TOPOLOGY,
-    MFE_UNSUPPORTED_FLASH_TYPE,
-    MFE_CFI_FAILED,
-    MFE_TIMEOUT,
-    MFE_ERASE_TIMEOUT,
-    MFE_WRITE_TIMEOUT,
-    MFE_ERASE_ERROR,
-    MFE_WRITE_ERROR,
-    MFE_BAD_ALIGN,
-    MFE_SEM_LOCKED,
-    MFE_VERIFY_ERROR,
-    MFE_NOMEM,
-    MFE_OUT_OF_RANGE,
-    MFE_CMD_SUPPORTED_INBAND_ONLY,
-    MFE_NO_FLASH_DETECTED,
-    MFE_LOCKED_CRSPACE,
-    MFE_CMDIF_BAD_STATUS_ERR,
-    MFE_CMDIF_TIMEOUT_ERR,
-    MFE_CMDIF_GO_BIT_BUSY,
-    MFE_CMDIF_UNKN_TLV,
-    MFE_CMDIF_BAD_OP,
-    MFE_MISMATCH_KEY,
-    MFE_MISSING_KEY,
-    MFE_UNKNOWN_REG,
-    MFE_DIRECT_FW_ACCESS_DISABLED,
-    MFE_MANAGED_SWITCH_NOT_SUPPORTED,
-    MFE_NOT_SUPPORTED_OPERATION,
-    MFE_FLASH_NOT_EXIST,
-    MFE_MISMATCH_PARAM,
-    MFE_EXCEED_SUBSECTORS_MAX_NUM,
-    MFE_EXCEED_SECTORS_MAX_NUM,
-    MFE_SECTORS_NUM_NOT_POWER_OF_TWO,
-    MFE_UNKOWN_ACCESS_TYPE,
-    MFE_UNSUPPORTED_DEVICE,
-    MFE_UNSUPPORTED_ERASE_OPERATION,
-    MFE_OLD_DEVICE_TYPE,
-    MFE_ICMD_INIT_FAILED,
-    MFE_ICMD_NOT_SUPPORTED,
-    MFE_HW_ACCESS_NOT_SUPP,
-    MFE_MAD_SEND_ERR,
-    MFE_ICMD_BAD_PARAM,
-    MFE_ICMD_INVALID_OPCODE,
-    MFE_ICMD_INVALID_CMD,
-    MFE_ICMD_OPERATIONAL_ERROR,
-
-    MFE_REG_ACCESS_BAD_METHOD,
-    MFE_REG_ACCESS_NOT_SUPPORTED,
-    MFE_REG_ACCESS_DEV_BUSY,
-    MFE_REG_ACCESS_VER_NOT_SUPP,
-    MFE_REG_ACCESS_UNKNOWN_TLV,
-    MFE_REG_ACCESS_REG_NOT_SUPP,
-    MFE_REG_ACCESS_CLASS_NOT_SUPP,
-    MFE_REG_ACCESS_METHOD_NOT_SUPP,
-    MFE_REG_ACCESS_BAD_PARAM,
-    MFE_REG_ACCESS_RES_NOT_AVLBL,
-    MFE_REG_ACCESS_MSG_RECPT_ACK,
-    MFE_REG_ACCESS_UNKNOWN_ERR,
-    MFE_REG_ACCESS_SIZE_EXCCEEDS_LIMIT,
-    MFE_PCICONF,
-    MFE_ILLEGAL_BANK_NUM,
-    MFE_OCR_NOT_SUPPORTED,
-
-    MFE_LAST
-} MfError;
-
-#endif // MFLASH_TYPES_H
-
-
-
diff --git a/mft_utils/Makefile.am b/mft_utils/Makefile.am
deleted file mode 100644 (file)
index 43df9fe..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-USER_DIR = $(top_srcdir)
-AM_CPPFLAGS = -I. -I$(USER_DIR)/common
-
-AM_CFLAGS = -MD -pipe -Wall -W -Werror
-
-noinst_HEADERS = mft_sig_handler.h errmsg.h
-
-noinst_LIBRARIES = libmftutils.a
-
-libmftutils_a_SOURCES =  mft_sig_handler.c errmsg.cpp calc_hw_crc.c mlarge_buffer.cpp
-
diff --git a/mft_utils/calc_hw_crc.c b/mft_utils/calc_hw_crc.c
deleted file mode 100644 (file)
index 115000d..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include "stdio.h"
-#include "string.h"
-#include <stdlib.h>
-
-#include "calc_hw_crc.h"
-
-u_int16_t crc16table2[256] = {
-            0x0000, 0x1BA1, 0x3742, 0x2CE3, 0x6E84, 0x7525, 0x59C6, 0x4267,
-            0xDD08, 0xC6A9, 0xEA4A, 0xF1EB, 0xB38C, 0xA82D, 0x84CE, 0x9F6F,
-            0x1A01, 0x01A0, 0x2D43, 0x36E2, 0x7485, 0x6F24, 0x43C7, 0x5866,
-            0xC709, 0xDCA8, 0xF04B, 0xEBEA, 0xA98D, 0xB22C, 0x9ECF, 0x856E,
-            0x3402, 0x2FA3, 0x0340, 0x18E1, 0x5A86, 0x4127, 0x6DC4, 0x7665,
-            0xE90A, 0xF2AB, 0xDE48, 0xC5E9, 0x878E, 0x9C2F, 0xB0CC, 0xAB6D,
-            0x2E03, 0x35A2, 0x1941, 0x02E0, 0x4087, 0x5B26, 0x77C5, 0x6C64,
-            0xF30B, 0xE8AA, 0xC449, 0xDFE8, 0x9D8F, 0x862E, 0xAACD, 0xB16C,
-            0x6804, 0x73A5, 0x5F46, 0x44E7, 0x0680, 0x1D21, 0x31C2, 0x2A63,
-            0xB50C, 0xAEAD, 0x824E, 0x99EF, 0xDB88, 0xC029, 0xECCA, 0xF76B,
-            0x7205, 0x69A4, 0x4547, 0x5EE6, 0x1C81, 0x0720, 0x2BC3, 0x3062,
-            0xAF0D, 0xB4AC, 0x984F, 0x83EE, 0xC189, 0xDA28, 0xF6CB, 0xED6A,
-            0x5C06, 0x47A7, 0x6B44, 0x70E5, 0x3282, 0x2923, 0x05C0, 0x1E61,
-            0x810E, 0x9AAF, 0xB64C, 0xADED, 0xEF8A, 0xF42B, 0xD8C8, 0xC369,
-            0x4607, 0x5DA6, 0x7145, 0x6AE4, 0x2883, 0x3322, 0x1FC1, 0x0460,
-            0x9B0F, 0x80AE, 0xAC4D, 0xB7EC, 0xF58B, 0xEE2A, 0xC2C9, 0xD968,
-            0xD008, 0xCBA9, 0xE74A, 0xFCEB, 0xBE8C, 0xA52D, 0x89CE, 0x926F,
-            0x0D00, 0x16A1, 0x3A42, 0x21E3, 0x6384, 0x7825, 0x54C6, 0x4F67,
-            0xCA09, 0xD1A8, 0xFD4B, 0xE6EA, 0xA48D, 0xBF2C, 0x93CF, 0x886E,
-            0x1701, 0x0CA0, 0x2043, 0x3BE2, 0x7985, 0x6224, 0x4EC7, 0x5566,
-            0xE40A, 0xFFAB, 0xD348, 0xC8E9, 0x8A8E, 0x912F, 0xBDCC, 0xA66D,
-            0x3902, 0x22A3, 0x0E40, 0x15E1, 0x5786, 0x4C27, 0x60C4, 0x7B65,
-            0xFE0B, 0xE5AA, 0xC949, 0xD2E8, 0x908F, 0x8B2E, 0xA7CD, 0xBC6C,
-            0x2303, 0x38A2, 0x1441, 0x0FE0, 0x4D87, 0x5626, 0x7AC5, 0x6164,
-            0xB80C, 0xA3AD, 0x8F4E, 0x94EF, 0xD688, 0xCD29, 0xE1CA, 0xFA6B,
-            0x6504, 0x7EA5, 0x5246, 0x49E7, 0x0B80, 0x1021, 0x3CC2, 0x2763,
-            0xA20D, 0xB9AC, 0x954F, 0x8EEE, 0xCC89, 0xD728, 0xFBCB, 0xE06A,
-            0x7F05, 0x64A4, 0x4847, 0x53E6, 0x1181, 0x0A20, 0x26C3, 0x3D62,
-            0x8C0E, 0x97AF, 0xBB4C, 0xA0ED, 0xE28A, 0xF92B, 0xD5C8, 0xCE69,
-            0x5106, 0x4AA7, 0x6644, 0x7DE5, 0x3F82, 0x2423, 0x08C0, 0x1361,
-            0x960F, 0x8DAE, 0xA14D, 0xBAEC, 0xF88B, 0xE32A, 0xCFC9, 0xD468,
-            0x4B07, 0x50A6, 0x7C45, 0x67E4, 0x2583, 0x3E22, 0x12C1, 0x0960};
-
-u_int16_t calc_hw_crc(u_int8_t* d, int size) {
-    int i;
-    u_int8_t* data = (u_int8_t*) malloc(sizeof(u_int8_t) * size);
-
-    memcpy(data, d, size);
-    data[0] = ~data[0];
-    data[1] = ~data[1];
-
-    unsigned crc = 0xffff;
-    for (i = 0; i < size; i++) {
-        int table_index = ((crc ^ data[i]) & 0xff);
-        crc = ((crc >> 8) ^ crc16table2[table_index]);
-    };
-    crc = ((crc << 8) & 0xff00) | ((crc >> 8) & 0xff);
-
-    free(data);
-    return crc;
-}
diff --git a/mft_utils/calc_hw_crc.h b/mft_utils/calc_hw_crc.h
deleted file mode 100644 (file)
index b1627ec..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef MFT_CALC_HW_CRC
-#define MFT_CALC_HW_CRC
-
-#include <tools_utils.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-u_int16_t calc_hw_crc(u_int8_t* data, int size);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mft_utils/errmsg.cpp b/mft_utils/errmsg.cpp
deleted file mode 100644 (file)
index f386e76..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <string.h>
-
-#include "errmsg.h"
-
-enum {
-    SUCCESS = 0,
-    FAILURE = 1
-};
-
-ErrMsg::ErrMsg() {
-    _errMap[SUCCESS] = "SUCCESS";
-    _errMap[FAILURE] = "FAILURE";
-    _err = NULL;
-    _formatErr = NULL;
-    _lastErrCode = SUCCESS;
-}
-
-ErrMsg::ErrMsg(std::map<int, std::string>& errCodeMap) {
-    _errMap = errCodeMap;
-    _err = NULL;
-    _formatErr = NULL;
-    _lastErrCode = SUCCESS;
-}
-
-const char* ErrMsg::getFormatErr(const char *prefix, ...) {
-    va_list args;
-    char* prevFormatErr = _formatErr;
-    va_start(args, prefix);
-    char* preStr = vprint(prefix, args);
-    int formatErrSz = strlen(_err) + strlen(preStr) + 10;
-    _formatErr = new char[formatErrSz];
-    snprintf(_formatErr, formatErrSz, "-E- %s. %s", preStr, _err);
-    va_end(args);
-    delete[] prevFormatErr;
-    delete[] preStr;
-    return _formatErr;
-}
-
-const char* ErrMsg::err2Str(int errCode) const {
-    std::map<int, std::string>::const_iterator it;
-    if ( (it=_errMap.find(errCode)) == _errMap.end()) {
-        return "Unknown Error Code";
-    }
-    return it->second.c_str();
-}
-
-char* ErrMsg::vprint(const char *format, va_list args) {
-        const int INIT_VAL = 1024;
-        int       max_str, max_buf = INIT_VAL;
-        char      *out_buf;
-
-        while (1) {
-            out_buf = new char[max_buf];
-            max_str = max_buf - 1;
-
-            if (vsnprintf(out_buf, max_str, format, args) < max_str) {
-                return out_buf;
-            }
-            delete [] out_buf;
-            max_buf *= 2;
-        }
-}
-
-int ErrMsg::errmsg(const char *format, ...) {
-    va_list   args;
-
-    char* prev_err = _err;
-
-    va_start(args, format);
-    _err = vprint(format, args);
-    va_end(args);
-
-    delete[] prev_err;
-    _lastErrCode = FAILURE;
-    return FAILURE;
-}
-
-int ErrMsg::errmsg(int errCode, const char *format, ...) {
-    va_list   args;
-    char* prev_err = _err;
-
-    va_start(args, format);
-    _err = vprint(format, args);
-    va_end(args);
-
-    delete[] prev_err;
-    _lastErrCode = errCode;
-    return errCode;
-}
-
-int ErrMsg::errmsg(int errCode) {
-    char* prevErr = _err;
-    int errSz = strlen(err2Str(errCode)) + 1;
-    char* newError = new char[errSz];
-    snprintf(newError, errSz, "%s", err2Str(errCode));
-    _err = newError;
-    delete[] prevErr;
-    _lastErrCode = errCode;
-    return errCode;
-
-}
-void ErrMsg::errmsgConcatCom(const char* format, va_list args, const char* suffix) {
-    char* prevErr = _err;
-    char* currError = vprint(format, args);
-    int errSz = strlen(currError) + strlen(suffix) + 10;
-    char* newError = new char[errSz];
-    if (strlen(currError) == 0) {
-        snprintf(newError,errSz, "%s", suffix);
-    } else {
-        if (strlen(suffix) == 0) {
-            snprintf(newError,errSz, "%s", currError);
-        } else {
-            snprintf(newError,errSz, "%s. %s", currError, suffix);
-        }
-    }
-    _err = newError;
-
-    delete[] prevErr;
-    delete[] currError;
-}
-
-int ErrMsg::errmsgConcatMsg(int errCode, const ErrMsg& errMsgObj, const char *format, ...) {
-    va_list   args;
-    va_start(args, format);
-    errmsgConcatCom(format, args, errMsgObj.err());
-    va_end(args);
-    _lastErrCode = errCode;
-    return errCode;
-}
-
-int ErrMsg::errmsgConcatMsg(const ErrMsg& errMsgObj, const char *format, ...) {
-        va_list   args;
-        va_start(args, format);
-        errmsgConcatCom(format, args, errMsgObj.err());
-        va_end(args);
-        _lastErrCode = FAILURE;
-        return FAILURE;
-}
-
-int ErrMsg::errmsgConcatMsg(int errCode, const ErrMsg& errMsgObj) {
-    return errmsg(errCode, "%s", errMsgObj.err());
-}
-
-int ErrMsg::errmsgConcatMsg(const ErrMsg& errMsgObj) {
-    return errmsg("%s", errMsgObj.err());
-}
-
-int ErrMsg::errmsgConcatErrCd(int errCode, const ErrMsg& errMsgObj, const char *format, ...) {
-    va_list   args;
-    va_start(args, format);
-    errMsgObj.getLastErrCode();
-    errmsgConcatCom(format, args, errMsgObj.err2Str(errMsgObj.getLastErrCode()));
-    va_end(args);
-    _lastErrCode = errCode;
-    return errCode;
-}
-
-int ErrMsg::errmsgConcatErrCd(int errCode, const ErrMsg& errMsgObj) {
-    return errmsg(errCode, "%s", errMsgObj.err2Str(errMsgObj.getLastErrCode()));
-}
-
-int ErrMsg::errmsgConcatErrCd(const ErrMsg& errMsgObj) {
-    return errmsg("%s", errMsgObj.err2Str(errMsgObj.getLastErrCode()));
-}
-
-void ErrMsg::err_clear(){
-    delete [] _err;
-    delete [] _formatErr;
-    _err = NULL;
-    _formatErr = NULL;
-}
-
-
diff --git a/mft_utils/errmsg.h b/mft_utils/errmsg.h
deleted file mode 100644 (file)
index 0f08cad..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#ifndef ERRMSG_H_
-#define ERRMSG_H_
-
-#include <map>
-#include <string>
-
-/**
- *  ErrMsg Class Provides API for returning both error codes and error messages to the user app.
- */
-
-class ErrMsg {
-public:
-    ErrMsg();
-    ErrMsg(std::map<int, std::string>& errCodeMap);
-
-    ~ErrMsg()                { err_clear();}
-
-    const char* err() const  { return _err;}
-    void updateErrCodes(std::map<int, std::string>& errCodeMap) {_errMap = errCodeMap; return;}
-
-    const char* getFormatErr(const char *prefix, ...)
-#ifdef __GNUC__
-    __attribute__ ((format (printf, 2, 3)))
-#endif
-    ;
-
-    void err_clear();
-
-    int getLastErrCode() const {return _lastErrCode;}
-
-    const char* err2Str(int errCode) const;
-
-protected:
-    char* vprint(const char *format, va_list args);
-
-    int errmsg(const char *format, ...)
-#ifdef __GNUC__
-    __attribute__ ((format (printf, 2, 3)))
-#endif
-    ;
-
-    int errmsg(int errCode, const char *format, ...)
-#ifdef __GNUC__
-    __attribute__ ((format (printf, 3, 4)))
-#endif
-    ;
-
-    int errmsg(int errCode);
-
-
-    int errmsgConcatMsg(int errCode, const ErrMsg& errMsgObj, const char *format, ...)
-#ifdef __GNUC__
-    __attribute__ ((format (printf, 4, 5)))
-#endif
-    ;
-
-    int errmsgConcatMsg(const ErrMsg& errMsgObj, const char *format, ...)
-#ifdef __GNUC__
-    __attribute__ ((format (printf, 3, 4)))
-#endif
-    ;
-
-    int errmsgConcatMsg(int errCode, const ErrMsg& errMsgObj);
-
-    int errmsgConcatMsg(const ErrMsg& errMsgObj);
-
-
-    int errmsgConcatErrCd(int errCode, const ErrMsg& errMsgObj, const char *format, ...)
-#ifdef __GNUC__
-    __attribute__ ((format (printf, 4, 5)))
-#endif
-    ;
-
-    int errmsgConcatErrCd(int errCode, const ErrMsg& errMsgObj);
-
-    int errmsgConcatErrCd(const ErrMsg& errMsgObj);
-
-private:
-    void errmsgConcatCom(const char* format, va_list args, const char* suffix);
-
-    std::map<int, std::string> _errMap;
-    char*       _err;
-    char*       _formatErr;
-    int         _lastErrCode;
-};
-
-#endif /* ERRMSG_H_ */
diff --git a/mft_utils/mft_sig_handler.c b/mft_utils/mft_sig_handler.c
deleted file mode 100644 (file)
index 6f5c47c..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdio.h>
-#include <signal.h>
-
-#include <tools_utils.h>
-
-static int s_is_fired = 0;
-static char* s_interrupt_message = NULL;
-
-//siganls to handle
-#ifdef __WIN__
-    static int signals_array[] =
-    {SIGINT};
-#else
-    static int signals_array[] = {SIGINT, SIGQUIT, SIGTERM};
-#endif
-
-static void (*prev_handlers[sizeof(signals_array)/sizeof(signals_array[0])])(int sig);
-
-
-
-static void my_termination_handler(int sig)
-{
-    s_is_fired = sig; // assuming signals recieved are always different then zero
-    if (s_interrupt_message) {
-        fprintf(stderr, "%s", s_interrupt_message);
-    }
-}
-
-#ifdef __WIN__
-static BOOL CtrlHandler( DWORD fdwCtrlType )
-{
-    switch( fdwCtrlType )
-    {
-      // Handle the CTRL-C signal.
-      case CTRL_C_EVENT:
-      // CTRL-CLOSE: confirm that the user wants to exit.
-      case CTRL_CLOSE_EVENT:
-      // Pass other signals to the next handler.
-      case CTRL_BREAK_EVENT:
-      case CTRL_LOGOFF_EVENT:
-      case CTRL_SHUTDOWN_EVENT:
-          my_termination_handler(SIGINT);
-          return TRUE;
-
-      default:
-        return FALSE;
-    }
- }
-#endif
-
-int  mft_signal_set_handling(int is_on)
-{
-    unsigned int i;
-
-#ifdef __WIN__
-    SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, is_on );
-#endif
-    static int first_on = 0;
-    static int is_on_counter = 0;
-
-    if (is_on_counter == 0 && is_on == 0) {
-       //if we reach here it means previous handler is already set so there is no need to restore it once more.
-        return 0;
-    }
-    // incr/decr counter
-    if (is_on) {
-       is_on_counter += 1;
-    }else {
-       is_on_counter = is_on_counter > 0 ? is_on_counter -1 : is_on_counter;
-    }
-
-    if (is_on == 1 && first_on == 0) {
-        /* first time we turned thin handler on so we save previous handlers in prev_handlers array */
-        for (i = 0; i < sizeof(signals_array)/sizeof(signals_array[0]); i++)
-        {
-            prev_handlers[i] = signal(signals_array[i], my_termination_handler);
-            if (prev_handlers[i] == SIG_ERR) {
-                return -1;
-            }
-        }
-        first_on = 1;
-        return 0;
-    }
-    /* not the first time we turned on the signals */
-    /* register term/kill signal handler */
-    /* we need to call signal routine only when is_on_counter == 0 or 1 (more precisely when it goes from zero to one or visa versa )*/
-    if ((is_on_counter == 0 && is_on == 0) || (is_on_counter == 1 && is_on == 1 )) {
-       for (i = 0; i < sizeof(signals_array)/sizeof(signals_array[0]); i++)
-       {
-               if (signal(signals_array[i], is_on_counter > 0 ? my_termination_handler : prev_handlers[i]) == SIG_ERR) {
-                       return -1;
-               }
-       }
-    }
-
-    return 0;
-}
-
-int  mft_signal_is_fired() {
-    return s_is_fired;
-}
-
-void mft_signal_set_fired(int is_fired)
-{
-    s_is_fired = is_fired;
-}
-
-void mft_signal_set_msg(char* msg)
-{
-    s_interrupt_message = msg;
-}
-
-void mft_restore_and_raise()
-{
-    int sig;
-    sig = mft_signal_is_fired();
-    if (sig) {
-        // reset recieved signal
-        mft_signal_set_fired(0);
-        // retore prev handler
-        mft_signal_set_handling(0);
-        //raise signal to let the previous handle deal with it.
-        raise(sig);
-    }
-    mft_signal_set_handling(0);
-    return;
-}
diff --git a/mft_utils/mft_sig_handler.h b/mft_utils/mft_sig_handler.h
deleted file mode 100644 (file)
index 5ae7f1a..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef MFT_SIG_HANDLER
-#define MFT_SIG_HANDLER
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/** @file
- *  mft_sig_hanndler - Generic signal handling API
- *  Re place the default sig handlers for user interrupts with a
- *  'thin' handler that sets a flag and prints message to user
- *  (to stderr), and returns.
- *
- *  This allows application to place this handler in the main
- *  loop and do a propper exit with cleanup on signal.
- *
- *  NOTE: mft_sig_handler saves on first call to
- *  mft_signal_set_handling(1), the current handlers
- *  and restores them each time we turn the thin handler off
- *  thus the main program should not change its default signal
- *  handlers after their initial initilization.
- */
-
-/**
- * @brief Start/Stop the thin handler
- * @param [in] is_on: 1 - enable thin handler. 0 - restore
- *       previous handlers
- * @return 0 on success, 1 otherwise.
- */
-int  mft_signal_set_handling(int is_on);
-
-/**
- * @brief signal accepted indication
- * @return N - signal N was accepted. 0 otherwise...
- */
-int  mft_signal_is_fired();
-
-/**
- * @brief set value for signal accepted indication.
- *        Can be used to clear signal
- * @param [in] is_fired
- */
-void mft_signal_set_fired(int is_fired);
-
-/**
- * @brief Set teh message to be printed on signal
- * @param [in] msg - the mesage or NULL if no message is to be
- *        printed.
- */
-void mft_signal_set_msg(char* msg);
-
-/**
- * @brief Deal with signals, if got signal - raise, otherwise restore it
- */
-void mft_restore_and_raise();
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/mft_utils/mlarge_buffer.cpp b/mft_utils/mlarge_buffer.cpp
deleted file mode 100644 (file)
index 1dde732..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *
- * mlarge_buffer.cpp
- *
- *  Created on: Mar 9, 2016
- *      Author: adrianc
- */
-
-#include <string.h>
-
-#include "mlarge_buffer.h"
-
-
-#define MFT_MIN(x,y) ((x) < (y) ? (x) : (y))
-#define MFT_MAX(x,y) ((x) > (y) ? (x) : (y))
-
-#ifdef _DEBUG_MODE
-#define DBG_PRINTF(...) fprintf(stderr, __VA_ARGS__)
-#else
-#define DBG_PRINTF(...)
-#endif
-
-MBufferUnit& operator <<(MBufferUnit& a, MBufferUnit& b)
-{
-    if (!a.intersects(b) ) {
-        return a;
-    }
-    u_int32_t newSize = MFT_MAX(a.offset() + a.size(), b.offset() + b.size()) - MFT_MIN(a.offset(), b.offset());
-    u_int32_t newOffset = MFT_MIN(a.offset(), b.offset());
-    std::vector<u_int8_t> newData(newSize, 0);
-
-    // merge b onto a
-    u_int32_t relativeOffsInBuffer = a.offset() - newOffset;
-    memcpy(&newData[0] + relativeOffsInBuffer, &(a.data()[0]), a.size());
-    relativeOffsInBuffer = b.offset() - newOffset;
-    memcpy(&newData[0] + relativeOffsInBuffer, &(b.data()[0]), b.size());
-    a = MBufferUnit(newData, newOffset);
-    return a;
-}
-
-MBufferUnit& MBufferUnit::operator=(const MBufferUnit& other)
-{
-    if (this != &other) {
-        this->_data = other._data;
-        this->_offset = other._offset;
-    }
-    return *this;
-}
-
-bool MBufferUnit::intersects( const MBufferUnit& other) const
-{
-    if (this->offset() > (other.offset() + other.size()) || (this->offset() + this->size()) < other.offset() ) {
-        return false;
-    }
-    return true;
-}
-
-void MlargeBuffer::add(const std::vector<u_int8_t>& data, u_int32_t offset)
-{
-    if (data.size() == 0) {
-        return;
-    }
-    DBG_PRINTF("-D- adding chunk: 0x%08x - 0x%08x (0x%08x)\n", offset, (unsigned)data.size() + offset, (unsigned)data.size());
-    // create MBufferUnit
-    MBufferUnit bufferUnit(data, offset);
-    bool unitInserted = false;
-    bool unitIntersects = false;
-    unsigned intersecIdx = 0;
-    unsigned bSize = _bData.size();
-    for (unsigned idx = 0; idx < bSize; idx++) {
-        if (unitIntersects) {
-            if (_bData[idx].intersects(_bData[intersecIdx])) {
-                // merge element in intersecIdx onto it
-                _bData[idx] << _bData[intersecIdx];
-                _bData.erase(_bData.begin() + intersecIdx);
-                intersecIdx = --idx;
-                bSize--;
-            } else {
-                break; // done :)
-            }
-        }else if (bufferUnit.offset() + bufferUnit.size() <_bData[idx].offset()) {// check if we can insert before
-            _bData.insert(_bData.begin() + idx, bufferUnit);
-            unitInserted = true;
-            break;
-        } else if (bufferUnit.intersects(_bData[idx])) {
-            unitIntersects = true;
-            unitInserted = true;
-            _bData[idx] << bufferUnit;
-            intersecIdx = idx;
-            continue;
-        }
-    }
-
-    if (!unitInserted) {
-        _bData.push_back(bufferUnit);
-    }
-    DBG_PRINTF("-D- bData size: %d\n", (int)_bData.size());
-
-#ifdef _DEBUG_MODE
-    std::vector<MBufferUnit>::iterator it = _bData.begin();
-    for (; it != _bData.end(); it++) {
-        DBG_PRINTF("-D- chunk : 0x%08x - 0x%08x (0x%08x)\n", it->offset(), it->size() + it->offset(), it->size());
-    }
-#endif
-}
-void MlargeBuffer::add(const u_int8_t* data, u_int32_t offset, u_int32_t size)
-{
-    std::vector<u_int8_t> dataVec(data, data+size);
-    return add(dataVec, offset);
-}
-
-u_int8_t MlargeBuffer::operator[] (const u_int32_t offset)
-{
-    u_int8_t data;
-    get(&data, offset, 1);
-    return data;
-}
-void MlargeBuffer::get(std::vector<u_int8_t>& data, u_int32_t offset, u_int32_t size)
-{
-    data.resize(size);
-    return get(&data[0], offset, size);
-}
-
-void MlargeBuffer::get(u_int8_t* data, u_int32_t offset, u_int32_t size)
-{
-    DBG_PRINTF("-D- get request on offset: 0x%08x with size 0x%x\n", offset, size);
-    if (!data || size == 0) {
-        return;
-    }
-    memset(data, _defaultValue, size);
-    u_int8_t* ptr = data;
-    for (std::vector<MBufferUnit>::iterator it = _bData.begin(); it != _bData.end(); it++) {
-        if (offset < (it->offset() + it->size()) && (offset + size) > it->offset()) {
-            // intersects with current MBufferUnit
-            u_int32_t offsetInBuffer = ((long int)it->offset() - (long int)offset) < 0 ? 0 :  it->offset() - offset;
-            u_int32_t copySize = MFT_MIN(offset + size,  it->offset() + it->size()) - MFT_MAX(offset, it->offset());
-            u_int32_t offsetInData = ((long int)offset - (long int)it->offset()) < 0 ? 0 : offset - it->offset();
-            DBG_PRINTF("-D- getting from chunk at offset 0x%08x , size: 0x%x\n",  it->offset(), (unsigned)it->size() );
-            DBG_PRINTF("-D- integrating at buffer offset : 0x%08x size: 0x%x, offset in data: 0x%08x\n", offsetInBuffer, copySize, offsetInData);
-            memcpy(ptr + offsetInBuffer, &(it->data())[0] + offsetInData , copySize);
-        }
-    }
-    return;
-}
diff --git a/mft_utils/mlarge_buffer.h b/mft_utils/mlarge_buffer.h
deleted file mode 100644 (file)
index 335a46b..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *
- * mlarge_buffer.h
- *
- *  Created on: Mar 9, 2016
- *      Author: adrianc
- */
-
-#ifndef USER_MFT_UTILS_MLARGE_BUFFER_H_
-#define USER_MFT_UTILS_MLARGE_BUFFER_H_
-
-#include <vector>
-
-#include <compatibility.h>
-
-class MBufferUnit {
-public:
-    MBufferUnit(const std::vector<u_int8_t>& data, u_int32_t offset) : _data(data), _offset(offset) {}
-    u_int32_t size() const {return (u_int32_t)_data.size();}
-    u_int32_t offset() const {return _offset;}
-    std::vector<u_int8_t>& data() { return _data; }
-    u_int8_t& operator[] (const u_int32_t idx) { return _data[idx]; }
-    MBufferUnit& operator=(const MBufferUnit& other);
-    bool intersects( const MBufferUnit& other) const;
-private:
-    std::vector<u_int8_t> _data;
-    u_int32_t _offset;
-};
-
-MBufferUnit& operator<<(MBufferUnit& a, MBufferUnit& b);
-
-/*
- * Large buffer with minimal memory footprint
- */
-class MlargeBuffer {
-public:
-    MlargeBuffer(u_int8_t defaultVal = 0x0) : _defaultValue(defaultVal){}
-    void add(const std::vector<u_int8_t>& data, u_int32_t offset);
-    void add(const u_int8_t* data, u_int32_t offset, u_int32_t size);
-    u_int8_t operator[] (const u_int32_t offset); // for read only
-    void get(std::vector<u_int8_t>& data, u_int32_t offset, u_int32_t size);
-    void get(std::vector<u_int8_t>& data, u_int32_t size) {return get(data, 0, size);}
-    void get(u_int8_t* data, u_int32_t offset, u_int32_t size);
-    void get(u_int8_t* data, u_int32_t size) {return get(data, 0, size);}
-private:
-    u_int8_t _defaultValue;
-    std::vector<MBufferUnit> _bData;
-};
-
-#endif /* USER_MFT_UTILS_MLARGE_BUFFER_H_ */
diff --git a/mlxconfig/Makefile.am b/mlxconfig/Makefile.am
deleted file mode 100755 (executable)
index c9189aa..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-USER_DIR = $(top_srcdir)
-MTCR_DIR = $(top_srcdir)/mtcr_ul
-COMMON_DIR = $(top_srcdir)/common
-LAYOUTS_DIR = $(top_srcdir)/tools_layouts
-UTILS_DIR = $(top_srcdir)/mft_utils
-DEV_MGT_DIR = $(top_srcdir)/dev_mgt
-LAYOUTS_LIB = $(LAYOUTS_DIR)/libtools_layouts.a
-UTILS_LIB = $(USER_DIR)/mft_utils/libmftutils.a
-CMDIF_DIR = $(USER_DIR)/cmdif
-
-
-AM_CPPFLAGS = -I. -I$(USER_DIR) -I$(top_srcdir)/include/mtcr_ul -I$(MTCR_DIR) -I$(COMMON_DIR) $(WIN64_INC)\
-           -I $(LAYOUTS_DIR) -I $(UTILS_DIR) -I$(DEV_MGT_DIR) -I$(CMDIF_DIR)
-
-AM_CXXFLAGS = -Wall -W -g -MP -MD -pipe
-bin_PROGRAMS = mstconfig
-
-mstconfig_LDADD = $(CMDIF_DIR)/libcmdif.a ../reg_access/libreg_access.a $(LAYOUTS_LIB) $(MTCR_DIR)/libmtcr_ul.a $(MLNXOS_PPC_LIBS) $(LIBSTD_CPP) $(UTILS_LIB) $(DEV_MGT_DIR)/libdev_mgt.a -ldl
-
-mstconfig_SOURCES = mlxcfg_status.h mlxcfg_ui.h mlxcfg_ui.cpp\
-                       mlxcfg_parser.cpp\
-                       mlxcfg_lib.h mlxcfg_lib.cpp\
-                       mlxcfg_param_lib.h mlxcfg_param_lib.cpp
-
-#get mst device examples and tool name from makefile
-AM_CXXFLAGS += -DMLXCFG_NAME=\"mstconfig\"
-AM_CXXFLAGS += -DMST_DEV_EXAMPLE=\"04:00.0\" -DMST_DEV_EXAMPLE2=\"05:00.0\"
-
diff --git a/mlxconfig/mlxcfg_lib.cpp b/mlxconfig/mlxcfg_lib.cpp
deleted file mode 100644 (file)
index eb1d02e..0000000
+++ /dev/null
@@ -1,736 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-/*
- * mlxcfg_lib.cpp
- *
- *  Created on: Feb 17, 2014
- *      Author: adrianc
- */
-
-#include <set>
-#include <cmath>
-#include <signal.h>
-
-#include <tools_layouts/tools_open_layouts.h>
-#include <mft_sig_handler.h>
-#include <reg_access/reg_access.h>
-#include <cmdif/tools_cif.h>
-#include "mlxcfg_lib.h"
-
-using namespace std;
-
-/*
- * Mask and offsets for working with the capability vector
- * retrieved via query_dev_cap command.
- */
-
-#define TOOL_CAP_BITS_ADDR 0xc0
-
-#define CHECK_RC(rc)\
-       if (rc) return rc;
-/*
- * MlxCfgOps implementation
- */
-
-MlxCfgOps::MlxCfgOps()
-{
-    // init the ErrMsg Class
-    std::map<int, std::string> errmap;
-    errmap[MCE_SUCCESS] = "Success";
-    errmap[MCE_FAILED] = "General Failure";
-    errmap[MCE_TLV_NOT_FOUND] = "Configuration not found";
-    errmap[MCE_TLV_NOT_SUPP] = "Configuration TLV not supported";
-    errmap[MCE_NVCFG_NOT_SUPP] = "Fw does not support NV access registers";
-    errmap[MCE_TOOLS_HCR_NOT_SUPP] = "Unsupported FW (version 2.31.5000 or above required for CX3/PRO)";
-    errmap[MCE_DRIVER_DOWN] = "Cannot perform operation, Driver might be down.";
-    errmap[MCE_UNSUPPORTED_DEVICE] = "Device not supported.";
-    errmap[MCE_UNSUPPORTED_CFG] = "Fw does not support configuration";
-    errmap[MCE_BAD_PARAMS] = "Bad parameters";
-    errmap[MCE_BAD_PARAM_VAL] = "Bad parameter value";
-    errmap[MCE_DEV_BUSY] = "Device busy";
-    errmap[MCE_UNKNOWN_TLV] = "Unknown TLV";
-    errmap[MCE_REG_NOT_SUPP] = "Fw does not support NV access registers";
-    errmap[MCE_METHOD_NOT_SUPP] = "Method not supported";
-    errmap[MCE_RES_NOT_AVAIL] = "Resource not available";
-    errmap[MCE_CONF_CORRUPT] = "Configuration is corrupted";
-    errmap[MCE_TLV_LEN_TOO_SMALL] = "TLV length too small";
-    errmap[MCE_BAD_CONFIG] = "Bad Configuration";
-    errmap[MCE_ERASE_EXEEDED] = "Erase exceeded flash spec";
-    errmap[MCE_BAD_OP] = "Bad Operation";
-    errmap[MCE_BAD_STATUS] = "General Failure";
-    errmap[MCE_CR_ERROR] = "CR-Error";
-    errmap[MCE_NOT_IMPLEMENTED] = "Not implemented";
-    errmap[MCE_INCOMPLETE_PARAMS] = "Failed to get missing configuration from device, please specify all the needed parameters";
-    errmap[MCE_OPEN_DEVICE] = "Failed to open device";
-    errmap[MCE_PCI] = "Access to device should be through PCI interface only";
-    errmap[MCE_GET_DEFAULT_PARAMS] = "Failed to get default params";
-    errmap[MCE_UNKNOWN_ERR] = "General Error";
-
-    updateErrCodes(errmap);
-    _mf = NULL;
-    _deviceId = DeviceUnknown;
-    _suppVec = 0;
-    _isFifthGen = false;
-    return;
-}
-
-MlxCfgOps::~MlxCfgOps()
-{
-    if (_mf) {
-        mclose(_mf);
-    }
-    for(map<mlxCfgType, CfgParams*>::iterator it = _cfgList.begin(); it != _cfgList.end(); it++) {
-        delete it->second;
-    }
-    return;
-}
-
-#define HW_ID_ADDR 0xf0014
-#define CX3_HW_ID 501
-#define CX3_PRO_HW_ID 503
-
-int MlxCfgOps::supportsToolsHCR()
-{
-    // we also update the support vector
-    u_int32_t devId;
-    u_int32_t type = 0;
-    int rc;
-
-    if (mread4(_mf, HW_ID_ADDR, &devId) != 4) {
-        return MCE_CR_ERROR;
-    }
-    switch (devId & 0xffff) { // check hw device id
-         case CX3_HW_ID : //Cx3
-         case CX3_PRO_HW_ID : // Cx3-pro
-             // check if device is accessed via pci (thats the only supported method atm)
-            rc = mget_mdevs_type(_mf, &type);
-        #ifndef MST_UL
-            if (type != MST_PCICONF && type != MST_PCI) {
-                return errmsg(MCE_PCI);
-            }
-        #else
-            if (type != MTCR_ACCESS_CONFIG && type != MTCR_ACCESS_MEMORY) {
-                return errmsg(MCE_PCI);
-            }
-        #endif
-            // check if we support tools_hcr
-             rc = tcif_query_dev_cap(_mf, TOOL_CAP_BITS_ADDR, &_suppVec);
-             switch (rc) {
-             case ME_OK:
-                 return MCE_SUCCESS;
-             case ME_CMDIF_BAD_SYS:
-                 return errmsg(MCE_DRIVER_DOWN);
-             case ME_CMDIF_BAD_OP:
-             case ME_CMDIF_TOUT:
-             case ME_CMDIF_BUSY:
-                 return errmsg(MCE_TOOLS_HCR_NOT_SUPP);
-             default:
-                 return errmsg("general Error, %s", m_err2str((MError)rc));
-             }
-             break;
-         default:
-             break;
-         }
-    return errmsg(MCE_UNSUPPORTED_DEVICE);
-}
-
-static void dealWithSignal()
-{
-    int sig;
-    sig = mft_signal_is_fired();
-    if (sig) {
-        // reset recieved signal
-        mft_signal_set_fired(0);
-        // retore prev handler
-        mft_signal_set_handling(0);
-        //raise signal to let the previous handle deal with it.
-        raise(sig);
-    }
-    mft_signal_set_handling(0);
-    return;
-}
-
-int MlxCfgOps::supportsNVData()
-{
-    struct tools_open_nvqc nvqcTlv;
-    memset(&nvqcTlv, 0, sizeof(struct tools_open_nvqc));
-    MError rc;
-    // "suspend" signals as we are going to take semaphores
-    mft_signal_set_handling(1);
-    rc = reg_access_nvqc(_mf, REG_ACCESS_METHOD_GET, &nvqcTlv);
-    dealWithSignal();
-    if (rc == ME_REG_ACCESS_BAD_PARAM || rc == ME_REG_ACCESS_INTERNAL_ERROR) {
-        return errmsg(MCE_NVCFG_NOT_SUPP);
-    }
-    return MCE_SUCCESS;
-}
-
-int MlxCfgOps::isDefaultSupported(bool &defaultSupported)
-{
-    struct tools_open_nvqgc nvqgcTlv;
-
-    if(!_isFifthGen){
-        defaultSupported = true;
-        return ME_OK;
-    }
-
-    memset(&nvqgcTlv, 0, sizeof(struct tools_open_nvqgc));
-    MError rc;
-
-    mft_signal_set_handling(1);
-    rc = reg_access_nvqgc(_mf, REG_ACCESS_METHOD_GET, &nvqgcTlv);
-    dealWithSignal();
-    if (rc == ME_REG_ACCESS_BAD_PARAM || rc == ME_REG_ACCESS_INTERNAL_ERROR) {
-        defaultSupported = 0;
-        return ME_OK;
-    } else if(rc == ME_OK){
-        defaultSupported = nvqgcTlv.read_factory_settings_support;
-        return ME_OK;
-    }
-    return rc;
-}
-
-int MlxCfgOps::openComChk()
-{
-    bool rc;
-    int ret;
-    u_int32_t type = 0;
-    // check if we support Tools HCR and update _suppVec
-    if (_isFifthGen) {
-        rc = mget_mdevs_type(_mf, &type);
-        #ifndef MST_UL
-            if (type != MST_PCICONF && type != MST_PCI) {
-                return errmsg(MCE_PCI);
-            }
-        #else
-            if (type != MTCR_ACCESS_CONFIG && type != MTCR_ACCESS_MEMORY) {
-                return errmsg(MCE_PCI);
-            }
-        #endif
-        rc = supportsNVData(); CHECK_RC(rc);
-    } else {
-        rc = supportsToolsHCR(); CHECK_RC(rc);
-    }
-
-    // update cfg specific info.
-    // TODO: adrianc: when getting defaults for 4th gen , perform queryDefParams only once and pass struct to classes to avoid calling multiple times
-    for (std::map<mlxCfgType, CfgParams*>::iterator paramIt = _cfgList.begin(); paramIt != _cfgList.end(); paramIt++) {
-        paramIt->second->setDevCapVec(_suppVec);
-        if (paramIt->second->cfgSupported(_mf)) {
-            ret = paramIt->second->getDefaultParams(_mf);
-            if (ret && ret!= MCE_GET_DEFAULT_PARAMS && ret != MCE_NOT_IMPLEMENTED) {
-                return ret;
-            }
-        }
-    }
-    return MCE_SUCCESS;
-}
-
-int MlxCfgOps::open(const char* devStr, bool forceClearSem)
-{
-    _mf = mopen(devStr);
-    if (_mf == NULL) {
-        return errmsg(MCE_OPEN_DEVICE);
-    }
-
-    return opend(_mf , forceClearSem);
-}
-
-int MlxCfgOps::opend(mfile* mf, bool forceClearSem)
-{
-    u_int32_t hwDevId, hwRevId;
-    if (!mf) {
-        return errmsg(MCE_BAD_PARAMS);
-    }
-    _mf = mf;
-
-    if( dm_get_device_id(mf, &_deviceId, &hwDevId, &hwRevId) ) {
-        return errmsg("Failed to identify device.");
-    }
-    // check if device is supported:
-    switch(_deviceId) {
-    case DeviceConnectX3:
-    case DeviceConnectX3Pro:
-        _isFifthGen = false;
-        break;
-    case DeviceConnectIB:
-    case DeviceConnectX4:
-    case DeviceConnectX4LX:
-        _isFifthGen = true;
-        break;
-    default:
-        return errmsg(MCE_UNSUPPORTED_DEVICE);
-    }
-
-    if(dm_is_livefish_mode(mf)) {
-        return errmsg("Device in Livefish mode is not supported.");
-    }
-
-    // init _cfgList, _param2TypeMap
-    if (_isFifthGen) {
-        // Wake On LAN
-        _cfgList[Mct_Wol] = new WolParams5thGen();
-        _param2TypeMap[Mcp_Wol_Magic_En] = Mct_Wol;
-        // Vpi Settings
-        _cfgList[Mct_Vpi_P1] = new VpiParams5thGen(1);
-        _cfgList[Mct_Vpi_P2] = new VpiParams5thGen(2);
-        _param2TypeMap[Mcp_Link_Type_P1] = Mct_Vpi_P1;
-        _param2TypeMap[Mcp_Link_Type_P2] = Mct_Vpi_P2;
-        // PCI settings
-        _cfgList[Mct_Pci] = new PciParams5thGen();
-        _param2TypeMap[Mcp_Sriov_En] = Mct_Pci;
-        _param2TypeMap[Mcp_Num_Of_Vfs] = Mct_Pci;
-        _param2TypeMap[Mcp_Fpp_En] = Mct_Pci;
-        _param2TypeMap[Mcp_PF_Log_Bar_Size] = Mct_Pci;
-        _param2TypeMap[Mcp_VF_Log_Bar_Size] = Mct_Pci;
-        _param2TypeMap[Mcp_Num_Pf_Msix] = Mct_Pci;
-        _param2TypeMap[Mcp_Num_Vf_Msix] = Mct_Pci;
-        // TPT settings
-        _cfgList[Mct_Tpt] = new TptParams5thGen();
-        _param2TypeMap[Mcp_Log_Tpt_Size] = Mct_Tpt;
-        // Infiniband DC settings
-        _cfgList[Mct_Dc] = new IBDCParams5thGen();
-        _param2TypeMap[Mcp_Log_Dcr_Hash_Table_Size] = Mct_Dc;
-        _param2TypeMap[Mcp_Dcr_Lifo_Size] = Mct_Dc;
-        // RoCE v1.5 next protocol
-        _cfgList[Mct_RoCE_Next_Protocol] = new RoCENextProtocolParams5thGen();
-        _param2TypeMap[Mcp_RoCE_Next_Protocol] = Mct_RoCE_Next_Protocol;
-        // RoCE CC parameters
-        _cfgList[Mct_RoCE_CC_P1] = new RoCECCParams5thGen(1);
-        _cfgList[Mct_RoCE_CC_P2] = new RoCECCParams5thGen(2);
-        _param2TypeMap[Mcp_RoCE_CC_Algorithm_P1] = Mct_RoCE_CC_P1;
-        _param2TypeMap[Mcp_RoCE_CC_Prio_Mask_P1] = Mct_RoCE_CC_P1;
-        _param2TypeMap[Mcp_RoCE_CC_Algorithm_P2] = Mct_RoCE_CC_P2;
-        _param2TypeMap[Mcp_RoCE_CC_Prio_Mask_P2] = Mct_RoCE_CC_P2;
-        // RoCE CC ECN parameters
-        _cfgList[Mct_RoCE_CC_Ecn_P1] = new RoCECCEcnParams5thGen(1);
-        _cfgList[Mct_RoCE_CC_Ecn_P2] = new RoCECCEcnParams5thGen(2);
-        _param2TypeMap[Mcp_Clamp_Tgt_Rate_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Clamp_Tgt_Rate_After_Time_Inc_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Rpg_Time_Reset_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Rpg_Byte_Reset_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Rpg_Threshold_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Rpg_Max_Rate_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Rpg_Ai_Rate_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Rpg_Hai_Rate_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Rpg_Gd_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Rpg_Min_Dec_Fac_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Rpg_Min_Rate_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Rate_To_Set_On_First_Cnp_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Dce_Tcp_G_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Dce_Tcp_Rtt_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Rate_Reduce_Monitor_Period_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Initial_Alpha_Value_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Min_Time_Between_Cnps_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Cnp_Dscp_P1] = Mct_RoCE_CC_Ecn_P1;
-        _param2TypeMap[Mcp_Cnp_802p_Prio_P1] = Mct_RoCE_CC_Ecn_P1;
-
-        _param2TypeMap[Mcp_Clamp_Tgt_Rate_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Clamp_Tgt_Rate_After_Time_Inc_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Rpg_Time_Reset_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Rpg_Byte_Reset_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Rpg_Threshold_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Rpg_Max_Rate_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Rpg_Ai_Rate_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Rpg_Hai_Rate_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Rpg_Gd_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Rpg_Min_Dec_Fac_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Rpg_Min_Rate_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Rate_To_Set_On_First_Cnp_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Dce_Tcp_G_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Dce_Tcp_Rtt_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Rate_Reduce_Monitor_Period_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Initial_Alpha_Value_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Min_Time_Between_Cnps_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Cnp_Dscp_P2] = Mct_RoCE_CC_Ecn_P2;
-        _param2TypeMap[Mcp_Cnp_802p_Prio_P2] = Mct_RoCE_CC_Ecn_P2;
-
-        _cfgList[Mct_External_Port] = new ExternalPort5thGen();
-        _param2TypeMap[Mcp_Port_Owner] = Mct_External_Port;
-        _param2TypeMap[Mcp_Allow_Rd_Counters] = Mct_External_Port;
-
-        _cfgList[Mct_Boot_Settings_Extras_5thGen] = new BootSettingsExtParams5thGen();
-        _param2TypeMap[Mcp_Boot_Settings_Ext_IP_Ver] = Mct_Boot_Settings_Extras_5thGen;
-
-        _cfgList[Mct_QoS_P1] = new QoS(1);
-        _cfgList[Mct_QoS_P2] = new QoS(2);
-        _param2TypeMap[Mcp_QoS_Num_of_TC_P1] = Mct_QoS_P1;
-        _param2TypeMap[Mcp_QoS_Num_of_VL_P1] = Mct_QoS_P1;
-        _param2TypeMap[Mcp_QoS_Num_of_TC_P2] = Mct_QoS_P2;
-        _param2TypeMap[Mcp_QoS_Num_of_VL_P2] = Mct_QoS_P2;
-
-        _cfgList[Mct_LLDP_Client_Settings_P1] = new LLDPClientSettings(1);
-        _cfgList[Mct_LLDP_Client_Settings_P2] = new LLDPClientSettings(2);
-        _param2TypeMap[Mcp_LLDP_NB_RX_Mode_P1] = Mct_LLDP_Client_Settings_P1;
-        _param2TypeMap[Mcp_LLDP_NB_TX_Mode_P1] = Mct_LLDP_Client_Settings_P1;
-        _param2TypeMap[Mcp_LLDP_NB_DCBX_P1] = Mct_LLDP_Client_Settings_P1;
-        _param2TypeMap[Mcp_LLDP_NB_RX_Mode_P2] = Mct_LLDP_Client_Settings_P2;
-        _param2TypeMap[Mcp_LLDP_NB_TX_Mode_P2] = Mct_LLDP_Client_Settings_P2;
-        _param2TypeMap[Mcp_LLDP_NB_DCBX_P2] = Mct_LLDP_Client_Settings_P2;
-
-        _cfgList[Mct_DCBX_P1] = new DCBX(1);
-        _cfgList[Mct_DCBX_P2] = new DCBX(2);
-        _param2TypeMap[Mcp_DCBX_IEEE_EN_P1] = Mct_DCBX_P1;
-        _param2TypeMap[Mcp_DCBX_CEE_EN_P1] = Mct_DCBX_P1;
-        _param2TypeMap[Mcp_DCBX_WILLING_P1] = Mct_DCBX_P1;
-        _param2TypeMap[Mcp_DCBX_IEEE_EN_P2] = Mct_DCBX_P2;
-        _param2TypeMap[Mcp_DCBX_CEE_EN_P2] = Mct_DCBX_P2;
-        _param2TypeMap[Mcp_DCBX_WILLING_P2] = Mct_DCBX_P2;
-
-    } else {
-        // SR-IOV
-        _cfgList[Mct_Sriov] = new SriovParams4thGen();
-        _param2TypeMap[Mcp_Sriov_En] = Mct_Sriov;
-        _param2TypeMap[Mcp_Num_Of_Vfs] = Mct_Sriov;
-        // Wake on LAN
-        _cfgList[Mct_Wol_P1] = new WolParams4thGen(1);
-        _cfgList[Mct_Wol_P2] = new WolParams4thGen(2);
-        _param2TypeMap[Mcp_Wol_Magic_En_P1] = Mct_Wol_P1;
-        _param2TypeMap[Mcp_Wol_Magic_En_P2] = Mct_Wol_P2;
-        // Vpi Settings
-        _cfgList[Mct_Vpi_P1] = new VpiParams4thGen(1);
-        _cfgList[Mct_Vpi_P2] = new VpiParams4thGen(2);
-        _param2TypeMap[Mcp_Link_Type_P1] = Mct_Vpi_P1;
-        _param2TypeMap[Mcp_Link_Type_P2] = Mct_Vpi_P2;
-        // BAR size
-        _cfgList[Mct_Bar_Size] = new BarSzParams4thGen();
-        _param2TypeMap[Mcp_Log_Bar_Size] = Mct_Bar_Size;
-        // Infiniband Boot Settings
-        _cfgList[Mct_Boot_Settings_P1] = new InfinibandBootSettingsParams4thGen(1);
-        _cfgList[Mct_Boot_Settings_P2] = new InfinibandBootSettingsParams4thGen(2);
-        _param2TypeMap[Mcp_Boot_Pkey_P1] = Mct_Boot_Settings_P1;
-        _param2TypeMap[Mcp_Boot_Pkey_P2] = Mct_Boot_Settings_P2;
-        // Preboot Boot Settings
-        _cfgList[Mct_Preboot_Boot_Settings_P1] = new PrebootBootSettingsParams4thGen(1);
-        _cfgList[Mct_Preboot_Boot_Settings_P2] = new PrebootBootSettingsParams4thGen(2);
-        _param2TypeMap[Mcp_Boot_Option_Rom_En_P1] = Mct_Preboot_Boot_Settings_P1;
-        _param2TypeMap[Mcp_Boot_Vlan_En_P1] = Mct_Preboot_Boot_Settings_P1;
-        _param2TypeMap[Mcp_Boot_Retry_Cnt_P1] = Mct_Preboot_Boot_Settings_P1;
-        _param2TypeMap[Mcp_Legacy_Boot_Protocol_P1] = Mct_Preboot_Boot_Settings_P1;
-        _param2TypeMap[Mcp_Boot_Vlan_P1] = Mct_Preboot_Boot_Settings_P1;
-
-        _param2TypeMap[Mcp_Boot_Option_Rom_En_P2] = Mct_Preboot_Boot_Settings_P2;
-        _param2TypeMap[Mcp_Boot_Vlan_En_P2] = Mct_Preboot_Boot_Settings_P2;
-        _param2TypeMap[Mcp_Boot_Retry_Cnt_P2] = Mct_Preboot_Boot_Settings_P2;
-        _param2TypeMap[Mcp_Legacy_Boot_Protocol_P2] = Mct_Preboot_Boot_Settings_P2;
-        _param2TypeMap[Mcp_Boot_Vlan_P2] = Mct_Preboot_Boot_Settings_P2;
-
-        _cfgList[Mct_Boot_Settings_Extras_4thGen_P1] = new BootSettingsExtParams4thGen(1);
-        _cfgList[Mct_Boot_Settings_Extras_4thGen_P2] = new BootSettingsExtParams4thGen(2);
-        _param2TypeMap[Mcp_Boot_Settings_Ext_IP_Ver_P1] = Mct_Boot_Settings_Extras_4thGen_P1;
-        _param2TypeMap[Mcp_Boot_Settings_Ext_IP_Ver_P2] = Mct_Boot_Settings_Extras_4thGen_P2;
-    }
-
-
-    if (forceClearSem) {
-        int rc;
-        rc = _isFifthGen ? icmd_clear_semaphore(mf) : tools_cmdif_unlock_semaphore(_mf);
-        if (rc) {
-            return errmsg("Failed to unlock semaphore, %s.", m_err2str((MError)rc));
-        }
-    }
-    return openComChk();
-}
-
-bool MlxCfgOps::supportsCfg(mlxCfgType cfg)
-{
-    if (!isLegal(cfg)) {
-        return false;
-    }
-    return _cfgList[cfg]->cfgSupported(_mf);
-}
-
-bool MlxCfgOps::supportsParam(mlxCfgParam param)
-{
-    if (!isLegal(param)) {
-        return false;
-    }
-
-    if (!isLegal(cfgParam2Type(param))) {
-        return false;
-    }
-
-    return _cfgList[cfgParam2Type(param)]->cfgSupported(_mf, param);
-}
-
-int MlxCfgOps::getCfg(mlxCfgParam cfgParam, u_int32_t& val, bool getDefault)
-{
-    if (!isLegal(cfgParam)) {
-        return MCE_BAD_PARAMS;
-    }
-
-    if (!supportsParam(cfgParam)) {
-        return errmsg(MCE_UNSUPPORTED_CFG);
-    }
-
-    if (getDefault) {
-        val = (_cfgList[cfgParam2Type(cfgParam)])->getDefaultParam(cfgParam);
-    } else {
-        int rc;
-        rc = _cfgList[cfgParam2Type(cfgParam)]->getFromDev(_mf);
-        if (rc) {
-            return errmsgConcatMsg(rc,*_cfgList[cfgParam2Type(cfgParam)]);
-        }
-        val = (_cfgList[cfgParam2Type(cfgParam)])->getParam(cfgParam);
-    }
-    return MCE_SUCCESS;
-}
-
-int MlxCfgOps::getCfg(std::vector<cfgInfo>& infoVec)
-{
-    for (std::vector<cfgInfo>::iterator it = infoVec.begin() ; it != infoVec.end(); it++) {
-        int rc = getCfg(it->first,it->second);
-        if (rc) {
-            return rc;
-        }
-    }
-    return MCE_SUCCESS;
-}
-
-int MlxCfgOps::setCfg(mlxCfgParam cfgParam, u_int32_t val)
-{
-    if (!isLegal(cfgParam)) {
-        return MCE_BAD_PARAMS;
-    }
-
-    if (!supportsParam(cfgParam)) {
-        return errmsg(MCE_UNSUPPORTED_CFG);
-    }
-
-    // get parameters from device if present
-    int rc = _cfgList[cfgParam2Type(cfgParam)]->getFromDev(_mf);
-    if (rc) {
-        return errmsgConcatMsg(rc, *_cfgList[cfgParam2Type(cfgParam)]);
-    }
-    _cfgList[cfgParam2Type(cfgParam)]->setParam(cfgParam, val);
-    rc = _cfgList[cfgParam2Type(cfgParam)]->setOnDev(_mf);
-    if (rc) {
-        return errmsgConcatMsg(rc, *_cfgList[cfgParam2Type(cfgParam)]);
-    }
-    return MCE_SUCCESS;
-}
-
-int MlxCfgOps::setCfg(const std::vector<cfgInfo>& infoVec, mlxCfgParam& failedParam)
-{
-    // set params
-    std::set<CfgParams*> CfgToSet;
-    int rc;
-
-    for (std::vector<cfgInfo>::const_iterator it = infoVec.begin() ; it != infoVec.end(); it++) {
-        if (!isLegal(it->first)) {
-            return MCE_BAD_PARAMS;
-        }
-        if (!supportsParam(it->first)) {
-            failedParam = it->first;
-            return errmsg(MCE_UNSUPPORTED_CFG);
-        }
-        // get configuration from device first (if preset) in case of multiple params per type
-        rc = _cfgList[cfgParam2Type(it->first)]->getFromDev(_mf);
-        if (rc) {
-            return errmsgConcatMsg(rc, *_cfgList[cfgParam2Type(it->first)]);
-        }
-        _cfgList[cfgParam2Type(it->first)]->setParam(it->first, it->second);
-        CfgToSet.insert(_cfgList[cfgParam2Type(it->first)]);
-    }
-    //set on device exit on first failure
-    for (std::set<CfgParams*>::iterator it = CfgToSet.begin() ; it != CfgToSet.end(); it++) {
-        rc = (*it)->setOnDev(_mf);
-        if (rc) {
-            return errmsgConcatMsg(rc, (**it));
-        }
-    }
-    return MCE_SUCCESS;
-}
-
-void MlxCfgOps::setIgnoreSoftLimits(bool val)
-{
-    for(std::map<mlxCfgType, CfgParams*>::iterator it = _cfgList.begin(); it != _cfgList.end(); it++) {
-        it->second->setIgnoreSoftLimits(val);
-    }
-    return;
-}
-
-void MlxCfgOps::setIgnoreHardLimits(bool val)
-{
-    for(std::map<mlxCfgType, CfgParams*>::iterator it = _cfgList.begin(); it != _cfgList.end(); it++) {
-        it->second->setIgnoreHardLimits(val);
-    }
-    return;
-}
-
-int MlxCfgOps::invalidateCfgs4thGen()
-{
-    struct tools_open_mnvia mnviaTlv;
-    u_int8_t buffer[TOOLS_OPEN_MNVIA_SIZE] = {0};
-    int rc;
-    memset(&mnviaTlv, 0, sizeof(struct tools_open_mnvia));
-    tools_open_mnvia_pack(&mnviaTlv, buffer);
-    mft_signal_set_handling(1);
-    rc = reg_access_mnvia(_mf, REG_ACCESS_METHOD_SET, &mnviaTlv);
-    dealWithSignal();
-    return rc;
-}
-
-int MlxCfgOps::invalidateCfgs5thGen()
-{
-    struct tools_open_nvia nviaTlv;
-    u_int8_t buffer[TOOLS_OPEN_NVIA_SIZE] = {0};
-    int rc;
-    memset(&nviaTlv, 0, sizeof(struct tools_open_nvia));
-    tools_open_nvia_pack(&nviaTlv, buffer);
-    mft_signal_set_handling(1);
-    rc = reg_access_nvia(_mf, REG_ACCESS_METHOD_SET, &nviaTlv);
-    dealWithSignal();
-    return rc;
-}
-
-int MlxCfgOps::invalidateCfgs()
-{
-    int rc;
-    if (_isFifthGen) {
-        rc = invalidateCfgs5thGen();
-    } else {
-        rc = invalidateCfgs4thGen();
-    }
-    if (rc) {
-        return errmsg("failed to invalidate configurations, %s.", m_err2str((MError)rc));
-    }
-    return MCE_SUCCESS;
-}
-
-int MlxCfgOps::backupCfgs(vector< pair< u_int32_t, vector<u_int8_t> > >& cfgsMap)
-{
-    int rc;
-    int status = 0;
-    u_int32_t ptr = 0;
-    struct tools_open_mnvgn mnvgnTlv;
-    do {
-        memset(&mnvgnTlv, 0, sizeof(struct tools_open_mnvgn));
-        mnvgnTlv.nv_pointer = ptr;
-        mft_signal_set_handling(1);
-        rc = reg_access_mnvgn(_mf, REG_ACCESS_METHOD_GET, &mnvgnTlv, &status);
-        dealWithSignal();
-        if (rc) {
-            if(status == ME_NOT_IMPLEMENTED) {
-                return errmsg("Firmware does not support backup command");
-            }
-            return errmsg("failed to backup configurations, %s.", m_err2str((MError)rc));
-        }
-        ptr = mnvgnTlv.nv_pointer;
-        if (ptr != 0) {
-            u_int32_t k = mnvgnTlv.nv_hdr.type.tlv_type_dw.tlv_type_dw;
-            vector<u_int8_t> v;
-            v.resize(TOOLS_OPEN_NV_HDR_FIFTH_GEN_SIZE + mnvgnTlv.nv_hdr.length);
-            //Copy header:
-            tools_open_nv_hdr_fifth_gen_pack(&mnvgnTlv.nv_hdr, v.data());
-            //Copy data:
-            memcpy(v.data() + TOOLS_OPEN_NV_HDR_FIFTH_GEN_SIZE,
-                    &mnvgnTlv.nv_data,
-                    mnvgnTlv.nv_hdr.length);
-            cfgsMap.push_back(make_pair(k, v));
-        }
-    } while (ptr != 0);
-
-    return rc;
-}
-
-bool MlxCfgOps::isLegal(mlxCfgType cfg)
-{
-    if (_cfgList.find(cfg) != _cfgList.end()) {
-        return true;
-    }
-    errmsg("illegal configuration");
-    return false;
-}
-
-bool MlxCfgOps::isLegal(mlxCfgParam cfg)
-{
-    if (cfg >= Mcp_Sriov_En && cfg < Mcp_Last) {
-        return true;
-    }
-    errmsg("illegal configuration parameter");
-    return false;
-}
-
-
-const char* MlxCfgOps::loadConfigurationGetStr()
-{
-    int rc;
-    struct cibfw_register_mfrl mfrl;
-    memset(&mfrl, 0, sizeof(mfrl));
-    if (_isFifthGen && (_deviceId == DeviceConnectX4 || _deviceId == DeviceConnectX4LX)) {
-        // send warm boot (bit 6)
-        mfrl.reset_level = 1 << 6;
-        mft_signal_set_handling(1);
-        rc = reg_access_mfrl(_mf,REG_ACCESS_METHOD_SET, &mfrl);
-        dealWithSignal();
-        if (rc) {
-            return "Please power cycle machine to load new configurations.";
-        }
-    }
-    return "Please reboot machine to load new configurations.";
-}
-
-
-mlxCfgType MlxCfgOps::cfgParam2Type(mlxCfgParam param)
-{
-    if (_param2TypeMap.find(param) == _param2TypeMap.end()) {
-        return Mct_Last;
-    }
-    return _param2TypeMap[param];
-}
-
-int MlxCfgOps::setRawCfg(std::vector<u_int32_t> rawTlvVec)
-{
-    if (!_isFifthGen) {
-        return errmsg("Setting Raw Configuration is supported for " FIFTH_GENERATION_LIST " devices only.");
-    }
-    RawCfgParams5thGen rawTlv;
-    if (rawTlv.setRawData(rawTlvVec)) {
-        return errmsg("%s", rawTlv.err());
-    }
-
-    if (rawTlv.setOnDev(_mf)) {
-        return errmsg("%s", rawTlv.err());
-    }
-    return MCE_SUCCESS;
-}
-
-int MlxCfgOps::dumpRawCfg(std::vector<u_int32_t> rawTlvVec, std::string& tlvDump)
-{
-    RawCfgParams5thGen rawTlv;
-    if (rawTlv.setRawData(rawTlvVec)) {
-        return errmsg("%s", rawTlv.err());
-    }
-    tlvDump = rawTlv.dumpTlv();
-    return MCE_SUCCESS;
-}
diff --git a/mlxconfig/mlxcfg_lib.h b/mlxconfig/mlxcfg_lib.h
deleted file mode 100644 (file)
index 169a1c8..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-/*
- * mlxcfg_lib.h
- *
- *  Created on: Feb 17, 2014
- *      Author: adrianc
- */
-
-#ifndef MLXCFG_LIB_H_
-#define MLXCFG_LIB_H_
-
-#include <vector>
-#include <utility>
-
-#include <mtcr.h>
-#include <errmsg.h>
-#include <tools_dev_types.h>
-
-#include "mlxcfg_status.h"
-#include "mlxcfg_param_lib.h"
-
-#define FIFTH_GENERATION_LIST "Connect-IB/Connect-X4/LX"
-#define FOURTH_GENERATION_LIST "ConnectX3/Pro"
-
-class MlxCfgOps : public ErrMsg {
-public:
-    MlxCfgOps();
-    ~MlxCfgOps();
-    int open(const char* devStr, bool forceClearSem=false);
-    int opend(mfile* mf, bool forceClearSem=false);
-
-    // no need to close , this is done  in destructor
-
-    bool supportsCfg(mlxCfgType cfg);
-    bool supportsParam(mlxCfgParam param);
-
-    int getCfg(mlxCfgParam cfgParam, u_int32_t& val, bool getDefault = false);
-    int getCfg(std::vector<cfgInfo>& infoVec);
-
-    int setCfg(mlxCfgParam cfgParam, u_int32_t val);
-    int setCfg(const std::vector<cfgInfo>& infoVec, mlxCfgParam& cfgParam);
-
-    int setRawCfg(std::vector<u_int32_t> rawTlvVec);
-
-    int dumpRawCfg(std::vector<u_int32_t> rawTlvVec, std::string& tlvDump);
-
-    int invalidateCfgs();
-
-    // Set/Un-Set ignore limits for all configurations
-    void setIgnoreSoftLimits(bool val);
-    void setIgnoreHardLimits(bool val);
-
-    // Set/Un-Set Ignore limits per configuration
-    // Adrianc: TBD
-
-    const char* loadConfigurationGetStr();
-
-    int isDefaultSupported(bool &defaultSupported);
-
-    int backupCfgs(std::vector<std::pair<u_int32_t, std::vector<u_int8_t> > >& cfgs);
-
-private:
-    int openComChk();
-    int supportsToolsHCR();
-    int supportsNVData();
-    bool isLegal(mlxCfgType cfg);
-    bool isLegal(mlxCfgParam cfg);
-
-    int invalidateCfgs4thGen();
-    int invalidateCfgs5thGen();
-
-    mlxCfgType cfgParam2Type(mlxCfgParam param);
-    std::map<mlxCfgType, CfgParams*> _cfgList; // needs to be initialized in constructor and freed in destructor, will contain all the  tools supported cfgs
-    std::map<mlxCfgParam, mlxCfgType> _param2TypeMap;
-    dm_dev_id_t _deviceId;
-    mfile* _mf;
-    u_int64_t _suppVec;
-    bool _isFifthGen;
-};
-
-
-
-#endif /* MLXCFG_LIB_H_ */
diff --git a/mlxconfig/mlxcfg_param_lib.cpp b/mlxconfig/mlxcfg_param_lib.cpp
deleted file mode 100644 (file)
index 1028e67..0000000
+++ /dev/null
@@ -1,4283 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-/*
- * mlxcfg_param_lib.cpp
- *
- *  Created on: Mar 22, 2015
- *      Author: adrianc
- */
-
-#include <signal.h>
-#include <math.h>
-#include <sstream>
-#include <string>
-
-#include <mft_sig_handler.h>
-#include <reg_access/reg_access.h>
-#include <bit_slice.h>
-#include <cmdif/tools_cif.h>
-#include <mtcr.h>
-#include <compatibility.h>
-
-#include "mlxcfg_param_lib.h"
-#include "mlxcfg_status.h"
-
-enum {
-    SRIOV_MASK = 0x1,
-    WOL_P1_MASK = 0x2,
-    WOL_P2_MASK = 0x4 ,
-    VPI_P1_MASK = 0x8,
-    VPI_P2_MASK = 0x10,
-    BAR_SZ_MASK = 0x20
-};
-
-// tlv classes:
-enum {
-    CLASS_GLOBAL = 0x0,
-    CLASS_PHYS_PORT = 0x1,
-    CLASS_BMC = 0x2,
-    CLASS_PER_HOST = 0x3,
-    CLASS_ESWITCH = 0x4
-};
-
-#define MAX_VFS_ADDR 0x38
-#define MAX_BAR_SZ_ADDR 0xc8
-#define DEFAULT_BAR_SZ_ADDR 0x48
-
-
-/*
- * Debug print MACRO of the NV Tlvs:
- */
-//#define _ENABLE_DEBUG_
-#ifdef _ENABLE_DEBUG_
-# define DEBUG_PRINT_SEND(data_struct, struct_name)\
-    printf("-I- Data Sent:\n");\
-    tools_open_##struct_name##_print(data_struct, stdout, 1)
-# define DEBUG_PRINT_RECIEVE(data_struct, struct_name)\
-    printf("-I- Data Received:\n");\
-    tools_open_##struct_name##_print(data_struct, stdout, 1)
-#else
-# define DEBUG_PRINT_SEND(data_struct, struct_name)
-# define DEBUG_PRINT_RECIEVE(data_struct, struct_name)
-#endif
-
-#define CHECK_RC(rc)\
-    if (rc) return rc;
-
-/*
- * Macros for getting and settings a TLV
- */
-// TODO: adrianc: add macro for nvqc tlv and use it in cfgSupported for 5th gen Tlvs
-
-/*
- * Macros Below rely on the fact that the user has implemented within the parameter class:
- * void updateClassAttrFromTlv(void*);
- * void updateTLVFromClassAttr(void*);
- *
- * those method do what they imply: update the class internal memeber from TLV and via versa.
- */
-
-#define SET_ON_DEV_5TH_GEN(mf, ignoreCheck, tlvStructName, tlvNameStr) \
-        MError __mRc;\
-        if (!(ignoreCheck) && !checkCfg()) {\
-            return MCE_BAD_PARAMS;\
-        }\
-        int __tlvBuffSize = tlvStructName##_size();\
-        u_int8_t __tlvBuff[__tlvBuffSize];\
-        memset(__tlvBuff, 0, __tlvBuffSize);\
-        struct tlvStructName __tlvStruct;\
-        memset(&__tlvStruct, 0, sizeof(__tlvStruct));\
-        __mRc = mnvaCom5thGen(mf, __tlvBuff, __tlvBuffSize, getTlvTypeBe(), REG_ACCESS_METHOD_GET);\
-        if (__mRc && __mRc != ME_REG_ACCESS_RES_NOT_AVLBL) {\
-            return errmsg("failed to set %s settings: %s", tlvNameStr, m_err2str(__mRc));\
-        }\
-        tlvStructName##_unpack(&__tlvStruct, __tlvBuff);\
-        updateTlvFromClassAttr((void*)&__tlvStruct);\
-        tlvStructName##_pack(&__tlvStruct, __tlvBuff);\
-        __mRc = mnvaCom5thGen(mf, __tlvBuff, __tlvBuffSize, getTlvTypeBe(), REG_ACCESS_METHOD_SET);\
-        if (__mRc) {\
-            return errmsg("failed to set %s settings: %s", tlvNameStr, m_err2str(__mRc));\
-        }\
-        _updated = false;\
-        return MCE_SUCCESS
-
-#define GET_DEFAULT_5TH_GEN(mf, tlvStructName, tlvNameStr) \
-        MError __mRc;\
-        int __tlvBuffSize = tlvStructName##_size();\
-        u_int8_t __tlvBuff[__tlvBuffSize];\
-        memset(__tlvBuff, 0, __tlvBuffSize);\
-        struct tlvStructName __tlvStruct;\
-        memset(&__tlvStruct, 0, sizeof(__tlvStruct));\
-        __mRc = mnvaCom5thGen(mf, &__tlvBuff[0], __tlvBuffSize, getTlvTypeBe(), REG_ACCESS_METHOD_GET, true);\
-        if (__mRc) {\
-            if (__mRc == ME_REG_ACCESS_RES_NOT_AVLBL) {\
-                return MCE_SUCCESS;\
-            }\
-            return errmsg("Failed to get %s settings: %s", tlvNameStr, m_err2str(__mRc));\
-        }\
-        tlvStructName##_unpack(&__tlvStruct, &__tlvBuff[0]);\
-        updateClassDefaultAttrFromTlv((void*)&__tlvStruct);\
-        updateClassAttrFromDefaultParams();\
-       return MCE_SUCCESS
-
-#define GET_FROM_DEV_5TH_GEN(mf, tlvStructName, tlvNameStr) \
-        MError __mRc;\
-        int __tlvBuffSize = tlvStructName##_size();\
-        u_int8_t __tlvBuff[__tlvBuffSize];\
-        memset(__tlvBuff, 0, __tlvBuffSize);\
-        struct tlvStructName __tlvStruct;\
-        memset(&__tlvStruct, 0, sizeof(__tlvStruct));\
-        if (_updated) {\
-            return MCE_SUCCESS;\
-        }\
-        __mRc = mnvaCom5thGen(mf, &__tlvBuff[0], __tlvBuffSize, getTlvTypeBe(), REG_ACCESS_METHOD_GET);\
-        if (__mRc) {\
-            if (__mRc == ME_REG_ACCESS_RES_NOT_AVLBL) {\
-                return MCE_SUCCESS;\
-            }\
-            return errmsg("Failed to get %s settings: %s", tlvNameStr, m_err2str(__mRc));\
-        }\
-        tlvStructName##_unpack(&__tlvStruct, &__tlvBuff[0]);\
-        updateClassAttrFromTlv((void*)&__tlvStruct);\
-        _updated = true;\
-       return MCE_SUCCESS
-
-#define SET_ON_DEV_4TH_GEN(mf, ignoreCheck, tlvStructName, tlvNameStr, typeMod) \
-        MError __mRc;\
-        if (!(ignoreCheck) && !checkCfg()) {\
-            return MCE_BAD_PARAMS;\
-        }\
-        int __tlvBuffSize = tlvStructName##_size();\
-        u_int8_t __tlvBuff[__tlvBuffSize];\
-        memset(__tlvBuff, 0, __tlvBuffSize);\
-        struct tlvStructName __tlvStruct;\
-        memset(&__tlvStruct, 0, sizeof(__tlvStruct));\
-        __mRc = mnvaCom4thGen(mf, __tlvBuff, __tlvBuffSize, tlvTypeIdx, REG_ACCESS_METHOD_GET, typeMod);\
-        if (__mRc && __mRc != ME_REG_ACCESS_RES_NOT_AVLBL) {\
-            return errmsg("failed to set %s settings: %s", tlvNameStr, m_err2str(__mRc));\
-        }\
-        tlvStructName##_unpack(&__tlvStruct, __tlvBuff);\
-        updateTlvFromClassAttr((void*)&__tlvStruct);\
-        tlvStructName##_pack(&__tlvStruct, __tlvBuff);\
-        __mRc = mnvaCom4thGen(mf, __tlvBuff, __tlvBuffSize, tlvTypeIdx, REG_ACCESS_METHOD_SET, typeMod);\
-        if (__mRc) {\
-            return errmsg("failed to set %s settings: %s", tlvNameStr, m_err2str(__mRc));\
-        }\
-        _updated = false;\
-        return MCE_SUCCESS
-
-#define GET_FROM_DEV_4TH_GEN(mf, tlvStructName, tlvNameStr, typeMod) \
-        MError __mRc;\
-        int __tlvBuffSize = tlvStructName##_size();\
-        u_int8_t __tlvBuff[__tlvBuffSize];\
-        memset(__tlvBuff, 0, __tlvBuffSize);\
-        struct tlvStructName __tlvStruct;\
-        memset(&__tlvStruct, 0, sizeof(__tlvStruct));\
-        if (_updated) {\
-            return MCE_SUCCESS;\
-        }\
-        __mRc = mnvaCom4thGen(mf, &__tlvBuff[0], __tlvBuffSize, tlvTypeIdx, REG_ACCESS_METHOD_GET, typeMod);\
-        if (__mRc) {\
-            if (__mRc == ME_REG_ACCESS_RES_NOT_AVLBL) {\
-                return MCE_SUCCESS;\
-            }\
-            return errmsg("Failed to get %s settings: %s", tlvNameStr, m_err2str(__mRc));\
-        }\
-        tlvStructName##_unpack(&__tlvStruct, &__tlvBuff[0]);\
-        updateClassAttrFromTlv((void*)&__tlvStruct);\
-        _updated = true;\
-       return MCE_SUCCESS
-
-
-static void dealWithSignal()
-{
-    int sig;
-    sig = mft_signal_is_fired();
-    if (sig) {
-        // reset recieved signal
-        mft_signal_set_fired(0);
-        // retore prev handler
-        mft_signal_set_handling(0);
-        //raise signal to let the previous handle deal with it.
-        raise(sig);
-    }
-    mft_signal_set_handling(0);
-    return;
-}
-
-/*
- * Adrianc: TODO: create a SetTlv class and two child classess , for 4th/5th gen.
- *          each param class will have an instance of SetTlv class
- */
-
-MError mnvaCom4thGen(mfile* mf, u_int8_t* buff, u_int16_t len, u_int16_t tlvTypeIdx, reg_access_method_t method, u_int16_t typeMod)
-{
-    struct tools_open_mnva mnvaTlv;
-    memset(&mnvaTlv, 0, sizeof(struct tools_open_mnva));
-
-    mnvaTlv.nv_hdr.length = len >> 2; // length is in dwords
-    mnvaTlv.nv_hdr.type = tlvTypeIdx;
-    mnvaTlv.nv_hdr.type_mod = typeMod;
-    memcpy(mnvaTlv.data, buff, len);
-    MError rc;
-    // "suspend" signals as we are going to take semaphores
-    mft_signal_set_handling(1);
-    rc = reg_access_mnva(mf, method, &mnvaTlv);
-    dealWithSignal();
-    if (rc) {
-        return rc;
-    }
-    memcpy(buff, mnvaTlv.data, len);
-    return ME_OK;
-}
-
-MError mnvaCom5thGen(mfile* mf, u_int8_t* buff, u_int16_t len, u_int32_t tlvType, reg_access_method_t method, bool getDefault=false)
-{
-    struct tools_open_nvda mnvaTlv;
-    memset(&mnvaTlv, 0, sizeof(struct tools_open_nvda));
-
-    mnvaTlv.nv_hdr.length = len;
-    mnvaTlv.nv_hdr.rd_en = 0;
-    mnvaTlv.nv_hdr.over_en = 1;
-    if (getDefault) {
-        mnvaTlv.nv_hdr.default_ = 1;
-    }
-    // tlvType should be in the correct endianess
-    mnvaTlv.nv_hdr.type.tlv_type_dw.tlv_type_dw =  __be32_to_cpu(tlvType);
-    memcpy(mnvaTlv.data, buff, len);
-    MError rc;
-    // "suspend" signals as we are going to take semaphores
-    mft_signal_set_handling(1);
-    DEBUG_PRINT_SEND(&mnvaTlv, nvda);
-    rc = reg_access_nvda(mf, method, &mnvaTlv);
-    DEBUG_PRINT_RECIEVE(&mnvaTlv, nvda);
-    dealWithSignal();
-    if (rc) {
-        return rc;
-    }
-    memcpy(buff, mnvaTlv.data, len);
-    return ME_OK;
-}
-
-MError nvqcCom5thGen(mfile* mf, u_int32_t tlvType, bool& suppRead, bool& suppWrite)
-{
-    struct tools_open_nvqc nvqcTlv;
-    memset(&nvqcTlv, 0, sizeof(struct tools_open_nvqc));
-
-    // tlvType should be in the correct endianess
-    nvqcTlv.type.tlv_type_dw.tlv_type_dw = __be32_to_cpu(tlvType);
-    MError rc;
-    // "suspend" signals as we are going to take semaphores
-    mft_signal_set_handling(1);
-    rc = reg_access_nvqc(mf, REG_ACCESS_METHOD_GET, &nvqcTlv);
-    dealWithSignal();
-    if (rc) {
-        return rc;
-    }
-    suppRead = nvqcTlv.support_rd;
-    suppWrite = nvqcTlv.support_wr;
-    return ME_OK;
-}
-
-/***************************
- * Class implementations :
- ***************************/
-
-/*
- * RawCfgParams5thGen Class implementation
- */
-RawCfgParams5thGen::RawCfgParams5thGen() {
-    memset(&_nvdaTlv, 0, sizeof(struct tools_open_nvda));
-}
-
-int RawCfgParams5thGen::setRawData(const std::vector<u_int32_t>& tlvBuff) {
-    if(tlvBuff.size() * 4 > TOOLS_OPEN_NVDA_SIZE){
-        return errmsg(MCE_BAD_PARAM_VAL, "TLV size exceeds maximal limit. Maximum size is 0x%x bytes, actual length is 0x%x bytes", TOOLS_OPEN_NVDA_SIZE, (u_int32_t)(tlvBuff.size() * 4));
-    }
-    _tlvBuff = tlvBuff;
-    memset(&_nvdaTlv, 0, sizeof(struct tools_open_nvda));
-    std::vector<u_int32_t> tlvBuffBe = _tlvBuff;
-    tlvBuffBe.resize(TOOLS_OPEN_NVDA_SIZE >> 2);
-    memset(&tlvBuffBe[0], 0, TOOLS_OPEN_NVDA_SIZE);
-    tlvBuffBe.insert(tlvBuffBe.begin(), _tlvBuff.begin(), _tlvBuff.end());
-    for (std::vector<u_int32_t>::iterator it = tlvBuffBe.begin(); it != tlvBuffBe.end(); it++ ) {
-        *it = __cpu_to_be32(*it);
-    }
-    tools_open_nvda_unpack(&_nvdaTlv, ((u_int8_t*)(&tlvBuffBe[0])));
-    return verifyTlv();
-}
-
-int RawCfgParams5thGen::setOnDev(mfile* mf) {
-    int rc;
-    mft_signal_set_handling(1);
-    DEBUG_PRINT_SEND(&_nvdaTlv, nvda);
-    rc = reg_access_nvda(mf, REG_ACCESS_METHOD_SET, &_nvdaTlv);
-    DEBUG_PRINT_RECIEVE(&_nvdaTlv, nvda);
-    dealWithSignal();
-    if (rc) {
-        return errmsg("Failed to set raw TLV: %s", m_err2str((MError)rc));
-    }
-    return MCE_SUCCESS;
-}
-
-std::string RawCfgParams5thGen::dumpTlv() {
-    char str[1024] = {0};
-    snprintf(str, 1024, "Length: 0x%x\nVersion: %d\nOverrideEn: %d\nType: 0x%08x\nData: ", _nvdaTlv.nv_hdr.length,\
-            _nvdaTlv.nv_hdr.version, _nvdaTlv.nv_hdr.over_en, _nvdaTlv.nv_hdr.type.tlv_type_dw.tlv_type_dw);
-    for (size_t i=3; i < _tlvBuff.size(); i++) {
-        char numStr[64] = {0};
-        snprintf(numStr, 64, "0x%08x ", _tlvBuff[i]);
-        strcat(str, numStr);
-    }
-    strcat(str, "\n");
-    return str;
-}
-
-int RawCfgParams5thGen::verifyTlv() {
-    // check TLV length
-    int tlvLength = (_tlvBuff.size() - 3) << 2;
-    if (tlvLength != _nvdaTlv.nv_hdr.length) {
-        return errmsg(MCE_BAD_PARAM_VAL, "TLV size mismatch. reported length in TLV header: 0x%x. actual length: 0x%x", _nvdaTlv.nv_hdr.length, tlvLength);
-    }
-    return MCE_SUCCESS;
-}
-
-/*
- * CfgParams Class implementation :
- */
-
-CfgParams::CfgParams(mlxCfgType t, u_int32_t tlvT) {
-    // init the ErrMsg Class
-    std::map<int, std::string> errmap;
-    errmap[MCE_SUCCESS] = "Success";
-    errmap[MCE_FAILED] = "General Failure";
-    errmap[MCE_BAD_PARAMS] = "Bad parameters";
-    errmap[MCE_BAD_PARAM_VAL] = "Bad parameter value";
-    errmap[MCE_BAD_STATUS] = "General Failure";
-    errmap[MCE_GET_DEFAULT_PARAMS] = "Failed to get default params";
-
-    updateErrCodes(errmap);
-    type = t;
-    tlvTypeIdx = tlvT;
-    _updated = false;
-    _ignoreHardLimits = false;
-    _ignoreSoftLimits = false;
-    _devCapVec = 0;
-}
-
-int CfgParams::getDefaultParams4thGen(mfile* mf, struct tools_open_query_def_params_global* global_params)
-{
-    mft_signal_set_handling(1);
-    MError rc  = tcif_query_global_def_params(mf, global_params);
-    dealWithSignal();
-    if (rc) {
-        return errmsg(MCE_BAD_STATUS, "Failed to get default parameters: %s", tcif_err2str(rc));
-    }
-    return MCE_SUCCESS;
-}
-
-int CfgParams::getDefaultParams4thGen(mfile* mf, int port, struct tools_open_query_def_params_per_port* port_params)
-{
-    mft_signal_set_handling(1);
-    MError rc  = tcif_query_per_port_def_params(mf, port, port_params);
-    dealWithSignal();
-    if (rc) {
-        return errmsg(MCE_BAD_STATUS, "Failed to get default parameters: %s", tcif_err2str(rc));
-    }
-    return MCE_SUCCESS;
-}
-
-int CfgParams::getDefaultAndFromDev(mfile* mf)
-{
-    int rc;
-    rc = getDefaultParams(mf); CHECK_RC(rc);
-    rc = getFromDev(mf); CHECK_RC(rc);
-    return MCE_SUCCESS;
-}
-
-bool CfgParams::checkCfg(mfile* mf)
-{
-    if (!_ignoreHardLimits && !hardLimitCheck()) {
-        return false;
-    }
-    if (!_ignoreSoftLimits && !softLimitCheck(mf)) {
-        return false;
-    }
-    return true;
-}
-
-bool CfgParams::softLimitCheck(mfile* mf)
-{
-    // by default not implemented
-    (void)mf;
-    return true;
-}
-
-void CfgParams::setIgnoreSoftLimits(bool val)
-{
-    _ignoreSoftLimits = val;
-}
-void CfgParams::setIgnoreHardLimits(bool val)
-{
-    _ignoreHardLimits = val;
-}
-
-/*
- * BootSettingsExtParams Class implementation:
- */
-bool BootSettingsExtParams::hardLimitCheck()
-{
-    if(_ipVer > 3) {
-        errmsg("illegal IP Ver parameter value. can be 0..3");
-        return false;
-    }
-    return true;
-}
-
-void BootSettingsExtParams::setParams(u_int32_t ipVer)
-{
-    _ipVer = ipVer;
-}
-
-/*
- * BootSettingsExtParams4thGen Class implementation:
- */
-
-u_int32_t BootSettingsExtParams4thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Boot_Settings_Ext_IP_Ver_P1 ||
-            paramType == Mcp_Boot_Settings_Ext_IP_Ver_P2) {
-        return _ipVerDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-void BootSettingsExtParams4thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_Boot_Settings_Ext_IP_Ver_P1 ||
-            paramType == Mcp_Boot_Settings_Ext_IP_Ver_P2) {
-        _ipVer = val;
-    }
-}
-
-u_int32_t BootSettingsExtParams4thGen::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Boot_Settings_Ext_IP_Ver_P1 ||
-            paramType == Mcp_Boot_Settings_Ext_IP_Ver_P2) {
-        return _ipVer;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-bool BootSettingsExtParams4thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    (void)param;
-    struct tools_open_query_def_params_global params;
-    int rc;
-    rc = getDefaultParams4thGen(mf, &params);
-    if (rc) {
-        return false;
-    }
-    return params.boot_ip_ver;
-}
-
-int BootSettingsExtParams4thGen::getDefaultParams(mfile* mf)
-{
-    struct tools_open_query_def_params_per_port params;
-    int rc;
-    rc = getDefaultParams4thGen(mf, _port, &params);
-    if (rc) {
-        return false;
-    }
-    _ipVerDefault = params.boot_ip_ver;
-    setParams(_ipVerDefault);
-    return MCE_SUCCESS;
-}
-
-int BootSettingsExtParams4thGen::getFromDev(mfile* mf)
-{
-    if (_updated) {
-        return MCE_SUCCESS;
-    }
-    MError rc;
-    // prep tlv
-    u_int8_t buff[tools_open_sriov_size()];
-    struct tools_open_boot_settings_ext bootSettingsExtTlv;
-    memset(buff, 0, tools_open_boot_settings_ext_size());
-    memset(&bootSettingsExtTlv, 0, sizeof(struct tools_open_boot_settings_ext));
-    // pack it
-    tools_open_boot_settings_ext_pack(&bootSettingsExtTlv, buff);
-    // send it
-    DEBUG_PRINT_SEND(&bootSettingsExtTlv, boot_settings_ext);
-    rc = mnvaCom4thGen(mf, buff, tools_open_boot_settings_ext_size(), tlvTypeIdx, REG_ACCESS_METHOD_GET, _port);
-    // check rc
-    DEBUG_PRINT_RECIEVE(&bootSettingsExtTlv, boot_settings_ext);
-    if (rc) {// when attempting to get a nv_cfg tlv from device ME_REG_ACCESS_RES_NOT_AVLBL means - no valid
-             // tlv found. i.e default configuration are on.
-        if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) {
-            return MCE_SUCCESS;
-        }
-        return errmsg(MCE_BAD_STATUS, "Failed to get Boot Settings Extras configuration: %s", m_err2str(rc));
-    }
-    // unpack and update
-    tools_open_boot_settings_ext_unpack(&bootSettingsExtTlv, buff);
-    setParams(bootSettingsExtTlv.ip_ver);
-    _updated = true;
-
-    return MCE_SUCCESS;
-}
-
-int BootSettingsExtParams4thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    if (_ipVer == MLXCFG_UNKNOWN) {
-        return errmsg("%s please specify all parameters for Boot Settings Extras.", err() ? err() : "");
-    }
-    if (!ignoreCheck && !checkCfg(mf)) {
-        return MCE_BAD_PARAMS;
-    }
-
-    // prep tlv
-    MError ret;
-    u_int8_t buff[tools_open_boot_settings_ext_size()];
-    struct tools_open_boot_settings_ext bootSettingsExtTlv;
-
-    memset(buff, 0, tools_open_boot_settings_ext_size());
-    memset(&bootSettingsExtTlv, 0, sizeof(struct tools_open_boot_settings_ext));
-    bootSettingsExtTlv.ip_ver = _ipVer;
-    // pack it
-    tools_open_boot_settings_ext_pack(&bootSettingsExtTlv, buff);
-    // send it
-    ret = mnvaCom4thGen(mf, buff, tools_open_boot_settings_ext_size(), tlvTypeIdx, REG_ACCESS_METHOD_SET, _port);
-    // check rc
-    if (ret) {
-        return errmsg("failed to set Boot Settings Extras params: %s",m_err2str(ret));
-    }
-    _updated = false;
-    return MCE_SUCCESS;
-}
-
-/*
- * BootSettingsExtParams5thGen Class implementation:
- */
-
-u_int32_t BootSettingsExtParams5thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Boot_Settings_Ext_IP_Ver) {
-        return _ipVerDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-void BootSettingsExtParams5thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_Boot_Settings_Ext_IP_Ver) {
-        _ipVer = val;
-    }
-}
-
-u_int32_t BootSettingsExtParams5thGen::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Boot_Settings_Ext_IP_Ver) {
-        return _ipVer;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t BootSettingsExtParams5thGen::getBootSettingsExtCapabilitiesTlvTypeBe()
-{
-    struct tools_open_global_type type;
-    u_int32_t tlvType = 0;
-
-    type.param_class = CLASS_GLOBAL;
-    type.param_idx = BOOT_SETTINGS_EXTRAS_GEN5_CAP;
-    tools_open_global_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-bool BootSettingsExtParams5thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    (void)param;
-    u_int8_t tlvCapBuff[TOOLS_OPEN_OPTION_ROM_CAPABILITY_SIZE] = {0};
-    struct tools_open_option_rom_capability optionRomCapabilitesTlv;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getBootSettingsExtCapabilitiesTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        return false;
-    }
-    memset(&optionRomCapabilitesTlv, 0, sizeof(optionRomCapabilitesTlv));
-    rc = mnvaCom5thGen(mf, &tlvCapBuff[0], TOOLS_OPEN_OPTION_ROM_CAPABILITY_SIZE, getBootSettingsExtCapabilitiesTlvTypeBe(), REG_ACCESS_METHOD_GET);
-    if (rc) {
-        return errmsg("Failed to get Boot Settings Ext capabilities parameter. %s", m_err2str(rc));
-    }
-    tools_open_option_rom_capability_unpack(&optionRomCapabilitesTlv, tlvCapBuff);
-    return optionRomCapabilitesTlv.ip_ver;
-}
-
-int BootSettingsExtParams5thGen::getFromDev(mfile* mf)
-{
-    GET_FROM_DEV_5TH_GEN(mf, tools_open_boot_settings_ext, "Boot Settings Ext");
-}
-
-void BootSettingsExtParams5thGen::updateClassAttrFromDefaultParams()
-{
-    setParams(_ipVerDefault);
-}
-
-int BootSettingsExtParams5thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    SET_ON_DEV_5TH_GEN(mf, ignoreCheck, tools_open_boot_settings_ext, "Boot Settings Ext");
-}
-
-u_int32_t BootSettingsExtParams5thGen::getTlvTypeBe()
-{
-    struct tools_open_per_host_type type;
-    u_int32_t tlvType = 0;
-
-    type.param_class = CLASS_PER_HOST;
-    type.param_idx = tlvTypeIdx;
-    type.function = 0; // currently support only host 0 (FW should fill this field with correct func)
-    type.host = 0; // currently support only host 0 (FW should fill this field with correct host)
-    tools_open_per_host_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-void BootSettingsExtParams5thGen::updateTlvFromClassAttr(void* tlv)
-{
-    struct tools_open_boot_settings_ext* bootSettingsExt = (struct tools_open_boot_settings_ext*)tlv;
-    bootSettingsExt->ip_ver = _ipVer;
-    return;
-}
-void BootSettingsExtParams5thGen::updateClassAttrFromTlv(void* tlv)
-{
-    struct tools_open_boot_settings_ext* bootSettingsExt = (struct tools_open_boot_settings_ext*)tlv;
-    setParams(bootSettingsExt->ip_ver);
-    return;
-}
-
-void BootSettingsExtParams5thGen::updateClassDefaultAttrFromTlv(void* tlv)
-{
-    struct tools_open_boot_settings_ext* bootSettingsExt = (struct tools_open_boot_settings_ext*)tlv;
-    _ipVerDefault = bootSettingsExt->ip_ver;
-    return;
-}
-
-int BootSettingsExtParams5thGen::getDefaultParamsAux(mfile* mf)
-{
-    GET_DEFAULT_5TH_GEN(mf, tools_open_boot_settings_ext, "Boot Settings Extras");
-}
-
-int BootSettingsExtParams5thGen::getDefaultParams(mfile* mf)
-{
-    int rc = getDefaultParamsAux(mf);
-    if(!rc || _ipVerDefault == MLXCFG_UNKNOWN){
-        _ipVerDefault = 0;
-        setParams(_ipVerDefault);
-    }
-    return MCE_SUCCESS;
-}
-
-/*
- * SriovParams4thGen Class implementation:
- */
-
-void SriovParams4thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_Sriov_En) {
-        _sriovEn = val;
-    } else if (paramType == Mcp_Num_Of_Vfs) {
-        _numOfVfs = val;
-    }
-}
-
-u_int32_t SriovParams4thGen::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Sriov_En) {
-        return _sriovEn;
-    } else if (paramType == Mcp_Num_Of_Vfs) {
-        return _numOfVfs;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t SriovParams4thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Sriov_En) {
-        return _sriovEnDefault;
-    } else if (paramType == Mcp_Num_Of_Vfs) {
-        return _numOfVfsDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-bool SriovParams4thGen::hardLimitCheck()
-{
-    if ((_numOfVfs > _maxVfs)) {
-        errmsg("Number of VFs exceeds limit (%d).", _maxVfs);
-        return false;
-    }
-
-    if (_sriovEn != 0 && _sriovEn != 1) {
-        errmsg("illegal SRIOV_EN parameter value. (should be 0 or 1)");
-        return false;
-    }
-    return true;
-}
-
-/*
- * SriovParam4thGen Class implementation
- */
-
-bool SriovParams4thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    (void)mf;
-    (void)param;
-    return _devCapVec & SRIOV_MASK;
-}
-
-int SriovParams4thGen::getDefaultParams(mfile* mf)
-{
-    struct tools_open_query_def_params_global global_params;
-    int rc;
-    rc = updateMaxVfs(mf); CHECK_RC(rc);
-    rc = getDefaultParams4thGen(mf, &global_params);
-    if (rc == MCE_SUCCESS) {
-        _sriovEnDefault = global_params.sriov_en;
-        _numOfVfsDefault = global_params.num_vfs;
-        setParams(_sriovEnDefault, _numOfVfsDefault);
-    } else {
-        rc = MCE_GET_DEFAULT_PARAMS;
-    }
-    return rc;
-}
-
-void SriovParams4thGen::setParams(u_int32_t sriovEn, u_int32_t numOfVfs)
-{
-    _sriovEn = sriovEn;
-    _numOfVfs = numOfVfs;
-}
-
-int SriovParams4thGen::getFromDev(mfile* mf)
-{
-    if (_updated) {
-        return MCE_SUCCESS;
-    }
-    MError rc;
-    // prep tlv
-    u_int8_t buff[tools_open_sriov_size()];
-    struct tools_open_sriov sriovTlv;
-    memset(buff, 0, tools_open_sriov_size());
-    memset(&sriovTlv, 0, sizeof(struct tools_open_sriov));
-    // pack it
-    tools_open_sriov_pack(&sriovTlv, buff);
-    // send it
-    DEBUG_PRINT_SEND(&sriovTlv, sriov);
-    rc = mnvaCom4thGen(mf, buff, tools_open_sriov_size(), tlvTypeIdx, REG_ACCESS_METHOD_GET, 0);
-    // check rc
-    DEBUG_PRINT_RECIEVE(&sriovTlv, sriov);
-    if (rc) {// when attempting to get a nv_cfg tlv from device ME_REG_ACCESS_RES_NOT_AVLBL means - no valid
-             // tlv found. i.e default configuration are on.
-        if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) {
-            return MCE_SUCCESS;
-        }
-        return errmsg(MCE_BAD_STATUS, "Failed to get SRIOV configuration: %s", m_err2str(rc));
-    }
-    // unpack and update
-    tools_open_sriov_unpack(&sriovTlv, buff);
-    setParams(sriovTlv.sriov_en, sriovTlv.total_vfs);
-    _updated = true;
-
-    return MCE_SUCCESS;
-}
-
-int SriovParams4thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    if (_sriovEn == MLXCFG_UNKNOWN || _numOfVfs == MLXCFG_UNKNOWN) {
-        return errmsg("%s please specify all parameters for SRIOV.", err() ? err() : "");
-    }
-    if (!ignoreCheck && !checkCfg(mf)) {
-        return MCE_BAD_PARAMS;
-    }
-
-    // prep tlv
-    MError ret;
-    u_int8_t buff[tools_open_sriov_size()];
-    struct tools_open_sriov sriovTlv;
-
-    memset(buff, 0, tools_open_sriov_size());
-    memset(&sriovTlv, 0, sizeof(struct tools_open_sriov));
-
-    sriovTlv.sriov_en = _sriovEn;
-    sriovTlv.total_vfs = _numOfVfs;
-    // pack it
-    tools_open_sriov_pack(&sriovTlv, buff);
-    // send it
-    ret = mnvaCom4thGen(mf, buff, tools_open_sriov_size(), tlvTypeIdx, REG_ACCESS_METHOD_SET, 0);
-    // check rc
-    if (ret) {
-        return errmsg("failed to set SRIOV params: %s",m_err2str(ret));
-    }
-    _updated = false;
-    return MCE_SUCCESS;
-}
-
-int SriovParams4thGen::updateMaxVfs(mfile* mf)
-{
-    u_int64_t data = 0;
-    int rc = tcif_query_dev_cap(mf, MAX_VFS_ADDR, &data);
-    if (rc) {
-        return errmsg("failed to query device capabilities: %s", m_err2str((MError)rc));
-    }
-    _maxVfs = (u_int32_t)(data & 0xff);
-    if (_maxVfs == 0) { // defined in CX PRM , if max_func_idx=0 then all functions(128) are operational
-        _maxVfs = 128;
-    }
-    _maxVfs--; // remove 1 physical function
-    return MCE_SUCCESS;
-}
-
-bool SriovParams4thGen::softLimitCheck(mfile* mf)
-{
-    u_int32_t barSz = 0;
-    BarSzParams4thGen barParams;
-
-    if (!mf) {
-        return false;
-    }
-
-    if (barParams.getDefaultAndFromDev(mf)) {
-        return false;
-    }
-
-    if (_sriovEn == 0) {
-        return true;
-    }
-
-    barSz = barParams.getParam(Mcp_Log_Bar_Size);
-
-    if (barSz == MLXCFG_UNKNOWN) {
-        return errmsg("Failed to get the bar size from device");
-    }
-    // this is the default log2 bar size , we require (numOfVfs+1)*(2^log_uar_bar) <= 512 or else the node might not boot
-    double TotalMem = (_numOfVfs + 1)*(1 << barSz); // 1 for physical func
-
-    if ((TotalMem > 512)){
-        unsigned int maxAlowedVfs =static_cast<unsigned int>(512/(1 << barSz)) - 1;
-        errmsg("illegal SRIOV parameter value. Maximal number of VFs: %d", maxAlowedVfs < _maxVfs ? maxAlowedVfs : _maxVfs);
-        return false;
-    }
-    return true;
-}
-
-
-/*
- * WolParams Class implementation :
- */
-
-bool WolParams::hardLimitCheck()
-{
-    if (_wolMagicEn == 0 || _wolMagicEn == 1 ) {
-        return true;
-    }
-    errmsg("illegal WOL parameter value. can be either 0 or 1.");
-    return false;
-}
-
-void WolParams::setParams(u_int32_t wolMagicEn)
-{
-    _wolMagicEn = wolMagicEn;
-}
-
-/*
- * WolParams4thGen Class implementation :
- */
-
-void WolParams4thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if ((paramType == Mcp_Wol_Magic_En_P1  && _port == 1) || (paramType == Mcp_Wol_Magic_En_P2 && _port == 2) ) {
-        _wolMagicEn = val;
-    }
-}
-
-u_int32_t WolParams4thGen::getParam(mlxCfgParam paramType)
-{
-    if ((paramType == Mcp_Wol_Magic_En_P1  && _port == 1) || (paramType == Mcp_Wol_Magic_En_P2 && _port == 2)) {
-        return _wolMagicEn;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t WolParams4thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if ((paramType == Mcp_Wol_Magic_En_P1  && _port == 1) || (paramType == Mcp_Wol_Magic_En_P2 && _port == 2)) {
-        return _wolMagicEnDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-bool WolParams4thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    (void)mf;
-    (void)param;
-    return ((_devCapVec & WOL_P1_MASK) && _port == 1) || ((_devCapVec & WOL_P2_MASK) && _port == 2 );
-}
-
-int WolParams4thGen::getDefaultParams(mfile* mf)
-{
-    struct tools_open_query_def_params_per_port port_params;
-    int rc = getDefaultParams4thGen(mf, _port , &port_params);
-    if (rc == MCE_SUCCESS) {
-        _wolMagicEnDefault = port_params.default_en_wol_magic;
-        setParams(_wolMagicEnDefault);
-    } else {
-        rc = MCE_GET_DEFAULT_PARAMS;
-    }
-    return rc;
-}
-
-int WolParams4thGen::getFromDev(mfile* mf)
-{
-    if (_updated) {
-        return MCE_SUCCESS;
-    }
-    MError rc;
-    // prep tlv
-    u_int8_t buff[tools_open_wol_size()];
-    struct tools_open_wol wolTlv;
-    memset(buff, 0, tools_open_wol_size());
-    memset(&wolTlv, 0, sizeof(struct tools_open_wol));
-    // pack it
-    tools_open_wol_pack(&wolTlv, buff);
-    // send it
-    rc = mnvaCom4thGen(mf, buff, tools_open_wol_size(), tlvTypeIdx, REG_ACCESS_METHOD_GET, _port);
-    // check rc
-    if (rc) {
-        if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) {
-            return MCE_SUCCESS;
-        }
-        return errmsg("Failed to get WOL port%d configuration: %s", _port, m_err2str(rc));
-    }
-    // unpack and update
-    tools_open_wol_unpack(&wolTlv, buff);
-    setParams(wolTlv.en_wol_magic);
-    _updated = true;
-
-    return MCE_SUCCESS;
-}
-
-int WolParams4thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    if (_wolMagicEn == MLXCFG_UNKNOWN) {
-        return errmsg("%s please specify all the parameters for WOL.", err()? err() : "");
-    }
-    if (!ignoreCheck && !checkCfg()) {
-        return MCE_BAD_PARAMS;
-    }
-    // prep tlv
-    MError ret;
-    u_int8_t buff[tools_open_wol_size()];
-    struct tools_open_wol wolTlv;
-
-    memset(buff, 0, tools_open_wol_size());
-    memset(&wolTlv, 0, sizeof(struct tools_open_wol));
-
-    wolTlv.en_wol_magic= _wolMagicEn;
-    // pack it
-    tools_open_wol_pack(&wolTlv, buff);
-    // send it
-    ret = mnvaCom4thGen(mf, buff, tools_open_wol_size(), tlvTypeIdx, REG_ACCESS_METHOD_SET, _port);
-    // check rc
-    if (ret) {
-        return errmsg("failed to set WOL params for port%d: %s", _port, m_err2str(ret));
-    }
-    _updated = false;
-    return MCE_SUCCESS;
-}
-
-/*
- * WolParams5thGen Class implementation :
- */
-
-void WolParams5thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_Wol_Magic_En ) {
-        _wolMagicEn = val;
-    }
-}
-
-u_int32_t WolParams5thGen::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Wol_Magic_En) {
-        return _wolMagicEn;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t WolParams5thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Wol_Magic_En) {
-        return _wolMagicEnDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-bool WolParams5thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    (void)param;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get Wake On LAN parameter capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    return (suppRead && suppWrite);
-}
-
-int WolParams5thGen::getDefaultParams(mfile* mf)
-{
-    GET_DEFAULT_5TH_GEN(mf, tools_open_wol, "Wake On LAN");
-}
-
-void WolParams5thGen::updateClassAttrFromDefaultParams()
-{
-    setParams(_wolMagicEnDefault);
-}
-
-int WolParams5thGen::getFromDev(mfile* mf)
-{
-    GET_FROM_DEV_5TH_GEN(mf, tools_open_wol, "Wake On LAN");
-}
-
-int WolParams5thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    SET_ON_DEV_5TH_GEN(mf, ignoreCheck, tools_open_wol, "Wake On LAN");
-}
-
-u_int32_t WolParams5thGen::getTlvTypeBe()
-{
-    struct tools_open_per_host_type type;
-    u_int32_t tlvType = 0;
-
-    type.param_class = CLASS_PER_HOST;
-    type.param_idx = tlvTypeIdx;
-    type.function = 0; // currently support only host 0 (FW should fill this field with correct func)
-    type.host = 0; // currently support only host 0 (FW should fill this field with correct host)
-    tools_open_per_host_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-void WolParams5thGen::updateTlvFromClassAttr(void* tlv)
-{
-    struct tools_open_wol* wolTlv = (struct tools_open_wol*)tlv;
-    wolTlv->en_wol_magic = _wolMagicEn;
-    return;
-}
-void WolParams5thGen::updateClassAttrFromTlv(void* tlv)
-{
-    struct tools_open_wol* wolTlv = (struct tools_open_wol*)tlv;
-    setParams(wolTlv->en_wol_magic);
-    return;
-}
-
-void WolParams5thGen::updateClassDefaultAttrFromTlv(void* tlv)
-{
-    struct tools_open_wol* wolTlv = (struct tools_open_wol*)tlv;
-    _wolMagicEnDefault = wolTlv->en_wol_magic;
-    return;
-}
-/*
- * BarSzParams Class implementation :
- */
-
-
-void BarSzParams::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_Log_Bar_Size) {
-        _logBarSz = val;
-    }
-}
-
-u_int32_t BarSzParams::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Log_Bar_Size) {
-        return _logBarSz;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t BarSzParams::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Log_Bar_Size) {
-        return _logBarSzDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-bool BarSzParams::hardLimitCheck()
-{
-    if (_logBarSz > _maxLogBarSz ) {
-        errmsg("given bar size is too large, max allowed log2 bar size: 0x%x", _maxLogBarSz);
-        return false;
-    }
-    return true;
-}
-
-void BarSzParams::setParams(u_int32_t logBarSz)
-{
-    _logBarSz = logBarSz;
-}
-/*
- * BarSzParams4thGen Class implementation :
- */
-
-bool BarSzParams4thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    (void)mf;
-    (void)param;
-    return _devCapVec & BAR_SZ_MASK ;
-}
-
-int BarSzParams4thGen::getDefaultParams(mfile* mf)
-{
-    struct tools_open_query_def_params_global global_params;
-    int rc = getDefaultParams4thGen(mf, &global_params);
-    if ((rc == MCE_SUCCESS) & 0) { //TODO: adrianc: remove the & 0 when FW displays thesee parameters correctly in QUERY_DEF_PARAMS command
-        _logBarSzDefault = global_params.uar_bar_size;
-        _maxLogBarSz = global_params.max_uar_bar_size;
-        setParams(_logBarSzDefault);
-    } else {
-        // attempt to take from query_dev_cap
-        rc = getDefaultBarSz(mf);
-    }
-    return rc;
-}
-
-int BarSzParams4thGen::getDefaultBarSz(mfile* mf)
-{
-    u_int64_t data = 0;
-    MError rc = tcif_query_dev_cap(mf, MAX_BAR_SZ_ADDR, &data);
-    if (rc) {
-        return errmsg(MCE_BAD_STATUS,"Failed to query device capabilities. %s", tcif_err2str(rc));
-    }
-
-    _maxLogBarSz = EXTRACT64(data, 3, 6);
-
-    rc = tcif_query_dev_cap(mf, DEFAULT_BAR_SZ_ADDR, &data);
-    if (rc) {
-        return errmsg(MCE_BAD_STATUS,"Failed to query device capabilities. %s", tcif_err2str(rc));
-    }
-
-    _logBarSzDefault = EXTRACT64(data, 16, 6) + 1; //adrianc: this field reports only half of the bar size (i.e without the blue flame)
-    setParams(_logBarSzDefault);
-    return MCE_SUCCESS;
-}
-
-int BarSzParams4thGen::getFromDev(mfile* mf)
-{
-    if (_updated) {
-        return MCE_SUCCESS;
-    }
-    MError rc;
-    // prep tlv
-    u_int8_t buff[tools_open_bar_size_size()];
-    struct tools_open_bar_size barSzTlv;
-    memset(buff, 0, tools_open_bar_size_size());
-    memset(&barSzTlv, 0, sizeof(struct tools_open_bar_size));
-    // pack it
-    tools_open_bar_size_pack(&barSzTlv, buff);
-    // send it
-    rc = mnvaCom4thGen(mf, buff, tools_open_bar_size_size(), tlvTypeIdx, REG_ACCESS_METHOD_GET, 0);
-    // check rc
-    if (rc) {
-        if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) {
-            return MCE_SUCCESS;
-        }
-        return errmsg("Failed to get BAR size configuration: %s", m_err2str(rc));
-    }
-    // unpack and update
-    tools_open_bar_size_unpack(&barSzTlv, buff);
-    setParams(barSzTlv.log_uar_bar_size);
-    _updated = true;
-
-    return MCE_SUCCESS;
-}
-
-int BarSzParams4thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    if (_logBarSz == MLXCFG_UNKNOWN) {
-        return errmsg("%s please specify all the parameters for BAR size.", err() ? err() : "");
-    }
-
-    if (!ignoreCheck && !checkCfg(mf)) {
-        return MCE_BAD_PARAMS;
-    }
-
-    // prep tlv
-    MError ret;
-    u_int8_t buff[tools_open_bar_size_size()];
-    struct tools_open_bar_size barSzTlv;
-
-    memset(buff, 0, tools_open_bar_size_size());
-    memset(&barSzTlv, 0, sizeof(struct tools_open_bar_size));
-
-    barSzTlv.log_uar_bar_size= _logBarSz;
-    // pack it
-    tools_open_bar_size_pack(&barSzTlv, buff);
-    // send it
-    ret = mnvaCom4thGen(mf, buff, tools_open_bar_size_size(), tlvTypeIdx, REG_ACCESS_METHOD_SET, 0);
-    // check rc
-    if (ret) {
-        return errmsg("failed to set BAR size params: %s",m_err2str(ret));
-    }
-    _updated = false;
-    return MCE_SUCCESS;
-}
-
-bool BarSzParams4thGen::softLimitCheck(mfile* mf)
-{
-    u_int32_t numOfVfs = 0;
-    int sriovEn;
-    SriovParams4thGen sriovParams;
-
-    if (!mf) {
-        return false;
-    }
-
-    if (sriovParams.getDefaultAndFromDev(mf)) {
-        errmsg("Failed to get SRIOV parameters from device: %s", sriovParams.err());
-        return false;
-    }
-
-    numOfVfs = sriovParams.getParam(Mcp_Num_Of_Vfs);
-    sriovEn = sriovParams.getParam(Mcp_Sriov_En);
-
-    if (numOfVfs== MLXCFG_UNKNOWN || numOfVfs == MLXCFG_UNKNOWN) {
-        errmsg("Illegal SRIOV parameters values");
-        return false;
-    }
-
-    if (sriovEn == 0) {
-        return true;
-    }
-    // this is the default log2 bar size , we require numOfVfs*(2^log_uar_bar) <= 512 or else the node might not boot
-    double TotalMem = (numOfVfs+1)*(1 << _logBarSz);
-    //printf("-D- num_of_vfs*2^(bar_sz+1) = %d*2^%ld = %d\n", _numOfVfs, data, (int)(_numOfVfs*(std::pow((double)2, (int)data))));
-    //printf("-D- maxVfs(default set by fw) : %d\n", _maxVfs);
-
-    if (TotalMem > 512){
-        unsigned int maxAlowedLogBarSz =static_cast<unsigned int>(log2((512/(numOfVfs + 1 ))));
-        errmsg("illegal Bar Size parameter value. Maximal allowed bar size: %d", maxAlowedLogBarSz < _maxLogBarSz ? maxAlowedLogBarSz : _maxLogBarSz);
-        return false;
-    }
-    return true;
-}
-
-
-/*
- *  VpiParams Class implementation :
- */
-
-int VpiParams::getFromDevComPre()
-{
-    // prep tlv
-    _tlvBuff.resize(TOOLS_OPEN_VPI_SETTINGS_SIZE);
-    memset(&_tlvBuff[0], 0, TOOLS_OPEN_VPI_SETTINGS_SIZE);
-    memset(&_vpiTlv, 0, sizeof(struct tools_open_vpi_settings));
-    // pack it
-    tools_open_vpi_settings_pack(&_vpiTlv, &_tlvBuff[0]);
-    return MCE_SUCCESS;
-}
-
-int VpiParams::getFromDevComPost(MError mnvaComRC)
-{
-    if (mnvaComRC) {
-         if (mnvaComRC == ME_REG_ACCESS_RES_NOT_AVLBL) {
-             return MCE_SUCCESS;
-         }
-         return errmsg("Failed to get VPI port%d configuration: %s", _port, m_err2str(mnvaComRC));
-     }
-     // unpack and update
-     tools_open_vpi_settings_unpack(&_vpiTlv, &_tlvBuff[0]);
-     setParams(_vpiTlv.network_link_type, _vpiTlv.default_link_type);
-     _updated = true;
-     return MCE_SUCCESS;
-
-}
-
-void VpiParams::setParams(u_int32_t linkType, u_int32_t defaultLinkType)
-{
-    _linkType = linkType;
-    _defaultLinkType = defaultLinkType;
-}
-
-int VpiParams::setOnDevComPre(bool ignoreCheck)
-{
-    if (_linkType == MLXCFG_UNKNOWN || _defaultLinkType == MLXCFG_UNKNOWN) {
-        return errmsg("%s please specify all the parameters for VPI settings.", err() ? err() : "");
-    }
-    if (!ignoreCheck && !checkCfg()) {
-        return MCE_BAD_PARAMS;
-    }
-    _tlvBuff.resize(TOOLS_OPEN_VPI_SETTINGS_SIZE);
-     memset(&_tlvBuff[0], 0, _tlvBuff.size());
-     memset(&_vpiTlv, 0, sizeof(struct tools_open_vpi_settings));
-     _vpiTlv.network_link_type = _linkType;
-     _vpiTlv.default_link_type = _defaultLinkType;
-     // pack it
-     tools_open_vpi_settings_pack(&_vpiTlv, &_tlvBuff[0]);
-    return MCE_SUCCESS;
-}
-
-int VpiParams::setOnDevComPost(MError mnvaComRC)
-{
-    if (mnvaComRC) {
-        return errmsg("failed to set VPI port%d params: %s", _port, m_err2str(mnvaComRC));
-    }
-    _updated = false;
-    return MCE_SUCCESS;
-}
-
-/*
- *  VpiParams4thGen Class implementation :
- */
-void VpiParams4thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) {
-        _linkType = val;
-    }
-}
-
-u_int32_t VpiParams4thGen::getParam(mlxCfgParam paramType)
-{
-    if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) {
-        return _linkType;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t VpiParams4thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) {
-        return _linkTypeDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-bool VpiParams4thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    (void)mf;
-    (void)param;
-    return ((_devCapVec & VPI_P1_MASK) && _port == 1) || ((_devCapVec & VPI_P2_MASK) && _port == 2);
-}
-
-int VpiParams4thGen::getDefaultParams(mfile* mf)
-{
-    struct tools_open_query_def_params_per_port port_params;
-    _defaultLinkTypeDefault = 0; // not used for 4th gen devices , we give it a default value
-    int rc = getDefaultParams4thGen(mf, _port , &port_params);
-    if (rc) {
-        return MCE_GET_DEFAULT_PARAMS;
-    }
-    if (port_params.default_network_link_type) {
-        _linkTypeDefault = port_params.default_network_link_type;
-    }
-    setParams(_linkTypeDefault, _defaultLinkTypeDefault);
-    return MCE_SUCCESS;
-}
-
-int VpiParams4thGen::getFromDev(mfile* mf)
-{
-    MError mRc;
-    int rc;
-
-    if (_updated) {
-        return MCE_SUCCESS;
-    }
-    if((rc = getFromDevComPre())) {
-        return rc;
-    }
-    mRc = mnvaCom4thGen(mf, &_tlvBuff[0], TOOLS_OPEN_VPI_SETTINGS_SIZE, tlvTypeIdx, REG_ACCESS_METHOD_GET, _port);
-    return getFromDevComPost(mRc);
-}
-
-int VpiParams4thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    MError mRc;
-    int rc;
-
-    if ((rc = setOnDevComPre(ignoreCheck))) {
-        return rc;
-    }
-    mRc = mnvaCom4thGen(mf, &_tlvBuff[0], TOOLS_OPEN_VPI_SETTINGS_SIZE, tlvTypeIdx, REG_ACCESS_METHOD_SET, _port);
-    return setOnDevComPost(mRc);
-}
-
-bool VpiParams4thGen::hardLimitCheck()
-{
-    if (_linkType == 1 || _linkType == 2 || _linkType == 3 ) {
-        return true;
-    }
-    errmsg("illegal VPI link type (should be 1|2|3).");
-    return false;
-}
-
-/*
- *  VpiParams5thGen Class implementation :
- */
-void VpiParams5thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) {
-        _defaultLinkType = val;
-    }
-}
-
-u_int32_t VpiParams5thGen::getParam(mlxCfgParam paramType)
-{
-    if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) {
-        return _defaultLinkType;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t VpiParams5thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) {
-        return _defaultLinkTypeDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t VpiParams5thGen::getTlvTypeBe()
-{
-    struct tools_open_per_port_type type;
-    u_int32_t tlvType = 0;
-
-    type.param_class = CLASS_PHYS_PORT;
-    type.param_idx = tlvTypeIdx;
-    type.port = _port;
-    tools_open_per_port_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-bool VpiParams5thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    // get mtcr functions for this device (physical)
-    // compare with port
-    // send nvqc and check
-    (void)param;
-    MError rc;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get VPI params capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    return suppRead && suppWrite;
-}
-
-int VpiParams5thGen::getDefaultParams(mfile* mf)
-{
-    MError mRc;
-    int rc;
-
-    // if configuration is supported then network link type must be 3
-    _linkTypeDefault = 3;
-
-    if((rc = getFromDevComPre())) {
-        return rc;
-    }
-
-    mRc = mnvaCom5thGen(mf, &_tlvBuff[0], TOOLS_OPEN_VPI_SETTINGS_SIZE, getTlvTypeBe(), REG_ACCESS_METHOD_GET, true);
-
-    if (mRc) {
-        if (mRc == ME_REG_ACCESS_RES_NOT_AVLBL) {
-            return MCE_SUCCESS;
-        }
-        return errmsg("Failed to get VPI port%d configuration: %s", _port, m_err2str(mRc));
-    }
-
-    // unpack and update
-    tools_open_vpi_settings_unpack(&_vpiTlv, &_tlvBuff[0]);
-    _linkTypeDefault = _vpiTlv.network_link_type;
-    _defaultLinkTypeDefault = _vpiTlv.default_link_type;
-    setParams(_linkTypeDefault, _defaultLinkTypeDefault);
-    return MCE_SUCCESS;
-
-}
-
-int VpiParams5thGen::getFromDev(mfile* mf)
-{
-    MError mRc;
-    int rc;
-
-    if (_updated) {
-        return MCE_SUCCESS;
-    }
-    if((rc = getFromDevComPre())) {
-        return rc;
-    }
-    mRc = mnvaCom5thGen(mf, &_tlvBuff[0], TOOLS_OPEN_VPI_SETTINGS_SIZE, getTlvTypeBe(), REG_ACCESS_METHOD_GET);
-    rc = getFromDevComPost(mRc);
-
-    _updated = true;
-
-    return rc;
-}
-
-int VpiParams5thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    MError mRc;
-    int rc;
-
-    if ((rc = setOnDevComPre(ignoreCheck))) {
-        return rc;
-    }
-    mRc = mnvaCom5thGen(mf, &_tlvBuff[0], TOOLS_OPEN_VPI_SETTINGS_SIZE, getTlvTypeBe(), REG_ACCESS_METHOD_SET);
-    return setOnDevComPost(mRc);
-}
-
-bool VpiParams5thGen::hardLimitCheck()
-{
-    if (_defaultLinkType == 1 || _defaultLinkType == 2 ) {
-        return true;
-    }
-    errmsg("illegal VPI link type (should be 1|2).");
-    return false;
-}
-
-/*
- * PciParams5thGen Class implementation:
- */
-
-bool PciParams5thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getPciCapabilitiesTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get PCI capabilities parameter capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!suppRead) {
-        return false;
-    }
-
-    if (getDefaultsAndCapabilities(mf) != MCE_SUCCESS) {
-        return false;
-    }
-
-    rc = nvqcCom5thGen(mf, getPciSettingsTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get PCI settings parameter capabilities. %s", m_err2str(rc));
-        return false;
-    }
-
-    if (!(suppRead && suppWrite)) {
-        return false;
-    }
-
-    switch(param) {
-    case Mcp_Sriov_En:
-    case Mcp_Num_Of_Vfs:
-        return _sriovSupported;
-    case Mcp_Fpp_En:
-        return _fppSupported;
-    case Mcp_Last:
-        return true;
-    case Mcp_PF_Log_Bar_Size:
-        return _pfLogBarSizeSuppored;
-    case Mcp_VF_Log_Bar_Size:
-        return _vfLogBarSizeSuppored;
-    case Mcp_Num_Pf_Msix:
-        return _numPfMsixSupported;
-    case Mcp_Num_Vf_Msix:
-        return _numVfMsixSupported;
-    default:
-        return false;
-    }
-}
-
-void PciParams5thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_Sriov_En) {
-        _sriovEn = val;
-        _userSpecifiedSRIOV = true;
-    } else if (paramType == Mcp_Num_Of_Vfs) {
-        _numOfVfs = val;
-        _userSpecifiedSRIOV = true;
-    } else if (paramType == Mcp_Fpp_En) {
-        _fppEn = val;
-        _userSpecifiedFPP = true;
-    } else if(paramType == Mcp_PF_Log_Bar_Size) {
-        _pfLogBarSize = val;
-        _userSpecifiedPfLogBarSize = true;
-    } else if(paramType == Mcp_VF_Log_Bar_Size) {
-        _vfLogBarSize = val;
-        _userSpecifiedVfLogBarSize = true;
-    } else if(paramType == Mcp_Num_Pf_Msix) {
-        _numPfMsix = val;
-        _userSpecifiedNumPfMsix = true;
-    } else if(paramType == Mcp_Num_Vf_Msix) {
-        _numVfMsix = val;
-        _userSpecifiedNumVfMsix = true;
-    }
-}
-
-u_int32_t PciParams5thGen::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Sriov_En) {
-        return _sriovEn;
-    } else if (paramType == Mcp_Num_Of_Vfs) {
-        return _numOfVfs;
-    } else if (paramType == Mcp_Fpp_En) {
-        return _fppEn;
-    } else if(paramType == Mcp_PF_Log_Bar_Size) {
-        return _pfLogBarSize;
-    } else if(paramType == Mcp_VF_Log_Bar_Size) {
-        return _vfLogBarSize;
-    } else if(paramType == Mcp_Num_Pf_Msix) {
-        return _numPfMsix;
-    } else if(paramType == Mcp_Num_Vf_Msix) {
-        return _numVfMsix;
-    }
-
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t PciParams5thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Sriov_En) {
-        return _sriovEnDefault;
-    } else if (paramType == Mcp_Num_Of_Vfs) {
-        return _numOfVfsDefault;
-    } else if (paramType == Mcp_Fpp_En) {
-        return _fppEnDefault;
-    } else if(paramType == Mcp_PF_Log_Bar_Size) {
-        return _pfLogBarSizeDefault;
-    } else if(paramType == Mcp_VF_Log_Bar_Size) {
-        return _vfLogBarSizeDefault;
-    } else if(paramType == Mcp_Num_Pf_Msix) {
-        return _numPfMsixDefault;
-    } else if(paramType == Mcp_Num_Vf_Msix) {
-        return _numVfMsixDefault;
-    }
-
-    return MLXCFG_UNKNOWN;
-}
-
-int PciParams5thGen::getFromDev(mfile* mf)
-{
-    MError mRc;
-    u_int8_t tlvBuff[TOOLS_OPEN_PCI_CONFIGURATION_SIZE] = {0};
-    struct tools_open_pci_configuration pciSettingsTlv;
-    memset(&pciSettingsTlv, 0, sizeof(pciSettingsTlv));
-
-    if (_updated) {
-        return MCE_SUCCESS;
-    }
-    mRc = mnvaCom5thGen(mf, &tlvBuff[0], TOOLS_OPEN_PCI_CONFIGURATION_SIZE, getPciSettingsTlvTypeBe(), REG_ACCESS_METHOD_GET);
-
-    if (mRc) {
-        if (mRc == ME_REG_ACCESS_RES_NOT_AVLBL) {
-            return MCE_SUCCESS;
-        }
-        return errmsg("Failed to get PCI configuration: %s", m_err2str(mRc));
-    }
-    // unpack and update
-    tools_open_pci_configuration_unpack(&pciSettingsTlv, &tlvBuff[0]);
-    if (pciSettingsTlv.sriov_valid) {
-        _sriovEn = pciSettingsTlv.sriov_en;
-        _numOfVfs = pciSettingsTlv.total_vfs;
-    }
-    if (pciSettingsTlv.fpp_valid) {
-        _fppEn = pciSettingsTlv.fpp_en;
-    }
-    if(pciSettingsTlv.pf_bar_size_valid) {
-        _pfLogBarSize = pciSettingsTlv.log_pf_uar_bar_size;
-    }
-    if(pciSettingsTlv.vf_bar_size_valid) {
-        _vfLogBarSize = pciSettingsTlv.log_vf_uar_bar_size;
-    }
-    if(pciSettingsTlv.num_pfs_valid){
-        _numOfPfs = pciSettingsTlv.num_pfs;
-        _numOfPfsValid = true;
-    }
-    if(pciSettingsTlv.num_pfs_msix_valid){
-        _numPfMsix = pciSettingsTlv.num_pf_msix;
-    }
-    if(pciSettingsTlv.num_vfs_msix_valid){
-        _numVfMsix = pciSettingsTlv.num_vf_msix;
-    }
-    _updated = true;
-
-   return MCE_SUCCESS;
-}
-
-int PciParams5thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    MError mRc;
-
-    if (!ignoreCheck && !checkCfg()) {
-        return MCE_BAD_PARAMS;
-    }
-    // get Tlv modify it and set it
-    u_int8_t tlvBuff[TOOLS_OPEN_PCI_CONFIGURATION_SIZE] = {0};
-    struct tools_open_pci_configuration pciSettingsTlv;
-    memset(&pciSettingsTlv, 0, sizeof(pciSettingsTlv));
-
-    mRc = mnvaCom5thGen(mf, tlvBuff, TOOLS_OPEN_PCI_CONFIGURATION_SIZE, getPciSettingsTlvTypeBe(), REG_ACCESS_METHOD_GET);
-    if (mRc && mRc != ME_REG_ACCESS_RES_NOT_AVLBL) {
-        return errmsg("failed to set PCI settings: %s", m_err2str(mRc));
-    }
-    tools_open_pci_configuration_unpack(&pciSettingsTlv, tlvBuff);
-
-    if (_sriovSupported && _userSpecifiedSRIOV) {
-        if (_sriovEn == MLXCFG_UNKNOWN || _numOfVfs == MLXCFG_UNKNOWN) {
-            return errmsg("please specify all parameters for SRIOV.");
-        }
-        pciSettingsTlv.sriov_valid = 1;
-        pciSettingsTlv.sriov_en = _sriovEn;
-        pciSettingsTlv.total_vfs = _numOfVfs;
-    }
-
-    if (_fppSupported && _userSpecifiedFPP) {
-        pciSettingsTlv.fpp_en = _fppEn;
-        pciSettingsTlv.fpp_valid = 1;
-    }
-
-    if (_pfLogBarSizeSuppored && _userSpecifiedPfLogBarSize) {
-        pciSettingsTlv.log_pf_uar_bar_size = _pfLogBarSize;
-        pciSettingsTlv.pf_bar_size_valid = 1;
-    }
-
-    if (_vfLogBarSizeSuppored && _userSpecifiedVfLogBarSize) {
-        pciSettingsTlv.log_vf_uar_bar_size = _vfLogBarSize;
-        pciSettingsTlv.vf_bar_size_valid = 1;
-    }
-
-    if (pciSettingsTlv.sriov_en && !pciSettingsTlv.fpp_en) {
-        return errmsg("FPP should be enabled while SRIOV is enabled");
-    }
-
-    if(_numPfMsixSupported && _userSpecifiedNumPfMsix) {
-        pciSettingsTlv.num_pf_msix = _numPfMsix;
-        pciSettingsTlv.num_pfs_msix_valid = 1;
-    }
-
-    if(_numVfMsixSupported && _userSpecifiedNumVfMsix) {
-        pciSettingsTlv.num_vf_msix = _numVfMsix;
-        pciSettingsTlv.num_vfs_msix_valid = 1;
-    }
-    // pack it
-    tools_open_pci_configuration_pack(&pciSettingsTlv, tlvBuff);
-
-    mRc = mnvaCom5thGen(mf, tlvBuff, TOOLS_OPEN_PCI_CONFIGURATION_SIZE, getPciSettingsTlvTypeBe(), REG_ACCESS_METHOD_SET);
-
-    if (mRc) {
-        return errmsg("failed to set PCI settings: %s", m_err2str(mRc));
-    }
-    _updated = false;
-
-    return MCE_SUCCESS;
-}
-
-int PciParams5thGen::getDefaultParams(mfile* mf)
-{
-    int rc = getDefaultsAndCapabilities(mf);
-
-    setParams(
-     _sriovEnDefault,
-     _numOfVfsDefault,
-     _fppEnDefault,
-     _pfLogBarSizeDefault,
-     _vfLogBarSizeDefault,
-     _numOfPfs,
-     _numPfMsixDefault,
-     _numVfMsixDefault);
-
-    return rc;
-}
-
-void PciParams5thGen::setParams(u_int32_t sriovEn, u_int32_t numOfVfs, u_int32_t fppEn, u_int32_t pfLogBarSize,
-            u_int32_t vfLogBarSize, u_int32_t numOfPfs, u_int32_t numPfMsix, u_int32_t numVfMsix)
-{
-    _sriovEn = sriovEn;
-    _numOfVfs = numOfVfs;
-    _fppEn = fppEn;
-    _pfLogBarSize = pfLogBarSize;
-    _vfLogBarSize = vfLogBarSize;
-    _numOfPfs = numOfPfs;
-    _numPfMsix = numPfMsix;
-    _numVfMsix = numVfMsix;
-}
-
-int PciParams5thGen::getDefaultsAndCapabilities(mfile* mf)
-{
-    MError rc;
-    u_int8_t tlvCapBuff[TOOLS_OPEN_PCI_CAPABILITIES_SIZE] = {0};
-    struct tools_open_pci_capabilities pciCapabilitesTlv;
-    memset(&pciCapabilitesTlv, 0, sizeof(pciCapabilitesTlv));
-    rc = mnvaCom5thGen(mf, &tlvCapBuff[0], TOOLS_OPEN_PCI_CAPABILITIES_SIZE, getPciCapabilitiesTlvTypeBe(), REG_ACCESS_METHOD_GET);
-    if (rc) {
-        return errmsg("Failed to get PCI capabilities parameter. %s", m_err2str(rc));
-    }
-    tools_open_pci_capabilities_unpack(&pciCapabilitesTlv, tlvCapBuff);
-    _sriovSupported = pciCapabilitesTlv.sriov_support;
-    _maxVfsPerPf = pciCapabilitesTlv.max_vfs_per_pf_valid ? pciCapabilitesTlv.max_vfs_per_pf : 0;
-    _fppSupported = pciCapabilitesTlv.fpp_support;
-    _pfLogBarSizeSuppored = pciCapabilitesTlv.pf_bar_size_supported;
-    _vfLogBarSizeSuppored = pciCapabilitesTlv.vf_bar_size_supported;
-    _numPfMsixSupported = pciCapabilitesTlv.num_pf_msix_supported;
-    _numVfMsixSupported = pciCapabilitesTlv.num_vf_msix_supported;
-    _maxLogPfBarSize = pciCapabilitesTlv.log_max_pf_uar_bar_size1;
-    _maxLogVfBarSize = pciCapabilitesTlv.log_max_vf_uar_bar_size;
-    _maxTotalBarValid = pciCapabilitesTlv.max_total_bar_valid;
-    _maxTotalBar = pciCapabilitesTlv.max_total_bar;
-    _maxNumPfMsix = pciCapabilitesTlv.max_num_pf_msix;
-    _maxNumVfMsix = pciCapabilitesTlv.max_num_vf_msix;
-    _maxTotalMsixValid = pciCapabilitesTlv.max_total_msix_valid;
-    _maxTotalMsix = pciCapabilitesTlv.max_total_msix;
-
-    u_int8_t tlvBuff[TOOLS_OPEN_PCI_CONFIGURATION_SIZE] = {0};
-    struct tools_open_pci_configuration pciSettingsTlv;
-    memset(&pciSettingsTlv, 0, sizeof(pciSettingsTlv));
-
-    rc = mnvaCom5thGen(mf, &tlvBuff[0], TOOLS_OPEN_PCI_CONFIGURATION_SIZE, getPciSettingsTlvTypeBe(), REG_ACCESS_METHOD_GET, true);
-
-    if (rc) {
-        if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) {
-            return MCE_SUCCESS;
-        }
-        return errmsg("Failed to get PCI configuration: %s", m_err2str(rc));
-    }
-    // unpack and update
-    tools_open_pci_configuration_unpack(&pciSettingsTlv, &tlvBuff[0]);
-    if (pciSettingsTlv.sriov_valid) {
-        _sriovEnDefault = pciSettingsTlv.sriov_en;
-        _numOfVfsDefault = pciSettingsTlv.total_vfs;
-    }
-    if (pciSettingsTlv.fpp_valid) {
-        _fppEnDefault = pciSettingsTlv.fpp_en;
-    }
-    if(pciSettingsTlv.pf_bar_size_valid) {
-        _pfLogBarSizeDefault = pciSettingsTlv.log_pf_uar_bar_size;
-    }
-    if(pciSettingsTlv.vf_bar_size_valid) {
-        _vfLogBarSizeDefault = pciSettingsTlv.log_vf_uar_bar_size;
-    }
-    if(pciSettingsTlv.num_pfs_msix_valid) {
-        _numPfMsixDefault = pciSettingsTlv.num_pf_msix;
-    }
-    if(pciSettingsTlv.num_vfs_msix_valid) {
-        _numVfMsixDefault = pciSettingsTlv.num_vf_msix;
-    }
-
-    return MCE_SUCCESS;
-}
-
-u_int32_t PciParams5thGen::getPciSettingsTlvTypeBe()
-{
-    struct tools_open_global_type type;
-    u_int32_t tlvType = 0;
-
-    type.param_class = CLASS_GLOBAL;
-    type.param_idx = tlvTypeIdx;
-    tools_open_global_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-u_int32_t PciParams5thGen::getPciCapabilitiesTlvTypeBe()
-{
-    struct tools_open_global_type type;
-    u_int32_t tlvType = 0;
-
-    type.param_class = CLASS_GLOBAL;
-    type.param_idx = PCI_CAPABILITES_TYPE;
-    tools_open_global_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-bool PciParams5thGen::hardLimitCheck()
-{
-    if (_sriovSupported && _userSpecifiedSRIOV) {
-        if ((_numOfVfs > _maxVfsPerPf)) {
-            errmsg("Number of VFs exceeds limit (%d).", _maxVfsPerPf);
-            return false;
-        }
-
-        if (_sriovEn != 0 && _sriovEn != 1) {
-            errmsg("Illegal SRIOV_EN parameter value. (should be 0 or 1)");
-            return false;
-        }
-    }
-
-    if (_fppSupported && _userSpecifiedFPP) {
-        if (_fppEn != 0 && _fppEn != 1) {
-            errmsg("Illegal FPP_EN parameter value. (should be 0 or 1)");
-            return false;
-        }
-    }
-
-    if (_pfLogBarSizeSuppored && _userSpecifiedPfLogBarSize) {
-        if (_pfLogBarSize > _maxLogPfBarSize) {
-            errmsg("Illegal PF_LOG_BAR_SIZE parameter value, Max allowed value is %d", _maxLogPfBarSize);
-            return false;
-        }
-    }
-
-    if (_vfLogBarSizeSuppored && _userSpecifiedVfLogBarSize) {
-        if (_vfLogBarSize > _maxLogVfBarSize) {
-            errmsg("Illegal VF_LOG_BAR_SIZE parameter value, Max allowed value is %d", _maxLogVfBarSize);
-            return false;
-        }
-    }
-
-    if(_numPfMsixSupported && _userSpecifiedNumPfMsix) {
-        if(_numPfMsix > _maxNumPfMsix) {
-            errmsg("Illegal NUM_PF_MSIX parameter value, Max allowed value is %d", _maxNumPfMsix);
-            return false;
-        }
-    }
-
-    if(_numVfMsixSupported && _userSpecifiedNumVfMsix) {
-        if(_numVfMsix > _maxNumVfMsix) {
-            errmsg("Illegal NUM_VF_MSIX parameter value, Max allowed value is %d", _maxNumVfMsix);
-            return false;
-        }
-    }
-
-    return true;
-}
-
-//waiting for arch to correct the constraint formula
-u_int32_t PciParams5thGen::calcNumOfVfs()
-{
-    if(_fppEn == 1){
-        return (_maxTotalBar / _numOfPfs - (1 << _pfLogBarSize))/ (1 << _vfLogBarSize);
-    } else {
-        return (_maxTotalBar - (1 << _pfLogBarSize)) / (1 << _vfLogBarSize);
-    }
-}
-
-u_int32_t PciParams5thGen::calcVfLogBarSize()
-{
-    if(_fppEn == 1){
-        return static_cast<unsigned int>(log2((_maxTotalBar / _numOfPfs - (1 << _pfLogBarSize)) / _numOfVfs));
-    } else {
-        return static_cast<unsigned int>(log2((_maxTotalBar - (1 << _pfLogBarSize)) / _numOfVfs));
-    }
-}
-
-u_int32_t PciParams5thGen::calcPfLogBarSize()
-{
-    if(_fppEn == 1){
-        return static_cast<unsigned int>(log2((_maxTotalBar / _numOfPfs - (1 << _vfLogBarSize) * _numOfVfs)));
-    } else {
-        return static_cast<unsigned int>(log2((_maxTotalBar - (1 << _vfLogBarSize) * _numOfVfs)));
-    }
-}
-
-u_int32_t PciParams5thGen::calcTotalBar()
-{
-    if(_fppEn == 1){
-        return (_numOfPfs * ((1 << _pfLogBarSize) + (1 << _vfLogBarSize) * _numOfVfs));
-    } else {
-        return ((1 << _pfLogBarSize) + (1 << _vfLogBarSize) * _numOfVfs);
-    }
-}
-
-bool PciParams5thGen::softLimitCheck(mfile* mf)
-{
-    (void)mf;
-    if (_maxTotalBarValid == 1 && _maxTotalBar != 0 && _sriovEn == 1) {
-        if(_userSpecifiedSRIOV || _userSpecifiedPfLogBarSize || _userSpecifiedVfLogBarSize){
-            if(_fppEn == 1){
-                if(!_numOfPfsValid){
-                    errmsg("Cannot perform advanced calculations, cannot extract number of physical functions from Firmware.");
-                    return false;
-                }
-               if(calcTotalBar() > _maxTotalBar) {
-                   if(_userSpecifiedSRIOV) {
-                       errmsg("Given the specified parameter: NUM_OF_VFS, the maximum allowed values is %d",calcNumOfVfs());
-                   } else if(_userSpecifiedVfLogBarSize) {
-                       errmsg("Given the specified parameter: VF_Log_Bar_Size, the maximum allowed values is %d",calcVfLogBarSize());
-                   } else if(_userSpecifiedPfLogBarSize) {
-                       errmsg("Given the specified parameter: PF_Log_Bar_Size, the maximum allowed values is %d",calcPfLogBarSize());
-                   }
-                   return false;
-               }
-            } else {
-                if(calcTotalBar() > _maxTotalBar) {
-                    if(_userSpecifiedSRIOV){
-                       errmsg("Given the specified parameter: NUM_OF_VFS, the maximum allowed values is %d",calcNumOfVfs());
-                    } else if(_userSpecifiedVfLogBarSize) {
-                      errmsg("Given the specified parameter: VF_Log_Bar_Size, the maximum allowed values is %d",calcVfLogBarSize());
-                    } else if(_userSpecifiedPfLogBarSize) {
-                      errmsg("Given the specified parameter: PF_Log_Bar_Size, the maximum allowed values is %d",calcPfLogBarSize());
-                    }
-                    return false;
-                }
-            }
-        }
-    }
-
-    if (_maxTotalMsixValid == 1) {
-        if (_userSpecifiedSRIOV || _userSpecifiedNumPfMsix || _userSpecifiedNumVfMsix) {
-            if (!_numOfPfsValid){
-                errmsg("Cannot perform advanced calculations, cannot extract number of physical functions from Firmware.");
-                return false;
-            }
-        }
-        if ((_numOfPfs * (_numPfMsix + _numOfVfs * _numVfMsix)) > _maxTotalMsix){
-            if(_userSpecifiedSRIOV){
-               errmsg("Given the specified parameter: NUM_OF_VFS, the maximum allowed values is %d",
-                                       (((_maxTotalMsix / _numOfPfs) - _numPfMsix) / _numVfMsix));
-            } else if(_userSpecifiedNumPfMsix){
-                errmsg("Given the specified parameter: NUM_PF_MSIX, the maximum allowed values is %d",
-                                       ((_maxTotalMsix / _numOfPfs) - (_numOfVfs * _numVfMsix)));
-            } else if(_userSpecifiedNumVfMsix){
-                errmsg("Given the specified parameter: NUM_VF_MSIX, the maximum allowed values is %d",
-                                       (((_maxTotalMsix / _numOfPfs) - _numPfMsix) /_numOfVfs));
-            }
-        }
-    }
-
-    return true;
-}
-
-
-/*
- * TptParams5thGen Class implementation:
- */
-
-bool TptParams5thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    (void)param;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getTptCapabilitiesTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get TPT capabilities parameter capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!suppRead) {
-        return false;
-    }
-
-    if (getDefaultsAndCapabilities(mf) != MCE_SUCCESS) {
-        return false;
-    }
-
-    rc = nvqcCom5thGen(mf, getTptSettingsTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get TPT settings parameter capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!(suppRead && suppWrite && _logMaxPayloadSizeSupported)) {
-        return false;
-    }
-    return true;
-}
-
-void TptParams5thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_Log_Tpt_Size) {
-        _logMaxPayloadSize = val;
-    }
-}
-
-u_int32_t TptParams5thGen::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Log_Tpt_Size) {
-        return _logMaxPayloadSize;
-    }
-
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t TptParams5thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Log_Tpt_Size) {
-        return _logMaxPayloadSizeDefault;
-    }
-
-    return MLXCFG_UNKNOWN;
-}
-
-int TptParams5thGen::getFromDev(mfile* mf)
-{
-    MError mRc;
-    u_int8_t tlvBuff[TOOLS_OPEN_TPT_CONFIGURATION_SIZE] = {0};
-    struct tools_open_tpt_configuration tptSettingsTlv;
-    memset(&tptSettingsTlv, 0, sizeof(tptSettingsTlv));
-
-    if (_updated) {
-        return MCE_SUCCESS;
-    }
-
-    mRc = mnvaCom5thGen(mf, &tlvBuff[0], TOOLS_OPEN_TPT_CONFIGURATION_SIZE, getTptSettingsTlvTypeBe(), REG_ACCESS_METHOD_GET);
-
-    if (mRc) {
-        if (mRc == ME_REG_ACCESS_RES_NOT_AVLBL) {
-            return MCE_SUCCESS;
-        }
-        return errmsg("Failed to get TPT configuration: %s", m_err2str(mRc));
-    }
-    // unpack and update
-    tools_open_tpt_configuration_unpack(&tptSettingsTlv, &tlvBuff[0]);
-    _logMaxPayloadSize = tptSettingsTlv.log_max_payload_size;
-
-    _updated = true;
-
-   return MCE_SUCCESS;
-}
-
-int TptParams5thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    MError mRc;
-
-    if (!ignoreCheck && !checkCfg()) {
-        return MCE_BAD_PARAMS;
-    }
-    // get Tlv modify it and set it
-    u_int8_t tlvBuff[TOOLS_OPEN_TPT_CONFIGURATION_SIZE] = {0};
-    struct tools_open_tpt_configuration tptSettingsTlv;
-    memset(&tptSettingsTlv, 0, sizeof(tptSettingsTlv));
-
-    mRc = mnvaCom5thGen(mf, tlvBuff, TOOLS_OPEN_TPT_CONFIGURATION_SIZE, getTptSettingsTlvTypeBe(), REG_ACCESS_METHOD_GET);
-    if (mRc && mRc != ME_REG_ACCESS_RES_NOT_AVLBL) {
-        return errmsg("failed to set TPT settings: %s", m_err2str(mRc));
-    }
-    tools_open_tpt_configuration_unpack(&tptSettingsTlv, tlvBuff);
-
-    tptSettingsTlv.log_max_payload_size = _logMaxPayloadSize;
-
-    // pack it
-    tools_open_tpt_configuration_pack(&tptSettingsTlv, tlvBuff);
-
-    mRc = mnvaCom5thGen(mf, tlvBuff, TOOLS_OPEN_TPT_CONFIGURATION_SIZE, getTptSettingsTlvTypeBe(), REG_ACCESS_METHOD_SET);
-
-    if (mRc) {
-        return errmsg("failed to set TPT settings: %s", m_err2str(mRc));
-    }
-    _updated = false;
-
-    return MCE_SUCCESS;
-}
-
-int TptParams5thGen::getDefaultParams(mfile* mf)
-{
-    int rc = getDefaultsAndCapabilities(mf);
-    setParams(_logMaxPayloadSizeDefault);
-    return rc;
-}
-
-void TptParams5thGen::setParams(u_int32_t logMaxPayloadSize)
-{
-    _logMaxPayloadSize = logMaxPayloadSize;
-}
-
-int TptParams5thGen::getDefaultsAndCapabilities(mfile* mf)
-{
-    MError rc;
-    u_int8_t tlvCapBuff[TOOLS_OPEN_TPT_CAPABILITIES_SIZE] = {0};
-    struct tools_open_tpt_capabilities tptCapabilitesTlv;
-    memset(&tptCapabilitesTlv, 0, sizeof(tptCapabilitesTlv));
-    rc = mnvaCom5thGen(mf, &tlvCapBuff[0], TOOLS_OPEN_TPT_CAPABILITIES_SIZE, getTptCapabilitiesTlvTypeBe(), REG_ACCESS_METHOD_GET);
-    if (rc) {
-        return errmsg("Failed to get TPT capabilities parameter. %s", m_err2str(rc));
-    }
-    tools_open_tpt_capabilities_unpack(&tptCapabilitesTlv, tlvCapBuff);
-    _logMaxPayloadSizeSupported = tptCapabilitesTlv.log_max_payload_size_supported;
-
-    u_int8_t tlvBuff[TOOLS_OPEN_TPT_CONFIGURATION_SIZE] = {0};
-    struct tools_open_tpt_configuration tptSettingsTlv;
-    memset(&tptSettingsTlv, 0, sizeof(tptSettingsTlv));
-
-    rc = mnvaCom5thGen(mf, &tlvBuff[0], TOOLS_OPEN_TPT_CONFIGURATION_SIZE, getTptSettingsTlvTypeBe(), REG_ACCESS_METHOD_GET, true);
-
-    if (rc) {
-        if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) {
-            return MCE_SUCCESS;
-        }
-        return errmsg("Failed to get TPT default configuration: %s", m_err2str(rc));
-    }
-    // unpack and update
-    tools_open_tpt_configuration_unpack(&tptSettingsTlv, &tlvBuff[0]);
-    _logMaxPayloadSizeDefault = tptSettingsTlv.log_max_payload_size;
-
-    return MCE_SUCCESS;
-}
-
-u_int32_t TptParams5thGen::getTptSettingsTlvTypeBe()
-{
-    struct tools_open_global_type type;
-    u_int32_t tlvType = 0;
-
-    type.param_class = CLASS_GLOBAL;
-    type.param_idx = tlvTypeIdx;
-    tools_open_global_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-u_int32_t TptParams5thGen::getTptCapabilitiesTlvTypeBe()
-{
-    struct tools_open_global_type type;
-    u_int32_t tlvType = 0;
-
-    type.param_class = CLASS_GLOBAL;
-    type.param_idx = TPT_CAPABILITES_TYPE;
-    tools_open_global_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-bool TptParams5thGen::hardLimitCheck()
-{
-    if (_logMaxPayloadSize != 0 && _logMaxPayloadSize != 12) {
-        errmsg("Illegal LOG_MAX_TPT_PAYLOAD_SIZE parameter value. (should be 0(auto) or 12(4KB))");
-        return false;
-    }
-    return true;
-}
-
-/*
- * InfinibandBootSettingsParams4thGen Class implementation:
- */
-
-bool InfinibandBootSettingsParams4thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    (void)param;
-    struct tools_open_query_def_params_per_port portParams;
-    int rc;
-    rc = getDefaultParams4thGen(mf, _port, &portParams);
-    if (rc) {
-        return false;
-    }
-    return portParams.nv_config_infiniband_boot_settings;
-}
-
-void InfinibandBootSettingsParams4thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if ((paramType == Mcp_Boot_Pkey_P1 && _port == 1) || (paramType == Mcp_Boot_Pkey_P2 && _port == 2)) {
-        _bootPkey = val;
-    }
-}
-
-u_int32_t InfinibandBootSettingsParams4thGen::getParam(mlxCfgParam paramType)
-{
-    if ((paramType == Mcp_Boot_Pkey_P1 && _port == 1) || (paramType == Mcp_Boot_Pkey_P2 && _port == 2)) {
-        return _bootPkey;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t InfinibandBootSettingsParams4thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if ((paramType == Mcp_Boot_Pkey_P1 && _port == 1) || (paramType == Mcp_Boot_Pkey_P2 && _port == 2)) {
-        return _bootPkeyDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-
-int InfinibandBootSettingsParams4thGen::getFromDev(mfile* mf)
-{
-    MError mRc;
-    u_int8_t tlvBuff[TOOLS_OPEN_INFINIBAND_BOOT_SETTINGS_SIZE] = {0};
-    struct tools_open_infiniband_boot_settings bootSettingsTlv;
-    memset(&bootSettingsTlv, 0, sizeof(bootSettingsTlv));
-
-    if (_updated) {
-        return MCE_SUCCESS;
-    }
-
-    mRc = mnvaCom4thGen(mf, &tlvBuff[0], TOOLS_OPEN_INFINIBAND_BOOT_SETTINGS_SIZE, tlvTypeIdx, REG_ACCESS_METHOD_GET, _port);
-
-    if (mRc) {
-        if (mRc == ME_REG_ACCESS_RES_NOT_AVLBL) {
-            return MCE_SUCCESS;
-        }
-        return errmsg("Failed to get Infiniband Boot Settings: %s", m_err2str(mRc));
-    }
-    // unpack and update
-    tools_open_infiniband_boot_settings_unpack(&bootSettingsTlv, &tlvBuff[0]);
-    _bootPkey = bootSettingsTlv.boot_pkey;
-    _updated = true;
-
-   return MCE_SUCCESS;
-}
-int InfinibandBootSettingsParams4thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    MError mRc;
-
-    if (!ignoreCheck && !checkCfg()) {
-        return MCE_BAD_PARAMS;
-    }
-    // get Tlv modify it and set it
-    u_int8_t tlvBuff[TOOLS_OPEN_INFINIBAND_BOOT_SETTINGS_SIZE] = {0};
-    struct tools_open_infiniband_boot_settings bootSettingsTlv;
-    memset(&bootSettingsTlv, 0, sizeof(bootSettingsTlv));
-
-    bootSettingsTlv.boot_pkey = _bootPkey;
-
-    // pack it
-    tools_open_infiniband_boot_settings_pack(&bootSettingsTlv, tlvBuff);
-
-    mRc = mnvaCom4thGen(mf, tlvBuff, TOOLS_OPEN_TPT_CONFIGURATION_SIZE, tlvTypeIdx, REG_ACCESS_METHOD_SET, _port);
-
-    if (mRc) {
-        return errmsg("failed to set Infiniband Boot Settings: %s", m_err2str(mRc));
-    }
-    _updated = false;
-
-    return MCE_SUCCESS;
-}
-
-int InfinibandBootSettingsParams4thGen::getDefaultParams(mfile* mf)
-{
-    struct tools_open_query_def_params_per_port portParams;
-    int rc;
-    rc = getDefaultParams4thGen(mf, _port, &portParams);
-    if (rc == MCE_SUCCESS) {
-        _bootPkeyDefault = portParams.default_boot_pkey;
-        setParams(_bootPkeyDefault);
-    } else {
-        rc = MCE_GET_DEFAULT_PARAMS;
-    }
-    return rc;
-}
-
-void InfinibandBootSettingsParams4thGen::setParams(u_int32_t bootPkey)
-{
-    _bootPkey = bootPkey;
-}
-
-bool InfinibandBootSettingsParams4thGen::hardLimitCheck()
-{
-    if (_bootPkey >= (1 << 16)) {
-        errmsg("Illegal BOOT_PKEY_P%d parameter value, valid values: [0..65535]", ((_port == 1) ? 1 : 2));
-        return false;
-    }
-    return true;
-}
-
-/*
- * IBDCParams5thGen Class implementation:
- */
-
-bool IBDCParams5thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    (void)param;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getDcCapabilitiesTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get Infiniband DC capabilities parameter capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!suppRead) {
-        return false;
-    }
-
-    rc = nvqcCom5thGen(mf, getTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get Infiniband DC Settings parameter capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!(suppRead && suppWrite)) {
-        return false;
-    }
-    return true;
-}
-
-void IBDCParams5thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_Log_Dcr_Hash_Table_Size) {
-        _logDcrHashTableSize = val;
-    }
-    if (paramType == Mcp_Dcr_Lifo_Size) {
-        _dcrLifoSize = val;
-    }
-}
-
-u_int32_t IBDCParams5thGen::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Log_Dcr_Hash_Table_Size) {
-        return _logDcrHashTableSize;
-    }
-    if (paramType == Mcp_Dcr_Lifo_Size) {
-        return _dcrLifoSize;
-    }
-
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t IBDCParams5thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Log_Dcr_Hash_Table_Size) {
-        return _logDcrHashTableSizeDefault;
-    }
-    if (paramType == Mcp_Dcr_Lifo_Size) {
-        return _dcrLifoSizeDefault;
-    }
-
-    return MLXCFG_UNKNOWN;
-}
-
-void IBDCParams5thGen::setParams(u_int32_t logDcrHashTableSize, u_int32_t dcrLifoSize)
-{
-    _logDcrHashTableSize = logDcrHashTableSize;
-    _dcrLifoSize = dcrLifoSize;
-}
-
-void IBDCParams5thGen::updateClassAttrFromDefaultParams()
-{
-    setParams(_logDcrHashTableSizeDefault,
-            _dcrLifoSizeDefault);
-}
-
-int IBDCParams5thGen::getFromDev(mfile* mf)
-{
-    GET_FROM_DEV_5TH_GEN(mf, tools_open_infiniband_dc_settings, "IB Dynamically Connected");
-}
-
-int IBDCParams5thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    SET_ON_DEV_5TH_GEN(mf, ignoreCheck, tools_open_infiniband_dc_settings, "IB Dynamically Connected");
-}
-
-int IBDCParams5thGen::getDefaultParams(mfile* mf)
-{
-    return getDefaultsAndCapabilities(mf);
-}
-
-int IBDCParams5thGen::getDefaultsAndCapabilities(mfile* mf)
-{
-    MError rc;
-    u_int8_t tlvCapBuff[TOOLS_OPEN_INFINIBAND_DC_CAPABILITIES_SIZE] = {0};
-    struct tools_open_infiniband_dc_capabilities dcCapabilitesTlv;
-    memset(&dcCapabilitesTlv, 0, sizeof(dcCapabilitesTlv));
-    rc = mnvaCom5thGen(mf, &tlvCapBuff[0], TOOLS_OPEN_INFINIBAND_DC_CAPABILITIES_SIZE, getDcCapabilitiesTlvTypeBe(), REG_ACCESS_METHOD_GET);
-    if (rc) {
-        return errmsg("Failed to get Infiniband DC capabilities parameter. %s", m_err2str(rc));
-    }
-    tools_open_infiniband_dc_capabilities_unpack(&dcCapabilitesTlv, tlvCapBuff);
-    _minLogDcrHashTableSize = dcCapabilitesTlv.min_log_dcr_hash_table_size;
-    _maxLogDcrHashTableSize = dcCapabilitesTlv.max_log_dcr_hash_table_size;
-    _minDcrLifoSize = dcCapabilitesTlv.min_dcr_lifo_size;
-    _maxDcrLifoSize = dcCapabilitesTlv.max_dcr_lifo_size;
-
-    GET_DEFAULT_5TH_GEN(mf, tools_open_infiniband_dc_settings, "IB Dynamically Connected");
-}
-
-u_int32_t IBDCParams5thGen::getTlvTypeBe()
-{
-    struct tools_open_global_type type;
-    u_int32_t tlvType = 0;
-
-    type.param_class = CLASS_GLOBAL;
-    type.param_idx = tlvTypeIdx;
-    tools_open_global_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-u_int32_t IBDCParams5thGen::getDcCapabilitiesTlvTypeBe()
-{
-    struct tools_open_global_type type;
-    u_int32_t tlvType = 0;
-
-    type.param_class = CLASS_GLOBAL;
-    type.param_idx = INFINIBAND_DC_CAPABILITIES_TYPE;
-    tools_open_global_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-bool IBDCParams5thGen::hardLimitCheck()
-{
-    if (_logDcrHashTableSize < _minLogDcrHashTableSize || _logDcrHashTableSize > _maxLogDcrHashTableSize) {
-        errmsg("Illegal LOG_DCR_HASH_TABLE_SIZE parameter value. (should be within the range [%d..%d])", _minLogDcrHashTableSize, _maxLogDcrHashTableSize);
-        return false;
-    }
-    if (_dcrLifoSize < _minDcrLifoSize || _dcrLifoSize > _maxDcrLifoSize) {
-        errmsg("Illegal DCR_LIFO_SIZE parameter value. (should be within the range [%d..%d])", _minDcrLifoSize, _maxDcrLifoSize);
-        return false;
-    }
-    return true;
-}
-
-void IBDCParams5thGen::updateTlvFromClassAttr(void* tlv)
-{
-    struct tools_open_infiniband_dc_settings* ibDcTlv = (struct tools_open_infiniband_dc_settings*)tlv;
-    ibDcTlv->dcr_lifo_size = _dcrLifoSize;
-    ibDcTlv->log_dcr_hash_table_size = _logDcrHashTableSize;
-    return;
-}
-
-void IBDCParams5thGen::updateClassAttrFromTlv(void* tlv)
-{
-    struct tools_open_infiniband_dc_settings* ibDcTlv = (struct tools_open_infiniband_dc_settings*)tlv;
-    _dcrLifoSize = ibDcTlv->dcr_lifo_size;
-    _logDcrHashTableSize = ibDcTlv->log_dcr_hash_table_size;
-    return;
-}
-
-void IBDCParams5thGen::updateClassDefaultAttrFromTlv(void* tlv)
-{
-    struct tools_open_infiniband_dc_settings* ibDcTlv = (struct tools_open_infiniband_dc_settings*)tlv;
-    _dcrLifoSizeDefault = ibDcTlv->dcr_lifo_size;
-    _logDcrHashTableSizeDefault = ibDcTlv->log_dcr_hash_table_size;
-    return;
-}
-
-/*
- * RoCENextProtocolParams5thGen Class implementation
- */
-
-
-bool RoCENextProtocolParams5thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    (void)param;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get RoCE next protocol parameter capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!suppRead || !suppWrite) {
-        return false;
-    }
-    return true;
-}
-
-void RoCENextProtocolParams5thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if ( paramType == Mcp_RoCE_Next_Protocol) {
-        _nextProtocol = val;
-    }
-    return;
-}
-
-u_int32_t RoCENextProtocolParams5thGen::getParam(mlxCfgParam paramType)
-{
-    if ( paramType == Mcp_RoCE_Next_Protocol) {
-        return _nextProtocol;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t RoCENextProtocolParams5thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if ( paramType == Mcp_RoCE_Next_Protocol) {
-        return _nextProtocolDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-void RoCENextProtocolParams5thGen::setParams(u_int32_t nextProtocol)
-{
-    _nextProtocol = nextProtocol;
-}
-
-void RoCENextProtocolParams5thGen::updateClassAttrFromDefaultParams()
-{
-    setParams(_nextProtocolDefault);
-}
-
-int RoCENextProtocolParams5thGen::getFromDev(mfile* mf)
-{
-   GET_FROM_DEV_5TH_GEN(mf, tools_open_roce_v_1_5_next_protocol, "RoCE Next Protocol");
-}
-
-int RoCENextProtocolParams5thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    SET_ON_DEV_5TH_GEN(mf, ignoreCheck, tools_open_roce_v_1_5_next_protocol, "RoCE Next Protocol");
-}
-
-int RoCENextProtocolParams5thGen::getDefaultParams(mfile* mf)
-{
-    GET_DEFAULT_5TH_GEN(mf, tools_open_roce_v_1_5_next_protocol, "RoCE Next Protocol");
-}
-
-bool RoCENextProtocolParams5thGen::hardLimitCheck()
-{
-    if (_nextProtocol > 255) {
-        errmsg("Illegal ROCE_NEXT_PROTOCOL parameter value(0x%x), value should be in range [0..0xff]", _nextProtocol);
-        return false;
-    }
-    return true;
-}
-
-u_int32_t RoCENextProtocolParams5thGen::getTlvTypeBe()
-{
-    struct tools_open_global_type type;
-    u_int32_t tlvType = 0;
-
-    type.param_class = CLASS_GLOBAL;
-    type.param_idx = tlvTypeIdx;
-    tools_open_global_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-void RoCENextProtocolParams5thGen::updateTlvFromClassAttr(void* tlv)
-{
-    struct tools_open_roce_v_1_5_next_protocol* roceNpTlv = (struct tools_open_roce_v_1_5_next_protocol*)tlv;
-    roceNpTlv->roce_over_ip_next_protocol = _nextProtocol;
-    return;
-}
-
-void RoCENextProtocolParams5thGen::updateClassAttrFromTlv(void* tlv)
-{
-    struct tools_open_roce_v_1_5_next_protocol* roceNpTlv = (struct tools_open_roce_v_1_5_next_protocol*)tlv;
-    _nextProtocol = roceNpTlv->roce_over_ip_next_protocol;
-    return;
-}
-
-void RoCENextProtocolParams5thGen::updateClassDefaultAttrFromTlv(void* tlv)
-{
-    struct tools_open_roce_v_1_5_next_protocol* roceNpTlv = (struct tools_open_roce_v_1_5_next_protocol*)tlv;
-    _nextProtocolDefault = roceNpTlv->roce_over_ip_next_protocol;
-    return;
-}
-
-/*
- * RoCECCParams5thGen Class implementation
- */
-
-
-bool RoCECCParams5thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    (void)param;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get RoCE CC parameter capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!suppRead || !suppWrite) {
-        return false;
-    }
-    return true;
-}
-
-void RoCECCParams5thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if ( (paramType == Mcp_RoCE_CC_Algorithm_P1 && _port == 1) || (paramType == Mcp_RoCE_CC_Algorithm_P2 && _port == 2)) {
-        _roceCcAlgorithm = val;
-    }
-    if ( (paramType == Mcp_RoCE_CC_Prio_Mask_P1 && _port == 1) || (paramType == Mcp_RoCE_CC_Prio_Mask_P2 && _port == 2)) {
-        _roceCcPrioMask = val;
-    }
-    return;
-}
-
-u_int32_t RoCECCParams5thGen::getParam(mlxCfgParam paramType)
-{
-    if ( (paramType == Mcp_RoCE_CC_Algorithm_P1 && _port == 1) || (paramType == Mcp_RoCE_CC_Algorithm_P2 && _port == 2)) {
-        return _roceCcAlgorithm;
-    }
-    if ( (paramType == Mcp_RoCE_CC_Prio_Mask_P1 && _port == 1) || (paramType == Mcp_RoCE_CC_Prio_Mask_P2 && _port == 2)) {
-        return _roceCcPrioMask;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t RoCECCParams5thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if ( (paramType == Mcp_RoCE_CC_Algorithm_P1 && _port == 1) || (paramType == Mcp_RoCE_CC_Algorithm_P2 && _port == 2)) {
-        return _roceCcAlgorithmDefault;
-    }
-    if ( (paramType == Mcp_RoCE_CC_Prio_Mask_P1 && _port == 1) || (paramType == Mcp_RoCE_CC_Prio_Mask_P2 && _port == 2)) {
-        return _roceCcPrioMaskDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-void RoCECCParams5thGen::setParams(u_int32_t roceCcAlgorithm, u_int32_t roceCcPrioMask)
-{
-    _roceCcAlgorithm = roceCcAlgorithm;
-    _roceCcPrioMask = roceCcPrioMask;
-}
-
-void RoCECCParams5thGen::updateClassAttrFromDefaultParams()
-{
-    setParams(
-        _roceCcAlgorithmDefault,
-        _roceCcPrioMaskDefault);
-}
-
-int RoCECCParams5thGen::getFromDev(mfile* mf)
-{
-    GET_FROM_DEV_5TH_GEN(mf, tools_open_roce_cc, "RoCE CC");
-}
-
-int RoCECCParams5thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    SET_ON_DEV_5TH_GEN(mf, ignoreCheck, tools_open_roce_cc, "RoCE CC");
-}
-int RoCECCParams5thGen::getDefaultParams(mfile* mf)
-{
-    GET_DEFAULT_5TH_GEN(mf, tools_open_roce_cc, "RoCE CC");
-}
-
-bool RoCECCParams5thGen::hardLimitCheck()
-{
-    if (_roceCcAlgorithm > 1) {
-        errmsg("Illegal ROCE_CC_ALGORITHM_P%d parameter value(%d), value should be 0 for ECN or 1 for QCN", _port, _roceCcAlgorithm);
-        return false;
-    }
-    if (_roceCcPrioMask > 255) {
-        errmsg("Illegal ROCE_CC_PRIO_MASK_P%d parameter value(%#x), value should be within the range [0..0xff]", _port, _roceCcPrioMask);
-        return false;
-    }
-    return true;
-}
-
-u_int32_t RoCECCParams5thGen::getTlvTypeBe()
-{
-    struct tools_open_per_port_type type;
-    u_int32_t tlvType = 0;
-    type.param_class = CLASS_PHYS_PORT;
-    type.param_idx = tlvTypeIdx;
-    type.port = _port;
-    tools_open_per_port_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-void RoCECCParams5thGen::updateTlvFromClassAttr(void* tlv)
-{
-    struct tools_open_roce_cc* roceCcTlv = (struct tools_open_roce_cc*)tlv;
-    roceCcTlv->roce_cc_algorithm = _roceCcAlgorithm;
-    roceCcTlv->roce_cc_enable_priority = _roceCcPrioMask;
-    return;
-}
-
-void RoCECCParams5thGen::updateClassAttrFromTlv(void* tlv)
-{
-    struct tools_open_roce_cc* roceCcTlv = (struct tools_open_roce_cc*)tlv;
-    _roceCcAlgorithm = roceCcTlv->roce_cc_algorithm;
-    _roceCcPrioMask = roceCcTlv->roce_cc_enable_priority;
-    return;
-}
-
-void RoCECCParams5thGen::updateClassDefaultAttrFromTlv(void* tlv)
-{
-    struct tools_open_roce_cc* roceCcTlv = (struct tools_open_roce_cc*)tlv;
-    _roceCcAlgorithmDefault = roceCcTlv->roce_cc_algorithm;
-    _roceCcPrioMaskDefault = roceCcTlv->roce_cc_enable_priority;
-    return;
-}
-
-/*
- * RoCECCEcnParams5thGen Class implementation
- */
-
-
-bool RoCECCEcnParams5thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    (void)param;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get RoCE CC ECN parameter capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!suppRead || !suppWrite) {
-        return false;
-    }
-    return true;
-}
-
-void RoCECCEcnParams5thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    // TODO: adrianc move to MAP on large scale TLVs std::map<mlxCfgParam, u_int32_t> for easier access, init in constructor according to port
-    if (_port == 1) {
-        switch (paramType) {
-        case Mcp_Clamp_Tgt_Rate_P1:
-            _clampTgtRate = val;
-            break;
-        case Mcp_Clamp_Tgt_Rate_After_Time_Inc_P1:
-            _clampTgtRateAfterTimeInc = val;
-            break;
-        case Mcp_Rpg_Time_Reset_P1:
-            _rpgTimeReset = val;
-            break;
-        case Mcp_Rpg_Byte_Reset_P1:
-            _rpgByteReset = val;
-            break;
-        case Mcp_Rpg_Threshold_P1:
-            _rpgThreshold = val;
-            break;
-        case Mcp_Rpg_Max_Rate_P1:
-            _rpgMaxRate = val;
-            break;
-        case Mcp_Rpg_Ai_Rate_P1:
-            _rpgAiRate = val;
-            break;
-        case Mcp_Rpg_Hai_Rate_P1:
-            _rpgHaiRate = val;
-            break;
-        case Mcp_Rpg_Gd_P1:
-            _rpgGd = val;
-            break;
-        case Mcp_Rpg_Min_Dec_Fac_P1:
-            _rpgMinDecFac = val;
-            break;
-        case Mcp_Rpg_Min_Rate_P1:
-            _rpgMinRate = val;
-            break;
-        case Mcp_Rate_To_Set_On_First_Cnp_P1:
-            _rateToSetOnFirstCnp = val;
-            break;
-        case Mcp_Dce_Tcp_G_P1:
-            _dceTcpG = val;
-            break;
-        case Mcp_Dce_Tcp_Rtt_P1:
-            _dceTcpRtt = val;
-            break;
-        case Mcp_Rate_Reduce_Monitor_Period_P1:
-            _rateReduceMonitorPeriod = val;
-            break;
-        case Mcp_Initial_Alpha_Value_P1:
-            _initialAlphaValue = val;
-            break;
-        case Mcp_Min_Time_Between_Cnps_P1:
-            _minTimeBetweenCnps = val;
-            break;
-        case Mcp_Cnp_Dscp_P1:
-            _cnpDscp = val;
-            break;
-        case Mcp_Cnp_802p_Prio_P1:
-            _cnp802pPrio = val;
-            break;
-        default:
-            break;
-        }
-    } else if (_port == 2) {
-        switch (paramType) {
-        case Mcp_Clamp_Tgt_Rate_P2:
-            _clampTgtRate = val;
-            break;
-        case Mcp_Clamp_Tgt_Rate_After_Time_Inc_P2:
-            _clampTgtRateAfterTimeInc = val;
-            break;
-        case Mcp_Rpg_Time_Reset_P2:
-            _rpgTimeReset = val;
-            break;
-        case Mcp_Rpg_Byte_Reset_P2:
-            _rpgByteReset = val;
-            break;
-        case Mcp_Rpg_Threshold_P2:
-            _rpgThreshold = val;
-            break;
-        case Mcp_Rpg_Max_Rate_P2:
-            _rpgMaxRate = val;
-            break;
-        case Mcp_Rpg_Ai_Rate_P2:
-            _rpgAiRate = val;
-            break;
-        case Mcp_Rpg_Hai_Rate_P2:
-            _rpgHaiRate = val;
-            break;
-        case Mcp_Rpg_Gd_P2:
-            _rpgGd = val;
-            break;
-        case Mcp_Rpg_Min_Dec_Fac_P2:
-            _rpgMinDecFac = val;
-            break;
-        case Mcp_Rpg_Min_Rate_P2:
-            _rpgMinRate = val;
-            break;
-        case Mcp_Rate_To_Set_On_First_Cnp_P2:
-            _rateToSetOnFirstCnp = val;
-            break;
-        case Mcp_Dce_Tcp_G_P2:
-            _dceTcpG = val;
-            break;
-        case Mcp_Dce_Tcp_Rtt_P2:
-            _dceTcpRtt = val;
-            break;
-        case Mcp_Rate_Reduce_Monitor_Period_P2:
-            _rateReduceMonitorPeriod = val;
-            break;
-        case Mcp_Initial_Alpha_Value_P2:
-            _initialAlphaValue = val;
-            break;
-        case Mcp_Min_Time_Between_Cnps_P2:
-            _minTimeBetweenCnps = val;
-            break;
-        case Mcp_Cnp_Dscp_P2:
-            _cnpDscp = val;
-            break;
-        case Mcp_Cnp_802p_Prio_P2:
-            _cnp802pPrio = val;
-            break;
-        default:
-            break;
-        }
-    }
-    return;
-}
-
-u_int32_t RoCECCEcnParams5thGen::getParam(mlxCfgParam paramType)
-{
-    // adrianc: consider moving to MAP on large scale TLVs
-    if (_port == 1) {
-        switch (paramType) {
-        case Mcp_Clamp_Tgt_Rate_P1:
-            return _clampTgtRate;
-        case Mcp_Clamp_Tgt_Rate_After_Time_Inc_P1:
-            return _clampTgtRateAfterTimeInc;
-        case Mcp_Rpg_Time_Reset_P1:
-            return _rpgTimeReset;
-        case Mcp_Rpg_Byte_Reset_P1:
-            return _rpgByteReset;
-        case Mcp_Rpg_Threshold_P1:
-            return _rpgThreshold;
-        case Mcp_Rpg_Max_Rate_P1:
-            return _rpgMaxRate;
-        case Mcp_Rpg_Ai_Rate_P1:
-            return _rpgAiRate;
-        case Mcp_Rpg_Hai_Rate_P1:
-            return _rpgHaiRate;
-        case Mcp_Rpg_Gd_P1:
-            return _rpgGd;
-        case Mcp_Rpg_Min_Dec_Fac_P1:
-            return _rpgMinDecFac;
-        case Mcp_Rpg_Min_Rate_P1:
-            return _rpgMinRate;
-        case Mcp_Rate_To_Set_On_First_Cnp_P1:
-            return _rateToSetOnFirstCnp;
-        case Mcp_Dce_Tcp_G_P1:
-            return _dceTcpG;
-        case Mcp_Dce_Tcp_Rtt_P1:
-            return _dceTcpRtt;
-        case Mcp_Rate_Reduce_Monitor_Period_P1:
-            return _rateReduceMonitorPeriod;
-        case Mcp_Initial_Alpha_Value_P1:
-            return _initialAlphaValue;
-        case Mcp_Min_Time_Between_Cnps_P1:
-            return _minTimeBetweenCnps;
-        case Mcp_Cnp_Dscp_P1:
-            return _cnpDscp;
-        case Mcp_Cnp_802p_Prio_P1:
-            return _cnp802pPrio;
-        default:
-            break;
-        }
-    } else if (_port == 2) {
-        switch (paramType) {
-        case Mcp_Clamp_Tgt_Rate_P2:
-            return _clampTgtRate;
-        case Mcp_Clamp_Tgt_Rate_After_Time_Inc_P2:
-            return _clampTgtRateAfterTimeInc;
-        case Mcp_Rpg_Time_Reset_P2:
-            return _rpgTimeReset;
-        case Mcp_Rpg_Byte_Reset_P2:
-            return _rpgByteReset;
-        case Mcp_Rpg_Threshold_P2:
-            return _rpgThreshold;
-        case Mcp_Rpg_Max_Rate_P2:
-            return _rpgMaxRate;
-        case Mcp_Rpg_Ai_Rate_P2:
-            return _rpgAiRate;
-        case Mcp_Rpg_Hai_Rate_P2:
-            return _rpgHaiRate;
-        case Mcp_Rpg_Gd_P2:
-            return _rpgGd;
-        case Mcp_Rpg_Min_Dec_Fac_P2:
-            return _rpgMinDecFac;
-        case Mcp_Rpg_Min_Rate_P2:
-            return _rpgMinRate;
-        case Mcp_Rate_To_Set_On_First_Cnp_P2:
-            return _rateToSetOnFirstCnp;
-        case Mcp_Dce_Tcp_G_P2:
-            return _dceTcpG;
-        case Mcp_Dce_Tcp_Rtt_P2:
-            return _dceTcpRtt;
-        case Mcp_Rate_Reduce_Monitor_Period_P2:
-            return _rateReduceMonitorPeriod;
-        case Mcp_Initial_Alpha_Value_P2:
-            return _initialAlphaValue;
-        case Mcp_Min_Time_Between_Cnps_P2:
-            return _minTimeBetweenCnps;
-        case Mcp_Cnp_Dscp_P2:
-            return _cnpDscp;
-        case Mcp_Cnp_802p_Prio_P2:
-            return _cnp802pPrio;
-        default:
-            break;
-        }
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t RoCECCEcnParams5thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    // adrianc: consider moving to MAP on large scale TLVs
-    if (_port == 1) {
-        switch (paramType) {
-        case Mcp_Clamp_Tgt_Rate_P1:
-            return _clampTgtRateDefault;
-        case Mcp_Clamp_Tgt_Rate_After_Time_Inc_P1:
-            return _clampTgtRateAfterTimeIncDefault;
-        case Mcp_Rpg_Time_Reset_P1:
-            return _rpgTimeResetDefault;
-        case Mcp_Rpg_Byte_Reset_P1:
-            return _rpgByteResetDefault;
-        case Mcp_Rpg_Threshold_P1:
-            return _rpgThresholdDefault;
-        case Mcp_Rpg_Max_Rate_P1:
-            return _rpgMaxRateDefault;
-        case Mcp_Rpg_Ai_Rate_P1:
-            return _rpgAiRateDefault;
-        case Mcp_Rpg_Hai_Rate_P1:
-            return _rpgHaiRateDefault;
-        case Mcp_Rpg_Gd_P1:
-            return _rpgGdDefault;
-        case Mcp_Rpg_Min_Dec_Fac_P1:
-            return _rpgMinDecFacDefault;
-        case Mcp_Rpg_Min_Rate_P1:
-            return _rpgMinRateDefault;
-        case Mcp_Rate_To_Set_On_First_Cnp_P1:
-            return _rateToSetOnFirstCnpDefault;
-        case Mcp_Dce_Tcp_G_P1:
-            return _dceTcpGDefault;
-        case Mcp_Dce_Tcp_Rtt_P1:
-            return _dceTcpRttDefault;
-        case Mcp_Rate_Reduce_Monitor_Period_P1:
-            return _rateReduceMonitorPeriodDefault;
-        case Mcp_Initial_Alpha_Value_P1:
-            return _initialAlphaValueDefault;
-        case Mcp_Min_Time_Between_Cnps_P1:
-            return _minTimeBetweenCnpsDefault;
-        case Mcp_Cnp_Dscp_P1:
-            return _cnpDscpDefault;
-        case Mcp_Cnp_802p_Prio_P1:
-            return _cnp802pPrioDefault;
-        default:
-            break;
-        }
-    } else if (_port == 2) {
-        switch (paramType) {
-        case Mcp_Clamp_Tgt_Rate_P2:
-            return _clampTgtRateDefault;
-        case Mcp_Clamp_Tgt_Rate_After_Time_Inc_P2:
-            return _clampTgtRateAfterTimeIncDefault;
-        case Mcp_Rpg_Time_Reset_P2:
-            return _rpgTimeResetDefault;
-        case Mcp_Rpg_Byte_Reset_P2:
-            return _rpgByteResetDefault;
-        case Mcp_Rpg_Threshold_P2:
-            return _rpgThresholdDefault;
-        case Mcp_Rpg_Max_Rate_P2:
-            return _rpgMaxRateDefault;
-        case Mcp_Rpg_Ai_Rate_P2:
-            return _rpgAiRateDefault;
-        case Mcp_Rpg_Hai_Rate_P2:
-            return _rpgHaiRateDefault;
-        case Mcp_Rpg_Gd_P2:
-            return _rpgGdDefault;
-        case Mcp_Rpg_Min_Dec_Fac_P2:
-            return _rpgMinDecFacDefault;
-        case Mcp_Rpg_Min_Rate_P2:
-            return _rpgMinRateDefault;
-        case Mcp_Rate_To_Set_On_First_Cnp_P2:
-            return _rateToSetOnFirstCnpDefault;
-        case Mcp_Dce_Tcp_G_P2:
-            return _dceTcpGDefault;
-        case Mcp_Dce_Tcp_Rtt_P2:
-            return _dceTcpRttDefault;
-        case Mcp_Rate_Reduce_Monitor_Period_P2:
-            return _rateReduceMonitorPeriodDefault;
-        case Mcp_Initial_Alpha_Value_P2:
-            return _initialAlphaValueDefault;
-        case Mcp_Min_Time_Between_Cnps_P2:
-            return _minTimeBetweenCnpsDefault;
-        case Mcp_Cnp_Dscp_P2:
-            return _cnpDscpDefault;
-        case Mcp_Cnp_802p_Prio_P2:
-            return _cnp802pPrioDefault;
-        default:
-            break;
-        }
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-void RoCECCEcnParams5thGen::setParams(u_int32_t clampTgtRate, u_int32_t clampTgtRateAfterTimeInc, u_int32_t rpgTimeReset, u_int32_t rpgByteReset,
-            u_int32_t rpgThreshold, u_int32_t rpgMaxRate, u_int32_t rpgAiRate, u_int32_t rpgHaiRate,
-            u_int32_t rpgGd, u_int32_t rpgMinDecFac, u_int32_t rpgMinRate, u_int32_t rateToSetOnFirstCnp,
-            u_int32_t dceTcpG, u_int32_t dceTcpRtt, u_int32_t rateReduceMonitorPeriod, u_int32_t initialAlphaValue,
-            u_int32_t minTimeBetweenCnps, u_int32_t cnpDscp, u_int32_t cnp802pPrio){
-    _clampTgtRate = clampTgtRate;
-    _clampTgtRateAfterTimeInc = clampTgtRateAfterTimeInc;
-    _rpgTimeReset = rpgTimeReset;
-    _rpgByteReset = rpgByteReset;
-    _rpgThreshold = rpgThreshold;
-    _rpgMaxRate = rpgMaxRate;
-    _rpgAiRate = rpgAiRate;
-    _rpgHaiRate = rpgHaiRate;
-    _rpgGd = rpgGd;
-    _rpgMinDecFac = rpgMinDecFac;
-    _rpgMinRate = rpgMinRate;
-    _rateToSetOnFirstCnp = rateToSetOnFirstCnp;
-    _dceTcpG = dceTcpG;
-    _dceTcpRtt = dceTcpRtt;
-    _rateReduceMonitorPeriod = rateReduceMonitorPeriod;
-    _initialAlphaValue = initialAlphaValue;
-    _minTimeBetweenCnps = minTimeBetweenCnps;
-    _cnpDscp = cnpDscp;
-    _cnp802pPrio = cnp802pPrio;
-}
-
-void RoCECCEcnParams5thGen::updateClassAttrFromDefaultParams()
-{
-    setParams(_clampTgtRateDefault,_clampTgtRateAfterTimeIncDefault,
-     _rpgTimeResetDefault,
-     _rpgByteResetDefault,
-     _rpgThresholdDefault,
-     _rpgMaxRateDefault,
-     _rpgAiRateDefault,
-     _rpgHaiRateDefault,
-     _rpgGdDefault,
-     _rpgMinDecFacDefault,
-     _rpgMinRateDefault,
-     _rateToSetOnFirstCnpDefault,
-     _dceTcpGDefault,
-     _dceTcpRttDefault,
-     _rateReduceMonitorPeriodDefault,
-     _initialAlphaValueDefault,
-     _minTimeBetweenCnpsDefault,
-     _cnpDscpDefault,
-     _cnp802pPrioDefault);
-}
-
-int RoCECCEcnParams5thGen::getFromDev(mfile* mf)
-{
-    GET_FROM_DEV_5TH_GEN(mf, tools_open_roce_cc_ecn, "RoCE CC ECN");
-}
-
-int RoCECCEcnParams5thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    SET_ON_DEV_5TH_GEN(mf, ignoreCheck, tools_open_roce_cc_ecn, "RoCE CC ECN");
-}
-int RoCECCEcnParams5thGen::getDefaultParams(mfile* mf)
-{
-    GET_DEFAULT_5TH_GEN(mf, tools_open_roce_cc_ecn, "RoCE CC ECN");
-}
-
-u_int32_t _dceTcpG;
-u_int32_t _dceTcpRtt;
-u_int32_t _rateReduceMonitorPeriod;
-u_int32_t _initialAlphaValue;
-u_int32_t _minTimeBetweenCnps;
-u_int32_t _cnpDscp;
-u_int32_t _cnp802pPrio;
-
-bool RoCECCEcnParams5thGen::hardLimitCheck()
-{
-    if (_clampTgtRate > 1) {
-        errmsg("Illegal CLAMP_TGT_RATE_P%d parameter value(%d), value should be 0 or 1", _port, _clampTgtRate);
-        return false;
-    }
-
-    if (_clampTgtRateAfterTimeInc > 1) {
-        errmsg("Illegal CLAMP_TGT_RATE_AFTER_TIME_INC_P%d parameter value(%d), value should be 0 or 1", _port, _clampTgtRateAfterTimeInc);
-        return false;
-    }
-
-    if ( _rpgTimeReset >= (1 << 17)) {
-        errmsg("Illegal RPG_TIME_RESET_P%d parameter value(%d), value should be [0..%d]", _port, _rpgTimeReset, (1 << 17) - 1);
-        return false;
-    }
-
-    if (_rpgByteReset >= (1 << 15)) {
-        errmsg("Illegal RPG_BYTE_RESET_P%d parameter value(%d), value should be [0..%d]", _port, _rpgByteReset, (1 << 15) - 1);
-        return false;
-    }
-
-    if (_rpgThreshold >= (1 << 5)) {
-        errmsg("Illegal RPG_THRESHOLD_P%d parameter value(%d), value should be [0..%d]", _port, _rpgThreshold, (1 << 5) - 1);
-        return false;
-    }
-
-    if ( _rpgAiRate >= (1 << 17)) {
-        errmsg("Illegal RPG_AI_RATE_P%d parameter value(%d), value should be [0..%d]", _port, _rpgAiRate, (1 << 17) - 1);
-        return false;
-    }
-
-    if ( _rpgHaiRate >= (1 << 17)) {
-        errmsg("Illegal RPG_HAI_RATE_P%d parameter value(%d), value should be [0..%d]", _port, _rpgHaiRate, (1 << 17) - 1);
-        return false;
-    }
-
-    if (_rpgGd > 15) {
-        errmsg("Illegal RPG_GD_P%d parameters value(%d), value should be [0..%d]", _port, _rpgGd, 15);
-        return false;
-    }
-
-    if (_rpgMinDecFac == 0 || _rpgMinDecFac > 100) {
-        errmsg("Illegal RPG_MIN_DEC_FAC_P%d parameters value(%d), value should be [1..100]", _port, _rpgMinDecFac);
-        return false;
-    }
-
-    if (_rpgMinRate >= (1 << 17)) {
-        errmsg("Illegal RPG_MIN_RATE_P%d parameters value(%d), value should be [0..%d]", _port, _rpgMinRate, (1 << 17) - 1);
-        return false;
-    }
-
-    if (_rateToSetOnFirstCnp >= (1 << 17)) {
-        errmsg("Illegal RATE_TO_SET_ON_FIRST_CNP_P%d parameters value(%d), value should be [0..%d]", _port, _rateToSetOnFirstCnp, (1 << 17) - 1);
-        return false;
-    }
-
-    if (_dceTcpG == 0 || _dceTcpG >= (1 << 10)) {
-        errmsg("Illegal DCE_TCP_G_P%d parameters value(%d), value should be [1..%d]", _port, _dceTcpG, (1 << 10) - 1);
-        return false;
-    }
-
-    if (_dceTcpRtt == 0 || _dceTcpRtt >= (1 << 17)) {
-        errmsg("Illegal DCE_TCP_RTT_P%d parameters value(%d), value should be [1..%d]", _port, _dceTcpRtt, (1 << 17) - 1);
-        return false;
-    }
-
-    if (_rateReduceMonitorPeriod == 0 || _rateReduceMonitorPeriod >= (1 << 17)) {
-        errmsg("Illegal RATE_REDUCE_MONITOR_PERIOD_P%d parameters value(%d), value should be [1..%d]", _port, _rateReduceMonitorPeriod, (1 << 17) - 1);
-        return false;
-    }
-
-    if (_initialAlphaValue >= (1 << 10)) {
-        errmsg("Illegal INITIAL_ALPHA_VALUE_P%d parameters value(%d), value should be [0..%d]", _port, _initialAlphaValue, (1 << 10) - 1);
-        return false;
-    }
-
-    if (_minTimeBetweenCnps >= (1 << 17)) {
-        errmsg("Illegal MIN_TIME_BETWEEN_CNPS_P%d parameters value(%d), value should be [0..%d]", _port, _minTimeBetweenCnps, (1 << 17) - 1);
-        return false;
-    }
-
-    if (_cnpDscp >= (1 << 6)) {
-        errmsg("Illegal CNP_DSCP_P%d parameters value(%d), value should be [0..%d]", _port, _cnpDscp, (1 << 6) - 1);
-        return false;
-    }
-
-    if (_cnp802pPrio >= (1 << 3)) {
-        errmsg("Illegal CNP_802P_PRIO_P%d parameters value(%d), value should be [0..%d]", _port, _cnp802pPrio, (1 << 3) - 1);
-        return false;
-    }
-    return true;
-}
-
-u_int32_t RoCECCEcnParams5thGen::getTlvTypeBe()
-{
-    struct tools_open_per_port_type type;
-    u_int32_t tlvType = 0;
-    type.param_class = CLASS_PHYS_PORT;
-    type.param_idx = tlvTypeIdx;
-    type.port = _port;
-    tools_open_per_port_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-
-void RoCECCEcnParams5thGen::updateTlvFromClassAttr(void* tlv)
-{
-    struct tools_open_roce_cc_ecn* roceCcEcnTlv = (struct tools_open_roce_cc_ecn*)tlv;
-    roceCcEcnTlv->clamp_tgt_rate = _clampTgtRate;
-    roceCcEcnTlv->clamp_tgt_rate_after_time_inc = _clampTgtRateAfterTimeInc;
-    roceCcEcnTlv->cnp_802p_prio = _cnp802pPrio;
-    roceCcEcnTlv->cnp_dscp = _cnpDscp;
-    roceCcEcnTlv->dce_tcp_g = _dceTcpG;
-    roceCcEcnTlv->dce_tcp_rtt = _dceTcpRtt;
-    roceCcEcnTlv->initial_alpha_value = _initialAlphaValue;
-    roceCcEcnTlv->min_time_between_cnps = _minTimeBetweenCnps;
-    roceCcEcnTlv->rate_reduce_monitor_period = _rateReduceMonitorPeriod;
-    roceCcEcnTlv->rate_to_set_on_first_cnp = _rateToSetOnFirstCnp;
-    roceCcEcnTlv->rpg_ai_rate = _rpgAiRate;
-    roceCcEcnTlv->rpg_byte_reset = _rpgByteReset;
-    roceCcEcnTlv->rpg_gd = _rpgGd;
-    roceCcEcnTlv->rpg_hai_rate = _rpgHaiRate;
-    roceCcEcnTlv->rpg_max_rate = _rpgMaxRate;
-    roceCcEcnTlv->rpg_min_dec_fac = _rpgMinDecFac;
-    roceCcEcnTlv->rpg_min_rate = _rpgMinRate;
-    roceCcEcnTlv->rpg_threshold = _rpgThreshold;
-    roceCcEcnTlv->rpg_time_reset = _rpgTimeReset;
-    return;
-}
-
-void RoCECCEcnParams5thGen::updateClassAttrFromTlv(void* tlv)
-{
-    struct tools_open_roce_cc_ecn* roceCcEcnTlv = (struct tools_open_roce_cc_ecn*)tlv;
-    _clampTgtRate = roceCcEcnTlv->clamp_tgt_rate;
-    _clampTgtRateAfterTimeInc = roceCcEcnTlv->clamp_tgt_rate_after_time_inc;
-    _cnp802pPrio = roceCcEcnTlv->cnp_802p_prio;
-    _cnpDscp = roceCcEcnTlv->cnp_dscp;
-    _dceTcpG = roceCcEcnTlv->dce_tcp_g;
-    _dceTcpRtt = roceCcEcnTlv->dce_tcp_rtt;
-    _initialAlphaValue = roceCcEcnTlv->initial_alpha_value;
-    _minTimeBetweenCnps = roceCcEcnTlv->min_time_between_cnps;
-    _rateReduceMonitorPeriod = roceCcEcnTlv->rate_reduce_monitor_period;
-    _rateToSetOnFirstCnp = roceCcEcnTlv->rate_to_set_on_first_cnp;
-    _rpgAiRate = roceCcEcnTlv->rpg_ai_rate;
-    _rpgByteReset = roceCcEcnTlv->rpg_byte_reset;
-    _rpgGd = roceCcEcnTlv->rpg_gd;
-    _rpgHaiRate = roceCcEcnTlv->rpg_hai_rate;
-    _rpgMaxRate = roceCcEcnTlv->rpg_max_rate;
-    _rpgMinDecFac = roceCcEcnTlv->rpg_min_dec_fac;
-    _rpgMinRate = roceCcEcnTlv->rpg_min_rate;
-    _rpgThreshold = roceCcEcnTlv->rpg_threshold;
-    _rpgTimeReset = roceCcEcnTlv->rpg_time_reset;
-    return;
-}
-
-void RoCECCEcnParams5thGen::updateClassDefaultAttrFromTlv(void* tlv)
-{
-    struct tools_open_roce_cc_ecn* roceCcEcnTlv = (struct tools_open_roce_cc_ecn*)tlv;
-    _clampTgtRateDefault = roceCcEcnTlv->clamp_tgt_rate;
-    _clampTgtRateAfterTimeIncDefault = roceCcEcnTlv->clamp_tgt_rate_after_time_inc;
-    _cnp802pPrioDefault = roceCcEcnTlv->cnp_802p_prio;
-    _cnpDscpDefault = roceCcEcnTlv->cnp_dscp;
-    _dceTcpGDefault = roceCcEcnTlv->dce_tcp_g;
-    _dceTcpRttDefault = roceCcEcnTlv->dce_tcp_rtt;
-    _initialAlphaValueDefault = roceCcEcnTlv->initial_alpha_value;
-    _minTimeBetweenCnpsDefault = roceCcEcnTlv->min_time_between_cnps;
-    _rateReduceMonitorPeriodDefault = roceCcEcnTlv->rate_reduce_monitor_period;
-    _rateToSetOnFirstCnpDefault = roceCcEcnTlv->rate_to_set_on_first_cnp;
-    _rpgAiRateDefault = roceCcEcnTlv->rpg_ai_rate;
-    _rpgByteResetDefault = roceCcEcnTlv->rpg_byte_reset;
-    _rpgGdDefault = roceCcEcnTlv->rpg_gd;
-    _rpgHaiRateDefault = roceCcEcnTlv->rpg_hai_rate;
-    _rpgMaxRateDefault = roceCcEcnTlv->rpg_max_rate;
-    _rpgMinDecFacDefault = roceCcEcnTlv->rpg_min_dec_fac;
-    _rpgMinRateDefault = roceCcEcnTlv->rpg_min_rate;
-    _rpgThresholdDefault = roceCcEcnTlv->rpg_threshold;
-    _rpgTimeResetDefault = roceCcEcnTlv->rpg_time_reset;
-    return;
-}
-
-/*
- * PrebootBootSettingsParams4thGen Class implementation:
- */
-
-bool PrebootBootSettingsParams4thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    (void)param;
-    struct tools_open_query_def_params_per_port portParams;
-    int rc;
-    rc = getDefaultParams4thGen(mf, _port, &portParams);
-    if (rc) {
-        return false;
-    }
-    return true; //portParams.nv_config_boot_parameters; <--BUG fw is not updating this bit, assume supported if query_def_params command passess
-}
-
-void PrebootBootSettingsParams4thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if ((paramType == Mcp_Boot_Option_Rom_En_P1 && _port == 1) || (paramType == Mcp_Boot_Option_Rom_En_P2 && _port == 2)) {
-        _bootOptionRomEn = val;
-    }
-
-    if ((paramType == Mcp_Boot_Vlan_En_P1 && _port == 1) || (paramType == Mcp_Boot_Vlan_En_P2 && _port == 2)) {
-        _bootVlanEn = val;
-    }
-
-    if ((paramType == Mcp_Boot_Retry_Cnt_P1 && _port == 1) || (paramType == Mcp_Boot_Retry_Cnt_P2 && _port == 2)) {
-        _bootRetryCnt = val;
-    }
-
-    if ((paramType == Mcp_Legacy_Boot_Protocol_P1 && _port == 1) || (paramType == Mcp_Legacy_Boot_Protocol_P2 && _port == 2)) {
-        _legacyBootProtocol = val;
-    }
-
-    if ((paramType == Mcp_Boot_Vlan_P1 && _port == 1) || (paramType == Mcp_Boot_Vlan_P2 && _port == 2)) {
-        _bootVlan = val;
-    }
-}
-
-u_int32_t PrebootBootSettingsParams4thGen::getParam(mlxCfgParam paramType)
-{
-    if ((paramType == Mcp_Boot_Option_Rom_En_P1 && _port == 1) || (paramType == Mcp_Boot_Option_Rom_En_P2 && _port == 2)) {
-        return _bootOptionRomEn;
-    }
-
-    if ((paramType == Mcp_Boot_Vlan_En_P1 && _port == 1) || (paramType == Mcp_Boot_Vlan_En_P2 && _port == 2)) {
-        return _bootVlanEn;
-    }
-
-    if ((paramType == Mcp_Boot_Retry_Cnt_P1 && _port == 1) || (paramType == Mcp_Boot_Retry_Cnt_P2 && _port == 2)) {
-        return _bootRetryCnt;
-    }
-
-    if ((paramType == Mcp_Legacy_Boot_Protocol_P1 && _port == 1) || (paramType == Mcp_Legacy_Boot_Protocol_P2 && _port == 2)) {
-        return _legacyBootProtocol;
-    }
-
-    if ((paramType == Mcp_Boot_Vlan_P1 && _port == 1) || (paramType == Mcp_Boot_Vlan_P2 && _port == 2)) {
-        return _bootVlan;
-    }
-
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t PrebootBootSettingsParams4thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if ((paramType == Mcp_Boot_Option_Rom_En_P1 && _port == 1) || (paramType == Mcp_Boot_Option_Rom_En_P2 && _port == 2)) {
-        return _bootOptionRomEnDefault;
-    }
-
-    if ((paramType == Mcp_Boot_Vlan_En_P1 && _port == 1) || (paramType == Mcp_Boot_Vlan_En_P2 && _port == 2)) {
-        return _bootVlanEnDefault;
-    }
-
-    if ((paramType == Mcp_Boot_Retry_Cnt_P1 && _port == 1) || (paramType == Mcp_Boot_Retry_Cnt_P2 && _port == 2)) {
-        return _bootRetryCntDefault;
-    }
-
-    if ((paramType == Mcp_Legacy_Boot_Protocol_P1 && _port == 1) || (paramType == Mcp_Legacy_Boot_Protocol_P2 && _port == 2)) {
-        return _legacyBootProtocolDefault;
-    }
-
-    if ((paramType == Mcp_Boot_Vlan_P1 && _port == 1) || (paramType == Mcp_Boot_Vlan_P2 && _port == 2)) {
-        return _bootVlanDefault;
-    }
-
-    return MLXCFG_UNKNOWN;
-}
-
-void PrebootBootSettingsParams4thGen::setParams(u_int32_t bootOptionRomEn, u_int32_t bootVlanEn, u_int32_t bootRetryCnt,
-            u_int32_t legacyBootProtocol, u_int32_t bootVlan)
-{
-    _bootOptionRomEn = bootOptionRomEn;
-    _bootVlanEn = bootVlanEn;
-    _bootRetryCnt = bootRetryCnt;
-    _legacyBootProtocol = legacyBootProtocol;
-    _bootVlan = bootVlan;
-}
-
-void PrebootBootSettingsParams4thGen::updateClassAttrFromDefaultParams()
-{
-    setParams(_bootOptionRomEnDefault, _bootVlanEnDefault, _bootRetryCntDefault,
-            _legacyBootProtocolDefault, _bootVlanDefault);
-}
-
-int PrebootBootSettingsParams4thGen::getFromDev(mfile* mf)
-{
-    GET_FROM_DEV_4TH_GEN(mf, tools_open_preboot_boot_settings, "Preboot Boot Settings", _port);
-}
-
-int PrebootBootSettingsParams4thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    SET_ON_DEV_4TH_GEN(mf, ignoreCheck, tools_open_preboot_boot_settings, "Preboot Boot Settings", _port);
-}
-
-void PrebootBootSettingsParams4thGen::updateTlvFromClassAttr(void* tlv)
-{
-
-    struct tools_open_preboot_boot_settings* prebootTlv = (struct tools_open_preboot_boot_settings*)tlv;
-    prebootTlv->boot_option_rom_en = _bootOptionRomEn;
-    prebootTlv->boot_vlan_en = _bootVlanEn;
-    prebootTlv->boot_retry_count = _bootRetryCnt;
-    prebootTlv->legacy_boot_protocol = _legacyBootProtocol;
-    prebootTlv->boot_vlan = _bootVlan;
-
-}
-
-void PrebootBootSettingsParams4thGen::updateClassAttrFromTlv(void* tlv)
-{
-    struct tools_open_preboot_boot_settings* prebootTlv = (struct tools_open_preboot_boot_settings*)tlv;
-    _bootOptionRomEn = prebootTlv->boot_option_rom_en;
-    _bootVlanEn = prebootTlv->boot_vlan_en;
-    _bootRetryCnt = prebootTlv->boot_retry_count;
-    _legacyBootProtocol = prebootTlv->legacy_boot_protocol;
-    _bootVlan = prebootTlv->boot_vlan;
-}
-
-void PrebootBootSettingsParams4thGen::updateClassDefaultAttrFromTlv(void* tlv)
-{
-    struct tools_open_preboot_boot_settings* prebootTlv = (struct tools_open_preboot_boot_settings*)tlv;
-    _bootOptionRomEnDefault = prebootTlv->boot_option_rom_en;
-    _bootVlanEnDefault = prebootTlv->boot_vlan_en;
-    _bootRetryCntDefault = prebootTlv->boot_retry_count;
-    _legacyBootProtocolDefault = prebootTlv->legacy_boot_protocol;
-    _bootVlanDefault = prebootTlv->boot_vlan;
-}
-
-int PrebootBootSettingsParams4thGen::getDefaultParams(mfile* mf)
-{
-    struct tools_open_query_def_params_per_port portParams;
-    int rc;
-    rc = getDefaultParams4thGen(mf, _port, &portParams);
-    if (rc == MCE_SUCCESS) {
-        _bootOptionRomEnDefault = portParams.default_boot_option_rom_en;
-        _bootVlanEnDefault = portParams.default_boot_vlan_en;
-        _bootRetryCntDefault = portParams.default_boot_retry_cnt;
-        _legacyBootProtocolDefault = portParams.default_boot_protocol;
-        _bootVlanDefault = portParams.default_boot_vlan;
-        updateClassAttrFromDefaultParams();
-    } else {
-        rc = MCE_GET_DEFAULT_PARAMS;
-    }
-    return rc;
-}
-
-bool PrebootBootSettingsParams4thGen::hardLimitCheck()
-{
-    if (_bootOptionRomEn > 1) {
-        errmsg("Illegal BOOT_OPTION_ROM_EN_P%d parameter value, valid values: 0 or 1", ((_port == 1) ? 1 : 2));
-        return false;
-    }
-    if (_bootVlanEn > 1) {
-        errmsg("Illegal BOOT_VLAN_EN_P%d parameter value, valid values: 0 or 1", ((_port == 1) ? 1 : 2));
-        return false;
-    }
-    if (_bootRetryCnt > 7) {
-        errmsg("Illegal BOOT_RETRY_CNT_P%d parameter value, valid values: [0..7]", ((_port == 1) ? 1 : 2));
-        return false;
-    }
-    if (_legacyBootProtocol > 3) {
-        errmsg("Illegal LEGACY_BOOT_PROTOCOL_P%d parameter value, valid values: [0..3]", ((_port == 1) ? 1 : 2));
-        return false;
-    }
-    if (_bootVlan >= (1 << 12)) {
-        errmsg("Illegal BOOT_VLAN_P%d parameter value, valid values: [0..4095]", ((_port == 1) ? 1 : 2));
-        return false;
-    }
-    return true;
-}
-
-/*
- * ExternalPort5thGen Class implementation
- */
-
-
-bool ExternalPort5thGen::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    (void)param;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get External Port parameter capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!suppRead || !suppWrite) {
-        return false;
-    }
-    return true;
-}
-
-void ExternalPort5thGen::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_Port_Owner) {
-        _portOwner = val;
-    }
-    if (paramType == Mcp_Allow_Rd_Counters) {
-        _allowRdCounters = val;
-    }
-    return;
-}
-
-u_int32_t ExternalPort5thGen::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Port_Owner) {
-        return _portOwner;
-    }
-    if (paramType == Mcp_Allow_Rd_Counters) {
-        return _allowRdCounters;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t ExternalPort5thGen::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_Port_Owner) {
-        return _portOwnerDefault;
-    }
-    if (paramType == Mcp_Allow_Rd_Counters) {
-        return _allowRdCountersDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-void ExternalPort5thGen::setParams(u_int32_t portOwner, u_int32_t allowRdCounters)
-{
-    _portOwner = portOwner;
-    _allowRdCounters = allowRdCounters;
-}
-
-void ExternalPort5thGen::updateClassAttrFromDefaultParams()
-{
-    setParams(
-            _portOwnerDefault,
-            _allowRdCounters);
-}
-
-int ExternalPort5thGen::getFromDev(mfile* mf)
-{
-    GET_FROM_DEV_5TH_GEN(mf, tools_open_external_port, "External Port");
-}
-
-int ExternalPort5thGen::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    SET_ON_DEV_5TH_GEN(mf, ignoreCheck, tools_open_external_port, "External Port");
-}
-int ExternalPort5thGen::getDefaultParams(mfile* mf)
-{
-    GET_DEFAULT_5TH_GEN(mf, tools_open_external_port, "External Port");
-}
-
-bool ExternalPort5thGen::hardLimitCheck()
-{
-    if (_portOwner > 1) {
-        errmsg("Illegal PORT_OWNER parameter value(%d), value should be 0 or 1", _portOwner);
-        return false;
-    }
-    if (_allowRdCounters > 1) {
-        errmsg("Illegal ALLOW_RD_COUNTERS parameter value(%d), value should be 0 or 1", _allowRdCounters);
-        return false;
-    }
-    return true;
-}
-
-u_int32_t ExternalPort5thGen::getTlvTypeBe()
-{
-    struct tools_open_per_host_type type;
-    u_int32_t tlvType = 0;
-    type.param_class = CLASS_PER_HOST;
-    type.param_idx = tlvTypeIdx;
-    type.function = 0;
-    type.host = 0;
-    tools_open_per_host_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-void ExternalPort5thGen::updateTlvFromClassAttr(void* tlv)
-{
-    struct tools_open_external_port* externalPortTlv = (struct tools_open_external_port*)tlv;
-    externalPortTlv->port_owner = _portOwner;
-    externalPortTlv->allow_rd_counters = _allowRdCounters;
-    return;
-}
-
-void ExternalPort5thGen::updateClassAttrFromTlv(void* tlv)
-{
-    struct tools_open_external_port* externalPortTlv = (struct tools_open_external_port*)tlv;
-    _portOwner = externalPortTlv->port_owner;
-    _allowRdCounters = externalPortTlv->allow_rd_counters;
-    return;
-}
-
-void ExternalPort5thGen::updateClassDefaultAttrFromTlv(void* tlv)
-{
-    struct tools_open_external_port* externalPortTlv = (struct tools_open_external_port*)tlv;
-    _portOwnerDefault = externalPortTlv->port_owner;
-    _allowRdCountersDefault = externalPortTlv->allow_rd_counters;
-    return;
-}
-
-/*
- * QoS Class implementation
- */
-
-bool QoS::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    (void)param;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get QoS capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!suppRead || !suppWrite) {
-        return false;
-    }
-
-    if (!getCap(mf)) {
-        return false;
-    }
-
-    return true;
-}
-
-void QoS::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_QoS_Num_of_TC_P1 || paramType == Mcp_QoS_Num_of_TC_P2) {
-        _numOfTC = val;
-    }
-
-    if (paramType == Mcp_QoS_Num_of_VL_P1 || paramType == Mcp_QoS_Num_of_VL_P2) {
-        _numOfVL = val;
-    }
-    return;
-}
-
-u_int32_t QoS::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_QoS_Num_of_TC_P1 || paramType == Mcp_QoS_Num_of_TC_P2) {
-        return _numOfTC;
-    }
-    if (paramType == Mcp_QoS_Num_of_VL_P1 || paramType == Mcp_QoS_Num_of_VL_P2) {
-        return _numOfVL;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t QoS::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_QoS_Num_of_TC_P1 || paramType == Mcp_QoS_Num_of_TC_P2) {
-        return _numOfTCDefault;
-    }
-    if (paramType == Mcp_QoS_Num_of_VL_P1 || paramType == Mcp_QoS_Num_of_VL_P2) {
-        return _numOfVLDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-void QoS::setParams(u_int32_t numOfTC, u_int32_t numOfVL)
-{
-    _numOfTC = numOfTC;
-    _numOfVL = numOfVL;
-}
-
-void QoS::updateClassAttrFromDefaultParams()
-{
-    setParams(
-            _numOfTC,
-            _numOfVL);
-}
-
-int QoS::getFromDev(mfile* mf)
-{
-    GET_FROM_DEV_5TH_GEN(mf, tools_open_qos, "QoS Conf");
-}
-
-int QoS::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    SET_ON_DEV_5TH_GEN(mf, ignoreCheck, tools_open_qos, "QoS Conf");
-}
-
-int QoS::getDefaultParams(mfile* mf)
-{
-    GET_DEFAULT_5TH_GEN(mf, tools_open_qos, "QoS Conf");
-}
-
-bool QoS::getCap(mfile *mf)
-{
-    MError rc;
-    u_int8_t tlvCapBuff[TOOLS_OPEN_QOS_CAP_SIZE] = {0};
-    struct tools_open_qos_cap qosCapTlv;
-    memset(&qosCapTlv, 0, sizeof(qosCapTlv));
-    rc = mnvaCom5thGen(mf, &tlvCapBuff[0], TOOLS_OPEN_QOS_CAP_SIZE, getQoSCapTlvTypeBe(), REG_ACCESS_METHOD_GET);
-    if (rc) {
-        return false;
-    }
-    tools_open_qos_cap_unpack(&qosCapTlv, tlvCapBuff);
-    _maxNumOfTC = qosCapTlv.max_num_of_tc;
-    _maxNumOfVL = qosCapTlv.max_num_of_vl;
-    return true;
-}
-
-bool QoS::hardLimitCheckAux(u_int32_t maxNumOfX, u_int32_t numOfX,const char *x)
-{
-    u_int32_t minVal;
-    u_int32_t maxVal;
-    // 0 and 8 have the same maxNumOfX meaning (they both indicate max 8 TCs which translates to the value 0)
-    minVal = (maxNumOfX == 0 || maxNumOfX >= 8) ? 0 : 1;
-    maxVal = (maxNumOfX == 0 || maxNumOfX == 8) ? 7 : maxNumOfX;
-    if ((numOfX < minVal) || numOfX > maxVal) {
-        errmsg("Illegal %s parameter value(%d), max allowed value is (%d), min allowed value is (%d)",
-                x,
-                numOfX,
-                maxVal,
-                minVal);
-        return false;
-    }
-
-    return true;
-}
-
-bool QoS::hardLimitCheck()
-{
-    if(!hardLimitCheckAux(_maxNumOfTC, _numOfTC, _port == 1 ? "NUM_OF_TC_P1" : "NUM_OF_TC_P2")) {
-        return false;
-    }
-
-    if(_numOfVL < 1 || _numOfVL > _maxNumOfVL){
-        errmsg("Illegal %s parameter value(%x), max allowed value is (%x), min allowed value is (%x)",
-            _port == 1 ? "NUM_OF_VL_P1" : "NUM_OF_VL_P2",
-            _numOfVL,
-            _maxNumOfVL,
-            1);
-        return false;
-    }
-
-    return true;
-}
-
-u_int32_t QoS::getTlvTypeBe()
-{
-    struct tools_open_per_port_type type;
-    u_int32_t tlvType = 0;
-    type.param_class = CLASS_PHYS_PORT;
-    type.param_idx = tlvTypeIdx;
-    type.port = _port;
-    tools_open_per_port_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-void QoS::updateTlvFromClassAttr(void* tlv)
-{
-    struct tools_open_qos* qosPortTlv = (struct tools_open_qos*)tlv;
-    qosPortTlv->num_of_tc = _numOfTC;
-    qosPortTlv->num_of_vl = _numOfVL;
-    return;
-}
-
-void QoS::updateClassAttrFromTlv(void* tlv)
-{
-    struct tools_open_qos* qosPortTlv = (struct tools_open_qos*)tlv;
-    _numOfTC = qosPortTlv->num_of_tc;
-    _numOfVL = qosPortTlv->num_of_vl;
-    return;
-}
-
-void QoS::updateClassDefaultAttrFromTlv(void* tlv)
-{
-    struct tools_open_qos* qosPortTlv = (struct tools_open_qos*)tlv;
-    _numOfTCDefault = qosPortTlv->num_of_tc;
-    _numOfVLDefault = qosPortTlv->num_of_vl;
-    return;
-}
-
-u_int32_t QoS::getQoSCapTlvTypeBe()
-{
-    struct tools_open_per_port_type type;
-    u_int32_t tlvType = 0;
-    type.param_class = CLASS_PHYS_PORT;
-    type.param_idx = QOS_CAP;
-    type.port = _port;
-    tools_open_per_port_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-
-/*
- * LLDP Client Settings Class implementation
- */
-
-bool LLDPClientSettings::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    (void)param;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get LLDP Client Settings capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!suppRead || !suppWrite) {
-        return false;
-    }
-
-    if (!getCap(mf)) {
-        return false;
-    }
-
-    return true;
-}
-
-void LLDPClientSettings::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_LLDP_NB_RX_Mode_P1|| paramType == Mcp_LLDP_NB_RX_Mode_P2) {
-        _userSpecifiedRx = true;
-        _lldpNbRxMode = val;
-    }
-    if (paramType == Mcp_LLDP_NB_TX_Mode_P1|| paramType == Mcp_LLDP_NB_TX_Mode_P2) {
-        _userSpecifiedTx = true;
-        _lldpNbTxMode = val;
-    }
-    if (paramType == Mcp_LLDP_NB_DCBX_P1|| paramType == Mcp_LLDP_NB_DCBX_P2) {
-        _userSpecifiedDcbx = true;
-        _lldpNbDcbx = val;
-    }
-    return;
-}
-
-u_int32_t LLDPClientSettings::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_LLDP_NB_RX_Mode_P1|| paramType == Mcp_LLDP_NB_RX_Mode_P2) {
-        return _lldpNbRxMode;
-    }
-    if (paramType == Mcp_LLDP_NB_TX_Mode_P1|| paramType == Mcp_LLDP_NB_TX_Mode_P2) {
-        return _lldpNbTxMode;
-    }
-    if (paramType == Mcp_LLDP_NB_DCBX_P1|| paramType == Mcp_LLDP_NB_DCBX_P2) {
-        return _lldpNbDcbx;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t LLDPClientSettings::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_LLDP_NB_RX_Mode_P1|| paramType == Mcp_LLDP_NB_RX_Mode_P2) {
-        return _lldpNbRxModeDefault;
-    }
-    if (paramType == Mcp_LLDP_NB_TX_Mode_P1|| paramType == Mcp_LLDP_NB_TX_Mode_P2) {
-        return _lldpNbTxModeDefault;
-    }
-    if (paramType == Mcp_LLDP_NB_DCBX_P1|| paramType == Mcp_LLDP_NB_DCBX_P2) {
-        return _lldpNbDcbxDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-void LLDPClientSettings::setParams(u_int32_t lldpNbRxMode, u_int32_t lldpNbTxMode, u_int32_t lldpNbDcbx)
-{
-    _lldpNbRxMode = lldpNbRxMode;
-    _lldpNbTxMode = lldpNbTxMode;
-    _lldpNbDcbx = lldpNbDcbx;
-}
-
-void LLDPClientSettings::updateClassAttrFromDefaultParams()
-{
-    setParams(
-            _lldpNbRxModeDefault,
-            _lldpNbTxModeDefault,
-            _lldpNbDcbxDefault);
-}
-
-int LLDPClientSettings::getFromDev(mfile* mf)
-{
-    GET_FROM_DEV_5TH_GEN(mf, tools_open_lldp_client_settings, "LLDP Client Settings");
-}
-
-int LLDPClientSettings::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    SET_ON_DEV_5TH_GEN(mf, ignoreCheck, tools_open_lldp_client_settings, "LLDP Client Settings");
-}
-
-int LLDPClientSettings::getDefaultParams(mfile* mf)
-{
-    GET_DEFAULT_5TH_GEN(mf, tools_open_lldp_client_settings, "LLDP Client Settings");
-}
-
-bool LLDPClientSettings::getCap(mfile *mf)
-{
-    MError rc;
-    u_int8_t tlvCapBuff[TOOLS_OPEN_LLDP_NB_CAP_SIZE] = {0};
-    struct tools_open_lldp_nb_cap lldpNbCapTlv;
-    memset(&lldpNbCapTlv, 0, sizeof(lldpNbCapTlv));
-    rc = mnvaCom5thGen(mf, &tlvCapBuff[0], TOOLS_OPEN_LLDP_NB_CAP_SIZE, getLLDPNBCapTlvTypeBe(), REG_ACCESS_METHOD_GET);
-    if (rc) {
-        return false;
-    }
-    tools_open_lldp_nb_cap_unpack(&lldpNbCapTlv, tlvCapBuff);
-    _lldpNbTxCap = lldpNbCapTlv.lldp_nb_tx_cap;
-    _lldpNbRxCap = lldpNbCapTlv.lldp_nb_rx_cap;
-    _lldpNbDcbxEn = lldpNbCapTlv.lldp_nb_dcbx_en;
-    return true;
-}
-
-bool LLDPClientSettings::hardLimitCheck()
-{
-    if (_userSpecifiedRx && _lldpNbRxCap == 0) {
-        errmsg("The LLDP_NB_RX_MODE parameter cannot be set");
-        return false;
-    }
-
-    if (_lldpNbRxMode > _lldpNbRxCap) {
-        errmsg("Illegal LLDP_NB_RX_MODE parameter value(%d), max allowed value is (%d)", _lldpNbRxMode, _lldpNbRxCap);
-        return false;
-    }
-
-    if (_userSpecifiedTx && _lldpNbTxCap == 0) {
-        errmsg("The LLDP_NB_TX_MODE parameter cannot be set");
-        return false;
-    }
-
-    if (_lldpNbTxMode > _lldpNbTxCap) {
-        errmsg("Illegal LLDP_NB_TX_MODE parameter value(%d), max allowed value is (%d)", _lldpNbTxMode, _lldpNbTxCap);
-        return false;
-    }
-
-    if (_userSpecifiedDcbx && _lldpNbDcbxEn == 0) {
-        errmsg("LLDP_NB_RX_MODE parameter can not be set.");
-        return false;
-    }
-
-    if (_lldpNbDcbx > 1) {
-        errmsg("Illegal LLDP_NB_RX_MODE parameter value(%d), value must be False(0) or True(1)", _lldpNbDcbx);
-        return false;
-    }
-
-    return true;
-}
-
-u_int32_t LLDPClientSettings::getTlvTypeBe()
-{
-    struct tools_open_per_port_type type;
-    u_int32_t tlvType = 0;
-    type.param_class = CLASS_PHYS_PORT;
-    type.param_idx = tlvTypeIdx;
-    type.port = _port;
-    tools_open_per_port_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-void LLDPClientSettings::updateTlvFromClassAttr(void* tlv)
-{
-    struct tools_open_lldp_client_settings* lldpClientSettingsPortTlv = (struct tools_open_lldp_client_settings*)tlv;
-    lldpClientSettingsPortTlv->lldp_nb_dcbx = _lldpNbDcbx;
-    lldpClientSettingsPortTlv->lldp_nb_rx_mode = _lldpNbRxMode;
-    lldpClientSettingsPortTlv->lldp_nb_tx_mode = _lldpNbTxMode;
-    return;
-}
-
-void LLDPClientSettings::updateClassAttrFromTlv(void* tlv)
-{
-    struct tools_open_lldp_client_settings* lldpClientSettingsPortTlv = (struct tools_open_lldp_client_settings*)tlv;
-    _lldpNbDcbx = lldpClientSettingsPortTlv->lldp_nb_dcbx;
-    _lldpNbRxMode = lldpClientSettingsPortTlv->lldp_nb_rx_mode;
-    _lldpNbTxMode = lldpClientSettingsPortTlv->lldp_nb_tx_mode;
-    return;
-}
-
-void LLDPClientSettings::updateClassDefaultAttrFromTlv(void* tlv)
-{
-    struct tools_open_lldp_client_settings* lldpClientSettingsPortTlv = (struct tools_open_lldp_client_settings*)tlv;
-    _lldpNbDcbxDefault = lldpClientSettingsPortTlv->lldp_nb_dcbx;
-    _lldpNbRxModeDefault = lldpClientSettingsPortTlv->lldp_nb_rx_mode;
-    _lldpNbTxModeDefault = lldpClientSettingsPortTlv->lldp_nb_tx_mode;
-    return;
-}
-
-u_int32_t LLDPClientSettings::getLLDPNBCapTlvTypeBe()
-{
-    struct tools_open_per_port_type type;
-    u_int32_t tlvType = 0;
-    type.param_class = CLASS_PHYS_PORT;
-    type.param_idx = LLDP_NB_CAPABILITIES_TYPE;
-    type.port = _port;
-    tools_open_per_port_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-
-/*
- * LLDP NB DCBX Class implementation
- */
-
-bool DCBX::cfgSupported(mfile* mf, mlxCfgParam param)
-{
-    MError rc;
-    (void)param;
-    bool suppRead, suppWrite;
-    rc = nvqcCom5thGen(mf, getTlvTypeBe(), suppRead, suppWrite);
-    if (rc) {
-        errmsg("Failed to get LLDP NB DCBX capabilities. %s", m_err2str(rc));
-        return false;
-    }
-    if (!suppRead || !suppWrite) {
-        return false;
-    }
-
-    if (!getCap(mf)) {
-        return false;
-    }
-
-    return true;
-}
-
-void DCBX::setParam(mlxCfgParam paramType, u_int32_t val)
-{
-    if (paramType == Mcp_DCBX_IEEE_EN_P1|| paramType == Mcp_DCBX_IEEE_EN_P2) {
-        _ieee = val;
-    }
-    if (paramType == Mcp_DCBX_CEE_EN_P1|| paramType == Mcp_DCBX_CEE_EN_P2) {
-        _cee = val;
-    }
-    if (paramType == Mcp_DCBX_WILLING_P1|| paramType == Mcp_DCBX_WILLING_P2) {
-        _willing = val;
-    }
-    return;
-}
-
-u_int32_t DCBX::getParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_DCBX_IEEE_EN_P1|| paramType == Mcp_DCBX_IEEE_EN_P2) {
-        return _ieee;
-    }
-    if (paramType == Mcp_DCBX_CEE_EN_P1|| paramType == Mcp_DCBX_CEE_EN_P2) {
-        return _cee;
-    }
-    if (paramType == Mcp_DCBX_WILLING_P1|| paramType == Mcp_DCBX_WILLING_P2) {
-        return _willing;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-u_int32_t DCBX::getDefaultParam(mlxCfgParam paramType)
-{
-    if (paramType == Mcp_DCBX_IEEE_EN_P1|| paramType == Mcp_DCBX_IEEE_EN_P2) {
-        return _ieeeDefault;
-    }
-    if (paramType == Mcp_DCBX_CEE_EN_P1|| paramType == Mcp_DCBX_CEE_EN_P2) {
-        return _ceeDefault;
-    }
-    if (paramType == Mcp_DCBX_WILLING_P1|| paramType == Mcp_DCBX_WILLING_P2) {
-        return _willingDefault;
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-void DCBX::setParams(u_int32_t ieee, u_int32_t cee, u_int32_t willing)
-{
-    _ieee = ieee;
-    _cee = cee;
-    _willing = willing;
-}
-
-void DCBX::updateClassAttrFromDefaultParams()
-{
-    setParams(
-            _ieeeDefault,
-            _ceeDefault,
-            _willingDefault);
-}
-
-int DCBX::getFromDev(mfile* mf)
-{
-    GET_FROM_DEV_5TH_GEN(mf, tools_open_lldp_nb_dcbx, "LLDP NB DCBX");
-}
-
-int DCBX::setOnDev(mfile* mf, bool ignoreCheck)
-{
-    SET_ON_DEV_5TH_GEN(mf, ignoreCheck, tools_open_lldp_nb_dcbx, "LLDP NB DCBX");
-}
-
-int DCBX::getDefaultParams(mfile* mf)
-{
-    GET_DEFAULT_5TH_GEN(mf, tools_open_lldp_nb_dcbx, "LLDP NB DCBX");
-}
-
-bool DCBX::hardLimitCheck()
-{
-    if (_lldpNbDcbxEn == 0) {
-        errmsg("DCBX parameters cannot be set");
-        return false;
-    }
-    if (_ieee > 1) {
-        errmsg("Illegal %s parameter value(%d)", _port == 1 ?
-                "DCBX_IEEE_P1" : "DCBX_IEEE_P2", _ieee);
-        return false;
-    }
-    if (_cee > 1) {
-        errmsg("Illegal %s parameter value(%d)", _port == 1 ?
-                "DCBX_CEE_P1" : "DCBX_CEE_P2", _cee);
-        return false;
-    }
-    if (_willing > 1) {
-        errmsg("Illegal %s parameter value(%d)", _port == 1 ?
-                "DCBX_WILLING_P1" : "DCBX_WILLING_P2", _willing);
-        return false;
-    }
-    return true;
-}
-
-u_int32_t DCBX::getTlvTypeBe()
-{
-    struct tools_open_per_port_type type;
-    u_int32_t tlvType = 0;
-    type.param_class = CLASS_PHYS_PORT;
-    type.param_idx = tlvTypeIdx;
-    type.port = _port;
-    tools_open_per_port_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-u_int32_t DCBX::getLLDPNBCapTlvTypeBe()
-{
-    struct tools_open_per_port_type type;
-    u_int32_t tlvType = 0;
-    type.param_class = CLASS_PHYS_PORT;
-    type.param_idx = LLDP_NB_CAPABILITIES_TYPE;
-    type.port = _port;
-    tools_open_per_port_type_pack(&type, (u_int8_t*)&tlvType);
-    return tlvType;
-}
-
-void DCBX::updateTlvFromClassAttr(void* tlv)
-{
-    struct tools_open_lldp_nb_dcbx* DCBXPortTlv = (struct tools_open_lldp_nb_dcbx*)tlv;
-    DCBXPortTlv->ieee_dcbx_en = _ieee;
-    DCBXPortTlv->cee_dcbx_en = _cee;
-    DCBXPortTlv->dcbx_willing = _willing;
-    return;
-}
-
-void DCBX::updateClassAttrFromTlv(void* tlv)
-{
-    struct tools_open_lldp_nb_dcbx* lldpClientSettingsPortTlv = (struct tools_open_lldp_nb_dcbx*)tlv;
-    _ieee = lldpClientSettingsPortTlv->ieee_dcbx_en;
-    _cee = lldpClientSettingsPortTlv->cee_dcbx_en;
-    _willing = lldpClientSettingsPortTlv->dcbx_willing;
-    return;
-}
-
-void DCBX::updateClassDefaultAttrFromTlv(void* tlv)
-{
-    struct tools_open_lldp_nb_dcbx* lldpClientSettingsPortTlv = (struct tools_open_lldp_nb_dcbx*)tlv;
-    _ieeeDefault = lldpClientSettingsPortTlv->ieee_dcbx_en;
-    _ceeDefault = lldpClientSettingsPortTlv->cee_dcbx_en;
-    _willingDefault = lldpClientSettingsPortTlv->dcbx_willing;
-    return;
-}
-
-bool DCBX::getCap(mfile *mf)
-{
-    MError rc;
-    u_int8_t tlvCapBuff[TOOLS_OPEN_LLDP_NB_CAP_SIZE] = {0};
-    struct tools_open_lldp_nb_cap lldpNbCapTlv;
-    memset(&lldpNbCapTlv, 0, sizeof(lldpNbCapTlv));
-    rc = mnvaCom5thGen(mf, &tlvCapBuff[0], TOOLS_OPEN_LLDP_NB_CAP_SIZE, getLLDPNBCapTlvTypeBe(), REG_ACCESS_METHOD_GET);
-    if (rc) {
-        return false;
-    }
-    tools_open_lldp_nb_cap_unpack(&lldpNbCapTlv, tlvCapBuff);
-    _lldpNbDcbxEn = lldpNbCapTlv.lldp_nb_dcbx_en;
-    return true;
-}
diff --git a/mlxconfig/mlxcfg_param_lib.h b/mlxconfig/mlxcfg_param_lib.h
deleted file mode 100644 (file)
index 7eeec44..0000000
+++ /dev/null
@@ -1,1227 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-/*
- * mlxcfg_param_lib.h
- *
- *  Created on: Mar 22, 2015
- *      Author: adrianc
- */
-
-#ifndef MLXCFG_PARAM_LIB_H_
-#define MLXCFG_PARAM_LIB_H_
-
-#include <vector>
-#include <utility>
-#include <stdexcept>
-
-#include <errmsg.h>
-#include <tools_layouts/tools_open_layouts.h>
-
-#define MLXCFG_UNKNOWN 0xffffffff
-
-#define WOL_TYPE 0x10
-#define SRIOV_TYPE 0x11
-#define VPI_TYPE 0x12
-#define BAR_SIZE_TYPE 0x13
-#define PCI_SETTINGS_TYPE 0x80
-#define PCI_CAPABILITES_TYPE 0x81
-#define TPT_SETTINGS_TYPE 0x82
-#define TPT_CAPABILITES_TYPE 0x83
-#define PREBOOT_BOOT_SETTINGS_TYPE 0x2021
-#define INFINIBAND_BOOT_SETTINGS_TYPE 0x2022
-#define INFINIBAND_DC_SETTINGS_TYPE 0x190
-#define INFINIBAND_DC_CAPABILITIES_TYPE 0x191
-#define PORT_BOOT_STATE_TYPE 0x84
-#define ROCE_NEXT_PROTOCOL_TYPE 0x10
-#define ROCE_CC_TYPE 0x107
-#define ROCE_CC_ECN_TYPE 0x108
-#define LLDP_CLIENT_SETTINGS_TYPE 0x10a
-#define LLDP_NB_CAPABILITIES_TYPE 0x10b
-#define EXTERNAL_PORT 0x192
-#define BOOT_SETTINGS_EXTRAS_GEN4 0x2001
-#define BOOT_SETTINGS_EXTRAS_GEN5 0x195
-#define BOOT_SETTINGS_EXTRAS_GEN5_CAP 0x101
-#define QOS 0x192
-#define QOS_CAP 0x193
-#define LLDP_NB_DCBX 0x18E
-
-typedef enum {
-    // SRIOV
-    Mct_Sriov = 0,
-    // Wake on LAN (4th gen)
-    Mct_Wol_P1,
-    Mct_Wol_P2,
-    // Wake on LAN (5th gen)
-    Mct_Wol,
-    // VPI settings
-    Mct_Vpi_P1,
-    Mct_Vpi_P2,
-    // BAR size (4th gen)
-    Mct_Bar_Size,
-    // PCI settings (5th gen)
-    Mct_Pci,
-    // TPT settings (5th gen)
-    Mct_Tpt,
-    // IB boot settings (4th gen)
-    Mct_Boot_Settings_P1,
-    Mct_Boot_Settings_P2,
-    // IB dynamically connected (5th gen)
-    Mct_Dc,
-    // RoCE v1.5 next protocol (5th gen)
-    Mct_RoCE_Next_Protocol,
-    // RoCE congestion control (5th gen)
-    Mct_RoCE_CC_P1,
-    Mct_RoCE_CC_P2,
-    // RoCE congestion control ECN (5th gen)
-    Mct_RoCE_CC_Ecn_P1,
-    Mct_RoCE_CC_Ecn_P2,
-    // Preboot Boot Settings (4th Gen)
-    Mct_Preboot_Boot_Settings_P1,
-    Mct_Preboot_Boot_Settings_P2,
-    Mct_External_Port,
-    //TODO: Boot Settings Extras
-    Mct_Boot_Settings_Extras_5thGen,
-    Mct_Boot_Settings_Extras_4thGen_P1,
-    Mct_Boot_Settings_Extras_4thGen_P2,
-    Mct_QoS_P1,
-    Mct_QoS_P2,
-    Mct_LLDP_Client_Settings_P1,
-    Mct_LLDP_Client_Settings_P2,
-    Mct_DCBX_P1,
-    Mct_DCBX_P2,
-    Mct_Last
-} mlxCfgType;
-
-typedef enum {
-    // PCI settings
-    Mcp_Sriov_En = 0,
-    Mcp_Num_Of_Vfs,
-    Mcp_Fpp_En,
-    Mcp_PF_Log_Bar_Size,
-    Mcp_VF_Log_Bar_Size,
-    Mcp_Num_Pf_Msix,
-    Mcp_Num_Vf_Msix,
-    // Wake On LAN 4th Gen Port 1
-    Mcp_Wol_Magic_En_P1,
-    // Wake On LAN 4th Gen Port 2
-    Mcp_Wol_Magic_En_P2,
-    // Wake On LAN 5th Gen
-    Mcp_Wol_Magic_En,
-    // VPI settings Port 1
-    Mcp_Link_Type_P1,
-    // VPI settings Port 2
-    Mcp_Link_Type_P2,
-    // BAR size
-    Mcp_Log_Bar_Size,
-    // TPT settings
-    Mcp_Log_Tpt_Size,
-    // Boot Pkey Port 1
-    Mcp_Boot_Pkey_P1,
-    // Boot Pkey Port 2
-    Mcp_Boot_Pkey_P2,
-    // IB Dynamically connected
-    Mcp_Log_Dcr_Hash_Table_Size,
-    Mcp_Dcr_Lifo_Size,
-    // RoCE v1.5 Next protocol
-    Mcp_RoCE_Next_Protocol,
-    // RoCE Congestion Control Parameters Port 1
-    Mcp_RoCE_CC_Algorithm_P1,
-    Mcp_RoCE_CC_Prio_Mask_P1,
-    // RoCE Congestion Control Parameters Port 2
-    Mcp_RoCE_CC_Algorithm_P2,
-    Mcp_RoCE_CC_Prio_Mask_P2,
-    // RoCE Congestion Control ECN Port 1
-    Mcp_Clamp_Tgt_Rate_P1,
-    Mcp_Clamp_Tgt_Rate_After_Time_Inc_P1,
-    Mcp_Rpg_Time_Reset_P1,
-    Mcp_Rpg_Byte_Reset_P1,
-    Mcp_Rpg_Threshold_P1,
-    Mcp_Rpg_Max_Rate_P1,
-    Mcp_Rpg_Ai_Rate_P1,
-    Mcp_Rpg_Hai_Rate_P1,
-    Mcp_Rpg_Gd_P1,
-    Mcp_Rpg_Min_Dec_Fac_P1,
-    Mcp_Rpg_Min_Rate_P1,
-    Mcp_Rate_To_Set_On_First_Cnp_P1,
-    Mcp_Dce_Tcp_G_P1,
-    Mcp_Dce_Tcp_Rtt_P1,
-    Mcp_Rate_Reduce_Monitor_Period_P1,
-    Mcp_Initial_Alpha_Value_P1,
-    Mcp_Min_Time_Between_Cnps_P1,
-    Mcp_Cnp_Dscp_P1,
-    Mcp_Cnp_802p_Prio_P1,
-    // RoCE Congestion Control ECN Port 2
-    Mcp_Clamp_Tgt_Rate_P2,
-    Mcp_Clamp_Tgt_Rate_After_Time_Inc_P2,
-    Mcp_Rpg_Time_Reset_P2,
-    Mcp_Rpg_Byte_Reset_P2,
-    Mcp_Rpg_Threshold_P2,
-    Mcp_Rpg_Max_Rate_P2,
-    Mcp_Rpg_Ai_Rate_P2,
-    Mcp_Rpg_Hai_Rate_P2,
-    Mcp_Rpg_Gd_P2,
-    Mcp_Rpg_Min_Dec_Fac_P2,
-    Mcp_Rpg_Min_Rate_P2,
-    Mcp_Rate_To_Set_On_First_Cnp_P2,
-    Mcp_Dce_Tcp_G_P2,
-    Mcp_Dce_Tcp_Rtt_P2,
-    Mcp_Rate_Reduce_Monitor_Period_P2,
-    Mcp_Initial_Alpha_Value_P2,
-    Mcp_Min_Time_Between_Cnps_P2,
-    Mcp_Cnp_Dscp_P2,
-    Mcp_Cnp_802p_Prio_P2,
-    // Preboot Boot Settings Port 1
-    Mcp_Boot_Option_Rom_En_P1,
-    Mcp_Boot_Vlan_En_P1,
-    Mcp_Boot_Retry_Cnt_P1,
-    Mcp_Legacy_Boot_Protocol_P1,
-    Mcp_Boot_Vlan_P1,
-    // Preboot Boot Settings Port 2
-    Mcp_Boot_Option_Rom_En_P2,
-    Mcp_Boot_Vlan_En_P2,
-    Mcp_Boot_Retry_Cnt_P2,
-    Mcp_Legacy_Boot_Protocol_P2,
-    Mcp_Boot_Vlan_P2,
-    //External port
-    Mcp_Port_Owner,
-    Mcp_Allow_Rd_Counters,
-    //Boot Settings Ext
-    Mcp_Boot_Settings_Ext_IP_Ver,
-    Mcp_Boot_Settings_Ext_IP_Ver_P1,
-    Mcp_Boot_Settings_Ext_IP_Ver_P2,
-    Mcp_QoS_Num_of_TC_P1,
-    Mcp_QoS_Num_of_VL_P1,
-    Mcp_QoS_Num_of_TC_P2,
-    Mcp_QoS_Num_of_VL_P2,
-    Mcp_LLDP_NB_RX_Mode_P1,
-    Mcp_LLDP_NB_TX_Mode_P1,
-    Mcp_LLDP_NB_DCBX_P1,
-    Mcp_LLDP_NB_RX_Mode_P2,
-    Mcp_LLDP_NB_TX_Mode_P2,
-    Mcp_LLDP_NB_DCBX_P2,
-    Mcp_DCBX_IEEE_EN_P1,
-    Mcp_DCBX_CEE_EN_P1,
-    Mcp_DCBX_WILLING_P1,
-    Mcp_DCBX_IEEE_EN_P2,
-    Mcp_DCBX_CEE_EN_P2,
-    Mcp_DCBX_WILLING_P2,
-    Mcp_Last
-} mlxCfgParam;
-
-typedef std::pair<mlxCfgParam, u_int32_t> cfgInfo;
-
-/*
- *  Basic Param Class
- */
-
-/* Adrianc: add Initialize/Open pure method that will contain all needed initializations (configuration supported defaults capabilities etc...)
-*/
-
-
-class RawCfgParams5thGen : public ErrMsg
-{
-public:
-    RawCfgParams5thGen();
-    ~RawCfgParams5thGen() {}
-    int setRawData(const std::vector<u_int32_t>& tlvBuff);
-    int setOnDev(mfile* mf);
-    std::string dumpTlv();
-private:
-    int verifyTlv();
-    std::vector<u_int32_t> _tlvBuff;
-    struct tools_open_nvda _nvdaTlv;
-};
-
-
-class CfgParams : public ErrMsg
-{
-public:
-    CfgParams(mlxCfgType t=Mct_Last, u_int32_t tlvT=0);
-    virtual ~CfgParams() {}
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last) = 0;
-    void setDevCapVec(u_int64_t v) {_devCapVec = v;}
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val) = 0;
-    virtual u_int32_t getParam(mlxCfgParam paramType) = 0;
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType) = 0;
-
-    virtual int getDefaultAndFromDev(mfile* mf);
-    virtual int getFromDev(mfile* mf) = 0;
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false) = 0;
-    virtual int getDefaultParams(mfile* mf) = 0;
-
-    void setIgnoreSoftLimits(bool val);
-    void setIgnoreHardLimits(bool val);
-
-    mlxCfgType type;
-    u_int32_t tlvTypeIdx;
-protected:
-    // param validadion methods, only checkCfg shuold be called
-    virtual bool checkCfg(mfile* mf=NULL);
-    virtual bool hardLimitCheck() = 0;
-    virtual bool softLimitCheck(mfile* mf=NULL);
-
-    // get default parameters for configuration (4th gen)
-    int getDefaultParams4thGen(mfile* mf, struct tools_open_query_def_params_global* global_params);
-    int getDefaultParams4thGen(mfile* mf, int port, struct tools_open_query_def_params_per_port* port_params);
-
-    virtual void updateTlvFromClassAttr(void* tlv) {(void)tlv; throw std::logic_error("Function Not Implemented");}
-    virtual void updateClassAttrFromTlv(void* tlv) {(void)tlv; throw std::logic_error("Function Not Implemented");}
-    virtual void updateClassDefaultAttrFromTlv(void* tlv) {(void)tlv; throw std::logic_error("Function Not Implemented");}
-
-    u_int64_t _devCapVec; // relevant for 4th gen devices
-    bool _updated; // set true on get and false on set
-    bool _ignoreSoftLimits; // soft limits checks will not be performed for configuration
-    bool _ignoreHardLimits; // hard limits checks will not be performed
-};
-
-/*
- * SRIOV param classes:
- */
-
-class SriovParams4thGen : public CfgParams
-{
-public:
-    SriovParams4thGen() : CfgParams(Mct_Sriov, SRIOV_TYPE) , _sriovEn(MLXCFG_UNKNOWN), _numOfVfs(MLXCFG_UNKNOWN),
-                _sriovEnDefault(MLXCFG_UNKNOWN), _numOfVfsDefault(MLXCFG_UNKNOWN), _maxVfs(1) {}
-    ~SriovParams4thGen() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    virtual bool hardLimitCheck();
-
-    virtual int updateMaxVfs(mfile* mf);
-    virtual bool softLimitCheck(mfile* mf=NULL);
-    void setParams(u_int32_t sriovEn, u_int32_t numOfVfs);
-
-    u_int32_t _sriovEn;
-    u_int32_t _numOfVfs;
-    u_int32_t _sriovEnDefault;
-    u_int32_t _numOfVfsDefault;
-    u_int32_t _maxVfs;
-};
-
-/*
- * Boot Settings Extras param classes:
- */
-
-class BootSettingsExtParams : public CfgParams
-{
-public:
-    BootSettingsExtParams(mlxCfgType t, u_int32_t tlvT) : CfgParams(t, tlvT), _ipVer(MLXCFG_UNKNOWN), _ipVerDefault(MLXCFG_UNKNOWN){}
-    virtual ~BootSettingsExtParams() {}
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last) = 0;
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val) = 0;
-    virtual u_int32_t getParam(mlxCfgParam paramType) = 0;
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType) = 0;
-
-    virtual int getFromDev(mfile* mf) = 0;
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false) = 0;
-    virtual int getDefaultParams(mfile* mf)=0;
-
-protected:
-    bool hardLimitCheck();
-    void setParams(u_int32_t _ipVer);
-
-    u_int32_t _ipVer;
-    u_int32_t _ipVerDefault;
-};
-
-class BootSettingsExtParams4thGen : public BootSettingsExtParams
-{
-public:
-    BootSettingsExtParams4thGen(int port) : BootSettingsExtParams((port == 1) ? Mct_Boot_Settings_Extras_4thGen_P1 : Mct_Boot_Settings_Extras_4thGen_P2,
-            BOOT_SETTINGS_EXTRAS_GEN4),
-        _port(port){}
-    ~BootSettingsExtParams4thGen() {}
-
-    u_int32_t getDefaultParam(mlxCfgParam paramType);
-    void setParam(mlxCfgParam paramType, u_int32_t val);
-    u_int32_t getParam(mlxCfgParam paramType);
-    bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-    int getDefaultParams(mfile* mf);
-
-    int getFromDev(mfile* mf);
-    int setOnDev(mfile* mf, bool ignoreCheck=false);
-private:
-    int _port;
-};
-
-class BootSettingsExtParams5thGen : public BootSettingsExtParams
-{
-public:
-    BootSettingsExtParams5thGen() : BootSettingsExtParams(Mct_Boot_Settings_Extras_5thGen, BOOT_SETTINGS_EXTRAS_GEN5) {}
-    ~BootSettingsExtParams5thGen() {}
-
-    u_int32_t getBootSettingsExtCapabilitiesTlvTypeBe();
-    bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-    u_int32_t getParam(mlxCfgParam paramType);
-    u_int32_t getDefaultParam(mlxCfgParam paramType);
-    void setParam(mlxCfgParam paramType, u_int32_t val);
-    int getFromDev(mfile* mf);
-    int setOnDev(mfile* mf, bool ignoreCheck=false);
-    void updateClassAttrFromDefaultParams();
-    void updateTlvFromClassAttr(void* tlv);
-    void updateClassAttrFromTlv(void* tlv);
-    void updateClassDefaultAttrFromTlv(void* tlv);
-    u_int32_t getTlvTypeBe();
-    int getDefaultParams(mfile* mf);
-    int getDefaultParamsAux(mfile* mf);
-};
-/*
- * WOL param classes:
- */
-
-class WolParams : public CfgParams
-{
-public:
-    WolParams() : CfgParams(Mct_Last, WOL_TYPE), _wolMagicEn(MLXCFG_UNKNOWN), _wolMagicEnDefault(MLXCFG_UNKNOWN) {}
-    virtual ~WolParams() {}
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last) = 0;
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val) = 0;
-    virtual u_int32_t getParam(mlxCfgParam paramType) = 0;
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType) = 0;
-
-    virtual int getFromDev(mfile* mf) = 0;
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false) = 0;
-    virtual int getDefaultParams(mfile* mf) = 0;
-
-protected:
-    virtual bool hardLimitCheck();
-    void setParams(u_int32_t wolMagicEn);
-    // Wake on magic packet (atm this is the only mode which is supported)
-
-    u_int32_t _wolMagicEn;
-    u_int32_t _wolMagicEnDefault;
-};
-
-class WolParams4thGen : public WolParams
-{
-public:
-    WolParams4thGen(int port) : WolParams(), _port(port) {type = _port == 1 ? Mct_Wol_P1 : Mct_Wol_P2;}
-    ~WolParams4thGen() {}
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-private:
-    int _port;
-};
-
-class WolParams5thGen : public WolParams
-{
-public:
-    WolParams5thGen() : WolParams() {type = Mct_Wol;}
-    ~WolParams5thGen() {}
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    u_int32_t getTlvTypeBe();
-
-    virtual void updateTlvFromClassAttr(void* tlv);
-    virtual void updateClassAttrFromTlv(void* tlv);
-    virtual void updateClassDefaultAttrFromTlv(void* tlv);
-    void updateClassAttrFromDefaultParams();
-};
-
-
-/*
- * VPI param classes:
- */
-
-class VpiParams : public CfgParams
-{
-public:
-    VpiParams(int port) : CfgParams(port == 1 ? Mct_Vpi_P1 : Mct_Vpi_P2, VPI_TYPE), _port(port), _linkType(MLXCFG_UNKNOWN), _defaultLinkType(MLXCFG_UNKNOWN)
-    , _linkTypeDefault(MLXCFG_UNKNOWN), _defaultLinkTypeDefault(MLXCFG_UNKNOWN){
-        _vpiTlv.default_link_type = 0;
-        _vpiTlv.network_link_type = 0;
-    }
-    ~VpiParams() {}
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last) = 0;
-
-    virtual int getFromDev(mfile* mf) = 0;
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false) = 0;
-    virtual int getDefaultParams(mfile* mf) = 0;
-
-protected:
-    int getFromDevComPre();
-    int getFromDevComPost(MError mnvaComRC);
-    int setOnDevComPre(bool ignoreCheck);
-    int setOnDevComPost(MError mnvaComRC);
-    void setParams(u_int32_t _linkType, u_int32_t _defaultLinkType);
-
-    int _port;
-    u_int32_t _linkType;
-    u_int32_t _defaultLinkType;
-    u_int32_t _linkTypeDefault;
-    u_int32_t _defaultLinkTypeDefault;
-    // FW TLV (used when actually setting/getting the TLV from FW)
-    std::vector<u_int8_t> _tlvBuff;
-    struct tools_open_vpi_settings _vpiTlv;
-
-
-};
-
-class VpiParams4thGen : public VpiParams
-{
-public:
-    VpiParams4thGen(int port) : VpiParams(port){}
-    ~VpiParams4thGen() {}
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-    virtual bool hardLimitCheck();
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-};
-
-class VpiParams5thGen : public VpiParams
-{
-public:
-    VpiParams5thGen(int port) : VpiParams(port){}
-    ~VpiParams5thGen() {}
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-    virtual bool hardLimitCheck();
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-protected:
-    u_int32_t getTlvTypeBe();
-};
-
-/*
- * BAR size param classes:
- */
-
-class BarSzParams : public CfgParams
-{
-public:
-    BarSzParams() : CfgParams(Mct_Bar_Size, BAR_SIZE_TYPE) ,_maxLogBarSz(1), _logBarSz(MLXCFG_UNKNOWN), _logBarSzDefault(MLXCFG_UNKNOWN) {}
-    ~BarSzParams() {}
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last) = 0;
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf) = 0;
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false) = 0;
-    virtual int getDefaultParams(mfile* mf) = 0;
-
-protected:
-    virtual bool hardLimitCheck();
-    virtual bool softLimitCheck(mfile* mf=NULL) = 0;
-    virtual int getDefaultBarSz(mfile* mf) = 0;
-    void setParams(u_int32_t logBarSz);
-    u_int32_t _maxLogBarSz;
-    u_int32_t _logBarSz;
-    u_int32_t _logBarSzDefault;
-
-};
-
-class BarSzParams4thGen : public BarSzParams
-{
-public:
-    BarSzParams4thGen() : BarSzParams() {}
-    ~BarSzParams4thGen() {}
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-protected:
-    virtual bool softLimitCheck(mfile* mf=NULL);
-    virtual int getDefaultBarSz(mfile* mf);
-};
-
-
-/*
- * PCI parameters Class (5thGen devices only)
- */
-
-class PciParams5thGen : public CfgParams
-{
-public:
-    PciParams5thGen() : CfgParams(Mct_Pci, PCI_SETTINGS_TYPE) , _sriovEn(MLXCFG_UNKNOWN), _numOfVfs(MLXCFG_UNKNOWN),\
-                        _fppEn(MLXCFG_UNKNOWN), _pfLogBarSize(MLXCFG_UNKNOWN), _vfLogBarSize(MLXCFG_UNKNOWN),\
-                        _numPfMsix(MLXCFG_UNKNOWN), _numVfMsix(MLXCFG_UNKNOWN), _sriovEnDefault(MLXCFG_UNKNOWN),\
-                        _numOfVfsDefault(MLXCFG_UNKNOWN), _fppEnDefault(MLXCFG_UNKNOWN), _pfLogBarSizeDefault(MLXCFG_UNKNOWN),\
-                        _vfLogBarSizeDefault(MLXCFG_UNKNOWN), _numPfMsixDefault(MLXCFG_UNKNOWN), _numVfMsixDefault(MLXCFG_UNKNOWN),\
-                        _numOfPfs(MLXCFG_UNKNOWN), _numOfPfsValid(0), _sriovSupported(false),_maxVfsPerPf(0),\
-                        _fppSupported(false), _pfLogBarSizeSuppored(false), _vfLogBarSizeSuppored(false),\
-                        _numPfMsixSupported(false), _numVfMsixSupported(false),_maxLogPfBarSize(0), _maxLogVfBarSize(0),\
-                        _maxTotalBarValid(0), _maxTotalBar(1), _maxNumPfMsix(0), _maxNumVfMsix(0),_maxTotalMsixValid(0),\
-                        _maxTotalMsix(0), _userSpecifiedSRIOV(false), _userSpecifiedFPP(false),_userSpecifiedPfLogBarSize(false),\
-                        _userSpecifiedVfLogBarSize(false),_userSpecifiedNumPfMsix(false),_userSpecifiedNumVfMsix(false){}
-    ~PciParams5thGen() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    virtual bool hardLimitCheck();
-    virtual bool softLimitCheck(mfile* mf=NULL);
-    int getDefaultsAndCapabilities(mfile* mf);
-    u_int32_t getPciSettingsTlvTypeBe();
-    u_int32_t getPciCapabilitiesTlvTypeBe();
-    void setParams(u_int32_t sriovEn, u_int32_t numOfVfs, u_int32_t fppEn, u_int32_t pfLogBarSize,
-            u_int32_t vfLogBarSize, u_int32_t numOfPfs, u_int32_t numPfMsix, u_int32_t numVfMsix);
-
-private:
-    u_int32_t calcVfLogBarSize();
-    u_int32_t calcPfLogBarSize();
-    u_int32_t calcTotalBar();
-    u_int32_t calcNumOfVfs();
-
-    u_int32_t _sriovEn;
-    u_int32_t _numOfVfs;
-    u_int32_t _fppEn;
-    u_int32_t _pfLogBarSize;
-    u_int32_t _vfLogBarSize;
-    u_int32_t _numPfMsix;
-    u_int32_t _numVfMsix;
-
-    u_int32_t _sriovEnDefault;
-    u_int32_t _numOfVfsDefault;
-    u_int32_t _fppEnDefault;
-    u_int32_t _pfLogBarSizeDefault;
-    u_int32_t _vfLogBarSizeDefault;
-    u_int32_t _numPfMsixDefault;
-    u_int32_t _numVfMsixDefault;
-
-    u_int32_t _numOfPfs;
-    u_int32_t _numOfPfsValid;
-
-
-    // defaults and capabilities
-    bool      _sriovSupported;
-    u_int32_t _maxVfsPerPf;
-    bool      _fppSupported;
-    bool      _pfLogBarSizeSuppored;
-    bool      _vfLogBarSizeSuppored;
-    bool      _numPfMsixSupported;
-    bool      _numVfMsixSupported;
-    u_int32_t _maxLogPfBarSize;
-    u_int32_t _maxLogVfBarSize;
-    u_int32_t _maxTotalBarValid;
-    u_int32_t _maxTotalBar;
-    u_int32_t _maxNumPfMsix;
-    u_int32_t _maxNumVfMsix;
-    u_int32_t _maxTotalMsixValid;
-    u_int32_t _maxTotalMsix;
-
-    // class members used for indication
-    bool _userSpecifiedSRIOV;
-    bool _userSpecifiedFPP;
-    bool _userSpecifiedPfLogBarSize;
-    bool _userSpecifiedVfLogBarSize;
-    bool _userSpecifiedNumPfMsix;
-    bool _userSpecifiedNumVfMsix;
-
-};
-
-/*
- * TPT parameters Class (5thGen devices only)
- */
-
-class TptParams5thGen : public CfgParams
-{
-public:
-    TptParams5thGen() : CfgParams(Mct_Tpt, TPT_SETTINGS_TYPE) , _logMaxPayloadSize(MLXCFG_UNKNOWN),
-    _logMaxPayloadSizeDefault(MLXCFG_UNKNOWN), _logMaxPayloadSizeSupported(false)
-    {}
-    ~TptParams5thGen() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    int getFromDev(mfile* mf, bool getDefault);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    virtual bool hardLimitCheck();
-    int getDefaultsAndCapabilities(mfile* mf);
-    u_int32_t getTptSettingsTlvTypeBe();
-    u_int32_t getTptCapabilitiesTlvTypeBe();
-    void setParams(u_int32_t logMaxPayloadSize);
-
-    u_int32_t _logMaxPayloadSize;
-    u_int32_t _logMaxPayloadSizeDefault;
-
-    // defaults and capabilities
-    bool      _logMaxPayloadSizeSupported;
-};
-
-/*
- * Infiniband boot settings parameter Class (4thGen devices only)
- */
-class InfinibandBootSettingsParams4thGen : public CfgParams
-{
-public:
-    InfinibandBootSettingsParams4thGen(int port) : CfgParams((port == 1 ? Mct_Boot_Settings_P1 : Mct_Boot_Settings_P2),
-            INFINIBAND_BOOT_SETTINGS_TYPE) , _port(port), _bootPkey(MLXCFG_UNKNOWN), _bootPkeyDefault(MLXCFG_UNKNOWN) {}
-    ~InfinibandBootSettingsParams4thGen() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    virtual bool hardLimitCheck();
-    void setParams(u_int32_t bootPkey);
-
-    int _port;
-    u_int32_t _bootPkey;
-    u_int32_t _bootPkeyDefault;
-
-};
-
-/*
- * Infiniband DC (Dynamically Connected) parameters Class (5thGen devices only)
- */
-
-class IBDCParams5thGen : public CfgParams
-{
-public:
-    IBDCParams5thGen() : CfgParams(Mct_Dc, INFINIBAND_DC_SETTINGS_TYPE) , _logDcrHashTableSize(MLXCFG_UNKNOWN), _dcrLifoSize(MLXCFG_UNKNOWN),
-        _logDcrHashTableSizeDefault(MLXCFG_UNKNOWN), _dcrLifoSizeDefault(MLXCFG_UNKNOWN), _minLogDcrHashTableSize(0),
-        _maxLogDcrHashTableSize(0), _minDcrLifoSize(0), _maxDcrLifoSize(0){}
-    ~IBDCParams5thGen() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    int getFromDev(mfile* mf, bool getDefault);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    virtual bool hardLimitCheck();
-    int getDefaultsAndCapabilities(mfile* mf);
-    u_int32_t getTlvTypeBe();
-    u_int32_t getDcCapabilitiesTlvTypeBe();
-
-    virtual void updateTlvFromClassAttr(void* tlv);
-    virtual void updateClassAttrFromTlv(void* tlv);
-    virtual void updateClassDefaultAttrFromTlv(void* tlv);
-    void updateClassAttrFromDefaultParams();
-    void setParams(u_int32_t logDcrHashTableSize, u_int32_t dcrLifoSize);
-
-    u_int32_t _logDcrHashTableSize;
-    u_int32_t _dcrLifoSize;
-
-    u_int32_t _logDcrHashTableSizeDefault;
-    u_int32_t _dcrLifoSizeDefault;
-
-    // defaults and capabilities
-    u_int32_t _minLogDcrHashTableSize;
-    u_int32_t _maxLogDcrHashTableSize;
-    u_int32_t _minDcrLifoSize;
-    u_int32_t _maxDcrLifoSize;
-};
-
-/*
- * RoCE v1.5 next protocol Class (5thGen devices only)
- */
-
-class RoCENextProtocolParams5thGen : public CfgParams
-{
-public:
-    RoCENextProtocolParams5thGen() : CfgParams(Mct_RoCE_Next_Protocol, ROCE_NEXT_PROTOCOL_TYPE) , _nextProtocol(MLXCFG_UNKNOWN)
-                                    , _nextProtocolDefault(MLXCFG_UNKNOWN){}
-    ~RoCENextProtocolParams5thGen() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    virtual bool hardLimitCheck();
-    u_int32_t getTlvTypeBe();
-
-    virtual void updateTlvFromClassAttr(void* tlv);
-    virtual void updateClassAttrFromTlv(void* tlv);
-    virtual void updateClassDefaultAttrFromTlv(void* tlv);
-    void updateClassAttrFromDefaultParams();
-    void setParams(u_int32_t nextProtocol);
-
-    u_int32_t _nextProtocol;
-
-    u_int32_t _nextProtocolDefault;
-};
-
-/*
- * RoCE CC parameters Class (5thGen devices only)
- */
-
-class RoCECCParams5thGen : public CfgParams
-{
-public:
-    RoCECCParams5thGen(int port) : CfgParams((port == 1 ? Mct_RoCE_CC_P1 : Mct_RoCE_CC_P2), ROCE_CC_TYPE),
-                                   _port(port), _roceCcAlgorithm(MLXCFG_UNKNOWN), _roceCcPrioMask(MLXCFG_UNKNOWN)
-                                    , _roceCcAlgorithmDefault(MLXCFG_UNKNOWN), _roceCcPrioMaskDefault(MLXCFG_UNKNOWN){}
-    ~RoCECCParams5thGen() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    virtual bool hardLimitCheck();
-    u_int32_t getTlvTypeBe();
-
-    virtual void updateTlvFromClassAttr(void* tlv);
-    virtual void updateClassAttrFromTlv(void* tlv);
-    virtual void updateClassDefaultAttrFromTlv(void* tlv);
-    void updateClassAttrFromDefaultParams();
-    void setParams(u_int32_t roceCcAlgorithm, u_int32_t roceCcPrioMask);
-
-    int _port;
-    u_int32_t _roceCcAlgorithm;
-    u_int32_t _roceCcPrioMask;
-
-    u_int32_t _roceCcAlgorithmDefault;
-    u_int32_t _roceCcPrioMaskDefault;
-};
-
-/*
- * RoCE CC ECN parameters Class (5thGen devices only)
- */
-
-class RoCECCEcnParams5thGen : public CfgParams
-{
-public:
-    RoCECCEcnParams5thGen(int port) : CfgParams((port == 1 ? Mct_RoCE_CC_Ecn_P1 : Mct_RoCE_CC_Ecn_P2), ROCE_CC_ECN_TYPE),
-                                    _port(port), _clampTgtRate(MLXCFG_UNKNOWN), _clampTgtRateAfterTimeInc(MLXCFG_UNKNOWN),
-                                    _rpgTimeReset(MLXCFG_UNKNOWN), _rpgByteReset(MLXCFG_UNKNOWN), _rpgThreshold(MLXCFG_UNKNOWN),
-                                    _rpgMaxRate(MLXCFG_UNKNOWN), _rpgAiRate(MLXCFG_UNKNOWN), _rpgHaiRate(MLXCFG_UNKNOWN),
-                                    _rpgGd(MLXCFG_UNKNOWN), _rpgMinDecFac(MLXCFG_UNKNOWN), _rpgMinRate(MLXCFG_UNKNOWN),
-                                    _rateToSetOnFirstCnp(MLXCFG_UNKNOWN), _dceTcpG(MLXCFG_UNKNOWN), _dceTcpRtt(MLXCFG_UNKNOWN),
-                                    _rateReduceMonitorPeriod(MLXCFG_UNKNOWN), _initialAlphaValue(MLXCFG_UNKNOWN),
-                                    _minTimeBetweenCnps(MLXCFG_UNKNOWN), _cnpDscp(MLXCFG_UNKNOWN), _cnp802pPrio(MLXCFG_UNKNOWN)
-                                    , _clampTgtRateDefault(MLXCFG_UNKNOWN), _clampTgtRateAfterTimeIncDefault(MLXCFG_UNKNOWN),
-                                    _rpgTimeResetDefault(MLXCFG_UNKNOWN), _rpgByteResetDefault(MLXCFG_UNKNOWN), _rpgThresholdDefault(MLXCFG_UNKNOWN),
-                                    _rpgMaxRateDefault(MLXCFG_UNKNOWN), _rpgAiRateDefault(MLXCFG_UNKNOWN), _rpgHaiRateDefault(MLXCFG_UNKNOWN),
-                                    _rpgGdDefault(MLXCFG_UNKNOWN), _rpgMinDecFacDefault(MLXCFG_UNKNOWN), _rpgMinRateDefault(MLXCFG_UNKNOWN),
-                                    _rateToSetOnFirstCnpDefault(MLXCFG_UNKNOWN), _dceTcpGDefault(MLXCFG_UNKNOWN), _dceTcpRttDefault(MLXCFG_UNKNOWN),
-                                    _rateReduceMonitorPeriodDefault(MLXCFG_UNKNOWN), _initialAlphaValueDefault(MLXCFG_UNKNOWN),
-                                    _minTimeBetweenCnpsDefault(MLXCFG_UNKNOWN), _cnpDscpDefault(MLXCFG_UNKNOWN), _cnp802pPrioDefault(MLXCFG_UNKNOWN){};
-    ~RoCECCEcnParams5thGen() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    virtual bool hardLimitCheck();
-    u_int32_t getTlvTypeBe();
-
-    virtual void updateTlvFromClassAttr(void* tlv);
-    virtual void updateClassAttrFromTlv(void* tlv);
-    virtual void updateClassDefaultAttrFromTlv(void* tlv);
-    void updateClassAttrFromDefaultParams();
-    void setParams(u_int32_t clampTgtRate, u_int32_t clampTgtRateAfterTimeInc, u_int32_t rpgTimeReset, u_int32_t rpgByteReset,
-            u_int32_t rpgThreshold, u_int32_t rpgMaxRate, u_int32_t rpgAiRate, u_int32_t rpgHaiRate,
-            u_int32_t rpgGd, u_int32_t rpgMinDecFac, u_int32_t rpgMinRate, u_int32_t rateToSetOnFirstCnp,
-            u_int32_t dceTcpG, u_int32_t dceTcpRtt, u_int32_t rateReduceMonitorPeriod, u_int32_t initialAlphaValue,
-            u_int32_t minTimeBetweenCnps, u_int32_t cnpDscp, u_int32_t cnp802pPrio);
-
-    int _port;
-
-    u_int32_t _clampTgtRate;
-    u_int32_t _clampTgtRateAfterTimeInc;
-    u_int32_t _rpgTimeReset;
-    u_int32_t _rpgByteReset;
-    u_int32_t _rpgThreshold;
-    u_int32_t _rpgMaxRate;
-    u_int32_t _rpgAiRate;
-    u_int32_t _rpgHaiRate;
-    u_int32_t _rpgGd;
-    u_int32_t _rpgMinDecFac;
-    u_int32_t _rpgMinRate;
-    u_int32_t _rateToSetOnFirstCnp;
-    u_int32_t _dceTcpG;
-    u_int32_t _dceTcpRtt;
-    u_int32_t _rateReduceMonitorPeriod;
-    u_int32_t _initialAlphaValue;
-    u_int32_t _minTimeBetweenCnps;
-    u_int32_t _cnpDscp;
-    u_int32_t _cnp802pPrio;
-
-    u_int32_t _clampTgtRateDefault;
-    u_int32_t _clampTgtRateAfterTimeIncDefault;
-    u_int32_t _rpgTimeResetDefault;
-    u_int32_t _rpgByteResetDefault;
-    u_int32_t _rpgThresholdDefault;
-    u_int32_t _rpgMaxRateDefault;
-    u_int32_t _rpgAiRateDefault;
-    u_int32_t _rpgHaiRateDefault;
-    u_int32_t _rpgGdDefault;
-    u_int32_t _rpgMinDecFacDefault;
-    u_int32_t _rpgMinRateDefault;
-    u_int32_t _rateToSetOnFirstCnpDefault;
-    u_int32_t _dceTcpGDefault;
-    u_int32_t _dceTcpRttDefault;
-    u_int32_t _rateReduceMonitorPeriodDefault;
-    u_int32_t _initialAlphaValueDefault;
-    u_int32_t _minTimeBetweenCnpsDefault;
-    u_int32_t _cnpDscpDefault;
-    u_int32_t _cnp802pPrioDefault;
-};
-
-
-/*
- * Preboot Boot Settings Class (4thGen devices only)
- */
-
-class PrebootBootSettingsParams4thGen : public CfgParams
-{
-public:
-    PrebootBootSettingsParams4thGen(int port) : CfgParams((port == 1 ? Mct_Preboot_Boot_Settings_P1 : Mct_Preboot_Boot_Settings_P2), PREBOOT_BOOT_SETTINGS_TYPE),
-                                                _bootOptionRomEn(MLXCFG_UNKNOWN), _bootVlanEn(MLXCFG_UNKNOWN), _bootRetryCnt(MLXCFG_UNKNOWN),
-                                                _legacyBootProtocol(MLXCFG_UNKNOWN), _bootVlan(MLXCFG_UNKNOWN),
-                                                _bootOptionRomEnDefault(MLXCFG_UNKNOWN), _bootVlanEnDefault(MLXCFG_UNKNOWN), _bootRetryCntDefault(MLXCFG_UNKNOWN),
-                                                _legacyBootProtocolDefault(MLXCFG_UNKNOWN), _bootVlanDefault(MLXCFG_UNKNOWN),
-                                                _port(port) {}
-    ~PrebootBootSettingsParams4thGen() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    virtual bool hardLimitCheck();
-
-    virtual void updateTlvFromClassAttr(void* tlv);
-    virtual void updateClassAttrFromTlv(void* tlv);
-    virtual void updateClassDefaultAttrFromTlv(void* tlv);
-    void updateClassAttrFromDefaultParams();
-    void setParams(u_int32_t bootOptionRomEn, u_int32_t bootVlanEn, u_int32_t bootRetryCnt,
-            u_int32_t legacyBootProtocol, u_int32_t bootVlan);
-
-    u_int32_t _bootOptionRomEn;
-    u_int32_t _bootVlanEn;
-    u_int32_t _bootRetryCnt;
-    u_int32_t _legacyBootProtocol;
-    u_int32_t _bootVlan;
-
-    u_int32_t _bootOptionRomEnDefault;
-    u_int32_t _bootVlanEnDefault;
-    u_int32_t _bootRetryCntDefault;
-    u_int32_t _legacyBootProtocolDefault;
-    u_int32_t _bootVlanDefault;
-
-    int _port;
-};
-
-/*
- * ExternalPort5thGen parameters Class (5thGen devices only)
- */
-
-class ExternalPort5thGen : public CfgParams
-{
-public:
-    ExternalPort5thGen() : CfgParams(Mct_External_Port, EXTERNAL_PORT),
-        _portOwner(MLXCFG_UNKNOWN), _allowRdCounters(MLXCFG_UNKNOWN),
-        _portOwnerDefault(MLXCFG_UNKNOWN), _allowRdCountersDefault(MLXCFG_UNKNOWN){}
-    ~ExternalPort5thGen() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    virtual bool hardLimitCheck();
-    u_int32_t getTlvTypeBe();
-
-    virtual void updateTlvFromClassAttr(void* tlv);
-    virtual void updateClassAttrFromTlv(void* tlv);
-    virtual void updateClassDefaultAttrFromTlv(void* tlv);
-    void updateClassAttrFromDefaultParams();
-    void setParams(u_int32_t portOwner, u_int32_t allowRdCounters);
-
-    u_int32_t _portOwner;
-    u_int32_t _allowRdCounters;
-
-    u_int32_t _portOwnerDefault;
-    u_int32_t _allowRdCountersDefault;
-
-};
-
-/*
- * QoS parameters Class
- */
-
-class QoS : public CfgParams
-{
-public:
-    QoS(int port) : CfgParams(port == 1 ? Mct_QoS_P1 : Mct_QoS_P2, QOS),
-        _port(port), _numOfTC(MLXCFG_UNKNOWN), _numOfVL(MLXCFG_UNKNOWN),
-        _numOfTCDefault(MLXCFG_UNKNOWN), _numOfVLDefault(MLXCFG_UNKNOWN),
-        _maxNumOfTC(MLXCFG_UNKNOWN), _maxNumOfVL(MLXCFG_UNKNOWN){}
-    ~QoS() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-    bool getCap(mfile *mf);
-    u_int32_t getQoSCapTlvTypeBe();
-
-protected:
-    bool hardLimitCheckAux(u_int32_t maxNumOfX, u_int32_t numOfX,const char *x);
-    virtual bool hardLimitCheck();
-    u_int32_t getTlvTypeBe();
-
-    virtual void updateTlvFromClassAttr(void* tlv);
-    virtual void updateClassAttrFromTlv(void* tlv);
-    virtual void updateClassDefaultAttrFromTlv(void* tlv);
-    void updateClassAttrFromDefaultParams();
-    void setParams(u_int32_t numOfTCDefault, u_int32_t numOfVLDefault);
-
-    int _port;
-
-    u_int32_t _numOfTC;
-    u_int32_t _numOfVL;
-
-    u_int32_t _numOfTCDefault;
-    u_int32_t _numOfVLDefault;
-
-    u_int32_t _maxNumOfTC;
-    u_int32_t _maxNumOfVL;
-};
-
-/*
- * LLDP Client Settings Class
- */
-
-class LLDPClientSettings : public CfgParams
-{
-public:
-    LLDPClientSettings(int port) : CfgParams(port == 1 ?
-            Mct_LLDP_Client_Settings_P1 : Mct_LLDP_Client_Settings_P2, LLDP_CLIENT_SETTINGS_TYPE),
-        _port(port), _lldpNbTxMode(MLXCFG_UNKNOWN), _lldpNbRxMode(MLXCFG_UNKNOWN), _lldpNbDcbx(MLXCFG_UNKNOWN),
-        _userSpecifiedRx(false), _userSpecifiedTx(false), _userSpecifiedDcbx(false),
-        _lldpNbTxModeDefault(MLXCFG_UNKNOWN), _lldpNbRxModeDefault(MLXCFG_UNKNOWN),
-        _lldpNbDcbxDefault(MLXCFG_UNKNOWN), _lldpNbTxCap(MLXCFG_UNKNOWN),
-        _lldpNbRxCap(MLXCFG_UNKNOWN), _lldpNbDcbxEn(MLXCFG_UNKNOWN){}
-    ~LLDPClientSettings() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-    bool getCap(mfile *mf);
-    u_int32_t getLLDPNBCapTlvTypeBe();
-
-protected:
-    virtual bool hardLimitCheck();
-    u_int32_t getTlvTypeBe();
-
-    virtual void updateTlvFromClassAttr(void* tlv);
-    virtual void updateClassAttrFromTlv(void* tlv);
-    virtual void updateClassDefaultAttrFromTlv(void* tlv);
-    void updateClassAttrFromDefaultParams();
-    void setParams(u_int32_t lldpNbRxMode, u_int32_t lldpNbTxMode, u_int32_t lldpNbDcbx);
-
-    int _port;
-
-    u_int32_t _lldpNbTxMode;
-    u_int32_t _lldpNbRxMode;
-    u_int32_t _lldpNbDcbx;
-
-    bool _userSpecifiedRx;
-    bool _userSpecifiedTx;
-    bool _userSpecifiedDcbx;
-
-    u_int32_t _lldpNbTxModeDefault;
-    u_int32_t _lldpNbRxModeDefault;
-    u_int32_t _lldpNbDcbxDefault;
-
-    u_int32_t _lldpNbTxCap;
-    u_int32_t _lldpNbRxCap;
-    u_int32_t _lldpNbDcbxEn;
-};
-
-/*
- * LLDP NB DCBX Class
- */
-
-class DCBX : public CfgParams
-{
-public:
-    DCBX(int port) : CfgParams(port == 1 ?
-            Mct_DCBX_P1 : Mct_DCBX_P2, LLDP_NB_DCBX),
-        _port(port), _ieee(MLXCFG_UNKNOWN), _cee(MLXCFG_UNKNOWN), _willing(MLXCFG_UNKNOWN),
-        _lldpNbDcbxEn(MLXCFG_UNKNOWN),
-        _ieeeDefault(MLXCFG_UNKNOWN), _ceeDefault(MLXCFG_UNKNOWN), _willingDefault(MLXCFG_UNKNOWN){}
-    ~DCBX() {};
-
-    virtual bool cfgSupported(mfile* mf, mlxCfgParam param=Mcp_Last);
-
-    virtual void setParam(mlxCfgParam paramType, u_int32_t val);
-    virtual u_int32_t getParam(mlxCfgParam paramType);
-    virtual u_int32_t getDefaultParam(mlxCfgParam paramType);
-
-    virtual int getFromDev(mfile* mf);
-    virtual int setOnDev(mfile* mf, bool ignoreCheck=false);
-    virtual int getDefaultParams(mfile* mf);
-
-protected:
-    virtual bool hardLimitCheck();
-    u_int32_t getTlvTypeBe();
-    u_int32_t getLLDPNBCapTlvTypeBe();
-
-    virtual void updateTlvFromClassAttr(void* tlv);
-    virtual void updateClassAttrFromTlv(void* tlv);
-    virtual void updateClassDefaultAttrFromTlv(void* tlv);
-    void updateClassAttrFromDefaultParams();
-    void setParams(u_int32_t lldpNbRxMode, u_int32_t lldpNbTxMode, u_int32_t lldpNbDcbx);
-    bool getCap(mfile* m);
-
-    int _port;
-
-    u_int32_t _ieee;
-    u_int32_t _cee;
-    u_int32_t _willing;
-
-    u_int32_t _lldpNbDcbxEn;
-
-    u_int32_t _ieeeDefault;
-    u_int32_t _ceeDefault;
-    u_int32_t _willingDefault;
-};
-#endif /* MLXCFG_PARAM_LIB_H_ */
diff --git a/mlxconfig/mlxcfg_parser.cpp b/mlxconfig/mlxcfg_parser.cpp
deleted file mode 100644 (file)
index d0681b1..0000000
+++ /dev/null
@@ -1,866 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <sstream>
-#include <algorithm>
-#include <errno.h>
-#include <utility>
-
-#include <common/tools_version.h>
-
-#include "mlxcfg_ui.h"
-
-using namespace std;
-
-
-#define IDENT "    "
-#define IDENT2 IDENT IDENT
-#define IDENT3 "\t\t"
-#define IDENT4 IDENT2 IDENT
-
-
-
-static void printFlagLine(string flag_s, string flag_l, string param, string desc)
-{
-    printf(IDENT2"-%s|--%s", flag_s.c_str(), flag_l.c_str());
-    if (param.length()) {
-        printf(" <%s>", param.c_str());
-    } else if (flag_l.length() < 8){
-        printf("\t");
-    }
-    printf(IDENT3": %s\n", desc.c_str());
-}
-
-#ifdef MTCR_UL
-#define DEVICE_NAME "device"
-#else
-#define DEVICE_NAME "mst device"
-#endif
-
-void MlxCfg::printHelp()
-{
-    // print opening
-    printf(IDENT"NAME:\n"
-           IDENT2   MLXCFG_NAME "\n"
-           IDENT"SYNOPSIS:\n"
-           IDENT2    MLXCFG_NAME " [-d <%s> ] [-y|-e] <s[et] <parameters to set>|q[uery]|r[eset]|[ -f <filename> backup|set_raw]>\n", DEVICE_NAME);
-
-    // print options
-    printf("\n");
-    printf(IDENT"OPTIONS:\n");
-    printFlagLine("d", "dev", "device", "Perform operation for a specified mst device.");
-    printFlagLine("f", "file", "conf_file", "raw configuration file.");
-    printFlagLine("h", "help", "", "Display help message.");
-    printFlagLine("v", "version", "", "Display version info.");
-    printFlagLine("e", "show_default", "", "Show default configurations.");
-    printFlagLine("y", "yes", "", "Answer yes in prompt.");
-
-    //print commands
-    printf("\n");
-    printf(IDENT"COMMANDS:\n");
-    printf(IDENT2"%-24s : %s\n","clear_semaphore", "clear the tool semaphore.");
-    printf(IDENT2"%-24s : %s\n","q[uery]", "query current supported configurations.");
-    printf(IDENT2"%-24s : %s\n","r[eset]", "reset all configurations to their default value.");
-    printf(IDENT2"%-24s : %s\n","s[et]", "set configurations to a specific device.");
-    printf(IDENT2"%-24s : %s\n","set_raw", "set raw configuration file.(only " FIFTH_GENERATION_LIST ".)");
-    printf(IDENT2"%-24s : %s\n","backup", "backup configurations to a file (only " FIFTH_GENERATION_LIST ".). Use set_raw command to restore file.");
-
-    // print supported commands
-    printf("\n");
-    printf(IDENT"Supported Configurations:\n");
-    printf("\n");
-
-    _allInfo.printLongDesc();
-
-    // print usage examples
-    printf("\n");
-    printf(IDENT"Examples:\n");
-    printf(IDENT2"%-35s: %s\n", "To query current configuration", MLXCFG_NAME " -d " MST_DEV_EXAMPLE " query");
-    printf(IDENT2"%-35s: %s\n", "To set configuration", MLXCFG_NAME " -d " MST_DEV_EXAMPLE " set SRIOV_EN=1 NUM_OF_VFS=16 WOL_MAGIC_EN_P1=1");
-    printf(IDENT2"%-35s: %s\n", "To set raw configuration", MLXCFG_NAME " -d " MST_DEV_EXAMPLE2 " -f conf_file set_raw");
-    printf(IDENT2"%-35s: %s\n", "To reset configuration", MLXCFG_NAME " -d " MST_DEV_EXAMPLE " reset");
-    printf("\n");
-    printf(IDENT"Supported devices:\n");
-    printf(IDENT2"4th Generation devices: ConnectX3, ConnectX3-Pro (FW 2.31.5000 and above).\n");
-    printf(IDENT2"5th Generation devices: ConnectIB, ConnectX4, ConnectX4-LX.\n");
-    printf("\n");
-    printf(IDENT"Note: query device to view supported configurations.\n");
-    printf("\n");
-}
-
-void MlxCfg::printVersion()
-{
-    print_version_string(MLXCFG_NAME, "");
-}
-
-void MlxCfg::printUsage() {
-    printf("\n" IDENT "Usage:\n"
-           IDENT2 MLXCFG_NAME " [-d <%s> ] [-y|-e] <s[et] <parameters to set>|q[uery]|r[eset]|[ -f <filename> backup|set_raw]>\n\n", DEVICE_NAME);
-}
-
-bool MlxCfg::tagExsists(mlxCfgParam tag) {
-    for (std::vector<cfgInfo>::iterator it = _mlxParams.params.begin() ; it != _mlxParams.params.end(); it++) {
-        if (it->first == tag) {
-            return true;
-        }
-    }
-    return false;
-}
-
-mlxCfgStatus MlxCfg::processArg(string tag, u_int32_t val)
-{
-    int i;
-    std::vector<cfgInfo>::iterator it;
-    for ( i = (int)Mcp_Sriov_En ; i < (int)Mcp_Last ; i++) {
-        if (tag == MlxCfgParams::param2str[i]) {
-            if (tagExsists((mlxCfgParam)i)) {
-                return err(true, "Duplicate parameter, %s.", tag.c_str());
-            }
-            _mlxParams.params.push_back(cfgInfo((mlxCfgParam)i, val));
-            break;
-        }
-    }
-    if (i == Mcp_Last) {
-        return err(true, "Unknown Parameter: %s", tag.c_str());
-    }
-    return MLX_CFG_OK;
-}
-
-
-static bool strToNum(string str, u_int32_t& num, int base=0)
-{
-    char *endp;
-    char* numStr = strcpy(new char[str.size() + 1],str.c_str());
-    num = strtoul(numStr, &endp, base);
-    if (*endp) {
-        delete[] numStr;
-        return false;
-    }
-    delete[] numStr;
-    // check errno
-    if (errno == ERANGE) {
-        return false;
-    }
-    return true;
-}
-
-mlxCfgStatus MlxCfg::extractCfgArgs(int argc, char* argv[])
-{
-    int i = 0;
-    string tag;
-    string valstr;
-    u_int32_t val = 0;
-    mlxCfgParam param = Mcp_Last;
-    for (;i < argc;i++) {
-        char* ptr;
-        // get the tag
-        ptr = strtok(argv[i], "=");
-        if (!ptr) {
-            return err(true, "invalid Configuration argument %s", argv[i]);
-        }
-        tag = ptr; // hopefully its calling copy function.
-        // get the val
-        ptr = strtok(NULL, "=");
-        if (!ptr) {
-            return err(true, "invalid Configuration argument %s", argv[i]);
-        }
-        valstr = ptr;
-        if (strtok(NULL, "=")) {
-            return err(true, "Invalid Configuration argument %s", argv[i]);
-        }
-
-        if(_allInfo.parseParam(tag, valstr, val, param)) {
-            if(param == Mcp_Last) {
-                return err(true, "Unknown Parameter: %s", tag.c_str());
-            } else {
-                return err(true, "Failed to parse %s=%s", tag.c_str(), valstr.c_str());
-            }
-        }
-
-        if(tagExsists(param)) {
-            return err(true, "Duplicate parameter, %s.", tag.c_str());
-        }
-        _mlxParams.params.push_back(cfgInfo((mlxCfgParam)param, val));
-    }
-    return MLX_CFG_OK;
-}
-
-
-
-mlxCfgStatus MlxCfg::parseArgs(int argc, char* argv[])
-{
-    int i = 1;
-    for (; i<argc; i++) {
-        string arg = argv[i];
-        if (arg == "-v" || arg == "--version") {
-            printVersion();
-            return MLX_CFG_OK_EXIT;
-        } else if (arg == "-h" || arg == "--help"){
-            printHelp();
-            return MLX_CFG_OK_EXIT;
-        } else if (arg == "-d" || arg == "--dev") {
-            if (++i == argc) {
-                return err(true, "missing device name");
-            }
-            _mlxParams.device = argv[i];
-        } else if (arg == "-y" || arg == "--yes") {
-            _mlxParams.yes = true;
-        } else if (arg == "-f" || arg == "--file") {
-            if (++i == argc) {
-                return err(true, "missing file name");
-            }
-            _mlxParams.rawTlvFile = argv[i];
-        } else if (arg == "-e" || arg == "--show_default") {
-            _mlxParams.showDefault = true;
-        }else if (arg == "set" || arg == "s") {
-            _mlxParams.cmd = Mc_Set;
-            break;
-
-        } else if (arg == "query" || arg == "q") {
-            _mlxParams.cmd = Mc_Query;
-            break;
-
-        } else if (arg == "reset" || arg == "r") {
-            _mlxParams.cmd = Mc_Reset;
-            break;
-
-        } else if (arg == "clear_semaphore") {
-            _mlxParams.cmd = Mc_Clr_Sem;
-            break;
-        } else if (arg == "set_raw") {
-            _mlxParams.cmd = Mc_Set_Raw;
-            break;
-        } else if (arg == "backup") {
-            _mlxParams.cmd = Mc_Backup;
-            break;
-        // hidden flag --force used to ignore parameter checks
-        } else if (arg == "--force"){
-            _mlxParams.force = true;
-        } else {
-            return err(true, "invalid argument: %s", arg.c_str());
-        }
-    }
-    i++;
-    if (_mlxParams.cmd == Mc_UnknownCmd) {
-        return err(true, "No command found. For more information please run " MLXCFG_NAME " -h|--help.");
-    }
-    // we parsed input until the set/query/reset cmd
-    if (i == argc && _mlxParams.cmd == Mc_Set) {
-        return err(true, "missing configuration arguments. For more information please run " MLXCFG_NAME " -h|--help.");
-    }
-    if (i != argc && (_mlxParams.cmd == Mc_Reset || _mlxParams.cmd == Mc_Query)) {
-        return err(true, "%s command expects no argument but %d argument received", (_mlxParams.cmd == Mc_Reset) ? "reset" : "query", argc -i);
-    }
-    if ((_mlxParams.cmd == Mc_Set || _mlxParams.cmd == Mc_Clr_Sem || _mlxParams.cmd == Mc_Set_Raw || _mlxParams.cmd == Mc_Backup) && _mlxParams.device.length() == 0) {
-        return err(true, "%s command expects device to be specified.",
-                _mlxParams.cmd == Mc_Set ?
-                        "set" : _mlxParams.cmd == Mc_Set_Raw ?
-                                "set_raw" : _mlxParams.cmd == Mc_Clr_Sem ?
-                                        "clear_semaphore" : "backup");
-    }
-    if ((_mlxParams.cmd == Mc_Set_Raw && _mlxParams.rawTlvFile.size() == 0 )) {
-        return err(true, "set_raw command expects raw TLV file to be specified.");
-    }
-    if ((_mlxParams.cmd == Mc_Backup && _mlxParams.rawTlvFile.size() == 0 )) {
-        return err(true, "backup command expects file to be specified.");
-    }
-    if (((_mlxParams.cmd != Mc_Set_Raw && _mlxParams.cmd != Mc_Backup) &&
-            _mlxParams.rawTlvFile.size() != 0 )) {
-        return err(true, "raw TLV file can only be specified with set_raw command.");
-    }
-
-    return extractCfgArgs(argc-i, &(argv[i]));
-}
-
-mlxCfgStatus MlxCfgParamParser::parseUserInput(string input, u_int32_t& val)
-{
-    std::map<string, u_int32_t>::iterator it;
-    //first check if it is a numeric value
-    if(strToNum(input, val, 0)) {
-        if(val == MLXCFG_UNKNOWN) {
-            return MLX_CFG_ERROR;
-        }
-        return MLX_CFG_OK;
-    }
-    for(it = _strMap.begin(); it != _strMap.end(); it++){
-        if(compareVal(it->first, input)){
-            val = it->second;
-            return MLX_CFG_OK;
-        }
-    }
-    return MLX_CFG_ERROR;
-}
-
-string MlxCfgParamParser::getShortDescStrAux()
-{
-    string s;
-    std::map<string, u_int32_t>::iterator it;
-
-    s = _name + "=<";
-
-    if(_strMap.size() == 0) {
-        s += _allowedValues;
-    } else {
-        //printf first str
-        it = _strMap.begin();
-        s += it->first;
-        it++;
-        for(; it != _strMap.end(); it++)
-        {
-            s += "|";
-            s += it->first;
-        }
-    }
-
-    s += ">";
-    return s;
-}
-
-void MlxCfgParamParser::printShortDesc()
-{
-    printf(IDENT4"%s\n", getShortDescStrAux().c_str());
-}
-
-void MlxCfgParamParser::splitAndPrintDesc(string desc)
-{
-    if(desc.length() > 129) {
-        //find index of last space in first 129 chars and split there
-        int i = desc.substr(0, 129).find_last_of(' ');
-        string desc2 = desc.substr(i, (desc.length() - i));
-        printf(IDENT4"%-46s   %s\n", "", desc.substr(0, i).c_str());
-        splitAndPrintDesc(desc2);
-    } else {
-        printf(IDENT4"%-46s   %s\n", "", desc.c_str());
-    }
-}
-
-bool MlxCfgParamParser::compareVal(string a, string b)
-{
-    if(a.length() != b.length()){
-        return false;
-    }
-
-    for(unsigned int i = 0; i < a.length(); i++) {
-        if(tolower(a[i]) != tolower(b[i])){
-            return false;
-        }
-    }
-
-    return true;
-}
-
-void MlxCfgParamParser::printLongDesc()
-{
-    string shortDesc = getShortDescStrAux();
-    if(_desc.length() > 129) {
-        //find index of last space in first 129 chars and split there
-        int i = _desc.substr(0, 129).find_last_of(' ');
-        string desc2 = _desc.substr(i, (_desc.length() - i));
-        printf(IDENT4"%-46s : %s\n", shortDesc.c_str(), _desc.substr(0, i).c_str());
-        splitAndPrintDesc(desc2);
-    } else {
-        printf(IDENT4"%-46s : %s\n", shortDesc.c_str(), _desc.c_str());
-    }
-}
-
-string MlxCfgParamParser::getStrVal(u_int32_t val){
-    std::map<string, u_int32_t>::iterator it;
-    if(val == MLXCFG_UNKNOWN) {
-        return "MLXCFG_UNKNOWN";
-    }
-    if(_strMap.size() == 0) {
-        return "";
-    } else {
-        for(it = _strMap.begin(); it != _strMap.end(); it++){
-            if(val == it->second){
-                return it->first;
-            }
-        }
-        //not a legal value, print it as it
-        return "";
-    }
-}
-
-bool mlxCfgParamParserCompare(MlxCfgParamParser a, MlxCfgParamParser b)
-{
-    return a.getName() < b.getName();
-}
-
-vector<MlxCfgParamParser> MlxCfgInfo::getParamsMapValues()
-{
-    vector<MlxCfgParamParser> vals;
-    std::map<mlxCfgParam, MlxCfgParamParser>::iterator it;
-    for(it = _params.begin(); it != _params.end(); it++)
-    {
-        vals.push_back(it->second);
-    }
-    return vals;
-}
-
-void MlxCfgInfo::printShortDesc()
-{
-    printf("\n");
-    printf(IDENT2"%s: %s\n",_name.c_str(), _title.c_str());
-
-    vector<MlxCfgParamParser> vals = getParamsMapValues();
-    std::sort(vals.begin(), vals.end(), mlxCfgParamParserCompare);
-
-    for(unsigned int i = 0; i < vals.size(); i++)
-    {
-        vals[i].printShortDesc();
-    }
-}
-
-void MlxCfgInfo::printLongDesc()
-{
-    printf("\n");
-    printf(IDENT2"%s: %s\n",_name.c_str(), _title.c_str());
-
-    vector<MlxCfgParamParser> vals = getParamsMapValues();
-    std::sort(vals.begin(), vals.end(), mlxCfgParamParserCompare);
-
-    for(unsigned int i = 0; i < vals.size(); i++)
-    {
-        vals[i].printLongDesc();
-    }
-}
-
-mlxCfgStatus MlxCfgInfo::getParamParser(mlxCfgParam p, MlxCfgParamParser& paramParser)
-{
-    std::map<mlxCfgParam, MlxCfgParamParser>::iterator it = _params.find(p);
-    if(it == _params.end()) {
-        return MLX_CFG_ERROR;
-    }
-    paramParser = it->second;
-    return MLX_CFG_OK;
-}
-
-mlxCfgStatus MlxCfgInfo::getParamParser(string name, MlxCfgParamParser& paramParser)
-{
-    std::map<mlxCfgParam, MlxCfgParamParser>::iterator it;
-    for(it = _params.begin(); it != _params.end(); it++)
-    {
-        if(name == it->second.getName()) {
-            paramParser = it->second;
-            return MLX_CFG_OK;
-        }
-    }
-    return MLX_CFG_ERROR;
-}
-
-MlxCfgInfo MlxCfgAllInfo::createPciSettings()
-{
-    map<string, u_int32_t> paramMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-    paramMap["True"] = 1;
-    paramMap["False"] = 0;
-    params[Mcp_Fpp_En] = MlxCfgParamParser(Mcp_Fpp_En, "FPP_EN", "Enable function per port", paramMap);
-    params[Mcp_Log_Bar_Size] = MlxCfgParamParser(Mcp_Log_Bar_Size, "LOG_BAR_SIZE", "example: for 8Mb bar size set LOG_BAR_SIZE=3 (only " FOURTH_GENERATION_LIST ")", "base_2_log_in_mb");
-    params[Mcp_Sriov_En] = MlxCfgParamParser(Mcp_Sriov_En, "SRIOV_EN", "Enable SR-IOV", paramMap);
-    params[Mcp_PF_Log_Bar_Size] = MlxCfgParamParser(Mcp_PF_Log_Bar_Size, "PF_LOG_BAR_SIZE", "example: for 8Mb bar size set PF_LOG_BAR_SIZE=3 (only " FIFTH_GENERATION_LIST ")", "base_2_log_in_mb");
-    params[Mcp_VF_Log_Bar_Size] = MlxCfgParamParser(Mcp_VF_Log_Bar_Size, "VF_LOG_BAR_SIZE", "example: for 8Mb bar size set VF_LOG_BAR_SIZE=3 (only " FIFTH_GENERATION_LIST ")", "base_2_log_in_mb");
-    params[Mcp_Num_Of_Vfs] = MlxCfgParamParser(Mcp_Num_Of_Vfs, "NUM_OF_VFS", "desired amount of virtual functions", "NUM");
-    params[Mcp_Num_Pf_Msix] = MlxCfgParamParser(Mcp_Num_Pf_Msix, "NUM_PF_MSIX", "Number of MSI-X vectors and EQs per PF (only " FIFTH_GENERATION_LIST ")", "NUM");
-    params[Mcp_Num_Vf_Msix] = MlxCfgParamParser(Mcp_Num_Vf_Msix, "NUM_VF_MSIX", "Number of MSI-X vectors and EQs per VF (only " FIFTH_GENERATION_LIST ")", "NUM");
-    return MlxCfgInfo("PCI Settings", "", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createIBDynamicallyConnect()
-{
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    //IB Dynamically Connect
-    params[Mcp_Dcr_Lifo_Size] = MlxCfgParamParser(Mcp_Dcr_Lifo_Size, "DCR_LIFO_SIZE", "The amount of total DCRs available to join linked-lists after hash DCRs", "SIZE");
-    params[Mcp_Log_Dcr_Hash_Table_Size] = MlxCfgParamParser(Mcp_Log_Dcr_Hash_Table_Size, "LOG_DCR_HASH_TABLE_SIZE", "log2 of the hash table size minus 1", "SIZE");
-    return MlxCfgInfo("IB Dynamically Connect", "", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createInfinibandBootSettings()
-{
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    //Infiniband Boot Settings
-    params[Mcp_Boot_Pkey_P1] = MlxCfgParamParser(Mcp_Boot_Pkey_P1, "BOOT_PKEY_P1", "partition key to be used by PXE boot (ConnectX3, ConnectX3-Pro Only)", "PKEY");
-    params[Mcp_Boot_Pkey_P2] = MlxCfgParamParser(Mcp_Boot_Pkey_P2, "BOOT_PKEY_P2", "set 0 for default", "PKEY");
-    return MlxCfgInfo("Infiniband Boot Settings", "", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createInternalSettings()
-{
-    map<string, u_int32_t> paramMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    //Internal Settings
-    paramMap["Auto"] = 0;
-    paramMap["4KB"] = 12;
-    params[Mcp_Log_Tpt_Size] = MlxCfgParamParser(Mcp_Log_Tpt_Size, "INT_LOG_MAX_PAYLOAD_SIZE", """Burst length", paramMap);
-    return MlxCfgInfo("Internal Settings", "", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createPrebootBootSettings()
-{
-    map<string, u_int32_t> paramMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    //Preboot Boot Settings
-    paramMap["True"] = 1;
-    paramMap["False"] = 0;
-    params[Mcp_Boot_Option_Rom_En_P1] = MlxCfgParamParser(Mcp_Boot_Option_Rom_En_P1, "BOOT_OPTION_ROM_EN_P1", "Disable/Enable boot option ROM", paramMap);
-    params[Mcp_Boot_Option_Rom_En_P2] = MlxCfgParamParser(Mcp_Boot_Option_Rom_En_P2, "BOOT_OPTION_ROM_EN_P2", "", paramMap);
-    params[Mcp_Boot_Vlan_En_P1] = MlxCfgParamParser(Mcp_Boot_Vlan_En_P1, "BOOT_VLAN_EN_P1", "Disable/Enable VLAN mode for network boot", paramMap);
-    params[Mcp_Boot_Vlan_En_P2] = MlxCfgParamParser(Mcp_Boot_Vlan_En_P2, "BOOT_VLAN_EN_P2", "", paramMap);
-    params[Mcp_Boot_Retry_Cnt_P1] = MlxCfgParamParser(Mcp_Boot_Retry_Cnt_P1, "BOOT_RETRY_CNT_P1", "Number of retries to attempt in case of boot failure. 7 indicates infinite retries.", "0..7");
-    params[Mcp_Boot_Retry_Cnt_P2] = MlxCfgParamParser(Mcp_Boot_Retry_Cnt_P2, "BOOT_RETRY_CNT_P2", "", "0..7");
-    paramMap.clear();
-    paramMap["None"] = 0;
-    paramMap["PXE"] = 1;
-    paramMap["iSCSI"] = 2;
-    paramMap["Both"] = 3;
-    params[Mcp_Legacy_Boot_Protocol_P1] = MlxCfgParamParser(Mcp_Legacy_Boot_Protocol_P1, "LEGACY_BOOT_PROTOCOL_P1", "None: disable legacy boot. PXE: DHCP/TFTP boot. Both: PXE and iSCSI", paramMap);
-    params[Mcp_Legacy_Boot_Protocol_P2] = MlxCfgParamParser(Mcp_Legacy_Boot_Protocol_P2, "LEGACY_BOOT_PROTOCOL_P2", "", paramMap);
-    params[Mcp_Boot_Vlan_P1] = MlxCfgParamParser(Mcp_Boot_Vlan_P1, "BOOT_VLAN_P1", "VLAN ID for the network boot", "VLAN ID");
-    params[Mcp_Boot_Vlan_P2] = MlxCfgParamParser(Mcp_Boot_Vlan_P2, "BOOT_VLAN_P2", "", "VLAN ID");
-    return MlxCfgInfo("Preboot Boot Settings", "Settings that control the legacy option ROM", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createRoCECongestionControlECN()
-{
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    //RoCE Congestion Control ECN
-    params[Mcp_Clamp_Tgt_Rate_P1] = MlxCfgParamParser(Mcp_Clamp_Tgt_Rate_P1, "CLAMP_TGT_RATE_P1","If set, whenever a CNP is processed,"
-                  " the target rate is updated to be the current rate. Default=1"
-              ,"0|1");
-    params[Mcp_Clamp_Tgt_Rate_P2] = MlxCfgParamParser(Mcp_Clamp_Tgt_Rate_P2, "CLAMP_TGT_RATE_P2","","0|1");
-    params[Mcp_Clamp_Tgt_Rate_After_Time_Inc_P1] = MlxCfgParamParser(Mcp_Clamp_Tgt_Rate_After_Time_Inc_P1, "CLAMP_TGT_RATE_AFTER_TIME_INC_P1",
-                "When receiving an CNP, the target rate should"
-                    " be updated if the transmission rate was increased"
-                    " due to the timer, and not only due to the byte counter"". Default=1"
-                ,"0|1");
-    params[Mcp_Clamp_Tgt_Rate_After_Time_Inc_P2] = MlxCfgParamParser(Mcp_Clamp_Tgt_Rate_After_Time_Inc_P2, "CLAMP_TGT_RATE_AFTER_TIME_INC_P2","","0|1");
-    params[Mcp_Rpg_Time_Reset_P1] = MlxCfgParamParser(Mcp_Rpg_Time_Reset_P1, "RPG_TIME_RESET_P1"
-              ,"Time between rate increases if no CNPs are received. Given in u-seconds. Default=2"
-              ,"USEC");
-    params[Mcp_Rpg_Time_Reset_P2] = MlxCfgParamParser(Mcp_Rpg_Time_Reset_P2, "RPG_TIME_RESET_P2","","USEC");
-    params[Mcp_Rpg_Byte_Reset_P1] = MlxCfgParamParser(Mcp_Rpg_Byte_Reset_P1, "RPG_BYTE_RESET_P1"
-              ,"Transmitted data between rate increases if no CNPs are received. Given in Bytes. "
-               "Disabled=0, Default=150"
-              ,"BYTE_NUM");
-    params[Mcp_Rpg_Byte_Reset_P2] = MlxCfgParamParser(Mcp_Rpg_Byte_Reset_P2, "RPG_BYTE_RESET_P2","","BYTE_NUM");
-    params[Mcp_Rpg_Threshold_P1] = MlxCfgParamParser(Mcp_Rpg_Threshold_P1, "RPG_THRESHOLD_P1"
-             ,"The number of times rpByteStage or rpTimeStage can count before the RP rate control "
-              "state machine advances states. Default=5"
-             ,"0..31");
-    params[Mcp_Rpg_Threshold_P2] = MlxCfgParamParser(Mcp_Rpg_Threshold_P2, "RPG_THRESHOLD_P2","","0..31");
-    params[Mcp_Rpg_Max_Rate_P1] = MlxCfgParamParser(Mcp_Rpg_Max_Rate_P1, "RPG_MAX_RATE_P1"
-            ,"The maximum rate, in Mbits per second, at which an RP can transmit. "
-             "Once this limit is reached, the RP rate limited is released and "
-             "the flow is not rate limited any more. Default=0 (Full port speed)."
-            ,"RATE_IN_MBIT");
-    params[Mcp_Rpg_Max_Rate_P2] = MlxCfgParamParser(Mcp_Rpg_Max_Rate_P2, "RPG_MAX_RATE_P2","","RATE_IN_MBIT");
-    params[Mcp_Rpg_Ai_Rate_P1] = MlxCfgParamParser(Mcp_Rpg_Ai_Rate_P1, "RPG_AI_RATE_P1","The rate, in Mbits per second,"
-            " used to increase rpTargetRate in the RPR_ACTIVE_INCREASE state."
-            " Default=10."
-           ,"RATE_IN_MBIT");
-    params[Mcp_Rpg_Ai_Rate_P2] = MlxCfgParamParser(Mcp_Rpg_Ai_Rate_P2, "RPG_AI_RATE_P2","","RATE_IN_MBIT");
-    params[Mcp_Rpg_Hai_Rate_P1] = MlxCfgParamParser(Mcp_Rpg_Hai_Rate_P1, "RPG_HAI_RATE_P1"
-            ,"The rate, in Mbits per second, used to increase rpTargetRate in the RPR_HYPER_INCREASE state."
-             " Default=50"
-            ,"RATE_IN_MBIT");
-    params[Mcp_Rpg_Hai_Rate_P2] = MlxCfgParamParser(Mcp_Rpg_Hai_Rate_P2, "RPG_HAI_RATE_P2","","RATE_IN_MBIT");
-    params[Mcp_Rpg_Gd_P1] = MlxCfgParamParser(Mcp_Rpg_Gd_P1, "RPG_GD_P1"
-            ,"If a CNP is received, the flow rate is reduced at the beginning of the next rate_reduce_monitor_period interval to,"
-             "(1-Alpha/Gd)*CurrentRate. RPG_GD is given as log2(Gd), where Gd may only be powers of 2. Default=7."
-            ,"0..15");
-    params[Mcp_Rpg_Gd_P2] = MlxCfgParamParser(Mcp_Rpg_Gd_P2, "RPG_GD_P2","","0..15");
-    params[Mcp_Rpg_Min_Dec_Fac_P1] = MlxCfgParamParser(Mcp_Rpg_Min_Dec_Fac_P1, "RPG_MIN_DEC_FAC_P1"
-            ,"The minimum factor by which the current transmit rate can be changed when processing a CNP."
-             "Value is given as a percentage (1-100). Default=50."
-            ,"1..100");
-    params[Mcp_Rpg_Min_Dec_Fac_P2] = MlxCfgParamParser(Mcp_Rpg_Min_Dec_Fac_P2, "RPG_MIN_DEC_FAC_P2","","1..100");
-    params[Mcp_Rpg_Min_Rate_P1] = MlxCfgParamParser(Mcp_Rpg_Min_Rate_P1, "RPG_MIN_RATE_P1"
-            ,"The minimum value, in Mb per second, for rate to limit. Default=2000"
-            ,"RATE_IN_MBIT");
-    params[Mcp_Rpg_Min_Rate_P2] = MlxCfgParamParser(Mcp_Rpg_Min_Rate_P2, "RPG_MIN_RATE_P2","","RATE_IN_MBIT");
-    params[Mcp_Rate_To_Set_On_First_Cnp_P1] = MlxCfgParamParser(Mcp_Rate_To_Set_On_First_Cnp_P1, "RATE_TO_SET_ON_FIRST_CNP_P1"
-            ,"The rate that is set for the flow when a rate limiter is allocated to it upon first CNP received, in Mbps. "
-             "Default=0"
-            ,"RATE_IN_MBIT");
-    params[Mcp_Rate_To_Set_On_First_Cnp_P2] = MlxCfgParamParser(Mcp_Rate_To_Set_On_First_Cnp_P2, "RATE_TO_SET_ON_FIRST_CNP_P2","","RATE_IN_MBIT");
-    params[Mcp_Dce_Tcp_G_P1] = MlxCfgParamParser(Mcp_Dce_Tcp_G_P1, "DCE_TCP_G_P1"
-            ,"Used to update the congestion estimator (alpha) once every dce_tcp_rtt microseconds. Default=64"
-            ,"NUM");
-    params[Mcp_Dce_Tcp_G_P2] = MlxCfgParamParser(Mcp_Dce_Tcp_G_P2, "DCE_TCP_G_P2","","NUM");
-    params[Mcp_Dce_Tcp_Rtt_P1] = MlxCfgParamParser(Mcp_Dce_Tcp_Rtt_P1, "DCE_TCP_RTT_P1"
-            ,"The time between updates of the alpha value, in microseconds. Default=2"
-            ,"USEC");
-    params[Mcp_Dce_Tcp_Rtt_P2] = MlxCfgParamParser(Mcp_Dce_Tcp_Rtt_P2, "DCE_TCP_RTT_P2","","USEC");
-    params[Mcp_Rate_Reduce_Monitor_Period_P1] = MlxCfgParamParser(Mcp_Rate_Reduce_Monitor_Period_P1, "RATE_REDUCE_MONITOR_PERIOD_P1"
-            ,"The minimum time between 2 consecutive rate reductions for a single flow. "
-             "Rate reduction will occur only if a CNP is received during the relevant time interval. Default=2."
-            ,"USEC");
-    params[Mcp_Rate_Reduce_Monitor_Period_P2] = MlxCfgParamParser(Mcp_Rate_Reduce_Monitor_Period_P2, "RATE_REDUCE_MONITOR_PERIOD_P2","","USEC");
-    params[Mcp_Initial_Alpha_Value_P1] = MlxCfgParamParser(Mcp_Initial_Alpha_Value_P1, "INITIAL_ALPHA_VALUE_P1"
-            ,"The initial value of alpha to use when receiving the first CNP for a flow. "
-             "Expressed in a fixed point fraction of 2^10."
-            ,"NUM");
-    params[Mcp_Initial_Alpha_Value_P2] = MlxCfgParamParser(Mcp_Initial_Alpha_Value_P2, "INITIAL_ALPHA_VALUE_P2","","NUM");
-    params[Mcp_Min_Time_Between_Cnps_P1] = MlxCfgParamParser(Mcp_Min_Time_Between_Cnps_P1, "MIN_TIME_BETWEEN_CNPS_P1"
-            ,"Minimum time between sending cnps from the port, in microseconds. Default=0"
-            ,"USEC");
-    params[Mcp_Min_Time_Between_Cnps_P2] = MlxCfgParamParser(Mcp_Min_Time_Between_Cnps_P2, "MIN_TIME_BETWEEN_CNPS_P2","","USEC");
-    params[Mcp_Cnp_Dscp_P1] = MlxCfgParamParser(Mcp_Cnp_Dscp_P1, "CNP_DSCP_P1"
-            ,"The DiffServ Code Point of the generated CNP for this port. Default=0"
-            ,"0..7");
-    params[Mcp_Cnp_Dscp_P2] = MlxCfgParamParser(Mcp_Cnp_Dscp_P2, "CNP_DSCP_P2","","0..7");
-    params[Mcp_Cnp_802p_Prio_P1] = MlxCfgParamParser(Mcp_Cnp_802p_Prio_P1, "CNP_802P_PRIO_P1"
-            ,"The 802.1p priority value of the generated CNP for this port. Default=7"
-            ,"NUM");
-    params[Mcp_Cnp_802p_Prio_P2] = MlxCfgParamParser(Mcp_Cnp_802p_Prio_P2, "CNP_802P_PRIO_P2","","NUM");
-    return MlxCfgInfo("RoCE Congestion Control ECN", "", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createRoCEV1_5NextProtocol()
-{
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    //RoCE V1.5 next protocol
-    params[Mcp_RoCE_Next_Protocol] = MlxCfgParamParser(Mcp_RoCE_Next_Protocol, "ROCE_NEXT_PROTOCOL",
-            "The next protocol value set in the IPv4/IPv6 packets for RoCE v1.5. The default is 0xFE.", "0..255");
-
-    return MlxCfgInfo("RoCE V1.5 next protocol", "", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createRoCECongestionControlParameters()
-{
-    map<string, u_int32_t> paramMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    //RoCE Congestion Control Parameters
-    paramMap["ECN"] = 0;
-    paramMap["QCN"] = 1;
-    params[Mcp_RoCE_CC_Algorithm_P1] = MlxCfgParamParser(Mcp_RoCE_CC_Algorithm_P1, "ROCE_CC_ALGORITHM_P1", "Congestion control algorithm.", paramMap);
-    params[Mcp_RoCE_CC_Algorithm_P2] = MlxCfgParamParser(Mcp_RoCE_CC_Algorithm_P2, "ROCE_CC_ALGORITHM_P2", "", paramMap);
-    params[Mcp_RoCE_CC_Prio_Mask_P1] = MlxCfgParamParser(Mcp_RoCE_CC_Prio_Mask_P1, "ROCE_CC_PRIO_MASK_P1", "Per priority enable disable bitmask. default 0", "0..255");
-    params[Mcp_RoCE_CC_Prio_Mask_P2] = MlxCfgParamParser(Mcp_RoCE_CC_Prio_Mask_P2, "ROCE_CC_PRIO_MASK_P2", "", "0..255");
-    return MlxCfgInfo("RoCE Congestion Control Parameters", "", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createVPISettings()
-{
-    map<string, u_int32_t> paramMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    //VPI Settings
-    paramMap["IB"] = 1;
-    paramMap["ETH"] = 2;
-    paramMap["VPI"] = 3;
-    params[Mcp_Link_Type_P1] = MlxCfgParamParser(Mcp_Link_Type_P1, "LINK_TYPE_P1", "", paramMap);
-    params[Mcp_Link_Type_P2] = MlxCfgParamParser(Mcp_Link_Type_P2, "LINK_TYPE_P2", "", paramMap);
-    return MlxCfgInfo("VPI Settings", "Control network link type", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createWakeOnLAN()
-{
-    map<string, u_int32_t> paramMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    //Wake On LAN
-    paramMap["True"] = 1;
-    paramMap["False"] = 0;
-    params[Mcp_Wol_Magic_En] = MlxCfgParamParser(Mcp_Wol_Magic_En, "WOL_MAGIC_EN", "only " FIFTH_GENERATION_LIST " (per physical function)", paramMap);
-    params[Mcp_Wol_Magic_En_P1] = MlxCfgParamParser(Mcp_Wol_Magic_En_P1, "WOL_MAGIC_EN_P1", "enable wake on magic packet(per port.)", paramMap);
-    params[Mcp_Wol_Magic_En_P2] = MlxCfgParamParser(Mcp_Wol_Magic_En_P2, "WOL_MAGIC_EN_P2", "only " FOURTH_GENERATION_LIST, paramMap);
-    return MlxCfgInfo("Wake On LAN", "", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createExternalPort()
-{
-    map<string, u_int32_t> paramMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    paramMap["False"] = 0;
-    paramMap["True"] = 1;
-
-    //External ports
-    params[Mcp_Port_Owner] = MlxCfgParamParser(Mcp_Port_Owner, "PORT_OWNER", "If Set, Indicates this function of this host own the external physical port.", paramMap);
-    params[Mcp_Allow_Rd_Counters] = MlxCfgParamParser(Mcp_Allow_Rd_Counters, "ALLOW_RD_COUNTERS", "If Set, Indicates this function of this host allowed to rd counters of external physical port.", paramMap);
-    return MlxCfgInfo("External Ports", "", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createBootSettingsExt()
-{
-    map<string, u_int32_t> paramMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    //Boot Settings Extras
-    paramMap["IPv4"] = 0;
-    paramMap["IPv6"] = 1;
-    paramMap["IPv4_IPv6"] = 2;
-    paramMap["IPv6_IPv4"] = 3;
-    params[Mcp_Boot_Settings_Ext_IP_Ver] = MlxCfgParamParser(Mcp_Boot_Settings_Ext_IP_Ver, "IP_VER", "Select which IP protocol version will be used by flexboot. only " FIFTH_GENERATION_LIST ".", paramMap);
-    params[Mcp_Boot_Settings_Ext_IP_Ver_P1] = MlxCfgParamParser(Mcp_Boot_Settings_Ext_IP_Ver_P1, "IP_VER_P1", "Select which IP protocol version will be used by flexboot, only "  FOURTH_GENERATION_LIST " (per port).", paramMap);
-    params[Mcp_Boot_Settings_Ext_IP_Ver_P2] = MlxCfgParamParser(Mcp_Boot_Settings_Ext_IP_Ver_P2, "IP_VER_P2", "", paramMap);
-    return MlxCfgInfo("Boot Settings Extras", "These parameters are relevant only for servers using legacy BIOS PXE boot (flexboot).", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createQoS()
-{
-    map<string, u_int32_t> vlParamMap;
-    map<string, u_int32_t> tcParamMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    tcParamMap["8_TCS"] = 0;
-    tcParamMap["1_TC"] = 1;
-    tcParamMap["2_TCS"] = 2;
-    tcParamMap["3_TCS"] = 3;
-    tcParamMap["4_TCS"] = 4;
-    tcParamMap["5_TCS"] = 5;
-    tcParamMap["6_TCS"] = 6;
-    tcParamMap["7_TCS"] = 7;
-
-    vlParamMap["1_VL"] = 1;
-    vlParamMap["2_VLS"] = 2;
-    vlParamMap["4_VLS"] = 3;
-    vlParamMap["8_VLS"] = 4;
-    vlParamMap["15_VLS"] = 5;
-
-    params[Mcp_QoS_Num_of_TC_P1] = MlxCfgParamParser(Mcp_QoS_Num_of_TC_P1, "NUM_OF_TC_P1", "Number of traffic classes, when DCB-X is enabled, this is the maximum number of TC that can negotiated with the remote peer.", tcParamMap);
-    params[Mcp_QoS_Num_of_TC_P2] = MlxCfgParamParser(Mcp_QoS_Num_of_TC_P2, "NUM_OF_TC_P2", "", tcParamMap);
-    params[Mcp_QoS_Num_of_VL_P1] = MlxCfgParamParser(Mcp_QoS_Num_of_VL_P1, "NUM_OF_VL_P1", "Number of Infiniband Virtual Lanes for this port.", vlParamMap);
-    params[Mcp_QoS_Num_of_VL_P2] = MlxCfgParamParser(Mcp_QoS_Num_of_VL_P2, "NUM_OF_VL_P2", "", vlParamMap);
-    return MlxCfgInfo("QoS", "", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createLLDPClientSettings()
-{
-    map<string, u_int32_t> paramMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    paramMap["False"] = 0;
-    paramMap["True"] = 1;
-
-    params[Mcp_LLDP_NB_RX_Mode_P1] = MlxCfgParamParser(Mcp_LLDP_NB_RX_Mode_P1, "LLDP_NB_RX_MODE_P1", "Enable the internal LLDP client, and define which TLV it will process.", "0..2");
-    params[Mcp_LLDP_NB_TX_Mode_P1] = MlxCfgParamParser(Mcp_LLDP_NB_TX_Mode_P1, "LLDP_NB_TX_MODE_P1", "Select which LLDP TLV will be generated by the NIC.", "0..2");
-    params[Mcp_LLDP_NB_DCBX_P1] = MlxCfgParamParser(Mcp_LLDP_NB_DCBX_P1, "LLDP_NB_DCBX_P1", "Enable DCBX (applicable when LLDP_NB_TX_MODE and LLDP_NB_RX_MODE are in ALL mode)", paramMap);
-    params[Mcp_LLDP_NB_RX_Mode_P2] = MlxCfgParamParser(Mcp_LLDP_NB_RX_Mode_P2, "LLDP_NB_RX_MODE_P2", "", "0..2");
-    params[Mcp_LLDP_NB_TX_Mode_P2] = MlxCfgParamParser(Mcp_LLDP_NB_TX_Mode_P2, "LLDP_NB_TX_MODE_P2", "", "0..2");
-    params[Mcp_LLDP_NB_DCBX_P2] = MlxCfgParamParser(Mcp_LLDP_NB_DCBX_P2, "LLDP_NB_DCBX_P2", "", paramMap);
-    return MlxCfgInfo("LLDP Client Settings", "", params);
-}
-
-MlxCfgInfo MlxCfgAllInfo::createLLDPNBDCBX()
-{
-    map<string, u_int32_t> paramMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    paramMap["False"] = 0;
-    paramMap["True"] = 1;
-
-    params[Mcp_DCBX_IEEE_EN_P1] = MlxCfgParamParser(Mcp_DCBX_IEEE_EN_P1, "DCBX_IEEE_P1", "Enable DCBX in IEEE mode.", paramMap);
-    params[Mcp_DCBX_CEE_EN_P1] = MlxCfgParamParser(Mcp_DCBX_CEE_EN_P1, "DCBX_CEE_P1", "Enable DCBX in CEE mode.", paramMap);
-    params[Mcp_DCBX_WILLING_P1] = MlxCfgParamParser(Mcp_DCBX_WILLING_P1, "DCBX_WILLING_P1", "Allow the NIC to accept DCBX configuration from the remote peer.", paramMap);
-    params[Mcp_DCBX_IEEE_EN_P2] = MlxCfgParamParser(Mcp_DCBX_IEEE_EN_P2, "DCBX_IEEE_P2", "", paramMap);
-    params[Mcp_DCBX_CEE_EN_P2] = MlxCfgParamParser(Mcp_DCBX_CEE_EN_P2, "DCBX_CEE_P2", "", paramMap);
-    params[Mcp_DCBX_WILLING_P2] = MlxCfgParamParser(Mcp_DCBX_WILLING_P2, "DCBX_WILLING_P2", "", paramMap);
-    return MlxCfgInfo("LLDP NB DCBX", "", params);
-}
-
-bool sortCfg(MlxCfgInfo a, MlxCfgInfo b)
-{
-    return a.getName() < b.getName();
-}
-
-MlxCfgAllInfo::MlxCfgAllInfo()
-{
-    //Initialize all the configurations
-    map<string, u_int32_t> paramMap;
-    map<mlxCfgParam, MlxCfgParamParser> params;
-
-    _allInfo.push_back(createPciSettings());
-    _allInfo.push_back(createIBDynamicallyConnect());
-    _allInfo.push_back(createInfinibandBootSettings());
-    _allInfo.push_back(createInternalSettings());
-    _allInfo.push_back(createPrebootBootSettings());
-    _allInfo.push_back(createRoCECongestionControlECN());
-    _allInfo.push_back(createRoCEV1_5NextProtocol());
-    _allInfo.push_back(createRoCECongestionControlParameters());
-    _allInfo.push_back(createVPISettings());
-    _allInfo.push_back(createWakeOnLAN());
-    _allInfo.push_back(createExternalPort());
-    _allInfo.push_back(createBootSettingsExt());
-    _allInfo.push_back(createQoS());
-    _allInfo.push_back(createLLDPClientSettings());
-    _allInfo.push_back(createLLDPNBDCBX());
-    std::sort(_allInfo.begin(), _allInfo.end(), sortCfg);
-}
-
-void MlxCfgAllInfo::printShortDesc()
-{
-    for(u_int32_t i = 0; i < _allInfo.size(); i++){
-        _allInfo[i].printShortDesc();
-    }
-}
-
-void MlxCfgAllInfo::printLongDesc()
-{
-    for(u_int32_t i = 0; i < _allInfo.size(); i++){
-        _allInfo[i].printLongDesc();
-    }
-}
-
-mlxCfgStatus MlxCfgAllInfo::getParamParser(mlxCfgParam p, MlxCfgParamParser& paramParser)
-{
-    for(u_int32_t j = 0; j < _allInfo.size(); j++){
-        if(_allInfo[j].getParamParser(p, paramParser) == MLX_CFG_OK) {
-            return MLX_CFG_OK;
-        }
-    }
-    return MLX_CFG_ERROR;
-}
-
-mlxCfgStatus MlxCfgAllInfo::parseParam(string tag, string strVal, u_int32_t& val, mlxCfgParam& param)
-{
-    MlxCfgParamParser paramParser;
-    for(u_int32_t j = 0; j < _allInfo.size(); j++){
-        if(_allInfo[j].getParamParser(tag, paramParser) == MLX_CFG_OK) {
-            param = paramParser.getParam();
-            return (paramParser.parseUserInput(strVal, val)) ?
-                    MLX_CFG_ERROR :
-                    MLX_CFG_OK;
-        }
-    }
-    return MLX_CFG_ERROR;
-}
diff --git a/mlxconfig/mlxcfg_status.h b/mlxconfig/mlxcfg_status.h
deleted file mode 100644 (file)
index 72b9385..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-/*
- * mlxcfg_status.h
- *
- *  Created on: Mar 23, 2015
- *      Author: adrianc
- */
-
-#ifndef MLXCFG_STATUS_H_
-#define MLXCFG_STATUS_H_
-
-/*
- * Enum for handling error messages
- */
-
-typedef enum {
-    MCE_SUCCESS = 0,
-    MCE_FAILED,
-    MCE_TLV_NOT_FOUND,
-    MCE_TLV_NOT_SUPP,
-    MCE_NVCFG_NOT_SUPP,
-    MCE_TOOLS_HCR_NOT_SUPP,
-    MCE_DRIVER_DOWN,
-    MCE_UNSUPPORTED_DEVICE,
-    MCE_UNSUPPORTED_CFG,
-    MCE_BAD_PARAMS,
-    MCE_BAD_PARAM_VAL,
-    MCE_DEV_BUSY,
-    MCE_UNKNOWN_TLV,
-    MCE_REG_NOT_SUPP,
-    MCE_METHOD_NOT_SUPP,
-    MCE_RES_NOT_AVAIL,
-    MCE_CONF_CORRUPT,
-    MCE_TLV_LEN_TOO_SMALL,
-    MCE_BAD_CONFIG,
-    MCE_ERASE_EXEEDED,
-    MCE_BAD_OP,
-    MCE_BAD_STATUS,
-    MCE_CR_ERROR,
-    MCE_NOT_IMPLEMENTED,
-    MCE_INCOMPLETE_PARAMS,
-    MCE_OPEN_DEVICE,
-    MCE_PCI,
-    MCE_GET_DEFAULT_PARAMS,
-    MCE_UNKNOWN_ERR
-}McStatus;
-
-
-#endif /* MLXCFG_STATUS_H_ */
diff --git a/mlxconfig/mlxcfg_ui.cpp b/mlxconfig/mlxcfg_ui.cpp
deleted file mode 100644 (file)
index a83df79..0000000
+++ /dev/null
@@ -1,763 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-#include <signal.h>
-#include <iostream>
-#include <fstream>
-#include <sstream>
-
-#include <tools_dev_types.h>
-
-#include "mlxcfg_ui.h"
-
-// Signal handler section
-void TerminationHandler(int signum);
-
-#ifdef __WIN__
-#include <windows.h>
-
-static BOOL CtrlHandler( DWORD fdwCtrlType )
-{
-    switch( fdwCtrlType )
-    {
-      // Handle the CTRL-C signal.
-      case CTRL_C_EVENT:
-      // CTRL-CLOSE: confirm that the user wants to exit.
-      case CTRL_CLOSE_EVENT:
-      // Pass other signals to the next handler.
-      case CTRL_BREAK_EVENT:
-      case CTRL_LOGOFF_EVENT:
-      case CTRL_SHUTDOWN_EVENT:
-          TerminationHandler(SIGINT);
-          return TRUE;
-
-      default:
-        return FALSE;
-    }
- }
-
-#endif
-
-void TerminationHandler(int signum)
-{
-    static volatile sig_atomic_t fatal_error_in_progress = 0;
-
-    if (fatal_error_in_progress) {
-        raise (signum);
-    }
-    fatal_error_in_progress = 1;
-
-    signal (signum, SIG_DFL);
-    printf("\n Received signal %d.\n", signum);
-    fflush(stdout);
-    raise(signum);
-}
-
-
-void initHandler()
-{
-#ifdef __WIN__
-#define SIGNAL_NUM 3
-    int signalList[SIGNAL_NUM] = {SIGINT, SIGTERM, SIGABRT};
-    SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, true );
-#else
-#define SIGNAL_NUM 4
-    int signalList[SIGNAL_NUM] = {SIGINT, SIGTERM, SIGPIPE, SIGHUP};
-#endif
-
-    //set the signal handler
-    for (int i=0; i < SIGNAL_NUM ; i++) {
-        void (*prevFunc)(int);
-        prevFunc = signal(signalList[i],TerminationHandler);
-        if (prevFunc == SIG_ERR) {
-            printf("-E- failed to set signal Handler.");
-            exit(MLX_CFG_ERROR);
-        }
-    }
-}
-
-//End of signal handler section.
-
-
-#define MAX_ERR_STR_LEN 1024
-#define MAX_BUF_SIZE 1024
-#define PRE_ERR_MSG "-E-"
-#define MLNX_RAW_TLV_FILE_SIG "MLNX_RAW_TLV_FILE"
-
-#ifdef MST_UL
-    #define NO_DEV_ERR "No devices found."
-#else
-    #define NO_DEV_ERR "No devices found, mst might be stopped. You may need to run 'mst start' to load MST modules. "
-#endif
-
-// TODO: adrianc: change to map<mlxCfgParam, string>
-std::string MlxCfgParams::param2str[Mcp_Last]= {"SRIOV_EN", "NUM_OF_VFS", "FPP_EN",
-                                                "PF_LOG_BAR_SIZE", "VF_LOG_BAR_SIZE",
-                                                "NUM_PF_MSIX", "NUM_VF_MSIX",
-                                                "WOL_MAGIC_EN_P1", "WOL_MAGIC_EN_P2",
-                                                "WOL_MAGIC_EN",
-                                                "LINK_TYPE_P1", "LINK_TYPE_P2",
-                                                "LOG_BAR_SIZE",
-                                                "INT_LOG_MAX_PAYLOAD_SIZE",
-                                                "BOOT_PKEY_P1", "BOOT_PKEY_P2",
-                                                "LOG_DCR_HASH_TABLE_SIZE", "DCR_LIFO_SIZE",
-                                                 "ROCE_NEXT_PROTOCOL",
-                                                 "ROCE_CC_ALGORITHM_P1", "ROCE_CC_PRIO_MASK_P1", "ROCE_CC_ALGORITHM_P2", "ROCE_CC_PRIO_MASK_P2",
-                                                 "CLAMP_TGT_RATE_P1", "CLAMP_TGT_RATE_AFTER_TIME_INC_P1", "RPG_TIME_RESET_P1",
-                                                 "RPG_BYTE_RESET_P1", "RPG_THRESHOLD_P1", "RPG_MAX_RATE_P1", "RPG_AI_RATE_P1",
-                                                 "RPG_HAI_RATE_P1", "RPG_GD_P1", "RPG_MIN_DEC_FAC_P1", "RPG_MIN_RATE_P1",
-                                                 "RATE_TO_SET_ON_FIRST_CNP_P1", "DCE_TCP_G_P1", "DCE_TCP_RTT_P1",
-                                                 "RATE_REDUCE_MONITOR_PERIOD_P1", "INITIAL_ALPHA_VALUE_P1", "MIN_TIME_BETWEEN_CNPS_P1",
-                                                 "CNP_DSCP_P1", "CNP_802P_PRIO_P1",
-                                                 "CLAMP_TGT_RATE_P2", "CLAMP_TGT_RATE_AFTER_TIME_INC_P2", "RPG_TIME_RESET_P2",
-                                                 "RPG_BYTE_RESET_P2", "RPG_THRESHOLD_P2", "RPG_MAX_RATE_P2", "RPG_AI_RATE_P2",
-                                                 "RPG_HAI_RATE_P2", "RPG_GD_P2", "RPG_MIN_DEC_FAC_P2", "RPG_MIN_RATE_P2",
-                                                 "RATE_TO_SET_ON_FIRST_CNP_P2", "DCE_TCP_G_P2", "DCE_TCP_RTT_P2", "RATE_REDUCE_MONITOR_PERIOD_P2",
-                                                 "INITIAL_ALPHA_VALUE_P2", "MIN_TIME_BETWEEN_CNPS_P2", "CNP_DSCP_P2", "CNP_802P_PRIO_P2",
-                                                 "BOOT_OPTION_ROM_EN_P1", "BOOT_VLAN_EN_P1", "BOOT_RETRY_CNT_P1", "LEGACY_BOOT_PROTOCOL_P1", "BOOT_VLAN_P1",
-                                                 "BOOT_OPTION_ROM_EN_P2", "BOOT_VLAN_EN_P2", "BOOT_RETRY_CNT_P2", "LEGACY_BOOT_PROTOCOL_P2", "BOOT_VLAN_P2",
-                                                 "PORT_OWNER", "ALLOW_RD_COUNTERS", "IP_VER", "IP_VER_P1", "IP_VER_P2",
-                                                 "NUM_OF_TC_P1", "NUM_OF_VL_P1",
-                                                 "NUM_OF_TC_P2", "NUM_OF_VL_P2",
-                                                 "LLDP_NB_RX_MODE_P1", "LLDP_NB_TX_MODE_P1", "LLDP_NB_DCBX_P1",
-                                                 "LLDP_NB_RX_MODE_P2", "LLDP_NB_TX_MODE_P2", "LLDP_NB_DCBX_P2",
-                                                 "DCBX_IEEE_P1", "DCBX_CEE_P1", "DCBX_WILLING_P1",
-                                                 "DCBX_IEEE_P2", "DCBX_CEE_P2", "DCBX_WILLING_P2"
-                                                  };
-
-u_int32_t MlxCfgParams::getParamVal(mlxCfgParam p)
-{
-    for (std::vector<cfgInfo>::iterator it = params.begin() ; it != params.end() ; it++) {
-        if (it->first == p) {
-            return it->second;
-        }
-    }
-    return MLXCFG_UNKNOWN;
-}
-
-mlxCfgStatus MlxCfg::err(bool report, const char* fmt, ...)
-{
-     va_list  args;
-     va_start(args, fmt);
-     char errBuff[MAX_ERR_STR_LEN] = {0};
-
-     if (vsnprintf(errBuff, MAX_ERR_STR_LEN, fmt, args) >= MAX_ERR_STR_LEN) {
-         strcpy(&errBuff[MAX_ERR_STR_LEN - 5], "...");
-    }
-     _errStr = errBuff;
-     if (report) {
-         fprintf(stdout,PRE_ERR_MSG" %s\n", _errStr.c_str());
-     }
-     va_end(args);
-     return MLX_CFG_ERROR;
-}
-
-void MlxCfg::printErr()
-{
-    fprintf(stdout,PRE_ERR_MSG" %s\n", _errStr.c_str());
-}
-
-
-bool MlxCfg::askUser(const char* question)
-{
-if (question == NULL) {
-     printf("\n Do you want to continue ? (y/n) [n] : ");
- } else {
-     printf("\n %s ? (y/n) [n] : ", question);
- }
-
- if (_mlxParams.yes)
-     printf("y\n");
- else {
-     fflush(stdout);
-     std::string answer;
-     std::getline(std::cin, answer);
-
-     if (  strcasecmp(answer.c_str(), "y") &&
-           strcasecmp(answer.c_str(), "yes"))  {
-
-         err(false, "Aborted by user.");
-         return false;
-     }
- }
- return true;
-}
-
-mlxCfgStatus MlxCfg::queryDevsCfg()
-{
-    bool shouldFail= false;
-    if (_mlxParams.device.length()) {
-        if (queryDevCfg(_mlxParams.device.c_str())) {
-            printErr();
-            shouldFail= true;
-        }
-    } else {
-        int  numOfDev;
-        dev_info* dev = mdevices_info(MDEVS_TAVOR_CR, &numOfDev);
-
-        if (dev == NULL) {
-            return err(true, "Failed to get devices.");
-        }
-        if (numOfDev == 0) {
-            mdevices_info_destroy(dev, numOfDev);
-            return err(true, NO_DEV_ERR);
-        }
-        //printf("-D- num of dev: %d , 1st dev : %s\n", numOfDev, buf);
-        dev_info  *devPtr = dev;
-        char pcibuf[32]= {0};
-
-        for(int i=0 ; i < numOfDev ; i++) {
-#ifdef __FREEBSD__
-            const char* device_name_ptrn = "pci%d:%d:%d:%d";
-#else
-            const char* device_name_ptrn = "%04x:%02x:%02x.%x";
-#endif
-            snprintf(pcibuf,32, device_name_ptrn, devPtr->pci.domain, devPtr->pci.bus,\
-                    devPtr->pci.dev, devPtr->pci.func);
-            if (queryDevCfg(devPtr->pci.conf_dev, pcibuf, i+1)){
-                printErr();
-                shouldFail = true;
-            }
-            devPtr++;
-        }
-        mdevices_info_destroy(dev, numOfDev);
-    }
-    return shouldFail? MLX_CFG_ERROR : MLX_CFG_OK;
-}
-
-static void printParam(string param, u_int32_t val)
-{
-    if (val == MLXCFG_UNKNOWN) {
-            printf("%-16s", "N/A");
-        } else {
-            if(param == "") {
-                printf("%-16d", val);
-            } else {
-                stringstream convert;
-                convert << val;
-                param += "(" + convert.str() + ")";
-                printf("%-16s", param.c_str());
-            }
-        }
-    return;
-}
-
-static void printOneParam(const char* name, u_int32_t currVal, string currStrVal, bool showDefault=false, u_int32_t defaultVal=MLXCFG_UNKNOWN,
-        string defaultStrVal="MLXCFG_UNKNOWN", bool printNewCfg=false, u_int32_t newVal=MLXCFG_UNKNOWN, string newStrVal= "MLXCFG_UNKNOWN")
-{
-    printf("         %-36s", name);
-    if (showDefault) {
-        printParam(defaultStrVal, defaultVal);
-    }
-    printParam(currStrVal, currVal);
-    if (showDefault &&
-            currVal != defaultVal) {
-        printf("*");
-    }
-    if (printNewCfg) {
-        if (newVal == MLXCFG_UNKNOWN) {
-            printParam(currStrVal, currVal);
-        } else {
-            if(newStrVal == "") {
-                printf("%-16d", newVal);
-            } else {
-                stringstream convert;
-                convert << newVal;
-                newStrVal += "(" + convert.str() + ")";
-                printf("%-16s", newStrVal.c_str());
-            }
-        }
-    }
-    printf("\n");
-    return;
-
-}
-const char* MlxCfg::getDeviceName(const char* dev)
-{
-    mfile* mf;
-    dm_dev_id_t dev_type;
-    u_int32_t dev_id;
-    u_int32_t chip_rev;
-
-    mf = mopen(dev);
-    if (!mf) {
-        return "";
-    }
-    if (dm_get_device_id(mf, &dev_type, &dev_id, &chip_rev)) {
-        mclose(mf);
-        return "";
-    }
-    mclose(mf);
-    return dm_dev_type2str(dev_type);
-}
-
-mlxCfgStatus MlxCfg::queryDevCfg(const char* dev,const char* pci, int devIndex, bool printNewCfg)
-{
-    MlxCfgOps ops;
-    bool rc;
-    bool failedToGetCfg = false;
-    bool nothingSupported = true;
-    bool isParamsDiffer = false;
-    (void) pci;
-    // print opening
-    printf("\nDevice #%d:\n", devIndex);
-    printf("----------\n\n");
-    printf("%-16s%-16s\n", "Device type:", getDeviceName(dev));
-    printf("%-16s%-16s\n", "PCI device:", dev);
-    // TODO : get this info
-    //printf("%-16s%-16s\n", "Part Number:", "123456");
-    //printf("%-16s%-16s\n", "Psid:", "78901111");
-    printf("\n");
-
-    rc = ops.open(dev);
-    if (rc) {
-        err(false, "Failed to query device: %s. %s", dev, ops.err());
-        return MLX_CFG_ERROR_EXIT;
-    }
-
-    //print configuration Header
-    if (_mlxParams.showDefault) {
-        printf("%-16s%36s%16s","Configurations:","Default","Current");
-    } else {
-        printf("%-16s%36s","Configurations:","Current");
-    }
-    if (printNewCfg) {
-        printf("         %s", "New");
-    }
-    printf("\n");
-
-    bool defaultSupported = false;
-    if (_mlxParams.showDefault){
-        if(ops.isDefaultSupported(defaultSupported)) {
-                return err(false, "Error when checked if Firmware supports querying default configurations or not.");
-        } else {
-            if(!defaultSupported){
-                return err(false, "Firmware does not support querying default configurations");
-            }
-        }
-    }
-
-    for (int p = (int)Mcp_Sriov_En ; p < (int)Mcp_Last; ++p) {
-        if (printNewCfg) {
-            // display only cfgs we wanted to set (can be done more efficient)
-            std::vector<cfgInfo>::iterator it;
-            for (it = _mlxParams.params.begin(); it != _mlxParams.params.end(); it++) {
-                if (it->first == (mlxCfgParam)p) {
-                    break;
-                }
-            }
-            if (it == _mlxParams.params.end()) {
-                continue;
-            }
-        }
-        if (!ops.supportsParam((mlxCfgParam)p)) {
-            if (_mlxParams.cmd == Mc_Set) {
-                err(false, "Device doesn't support %s configuration.", MlxCfgParams::param2str[p].c_str());
-                return MLX_CFG_ERROR_EXIT;
-            }
-            continue;
-        }
-        nothingSupported= false;
-        u_int32_t defaultParam = MLXCFG_UNKNOWN;
-        u_int32_t currentParam = MLXCFG_UNKNOWN ;
-        u_int32_t newParam = _mlxParams.getParamVal((mlxCfgParam)p);
-        rc = ops.getCfg((mlxCfgParam)p, currentParam);
-        if (rc) {
-            failedToGetCfg = true;
-            printf("         %-16s%-16s %s\n", MlxCfgParams::param2str[p].c_str(), "failed to get current configuration.",\
-                    ops.err());
-            err(false, "Failed to query device current configuration");
-        } else {
-            if (_mlxParams.showDefault) {
-                rc = ops.getCfg((mlxCfgParam)p, defaultParam, true);
-                if (rc) {
-                    failedToGetCfg = true;
-                    err(false, "Failed to query device default configuration");
-                } else {
-                    isParamsDiffer |= (defaultParam != currentParam);
-                }
-            }
-            MlxCfgParamParser paramParser;
-            if(_allInfo.getParamParser((mlxCfgParam)p, paramParser) == MLX_CFG_OK){
-                string defaultParamStr = paramParser.getStrVal(defaultParam);
-                string currentParamStr = paramParser.getStrVal(currentParam);
-                string newParamStr = paramParser.getStrVal(newParam);
-                printOneParam(MlxCfgParams::param2str[p].c_str(), currentParam, currentParamStr, _mlxParams.showDefault,
-                        defaultParam, defaultParamStr, printNewCfg, newParam, newParamStr);
-            } else {
-                failedToGetCfg = true;
-                err(false, "Internal Error");
-            }
-        }
-    }
-    if(isParamsDiffer) {
-        printf("The '*' shows parameters with current value different from default value.\n");
-    }
-    if (nothingSupported) {
-        err(false, "Device doesn't support any configuration changes.");
-        return MLX_CFG_ERROR_EXIT;
-    }
-    return failedToGetCfg ? MLX_CFG_ERROR : MLX_CFG_OK;
-}
-
-mlxCfgStatus MlxCfg::setDevCfg()
-{
-    if (queryDevCfg(_mlxParams.device.c_str(), NULL, 1, true) == MLX_CFG_ERROR_EXIT){
-        printErr();
-        return MLX_CFG_ERROR;
-    }
-    // even if there is problem fetching the current cfg we will attempt to write the new info
-    // if the user agrees
-
-    if (_mlxParams.force) {
-        printf("\n-W- Force flag specified, the validity of the Parameters will not be checked !\n");
-        printf("-W- Incorrect configuration might yield unexpected results. running in this mode is not recommended.");
-    }
-    // ask user
-    if(!askUser("Apply new Configuration?")) {
-        printErr();
-        return MLX_CFG_ABORTED;
-    }
-
-    // write cfgs
-    MlxCfgOps ops;
-    int rc;
-    mlxCfgParam p;
-
-    rc = ops.open(_mlxParams.device.c_str());
-    if (rc) {
-        return err(false, "Failed to set configuration on device: %s. %s", _mlxParams.device.c_str(), \
-               ops.err());
-    }
-    // ignore some of the checks if needed
-    ops.setIgnoreSoftLimits(_mlxParams.force);
-
-    printf("Applying... ");
-    // set Configuration
-    rc = ops.setCfg(_mlxParams.params, p);
-    if (rc) {
-        printf("Failed!\n");
-        if (rc == MCE_UNSUPPORTED_CFG) {
-            err(true, "Unsupported Configuration: %s", MlxCfgParams::param2str[p].c_str());
-        } else {
-            err(true, "Failed to set configuration: %s", ops.err());
-        }
-        return MLX_CFG_ERROR;
-    }
-
-    printf("Done!\n");
-    const char* resetStr = ops.loadConfigurationGetStr();
-    printf("-I- %s\n", resetStr);
-    return MLX_CFG_OK;
-
-}
-
-mlxCfgStatus MlxCfg::resetDevsCfg()
-{
-    // check if a single device was specified and apply reset for this device only
-    if (_mlxParams.device.length()) {
-        char buff[256] = {0};
-        snprintf(buff,256,"Reset configuration for device %s? ", _mlxParams.device.c_str());
-        if (!askUser(buff)){
-            printErr();
-            return MLX_CFG_ABORTED;
-        }
-
-        printf("Applying... ");
-        if (resetDevCfg(_mlxParams.device.c_str())) {
-            printf("Failed!\n");
-            printErr();
-            return MLX_CFG_ERROR;
-        }
-    } else {
-        // reset all devices.
-        int  numOfDev;
-        dev_info* dev = mdevices_info(MDEVS_TAVOR_CR, &numOfDev);
-
-        if (dev == NULL) {
-            return err(true, "Failed to get devices.");
-        }
-        if (numOfDev == 0) {
-            mdevices_info_destroy(dev, numOfDev);
-            return err(true, NO_DEV_ERR);
-        }
-        if (!askUser("Reset configuration for all devices? ")){
-            printErr();
-            mdevices_info_destroy(dev, numOfDev);
-            return MLX_CFG_ABORTED;
-        }
-        printf("Applying... ");
-
-        dev_info *devPtr = dev;
-        bool shouldFail= false;
-
-        for(int i=0 ; i < numOfDev ; i++) {
-            if (resetDevCfg(devPtr->pci.conf_dev)){
-                shouldFail = true;
-            }
-            devPtr++;
-
-        }
-        mdevices_info_destroy(dev, numOfDev);
-        if (shouldFail) {
-            printf("Failed!\n");
-            return MLX_CFG_ERROR;
-        }
-
-    }
-    // done successfully
-    printf("Done!\n");
-    printf("-I- Please reboot machine to load new configurations.\n");
-    return MLX_CFG_OK;
-}
-
-mlxCfgStatus MlxCfg::clrDevSem()
-{
-    MlxCfgOps ops;
-    bool rc;
-
-    printf("-W- Forcefully clearing device Semaphore...");
-
-    rc = ops.open(_mlxParams.device.c_str(), true);
-    if (rc) {
-        printf(" Failed!\n");
-        return err(true, "Failed to open device: %s. %s", _mlxParams.device.c_str(), ops.err());
-    }
-    printf(" Done!\n");
-    return MLX_CFG_OK;
-}
-
-mlxCfgStatus MlxCfg::setDevRawCfg()
-{
-    // open device
-    MlxCfgOps ops;
-    bool rc;
-    rc = ops.open(_mlxParams.device.c_str());
-    if (rc) {
-        return err(true, "Failed to set configuration on device: %s. %s", _mlxParams.device.c_str(), \
-               ops.err());
-    }
-    // open file
-    std::ifstream ifs(_mlxParams.rawTlvFile.c_str());
-    if (ifs.fail()) {
-        return err(true, "Failed to open file: %s", _mlxParams.rawTlvFile.c_str());
-    }
-    std::vector<std::vector<u_int32_t> > rawTlvsAsDw;
-    rawTlvsAsDw.resize(0);
-    // Check file Sig
-    std::string startLine;
-    std::getline(ifs, startLine);
-    if (startLine != MLNX_RAW_TLV_FILE_SIG) {
-        return err(true, "Invalid raw TLV file header.");
-    }
-    // parse the rest of the Lines
-    int lineIdx = 1;
-    for (std::string line; std::getline(ifs, line); lineIdx++) {
-        std::vector<u_int32_t> rawTlvVec;
-        if (line[0] == '%') { // comment - skip
-            continue;
-        }
-        // convert line to DW
-        if (tlvLine2DwVec(line, rawTlvVec)) {
-            return err(true, "Failed to parse Raw TLV at line %d: %s", lineIdx, _errStr.c_str());
-        }
-        rawTlvsAsDw.push_back(rawTlvVec);
-    }
-    // dump raw TLVs from the file
-    std::string dumpStr;
-    int tlvIdx = 1;
-    for (std::vector<std::vector<u_int32_t> >::iterator it = rawTlvsAsDw.begin(); it != rawTlvsAsDw.end(); it++, tlvIdx++) {
-        if (ops.dumpRawCfg(*it, dumpStr)) {
-            return err(true, "Error at Raw TLV #%d: %s", tlvIdx, ops.err());
-        }
-        printf("Raw TLV #%d Info:\n%s\n", tlvIdx, dumpStr.c_str());
-    }
-    // ask user
-    if(!askUser("Operation intended for advanced users.\n Are you sure you want to apply raw TLV file?")) {
-        printErr();
-        return MLX_CFG_ABORTED;
-    }
-    printf("Applying... ");
-    // set each of the raw TLVs
-    tlvIdx = 1;
-    for (std::vector<std::vector<u_int32_t> >::iterator it = rawTlvsAsDw.begin(); it != rawTlvsAsDw.end(); it++, tlvIdx++) {
-        if (ops.setRawCfg(*it)) {
-            printf("Failed!\n");
-            return err(true, "Failed to set Raw TLV #%d: %s", tlvIdx, ops.err());
-        }
-    }
-    // done successfully
-    printf("Done!\n");
-    printf("-I- Please reboot machine to load new configurations.\n");
-    return MLX_CFG_OK;
-}
-
-mlxCfgStatus MlxCfg::backupCfg()
-{
-    MlxCfgOps ops;
-    bool rc;
-    vector<pair<u_int32_t, vector<u_int8_t> > > cfgsMap;
-    FILE * file;
-
-    rc = ops.open(_mlxParams.device.c_str(), true);
-    if (rc) {
-        printf(" Failed!\n");
-        return err(true, "Failed to open device: %s. %s", _mlxParams.device.c_str(), ops.err());
-    }
-
-    printf("Collecting...\n");
-    if (ops.backupCfgs(cfgsMap)) {
-        printf(" Failed!\n");
-        return err(true, "Failed to backup the configurations: %s", ops.err());
-    }
-
-    // open file
-    printf("Saving output...\n");
-    file = fopen(_mlxParams.rawTlvFile.c_str(), "w");
-    if (file == NULL) {
-        return err(true, "Failed to open file: %s", _mlxParams.rawTlvFile.c_str());
-    }
-
-    fprintf(file, "%s\n", MLNX_RAW_TLV_FILE_SIG);
-
-    for(std::vector<pair<u_int32_t, vector<u_int8_t> > >::iterator it = cfgsMap.begin();
-            it != cfgsMap.end(); it++) {
-        fprintf(file, "%% TLV Type: 0x%08x\n", it->first);
-        vector<u_int8_t> v = it->second;
-        for(size_t i = 0; i < v.size() / 4; i++) {
-            fprintf(file, "0x%08x ", __cpu_to_be32(((u_int32_t*)v.data())[i]));
-        }
-        fprintf(file, "\n");
-    }
-
-    fclose(file);
-
-    printf("Done!\n");
-    return MLX_CFG_OK;
-}
-
-mlxCfgStatus MlxCfg::tlvLine2DwVec(const std::string& tlvStringLine, std::vector<u_int32_t>& tlvVec) {
-    tlvVec.resize(0);
-    std::string dwStr;
-    u_int32_t dw;
-    char* p = NULL;
-    std::istringstream isstm(tlvStringLine);
-    while (isstm >> dwStr) {
-        dw = strtoul(dwStr.c_str(), &p, 0);
-        if (*p) {
-            return err(false, "Input is not an unsigned number: %s", dwStr.c_str());
-        }
-        tlvVec.push_back(dw);
-    }
-    return MLX_CFG_OK;
-}
-
-mlxCfgStatus MlxCfg::resetDevCfg(const char* dev)
-{
-    MlxCfgOps ops;
-    bool rc;
-
-    rc = ops.open(dev);
-    if (rc) {
-        return err(false, "Failed to open device: %s. %s", dev, ops.err());
-    }
-
-    // reset cfg
-    rc = ops.invalidateCfgs();
-    if (rc) {
-        return err(false, "failed to reset configurations. %s", ops.err());
-    }
-    ops.loadConfigurationGetStr();
-    return MLX_CFG_OK;
-}
-
-
-mlxCfgStatus MlxCfg::execute(int argc, char* argv[])
-{
-    mlxCfgStatus rc = parseArgs(argc, argv);
-    if (rc) {
-        if (rc == MLX_CFG_OK_EXIT) {
-            rc = MLX_CFG_OK;
-        } else {
-            printUsage();
-        }
-        return rc;
-    }
-    //return test(_mlxParams.device.c_str());
-    mlxCfgStatus ret;
-    switch (_mlxParams.cmd) {
-
-    case Mc_Query:
-        ret = queryDevsCfg();
-        break;
-    case Mc_Set:
-        ret = setDevCfg();
-        break;
-    case Mc_Reset:
-        ret = resetDevsCfg();
-        break;
-    case Mc_Clr_Sem:
-        ret = clrDevSem();
-        break;
-    case Mc_Set_Raw:
-        ret = setDevRawCfg();
-        break;
-    case Mc_Backup:
-        ret = backupCfg();
-        break;
-    default:
-        // should not reach here.
-        return err(true, "invalid command.");
-    }
-    return ret;
-}
-
-int main(int argc, char* argv[])
-{
-    try
-    {
-    initHandler();
-    MlxCfg mc;
-    return mc.execute(argc, argv);
-    }
-    catch (std::exception& e)
-    {
-        printf("-E- %s\n", e.what());
-        return MLX_CFG_ERROR;
-    }
-}
-
-
diff --git a/mlxconfig/mlxcfg_ui.h b/mlxconfig/mlxcfg_ui.h
deleted file mode 100644 (file)
index 04a9fd8..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef MLXCFG_UI_H_
-#define MLXCFG_UI_H_
-
-#include <string>
-
-#include <compatibility.h>
-#include <mtcr.h>
-
-#include "mlxcfg_lib.h"
-
-typedef enum {
-    Mc_Set,
-    Mc_Query,
-    Mc_Reset,
-    Mc_Clr_Sem,
-    Mc_Set_Raw,
-    Mc_Backup,
-    Mc_UnknownCmd
-} mlxCfgCmd;
-
-typedef enum {
-    MLX_CFG_OK,
-    MLX_CFG_OK_EXIT,
-    MLX_CFG_ABORTED,
-    MLX_CFG_ERROR,
-    MLX_CFG_ERROR_EXIT
-} mlxCfgStatus;
-
-using namespace std;
-
-class MlxCfgParamParser
-{
-public:
-    MlxCfgParamParser(): _param(Mcp_Last), _name(), _desc(){}
-    MlxCfgParamParser(mlxCfgParam param, string name, string desc, map<string, u_int32_t> strMap)
-        : _param(param), _name(name), _desc(desc), _strMap(strMap){}
-    MlxCfgParamParser(mlxCfgParam param, string name, string desc, string allowedValues) : _param(param),
-            _name(name), _desc(desc), _allowedValues(allowedValues){}
-
-    ~MlxCfgParamParser() {}
-
-    mlxCfgStatus parseUserInput(string input, u_int32_t& val);
-
-    void printShortDesc();
-    void printLongDesc();
-
-    string getName() {return _name;}
-    mlxCfgParam getParam() {return _param;}
-
-    string getStrVal(u_int32_t val);
-
-private:
-    mlxCfgParam _param;
-    string _name; //param name for example: LINK_TYPE_P1
-    string _desc; //for example: 4th generation devices only
-    string _allowedValues;
-    map<string, u_int32_t> _strMap; //map strings to values, for example: {{'InfiniBand',1},{'Ethernet',2},{'VPI',3}}
-
-
-    void printShortDescAux();
-    string getShortDescStrAux();
-    void splitAndPrintDesc(string desc);
-    bool compareVal(string a, string b);
-
-};
-
-class MlxCfgInfo
-{
-public:
-    MlxCfgInfo(string name, string title, map<mlxCfgParam, MlxCfgParamParser> params) :
-        _name(name), _title(title), _params(params){};
-
-    ~MlxCfgInfo() {}
-
-    void printShortDesc();
-    void printLongDesc();
-
-    mlxCfgStatus getParamParser(mlxCfgParam, MlxCfgParamParser&);
-    mlxCfgStatus getParamParser(string, MlxCfgParamParser&);
-    string getName() { return _name; }
-
-private:
-    string _name; //for example: VPI Settings
-    string _title; //for example: Control network link type
-    map<mlxCfgParam, MlxCfgParamParser> _params; //for example: {{LINK_TYPE_P1,*},{LINK_TYPE_P2,*}}
-    vector<MlxCfgParamParser> getParamsMapValues();
-};
-
-class MlxCfgAllInfo
-{
-public:
-    MlxCfgAllInfo();
-
-    ~MlxCfgAllInfo() {}
-
-    void printShortDesc();
-    void printLongDesc();
-
-    mlxCfgStatus parseParam(string tag, string strval, u_int32_t& val, mlxCfgParam& param);
-    mlxCfgStatus getParamParser(mlxCfgParam p, MlxCfgParamParser& paramParser);
-
-    vector<MlxCfgInfo> _allInfo;
-
-private:
-    MlxCfgInfo createPciSettings();
-    MlxCfgInfo createIBDynamicallyConnect();
-    MlxCfgInfo createInfinibandBootSettings();
-    MlxCfgInfo createInternalSettings();
-    MlxCfgInfo createPrebootBootSettings();
-    MlxCfgInfo createRoCECongestionControlECN();
-    MlxCfgInfo createRoCEV1_5NextProtocol();
-    MlxCfgInfo createRoCECongestionControlParameters();
-    MlxCfgInfo createVPISettings();
-    MlxCfgInfo createWakeOnLAN();
-    MlxCfgInfo createExternalPort();
-    MlxCfgInfo createBootSettingsExt();
-    MlxCfgInfo createQoS();
-    MlxCfgInfo createLLDPClientSettings();
-    MlxCfgInfo createLLDPNBDCBX();
-};
-
-class MlxCfgParams
-{
-public:
-    MlxCfgParams() : device(), rawTlvFile(), cmd(Mc_UnknownCmd), yes(false), force(false), showDefault(false) {}
-    ~MlxCfgParams() {}
-
-    std::string device;
-    std::string rawTlvFile;
-    mlxCfgCmd cmd;
-    bool yes;
-    std::vector<cfgInfo> params;
-    static std::string param2str[Mcp_Last];
-    bool force;// ignore parameter checks
-    bool showDefault;
-
-    u_int32_t getParamVal(mlxCfgParam p);
-};
-
-
-class MlxCfg
-{
-public:
-    MlxCfg() : _mlxParams(), _errStr(), _allInfo(){}
-    ~MlxCfg() {};
-    mlxCfgStatus execute(int argc, char* argv[]);
-private:
-
-    // User interface and parsing methods
-    void printHelp();
-    void printVersion();
-    void printUsage();
-    mlxCfgStatus parseArgs(int argc, char* argv[]);
-    //Helper functions for parse args
-    mlxCfgStatus processArg(std::string tag, u_int32_t val);
-    mlxCfgStatus extractCfgArgs(int argc, char* argv[]);
-    bool tagExsists(mlxCfgParam tag);
-    const char* getDeviceName(const char* dev);
-
-    // Query cmd
-    mlxCfgStatus queryDevsCfg();
-    mlxCfgStatus queryDevCfg(const char* dev, const char* pci=(const char*)NULL, int devIndex=1, bool printNewCfg=false);
-
-    // Set cmd
-    mlxCfgStatus setDevCfg();
-    // reset Cmd
-    mlxCfgStatus resetDevsCfg();
-    mlxCfgStatus resetDevCfg(const char* dev);
-    // Set Raw TLV file
-    mlxCfgStatus setDevRawCfg();
-    mlxCfgStatus backupCfg();
-    mlxCfgStatus tlvLine2DwVec(const std::string& tlvStringLine, std::vector<u_int32_t>& tlvVec);
-
-    mlxCfgStatus clrDevSem();
-
-    bool askUser(const char* question);
-    mlxCfgStatus err(bool report, const char* errMsg, ...);
-    void printErr();
-    // data members
-    MlxCfgParams _mlxParams;
-    std::string _errStr;
-    MlxCfgAllInfo _allInfo;
-
-};
-
-
-
-
-#endif /* MLXCFG_UI_H_ */
diff --git a/mlxfwops/Makefile.am b/mlxfwops/Makefile.am
deleted file mode 100755 (executable)
index a0f9ef0..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-
-SUBDIRS = lib 
-
diff --git a/mlxfwops/lib/Makefile.am b/mlxfwops/lib/Makefile.am
deleted file mode 100755 (executable)
index a3e5bac..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-MTCR_DIR = $(top_srcdir)/mtcr_ul
-MTCR_INC_DIR = $(top_srcdir)/include/mtcr_ul
-MFLASH_DIR = $(top_srcdir)/mflash
-MINIXZ_DIR = $(top_srcdir)/ext_libs/minixz
-COMMON_DIR = $(top_srcdir)/common
-LAYOUTS_DIR = $(top_srcdir)/tools_layouts
-UTILS_LIB = $(top_srcdir)/mft_utils
-UEFI_COMMON_DIR = $(top_srcdir)/mlxfwops/uefi_c
-
-AM_CPPFLAGS = -I$(srcdir) -I$(MTCR_INC_DIR) -I$(MFLASH_DIR) -I$(top_srcdir)/ext_libs/json -I$(MINIXZ_DIR)\
-           -I$(COMMON_DIR) -I$(LAYOUTS_DIR) -I$(top_srcdir)/common -I$(UTILS_LIB) -I$(UEFI_COMMON_DIR)
-
-MLXFWOPS_VERSION = 1
-
-AM_CXXFLAGS = -Wall -W -g -MP -MD -pipe -DNO_MFA_SUPPORT
-
-if ENABLE_OPENSSL
-else
-AM_CXXFLAGS += -DNO_OPEN_SSL
-endif
-
-noinst_LIBRARIES = libmlxfwops.a
-
-libmlxfwops_a_SOURCES = flint_base.cpp \
-               flint_io.cpp \
-               fw_ops.cpp \
-               fs2_ops.cpp fs2_ops.h \
-               fs3_ops.cpp fs3_ops.h \
-               mlxfwops.cpp mlxfwops.h \
-               mlxfwops_com.h mlxfwops.h fw_ops.h flint_base.h flint_io.h\
-               aux_tlv_ops.h aux_tlv_ops.cpp
-
diff --git a/mlxfwops/lib/aux_tlv_ops.cpp b/mlxfwops/lib/aux_tlv_ops.cpp
deleted file mode 100644 (file)
index a580c78..0000000
+++ /dev/null
@@ -1,545 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <reg_access/reg_access.h>
-
-#include "flint_base.h"
-#include "aux_tlv_ops.h"
-
-/*
- * ImageTlvOps class implementation
- */
-
-
-#define AUX_DATA_SIG_SIZE 0x10
-#define SIG3 0x080d1522
-#define SIG2 0x01020305
-#define SIG1 0x6548bc86
-#define SIG0 0x4155583a
-
-bool ImageTlvOps::test()
-{
-    printf("-I- ImageTlvOps Class test");
-    u_int32_t data0[] = {0x12345678, 0xabcdef01, 0xab0dab10, 0xcafaba1a, 0x0cafee1e1, 0x12345678, 0x23456789, 0x3456789a};
-    u_int32_t data1[] = {0x12345678, 0xabcdef01, 0xab0dab1, 0xcafaba1a, 0x0cafee1e1, 0x12345678, 0x23456789, 0x3456789a};
-    u_int8_t data2[] =  {1, 2, 3, 4, 5, 6 ,7 ,8, 9, 0xa};
-    // run init
-    if (!init(true)) {
-        printf("-E- failed on init");
-    }
-    // add all tlvs and update file
-    aux_tlv tlv;
-    memset(&tlv.hdr, 0x0, sizeof(tlv.hdr));
-    tlv.hdr.header_type = 0;
-    tlv.hdr.type = 0;
-    tlv.hdr.length = 0x10;
-    tlv.data.resize(tlv.hdr.length);
-    memcpy(&tlv.data[0], data0, tlv.hdr.length);
-    addTLV(tlv);
-
-    tlv.hdr.header_type = 1;
-    tlv.hdr.type = 0;
-    tlv.hdr.length = 0x3;
-    tlv.data.resize(tlv.hdr.length);
-    memcpy(&tlv.data[0], data1, tlv.hdr.length);
-    addTLV(tlv);
-
-    tlv.hdr.header_type = 0;
-    tlv.hdr.type = 3;
-    tlv.hdr.length = 0xa;
-    tlv.data.resize(tlv.hdr.length);
-    memcpy(&tlv.data[0], data2, tlv.hdr.length);
-    addTLV(tlv);
-
-    if (!updateFile()) {
-        printf("-E- failed to update file\n");
-    }
-    removeTlv(3,0);
-    removeTlv(0,0);
-    removeTlv(0,1);
-
-    if (!updateFile()) {
-        printf("-E- failed to update file\n");
-    }
-    printf("-I- Done Successfully");
-
-    return true;
-}
-
-Tlv_Status_t ImageTlvOps::getFileSize(FILE* fd, long int& fileSize)
-{
-    // Get the file size:
-     if (fseek(fd, 0, SEEK_END) < 0) {
-         fclose(fd);
-         return (Tlv_Status_t)errmsgWCode(TS_FAILED_TO_OPEN_FILE, "Can not get file size for \"%s\"", _fname);
-     }
-     fileSize = ftell(fd);
-     if (fileSize < 0) {
-         fclose(fd);
-         return (Tlv_Status_t)errmsgWCode(TS_FAILED_TO_OPEN_FILE, "Can not get file size for \"%s\"", _fname);
-     }
-     rewind(fd);
-     return TS_OK;
-}
-
-Tlv_Status_t ImageTlvOps::init(u_int32_t startPos, bool force)
-{
-    if (!force && _initialized) {
-        return TS_OK;
-    }
-    long int fsize;
-    _tlvSectionFound = false;
-    _tlvSectionFilePos = 0;
-    _tlvVec.resize(0);
-
-    if (_fname) {
-        _rawFileBuff.resize(0);
-        FILE* fd = fopen(_fname, "rb");
-        if (!fd) {
-            return (Tlv_Status_t)errmsgWCode(TS_FAILED_TO_OPEN_FILE, "Failed to open file of reading");
-        }
-        // get file size
-        if (getFileSize(fd, fsize)) {
-            return TS_FAILED_TO_OPEN_FILE;
-        }
-        // read the file
-        long int readCnt;
-        _rawFileBuff.resize(fsize);
-        if ((readCnt = fread(&_rawFileBuff[0], 1, fsize, fd)) != fsize) {
-            fclose(fd);
-            if (readCnt < 0) {
-                return (Tlv_Status_t)errmsgWCode(TS_FAILED_TO_READ_FILE, "Read error on file \"%s\"",_fname);
-            } else {
-                return (Tlv_Status_t)errmsgWCode(TS_FAILED_TO_READ_FILE, "Read error on file \"%s\" - read only %ld bytes (from %ld)",
-                              _fname, readCnt, (unsigned long)fsize);
-            }
-        }
-        fclose(fd);
-    }
-    fsize = _rawFileBuff.size();
-    for (long int i = startPos; i < fsize; i += 4) {
-        std::vector<u_int8_t> possibleSig(_rawFileBuff.begin() + i , _rawFileBuff.begin() + i + 16);
-        TOCPUn(&possibleSig[0], 4);
-        if (checkSig(possibleSig)) {
-            _tlvSectionFound = true;
-            _tlvSectionFilePos = i;
-        }
-    }
-    if (_tlvSectionFound) {
-        // parse TLVs
-        return parseTlvs();
-    }
-    _initialized = true;
-    return TS_OK;
-
-}
-
-Tlv_Status_t ImageTlvOps::resetTlvSection()
-{
-    if (_tlvSectionFound) {
-        _tlvVec.resize(0);
-        return updateFile();
-    }
-    return TS_OK;
-}
-
-void ImageTlvOps::addTLV(aux_tlv& tlv)
-{
-    // remove it if its present then push back
-    removeTlv(tlv.hdr.type, tlv.hdr.header_type);
-    // calc tlv CRC
-    tlv.hdr.crc = calcTlvCrc(tlv);
-    _tlvVec.push_back(tlv);
-    return;
-}
-
-Tlv_Status_t ImageTlvOps::removeTlv(u_int16_t tlvType, u_int8_t headerType)
-{
-    for(std::vector<aux_tlv>::iterator it = _tlvVec.begin(); it != _tlvVec.end(); it++) {
-        if (it->hdr.header_type == headerType && it->hdr.type == tlvType) {
-            _tlvVec.erase(it);
-            return TS_OK;
-        }
-    }
-    return (Tlv_Status_t)errmsgWCode(TS_TLV_NOT_FOUND, "TLV(0x%x) with type(0x%x) not found", tlvType, headerType);
-}
-
-Tlv_Status_t ImageTlvOps::queryTlv(u_int16_t tlvType, u_int8_t headerType, aux_tlv& tlv)
-{
-    for(std::vector<aux_tlv>::iterator it = _tlvVec.begin(); it != _tlvVec.end(); it++) {
-        if (it->hdr.header_type == headerType && it->hdr.type == tlvType) {
-            tlv = *it;
-            return TS_OK;
-        }
-    }
-    return (Tlv_Status_t)errmsgWCode(TS_TLV_NOT_FOUND, "TLV(0x%x) with type(0x%x) not found", tlvType, headerType);
-}
-
-std::vector<aux_tlv> ImageTlvOps::queryTlvs()
-{
-    return _tlvVec;
-}
-
-bool ImageTlvOps::checkSig(std::vector<u_int8_t>& signature)
-{
-    u_int32_t * sigPtr = (u_int32_t*)&signature[0];
-    return  *(sigPtr + 3)  == SIG3 && \
-            *(sigPtr + 2) == SIG2 && \
-            *(sigPtr + 1) == SIG1 && \
-            *(sigPtr) == SIG0;
-}
-
-Tlv_Status_t ImageTlvOps::updateFile()
-{
-    std::vector<u_int32_t> signature(4, 0x0);
-    signature[3] = SIG3;
-    signature[2] = SIG2;
-    signature[1] = SIG1;
-    signature[0] = SIG0;
-
-    if (_readOnly) {
-        return (Tlv_Status_t)errmsgWCode(TS_READ_ONLY_MODE, "Image TLV object is read only.");
-    }
-    if (!_tlvSectionFound && _tlvVec.size() == 0) { // no tlv section and no tlvs
-        // nothing to do
-        return TS_OK;
-    } else if (_tlvSectionFound && _tlvVec.size() == 0) { // tlv section without tlvs
-        // remove signature from file
-        _rawFileBuff.resize(_tlvSectionFilePos);
-        _tlvSectionFilePos = 0;
-        _tlvSectionFound = false;
-    } else if (!_tlvSectionFound && _tlvVec.size() != 0) { // no tlv section with tlvs
-        // add signature and TLVs
-        TOCPUn(&signature[0], 4);
-        _tlvSectionFound = true;
-        _tlvSectionFilePos = _rawFileBuff.size();
-        for (unsigned int i =0; i < signature.size() << 2 ; i++) {
-            _rawFileBuff.push_back(*(((u_int8_t*)&signature[0]) + i));
-        }
-        pushTlvsToRawBuffer();
-    } else {
-        _rawFileBuff.resize(_tlvSectionFilePos + AUX_DATA_SIG_SIZE);
-        pushTlvsToRawBuffer();
-    }
-    return writeBufferAsFile();
-}
-
-Tlv_Status_t ImageTlvOps::writeBufferAsFile()
-{
-    if (_tlvVec.size()) {
-        // push end marker
-        std::vector<u_int8_t> endMarker(TOOLS_OPEN_AUX_TLV_HEADER_SIZE, 0xff);
-        _rawFileBuff.insert(_rawFileBuff.end(), endMarker.begin(), endMarker.end());
-    }
-    // TODO: check the need to : write the file under a different name then delete original and rename
-    FILE* fd = fopen(_fname, "wb");
-    if (!fd) {
-        return (Tlv_Status_t)errmsgWCode(TS_FAILED_TO_OPEN_FILE, "Failed to open file for writing: %s", _fname);
-    }
-    int cnt = fwrite(&_rawFileBuff[0], 1, _rawFileBuff.size(), fd);
-    fclose(fd);
-    if (cnt != (int)_rawFileBuff.size()) {
-        return (Tlv_Status_t)errmsgWCode(TS_FAILED_TO_WRITE_FILE, "Failed to re-write file: %s", _fname);
-    }
-    return TS_OK;
-}
-
-void ImageTlvOps::pushTlvsToRawBuffer()
-{
-    // called from updateFile. assuming raw data already contains signature.
-    if (_tlvVec.size() != 0) {
-        std::vector<u_int8_t> tlvBuffer;
-        tlvBuffer.resize(0);
-        for (std::vector<aux_tlv>::iterator it = _tlvVec.begin(); it != _tlvVec.end(); it ++) {
-            // push header
-            std::vector<u_int8_t> hdrBuf(TOOLS_OPEN_AUX_TLV_HEADER_SIZE, 0x0);
-            tools_open_aux_tlv_header_pack(&(it->hdr), &hdrBuf[0]);
-            tlvBuffer.insert(tlvBuffer.end(), hdrBuf.begin(), hdrBuf.end());
-            // push data
-            tlvBuffer.insert(tlvBuffer.end(), it->data.begin(), it->data.end());
-            // pad to DW aligned address with 0x0 if needed
-            if (it->data.size() & 3) {
-                std::vector<u_int8_t> padding(4 - (it->data.size() & 3), 0x0);
-                tlvBuffer.insert(tlvBuffer.end(), padding.begin(), padding.end());
-            }
-        }
-        // update raw buffer and write the file
-        _rawFileBuff.insert(_rawFileBuff.end(), tlvBuffer.begin(), tlvBuffer.end());
-    }
-    return;
-}
-
-Tlv_Status_t ImageTlvOps::parseTlvs()
-{
-    if(!_tlvSectionFound) {
-        // nothing to parse
-        return TS_OK;
-    }
-
-    if (!_tlvSectionFilePos) {
-        return (Tlv_Status_t)errmsgWCode(TS_GENERAL_ERROR, "Internal Error. unexpected file position.");
-    }
-
-    // while not end TLV or EOF
-    u_int32_t nextTlvOffs = _tlvSectionFilePos + AUX_DATA_SIG_SIZE;
-    u_int32_t bufferSize = (u_int32_t)_rawFileBuff.size();
-    do {
-        aux_tlv tlv;
-        // read next TLV header
-        if (nextTlvOffs == bufferSize) {
-            return (Tlv_Status_t)errmsgWCode(TS_TLV_PARSE_ERROR, "failed to parse TLVs : expected to find End marker before end of file");
-        }
-        if (nextTlvOffs + TOOLS_OPEN_AUX_TLV_HEADER_SIZE > bufferSize) {
-            return (Tlv_Status_t)errmsgWCode(TS_TLV_PARSE_ERROR, "failed to parse TLVs : unexpected End of extended data section");
-        }
-        u_int8_t hdrBuf[TOOLS_OPEN_AUX_TLV_HEADER_SIZE] = {0};
-        memcpy(hdrBuf, &_rawFileBuff[nextTlvOffs], TOOLS_OPEN_AUX_TLV_HEADER_SIZE);
-        tools_open_aux_tlv_header_unpack(&tlv.hdr, hdrBuf);
-        // check for END TLV
-        if (tlv.hdr.header_type == 0xf && tlv.hdr.type == 0xff) {
-            break;
-        }
-        // read next TLV data
-        if (nextTlvOffs + TOOLS_OPEN_AUX_TLV_HEADER_SIZE + tlv.hdr.length  > bufferSize) {
-            return (Tlv_Status_t)errmsgWCode(TS_TLV_PARSE_ERROR, "failed to parse TLVs : unexpected End of extended data section");
-        }
-        u_int32_t vecSizeDwAligned = ((tlv.hdr.length + 3) /4) * 4;
-        tlv.data.resize(tlv.hdr.length);
-        memset(&tlv.data[0], 0x0, tlv.data.size());
-        memcpy(&tlv.data[0], &_rawFileBuff[nextTlvOffs + TOOLS_OPEN_AUX_TLV_HEADER_SIZE], tlv.hdr.length);
-        if (tlv.hdr.header_type == 0x0) { // only know how to deal with header of type 0x0
-            // check CRC and store
-            if (tlv.hdr.crc != calcTlvCrc(tlv)) {
-                return (Tlv_Status_t)errmsgWCode(TS_TLV_CRC_MISSMATCH, "Failed to parse TLVs, CRC missmatch for TLV type 0x%x", tlv.hdr.type);
-            }
-            // store it
-            _tlvVec.push_back(tlv);
-        }
-        // next TLV is located at the first DW aligned offset after the current TLV
-        nextTlvOffs += (TOOLS_OPEN_AUX_TLV_HEADER_SIZE + vecSizeDwAligned);
-    } while (true);
-    return TS_OK;
-}
-
-u_int16_t ImageTlvOps::calcTlvCrc(aux_tlv& tlv)
-{
-    struct tools_open_aux_tlv_header tempHdr;
-    u_int32_t dataSize = (u_int32_t)tlv.data.size();
-    Crc16 crc;
-    tempHdr = tlv.hdr;
-    tempHdr.crc = 0xffff;
-    u_int8_t tlvHdrBuf[TOOLS_OPEN_AUX_TLV_HEADER_SIZE] = {0};
-    tools_open_aux_tlv_header_pack(&tempHdr, tlvHdrBuf);
-    // restore CPU endianess
-    TOCPUn(tlvHdrBuf, TOOLS_OPEN_AUX_TLV_HEADER_SIZE >> 2);
-    // calc crc on modified header
-    CRCn(crc, tlvHdrBuf, TOOLS_OPEN_AUX_TLV_HEADER_SIZE >> 2);
-    // calc crc on the data
-    TOCPUn(&tlv.data[0], dataSize >> 2);
-    CRCn(crc, &tlv.data[0], dataSize >> 2);
-    // we might have missed the last DW as it need not be DW aligned
-    u_int32_t remaining = dataSize & 3;
-    if (remaining) {
-        u_int32_t lastDw = 0x0;
-        memcpy(&lastDw, &tlv.data[dataSize - remaining], remaining);
-        crc << lastDw;
-    }
-    TOCPUn(&tlv.data[0], dataSize >> 2);
-    crc.finish();
-    return crc.get();
-}
-
-
-/*
- * TimeStampIFC class implementation
- */
-
-
-TimeStampIFC* TimeStampIFC::getIFC(mfile* mf)
-{
-    return new DeviceTimeStamp(mf);
-}
-
-TimeStampIFC* TimeStampIFC::getIFC(const char* fname, u_int32_t lastFwAddr)
-{
-    return new ImageTimeStamp(fname, lastFwAddr);
-}
-
-TimeStampIFC* TimeStampIFC::getIFC(u_int8_t* buff, unsigned int size, u_int32_t lastFwAddr)
-{
-    return new ImageTimeStamp(buff, size, lastFwAddr);
-}
-
-
-/*
- * ImageTimeStamp class implementation
- */
-
-Tlv_Status_t ImageTimeStamp::init()
-{
-    Tlv_Status_t rc = _imgTlvOps.init(_lastFwAddr);
-    return  rc ? (Tlv_Status_t)errmsgWCode(rc, "%s", _imgTlvOps.err()) : TS_OK;
-};
-
-Tlv_Status_t ImageTimeStamp::setTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer)
-{
-    aux_tlv tsTlv;
-    memset(&tsTlv, 0, sizeof(tsTlv));
-    tsTlv.hdr.header_type = ImageTimeStamp::TS_Header_Type;
-    tsTlv.hdr.type = ImageTimeStamp::TS_Tlv_Type;
-    tsTlv.hdr.length = TOOLS_OPEN_TIMESTAMP_SIZE;
-    tsTlv.data.resize(tsTlv.hdr.length);
-    memset(&tsTlv.data[0], 0, tsTlv.hdr.length);
-    struct tools_open_timestamp tsData;
-    tsData.fw_version = fwVer;
-    tsData.ts_entry = timestamp;
-    tools_open_timestamp_pack(&tsData, &tsTlv.data[0]);
-    _imgTlvOps.addTLV(tsTlv);
-    bool rc = _imgTlvOps.updateFile();
-    if (!rc) {
-        return (Tlv_Status_t)errmsgWCode(rc, "%s", _imgTlvOps.err());
-    }
-    return TS_OK;
-}
-
-Tlv_Status_t ImageTimeStamp::queryTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer, bool queryRunning)
-{
-    (void)queryRunning;
-    aux_tlv tsTlv;
-    struct tools_open_timestamp tsData;
-    memset(&tsTlv, 0, sizeof(tsTlv));
-    Tlv_Status_t rc = _imgTlvOps.queryTlv(ImageTimeStamp::TS_Tlv_Type, ImageTimeStamp::TS_Header_Type, tsTlv);
-    if (rc) {
-        return (Tlv_Status_t)errmsgWCode(rc, "Failed to query timestamp, Data not found in image");
-    }
-    if (tsTlv.hdr.major_version != 0) {
-        return (Tlv_Status_t)errmsgWCode(TS_UNKNOWN_TLV_VERSION, "Failed to query timestamp, Unknown timestamp TLV version");
-    }
-    tools_open_timestamp_unpack(&tsData, &tsTlv.data[0]);
-    timestamp = tsData.ts_entry;
-    fwVer = tsData.fw_version;
-    return TS_OK;
-}
-Tlv_Status_t ImageTimeStamp::resetTimeStamp()
-{
-    Tlv_Status_t rc = _imgTlvOps.removeTlv(ImageTimeStamp::TS_Tlv_Type, ImageTimeStamp::TS_Header_Type);
-    if (rc == TS_OK) {
-        Tlv_Status_t rc = _imgTlvOps.updateFile();
-        if (!rc) {
-            return (Tlv_Status_t)errmsgWCode(rc, "Failed to reset Timestamp on image, %s", _imgTlvOps.err());
-        }
-    }
-    return TS_OK;
-}
-
-/*
- * DeviceTimeStamp class implementation
- */
-
-Tlv_Status_t DeviceTimeStamp::init()
-{
-    int rc ;
-    // attempt to get running FW TS
-    struct tools_open_mvts mvts;
-    memset(&mvts, 0, sizeof(mvts));
-    mvts.running_flag = 1;
-    rc = reg_access_mvts(_mf, REG_ACCESS_METHOD_GET, &mvts);
-    if (rc == ME_OK || rc == ME_REG_ACCESS_BAD_CONFIG) {
-        return TS_OK;
-    }
-    return (Tlv_Status_t)errmsgWCode(TS_TIMESTAMPING_NOT_SUPPORTED, "Time stamping not supported by FW");
-}
-
-
-Tlv_Status_t DeviceTimeStamp::setTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer)
-{
-    struct tools_open_mvts mvts;
-    memset(&mvts, 0, sizeof(mvts));
-    mvts.timestamp.fw_version = fwVer;
-    mvts.timestamp.ts_entry = timestamp;
-    int rc = reg_access_mvts(_mf, REG_ACCESS_METHOD_SET, &mvts);
-    rc = (int)convertRc((MError)rc, REG_ACCESS_METHOD_SET);
-    if (rc) {
-        return (Tlv_Status_t)errmsgWCode(rc, "Failed to set timestamp on device, %s", err());
-    }
-    return TS_OK;
-}
-
-
-Tlv_Status_t DeviceTimeStamp::queryTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer, bool queryRunning)
-{
-    struct tools_open_mvts mvts;
-    memset(&mvts, 0, sizeof(mvts));
-    mvts.running_flag = queryRunning;
-    int rc = reg_access_mvts(_mf, REG_ACCESS_METHOD_GET, &mvts);
-    rc = (int)convertRc((MError)rc, REG_ACCESS_METHOD_GET);
-    if (rc) {
-        return (Tlv_Status_t)errmsgWCode(rc, "Failed to query %s timestamp on device, %s\n", queryRunning ? "current" : "next", err());
-    }
-    // if timestamp and fw ver are zero entry is invalid
-    struct tools_open_timestamp timestampZeroes;
-    memset(&timestampZeroes, 0x0, sizeof(timestampZeroes));
-    if (!memcmp(&(mvts.timestamp), &timestampZeroes, sizeof(mvts.timestamp))) {
-        return (Tlv_Status_t)errmsgWCode(TS_NO_VALID_TIMESTAMP, "Failed to query %s timestamp, No valid timestamp found", queryRunning ? "current" : "next");
-    }
-    fwVer = mvts.timestamp.fw_version;
-    timestamp = mvts.timestamp.ts_entry;
-    return TS_OK;
-}
-
-Tlv_Status_t DeviceTimeStamp::resetTimeStamp()
-{
-    struct tools_open_mvts mvts;
-    memset(&mvts, 0, sizeof(mvts));
-    mvts.clear_all_ts_flag = 1;
-    int rc = reg_access_mvts(_mf, REG_ACCESS_METHOD_SET, &mvts);
-    rc = (int)convertRc((MError)rc, REG_ACCESS_METHOD_SET);
-    if (rc) { // bad params means command not supported
-        return (Tlv_Status_t)errmsgWCode(rc, "Failed to reset timestamp on device, %s", rc == ME_REG_ACCESS_BAD_CONFIG ? "Bad configuration" : err());
-    }
-    return TS_OK;
-}
-
-inline Tlv_Status_t DeviceTimeStamp::convertRc(MError rc, int regMethod)
-{
-    if (rc == ME_OK) {
-        return TS_OK;
-    }
-    if (rc == ME_REG_ACCESS_BAD_PARAM || rc == ME_ICMD_OPERATIONAL_ERROR) {
-         return (Tlv_Status_t)errmsgWCode(TS_TIMESTAMPING_NOT_SUPPORTED, "Time stamping not supported by FW");
-    } else if (rc == ME_REG_ACCESS_BAD_CONFIG) {
-        return (Tlv_Status_t)errmsgWCode(TS_NO_VALID_TIMESTAMP, regMethod == REG_ACCESS_METHOD_GET ? "No valid timestamp found" : "Timestamp is too old");
-    } else if (rc == ME_ICMD_UNSUPPORTED_ICMD_VERSION) {
-         return(Tlv_Status_t)errmsgWCode(TS_UNSUPPORTED_ICMD_VERSION, "Unsupported ICMD version");
-    }
-    return (Tlv_Status_t)errmsgWCode(TS_GENERAL_ERROR, "%s",  reg_access_err2str((MError)rc));
-}
diff --git a/mlxfwops/lib/aux_tlv_ops.h b/mlxfwops/lib/aux_tlv_ops.h
deleted file mode 100644 (file)
index e139d20..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef AUX_TLV_OPS_H
-#define AUX_TLV_OPS_H
-
-#include <mtcr.h>
-#include <tools_layouts/tools_open_layouts.h>
-#include <tools_layouts/register_access_open_layouts.h>
-
-typedef enum {
-    TS_OK = 0,
-    TS_GENERAL_ERROR,
-    // device related errors
-    TS_TIMESTAMPING_NOT_SUPPORTED,
-    TS_NO_VALID_TIMESTAMP,
-    TS_OLD_TIMESTAMP,
-    TS_UNSUPPORTED_ICMD_VERSION,
-    // image related errors,
-    TS_TLV_CRC_MISSMATCH,
-    TS_TLV_PARSE_ERROR,
-    TS_NO_TLV_SECTION_FOUND,
-    TS_FAILED_TO_OPEN_FILE,
-    TS_FAILED_TO_WRITE_FILE,
-    TS_FAILED_TO_READ_FILE,
-    TS_TLV_NOT_FOUND,
-    TS_READ_ONLY_MODE,
-    TS_HANDLE_NOT_SUPPORTED,
-    TS_UNKNOWN_TLV_VERSION,
-} Tlv_Status_t;
-
-typedef struct aux_tlv {
-    struct tools_open_aux_tlv_header hdr;
-    std::vector<u_int8_t> data;  // data in big endian
-} aux_tlv_t;
-
-
-class ImageTlvOps : public FlintErrMsg
-{
-public:
-    ImageTlvOps(const char* fname, bool readOnly=false) : FlintErrMsg() , _fname(fname), _tlvSectionFound(false),
-                                                          _tlvSectionFilePos(0), _initialized(false),
-                                                          _readOnly(readOnly){}
-    ImageTlvOps(u_int8_t* buf, unsigned int size) : FlintErrMsg() , _fname((const char*)NULL),
-                                                    _tlvSectionFound(false), _tlvSectionFilePos(0),
-                                                    _initialized(false), _readOnly(true)
-                                                    {
-                                                        if (!buf) {
-                                                            // Adrianc: should not be reached, consider using exceptions
-                                                            _rawFileBuff.resize(0);
-                                                        } else {
-                                                            _rawFileBuff.resize(size);
-                                                            memcpy(&_rawFileBuff[0], buf, size);
-                                                        }
-                                                    }
-    ~ImageTlvOps() {}
-
-    Tlv_Status_t init(u_int32_t startPos, bool force=false);
-    void addTLV(aux_tlv& tlv);
-    Tlv_Status_t removeTlv(u_int16_t tlvType, u_int8_t headerType=0);
-    std::vector<aux_tlv> queryTlvs();
-    Tlv_Status_t queryTlv(u_int16_t tlvType, u_int8_t headerType, aux_tlv& tlv);
-    Tlv_Status_t resetTlvSection();
-    Tlv_Status_t updateFile();
-    bool test(); // test method
-private:
-    void pushTlvsToRawBuffer();
-    Tlv_Status_t getFileSize(FILE* fd, long int& fileSize);
-    Tlv_Status_t writeBufferAsFile();
-    Tlv_Status_t parseTlvs();
-    u_int16_t calcTlvCrc(aux_tlv& tlv);
-    bool checkSig(std::vector<u_int8_t>& signature);
-
-    const char* _fname;
-    bool _tlvSectionFound;
-    u_int32_t _tlvSectionFilePos;
-    bool _initialized;
-    bool _readOnly;
-    std::vector<aux_tlv> _tlvVec;
-    std::vector<u_int8_t> _rawFileBuff;
-};
-
-
-class TimeStampIFC : public FlintErrMsg
-{
-public:
-    TimeStampIFC() : FlintErrMsg() {};
-    virtual ~TimeStampIFC(){};
-    static TimeStampIFC* getIFC(mfile* mf);
-    static TimeStampIFC* getIFC(const char* fname, u_int32_t lastFWAddr=0);
-    static TimeStampIFC* getIFC(u_int8_t* buff, unsigned int size,u_int32_t lastFwAddr=0);
-    virtual Tlv_Status_t init() {return TS_OK;};
-    virtual Tlv_Status_t setTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer) = 0;
-    virtual Tlv_Status_t queryTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer, bool queryRunning=false) = 0;
-    virtual Tlv_Status_t resetTimeStamp() = 0;
-};
-
-
-class ImageTimeStamp : public TimeStampIFC
-{
-public:
-    ImageTimeStamp(const char* fname, u_int32_t lastFwAddr) : TimeStampIFC(), _lastFwAddr(lastFwAddr), _imgTlvOps(fname) {};
-    ImageTimeStamp(u_int8_t* buf, unsigned int size, u_int32_t lastFwAddr) : TimeStampIFC(), _lastFwAddr(lastFwAddr), _imgTlvOps(buf, size) {};
-    ~ImageTimeStamp() {};
-    virtual Tlv_Status_t init();
-
-    virtual Tlv_Status_t setTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer);
-    virtual Tlv_Status_t queryTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer, bool queryRunning=false);
-    virtual Tlv_Status_t resetTimeStamp();
-private:
-    enum {
-        TS_Header_Type = 0x0,
-        TS_Tlv_Type = 0x1,
-    };
-    u_int32_t _lastFwAddr;
-    ImageTlvOps _imgTlvOps;
-};
-
-
-class DeviceTimeStamp : public TimeStampIFC
-{
-public:
-    DeviceTimeStamp(mfile* mf) : TimeStampIFC(), _mf(mf) {};
-    ~DeviceTimeStamp() {};
-    virtual Tlv_Status_t init();
-
-    virtual Tlv_Status_t setTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer);
-    virtual Tlv_Status_t queryTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer, bool queryRunning=false);
-    virtual Tlv_Status_t resetTimeStamp();
-private:
-    inline Tlv_Status_t convertRc(MError rc, int regMethod );
-    mfile* _mf;
-};
-
-
-#endif
diff --git a/mlxfwops/lib/flint_base.cpp b/mlxfwops/lib/flint_base.cpp
deleted file mode 100755 (executable)
index 578f407..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- *
- * flint_base.cpp - FLash INTerface
- *
- * Copyright (c) 2011 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id: flint_base.cpp 7522 2011-11-16 15:37:21Z mohammad $
- *
- */
-
-#include <stdarg.h>
-#include "flint_base.h"
-
-
-
-void FlintErrMsg::err_clear(){
-    delete [] _err;
-    _err = 0;
-}
-
-
-bool _print_crc     = false;
-bool _silent        = false;
-bool _assume_yes    = false;
-bool _assume_no     = false;
-
-bool _no_erase      = false;
-bool _no_burn       = false;
-
-bool _unlock_bypass = false;
-bool _byte_write    = false;
-
-const char* g_sectNames[] = {
-    "UNKNOWN (0 - Reserved)",
-    "DDR"             ,
-    "Configuration"   ,
-    "Jump addresses"  ,
-    "EMT Service"     ,
-    "ROM"             ,
-    "GUID"            ,
-    "BOARD ID"        ,
-    "User Data"       ,
-    "FW Configuration",
-    "Image Info"      ,
-    "DDRZ"            ,
-    "Hash File"
-};
-
-void report(const char *format, ...)
-#ifdef __GNUC__
-__attribute__ ((format (printf, 1, 2)))
-#endif
-;
-void report(const char *format, ...)
-{
-    va_list  args;
-    va_start(args, format);
-    vprintf(format, args);
-    va_end(args);
-} // report
-
-#define MAX_STRING_LEN 512
-void report_callback(f_prog_func_str func_str, const char *format, ...)
-{
-    va_list  args;
-    char buff[MAX_STRING_LEN];
-
-    va_start(args, format);
-    vsnprintf(buff, MAX_STRING_LEN, format, args);
-    va_end(args);
-    // printf("%s\n", buff);
-    if (func_str != NULL) {
-        func_str(buff);
-    }
-
-} // report
-
-
-/*
-void report_erase(const char *format, ...)
-{
-    va_list  args;
-    char buf[256];
-    int i;
-    int len;
-
-    if (_silent)
-        return;
-
-    va_start(args, format);
-    vsnprintf(buf, sizeof buf, format, args);
-    va_end(args);
-
-    len = strlen(buf);
-    for (i=0; i < len; ++i)
-        printf("\b");
-} // report_erase
-*/
-void report_repair_msg(const char* common_msg)
-{
-    printf("\r%s OK         ", common_msg);
-}
-
-#define MAX_ERR_STR_LEN 1024
-#define PRE_ERR_MSG "-E-"
-void report_err(char err_buff[MAX_ERR_STR_LEN], const char *format, ...)
-{
-    va_list  args;
-
-    va_start(args, format);
-
-    if (vsnprintf(err_buff, MAX_ERR_STR_LEN, format, args) >= MAX_ERR_STR_LEN) {
-        strcpy(&err_buff[MAX_ERR_STR_LEN - 5], "...\n");
-    }
-    fprintf(stderr, PRE_ERR_MSG" %s", err_buff);
-
-    va_end(args);
-
-    return;
-}
-
-void report_warn(const char *format, ...)
-{
-#ifndef UEFI_BUILD
-    va_list  args;
-    va_start(args, format);
-    printf("\n-W- ");
-    vfprintf(stdout, format, args);
-    printf(" %s", "\n");
-    va_end(args);
-#endif
-}
-
-bool FlintErrMsg::errmsg(const char *format, ...) {
-    va_list   args;
-
-    char* prev_err = _err;
-
-    va_start(args, format);
-    _err = vprint(format, args);
-    va_end(args);
-
-    delete[] prev_err;
-
-    return false;
-}
-
-bool FlintErrMsg::errmsg(int errorCode, const char *format, ...) {
-    va_list   args;
-
-    char* prev_err = _err;
-
-    va_start(args, format);
-    _err = vprint(format, args);
-    va_end(args);
-
-    delete[] prev_err;
-    _errCode = errorCode;
-    return false;
-}
-
-bool FlintErrMsg::errmsgAdv(bool showAdv, const char *normalFmt, const char *AdvFmt, ...) {
-       // args should only apply to advanced format (i.e normalFmt does not contain %<char>)
-    va_list   args;
-    char errFmt[1024];
-
-    char* prev_err = _err;
-
-    va_start(args, AdvFmt);
-
-    if (showAdv) {
-       snprintf(errFmt, 1024, "%s %s", normalFmt, AdvFmt);
-       _err = vprint(errFmt, args);
-    } else {
-       //For functions where the arguments are not available to be checked (such as vprintf),
-       //specify the third parameter as zero. In this case the compiler only checks the format string for consistency
-       errmsg(normalFmt,0);
-    }
-    va_end(args);
-
-    delete[] prev_err;
-
-    return false;
-}
-
-int FlintErrMsg::errmsgWCode(int errorCode, const char *format, ...) {
-    va_list   args;
-
-    char* prev_err = _err;
-
-    va_start(args, format);
-    _err = vprint(format, args);
-    va_end(args);
-
-    delete[] prev_err;
-    _errCode = errorCode;
-    return errorCode;
-}
-
-////////////////////////////////////////////////////////////////////////
-void Crc16::add(u_int32_t o)
-{
-    if (_debug)
-        printf("Crc16::add(%08x)\n", o);
-    for (int i=0; i<32; i++) {
-        if (_crc & 0x8000)
-            _crc = (u_int16_t) ((((_crc<<1) | (o>>31)) ^  0x100b) & 0xffff);
-        else
-            _crc= (u_int16_t) (((_crc<<1) | (o>>31)) & 0xffff);
-        o = (o<<1) & 0xffffffff;
-    }
-} // Crc16::add
-
-
-////////////////////////////////////////////////////////////////////////
-void Crc16::finish()
-{
-    for (int i=0; i<16; i++) {
-        if (_crc & 0x8000)
-            _crc=((_crc<<1)  ^  0x100b) & 0xffff;
-        else
-            _crc=(_crc<<1) & 0xffff;
-    }
-
-    // Revert 16 low bits
-    _crc = _crc ^ 0xffff;
-
-} // Crc16::finish
-
-
-#ifdef UEFI_BUILD
-
-void *operator new(size_t size)
-{
-    void *p;
-    p =  malloc(size);
-    return p;
-}
-
-void *operator new[](size_t size)
-{
-    void *p;
-    p =  malloc(size);
-    return p;
-}
-
-// delete operator overloaded
-void operator delete(void *p)
-{
-    free(p);
-}
-
-void operator delete[] (void* p)
-{
-    free(p);
-}
-
-
-namespace std {
-    void __throw_bad_alloc(void) {
-        // TODO: Check what happens when there is no mem or replace this exit with goto
-        goto hell;
-    hell:
-        goto hell;
-    }
-
-    void __throw_length_error(const char*) {
-        // TODO: Check what happens when there is no mem or replace this exit with goto
-        goto hell;
-    hell:
-        goto hell;
-    }
-
-    void __throw_out_of_range(const char*) {
-        // TODO: Check what happens when there is no mem or replace this exit with goto
-        goto hell;
-    hell:
-        goto hell;
-    }
-}
-
-int goto_function()
-{
-    goto hell;
-hell:
-    return 0;
-}
-extern "C" void __cxa_pure_virtual(void) {};
-
-#endif
-
diff --git a/mlxfwops/lib/flint_base.h b/mlxfwops/lib/flint_base.h
deleted file mode 100755 (executable)
index cb39c14..0000000
+++ /dev/null
@@ -1,569 +0,0 @@
-/*
- *
- * flint_base.h - FLash INTerface
- *
- * Copyright (c) 2011 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id: flint_base.h 7522 2011-11-16 15:37:21Z mohammad $
- *
- */
-#ifndef FLINT_BASE_H
-#define FLINT_BASE_H
-
-#ifndef UEFI_BUILD
-    #ifndef __FreeBSD__
-    #include <malloc.h>
-    #endif
-#else
-    #include "uefi_c.h"
-#endif
-
-#if defined __FreeBSD__
-    #include <stdarg.h>
-#endif
-
-#include <signal.h>
-#include "tools_version.h"
-
-#ifndef __WIN__
-
-//
-// GCC Compiler
-//
-
-
-    #if defined __DJGPP__
-//
-// DJGPP - GCC PORT TO MS DOS
-//
-
-        #include <mtcr.h> // This contains the u_* types definitions
-
-        #include <netinet/in.h>
-        #include <unistd.h>
-
-        #define bswap_32(x) ntohl(x)
-
-// djgpp stdio does not define vsnprintf. I simply call vsprintf (and pray ...)
-        #define vsnprintf(buf, len, format, args) (vsprintf(buf, format, args))
-        #define snprintf(buf, len, format, args...) (sprintf(buf, format, args))
-    #endif // __DJGPP__
-
-#else // __WIN__
-
-//
-// Windows (Under DDK)
-//
-    #include <mtcr.h>
-// Sleep adaptor
-    #define usleep(x) Sleep((x)/1000)
-    #define sleep(x)  Sleep((x)*1000)
-
-    #define vsnprintf      _vsnprintf
-    #define isatty         _isatty
-
-    // MINGW
-    #if defined(__MINGW32__) || (__MINGW64__)
-        #define _UNISTD_H // Zlib includes unistd.h which causes some compilation errors.
-    #else
-        #define strtoull       _strtoui64
-    #endif
-#endif // __WIN__
-
-
-#include <vector>
-#include <compatibility.h>
-#include "mlxfwops_com.h"
-
-static inline void be_guid_to_cpu(guid_t* to, guid_t* from) {
-        to->h=__be32_to_cpu(from->h);
-        to->l=__be32_to_cpu(from->l);
-}
-namespace std {}; using namespace std;
-
-#define TOCPU1(s) s = __be32_to_cpu((u_int32_t)(s));
-#define CPUTO1(s) s = __cpu_to_be32((u_int32_t)(s));
-#define TOCPU(s) do {                                              \
-    u_int32_t *p = (u_int32_t *)(s);                               \
-    for (u_int32_t ii=0; ii<sizeof(s)/sizeof(u_int32_t); ii++,p++) \
-        *p = __be32_to_cpu(*p);                                    \
-    } while(0)
-#define TOCPUn(s, n) do {                                          \
-    u_int32_t *p = (u_int32_t *)(s);                               \
-    for (u_int32_t ii=0; ii<(n); ii++,p++)                         \
-        *p = __be32_to_cpu(*p);                                    \
-    } while(0)
-
-#define CPUTOn(s, n) do {                                          \
-    u_int32_t *p = (u_int32_t *)(s);                               \
-    for (u_int32_t ii=0; ii<(n); ii++,p++)                         \
-        *p = __cpu_to_be32(*p);                                    \
-    } while(0)
-
-#define TOCPUBY(s) do {                                            \
-    u_int32_t *p = (u_int32_t *)(&s);                              \
-    for (u_int32_t ii=0; ii<sizeof(s)/sizeof(u_int32_t); ii++,p++) \
-        *p = __be32_to_cpu(*p);                                    \
-    } while(0)
-#define CPUTOBY(s) do {                                            \
-    u_int32_t *p = (u_int32_t *)(&s);                              \
-    for (u_int32_t ii=0; ii<sizeof(s)/sizeof(u_int32_t); ii++,p++) \
-        *p = __cpu_to_be32(*p);                                    \
-    } while(0)
-#define TOCPUBY64(s) do {                                          \
-    guid_t *p = s;                              \
-    for (unsigned ii=0; ii<sizeof(s)/sizeof(guid_t); ii++,p++)     \
-        be_guid_to_cpu(p,p);                                       \
-    } while(0)
-#define CRC(c, s) do {                                             \
-    u_int32_t *p = (u_int32_t *)(s);                               \
-    for (u_int32_t ii=0; ii<sizeof(s)/sizeof(u_int32_t); ii++)     \
-        c << *p++;                                                 \
-    } while(0)
-#define CRCn(c, s, n) do {                                         \
-    u_int32_t *p = (u_int32_t *)(s);                               \
-    for (u_int32_t ii=0; ii<(n); ii++)                             \
-        c << *p++;                                                 \
-    } while(0)
-#define CRCBY(c, s) do {                                           \
-    u_int32_t *p = (u_int32_t *)(&s);                              \
-    for (u_int32_t ii=0; ii<sizeof(s)/sizeof(u_int32_t); ii++)     \
-        c << *p++;                                                 \
-    } while(0)
-#define CRC1(c, s) do {                                            \
-    u_int32_t *p = (u_int32_t *)(s);                               \
-    for (u_int32_t ii=0; ii<sizeof(s)/sizeof(u_int32_t) - 1; ii++) \
-        c << *p++;                                                 \
-    } while(0)
-#define CRC1n(c, s, n) do {                                        \
-    u_int32_t *p = (u_int32_t *)(s);                               \
-    for (u_int32_t ii=0; ii<(n) - 1; ii++)                         \
-        c << *p++;                                                 \
-    } while(0)
-#define CRC1BY(c, s) do {                                          \
-    u_int32_t *p = (u_int32_t *)(&s);                              \
-    for (u_int32_t ii=0; ii<sizeof(s)/sizeof(u_int32_t) - 1; ii++) \
-        c << *p++;                                                 \
-    } while(0)
-
-
-#define CHECKB2(b,o,n,f,p,fp) do { if (!checkBoot2(b,o,n,f,p,fp)) return false; } while (0)
-#define FS3_CHECKB2(b,o,f,p,i) {u_int32_t n; if (!checkBoot2(b,o,n,f,p,i)) return false;}
-
-#define CHECKGN(b,o,n,p,fp) do { if (!checkGen(b,o,n,p,fp)) return false; } while (0)
-#define CHECKLS(o,s,p) do { if (!checkList(o,s,p)) return false; } while(0)
-#define READ4(f,o,d,p) do { if (!f.read(o,d)) {  \
-    return errmsg("%s - read error (%s)\n", p, f.err()); }} while (0)
-#define READ4_NOERRMSG(f,o,d) do { if (!f.read(o,d)) {  \
-               return false; }} while (0)
-#define READBUF(f,o,d,l,p) do { if (!f.read(o,d,l)) { \
-    return errmsg("%s - read error (%s)\n", p, f.err()); }} while (0)
-#define READALLOCBUF(f,o,d,l,p) do {\
-    d = (u_int8_t*) malloc(sizeof(u_int8_t) * l);\
-    if (!f.read(o,d,l)) { \
-        free(d);\
-        return errmsg("%s - read error (%s)\n", p, f.err());\
-    }\
-} while (0)
-
-#define FS2_BOOT_START   0x38
-#define FS_DATA_OFF      0x28
-#define SWITCHX_HW_ID    581
-#define SWITCH_IB_HW_ID  583
-#define SPECTRUM_HW_ID   585
-#define SWITCH_IB2_HW_ID 587
-
-
-#define CX4_HW_ID         521
-#define CX4LX_HW_ID       523
-#define CX5_HW_ID         525
-#define CX2_HW_ID         400
-#define CX3_HW_ID         501
-#define CX3_PRO_HW_ID     503
-#define IS4_HW_ID         435
-#define CONNECT_IB_HW_ID  511
-#define CONNECT_IB_SW_ID  4113
-
-// FS3 defines
-#define FS3_BOOT_START        FS2_BOOT_START
-#define FS3_BOOT_START_IN_DW  FS3_BOOT_START/4
-
-#define CRC_CHECK_OLD "%s /0x%08x-0x%08x (0x%06x)/ (%s"
-
-#define MAX_NUM_SUPP_HW_IDS 200
-#define MAX_NUM_SUPP_HW_LIST_STR (MAX_NUM_SUPP_HW_IDS * 40)
-#define MAC_SPACES  "            "
-#define GUID_SPACES "        "
-#define GUID_FORMAT "%8.8x%8.8x"
-#define MAC_FORMAT  "%4.4x%8.8x"
-
-
-#define FLINT_IGNORE_TTY "FLINT_IGNORE_TTY"
-#define FLINT_LOG_ENV    "FLINT_LOG_FILE"
-#define IMG_CRC_OFF      0x20
-#define MAX_ERR_STR_LEN  1024
-
-#define MLXCONFIG_CMD    "config"
-enum {
-    SIGNATURE          = 0x5a445a44,
-    MELLANOX_VENDOR_ID = 0x15b3
-};
-struct PS {
-    u_int32_t fi_addr;
-    u_int32_t fi_size;
-    u_int32_t signature;
-    u_int32_t fw_reserved[5];
-    u_int32_t vsd[52];
-    u_int32_t psid[4];
-    u_int32_t branch_to;
-    u_int32_t crc016;
-};
-
-enum SectionType {
-    H_FIRST     =  1,
-    H_DDR       =  1,
-    H_CNF       =  2,
-    H_JMP       =  3,
-    H_EMT       =  4,
-    H_ROM       =  5,
-    H_GUID      =  6,
-    H_BOARD_ID  =  7,
-    H_USER_DATA =  8,
-    H_FW_CONF   =  9,
-    H_IMG_INFO  = 10,
-    H_DDRZ      = 11,
-    H_HASH_FILE = 12,
-    H_LAST
-};
-
-/* Description - Section ID Section Type DESCRIPTION\;0x1 BOOT_CODE FW loader code\;0x2 PCI_CODE Code that is required to raise PCIe link.\;
- * 0x3 MAIN_CODE All non-PCIe FW code\;0x8 HW_BOOT_CFG Initial values for the PCI related registers\;0x9 HW_MAIN_CFG Initial values for all
- * other registers \;0x10 IMAGE_INFO Management data for the burning tool. See 'Image Info Section' chapter in the Mellanox Flash Programming
- *  Application Note\;0x11 FW_BOOT_CFG Initial values for user set-able hi level non-hardware related settings, such as number of physical functions\
- *  ;(optional)\;0x12 FW_MAIN_CFG Initial values for user set-able hi level non-hardware related settings.\;(optional)\;0x18 ROM_CODE PXE/Boot over IB code.
- *   \;0x30 DBG_LOG_MAP FW logger 'index to string' map. The map is in ASCI text. Format is TBD.\;
- *   PARAM0 in the iTOC specifies the compression method of this sector:\;                                          0. Uncompressed\;
- *    1. Zlib compress2()\;                                          2. LZMA\;                                          Others - Reserved \;0x31 DBG_FW_INI
- *    The Ini file used in the image generation. The PARAM0 applies the same as in  DBG_LOG_MAP section type.\;0x32 DBG_FW_PARAMS FW settable parameters.
- *    ASCII text. Format is TBD. The PARAM0 applies the same as in  DBG_LOG_MAP section type.\;0xff END_MARKER A type of 0xff marks the end of the iTOC entries
- *     array. It is recommended to leave the unused part of the iTOC section blank (that is, 0xff in all unused bytes)\;All other values Reserved \; */
-
-typedef enum fs3_section {
-    FS3_BOOT_CODE     = 0x1,
-    FS3_PCI_CODE      = 0x2,
-    FS3_MAIN_CODE     = 0x3,
-    FS3_PCIE_LINK_CODE = 0x4,
-    FS3_IRON_PREP_CODE = 0x5,
-    FS3_POST_IRON_BOOT_CODE = 0x6,
-    FS3_UPGRADE_CODE  = 0x7,
-    FS3_HW_BOOT_CFG   = 0x8,
-    FS3_HW_MAIN_CFG   = 0x9,
-    FS3_PHY_UC_CODE   = 0xa,
-    FS3_PHY_UC_CONSTS = 0xb,
-    FS3_IMAGE_INFO    = 0x10,
-    FS3_FW_BOOT_CFG   = 0x11,
-    FS3_FW_MAIN_CFG   = 0x12,
-    FS3_ROM_CODE      = 0x18,
-    FS3_RESET_INFO    = 0x20,
-    FS3_DBG_FW_INI    = 0x30,
-    // FS3_DBG_LOG_MAP = 0x30 - in practice its unused and DBG_FW_INI is found in that section instead
-    FS3_DBG_FW_PARAMS = 0x32,
-    FS3_FW_ADB        = 0x33,
-    FS3_MFG_INFO      = 0xe0,
-    FS3_DEV_INFO      = 0xe1,
-    FS3_NV_DATA1      = 0xe2,
-    FS3_VPD_R0        = 0xe3,
-    FS3_NV_DATA2      = 0xe4,
-    FS3_FW_NV_LOG     = 0xe5,
-    FS3_NV_DATA0      = 0xe6, // replaces FS3_NV_DATA1
-    FS4_HW_PTR        = 0xfb,
-    FS4_TOOLS_AREA    = 0xfc,
-    FS3_ITOC          = 0xfd,
-    FS3_DTOC          = 0xfe,
-    FS3_END           = 0xff,
-} fs3_section_t;
-
-enum CommandType {
-    CMD_UNKNOWN,
-    CMD_BURN,
-    CMD_SET_GUIDS,
-    CMD_SET_VSD,
-    CMD_BURN_BLOCK,
-    CMD_QUERY,
-    CMD_QUERY_ROM,
-    CMD_QUERY_FORCE,
-    CMD_VERIFY,
-    CMD_READ_WORD,
-    CMD_READ_BLOCK,
-    CMD_WRITE_WORD,
-    CMD_WRITE_WORD_NE,
-    CMD_WRITE_BLOCK,
-    CMD_WRITE_BLOCK_NE,
-    CMD_ERASE_SECT,
-    CMD_DUMP_CONF,
-    CMD_DUMP_HASH,
-    CMD_DUMP_JSON,
-    CMD_READ_IMAGE,
-    CMD_CFI,
-    CMD_CLEAR_SEM,
-    CMD_SWRESET,
-    CMD_BURN_ROM,
-    CMD_REMOVE_ROM,
-    CMD_READ_ROM,
-    CMD_SET_KEY,
-    CMD_HW_ACCESS,
-    CMD_CONFIG,
-    CMD_DUMP_TRACER_HASH,
-    CMD_HW_INFO,
-    CMD_SET_MFG_GUIDS,
-    CMD_BURN_VPD,
-};
-
-
-struct GPH {
-    u_int32_t type;
-    u_int32_t size;
-    u_int32_t param;
-    u_int32_t next;
-};
-
-#define MAX_SECTION_SIZE 0x400000
-
-const u_int32_t BOARD_ID_BSN_LEN=64;
-const u_int32_t BOARD_ID_BID_LEN=32;
-const u_int32_t BOARD_ID_PID=7;
-
-struct BOARD_ID {
-    char      bsn[BOARD_ID_BSN_LEN];
-    char      bid[BOARD_ID_BID_LEN];
-};
-
-#define PROFILES_LIST_SECT "Profiles List section"
-#define TLV_FORMAT_SECT    "TLVs format section"
-#define TRACER_HASH_SECT   "Tracer Hash section"
-#define numbel(x) (sizeof(x)/sizeof((x)[0]))
-
-void report(const char *format, ...);
-void report_callback(f_prog_func_str func_str, const char *format, ...);
-void report_err(char err_buff[MAX_ERR_STR_LEN], const char *format, ...);
-void report_warn(const char *format, ...);
-void report_repair_msg(const char* common_msg);
-
-
-
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//                  BASE CLASSES
-////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-class MLXFWOP_API FlintErrMsg {
-public:
-    FlintErrMsg() : _err(0), _errCode(0){}
-    ~FlintErrMsg()                { err_clear();}
-    const char *err() const  { return _err;}
-    void err_clear();
-    int getErrorCode() {return _errCode;}
-
-protected:
-
-    char *vprint(const char *format, va_list args)
-    {
-        const int INIT_VAL = 1024;
-        int       max_str, max_buf = INIT_VAL;
-        char      *out_buf;
-
-        while (1) {
-            out_buf = new char[max_buf];
-            max_str = max_buf - 1;
-
-            if (vsnprintf(out_buf, max_str, format, args) < max_str)
-                return out_buf;
-            delete [] out_buf;
-            max_buf *= 2;
-        }
-    }
-
-
-    bool errmsg(const char *format, ...)
-#ifdef __GNUC__
-    __attribute__ ((format (printf, 2, 3)))
-#endif
-    ;
-
-    bool errmsg(int errorCode, const char *format, ...)
-#ifdef __GNUC__
-    __attribute__ ((format (printf, 3, 4)))
-#endif
-    ;
-
-    // this is abit ugly as there are no checks on the normalFmt string
-    bool errmsgAdv(bool showAdv, const char *normalFmt, const char *AdvFmt, ...)
-#ifdef __GNUC__
-    __attribute__ ((format (printf, 4, 5)))
-#endif
-    ;
-
-    int errmsgWCode(int errorCode, const char *format, ...)
-#ifdef __GNUC__
-    __attribute__ ((format (printf, 3, 4)))
-#endif
-    ;
-
-private:
-
-    char       *_err;
-    int         _errCode;
-};
-
-
-////////////////////////////////////////////////////////////////////////
-//                                                                    //
-// ****************************************************************** //
-//                        CRC16 CALCULATION                           //
-// ****************************************************************** //
-//                                                                    //
-////////////////////////////////////////////////////////////////////////
-class Crc16 {
-public:
-    Crc16(bool d = false) : _debug(d) { clear();}
-    u_int16_t      get()              { return _crc;}
-    void           clear()            { _crc = 0xffff;}
-    void           operator<<(u_int32_t val) { add(val);}
-    void           add(u_int32_t val);
-    void           finish();
-private:
-    u_int16_t      _crc;
-    bool           _debug;
-};
-
-
-class u_int32_ba {
-public:
-    u_int32_ba(u_int32_t i = 0) :
-    _bits(i),
-    _rbits(_bits),
-    _sptr1(0),
-    _eptr(31)    {}
-
-    u_int32_ba  operator[](u_int32_t idx) {return range((u_int8_t)idx,(u_int8_t)idx);}
-    u_int32_ba& operator= (u_int32_t i)   {_rbits = ((i << _sptr1) & mask()) | (_rbits & ~mask()); return *this;}
-    u_int32_t*  operator& ()              {return &_bits;}
-    operator    u_int32_t ()              {return((mask() & _rbits) >> _sptr1);}
-
-    u_int32_ba  range     (u_int8_t eptr,
-                           u_int8_t sptr) {return u_int32_ba(*this,eptr,sptr);}
-
-private:
-    u_int32_ba(u_int32_ba& other, u_int8_t eptr, u_int8_t sptr) :
-    _bits(other._bits),
-    _rbits(other._bits),
-    _sptr1(sptr),
-    _eptr(eptr) {}
-
-    u_int32_t  mask       () {
-        u_int32_t s_msk = (u_int32_t)-1; // start mask
-        u_int32_t e_msk = (u_int32_t)-1; // end mask
-
-        s_msk = (s_msk << _sptr1);
-        e_msk = (_eptr >= (sizeof(_bits)*8-1)) ? e_msk : ~(e_msk << (_eptr+1));
-
-        return(s_msk & e_msk);
-    };
-
-    u_int32_t  _bits;
-    u_int32_t& _rbits;
-
-    u_int8_t   _sptr1;
-    u_int8_t   _eptr;
-};
-
-//////////////////////////////////////////////////////////////////////
-//
-//  class Aligner:
-//  A utillity class for accessing an addr/size region
-//  in a specific alignment.
-//  If a 0 alignment is given, infinity (no alignment requirements)
-//  is assumed - This is to support single flow for the caller.
-//
-//////////////////////////////////////////////////////////////////////
-
-class Aligner {
-public:
-    Aligner(u_int32_t log2_alignment_size) :
-    _curr_addr(0),
-    _curr_size(0),
-    _log2_alignment_size(log2_alignment_size),
-    _alignment_size(1 << log2_alignment_size),
-    _alignment_mask(_alignment_size - 1)
-    {
-        if (_log2_alignment_size == 0) {
-            _log2_alignment_size = 31;
-            _alignment_size      = 1 << _log2_alignment_size;
-            _alignment_mask      = _alignment_size - 1;
-        }
-    }
-
-    void Init        (u_int32_t  addr, u_int32_t  size) {
-        _curr_addr = addr;
-        _curr_size = size;
-    }
-
-    bool GetNextChunk(u_int32_t& chunk_addr, u_int32_t& chunk_size) {
-        if (_curr_size == 0) {
-            return false;
-        }
-
-        chunk_addr = _curr_addr;
-
-        if ( (_curr_addr               >> _log2_alignment_size) !=
-             ((_curr_addr + _curr_size) >> _log2_alignment_size)) {
-            // Next chunk crosses alignment boundary
-            chunk_size = _alignment_size - (_curr_addr & _alignment_mask);
-        } else {
-            chunk_size = _curr_size;
-        }
-
-        _curr_addr += chunk_size;
-        _curr_size -= chunk_size;
-
-        return true;
-    }
-
-private:
-    u_int32_t _curr_addr;
-    u_int32_t _curr_size;
-    u_int32_t _log2_alignment_size;
-    u_int32_t _alignment_size;
-    u_int32_t _alignment_mask;
-};
-
-#endif
-
diff --git a/mlxfwops/lib/flint_io.cpp b/mlxfwops/lib/flint_io.cpp
deleted file mode 100755 (executable)
index db5b9ec..0000000
+++ /dev/null
@@ -1,903 +0,0 @@
-/*
- *
- * flint_io.cpp - FLash INTerface
- *
- * Copyright (c) 2011 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id: flint_io.cpp 7522 2011-11-16 15:37:21Z mohammad $
- *
- */
-
-#include <errno.h>
-#include "flint_io.h"
-
-
-extern bool _no_erase;
-extern bool _no_burn;
-
-extern const char* g_sectNames[];
-
-#ifdef UEFI_BUILD
-// no signal handling.
-void mft_signal_set_handling(int isOn) {
-       return;
-}
-#endif
-
-////////////////////////////////////////////////////////////////////////
-//
-// FImage Class Implementation
-//
-////////////////////////////////////////////////////////////////////////
-
-bool FImage::open(const char *fname, bool read_only, bool advErr)
-{
-
-#ifndef UEFI_BUILD
-    int                fsize;
-    FILE              *fh;
-
-    (void)read_only;  // FImage can be opened only for read so we ignore compiler warnings
-    _advErrors = advErr;
-
-    fh = fopen(fname, "rb");
-
-    if (!fh) {
-        return errmsg("Can not open file \"%s\" - %s", fname, strerror(errno));
-    }
-
-    // Get the file size:
-    if (fseek(fh, 0, SEEK_END) < 0) {
-        fclose(fh);
-        return errmsg("Can not get file size for \"%s\" - %s", fname, strerror(errno));
-    }
-
-    fsize = ftell(fh);
-    if (fsize < 0) {
-        fclose(fh);
-        return errmsg("Can not get file size for \"%s\" - %s", fname, strerror(errno));
-    }
-    rewind(fh);
-
-    //printf("-D- %s size is %d\n", fname, fsize);
-    if (fsize & 0x3) {
-        fclose(fh);
-        return errmsg("Image size should be 4-bytes aligned. Make sure file %s is in the right format (binary image)",
-                      fname);
-    }
-
-    _fname = fname;
-    _len = fsize;
-    _isFile = true;
-    fclose(fh);
-    return true;
-#else
-    return false;
-#endif
-} // FImage::open
-
-bool FImage::open(u_int32_t *buf, u_int32_t len, bool advErr)
-{
-    _buf = new u_int32_t[len / 4];
-    memcpy(_buf, buf, len);
-    _len = len;
-    _advErrors = advErr;
-    return true;
-}
-////////////////////////////////////////////////////////////////////////
-void FImage::close()
-{
-    delete [] _buf;
-    _buf = 0;
-} // FImage::close
-
-/////////////////////////////////////////////////////////////////////////
-u_int32_t* FImage::getBuf()
-{
-    if (_isFile) {
-        // Read the entire file on demand
-        FILE* fh = fopen(_fname, "rb");
-        int r_cnt;
-        u_int32_t* retBuf;
-        if (!fh) {
-            errmsg("Can not open file \"%s\" - %s", _fname, strerror(errno));
-            return (u_int32_t*)NULL;
-        }
-        _buf = new u_int32_t[_len/4];
-        if ((r_cnt = fread(_buf, 1, _len, fh)) != (int)_len) {
-            if (r_cnt < 0) {
-                errmsg("Read error on file \"%s\" - %s",_fname, strerror(errno));
-                retBuf = (u_int32_t*)NULL;
-                goto cleanup;
-            } else {
-                errmsg("Read error on file \"%s\" - read only %d bytes (from %ld)",
-                        _fname, r_cnt, (unsigned long)_len);
-                retBuf = (u_int32_t*)NULL;
-                goto cleanup;
-            }
-        }
-        _isFile = false;
-        retBuf = _buf;
-    cleanup:
-        fclose(fh);
-        if (!retBuf) {
-            delete[] _buf;
-        }
-        return retBuf;
-    } else {
-        return _buf;
-    }
-}
-
-////////////////////////////////////////////////////////////////////////
-bool FImage::read(u_int32_t addr, u_int32_t *data)
-{
-    return read(addr, data, 4);
-} // FImage::read
-
-////////////////////////////////////////////////////////////////////////
-bool FImage::read(u_int32_t addr, void *data, int len, bool, const char*)
-{
-
-    if (addr & 0x3) {
-        return errmsg("Address should be 4-bytes aligned.");
-    }
-    if (len & 0x3) {
-        return errmsg("Length should be 4-bytes aligned.");
-    }
-    if (!_isFile && !_buf) {
-        return errmsg("read() when not opened");
-    }
-
-    if (cont2phys(addr + len) > _len) {
-        return errmsg("Reading 0x%x bytes from %s address 0x%x is out of image limits (0x%x bytes)",
-                      len,
-                      _log2_chunk_size ? "physical " : "",
-                      addr,
-                      _len);
-    }
-
-    u_int32_t chunk_addr;
-    u_int32_t chunk_size;
-    Aligner align(_log2_chunk_size);
-    align.Init (addr, len);
-    while (align.GetNextChunk(chunk_addr, chunk_size)) {
-        u_int32_t phys_addr = cont2phys(chunk_addr);
-        if (_isFile) {
-            FILE* fh = fopen(_fname, "rb");
-            if (!fh) {
-                return errmsg("Can not open file \"%s\" - %s", _fname, strerror(errno));
-            }
-            fseek(fh, phys_addr, SEEK_SET);
-            if (fread((u_int8_t*)data + (chunk_addr - addr), chunk_size, 1, fh) != 1) {
-                fclose(fh);
-                return errmsg("Failed to read from FW file, offset: %#x - %s", phys_addr, strerror(errno));
-            }
-            fclose(fh);
-        } else {
-            memcpy((u_int8_t*)data + (chunk_addr - addr),
-               (u_int8_t*)_buf +  phys_addr,
-               chunk_size);
-        }
-    }
-
-    return true;
-} // FImage::read
-
-////////////////////////////////////////////////////////////////////////
-u_int32_t FImage::get_sector_size()
-{
-    u_int32_t log2_sector_sz_ptr;
-    u_int32_t log2_sector_sz;
-    u_int32_t signature;
-
-    read(0x24, &signature);
-    TOCPU1(signature);
-    if (signature == SIGNATURE) {
-        // full image:
-        read(0x14, &log2_sector_sz_ptr);
-        TOCPU1(log2_sector_sz_ptr);
-        log2_sector_sz_ptr &= 0xffff;
-
-        read(0x30 + log2_sector_sz_ptr, &log2_sector_sz);
-        TOCPU1(log2_sector_sz);
-        log2_sector_sz &= 0xffff;
-
-        return(1 << log2_sector_sz);
-
-    } else {
-        return 0;
-    }
-}
-
-
-
-////////////////////////////////////////////////////////////////////////
-//
-// Flash Class Implementation
-//
-////////////////////////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////////////////////////
-bool Flash::open_com_checks(const char *device, int rc, bool force_lock)
-{
-    if ((rc == MFE_SEM_LOCKED) && force_lock) {
-        report("Warning: Taking flash lock even though semaphore is set.\n");
-        rc = mf_open_ignore_lock(_mfl);
-    }
-
-    if (rc != MFE_OK) {
-        if (rc == MFE_SEM_LOCKED) {
-            return errmsgAdv(_advErrors, "Can not obtain Flash semaphore.", "You can run \"flint -clear_semaphore -d <device>\" to force semaphore unlock. See help for details.");
-        }
-        if (rc == MFE_LOCKED_CRSPACE) {
-            _cr_space_locked = 1;
-            return errmsgAdv(_advErrors, "HW access is disabled on the device.", "\n-E- Run \"flint -d %s hw_access enable\" in order to enable HW access.", device);
-        }
-        if (rc == MFE_REG_ACCESS_NOT_SUPPORTED) {
-            return errmsgAdv(_advErrors, "The target device FW does not support flash access commands.", "\n-E- Please use the -override_cache_replacement option in order to access the flash directly.");
-        }
-        if (rc == MFE_DIRECT_FW_ACCESS_DISABLED) {
-            return errmsgAdv(_advErrors, "Flash cache replacement is active.", "\n-E- Please use the -override_cache_replacement option in order to access the flash directly.");
-        }
-
-        return errmsg("%s%s%s", errno == 0 ? "" : strerror(errno),  errno == 0 ? "" : ". ", mf_err2str(rc));
-    }
-
-    rc = mf_get_attr(_mfl, &_attr);
-    if (rc != MFE_OK) {
-        return errmsg("Failed getting flash attributes for device %s: %s", device,  mf_err2str(rc));
-    }
-    _curr_sector_size = _attr.sector_size;
-
-    rc = mf_set_opt(_mfl, MFO_NO_VERIFY, _no_flash_verify? 1: 0);
-    if (rc != MFE_OK) {
-        return errmsg("Failed setting no flash verify on device: %s", mf_err2str(rc));
-    }
-
-
-    if (_attr.hw_dev_id == IS4_HW_ID || _attr.hw_dev_id == SWITCHX_HW_ID) {
-        _port_num = 0;
-    } else {
-        _port_num = 2;
-    }
-    return true;
-}
-
-bool Flash::set_no_flash_verify(bool val) {
-    int rc;
-    if (_mfl) {
-        rc = mf_set_opt(_mfl, MFO_NO_VERIFY, val? 1: 0);
-        if (rc != MFE_OK) {
-            return errmsg("Failed setting no flash verify on device: %s", mf_err2str(rc));
-            }
-    }
-    _no_flash_verify = val;
-    return true;
-}
-
-// Flash::open
-
-
-////////////////////////////////////////////////////////////////////////
-bool Flash::open(const char *device, bool force_lock, bool read_only, int num_of_banks, flash_params_t *flash_params,
-        int ignore_cashe_replacement, bool advErr, int cx3_fw_access)
-{
-    // Open device
-    int rc;
-    _advErrors = advErr;
-    _ignore_cache_replacement = ignore_cashe_replacement ? true : false;
-    (void)read_only; // not used , avoid compiler warnings TODO: remove this var from function def
-    rc = mf_open_adv(&_mfl, device, num_of_banks, flash_params, ignore_cashe_replacement, cx3_fw_access);
-    //printf("device: %s , forceLock: %s , read only: %s, num of banks: %d, flash params is null: %s, ocr: %d, rc: %d\n",
-    //         device, force_lock? "true":"false", read_only?"true":"false", num_of_banks, flash_params? "no":"yes", ignore_cashe_replacement, rc);
-    return open_com_checks(device, rc, force_lock);
-}
-
-////////////////////////////////////////////////////////////////////////
-bool Flash::open(uefi_Dev_t *uefi_dev, uefi_dev_extra_t* uefi_extra, bool force_lock, bool advErr)
-{
-    int rc;
-    _advErrors = advErr;
-    rc = mf_open_uefi(&_mfl, uefi_dev, uefi_extra);
-    return open_com_checks("uefi", rc, force_lock);
-}
-
-
-////////////////////////////////////////////////////////////////////////
-void Flash::close()
-{
-    if (!_mfl)
-        return;
-
-    mf_close(_mfl);
-    _mfl = 0;
-} // Flash::close
-
-bool Flash::read(u_int32_t addr,
-                 u_int32_t *data) {
-    int rc;
-
-    u_int32_t phys_addr = cont2phys(addr);
-    // printf("-D- read1: addr = %#x, phys_addr = %#x\n", addr, phys_addr);
-    // here we set a "silent" signal handler and deal with the recieved signal after the read
-    mft_signal_set_handling(1);
-    rc = mf_read(_mfl, phys_addr, 4, (u_int8_t*)data);
-    deal_with_signal();
-    if (rc != MFE_OK) {
-        return errmsg("Flash read failed at address %s0x%x : %s",
-                      _log2_chunk_size ? "physical " : "",
-                      addr,
-                      mf_err2str(rc));
-    }
-
-    return true;
-}
-
-////////////////////////////////////////////////////////////////////////
-bool Flash::read(u_int32_t addr, void *data, int len, bool verbose, const char* message)
-{
-    int rc;
-    if (addr & 0x3) {
-        return errmsg("Address should be 4-bytes aligned.");
-    }
-    if (len & 0x3) {
-        return errmsg("Length should be 4-bytes aligned.");
-    }
-
-    // Much better perf for read in a single chunk. need to work on progress report though.
-    bool read_in_single_chunk = true;
-
-    if (read_in_single_chunk) {
-        u_int32_t chunk_addr;
-        u_int32_t chunk_size;
-
-        Aligner align(_log2_chunk_size);
-        align.Init (addr, len);
-        while (align.GetNextChunk(chunk_addr, chunk_size)) {
-            u_int32_t phys_addr = cont2phys(chunk_addr);
-            // printf("-D- write: addr = %#x, phys_addr = %#x\n", chunk_addr, phys_addr);
-            mft_signal_set_handling(1);
-            rc = mf_read(_mfl, phys_addr, chunk_size, ((u_int8_t*)data) + chunk_addr - addr);
-            deal_with_signal();
-            if (rc != MFE_OK) {
-                return errmsg("Flash read failed at address %s0x%x : %s",
-                              _log2_chunk_size ? "physical " : "",
-                              chunk_addr,
-                              mf_err2str(rc));
-            }
-        }
-
-    }
-    else {
-        u_int32_t  perc = 0xffffffff;
-        u_int32_t *p = (u_int32_t *)data;
-        for (int i=0; i<len/4; i++) {
-            if (!read(addr, p++))
-                return false;
-
-            addr += 4;
-
-            // Report
-            if (verbose) {
-                u_int32_t new_perc = (i * 100) / len;
-                if (new_perc != perc) {
-                    printf("\r%s%%%03d", message, new_perc);
-                    fflush(stdout);
-
-                    perc = new_perc;
-                }
-            }
-        }
-    }
-
-    // Report
-    if (verbose) {
-        printf("\r%s%%100", message);
-        fflush(stdout);
-    }
-
-    return true;
-} // Flash::read
-#define DISABLE_CONVERTOR(log2_chunk_size_bak, is_image_in_odd_chunks_bak) {\
-    log2_chunk_size_bak = _log2_chunk_size;\
-    is_image_in_odd_chunks_bak = _is_image_in_odd_chunks;\
-    set_address_convertor(0, 0);\
-}
-
-#define NATIVE_PHY_ADDR_FUNC(func, arg) {\
-       bool ret = true;\
-       u_int32_t log2_chunk_size_bak, is_image_in_odd_chunks_bak;\
-       DISABLE_CONVERTOR(log2_chunk_size_bak, is_image_in_odd_chunks_bak);\
-       ret = func arg;\
-       set_address_convertor(log2_chunk_size_bak, is_image_in_odd_chunks_bak);\
-       return ret;\
-}
-bool FBase::read_phy (u_int32_t phy_addr, u_int32_t* data)
-{
-    NATIVE_PHY_ADDR_FUNC(read, (phy_addr, data));
-}
-
-bool FBase::read_phy (u_int32_t phy_addr, void* data, int len)
-{
-    NATIVE_PHY_ADDR_FUNC(read, (phy_addr, data, len));
-}
-
-bool Flash::write_phy(u_int32_t phy_addr, u_int32_t data)
-{
-    NATIVE_PHY_ADDR_FUNC(write, (phy_addr, data));
-}
-
-bool Flash::write_phy(u_int32_t phy_addr, void* data, int cnt, bool noerase)
-{
-    // Avoid warning
-    (void)noerase;
-    NATIVE_PHY_ADDR_FUNC(write, (phy_addr, data, cnt));
-}
-
-bool Flash::read_modify_write_phy(u_int32_t phy_addr, void* data, int cnt, bool noerase)
-{
-    // Avoid warning
-    (void)noerase;
-    NATIVE_PHY_ADDR_FUNC(write_with_erase, (phy_addr, data, cnt));
-}
-
-bool Flash::read_modify_write(u_int32_t phy_addr, void* data, int cnt, bool noerase)
-{
-    // Avoid warning
-    (void)noerase;
-    return write_with_erase(phy_addr, data, cnt);
-}
-
-bool Flash::erase_sector_phy  (u_int32_t phy_addr)
-{
-    NATIVE_PHY_ADDR_FUNC(erase_sector, (phy_addr));
-}
-
-
-////////////////////////////////////////////////////////////////////////
-bool Flash::write  (u_int32_t addr,
-                    void*     data,
-                    int       cnt,
-                    bool      noerase)
-{
-    // FIX:
-    noerase = _no_erase || noerase;
-
-    if (!_mfl) {
-        return errmsg("Not opened");
-    }
-    if (addr & 0x3) {
-        return errmsg("Address should be 4-bytes aligned.");
-    }
-
-
-    if (cont2phys(addr + cnt) > get_size()) {
-        return errmsg(
-                     "Trying to write %d bytes to address 0x%x, which exceeds max image size (0x%x - half of total flash size).",
-                     cnt,
-                     addr,
-                     get_size() / 2);
-    }
-
-    u_int8_t         *p = (u_int8_t *)data;
-    u_int32_t sect_size = get_current_sector_size();
-
-    u_int32_t chunk_addr;
-    u_int32_t chunk_size;
-
-    u_int32_t first_set;
-    for (first_set = 0; ((sect_size >> first_set) & 1) == 0; first_set++ )
-        ;
-
-    Aligner align(first_set);
-    align.Init (addr, cnt);
-    while (align.GetNextChunk(chunk_addr, chunk_size)) {
-        // Write / Erase in sector_size alligned chunks
-        int rc;
-
-        if (!noerase) {
-            u_int32_t sector = (chunk_addr / sect_size) * sect_size;
-            if (sector != _curr_sector) {
-                _curr_sector = sector;
-                if (!erase_sector(_curr_sector)) {
-                    return false;
-                }
-
-            }
-        }
-
-        if (_no_burn)
-            continue;
-
-        // Actual write:
-        u_int32_t phys_addr = cont2phys(chunk_addr);
-        // printf("-D- write: addr = %#x, phys_addr = %#x\n", chunk_addr, phys_addr);
-        mft_signal_set_handling(1);
-        rc = mf_write(_mfl, phys_addr, chunk_size, p);
-        deal_with_signal();
-
-        if (rc != MFE_OK) {
-            if (rc == MFE_ICMD_BAD_PARAM || rc == MFE_REG_ACCESS_BAD_PARAM) {
-                return errmsg("Flash write of %d bytes to address %s0x%x failed: %s\n"
-                          "    This may indicate that a FW image was already updated on flash, but not loaded by the device.\n"
-                          "    Please load FW on the device (reset device or reboot machine) before burning a new FW.",
-                          chunk_size,
-                          _log2_chunk_size ? "physical " : "",
-                          chunk_addr,
-                          mf_err2str(rc));
-
-            } else {
-                return errmsg("Flash write of %d bytes to address %s0x%x failed: %s",
-                          chunk_size,
-                          _log2_chunk_size ? "physical " : "",
-                          chunk_addr,
-                          mf_err2str(rc));
-            }
-        }
-
-        // Loop advance
-        p    += chunk_size;
-    }
-
-    return true;
-}
-
-
-////////////////////////////////////////////////////////////////////////
-bool Flash::write(u_int32_t addr, u_int32_t data)
-{
-    u_int32_t word;
-
-    if (!_mfl) {
-        return errmsg("Not opened");
-    }
-    if (addr & 0x3) {
-        return errmsg("Address should be 4-bytes aligned.");
-    }
-    if (!read(addr, &word)) {
-        return false;
-    }
-    if (word == data) {
-        return true;   // already there
-    }
-    return write_sector_with_erase(addr, &data, 4);
-}
-
-bool Flash::write_sector_with_erase(u_int32_t addr, void *data, int cnt)
-{
-    u_int32_t sector_size = get_current_sector_size();
-    u_int32_t sector_mask = ~(sector_size - 1);
-
-    u_int32_t sector = addr & sector_mask;
-    u_int32_t offest_in_bytes = (addr & ~sector_mask);
-    u_int32_t word_in_sector = offest_in_bytes / sizeof(u_int32_t);
-
-    if (offest_in_bytes + cnt > sector_size) {
-        return errmsg("data exceeds current sector");
-    }
-
-    vector<u_int32_t> buff(sector_size/sizeof(u_int32_t));
-    if (!read(sector, &buff[0] , sector_size)) {
-        return false;
-    }
-    if (!erase_sector(sector)) {
-            return false;
-    }
-
-    memcpy(&buff[word_in_sector], data, cnt);
-
-    // no need to erase twice noerase=true
-    return write(sector, &buff[0], sector_size, true);
-}
-
-bool Flash::write_with_erase(u_int32_t addr, void *data, int cnt)
-{
-    u_int32_t towrite = (u_int32_t)cnt;
-    u_int32_t currSize;
-    u_int32_t currAddr = addr;
-    u_int32_t alreadyWritten = 0;
-    u_int32_t sizeUntillEndOfSector = 0;
-    u_int32_t sector_size = get_current_sector_size();
-    while (towrite > 0) {
-        sizeUntillEndOfSector = sector_size - (currAddr & (sector_size - 1));
-        currSize = towrite >  sizeUntillEndOfSector ? sizeUntillEndOfSector : towrite;
-        if (!write_sector_with_erase(currAddr, ((u_int8_t*)data + alreadyWritten), currSize)) {
-            return false;
-        }
-        towrite -= currSize;
-        currAddr += currSize;
-        alreadyWritten += currSize;
-    }
-    return true;
-}
-
-bool Flash::erase_sector  (u_int32_t addr) {
-    int rc;
-    u_int32_t phys_addr = cont2phys(addr);
-    mft_signal_set_handling(1);
-    if (_flash_working_mode == Flash::Fwm_4KB) {
-        rc = mf_erase_4k_sector(_mfl, phys_addr);
-    } else if (_flash_working_mode == Flash::Fwm_64KB) {
-        rc = mf_erase_64k_sector(_mfl, phys_addr);
-    } else {
-        rc = mf_erase(_mfl, phys_addr);
-    }
-    deal_with_signal();
-    if (rc != MFE_OK) {
-        if (rc == MFE_REG_ACCESS_RES_NOT_AVLBL || rc == MFE_REG_ACCESS_BAD_PARAM) {
-            return errmsg("Flash erase of address 0x%x failed: %s\n"
-                          "    This may indicate that a FW image was already updated on flash, but not loaded by the device.\n"
-                          "    Please load FW on the device (reset device or restart driver) before burning a new FW.",
-                          phys_addr,
-                          mf_err2str(rc));
-        } else {
-            return errmsg("Flash erase of address 0x%x failed: %s",
-                          phys_addr,
-                          mf_err2str(rc));
-        }
-    }
-
-    return true;
-}
-
-bool Flash::enable_hw_access(u_int64_t key)
-{
-    int rc;
-    rc = mf_enable_hw_access(_mfl, key);
-
-    if (rc != MFE_OK) {
-        return errmsg("Enable HW access failed: %s", mf_err2str(rc));
-    }
-    return true;
-}
-
-bool Flash::disable_hw_access(void)
-{
-    int rc;
-    rc = mf_disable_hw_access(_mfl);
-
-    if (rc != MFE_OK) {
-        return errmsg("Disable HW access failed: %s", mf_err2str(rc));
-    }
-    return true;
-
-}
-
-bool Flash::sw_reset() {
-    int rc = mf_sw_reset(_mfl);
-    if (rc != MFE_OK) {
-        if (rc == MFE_UNSUPPORTED_DEVICE) {
-            return errmsg("operation supported only for InfiniScale4 switch, SwitchX and SwitchIB over IB interface");
-        }
-        return errmsg("%s (%s)", errno == 0 ? "" : strerror(errno), mf_err2str(rc));
-    }
-    return true;
-}
-
-
-bool Flash::get_attr(ext_flash_attr_t& attr) {
-    attr.banks_num = _attr.banks_num;
-    attr.hw_dev_id = _attr.hw_dev_id;
-    attr.rev_id = _attr.rev_id;
-    if (_attr.type_str != NULL) {
-        // we don't print the flash type in old devices
-        attr.type_str = strcpy(new char[strlen(_attr.type_str)+1], _attr.type_str);
-    }
-    attr.size = _attr.size;
-    attr.sector_size = _attr.sector_size;
-    attr.block_write = _attr.block_write;
-    attr.command_set = _attr.command_set;
-    attr.quad_en_support = _attr.quad_en_support;
-    attr.dummy_cycles_support = _attr.dummy_cycles_support;
-    // Quad EN query
-    if (_attr.quad_en_support) {
-        attr.mf_get_quad_en_rc = (MfError)mf_get_quad_en(_mfl, &attr.quad_en);
-    }
-    // Dummy Cycles query
-    if (_attr.dummy_cycles_support) {
-       attr.mf_get_dummy_cycles_rc = (MfError)mf_get_dummy_cycles(_mfl, &attr.dummy_cycles);
-    }
-
-    // Flash write protected info query
-    attr.write_protect_support = _attr.write_protect_support;
-    if (_attr.write_protect_support) {
-        int bank;
-        for (bank = 0; bank < _attr.banks_num; bank++) {
-            attr.mf_get_write_protect_rc_array[bank] = (MfError)mf_get_write_protect(_mfl, bank, &attr.protect_info_array[bank]);
-        }
-    }
-    return true;
-}
-
-const char* Flash::getFlashType() {
-    if (_attr.type_str != NULL) {
-       return _attr.type_str;
-    }
-    return (const char*)NULL;
-}
-
-#define GET_IN_PARAM(param_in, out, first_op, second_op) {\
-    if (!strcmp(param_in, first_op)) {\
-        out = 1;\
-    } else if (!strcmp(param_in, second_op)) {\
-        out = 0;\
-    } else {\
-        return errmsg("bad argument (%s) it can be " first_op " or " second_op "", param_in);\
-    }\
-}
-bool  Flash::set_attr(char *param_name, char *param_val_str)
-{
-    int rc;
-    //TODO: make generic function that sets params
-    if (!strcmp(param_name, QUAD_EN_PARAM)) {
-        char* endp;
-        u_int8_t quad_en_val;
-        quad_en_val = strtoul(param_val_str, &endp, 0);
-        if (*endp != '\0' || quad_en_val > 1) {
-            return errmsg("Bad " QUAD_EN_PARAM " value (%s), it can be 0 or 1\n", param_val_str);
-        }
-        rc = mf_set_quad_en(_mfl, quad_en_val);
-        if (rc != MFE_OK) {
-            return errmsg("Setting " QUAD_EN_PARAM " failed: (%s)", mf_err2str(rc));
-        }
-    } else if (!strcmp(param_name, DUMMY_CYCLES_PARAM)) {
-        char* endp;
-        u_int8_t dummy_cycles_val;
-        dummy_cycles_val = strtoul(param_val_str, &endp, 0);
-        if (*endp != '\0' || dummy_cycles_val < 1 || dummy_cycles_val > 15) {
-               // value is actually [0.15] but val=0 and val=15 indicate default state (thus they are the same so no need for both values to be accepted)
-            return errmsg("Bad " DUMMY_CYCLES_PARAM " value (%s), it can be [1..15]\n", param_val_str);
-        }
-        rc = mf_set_dummy_cycles(_mfl, dummy_cycles_val);
-        if (rc != MFE_OK) {
-            return errmsg("Setting " DUMMY_CYCLES_PARAM " failed: (%s)", mf_err2str(rc));
-        }
-    } else if (strstr(param_name, FLASH_NAME) == param_name) {
-        char *flash_param, *param_str, *endp, *bank_num_str;
-        u_int8_t bank_num;
-        flash_param = strtok(param_name, ".");
-        param_str   = strtok((char*)NULL, ".");
-        bank_num_str = flash_param + strlen(FLASH_NAME);
-        bank_num = strtoul(bank_num_str, &endp, 0);
-        if (*endp != '\0') {
-            return errmsg("bad number of flash bank (%s), it should be integer!.", bank_num_str);
-        }
-        if (!strcmp(param_str, WRITE_PROTECT)) {
-            write_protect_info_t protect_info;
-            char *tb, *num_str, *sec;
-            if (!strcmp(param_val_str, WP_DISABLED_STR)) {
-                memset(&protect_info, 0, sizeof(protect_info));
-            } else {
-                tb = strtok(param_val_str, ",");
-                num_str = strtok((char*)NULL, "-");
-                sec = strtok((char*)NULL, "");
-                if (tb == NULL || num_str == NULL || sec == NULL) {
-                    return errmsg("missing parameters for setting the " WRITE_PROTECT " attribute, see help for more info.");
-                }
-                GET_IN_PARAM(tb, protect_info.is_bottom, WP_BOTTOM_STR, WP_TOP_STR);
-                GET_IN_PARAM(sec, protect_info.is_subsector, WP_SUBSEC_STR, WP_SEC_STR);
-
-                protect_info.sectors_num = strtoul(num_str, &endp, 0);
-                if (*endp != '\0') {
-                    return errmsg("bad argument (%s), only integer value is allowed.", num_str);
-                }
-           }
-            rc = mf_set_write_protect(_mfl, bank_num, &protect_info);
-            if (rc != MFE_OK) {
-                return errmsg("Setting " WRITE_PROTECT " failed: (%s)", mf_err2str(rc));
-            }
-        } else {
-            return errmsg("Unknown attribute %s.%s", flash_param, param_str);
-        }
-
-
-    } else {
-        return errmsg("Unknown attribute %s", param_name);
-    }
-    return true;
-}
-
-bool Flash::is_flash_write_protected()
-{
-    int bank;
-    int rc;
-    write_protect_info_t protect_info;
-
-    if (_attr.write_protect_support) {
-        for (bank = 0; bank < _attr.banks_num; bank++) {
-            rc = mf_get_write_protect(_mfl, bank, &protect_info);
-            if (rc == MFE_OK && protect_info.sectors_num != 0) {
-                return true;
-            } else {
-                if (rc && rc != MFE_NOT_SUPPORTED_OPERATION) { // We ignore when operation is not supported
-                    return true;
-                }
-            }
-       }
-    }
-    return false;
-}
-
-void Flash::deal_with_signal()
-{
-#ifndef UEFI_BUILD
-    int sig;
-    sig = mft_signal_is_fired();
-    if (sig) {
-        // reset recieved signal
-        mft_signal_set_fired(0);
-        // retore prev handler
-        mft_signal_set_handling(0);
-        //raise signal to let the previous handle deal with it.
-        raise(sig);
-    }
-    mft_signal_set_handling(0);
-#endif
-    return;
-}
-
-#define FLINT_ERASE_SIZE_HOOK "FLINT_ERASE_SIZE"
-bool Flash::set_flash_working_mode(int mode)
-{
-    if (!_attr.support_sub_and_sector && mode != Flash::Fwm_Default) {
-        return errmsg("Changing Flash IO working mode not supported.");
-    }
-    // Verification Hook
-    if (_attr.support_sub_and_sector) {
-        char* flint_io_env = getenv(FLINT_ERASE_SIZE_HOOK);
-        if (flint_io_env) {
-            int num =  strtoul(flint_io_env, (char**)NULL, 0);
-            if (num == 0x1000 || num == 0x10000) {
-                _curr_sector_size = (u_int32_t)num;
-                _flash_working_mode = _curr_sector_size == 0x1000 ? Flash::Fwm_4KB : Flash::Fwm_64KB;
-                _curr_sector = _curr_sector & ~(_curr_sector_size - 1);
-                return true;
-            }
-        }
-    }
-    // Verification Hook end
-
-    if (mode == Flash::Fwm_Default) {
-        _curr_sector_size = _attr.sector_size;
-        _flash_working_mode = Flash::Fwm_Default;
-    } else if (mode == Flash::Fwm_4KB) {
-        _curr_sector_size = 0x1000;
-        _flash_working_mode = Flash::Fwm_4KB;
-    } else if (mode == Flash::Fwm_64KB) {
-        _curr_sector_size = 0x10000;
-        _flash_working_mode = Flash::Fwm_64KB;
-    } else {
-        return errmsg("Unknown Flash IO working mode: 0x%x", mode);
-    }
-    _curr_sector = _curr_sector & ~(_curr_sector_size - 1);
-    return true;
-}
diff --git a/mlxfwops/lib/flint_io.h b/mlxfwops/lib/flint_io.h
deleted file mode 100755 (executable)
index e23c3ce..0000000
+++ /dev/null
@@ -1,375 +0,0 @@
-/*
- *
- * flint_io.h - FLash INTerface
- *
- * Copyright (c) 2011 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id: flint_io.h 7522 2011-11-16 15:37:21Z mohammad $
- *
- */
-#ifndef FLINT_IO_H
-#define FLINT_IO_H
-
-#ifdef __WIN__
-
-#ifdef MLXFWOP_EXPORTS
-#define MLXFWOP_API __declspec(dllexport)
-#else
-#define MLXFWOP_API __declspec(dllimport)
-#endif
-
-#else
-#define MLXFWOP_API
-#endif
-
-#include "flint_base.h"
-#include <mflash.h>
-
-#ifndef UEFI_BUILD
-#include <mft_sig_handler.h>
-#endif
-
-// external flash attr struct
-
-#define IO_MAX_BANKS_NUM 4
-
-typedef struct ext_flash_attr {
-    u_int8_t banks_num;
-    u_int32_t hw_dev_id;
-    u_int32_t rev_id;
-    char*   type_str; // NULL if not available
-    u_int32_t size;
-    u_int32_t sector_size; // minimal sec
-    int block_write;
-    int command_set;
-    u_int8_t quad_en_support;
-    u_int8_t dummy_cycles_support;
-
-    u_int8_t quad_en;
-    MfError mf_get_quad_en_rc;
-
-    u_int8_t dummy_cycles;
-    MfError mf_get_dummy_cycles_rc;
-
-    u_int8_t write_protect_support;
-
-    write_protect_info_t protect_info_array[IO_MAX_BANKS_NUM];
-    MfError mf_get_write_protect_rc_array[IO_MAX_BANKS_NUM];
-
-} ext_flash_attr_t;
-
-// Common base class for Flash and for FImage
-class MLXFWOP_API FBase : public FlintErrMsg {
-public:
-    FBase(bool is_flash) :
-    _is_image_in_odd_chunks(false),
-    _log2_chunk_size(0),
-    _is_flash(is_flash),
-    _advErrors(true) {}
-    virtual ~FBase()  {}
-
-    virtual bool open(const char *, bool, bool)                  {return false;}
-    virtual void close()                                   = 0;
-    virtual bool read(u_int32_t addr, u_int32_t *data)     = 0;
-    virtual bool read(u_int32_t addr, void *data, int len,
-                      bool verbose=false,
-                      const char* message = "")            = 0;
-
-    virtual u_int32_t get_sector_size()                    = 0;
-    virtual u_int32_t get_size()                           = 0;
-
-    virtual u_int32_t get_dev_id()                         = 0;
-    virtual u_int32_t get_rev_id()                         = 0;
-    Crc16&            get_image_crc() {return _image_crc;};
-    bool              is_flash() {return _is_flash;};
-
-    bool read_phy (u_int32_t phy_addr, void* data, int len);
-    bool read_phy (u_int32_t phy_addr, u_int32_t* data);
-
-    virtual void set_address_convertor(u_int32_t log2_chunk_size, bool is_image_in_odd_chunks) {
-        _log2_chunk_size = log2_chunk_size;
-        _is_image_in_odd_chunks = is_image_in_odd_chunks;
-    }
-    virtual u_int32_t get_phys_from_cont     (u_int32_t cont_addr, u_int32_t log2_chunk_size, bool is_image_in_odd_chunks) {
-        u_int32_t phys_addr;
-        u_int32_t log2_chunk_size_bak = _log2_chunk_size;
-        bool is_image_in_odd_chunks_bak = _is_image_in_odd_chunks;
-
-        set_address_convertor(log2_chunk_size, is_image_in_odd_chunks);
-        phys_addr = cont2phys(cont_addr);
-        set_address_convertor(log2_chunk_size_bak, is_image_in_odd_chunks_bak);
-        return phys_addr;
-    }
-
-    u_int32_t   get_log2_chunk_size(){return _log2_chunk_size;}
-    bool        get_is_image_in_odd_chunks(){return _is_image_in_odd_chunks;}
-
-    enum {
-        MAX_FLASH = 4*1048576
-    };
-
-protected:
-
-    // Address translation functions for ConnectX.
-    // Translate between contiguous "logical" addresses
-
-    // If Failsafe zebra mapping is enabled:
-
-    // Result is concatenation of:
-    // The lower log2_chunk_size bits of the cons_addr
-    // The is_image_in_odd_chunk bit
-    // The remaining upper bits of the cons_addr
-
-    u_int32_t cont2phys(u_int32_t cont_addr) {
-        u_int32_t result;
-        if (_log2_chunk_size) {
-            result  = (cont_addr       & (0xffffffff >> (32 - _log2_chunk_size))) |
-                      (_is_image_in_odd_chunks       << _log2_chunk_size)         |
-                      ((cont_addr << 1) & (0xffffffff << (_log2_chunk_size + 1)));
-        } else {
-            result = cont_addr;
-        }
-        return result;
-    }
-
-    u_int32_t phys2cont(u_int32_t phys_addr) {
-        u_int32_t result;
-        if (_log2_chunk_size) {
-            result =  (phys_addr       & (0xffffffff >> (32 - _log2_chunk_size)))  |
-                      ((phys_addr >> 1) & (0xffffffff << (     _log2_chunk_size)));
-        } else {
-            result = phys_addr;
-        }
-        return result;
-    }
-
-    bool       _is_image_in_odd_chunks;
-    u_int32_t  _log2_chunk_size;
-    Crc16      _image_crc;
-    const bool _is_flash;
-    // show advanced error msgs
-    bool _advErrors;
-
-};
-
-
-
-
-// Flash image (R/W)
-class MLXFWOP_API FImage : public FBase {
-public:
-    FImage() :
-    FBase(false),
-    _fname(0),
-    _buf(0),
-    _isFile(false),
-    _len(0) {}
-    virtual ~FImage() { close();}
-
-    u_int32_t    *getBuf();
-    u_int32_t    getBufLength() { return _len;}
-    virtual bool open(const char *fname, bool read_only = false, bool advErr = true);
-    using FBase::open;
-    bool open(u_int32_t *buf, u_int32_t len, bool advErr = true);
-    virtual void close();
-    virtual bool read(u_int32_t addr, u_int32_t *data);
-    virtual bool read(u_int32_t addr, void *data, int len, bool verbose=false, const char* message= "");
-
-    virtual u_int32_t get_sector_size();
-    virtual u_int32_t get_size()     { return  getBufLength();}
-    virtual u_int32_t get_dev_id()   { return  0;}
-    virtual u_int32_t get_rev_id()   { return  0;}
-private:
-    const char*     _fname;
-    u_int32_t *_buf;
-    bool      _isFile;
-    u_int32_t _len;
-};
-
-
-
-
-//
-// Flash access (R/W)
-//
-
-
-
-
-class MLXFWOP_API Flash : public FBase {
-public:
-    Flash() :
-    FBase(true),
-    _mfl((mflash*)NULL),
-    _no_flash_verify(false),
-    _ignore_cache_replacement(false),
-    _curr_sector(0xffffffff),
-    _curr_sector_size(0),
-    _port_num(0),
-    _cr_space_locked(0),
-    _flash_working_mode(Flash::Fwm_Default)
-    {
-        memset(&_attr, 0, sizeof(_attr));
-    }
-
-    virtual ~Flash()  { close();};
-
-    // FBase Interface
-
-    virtual bool open          (const char *device,
-                                bool force_lock  = false,
-                                bool read_only   = false,
-                                int num_of_banks = 4,
-                                flash_params_t *flash_params = (flash_params_t *)NULL,
-                                int ignoe_cache_replacement = 0,
-                                bool advErr = true,
-                                int cx3_fw_access = 0);
-    using FBase::open;
-
-    bool open          (uefi_Dev_t *uefi_dev,
-                                       uefi_dev_extra_t* uefi_extra,
-                        bool force_lock = false,
-                        bool advErr = true);
-
-    virtual void close         ();
-
-    virtual bool read          (u_int32_t addr,
-                                u_int32_t *data);
-
-    virtual bool read          (u_int32_t addr,
-                                void*     data,
-                                int       len,
-                                bool      verbose = false,
-                                const char* message = "");
-    bool write_phy(u_int32_t phy_addr, void* data, int cnt, bool noerase = false); // read modify write
-    bool read_modify_write_phy(u_int32_t phy_addr, void* data, int cnt, bool noerase = false); // read modify write
-    bool write_phy(u_int32_t phy_addr, u_int32_t data); // read modify write
-    bool erase_sector_phy  (u_int32_t phy_addr);
-
-    bool         update_boot_addr (u_int32_t boot_addr)
-                                  {return mf_update_boot_addr(_mfl, boot_addr) == MFE_OK;}
-    //
-    // Flash Interface
-    //
-
-    u_int32_t get_current_sector_size ()  {return _curr_sector_size;}
-    u_int32_t get_sector_size()          {return _attr.sector_size;}
-    u_int32_t get_size               ()  {return _attr.size;}
-
-    u_int32_t get_dev_id             ()  {return _attr.hw_dev_id; }
-    u_int32_t get_rev_id             ()  {return _attr.rev_id; }
-    u_int32_t get_port_num           ()  {return _port_num;}
-    u_int8_t  get_cr_space_locked    ()  {return _cr_space_locked;}
-    bool  get_ignore_cache_replacment()  {return _ignore_cache_replacement;}
-
-    bool sw_reset();
-
-    bool set_no_flash_verify(bool val);
-    static void get_flash_list(char *flash_list) {return mf_flash_list(flash_list);}
-
-    // Write and Erase functions are performed by the Command Set
-
-    virtual bool erase_sector  (u_int32_t addr);
-
-    virtual bool write         (u_int32_t addr,
-                                void*     data,
-                                int       cnt,
-                                bool      noerase = false);
-
-    bool read_modify_write(u_int32_t phy_addr, void* data, int cnt, bool noerase=false);
-
-    virtual bool write         (u_int32_t addr,
-                                u_int32_t data);
-
-    virtual bool enable_hw_access(u_int64_t key);
-
-    virtual bool disable_hw_access();
-
-    const char* getFlashType();
-
-    bool         get_attr(ext_flash_attr_t& attr);
-
-    bool         set_attr(char *param_name,
-                          char *param_val_str);
-
-    bool flash_working_mode_supported() {return _attr.support_sub_and_sector;}
-    int get_flash_working_mode() {return _flash_working_mode;}
-    bool set_flash_working_mode(int mode=Flash::Fwm_Default);
-
-    bool is_flash_write_protected();
-    static void  deal_with_signal();
-
-    mfile* getMfileObj() {return mf_get_mfile(_mfl);}
-    mflash* getMflashObj() {return _mfl;}
-
-    enum {
-        TRANS = 4096
-    };
-
-    enum {
-        Fwm_Default = 0,
-        Fwm_4KB = 1,
-        Fwm_64KB = 2
-    };
-
-    bool open_com_checks(const char *device,
-                         int rc,
-                         bool force_lock);
-
-//needed for printing flash status in flint hw query cmd
-#define QUAD_EN_PARAM "QuadEn"
-#define DUMMY_CYCLES_PARAM "DummyCycles"
-#define FLASH_NAME "Flash"
-#define WRITE_PROTECT "WriteProtected"
-#define WP_TOP_STR "Top"
-#define WP_BOTTOM_STR "Bottom"
-#define WP_SEC_STR "Sectors"
-#define WP_SUBSEC_STR "SubSectors"
-#define WP_DISABLED_STR "Disabled"
-
-protected:
-    bool write_sector_with_erase(u_int32_t addr, void *data, int cnt);
-    bool write_with_erase(u_int32_t addr, void *data, int cnt);
-
-
-    mflash*    _mfl;
-    flash_attr _attr;
-    bool _no_flash_verify;
-    bool _ignore_cache_replacement; // for FS3 devices flash access.
-
-    u_int32_t  _curr_sector;
-    u_int32_t  _curr_sector_size; // can work with both 4KB and 64KB sectors
-    u_int32_t  _port_num;
-    u_int8_t   _cr_space_locked;
-    int        _flash_working_mode;
-};
-
-#endif
diff --git a/mlxfwops/lib/fs2_ops.cpp b/mlxfwops/lib/fs2_ops.cpp
deleted file mode 100644 (file)
index 7268ee3..0000000
+++ /dev/null
@@ -1,2103 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#if !defined(UEFI_BUILD) && !defined(NO_OPEN_SSL)
-#include <tools_crypto/tools_md5.h>
-#endif
-#include <cibfw_layouts.h>
-#include "fs2_ops.h"
-
-#ifdef __WIN__
-#include <win_driver_cif.h>
-#endif
-
-#define PRE_CRC_OUTPUT   "    "
-#define CRC_CHECK_OUTPUT  CRC_CHECK_OLD")"
-
-
-static int part_cnt;
-extern const char* g_sectNames[];
-
-bool Fs2Operations::FwInit()
-{
-    FwInitCom();
-    memset(&_fs2ImgInfo, 0, sizeof(_fs2ImgInfo));
-    _fwImgInfo.fwType = FIT_FS2;
-    return true;
-}
-
-
-bool Fs2Operations::CntxGetFsData(u_int32_t fs_info_word, bool& fs_en, u_int32_t& log2chunk_size) {
-    u_int8_t  checksum;
-    //printf("-D- fs_info_word=%08x\n", fs_info_word);
-
-    checksum = ((fs_info_word      ) & 0xff) +
-               ((fs_info_word >>  8) & 0xff) +
-               ((fs_info_word >> 16) & 0xff) +
-               ((fs_info_word >> 24) & 0xff);
-
-    if (checksum != 0) {
-        return errmsg("Corrupted chunk size checksum");
-    }
-
-    fs_en = (fs_info_word & 0x8) != 0;
-
-    if (fs_en) {
-        log2chunk_size = (fs_info_word & 0x7) + 16;
-    } else {
-        log2chunk_size = 0;
-    }
-    return true;
-}
-
-bool Fs2Operations::ParseInfoSect(u_int8_t* buff, u_int32_t byteSize) {
-
-
-    u_int32_t *p = (u_int32_t*)buff;
-    u_int32_t offs = 0;
-    u_int32_t tagNum = 0;
-    bool endFound = false;
-
-    // TODO: Add new flag on the info which indicates that the ParseInfoSect was already called.
-
-    while (!endFound && offs < byteSize) {
-        u_int32_t tagSize = __be32_to_cpu(*p) & 0xffffff;
-        u_int32_t tagId   = __be32_to_cpu(*p) >> 24;
-
-        if (offs + tagSize > byteSize) {
-            return errmsg(MLXFW_SECTION_TOO_LARGE_ERR, "Info section corrupted: Tag %d (TagId %d, size %d) exceeds Info section size (%d bytes) ",
-                          tagNum, tagId, tagSize, byteSize);
-        }
-        // printf("-D- tagId = (%#x), tagSize = (%#x), offs = %#x\n", tagId, tagSize, offs);
-        u_int32_t   tmp;
-        const char* str;
-        int size;
-        switch (tagId) {
-        case II_FwVersion:
-            _fwImgInfo.ext_info.fw_ver[0] = u_int16_t(__be32_to_cpu(*(p+1)) >> 16);
-            tmp = __be32_to_cpu(*(p+2));
-            _fwImgInfo.ext_info.fw_ver[1] = tmp >> 16;
-            _fwImgInfo.ext_info.fw_ver[2] = tmp & 0xffff;
-            break;
-        case II_FwBuildTime:
-            tmp = __be32_to_cpu(*(p+2));
-            _fwImgInfo.ext_info.fw_rel_date[0] = (u_int16_t)(tmp & 0xff);
-            _fwImgInfo.ext_info.fw_rel_date[1] = (u_int16_t)((tmp >> 8) & 0xff);
-            _fwImgInfo.ext_info.fw_rel_date[2] = (u_int16_t)((tmp >> 16) & 0xffff);
-            break;
-        case II_MinFitVersion:
-            tmp = __be32_to_cpu(*(p+1));
-            _fwImgInfo.ext_info.min_fit_ver[0] = tmp >> 16;
-            _fwImgInfo.ext_info.min_fit_ver[1] = tmp & 0xffff;
-            tmp = __be32_to_cpu(*(p+2));
-            _fwImgInfo.ext_info.min_fit_ver[2] = tmp >> 16;
-            _fwImgInfo.ext_info.min_fit_ver[3] = tmp & 0xffff;
-            break;
-        case II_MicVersion:
-            tmp = __be32_to_cpu(*(p+1));
-            _fwImgInfo.ext_info.mic_ver[0] = tmp >> 16;
-            //_fwImgInfo.ext_info.minFitVer[1] = tmp & 0xffff;
-            tmp = __be32_to_cpu(*(p+2));
-            _fwImgInfo.ext_info.mic_ver[1] = tmp >> 16;
-            _fwImgInfo.ext_info.mic_ver[2] = tmp & 0xffff;
-            break;
-        case II_DeviceType:
-            tmp = __be32_to_cpu(*(p+1));
-            _fwImgInfo.ext_info.dev_type = tmp & 0xffff;
-            //info->devRev  = (tmp >> 16) & 0xff;
-            break;
-
-        case II_VsdVendorId:
-            tmp = __be32_to_cpu(*(p+1));
-            _fwImgInfo.ext_info.vsd_vendor_id    = tmp & 0xffff;
-            break;
-
-        case II_IsGa:
-            tmp = __be32_to_cpu(*(p+1));
-            _fwImgInfo.isGa = tmp ? true : false;;
-            break;
-
-        case II_PSID:
-            // set psid only if not previosly found in PS
-                str = (const char*)p;
-                str += 4;
-
-                for (int i = 0 ; i < PSID_LEN ; i++) {
-                    _fwImgInfo.ext_info.psid[i] = str[i];
-                }
-                _fwImgInfo.ext_info.psid[PSID_LEN] = '\0';
-            break;
-
-        case II_PSInfo:
-            str = (const char*)p;
-            str += 4;
-            size = strlen(str) + 1; // include '\0'
-            if (size > PRS_NAME_LEN ) {
-                // ensure '\0' at the end
-                size = PRS_NAME_LEN - 1;
-            }
-            memcpy(_fs2ImgInfo.ext_info.prs_name, str, size);
-            break;
-
-        case II_VSD:
-            // set psid only if not previosly found in PS
-                str = (const char*)p;
-                str += 4;
-
-                for (int i = 0 ; i < VSD_LEN ; i++) {
-                    _fwImgInfo.ext_info.vsd[i] = str[i];
-                }
-                _fwImgInfo.ext_info.vsd[VSD_LEN] = '\0';
-                _fwImgInfo.ext_info.vsd_sect_found = true;
-            break;
-        case II_ProductVer:
-
-            str = (const char*)p;
-            str += 4;
-            for (int i = 0 ; i < PRODUCT_VER_LEN ; i++) {
-                _fwImgInfo.ext_info.product_ver[i] = str[i];
-            }
-            _fwImgInfo.ext_info.product_ver[PRODUCT_VER_LEN] = '\0';
-            break;
-        case II_HwDevsId:
-           for (u_int32_t i = 1; i <= (tagSize / 4); i++) {
-               _fwImgInfo.supportedHwId[i - 1] = __be32_to_cpu(*(p + i));
-           }
-           _fwImgInfo.supportedHwIdNum = tagSize / 4;
-           break;
-        case II_HwAccessKey: {
-            _fs2ImgInfo.ext_info.access_key_value.h = __be32_to_cpu(*(p + 1));;
-            _fs2ImgInfo.ext_info.access_key_value.l = __be32_to_cpu(*(p + 2));;
-            _fs2ImgInfo.ext_info.access_key_exists= 1;
-        }
-            break;
-        case II_PROFILES_LIST: {
-            GetSectData(_fs2ImgInfo.profListSectZipped, p + 1, tagSize);
-        }
-            break;
-        case II_TLVS_FORMAT: {
-            GetSectData(_fs2ImgInfo.TlvFormatSectZipped, p + 1, tagSize);
-        }
-            break;
-        case II_TRACER_HASH: {
-            GetSectData(_fs2ImgInfo.TracerHashSectZipped, p + 1, tagSize);
-        }
-            break;
-
-        case II_CONFIG_INFO: {
-            // printf("-D- configExists\n");
-            _fs2ImgInfo.isConfigurable = true;
-            _fs2ImgInfo.defPorfile   = __be32_to_cpu(*(p + 1));;
-        }
-            break;
-        case II_SUPPORTED_PROFS: {
-            for (u_int32_t i = 1; i <= (tagSize / 4); i++) {
-                u_int32_t id;
-                id = __be32_to_cpu(*(p + i));
-                _fs2ImgInfo.supportedProfList.push_back(id);
-            }
-        }
-            break;
-
-        case II_ConfigArea: {
-            // configuration area should always exsist
-            _fs2ImgInfo.ext_info.config_sectors = __be32_to_cpu(*(p + 1));
-            _fs2ImgInfo.ext_info.config_pad = __be32_to_cpu(*(p + 2));
-            if (tagSize > 0x8){//fw_log_sector_size is also found
-                _fs2ImgInfo.fw_sector_size = (1 << __be32_to_cpu(*(p + 3))) * 1024;// the base value is 1kb i.e 1024
-            }
-        }
-            break;
-
-        case II_End:
-            endFound = true;
-            break;
-
-            //default:
-            //printf("-D- Found tag ID %d of size %d - ignoring.\n", tagId, tagSize);
-        }
-
-        if (tagId < II_Last) {
-            _fs2ImgInfo.infoOffs[tagId] = offs + 4;
-        }
-
-        p    += tagSize/4 + 1;
-        offs += tagSize + 4;
-        tagNum++;
-    }
-
-    if (offs != byteSize) {
-        if (endFound) {
-            return errmsg(MLXFW_SECTION_CORRUPTED_ERR, "Info section corrupted: Section data size is 0x%x bytes, "
-                          "but end tag found after 0x%x bytes.", byteSize, offs);
-        } else {
-            return errmsg(MLXFW_SECTION_CORRUPTED_ERR, "Info section corrupted: Section data size is 0x%x bytes, "
-                          "but end tag not found before section end.", byteSize);
-        }
-    }
-    return true;
-}
-
-
-void Fs2Operations::initSectToRead(int imp_index)
-{
-    for (int i = 0; i < H_LAST; i++) {
-        if (imp_index == FULL_VERIFY || i == imp_index) {
-            _sectionsToRead[i] = 1;
-        } else {
-            _sectionsToRead[i] = 0;
-        }
-    }
-    if (imp_index == FULL_VERIFY) {
-        _isFullVerify = true;
-    } else {
-        _isFullVerify = false;
-    }
-
-    return;
-}
-
-bool Fs2Operations::checkGen(u_int32_t beg,u_int32_t offs, u_int32_t& next, const char *pref,
-        VerifyCallBack verifyCallBackFunc)
-{
-    // char         *pr = (char *)alloca(strlen(pref) + 100);
-    char pr[strlen(pref) + 100];
-
-    char         unknown_sect_name[128];
-    const char*  sect_name;
-
-    u_int32_t    size = 0;
-    GPH          gph;
-    bool is_sect_to_read = false;
-    // printf("-D- checkGen ... \n");
-    // GPH
-    sprintf(pr, "%s /0x%08x/ (GeneralHeader)", pref, offs+beg);
-    READBUF((*_ioAccess), offs + beg, &gph, sizeof(GPH), pr);
-    TOCPUBY(gph);
-
-    // Body
-    part_cnt++;
-
-    // May be BOOT3?
-    if (gph.type < H_FIRST  ||  gph.type >= H_LAST) {
-        if (part_cnt > 2) {
-            //report_callback(verifyCallBackFunc, "%s /0x%x/ - Invalid partition type (%d)\n",
-            //       pref, offs+beg, gph.type);
-            //return false;
-        } else {
-            return checkBoot2(beg, offs, next, _isFullVerify, pref, verifyCallBackFunc);
-        }
-    }
-
-    // All partitions here
-    offs += beg;
-
-    if (gph.type < H_FIRST  ||  gph.type >= H_LAST) {
-        // For forward compatibility, try analyzing even if section type is unknown
-        // Assuming the size is in DW, like all other sections (except emt service).
-        // If this assumption is wrong, CRC calc would fail - no harm done.
-        sprintf(unknown_sect_name, "UNKNOWN (%d)" , gph.type);
-        sect_name = unknown_sect_name;
-        size = gph.size * 4;
-        is_sect_to_read = true;
-
-    } else {
-        if (gph.type == H_EMT) {
-            size = (gph.size + 3) / 4 * 4;
-        } else {
-            size = gph.size * 4;
-        }
-        sect_name = g_sectNames[gph.type];
-        // We verify part of the image only when we verify an image burnt on a device
-        if (_ioAccess->is_flash()) {
-            is_sect_to_read =  _sectionsToRead[gph.type];
-        } else {
-            is_sect_to_read = true;
-        }
-
-    }
-
-    sprintf(pr, CRC_CHECK_OUTPUT,
-            pref, offs, offs+size+(u_int32_t)sizeof(gph)+3,
-            size+(u_int32_t)sizeof(gph)+4, sect_name);
-
-    if (size > MAX_SECTION_SIZE) {
-        report_callback(verifyCallBackFunc, "%s - size too big (0x%x)\n",
-               pr, size);
-        return false;
-    }
-    if (is_sect_to_read) {
-        // CRC
-        Crc16        crc;
-        std::vector<u_int8_t> buffv(size);
-        u_int32_t *buff = (u_int32_t*)(&(buffv[0]));
-
-        READBUF((*_ioAccess), offs+sizeof(gph), buff, size, pr);
-
-        TOCPUn(buff,size/4);
-        CRCBY(crc, gph);
-        CRCBY(_ioAccess->get_image_crc(), gph);
-
-        CRCn(crc, buff, size/4);
-        CRCn(_ioAccess->get_image_crc(), buff, size/4);
-        crc.finish();
-
-        u_int32_t crc_act;
-        READ4((*_ioAccess), offs+sizeof(gph)+size, &crc_act, pr);
-        TOCPU1(crc_act);
-        bool blank_crc = false;
-
-        if (gph.type == H_GUID && crc_act == 0xffff) {
-               // in case we get 0xffff as crc BUT the section is not empty (i.e not ffffs)
-               //check the 64 bits of the NGUID (node guid) located at offs + sizeof(gph)
-               u_int64_t nguid;
-               READBUF((*_ioAccess), offs+sizeof(gph), (u_int8_t*)&nguid, 8, pr);
-               if (nguid == 0xffffffffffffffffULL) {
-                       blank_crc = true;
-                       _fs2ImgInfo.ext_info.blank_guids = true;
-               }
-        }
-
-        if (!CheckAndPrintCrcRes(pr, blank_crc, offs, crc_act, crc.get(), false, verifyCallBackFunc)) {
-            return false;
-
-        }
-
-        _ioAccess->get_image_crc() << crc.get();
-        // The image info may be null, please check that before using it.
-        if (gph.type == H_FW_CONF) {
-            GetSectData(_fwConfSect, buff, size);
-        }
-        if (gph.type == H_HASH_FILE) {
-            GetSectData(_hashFileSect, buff, size);
-        }
-
-        if (gph.type == H_IMG_INFO) {
-            CPUTOn(buff, size/4);
-            if (!ParseInfoSect((u_int8_t*)buff, size)) {
-                return errmsg("Failed to read the info sector: %s\n", err());
-            }
-
-        }
-
-        if (gph.type == H_ROM && _romSect.empty()) {
-            TOCPUn(buff, size/4);
-            GetSectData(_romSect, buff, size);
-        }
-    }
-
-
-    // mark last read addr
-    _fwImgInfo.lastImageAddr = offs + size + sizeof(gph) + 4;  // the 4 is for the trailing crc
-    next = gph.next;
-
-    return true;
-} // checkGen
-
-
-////////////////////////////////////////////////////////////////////////
-bool Fs2Operations::checkList(u_int32_t offs, u_int32_t fw_start, const char *pref, VerifyCallBack verifyCallBackFunc)
-
-{
-    //is initilized in CHECKB2
-    u_int32_t next_ptr = 0;
-
-    CHECKB2(offs, fw_start, next_ptr, _isFullVerify, pref, verifyCallBackFunc);
-    part_cnt = 1;
-    while (next_ptr && next_ptr != 0xff000000) {
-        CHECKGN(offs, next_ptr, next_ptr, pref, verifyCallBackFunc);
-    }
-
-    return true;
-} // checkList
-
-bool Fs2Operations::Fs2Verify(VerifyCallBack verifyCallBackFunc, bool is_striped_image, bool both_images, bool only_get_start, bool ignore_full_image_crc,
-                              bool force_no_striped_image)
-{
-    u_int32_t cntx_image_start[CNTX_START_POS_SIZE];
-    u_int32_t cntx_image_num;
-
-    bool      ret = true;
-    u_int32_t act_crc;
-    bool  check_full_crc = false;
-
-    // printf("-D- VerifyFs2 = ok\n");
-    // Look for image in "physical addresses
-    FindAllImageStart(_ioAccess, cntx_image_start, &cntx_image_num, _cntx_magic_pattern);
-    if (cntx_image_num == 0) {
-        return errmsg(MLXFW_NO_VALID_IMAGE_ERR, "No valid image found");
-    } else if (cntx_image_num > 2) {
-        // This check may be redundant - Maybe ignore if more than 2 images found
-        return errmsg(MLXFW_MULTIPLE_VALID_IMAGES_ERR, "More than 2 image start locations found at addresses 0x%x, 0x%x and 0x%x. Image may be corrupted.",
-                      cntx_image_start[0],
-                      cntx_image_start[1],
-                      cntx_image_start[2]);
-    }
-
-    if (!both_images) {
-        // Check only the first image. This is enough to ensure that the device is bootable.
-        cntx_image_num = 1;
-    }
-
-
-     // Verify the images:
-     for (u_int32_t i = 0; i < cntx_image_num; i++) {
-         bool      fs_en = false;
-         u_int32_t log2chunk_size = 0;
-         u_int32_t buff[FS2_BOOT_START / 4];
-
-         _ioAccess->get_image_crc().clear();
-
-         _ioAccess->set_address_convertor(0, 0);
-
-         READBUF((*_ioAccess), cntx_image_start[i], buff, FS2_BOOT_START, "Image header");
-
-         TOCPUn(buff, FS2_BOOT_START / 4);
-
-         u_int32_ba crc_dw = buff[IMG_CRC_OFF / 4];
-         act_crc           = u_int32_t(crc_dw.range(15, 0));
-         crc_dw.range(15, 0) = 0xffff;
-         buff[IMG_CRC_OFF / 4] |= crc_dw;
-
-         CRCn(_ioAccess->get_image_crc(), buff, FS2_BOOT_START / 4);
-         //printf("-D- CRC is %#x\n", _ioAccess->get_image_crc().get());
-         if (!CntxGetFsData(buff[FS_DATA_OFF / 4], fs_en, log2chunk_size)) {
-             report_callback(verifyCallBackFunc, "\n    Can not read failsafe info word: %s\n", err());
-             return(i > 0);
-         }
-
-         // If fw not enabled, image must start at addr 0
-         if (!fs_en && cntx_image_start[i] != 0) {
-             return errmsg("FS2 Non Failsafe image must start at address 0. Found non-fs image at address 0x%x",
-                           cntx_image_start[i]);
-         }
-
-         if (fs_en) {
-             report_callback(verifyCallBackFunc, "\n     FS2 failsafe image. Start address: 0x%x. Chunk size 0x%x:\n\n", cntx_image_start[i], 1 << log2chunk_size);
-             report_callback(verifyCallBackFunc, "     NOTE: The addresses below are contiguous logical addresses. Physical addresses on\n"
-                    "           flash may be different, based on the image start address and chunk size\n\n");
-         } else {
-             report_callback(verifyCallBackFunc, "\n     FS2 non failsafe image:\n\n");
-         }
-
-         if (fs_en && cntx_image_start[i] != 0 && cntx_image_start[i] != (u_int32_t)(1 << log2chunk_size)) {
-             return errmsg("FS2 Failsafe image must start at address 0 or at chunk size. Found a failsafe image at address 0x%x",
-                           cntx_image_start[i]);
-         }
-
-         _fwImgInfo.imgStart          = cntx_image_start[i];
-         _fwImgInfo.ext_info.is_failsafe        = fs_en;
-         _fwImgInfo.actuallyFailsafe  = true;
-         _fwImgInfo.cntxLog2ChunkSize = log2chunk_size;
-
-
-
-         if (_ioAccess->is_flash()) {
-             // In flash, image layout must match the FS Data
-             _fwImgInfo.actuallyFailsafe    = true;
-
-
-             if (fs_en) {
-                 _ioAccess->set_address_convertor(log2chunk_size, cntx_image_start[i] != 0);
-             }
-         } else {
-             // In an image file there are 2 cases:
-             // 1. Image generated by mlxburn
-             //    The image in the file is contiguous (though it is marked as FS) - no need to set address convertion.
-             // 2. The image was raw read from flash. In this case it would be in "zebra" format.
-             //
-             // So - I try both cases, and see which verify() succeeds.
-             //
-             // Heuristics that may come in handy:
-             // If the image does not start at addr 0, it's not an mlxburn image.
-             // If there is more than a single valid image, it's not an mlxburn image.
-             // If the file size matches the image size, it is an mlxburn image.
-             //
-             // For now, get the "striped" indication from user.
-
-             if (!force_no_striped_image && is_striped_image) {
-                 _ioAccess->set_address_convertor(log2chunk_size, cntx_image_start[i] != 0);
-             } else {
-                 _ioAccess->set_address_convertor(0, 0); //disable conversion
-             }
-             _fwImgInfo.actuallyFailsafe    = is_striped_image;
-         }
-
-         bool imgStat = true;
-         // TODO: check what only_get_start means.
-         if (!only_get_start) {
-             imgStat = checkList(0, FS2_BOOT_START, PRE_CRC_OUTPUT, verifyCallBackFunc);
-         }
-         _ioAccess->get_image_crc().finish();
-
-         u_int32_t full_crc = _ioAccess->get_image_crc().get();
-
-         if (!ignore_full_image_crc && _fs2ImgInfo.infoOffs[II_MicVersion]) { // For now we check only that the Mic version existing .
-             check_full_crc = true;
-         }
-         if (imgStat && _isFullVerify && check_full_crc && !only_get_start) {
-             char pr[256];
-             sprintf(pr, CRC_CHECK_OUTPUT, PRE_CRC_OUTPUT, 0, _fwImgInfo.lastImageAddr - 1, _fwImgInfo.lastImageAddr,
-                     "Full Image");
-             CheckAndPrintCrcRes(pr, _fs2ImgInfo.ext_info.blank_guids, 0, act_crc, full_crc, false, verifyCallBackFunc);
-         }
-         if (i == 0) {
-             ret = ret && imgStat;
-         }
-     }
-     return ret;
-}
-bool Fs2Operations::FwVerify(VerifyCallBack verifyCallBackFunc, bool isStripedImage, bool showItoc)
-{
-    // avoid compiler warrning (showItoc is not used in fs2)
-    (void)showItoc;
-
-    initSectToRead(FULL_VERIFY);
-    if (!Fs2Verify(verifyCallBackFunc, isStripedImage)) {
-        // empty the initSectToRead
-        initSectToRead(H_LAST);
-        return false;
-    }
-    // empty the initSectToRead
-    initSectToRead(H_LAST);
-    _wasVerified = true;
-    return true;
-}
-
-u_int8_t Fs2Operations::FwType()
-{
-    return FIT_FS2;
-}
-
-bool Fs2Operations::FwReadData(void* image, u_int32_t* image_size)
-{
-    if (!Fs2Verify((VerifyCallBack)NULL)) {
-        return false;
-    }
-    *image_size = _fwImgInfo.lastImageAddr;
-    if (image != NULL) {
-        if (!_ioAccess->read(0, (u_int32_t*)image, *image_size)) {
-            return errmsg("Failed to read Image: %s", _ioAccess->err());
-        }
-    }
-    return true;
-}
-
-bool Fs2Operations::Fs2Query () {
-
-    u_int32_t guid_ptr, nguids;
-    guid_t guids[MAX_GUIDS];
-    /*
-    if (_fwImgInfo.wasQueried == true) {
-        return true;
-    }
-    */
-    // FW ID
-    u_int32_t fw_id;
-    u_int32_t fw_id_offs;
-    u_int32_t fw_size;
-    u_int32_t im_start = _fwImgInfo.imgStart;
-
-    if (_fwImgInfo.ext_info.is_failsafe && _fwImgInfo.actuallyFailsafe) {
-        _ioAccess->set_address_convertor(_fwImgInfo.cntxLog2ChunkSize, im_start != 0);
-    } else {
-        _ioAccess->set_address_convertor(0,0);
-    }
-
-    im_start = 0; // offset is done by address convertor
-    _fwImgInfo.magicPatternFound = true;
-    fw_id_offs = 0x20;
-
-    READ4((*_ioAccess), im_start + fw_id_offs, &fw_id, "FW ID");
-    TOCPU1(fw_id);
-
-    READ4((*_ioAccess), im_start + fw_id_offs + 0x10, &fw_size, "FW SIZE");
-    TOCPU1(fw_size);
-    _fwImgInfo.ext_info.image_size = fw_size;
-
-    _fwImgInfo.ext_info.dev_rev  = fw_id >> 24;
-    // Read GUIDs
-    READ4((*_ioAccess), im_start + fw_id_offs + 0x14 , &guid_ptr, "GUID PTR");
-    TOCPU1(guid_ptr);
-    _fs2ImgInfo.guidPtr = guid_ptr;
-
-    guid_ptr += im_start;
-    if (guid_ptr >= _ioAccess->get_size()) {
-        return errmsg("Failed to read GUIDs - Illegal GUID pointer (%08x). Probably image is corrupted", guid_ptr);
-    }
-    READ4((*_ioAccess), guid_ptr - 3*sizeof(u_int32_t), &nguids, "Number of GUIDs");
-    TOCPU1(nguids);
-    nguids /= 2;
-    if (nguids > MAX_GUIDS) {
-        return errmsg("Failed to read GUIDs - Illegal Number of GUIDs (%d)", nguids);
-        //return false;
-    }
-    READBUF((*_ioAccess), guid_ptr, guids, nguids * sizeof(u_int64_t), "GUIDS");
-    TOCPUBY64(guids);
-
-    u_int32_t guids_crc;
-    READ4((*_ioAccess), guid_ptr + nguids * sizeof(u_int64_t), &guids_crc, "GUIDS CRC");
-    guids_crc = __be32_to_cpu(guids_crc);
-
-    _fs2ImgInfo.ext_info.blank_guids = true;
-    if ((guids_crc & 0xffff) != 0xffff ) {
-        _fs2ImgInfo.ext_info.blank_guids = false;
-    }
-
-    _fs2ImgInfo.ext_info.guid_num = nguids;
-    for (u_int32_t i = 0 ; i < nguids ; i++) {
-        _fs2ImgInfo.ext_info.guids[i] = guids[i];
-        if (guids[i].h != 0xffffffff || guids[i].l != 0xffffffff) {
-            _fs2ImgInfo.ext_info.blank_guids = false;
-        }
-    }
-    // Expansion Rom version:
-    RomInfo rInfo(_romSect, false);
-    // There is no check for the return value of this function because it's a wrapper that always succeeds,
-    // but fills the error string when there is an error
-    rInfo.ParseInfo();
-    rInfo.initRomsInfo(&_fwImgInfo.ext_info.roms_info);
-
-    // Read Info:
-    u_int32_ba info_ptr_ba;
-    u_int32_t  info_ptr;
-    u_int32_t  info_size;
-    u_int8_t   info_ptr_cs = 0;
-    READ4((*_ioAccess), im_start + fw_id_offs + 0xC, &info_ptr, "INFO PTR");
-    TOCPU1(info_ptr);
-
-    // Verify info_ptr checksum (should be 0)
-    info_ptr_ba = info_ptr;
-    for (u_int32_t i = 0; i < 4 ; i++) {
-        info_ptr_cs += (u_int8_t)info_ptr_ba.range(i*8+7, i*8);
-    }
-
-    if (info_ptr_cs) {
-        return errmsg(MLXFW_BAD_CHECKSUM_ERR, "Failed to read Info Section - Bad checksum for Info section pointer (%08x). Probably the image is corrupted.", info_ptr);
-    }
-
-    info_ptr = info_ptr_ba.range(23,0);
-    if (info_ptr_cs == 0 && info_ptr != 0) {
-        _fs2ImgInfo.infoSectPtr = info_ptr;
-
-        info_ptr += im_start;
-        if (info_ptr >= _ioAccess->get_size()) {
-            return errmsg(MLXFW_SECTION_TOO_LARGE_ERR, "Failed to read Info Section - Info section pointer (%08x) too large. Probably the image is corrupted.", info_ptr);
-        }
-        READ4((*_ioAccess), info_ptr - 3*sizeof(u_int32_t), &info_size, "Info section size");
-        TOCPU1(info_size);
-
-        // byte size;
-        info_size *= 4;
-
-        // u_int8_t* info_buff = (u_int8_t*)alloca(info_size);
-        u_int8_t info_buff[info_size];
-        READBUF((*_ioAccess), info_ptr, info_buff, info_size, "Info Section");
-
-        if (!ParseInfoSect(info_buff, info_size)) {
-            return false;
-        }
-    }
-
-    _fwImgInfo.imageOk = true;
-    _fwImgInfo.wasQueried = true;
-    return true;
-}
-
-bool Fs2Operations::Fs2IntQuery(bool readRom, bool isStripedImage)
-{
-    if (readRom) {
-        initSectToRead(H_ROM);
-    } else {
-        initSectToRead(H_LAST);
-    }
-    if (!Fs2Verify((VerifyCallBack)NULL, isStripedImage)) {
-        initSectToRead(H_LAST);
-        return false;
-    }
-    initSectToRead(H_LAST);
-    if (!Fs2Query()) {
-        return false;
-    }
-    _fwImgInfo.ext_info.chip_type = getChipType();
-
-    // get running FW version
-    if (_ioAccess->is_flash() && _fwImgInfo.ext_info.chip_type != CT_UNKNOWN) {
-        getRunningFwVer();
-    }
-    return true;
-}
-
-bool Fs2Operations::FwQuery(fw_info_t *fwInfo, bool readRom, bool isStripedImage)
-{
-    if (!Fs2IntQuery(readRom, isStripedImage)) {
-        return false;
-    }
-    memcpy(&(fwInfo->fw_info),  &(_fwImgInfo.ext_info),  sizeof(fw_info_com_t));
-    memcpy(&(fwInfo->fs2_info), &(_fs2ImgInfo.ext_info), sizeof(fs2_info_t));
-    //set the chipType in fwInfo
-    fwInfo->fw_type = FIT_FS2;
-    return true;
-}
-
-#define CX3_FW_VER_CR_ADDR 0x1f064
-#define SX_FW_VER_CR_ADDR 0x60040
-
-bool Fs2Operations::getRunningFwVer()
-{
-#ifndef UEFI_BUILD
-    u_int32_t fwVerBaseAddr = 0x0;
-    u_int32_t mflags;
-    struct cibfw_FW_VERSION fwVer;
-    u_int8_t buff[CIBFW_FW_VERSION_SIZE] = {0};
-    memset(&fwVer, 0, sizeof(fwVer));
-    // make sure its not mellanox OS
-    if (mget_mdevs_flags(((Flash*)_ioAccess)->getMfileObj(), &mflags)) {
-        return errmsg("Failed to get device access type");
-    }
-    if (mflags & MDEVS_MLNX_OS) {
-        return true;
-    }
-    switch (_fwImgInfo.ext_info.chip_type) {
-    case CT_CONNECTX:
-        fwVerBaseAddr = CX3_FW_VER_CR_ADDR;
-        break;
-    case CT_SWITCHX:
-        fwVerBaseAddr = SX_FW_VER_CR_ADDR;
-        break;
-    default:
-        return errmsg("Unsupported chip type.");
-    }
-
-    if (mread_buffer(((Flash*)_ioAccess)->getMfileObj(), fwVerBaseAddr, buff, CIBFW_FW_VERSION_SIZE) != CIBFW_FW_VERSION_SIZE) {
-        return errmsg("Failed to extract FW version from device. CR_ERROR\n");
-    }
-    cibfw_FW_VERSION_unpack(&fwVer, buff);
-    _fwImgInfo.ext_info.running_fw_ver[0] = fwVer.MAJOR;
-    _fwImgInfo.ext_info.running_fw_ver[1] = fwVer.MINOR;
-    _fwImgInfo.ext_info.running_fw_ver[2] = fwVer.SUBMINOR;
-#endif
-    return true;
-}
-
-#define MY_MAX(a, b) ((a) > (b) ? (a) : (b))
-#define CX_DFLT_SECTOR_SIZE 0x10000
-#define SX_DFLT_SECTOR_SIZE 0x1000
-#define MAX_CONFIG_AREA_SIZE 0x10000
-
-u_int32_t Fs2Operations::getDefaultSectorSz()
-{
-    // for ConnectX family  default sector size is 64kb else 4kb
-    // all of this mess is because the sector_size written in the INI doesnt always correspond to the actual flash sector_size
-    // and as for the calculation of the maximal image size we want to be synced with the FW or take worst case scenario.
-    // we need this method as we only started collecting the fw_sector_size from MFT-3.6.0 so if the image was generated with
-    // an older mlxburn the fw_sector_size wount be available
-    u_int32_t devid = _ioAccess->get_dev_id();
-    switch (devid) {
-    case CX2_HW_ID:
-    case CX3_HW_ID:
-    case CX3_PRO_HW_ID:
-        return CX_DFLT_SECTOR_SIZE;
-    default:
-        return SX_DFLT_SECTOR_SIZE;
-    }
-    // we shouldnt reach here
-    return 0;
-}
-
-bool Fs2Operations::GetMaxImageSize(u_int32_t flash_size, bool image_is_fs, u_int32_t imgConfigSectors, u_int32_t imgFwSectorSz,\
-        u_int32_t &max_image_size)
-{
-    /*
-        u_int32_t sector_size = _ioAccess->get_sector_size();
-        u_int32_t config_sectors = MY_MAX(imgConfigSectors, _fs2ImgInfo.ext_info.config_sectors);
-        if (image_is_fs) {
-            max_image_size = (flash_size / 2) - ((config_sectors + _fs2ImgInfo.ext_info.config_pad) * sector_size);
-        } else {
-            // For non FS image, there's an optional offset + 2 consecutive config areas
-            max_image_size = flash_size - (config_sectors * 2 + _fs2ImgInfo.ext_info.config_pad) * sector_size;
-        }
-        */
-    /* new methodology:
-     * a.  for CX2/CX3/PRO: in case fw_sector_size is present  reserve : num_of_config_sectors * fw_sector_size
-     * b.  for CX2/CX3/PRO: in case sector_size isnt present assume sector size is 64kb and reserve: num_of_config_sectors * 64k
-     * c.  for SwitchX: in case fw_sector_size is present reserve : ( num_of_config_sectors + config_padd) * fw_sector_size
-     * d.  for SwitchX: in case sector_size isnt present assume sector size is 4kb and reserve: ( num_of_config_sectors + config_padd) *4k
-     *   ** on ALL cases we will impose the limitation of reserving at most 64kb to the NV configuration.
-     *   ** config_pad might be != 0 on SwitchX only.
-     *   ** To Orenks knowledge there arent any SwitchX with flashes that dont support 4kb.
-     */
-    u_int32_t sector_size = (imgFwSectorSz != 0 || _fs2ImgInfo.fw_sector_size != 0) ?\
-            MY_MAX(imgFwSectorSz, _fs2ImgInfo.fw_sector_size) : getDefaultSectorSz();
-    u_int32_t config_sectors = MY_MAX(imgConfigSectors, _fs2ImgInfo.ext_info.config_sectors);
-    u_int32_t areaToReserve = config_sectors * sector_size;
-    // we dont want to exceed 64kb of reserved space
-    areaToReserve = areaToReserve > MAX_CONFIG_AREA_SIZE ? MAX_CONFIG_AREA_SIZE : areaToReserve;
-    //printf("-D- sector_size: 0x%x, config_sectors: %d, areaToReserve: 0x%x, config_pad: %d\n"
-            //, sector_size, config_sectors, areaToReserve, _fs2ImgInfo.ext_info.config_pad);
-    if (image_is_fs) {
-        // why do we take config padding of the image info of the device and not the image to be burnt or the maximum between them??
-        max_image_size = (flash_size / 2) - (areaToReserve + (_fs2ImgInfo.ext_info.config_pad * sector_size));
-    } else {
-        // For non FS image, there's an optional offset + 2 consecutive config areas
-        max_image_size = flash_size - (areaToReserve * 2 + _fs2ImgInfo.ext_info.config_pad*sector_size);
-    }
-    return true;
-}
-
-bool Fs2Operations::UpdateFullImageCRC(u_int32_t* buff, u_int32_t size, bool blank_guids)
-{
-    // Writing 0xffff on the CRC field.
-    u_int32_ba crc_dw = TOCPU1(buff[IMG_CRC_OFF / 4]);
-    crc_dw.range(15, 0)  = 0xffff;
-
-
-    buff[IMG_CRC_OFF / 4] = CPUTO1(crc_dw);
-
-    if (blank_guids) {
-        return true;
-    }
-
-    // Calc CRC image.
-    u_int32_t new_crc = CalcImageCRC(buff, size);
-
-    // Update the CRC.
-    TOCPU1(crc_dw);
-    crc_dw.range(15, 0)   = new_crc;
-    buff[IMG_CRC_OFF / 4] = CPUTO1(crc_dw);
-
-    return true;
-}
-#define ERASE_MESSAGE "    Please erase them by using the command: \"" MLXCONFIG_CMD " " ERASE_CMD "\" and then re-burn"
-//TODO: remove pre_message from function def
-bool Fs2Operations::Fs2FailSafeBurn(Fs2Operations &imageOps,
-                                  bool      allow_nofs,
-                                  const char* pre_message,
-                                  ProgressCallBack progressFunc) {
-    //we do not use pre_message, avoid warrning
-       //TODO: remove pre_message from function definition
-    (void)pre_message;
-
-    Flash  *f = (Flash*)(this->_ioAccess);
-    FImage *fim = (FImage*)(imageOps._ioAccess);
-
-
-    // TODO: See getBuf effect on zebra image.
-    u_int8_t  *data8      = (u_int8_t *) fim->getBuf();
-    int        image_size = fim->getBufLength();
-    u_int32_t  zeroes     = 0;
-    bool is_curr_image_in_odd_chunks;
-
-    // Update CRC.
-    // TODO: No support for blank guids
-    bool isBlankGuids = ( _burnBlankGuids || imageOps._fs2ImgInfo.ext_info.blank_guids );
-    UpdateFullImageCRC(fim->getBuf(), image_size / 4, isBlankGuids); // size in dwords
-
-    // TODO: Do we need the verify ORENK
-    if (!allow_nofs) {
-        if (!imageOps._fwImgInfo.ext_info.is_failsafe) {
-            return errmsg(MLXFW_IMAGE_NOT_FS_ERR, "The given image is not a failsafe image");
-        }
-
-        if (_fwImgInfo.cntxLog2ChunkSize != imageOps._fwImgInfo.cntxLog2ChunkSize) {
-            return errmsg(MLXFW_FS_INFO_MISSMATCH_ERR, "Failsafe chunk sizes in flash (0x%x) and in image (0x%x) are not the same.",
-                          1 << _fwImgInfo.cntxLog2ChunkSize,
-                          1 << imageOps._fwImgInfo.cntxLog2ChunkSize);
-        }
-    }
-
-    u_int32_t max_image_size;
-    if (!GetMaxImageSize(f->get_size(), imageOps._fwImgInfo.ext_info.is_failsafe,\
-            imageOps._fs2ImgInfo.ext_info.config_sectors, imageOps._fs2ImgInfo.fw_sector_size, max_image_size)) {
-        return false;
-    }
-    //printf("-D- max image size : %d, image_size : %d\n",max_image_size, imageOps._fwImgInfo.ext_info.image_size);
-    // Check if size of image is OK
-    if (imageOps._fwImgInfo.ext_info.image_size > max_image_size) {
-        const char *image_type = (imageOps._fwImgInfo.ext_info.is_failsafe) ? "failsafe" : "non-failsafe";
-        const char *note_str   = (imageOps._fwImgInfo.ext_info.is_failsafe) ? " - half of total flash size" : " - total flash size";
-
-        return errmsg(MLXFW_IMAGE_TOO_LARGE_ERR, "Size of %s image (0x%x) is greater than max %s image size (0x%x%s)",
-                 image_type, imageOps._fwImgInfo.ext_info.image_size, image_type, max_image_size, note_str);
-
-    }
-
-    u_int32_t new_image_start;
-
-    if (_fwImgInfo.imgStart != 0) {
-        is_curr_image_in_odd_chunks = 1;
-        new_image_start = 0;
-    } else {
-        is_curr_image_in_odd_chunks = 0;
-        new_image_start = (1 << imageOps._fwImgInfo.cntxLog2ChunkSize);
-    }
-
-
-    if (imageOps._fwImgInfo.ext_info.is_failsafe) {
-        f->set_address_convertor(imageOps._fwImgInfo.cntxLog2ChunkSize, !is_curr_image_in_odd_chunks);
-    } else {
-        f->set_address_convertor(0,0);
-        new_image_start = 0;
-    }
-
-    // Go ahead and burn!
-    //const char* image_name = new_image_start == 0 ? "first" : "second";
-    if (!writeImage(progressFunc, 16 , data8 + 16, image_size - 16)) {
-        return false;
-    }
-    // Write new signature
-    if (!f->write(0, data8, 16, true)) {
-        //return false;
-        return errmsg(MLXFW_FLASH_WRITE_ERR, "Flash write failed. %s", f->err());
-    }
-    bool boot_address_was_updated = true;
-    // Write new image start address to crspace (for SW reset)
-    if (!f->update_boot_addr(new_image_start)) {
-        boot_address_was_updated = false;
-    }
-
-    if (imageOps._fwImgInfo.ext_info.is_failsafe) {
-        if (allow_nofs) {
-            // When burning in nofs, remnant of older image with different chunk size
-            // may reside on the flash -
-            // Invalidate all images marking on flash except the one we've just burnt
-
-            u_int32_t cntx_image_start[CNTX_START_POS_SIZE];
-            u_int32_t cntx_image_num;
-
-            FindAllImageStart(_ioAccess, cntx_image_start, &cntx_image_num, _cntx_magic_pattern);
-            // Address convertor is disabled now - use phys addresses
-            for (u_int32_t i = 0; i < cntx_image_num; i++) {
-                if (cntx_image_start[i] != new_image_start) {
-                    if (!f->write(cntx_image_start[i], &zeroes, sizeof(zeroes), true)) {
-                        //return false;
-                        return errmsg(MLXFW_FLASH_WRITE_ERR, "Flash write failed. %s", f->err());
-                    }
-                }
-            }
-        } else {
-            // invalidate previous signature
-            f->set_address_convertor(imageOps._fwImgInfo.cntxLog2ChunkSize, is_curr_image_in_odd_chunks);
-            if (!f->write(0, &zeroes, sizeof(zeroes), true)) {
-                //return false;
-                return errmsg(MLXFW_FLASH_WRITE_ERR, "Flash write failed. %s", f->err());
-            }
-        }
-    }
-    if (boot_address_was_updated == false) {
-        report_warn("Failed to update FW boot address. Power cycle the device in order to load the new FW.\n");
-    }
-
-    // on windows send caching command to driver (best effort)
-#ifdef __WIN__
-    mf_release_semaphore(((Flash*)_ioAccess)->getMflashObj());
-    wdcif_send_image_cache_request(((Flash*)_ioAccess)->getMfileObj());
-#endif
-    return true;
-}
-
-
-bool Fs2Operations::preFS2PatchGUIDs(bool      patch_macs,
-        bool      user_guids,
-        bool      user_macs,
-        guid_t    new_guids[MAX_GUIDS],
-        guid_t    old_guids[MAX_GUIDS],
-        guid_t    **used_guids_p,
-        u_int32_t num_of_old_guids)
-{
-    guid_t*         used_guids;
-    *used_guids_p = old_guids ? old_guids : new_guids;
-
-    if (new_guids) {
-        // if only guids or only macs are specified by user, keep the other
-        // as currently set of flash. This is in order to simplify transitions between
-        // burning IB and ETH FW.
-        if (old_guids && !user_guids) {
-            for (int i = 0; i < GUIDS; i++) {
-                new_guids[i] = old_guids[i];
-            }
-        }
-
-        if (old_guids && !user_macs) {
-            for (int i = GUIDS; i < MAX_GUIDS; i++) {
-                new_guids[i] = old_guids[i];
-            }
-        }
-        *used_guids_p = new_guids;
-    }
-    used_guids = *used_guids_p;
-
-    if (patch_macs) {
-
-        // To ease upgrade from 4 GUIDS format to 4+2 format, or to move from IB to ETH,
-        // if macs are not
-        // explicitly set in flash, they are derived from the GUIDs according to
-        // Mellanox methodology - 48 bit MAC == 64 bit GUID without the middle 16 bits.
-
-        if (old_guids && ((num_of_old_guids == 4) ||
-                          (num_of_old_guids == 6 &&
-                           (old_guids[GUIDS  ].h & 0xffff)     == 0xffff     &&
-                           (old_guids[GUIDS  ].l & 0xffffffff) == 0xffffffff &&
-                           (old_guids[GUIDS+1].h & 0xffff)     == 0xffff     &&
-                           (old_guids[GUIDS+1].l & 0xffffffff) == 0xffffffff))) {
-            for (int i = 0 ; i < MACS; i++) {
-                u_int64_t mac  =  old_guids[i+1].h >> 8;
-                mac <<= 24;
-                mac |= (old_guids[i+1].l & 0xffffff);
-
-                old_guids[GUIDS+i].h = u_int32_t(mac >> 32);
-                old_guids[GUIDS+i].l = u_int32_t(mac  & 0xffffffff);
-
-                // printf("-D- Guid " GUID_FORMAT " to MAC "MAC_FORMAT"\n", old_guids[i+1].h, old_guids[i+1].l, old_guids[i+GUIDS].h,old_guids[i+GUIDS].l  );
-            }
-        }
-
-        guid_t* macs = &used_guids[4];
-
-        for (int i = 0 ; i < MACS ; i++) {
-            u_int64_t mac = (((u_int64_t)macs[i].h) << 32) | macs[i].l;
-            if (!_burnBlankGuids && !CheckMac(mac)) {
-                return errmsg("Bad mac (" MAC_FORMAT ") %s: %s. Please re-burn with a valid -mac flag value.", macs[i].h,
-                       macs[i].l,
-                       user_macs ? "given" : "found on flash", err());
-            }
-
-        }
-    }
-
-    return true;
-}
-
-
-void Fs2Operations::patchGUIDsSection(u_int32_t *buf, u_int32_t ind, guid_t guids[MAX_GUIDS], int nguids)
-{
-    u_int32_t       new_buf[MAX_GUIDS*2] = {0};
-
-    // Form new GUID section
-    for (u_int32_t i=0; i<(u_int32_t)nguids; i++) {
-        new_buf[i*2] = guids[i].h;
-        new_buf[i*2+1] = guids[i].l;
-    }
-
-    // Patch GUIDs
-    for (u_int32_t i=0; i<sizeof(new_buf)/sizeof(u_int32_t); ++i) {
-        new_buf[i] = _burnBlankGuids ? 0xffffffff : __cpu_to_be32(new_buf[i]);
-    }
-    memcpy(&buf[ind/4], &new_buf[0], nguids * 2 * sizeof(u_int32_t));
-
-    // Insert new CRC
-    if (_burnBlankGuids) {
-        buf[ind/4 + nguids*2] =  __cpu_to_be32(0xffff);
-    } else {
-        recalcSectionCrc((u_int8_t*)buf + ind - sizeof(GPH), sizeof(GPH) + nguids * 8);
-    }
-
-} // patchGUIDsSection
-
-
-
-bool Fs2Operations::patchGUIDs (Fs2Operations&   imageOps,
-                             bool      patch_macs,
-                             bool      user_guids,
-                             bool      user_macs,
-                             guid_t    new_guids[MAX_GUIDS],
-                             guid_t    old_guids[MAX_GUIDS],
-                             u_int32_t num_of_old_guids)
-{
-    guid_t*         used_guids;
-    u_int32_t       *buf = ((FImage*)imageOps._ioAccess)->getBuf();
-
-    // Call common function
-    if (!preFS2PatchGUIDs(patch_macs, user_guids, user_macs, new_guids, old_guids, &used_guids, num_of_old_guids)) {
-        return false;
-    }
-    // Path GUIDs section
-    if (imageOps._fs2ImgInfo.guidPtr) {
-        patchGUIDsSection(buf, imageOps._fwImgInfo.imgStart + imageOps._fs2ImgInfo.guidPtr, used_guids, imageOps._fs2ImgInfo.ext_info.guid_num);
-    }
-    return true;
-}
-
-void Fs2Operations::PatchInfoSect(u_int8_t* rawSect, u_int32_t vsdOffs, const char* vsd)
-{
-
-    u_int32_t  vsdSize  = __be32_to_cpu(*((u_int32_t*)(rawSect + sizeof(GPH) + vsdOffs - 4))) & 0xffffff;
-    u_int32_t  infoSize = __be32_to_cpu(*((u_int32_t*)(rawSect + 4)));
-
-    // byte size;
-    infoSize *= 4;
-
-    if (vsd) {
-        u_int32_t len = strlen(vsd);
-
-        if (len > vsdSize) {
-            report_warn("The given VSD length is too large (%d chars). Truncating to %d chars.\n", len, vsdSize);
-            len = vsdSize;
-        }
-
-        memset(rawSect + sizeof(GPH) + vsdOffs,  0,   vsdSize );
-        memcpy(rawSect + sizeof(GPH) + vsdOffs,  vsd, len);
-    }
-
-    recalcSectionCrc(rawSect, sizeof(GPH) + infoSize);
-}
-
-
-bool Fs2Operations::patchImageVsd(Fs2Operations &imgFwOps, const char* userVsd)
-{
-    u_int32_t *imgBuf = ((FImage*)(imgFwOps._ioAccess))->getBuf();
-    u_int8_t *imgInfoSect = (u_int8_t*)imgBuf + imgFwOps._fs2ImgInfo.infoSectPtr - sizeof(GPH);
-    const char* vsdToUse = (userVsd && ( strlen(userVsd) <= VSD_LEN )) ? userVsd : (const char*)(this->_fwImgInfo.ext_info.vsd);
-    PatchInfoSect(imgInfoSect, imgFwOps._fs2ImgInfo.infoOffs[II_VSD], vsdToUse);
-    return true;
-}
-
-/*********************************************************/
-
-
-#define GUID_PTR_OFF    0x34
-#define IMAGE_INFO_PTR  0x2c
-#define IMAGE_SIZE_OFF  0x30
-#define IMAGE_ROM_INDEX 2
-#define CRC_SECT_SIZE 4
-#define TOTAL_SEC_SIZE(data_size) (data_size + sizeof(GPH) + CRC_SECT_SIZE)
-#define COPY_DW(dest, dword) {\
-    CPUTO1(dword);\
-    memcpy(dest, &dword, 4);\
-}
-
-#define READ_DW(dw, data) {\
-    dw = (*((u_int32_t*)(data)));\
-    TOCPU1(dw);\
-}
-
-
-bool Fs2Operations::CopyData(u_int8_t* &new_image, u_int8_t* &old_image, int copy_size)
-{
-    memcpy(new_image, old_image, copy_size);
-
-    new_image += copy_size;
-    old_image += copy_size;
-
-    return true;
-}
-
-
-
-bool Fs2Operations::CopyBoot2(u_int8_t* &new_image_p, u_int8_t* &old_image_p)
-{
-    u_int32_t size;
-    READ_DW(size, old_image_p + 4);
-    size = (size + 4) * 4;
-    CopyData(new_image_p, old_image_p, size);
-    return true;
-}
-
-bool Fs2Operations::AddNewSect(u_int8_t* &new_image_p, u_int8_t* data, GPH gph, u_int32_t* last_next)
-{
-
-    int size = gph.size * 4  ;
-
-    *last_next =  gph.next + sizeof(GPH);
-
-    CPUTOBY(gph);
-
-    // Copy the GPH
-    memcpy(new_image_p, (u_int8_t*)&gph, sizeof(GPH));
-
-    // Copy the data
-    memcpy(new_image_p + sizeof(GPH), data, size);
-
-    // Calc the CRC and copy it
-    recalcSectionCrc(new_image_p, sizeof(GPH) + size);
-
-    new_image_p = new_image_p + TOTAL_SEC_SIZE(size);
-    return true;
-}
-bool Fs2Operations::UpdateRomInImage(u_int8_t* new_image, u_int8_t* old_image, u_int8_t* rom_data, int rom_size,
-                                  int* new_image_size)
-{
-    GPH gph;
-    u_int32_t header;
-    u_int32_t next_ptr, last_next;
-
-    u_int8_t *new_image_p, *old_image_p;
-    new_image_p = new_image;
-    old_image_p = old_image;
-
-    // Copy first section
-    CopyData(new_image_p, old_image_p, FS2_BOOT_START);
-
-    //// Read BOOT2
-    CopyBoot2(new_image_p, old_image_p);
-
-    READ_DW(header, old_image_p);
-
-    if (header < H_FIRST  ||  header >= H_LAST) {
-        CopyBoot2(new_image_p, old_image_p);
-    }
-    next_ptr = old_image_p - old_image;
-
-    last_next =  next_ptr + sizeof(GPH);
-    int sect_index = 0, rom_inserted = 0;
-
-    // In this case we need to remove the ROM.
-    if (rom_data == NULL) {
-        rom_inserted = 1;
-    }
-
-    while (next_ptr && next_ptr != 0xff000000) {
-        u_int8_t* old_section = old_image + next_ptr;
-        gph = (*(GPH*)(old_section));
-        TOCPUBY(gph);
-        u_int32_t new_image_index = (new_image_p - new_image);
-        sect_index++;
-        //printf("-D- new_image_index = %#x,  next_ptr = %#x\n",  new_image_index, next_ptr);
-        next_ptr = gph.next;
-        u_int8_t* data;
-
-        //printf("-D- Before GPH: type = %#x, size = %#x, next = %#x, param = %#x\n", gph.type, gph.size, gph.next, gph.param);
-
-        if (!rom_inserted && (sect_index == IMAGE_ROM_INDEX || gph.type == H_ROM)) {
-            // prepare new ROM.
-            GPH new_gph;
-            int rom_whole_size =  TOTAL_SEC_SIZE(rom_size);
-
-            data      = rom_data;
-            new_gph.size  = rom_size / 4;
-            new_gph.next  = new_image_index + rom_whole_size;
-            new_gph.param = 0;
-            new_gph.type  = H_ROM;
-
-            AddNewSect(new_image_p, data, new_gph, &last_next);
-
-            rom_inserted = 1;
-        }
-        // If this section is ROM section we will ignore it.
-        if (gph.type == H_ROM) {
-            continue;
-        }
-
-        new_image_index = (new_image_p - new_image);
-        data = old_section + sizeof(GPH);
-        if (gph.next != 0xff000000) {
-           gph.next = new_image_index + TOTAL_SEC_SIZE(gph.size * 4);
-        }
-
-        if (gph.type == H_GUID) {
-            COPY_DW(new_image + GUID_PTR_OFF, last_next);
-        } else if (gph.type == H_IMG_INFO) {
-            u_int32_ba a = last_next;
-            u_int32_t check_sum = 0;
-            for (int i = 0; i < 3; i++) {
-                check_sum += a.range(i * 8 + 7, i * 8);
-            }
-            check_sum = 0x100 - (check_sum % 0x100);
-            a.range(31, 24) = check_sum;
-            last_next = u_int32_t(a);
-            COPY_DW(new_image + IMAGE_INFO_PTR, last_next);
-        }
-        AddNewSect(new_image_p, data, gph, &last_next);
-    }
-    // Update image size.
-    u_int32_t size = new_image_p - new_image;
-    /* TODO: reivew this, also deal with if fw is failsafe we should compare with get_size()/2 if not compare with the entire flash size
-     //check if size is bigger than flash
-    if (size >=  _fwImgInfo.actuallyFailsafe ? (_ioAccess->get_size()/2) : (_ioAccess->get_size())) {
-        return errmsg("Rom is too big to be integrated with the FW image.(img: %d, flash: %d)", (int)size, (int)_ioAccess->get_size() );
-    }*/
-
-    *new_image_size = size;
-
-    COPY_DW(new_image + IMAGE_SIZE_OFF, size);
-
-    // Writing 0 on the CRC existing field to let the tool verify the image
-    // and get some information which will be needed later.
-    u_int32_ba crc_dw = TOCPU1(*(u_int32_t*)(&new_image[IMG_CRC_OFF]));
-    crc_dw.range(23, 16) = 0;
-    (*(u_int32_t*)(&new_image[IMG_CRC_OFF])) = CPUTO1(crc_dw);
-
-    return true;
-}
-
-
-
-bool Fs2Operations::IntegrateDevRomInImage(Fs2Operations &imageOps)
-{
-    u_int32_t rom_size = _romSect.size();
-    FImage* fim = (FImage*)(imageOps._ioAccess);
-    u_int32_t  new_image_size = fim->getBufLength() + TOTAL_SEC_SIZE(rom_size);
-    vector<u_int8_t> new_data(new_image_size);
-    int actual_image_size;
-    //vector<u_int8_t> romWithEndian<>
-    //TOCPUn((u_int8_t*)(&_romSect[0]), rom_size/4);
-
-    // Compine the image and the rom into new daa
-    if(!UpdateRomInImage((u_int8_t*)(&new_data[0]), (u_int8_t*)(fim->getBuf()),
-                         (u_int8_t*)(&_romSect[0]), rom_size, &actual_image_size)) {
-        return errmsg("%s", err());
-    }
-
-    // close old image and open new image with the rom.
-    ((FImage*)(imageOps._ioAccess))->close();
-    ((FImage*)(imageOps._ioAccess))->open((u_int32_t*)(&new_data[0]), actual_image_size);
-
-
-    if (!imageOps.FwVerify((VerifyCallBack)NULL) || !imageOps.Fs2IntQuery()) {
-        return errmsg("Internal error: verify/query of image after integrating ROM failed\n");
-    }
-
-    return true;
-}
-/********************************************************************/
-
-bool Fs2Operations::Fs2Burn(Fs2Operations &imageOps, ExtBurnParams& burnParams)
-{
-    if (imageOps.FwType() != FIT_FS2) {
-        return errmsg(MLXFW_IMAGE_FORMAT_ERR, "FW image type is not FS2\n");
-    }
-
-    if (!imageOps.Fs2IntQuery()) {
-        return false;
-    }
-
-   bool devIntQueryRes = Fs2IntQuery();
-
-   if (!devIntQueryRes && burnParams.burnFailsafe) {
-       return errmsg("%s, burn cannot be failsafe." , err());
-   }
-
-    // Check Matching device ID
-    if (!burnParams.noDevidCheck) {
-        if (imageOps._fs2ImgInfo.infoOffs[II_HwDevsId]) {
-             if (!CheckMatchingHwDevId(_ioAccess->get_dev_id(),
-                                         _ioAccess->get_rev_id(),
-                                         imageOps._fwImgInfo.supportedHwId,
-                                         imageOps._fwImgInfo.supportedHwIdNum)) {
-                 return errmsg(MLXFW_DEVICE_IMAGE_MISSMATCH_ERR, "Device/Image mismatch: %s\n",this->err( ));
-             }
-         } else if (imageOps._fs2ImgInfo.infoOffs[II_DeviceType]) {
-             if (!CheckMatchingDevId(_ioAccess->get_dev_id(), imageOps._fwImgInfo.ext_info.dev_type)) {
-                 return errmsg(MLXFW_DEVICE_IMAGE_MISSMATCH_ERR, "Device/Image mismatch: %s\n",this->err());
-             }
-         }
-
-    }
-
-    // Check PSID
-    if (devIntQueryRes && !CheckPSID(imageOps, burnParams.allowPsidChange)) {
-        return false;
-    }
-
-    // Check if the burnt FW version is OK
-    if (!CheckFwVersion(imageOps, burnParams.ignoreVersionCheck)) {
-        return false;
-    }
-
-    // ROM patchs
-    if (((burnParams.burnRomOptions == ExtBurnParams::BRO_FROM_DEV_IF_EXIST) && (_fwImgInfo.ext_info.roms_info.exp_rom_found)) || // There is ROM in device and user choses ir
-            ((burnParams.burnRomOptions == ExtBurnParams::BRO_DEFAULT) && (!imageOps._fwImgInfo.ext_info.roms_info.exp_rom_found))) { // No ROM in image
-        if (!IntegrateDevRomInImage(imageOps)) {
-            return false;
-        }
-    }
-
-    // Guids patch
-    _burnBlankGuids = burnParams.blankGuids;
-    bool  isGuidsSpecified  =  burnParams.userMacsSpecified || burnParams.userGuidsSpecified;
-    if (isGuidsSpecified) {
-        // Get the GUIDS/MACsUIDs from the user input
-        if (!patchGUIDs(imageOps, true, burnParams.userGuidsSpecified, burnParams.userMacsSpecified,
-                (guid_t*)(&(burnParams.userUids[0])), _fs2ImgInfo.ext_info.guids, _fs2ImgInfo.ext_info.guid_num)) {
-            return false;
-        }
-    } else if (!burnParams.useImageGuids) {
-        // Get the GUIDS/MACsUIDs from the device
-        if (!patchGUIDs(imageOps, true, false, false, (guid_t*)NULL,
-                _fs2ImgInfo.ext_info.guids, _fs2ImgInfo.ext_info.guid_num)) {
-            return false;
-        }
-    }
-    // Patch the image VSD file
-    if (burnParams.vsdSpecified || !burnParams.useImagePs) {
-        if (!patchImageVsd(imageOps, burnParams.userVsd)) {
-            return false;
-        }
-    }
-    return Fs2FailSafeBurn(imageOps, !burnParams.burnFailsafe, "", burnParams.progressFunc);
-}
-
-bool Fs2Operations::Fs2IsMacAvailable()
-{
-
-    if (_fwImgInfo.ext_info.chip_type == CT_IS4 ) {
-        return false;
-    }
-    return true;
-}
-
-bool Fs2Operations::FwBurn(FwOperations *imageOps, u_int8_t forceVersion, ProgressCallBack progressFunc)
-{
-    if (imageOps == NULL) {
-        return errmsg("bad parameter is given to FwBurn\n");
-    }
-    ExtBurnParams burnParams = ExtBurnParams();
-    burnParams.ignoreVersionCheck = forceVersion;
-    burnParams.progressFunc = progressFunc;
-
-    return Fs2Burn((*(Fs2Operations*)imageOps), burnParams);
-
-}
-
-bool Fs2Operations::FwBurnAdvanced(FwOperations *imageOps, ExtBurnParams& burnParams)
-{
-    if (imageOps == NULL) {
-        return errmsg("bad parameter is given to FwBurnAdvanced\n");
-    }
-    return Fs2Burn((*(Fs2Operations*)imageOps), burnParams);
-
-}
-
-bool Fs2Operations::FwBurnBlock(FwOperations *imageOps, ProgressCallBack progressFunc)
-{
-    if (imageOps == NULL) {
-        return errmsg("bad parameter is given to FwBurnBlock\n");
-    }
-
-    FImage *fim = (FImage*)((Fs2Operations*)imageOps)->_ioAccess;
-    return writeImage(progressFunc, 0, fim->getBuf(), fim->getBufLength());
-}
-
-bool Fs2Operations::FwReadRom(std::vector<u_int8_t>& romSect)
-{
-    if (!Fs2IntQuery()) {
-        return false;
-    }
-    if (_romSect.empty()) {
-        return errmsg("The FW does not contain a ROM section");
-    }
-    romSect = _romSect;
-    return true;
-}
-
-bool Fs2Operations::FwSetMFG(fs3_uid_t baseGuid, PrintCallBack callBackFunc)
-{
-    // avoid compiler warrnings
-    (void)baseGuid;
-    (void)callBackFunc;
-    return errmsg("This command is not supported for FS2 FW image.");
-}
-
-bool Fs2Operations::FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc)
-{
-    // avoid compiler warrnings
-    (void)baseGuid;
-    (void)callBackFunc;
-    return errmsg("This command is not supported for FS2 FW image.");
-}
-
-bool Fs2Operations::FwGetSection (u_int32_t sectType, std::vector<u_int8_t>& sectInfo, bool stripedImage)
-{
-    if (sectType != H_FW_CONF && sectType != H_HASH_FILE) {
-        return errmsg("Hash File section not found in the given image.");
-    }
-    initSectToRead(sectType);
-    if (!Fs2Verify((VerifyCallBack)NULL, stripedImage)) {
-        return false;
-    }
-    if (sectType == H_FW_CONF) {
-        sectInfo = _fwConfSect;
-    } else {
-        sectInfo = _hashFileSect;
-    }
-    if (sectInfo.empty()) {
-        return errmsg("Hash File section not found in the given image.");
-    }
-    return true;
-}
-
-bool Fs2Operations::ModifyVSDSection(const char *vsd, ProgressCallBack callBackFunc)
-{
-       (void)callBackFunc; /* avoid compiler warning*/
-    u_int32_t length = _fwImgInfo.lastImageAddr;
-    vector<u_int8_t> data(length);
-
-    // Read the image.
-    if (!_ioAccess->read(0, (u_int8_t*)(&data[0]), length)) {
-        return errmsg("Flash/Image read failed. %s", _ioAccess->err());
-    }
-    // Change the VSD
-    PatchInfoSect((u_int8_t*)(&data[0]) + _fs2ImgInfo.infoSectPtr - sizeof(GPH),
-                  _fs2ImgInfo.infoOffs[II_VSD],
-                   vsd);
-    // Re-burn the new Image after modifying the VSD
-    return ReburnNewImage((u_int8_t*)(&data[0]), "VSD", callBackFunc);
-}
-
-bool Fs2Operations::ReburnNewImage(u_int8_t *data, const char *feature_name, ProgressCallBack callBackFunc)
-{
-    u_int32_t length        = _fwImgInfo.lastImageAddr;
-    //char burn_str[100];
-    bool is_image = (_fname != NULL);
-    bool needs_repack = (is_image && _fwImgInfo.actuallyFailsafe);
-
-    // Burn the Image after modifying the VSD.
-
-    // Create a fwOperations object of the modified image
-    FwOperations* newOps = FwOperationsCreate((void*)data, (void*)&length, (char*)NULL, FHT_FW_BUFF);
-
-    // Verify the new image and exit if it's not VALID.
-    if (!((Fs2Operations*)newOps)->Fs2IntQuery()) {
-        return errmsg(MLXFW_IMAGE_CORRUPTED_ERR, "Internal error: The prepared image After modifying the %s is corrupted: %s\n", feature_name, newOps->err());
-    }
-    if (!is_image) {
-        // Modify the flash
-        if (!Fs2FailSafeBurn(*((Fs2Operations*)newOps), true, (const char*)NULL, callBackFunc)) {
-            return false;
-        }
-    } else {
-        u_int8_t *striped_data = new u_int8_t[length * 2];
-        u_int32_t striped_length;
-
-        // Modify the image.
-        // Update the Full image CRC.
-        UpdateFullImageCRC((u_int32_t*)data, length / 4, false);
-
-        // Re-pack the image as it was given.
-        // When it was striped this function would return it to that case.
-        packStripedImageData(striped_data, data, length, striped_length, needs_repack, _fwImgInfo.cntxLog2ChunkSize);
-
-        // Re-write the image to the file.
-        if (!WriteImageToFile(_fname, striped_data, striped_length)) {
-            delete[] striped_data;
-            return false;
-       }
-        delete[] striped_data;
-    }
-    return true;
-}
-
-bool Fs2Operations::packStripedImageData(u_int8_t *striped_data, u_int8_t *normal_data, u_int32_t length, u_int32_t &striped_length,
-        bool needs_repack, u_int32_t cntxLog2ChunkSize)
-{
-    if (needs_repack) {
-        u_int32_t chunk_size = 1 << cntxLog2ChunkSize;
-        u_int32_t chunk_num = (length / chunk_size) + 1;
-        striped_length = 0;
-
-        // Loop which runs over the chunks
-        for (u_int32_t i = 0; i < chunk_num; i++) {
-            u_int32_t normal_index  = i * chunk_size;
-            u_int32_t striped_index = normal_index * 2;
-
-            u_int32_t size = (length - normal_index);
-            u_int8_t *striped_ptr = striped_data + striped_index;
-
-            size = (size <= chunk_size) ? size : chunk_size;
-            memcpy(striped_ptr, normal_data + normal_index, size);
-            striped_length += size;
-
-            if (i != (chunk_num - 1)) {
-                // Add blank chunk after all the chunks instead the last one.
-                memset(striped_ptr + chunk_size, 0xff, chunk_size);
-                striped_length += chunk_size;
-            }
-        }
-    } else {
-        striped_length = length;
-        memcpy(striped_data, normal_data, length);
-    }
-    return true;
-
-}
-
-bool Fs2Operations::ModifyKeySection(guid_t access_key, ProgressCallBack callBackFunc)
-{
-
-    u_int32_t length = _fwImgInfo.lastImageAddr;
-    vector<u_int8_t> data(length);
-
-    // Read the image.
-    if (!_ioAccess->read(0, (u_int8_t*)(&data[0]), length)) {
-        return errmsg("Flash/Image read failed. %s\n", _ioAccess->err());
-    }
-
-    // Change the VSD
-    PatchKeySect((u_int32_t*)(&data[0] + _fs2ImgInfo.infoSectPtr - sizeof(GPH)),
-                  _fs2ImgInfo.infoOffs[II_HwAccessKey],
-                  access_key);
-    // Re-burn the new Image after modifying the VSD
-    return ReburnNewImage((u_int8_t*)(&data[0]), "HW Key", callBackFunc);
-}
-
-void Fs2Operations::PatchKeySect(u_int32_t* buff, u_int32_t keyOff, guid_t hw_key)
-{
-    u_int32_t  infoSize = __be32_to_cpu(*(buff + 1));
-    u_int32_t sectSize = sizeof(GPH) + infoSize * 4;
-
-    u_int32_t realKeyoff = (keyOff  +  sizeof(GPH)) / 4;
-
-    // Update the key in the buffer which is supposed to be burnt into the flash
-    buff[realKeyoff]     = __cpu_to_be32(hw_key.h);
-    buff[realKeyoff + 1] = __cpu_to_be32(hw_key.l);
-
-    recalcSectionCrc((u_int8_t*)buff, sectSize);
-    return;
-}
-
-bool Fs2Operations::ModifyGuidSection(guid_t *user_guids, ProgressCallBack progressFunc)
-{
-    u_int32_t length = _fwImgInfo.lastImageAddr;
-    vector<u_int8_t> data(length);
-
-    // Read the image.
-    if (!_ioAccess->read(0, (u_int8_t*)(&data[0]), length)) {
-        return errmsg("Flash/Image read failed: %s\n", _ioAccess->err());
-    }
-    // Change the GUIDs section according to the user given GUIDs
-    patchGUIDsSection ((u_int32_t*)(&data[0]), _fs2ImgInfo.guidPtr, user_guids, _fs2ImgInfo.ext_info.guid_num);
-    // Re-burn the new Image after modifying the GUIDs
-    return ReburnNewImage((u_int8_t*)(&data[0]), "GUIDs", progressFunc);
-}
-
-bool Fs2Operations::Fs2SetGuidsForBlank(sg_params_t& sgParam)
-{
-    // There is blank GUIDs on the device (not image)
-    u_int32_t guid_sect_addr[2] = {0};
-    u_int32_t length  = _fwImgInfo.ext_info.image_size;
-    if (!_ioAccess->is_flash()) {
-        return errmsg("Image file is not supported.");
-    }
-
-
-    guid_sect_addr[0] = _fs2ImgInfo.guidPtr;
-
-    for (int i = 0; i < 2 && guid_sect_addr[i]; i++ ) {
-        u_int32_t guid_sect[MAX_GUIDS*2 + 5]; // Save room for header + crc
-
-        if (!_ioAccess->read(guid_sect_addr[i] - 16 , guid_sect, 16)) {
-            return errmsg("Failed to read guids section - flash read error (%s)\n", _ioAccess->err());
-        }
-        // we have blank guids so make sure we have ffff in sgParams.userGuids in the correct pos
-        if (!sgParam.guidsSpecified) {
-            memset(&sgParam.userGuids[0], 0xff, (sizeof(guid_t))*GUIDS);
-        }
-        if (!sgParam.macsSpecified) {
-            memset(&sgParam.userGuids[GUIDS], 0xff, (sizeof(guid_t))*MACS);
-        }
-       //  patchGUIDsSection(u_int32_t *buf, u_int32_t ind, guid_t guids[MAX_GUIDS], int nguids)
-        patchGUIDsSection (guid_sect, 16, &sgParam.userGuids[0], _fs2ImgInfo.ext_info.guid_num);
-
-        if (!((Flash*)_ioAccess)->write(guid_sect_addr[i], guid_sect + 4 , _fs2ImgInfo.ext_info.guid_num * 8 + 4, true)) {
-            return errmsg("flash write error (%s)\n", _ioAccess->err());
-        }
-    }
-    if (sgParam.updateCrc) {
-       // Read the image.
-        vector<u_int8_t> data(length);
-
-        if (!_ioAccess->read(0, (u_int32_t*)(&data[0]), length)) {
-            return errmsg("Flash read failed: %s\n", _ioAccess->err());
-        }
-        // TODO: Do we need to update the CRC existing ORENK
-        // Calc & Update CRC.
-        u_int32_t *new_data =  (u_int32_t*)(&data[0]);
-        u_int32_t crc = CalcImageCRC(new_data, length / 4);
-        u_int32_ba old_dw = __be32_to_cpu(new_data[IMG_CRC_OFF / 4]);
-        old_dw.range(15, 0) =  crc;
-        u_int32_t new_crc_dw = CPUTO1(old_dw);
-
-        if (!((Flash*)_ioAccess)->write(IMG_CRC_OFF, &new_crc_dw, 4, true)) {
-            return errmsg(MLXFW_FLASH_WRITE_ERR, "flash write error (%s).", _ioAccess->err());
-        }
-    }
-    return true;
-}
-
-bool Fs2Operations::Fs2SetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc, ProgressCallBack progressFunc)
-{
-    // avoid compiler warrnings
-    (void)callBackFunc;
-    //
-    bool ib_dev, eth_dev;
-    // Get the FW types
-    SetDevFlags(_fwImgInfo.ext_info.chip_type, _fwImgInfo.ext_info.dev_type, FIT_FS2, ib_dev, eth_dev);
-    guid_t* old_guids = _fwImgInfo.imageOk ? _fs2ImgInfo.ext_info.guids : (guid_t*)NULL;
-    guid_t* used_guids;
-
-    // Patch the GUIDs and prints any needed warnings
-
-        //resize our user guids vector to MAX_GUIDS
-    sgParam.userGuids.resize(MAX_GUIDS);
-
-    if (!preFS2PatchGUIDs(eth_dev, sgParam.guidsSpecified, sgParam.macsSpecified, &sgParam.userGuids[0],
-                        old_guids, &used_guids, _fs2ImgInfo.ext_info.guid_num)) {
-        return false;
-    }
-
-    // Modify the guids in the burnt image and re-burn it
-    if (!ModifyGuidSection(used_guids, progressFunc)) {
-        return false;
-    }
-    return true;
-}
-
-bool Fs2Operations::FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc,
-        ProgressCallBack progressFunc)
-{
-       /* avoid annoying mingw warnings*/
-       (void)callBackFunc;
-       (void)progressFunc;
-
-    if (!Fs2IntQuery(true, sgParam.stripedImage)) {
-        return false;
-    }
-    if (sgParam.userGuids.size() != MAX_GUIDS) {
-        return errmsg("invalid userGuid vector size given in sgParams.");
-    }
-    if (_fs2ImgInfo.ext_info.blank_guids) {
-        return Fs2SetGuidsForBlank(sgParam);
-    }
-    return Fs2SetGuids(sgParam, callBackFunc, progressFunc);
-}
-
-
-bool Fs2Operations::FwBurnRom(FImage* romImg, bool ignoreProdIdCheck, bool ignoreDevidCheck, ProgressCallBack progressFunc)
-{
-    // we dont support adding rom to an image just yet
-    if (!_ioAccess->is_flash()) {
-        return errmsg("Burn ROM not supported for FS2 image.");
-    }
-    //make sure we dont get fwImage instead of rom file
-
-    u_int32_t cntx_image_start[CNTX_START_POS_SIZE];
-    u_int32_t cntx_image_num;
-    FindAllImageStart(romImg, cntx_image_start, &cntx_image_num, _cntx_magic_pattern);
-    if (cntx_image_num != 0) {
-        return errmsg("Expecting an expansion ROM image, Received Mellanox FW image.");
-    }
-
-    if (!Fs2IntQuery()) {
-        return false;
-    }
-
-    if (_fwImgInfo.ext_info.chip_type != CT_CONNECTX) {
-        // TODO: Indicate the device name.
-        return errmsg("Unsupported device type %d", _fwImgInfo.ext_info.dev_type);
-    }
-
-    if (_romSect.empty() && !IsFwSupportingRomModify(_fwImgInfo.ext_info.fw_ver)) {
-        return errmsg("It is not allowed to burn ROM on device which has fw: %d.%d.%d that doesn't contain ROM.", _fwImgInfo.ext_info.fw_ver[0],
-                   _fwImgInfo.ext_info.fw_ver[1], _fwImgInfo.ext_info.fw_ver[2]);
-    }
-
-    if (!ignoreProdIdCheck && _fs2ImgInfo.infoOffs[II_ProductVer]) {
-        return errmsg("The device FW contains common FW/ROM Product Version - The ROM cannot be updated separately.");
-    }
-    u_int32_t length        = _fwImgInfo.lastImageAddr;
-    u_int32_t new_data_size = length + TOTAL_SEC_SIZE(romImg->getBufLength());
-    vector<u_int8_t> data(length);
-    vector<u_int8_t> new_data(new_data_size);
-
-    // Read the image.
-    if (!_ioAccess->read(0, (u_int8_t*)(&data[0]), length)) {
-        return errmsg("Flash read failed: %s", _ioAccess->err());
-    }
-
-    u_int32_t new_image_size;
-
-    // Insert the rom to the image.
-    if(!UpdateRomInImage((u_int8_t*)(&new_data[0]), (u_int8_t*)(&data[0]),
-                             (u_int8_t*)romImg->getBuf(), romImg->getBufLength(),
-                             (int*)&new_image_size)) {
-        return false;
-    }
-    // open the image
-    FwOperations* newOps = FwOperationsCreate((void*)&new_data[0], (void*)&new_image_size, (char*)NULL, FHT_FW_BUFF);
-    if (!newOps) {
-        return errmsg("Internal error: The prepared image is corrupted.");
-    }
-
-    if (!((Fs2Operations*)newOps)->Fs2Verify((VerifyCallBack)NULL,false, false, false, true) || !((Fs2Operations*)newOps)->Fs2Query()) {
-        errmsg("Internal error: The prepared image is corrupted: %s", newOps->err());
-        newOps->FwCleanUp();
-        delete newOps;
-        return false;
-    }
-    // init fw_info_t struct for checkMatchingExpRomDevId
-    fw_info_t info;
-    info.fw_type = FIT_FS2;
-    info.fw_info = ((Fs2Operations*)newOps)->_fwImgInfo.ext_info;
-    //no need to init the fs2_info part of fw_info_t as the function doesnt use it.
-
-    if (!ignoreDevidCheck && !FwOperations::checkMatchingExpRomDevId(info)) {
-        errmsg("Image file ROM: FW is for device %d, but Exp-ROM is for device %d\n", ((Fs2Operations*)newOps)->_fwImgInfo.ext_info.dev_type,\
-                ((Fs2Operations*)newOps)->_fwImgInfo.ext_info.roms_info.exp_rom_com_devid);
-        newOps->FwCleanUp();
-        delete newOps;
-        return false;
-    }
-
-    bool rc = Fs2FailSafeBurn(*((Fs2Operations*)newOps), true, "Burning ROM image", progressFunc);
-    newOps->FwCleanUp();
-    delete newOps;
-    return rc;
-}
-
-bool Fs2Operations::FwDeleteRom(bool ignoreProdIdCheck, ProgressCallBack progressFunc)
-{
-    // we dont support delete rom in FS2 image yet
-    if (!_ioAccess->is_flash()) {
-        return errmsg("Delete ROM not supported for FS2 image.");
-    }
-    // Verify to get some parameters
-    if (!Fs2IntQuery()) {
-        return false;
-    }
-
-    if (_fwImgInfo.ext_info.chip_type != CT_CONNECTX) {
-        // TODO: Indicate the device name.
-        return errmsg("Unsupported device type %d", _fwImgInfo.ext_info.dev_type);
-    }
-    if (_romSect.empty()) {
-        return errmsg("The FW does not contain a ROM section.");
-    }
-
-    if (!IsFwSupportingRomModify(_fwImgInfo.ext_info.fw_ver)) {
-        return errmsg("Unsupported Fw version (%d.%d.%d).", _fwImgInfo.ext_info.fw_ver[0],
-                   _fwImgInfo.ext_info.fw_ver[1], _fwImgInfo.ext_info.fw_ver[2]);
-    }
-
-    if (!ignoreProdIdCheck && _fs2ImgInfo.infoOffs[II_ProductVer]) {
-        return errmsg("The device FW contains common FW/ROM Product Version - The ROM cannot be removed separately.\n");
-    }
-
-    u_int32_t length        = _fwImgInfo.lastImageAddr;
-    vector<u_int8_t> data(length);
-    vector<u_int8_t> new_data(length);
-
-    // Read the image.
-    if (!_ioAccess->read(0, (u_int8_t*)(&data[0]), length)) {
-        return errmsg("Flash read failed: %s\n", _ioAccess->err());
-    }
-    int new_image_size;
-    if(!UpdateRomInImage((u_int8_t*)(&new_data[0]), (u_int8_t*)(&data[0]),
-                             (u_int8_t*)NULL, 0, &new_image_size)) {
-        return errmsg("%s", _ioAccess->err());
-    }
-
-    // Burn the Image after the ROM was removed.
-    FwOperations* newOps = FwOperationsCreate((void*)&new_data[0], (void*)&new_image_size, (char*)NULL, FHT_FW_BUFF);
-    if (!newOps) {
-        return errmsg("Internal error: The prepared image after removing the ROM is corrupted.");
-    }
-
-    // To verify the new image and exit if it's not VALID.
-    if (!((Fs2Operations*)newOps)->Fs2Verify((VerifyCallBack)NULL,false, false, false, true) || !((Fs2Operations*)newOps)->Fs2Query()) {
-        errmsg("Internal error: The prepared image after removing the ROM is corrupted: %s", newOps->err());
-        newOps->FwCleanUp();
-        delete newOps;
-        return false;
-    }
-    bool rc = Fs2FailSafeBurn(*((Fs2Operations*)newOps), true, "Removing ROM image", progressFunc);
-    newOps->FwCleanUp();
-    delete newOps;
-    return rc;
-}
-
-bool Fs2Operations::FwSetVSD(char* vsdStr, ProgressCallBack progressFunc, PrintCallBack printFunc)
-{
-    // avoid compiler warrnings
-    (void)printFunc;
-    //
-    if (!Fs2IntQuery()) {
-        return false;
-    }
-    if (_fwImgInfo.ext_info.chip_type != CT_CONNECTX) {
-        // TODO: Indicate the device name.
-        return errmsg("Unsupported device type %d", _fwImgInfo.ext_info.dev_type);
-    }
-
-    if (!_fs2ImgInfo.infoOffs[II_VSD]) {
-        return errmsg("No info section on the image.");
-    }
-
-    if (strlen(vsdStr) > VSD_LEN) {
-       return errmsg("VSD string is too long(%d), max allowed length: %d", (int)strlen(vsdStr), VSD_LEN);
-    }
-
-    if (!ModifyVSDSection(vsdStr, progressFunc)) {
-        return false;
-    }
-    return true;
-}
-
-bool Fs2Operations::FwSetVPD(char* vpdFileStr, PrintCallBack callBackFunc)
-{
-    // avoid compiler warrnings
-    (void)vpdFileStr;
-    (void)callBackFunc;
-    return errmsg("Setting VPD is not supported in FS2 image format.");
-}
-
-bool Fs2Operations::FwSetAccessKey(hw_key_t userKey, ProgressCallBack progressFunc)
-{
-       /*avoid compiler warning*/
-       (void)progressFunc;
-    if (!Fs2IntQuery()) {
-        return false;
-    }
-    if (_fwImgInfo.ext_info.chip_type != CT_CONNECTX) {
-        // TODO: Indicate the device name.
-        return errmsg("Unsupported device type %d", _fwImgInfo.ext_info.dev_type);
-    }
-
-    if (!_fs2ImgInfo.infoOffs[II_HwAccessKey]) {
-        return errmsg("The image does not support this operation.");
-    }
-
-    if (!ModifyKeySection(userKey, progressFunc)) {
-        return false;
-    }
-    return true;
-
-}
-
-bool Fs2Operations::FwResetNvData()
-{
-
-    if (!_ioAccess->is_flash()) {
-       return errmsg("Cannot perform operation on Image");
-    }
-
-    if (!Fs2IntQuery()) {
-        return false;
-    }
-    u_int32_t devId = _ioAccess->get_dev_id();
-    if ( devId != CX3_HW_ID && devId != CX3_PRO_HW_ID ) {
-        // TODO: Indicate the device name.
-        return errmsg("Unsupported device type(%d). Can only perform operation on CX3/CX3-PRO ", _fwImgInfo.ext_info.dev_type);
-    }
-
-    if (_fs2ImgInfo.fw_sector_size == 0) {// if fw was generated with old mft i.e without the fw_sector_size than we dont allow this operation
-        return errmsg("Firmware was generated with old MFT, please use MFT-3.6.0 or above");
-    }
-
-    // find configuration section base addr = (flash size - (config_sectors + config_pad)*64k)
-
-    u_int32_t availFlashSize = _fwImgInfo.actuallyFailsafe ? (_ioAccess->get_size()/2) : _ioAccess->get_size();
-    u_int32_t fwSectorSz = _fs2ImgInfo.fw_sector_size != 0 ? _fs2ImgInfo.fw_sector_size : getDefaultSectorSz();
-    u_int32_t reservedArea = _fs2ImgInfo.ext_info.config_sectors * fwSectorSz;
-    reservedArea = reservedArea > MAX_CONFIG_AREA_SIZE ? MAX_CONFIG_AREA_SIZE : reservedArea;
-    u_int32_t configBaseAddr;
-       if (_fwImgInfo.actuallyFailsafe) {
-               configBaseAddr = availFlashSize  - (reservedArea + _fs2ImgInfo.ext_info.config_pad * fwSectorSz) ;
-       } else {
-               // For non FS image, there's an optional offset + 2 consecutive config areas
-        configBaseAddr = availFlashSize - (reservedArea* 2 + (_fs2ImgInfo.ext_info.config_pad * fwSectorSz));
-       }
-
-    //printf("-D- config_sectors:0x%x config_pads: 0x%x , sector_size:0x%x, configBaseAddr:0x%x, flashSize:0x%x\n",
-                       //_fs2ImgInfo.ext_info.config_sectors, _fs2ImgInfo.ext_info.config_pad, fwSectorSz,configBaseAddr, availFlashSize);
-
-       //erase addresses : [configBaseAddr..AvailFlashSize]
-    ((Flash*)_ioAccess)->set_flash_working_mode(Flash::Fwm_Default);
-    u_int32_t sectorSize = _ioAccess->get_sector_size();
-    u_int32_t configEndAddr = availFlashSize - (_fs2ImgInfo.ext_info.config_pad * fwSectorSz);
-       for (u_int32_t eraseAddr=configBaseAddr; eraseAddr < configEndAddr; eraseAddr+=sectorSize ) {
-               if (!((Flash*)_ioAccess)->erase_sector(eraseAddr)) {
-                       return errmsg("failed to erase configuration address: 0x%x. %s", eraseAddr, _ioAccess->err());
-               }
-               if (_fwImgInfo.actuallyFailsafe) { // erase config sectors on the other half aswell
-                       ((Flash*)_ioAccess)->set_address_convertor(_fwImgInfo.cntxLog2ChunkSize, !(_fwImgInfo.imgStart != 0));
-                       if (!((Flash*)_ioAccess)->erase_sector(eraseAddr)) {
-                               ((Flash*)_ioAccess)->set_address_convertor(_fwImgInfo.cntxLog2ChunkSize, (_fwImgInfo.imgStart != 0));;
-                               return errmsg("failed to erase configuration address: 0x%x. %s", eraseAddr, _ioAccess->err());
-                       }
-                       // restore address converter
-                       ((Flash*)_ioAccess)->set_address_convertor(_fwImgInfo.cntxLog2ChunkSize, (_fwImgInfo.imgStart != 0));
-               }
-       }
-    return true;
-
-}
-
-bool Fs2Operations::FwShiftDevData(PrintCallBack progressFunc)
-{
-    // avoid compiler warrnings
-    (void)progressFunc;
-    return errmsg("Shifting device data sections is not supported in FS2 image format.");
-}
-
-const char* Fs2Operations::FwGetResetRecommandationStr()
-{
-    if (!_devName) {// not an mst device
-        return (const char*)NULL;
-    }
-    return (const char*)NULL;
-}
-
-bool Fs2Operations::FwCalcMD5(u_int8_t md5sum[16])
-{
-#if defined(UEFI_BUILD) || defined(NO_OPEN_SSL)
-    (void)md5sum;
-    return errmsg("Operation not supported");
-#else
-    // no support for striped image ATM
-    if (!Fs2IntQuery(true, false)) {
-        return false;
-    }
-    if (_fwImgInfo.ext_info.is_failsafe && _fwImgInfo.actuallyFailsafe) {
-        _ioAccess->set_address_convertor(_fwImgInfo.cntxLog2ChunkSize, _fwImgInfo.imgStart != 0);
-    } else {
-        _ioAccess->set_address_convertor(0, 0);
-    }
-    // read entire flash
-    std::vector<u_int8_t> md5buff;
-    md5buff.resize(_fwImgInfo.lastImageAddr);
-    READBUF((*_ioAccess), 0, &md5buff[0], _fwImgInfo.lastImageAddr, "Calculate MD5");
-    // mask out image CRC, GUIDs, VSD, ImageInfo CRC
-    // full image CRC DW
-    memset(&md5buff[0x20], 0xff, 4);
-    // GUIDs
-    memset(&md5buff[_fs2ImgInfo.guidPtr - 0x10], 0xff, 0x44);
-    // VSD
-    memset(&md5buff[_fs2ImgInfo.infoSectPtr + _fs2ImgInfo.infoOffs[II_VSD]], 0xff, 0xd0);
-    // Image Info CRC
-    u_int32_t infoSectSize = __be32_to_cpu(*(u_int32_t*)&md5buff[_fs2ImgInfo.infoSectPtr - sizeof(GPH) + 0x4]) << 2;
-    memset(&md5buff[_fs2ImgInfo.infoSectPtr + infoSectSize], 0xff, 4);
-    // calc md5 sum
-    tools_md5(&md5buff[0], md5buff.size(), md5sum);
-    return true;
-#endif
-}
diff --git a/mlxfwops/lib/fs2_ops.h b/mlxfwops/lib/fs2_ops.h
deleted file mode 100644 (file)
index bc87ecf..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#ifndef FS2_OPS_
-#define FS2_OPS_
-
-#include "fw_ops.h"
-#define FULL_VERIFY         0xff
-
-
-class Fs2Operations : public FwOperations {
-public:
-    Fs2Operations(FBase *ioAccess) :
-        FwOperations(ioAccess), _burnBlankGuids(false), _isFullVerify(false){};
-
-    virtual ~Fs2Operations()  {};
-    //virtual void print_type() {};
-    virtual bool FwQuery(fw_info_t *fwInfo, bool readRom = true, bool isStripedImage = false);
-    virtual bool FwVerify(VerifyCallBack verifyCallBackFunc, bool isStripedImage = false, bool showItoc = false);
-
-    virtual bool FwBurn(FwOperations *imageOps, u_int8_t forceVersion, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-    virtual bool FwBurnAdvanced(FwOperations *imageOps, ExtBurnParams& burnParams);
-    virtual bool FwBurnBlock(FwOperations* imageOps, ProgressCallBack progressFunc);
-
-    virtual bool FwBurnRom(FImage* romImg, bool ignoreProdIdCheck = false, bool ignoreDevidCheck = false,
-            ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-    virtual bool FwDeleteRom(bool ignoreProdIdCheck, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-
-    // virtual bool FwSetGuids(std::vector<guid_t>& userGuids, std::vector<guid_t>& userMacs, bool updateCrc=true, PrintCallBack callBackFunc=(PrintCallBack)NULL);
-    virtual bool FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc=(PrintCallBack)NULL, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-
-    virtual bool FwSetMFG(fs3_uid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL);
-    virtual bool FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL);
-    virtual bool FwSetVSD(char* vsdStr, ProgressCallBack progressFunc=(ProgressCallBack)NULL, PrintCallBack printFunc=(PrintCallBack)NULL);
-    virtual bool FwSetVPD(char* vpdFileStr, PrintCallBack callBackFunc=(PrintCallBack)NULL);
-    virtual bool FwSetAccessKey(hw_key_t userKey, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-    virtual bool FwShiftDevData(PrintCallBack progressFunc=(PrintCallBack)NULL);
-    virtual bool FwResetNvData();
-    virtual const char*  FwGetResetRecommandationStr();
-
-    virtual bool FwGetSection (u_int32_t sectType, std::vector<u_int8_t>& sectInfo, bool stripedImage=false);
-
-
-
-    virtual u_int8_t FwType();
-    virtual bool FwInit();
-    virtual bool FwReadData(void* image, u_int32_t* image_size);
-    virtual bool FwReadRom(std::vector<u_int8_t>& romSect);
-    virtual bool FwCalcMD5(u_int8_t md5sum[16]);
-
-
-private:
-
-    enum Fs2ImageInfoTags {
-        II_IiFormatRevision   = 0,
-        II_FwVersion          = 1,
-        II_FwBuildTime        = 2,
-        II_DeviceType         = 3,
-        II_PSID               = 4,
-        II_VSD                = 5,
-        II_SuppurtedPsids     = 6,
-        II_ProductVer         = 7,
-        II_VsdVendorId        = 8,
-        II_IsGa               = 9,
-        II_HwDevsId           = 10,
-        II_MicVersion         = 11,
-        II_MinFitVersion      = 12,
-        II_HwAccessKey        = 13,
-        II_PROFILES_LIST      = 14,
-        II_SUPPORTED_PROFS    = 15,
-        II_CONFIG_INFO        = 16,
-        II_TLVS_FORMAT        = 17,
-        II_TRACER_HASH        = 18,
-        II_ConfigArea         = 19,
-        II_PSInfo             = 20,
-        II_Last,              // Mark the end of used tag ids
-        II_End                = 0xff
-    };
-    struct Fs2ImgInfo {
-        fs2_info_t ext_info;
-        u_int32_t  infoOffs[II_Last];
-        bool       psOk;
-        // Configuraqtion info
-        std::vector<u_int8_t> profListSectZipped;
-        std::vector<u_int8_t> TlvFormatSectZipped;
-        std::vector<u_int8_t> TracerHashSectZipped;
-        std::vector<u_int32_t> supportedProfList;
-        u_int32_t defPorfile;
-        u_int32_t configAddr1;
-        u_int32_t configAddr2;
-        u_int32_t configSize;
-        bool      isConfigurable;
-        u_int32_t    infoSectPtr;
-        u_int32_t    guidPtr;
-        u_int32_t   fw_sector_size;
-
-    };
-
-
-    bool Fs2Verify(VerifyCallBack verifyCallBackFunc = (VerifyCallBack)NULL, bool is_striped_image = false, bool both_images = false,
-            bool only_get_start = false, bool ignore_full_image_crc = false, bool force_no_striped_image = false);
-    bool Fs2Query ();
-    bool Fs2Burn(Fs2Operations &imageOps, ExtBurnParams& burnParams);
-
-
-    bool CntxGetFsData(u_int32_t fs_info_word, bool& fs_en, u_int32_t& log2chunk_size);
-    bool checkList(u_int32_t offs, u_int32_t fw_start, const char *pref, VerifyCallBack verifyCallBackFunc = (VerifyCallBack)NULL);
-    bool checkGen(u_int32_t beg,u_int32_t offs, u_int32_t& next, const char *pref, VerifyCallBack verifyCallBackFunc = (VerifyCallBack)NULL);
-    bool ParseInfoSect(u_int8_t* buff, u_int32_t byteSize);
-    bool Fs2IntQuery(bool readRom = true, bool isStripedImage=false);
-    u_int32_t getDefaultSectorSz();
-    bool GetMaxImageSize(u_int32_t flash_size, bool image_is_fs, u_int32_t imgConfigSectors, u_int32_t imgFwSectorSz, u_int32_t &max_image_size);
-    bool UpdateFullImageCRC(u_int32_t* buff, u_int32_t size, bool blank_guids);
-    bool Fs2FailSafeBurn(Fs2Operations &imageOps, bool allow_nofs, const char* pre_message,
-            ProgressCallBack progressFunc);
-    bool ModifyGuidSection(guid_t *user_guids, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-    bool preFS2PatchGUIDs(bool patch_macs, bool user_guids, bool user_macs,
-            guid_t new_guids[MAX_GUIDS], guid_t old_guids[MAX_GUIDS], guid_t **used_guids_p, u_int32_t num_of_old_guids);
-    bool patchGUIDs (Fs2Operations& imageOps, bool patch_macs, bool user_guids, bool user_macs,
-                                 guid_t new_guids[MAX_GUIDS], guid_t old_guids[MAX_GUIDS], u_int32_t num_of_old_guids);
-    void patchGUIDsSection(u_int32_t *buf, u_int32_t ind, guid_t guids[MAX_GUIDS], int nguids);
-    bool patchImageVsd(Fs2Operations &imgFwOps, const char* userVsd=(char*)NULL);
-    void PatchInfoSect(u_int8_t* rawSect, u_int32_t vsdOffs, const char* vsd);
-    void initSectToRead(int imp_index);
-    //needed for fs2burn
-    bool IntegrateDevRomInImage(Fs2Operations &imgFwOps);
-    bool UpdateRomInImage(u_int8_t* new_image, u_int8_t* old_image, u_int8_t* rom_data, int rom_size,
-                          int* new_image_size);
-    bool AddNewSect(u_int8_t* &new_image_p, u_int8_t* data, GPH gph, u_int32_t* last_next);
-    bool CopyBoot2(u_int8_t* &new_image_p, u_int8_t* &old_image_p);
-    bool CopyData(u_int8_t* &new_image, u_int8_t* &old_image, int copy_size);
-
-    bool ModifyKeySection(guid_t access_key, ProgressCallBack callBackFunc=(ProgressCallBack)NULL);
-    void PatchKeySect(u_int32_t* buff, u_int32_t keyOff, guid_t hw_key);
-    bool Fs2IsMacAvailable();
-
-    bool ModifyVSDSection(const char *vsd, ProgressCallBack callBackFunc=(ProgressCallBack)NULL);
-    bool ReburnNewImage(u_int8_t *data, const char *feature_name, ProgressCallBack callBackFunc=(ProgressCallBack)NULL);
-    bool packStripedImageData(u_int8_t *striped_data, u_int8_t *normal_data, u_int32_t length, u_int32_t &striped_length,
-                              bool needs_repack, u_int32_t cntxLog2ChunkSize);
-    bool Fs2SetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc=(PrintCallBack)NULL, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-    bool Fs2SetGuidsForBlank(sg_params_t& sgParam);
-    bool getRunningFwVer();
-
-
-    Fs2ImgInfo _fs2ImgInfo;
-    bool _burnBlankGuids;
-    bool _isFullVerify;
-};
-
-#endif // FS2_OPS_o
diff --git a/mlxfwops/lib/fs3_ops.cpp b/mlxfwops/lib/fs3_ops.cpp
deleted file mode 100644 (file)
index 0f65f2b..0000000
+++ /dev/null
@@ -1,2566 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#include <stdlib.h>
-#include <algorithm>
-#include <vector>
-
-#include <tools_utils.h>
-#include <bit_slice.h>
-#include <mtcr.h>
-#include <reg_access/reg_access.h>
-
-#ifdef MST_UL
-#include <cmdif/icmd_cif_open.h>
-#else
-#ifndef UEFI_BUILD
-#include <cmdif/cib_cif.h>
-#endif
-#endif
-
-#if !defined(UEFI_BUILD) && !defined(NO_OPEN_SSL)
-#include <tools_crypto/tools_md5.h>
-#endif
-
-#include "fs3_ops.h"
-
-#define FS3_FLASH_SIZE 0x400000
-#define FS3_LOG_CHUNK_SIZE 21
-
-#define FS3_DFLT_GUID_NUM_TO_ALLOCATE 8
-#define FS3_DFLT_GUID_STEP 1
-
-#define DEFAULT_GUID_NUM 0xff
-#define DEFAULT_STEP DEFAULT_GUID_NUM
-
-//fs4 use the same itoc signatures, please double check
-const u_int32_t Fs3Operations::_itocSignature[4] = {
-        ITOC_ASCII,   // Ascii of "MTFW"
-        TOC_RAND1,   // Random data
-        TOC_RAND2,
-        TOC_RAND3
-};
-
-const Fs3Operations::SectionInfo Fs3Operations::_fs3SectionsInfoArr[] = {
-    {FS3_END,           "END"},
-    {FS3_ITOC,          "ITOC_Header"},
-
-    {FS3_BOOT_CODE,     "BOOT_CODE"},
-    {FS3_PCI_CODE,      "PCI_CODE"},
-    {FS3_MAIN_CODE,     "MAIN_CODE"},
-    {FS3_PCIE_LINK_CODE, "PCIE_LINK_CODE"},
-    {FS3_IRON_PREP_CODE, "IRON_PREP_CODE"},
-    {FS3_POST_IRON_BOOT_CODE, "POST_IRON_BOOT_CODE"},
-    {FS3_UPGRADE_CODE,  "UPGRADE_CODE"},
-    {FS3_HW_BOOT_CFG,   "HW_BOOT_CFG"},
-    {FS3_HW_MAIN_CFG,   "HW_MAIN_CFG"},
-    {FS3_PHY_UC_CODE,   "PHY_UC_CODE"},
-    {FS3_PHY_UC_CONSTS, "PHY_UC_CONSTS"},
-    {FS3_IMAGE_INFO,    "IMAGE_INFO"},
-    {FS3_FW_BOOT_CFG,   "FW_BOOT_CFG"},
-    {FS3_FW_MAIN_CFG,   "FW_MAIN_CFG"},
-    {FS3_ROM_CODE,      "ROM_CODE"},
-    {FS3_RESET_INFO,    "FS3_RESET_INFO"},
-    {FS3_DBG_FW_INI,    "DBG_FW_INI"},
-    {FS3_DBG_FW_PARAMS, "DBG_FW_PARAMS"},
-    {FS3_FW_ADB,        "FW_ADB"},
-
-    {FS3_MFG_INFO,      MFG_INFO},
-    {FS3_DEV_INFO,      "DEV_INFO"},
-    {FS3_NV_DATA1,      "NV_DATA"},
-    {FS3_VPD_R0,        "VPD_R0"},
-    {FS3_NV_DATA2,      "NV_DATA"},
-    {FS3_NV_DATA0,      "NV_DATA"},
-    {FS3_FW_NV_LOG,     "FW_NV_LOG"},
-    {FS3_NV_DATA0,      "NV_DATA"},
-    {FS3_DTOC,          "DTOC_Header"},
-    {FS4_HW_PTR,        "HW Pointers"},
-    {FS4_TOOLS_AREA,    "Tools Area"}
-};
-
-bool Fs3Operations::Fs3UpdateImgCache(u_int8_t *buff, u_int32_t addr, u_int32_t size)
-{
-    if (size == 0) { // empty
-        return true;
-    }
-    _imageCache.add(buff, addr, size);
-    return true;
-}
-
-bool Fs3Operations::UpdateImgCache(u_int8_t *buff, u_int32_t addr, u_int32_t size)
-{
-    return Fs3UpdateImgCache(buff, addr, size);
-}
-
-const char *Fs3Operations::GetSectionNameByType(u_int8_t section_type) {
-
-    for (u_int32_t i = 0; i < ARR_SIZE(_fs3SectionsInfoArr); i++) {
-        const SectionInfo *sect_info = &_fs3SectionsInfoArr[i];
-        if (sect_info->type == section_type) {
-            return sect_info->name;
-        }
-    }
-    return UNKNOWN_SECTION;
-}
-
-bool Fs3Operations::DumpFs3CRCCheck(u_int8_t sect_type, u_int32_t sect_addr, u_int32_t sect_size, u_int32_t crc_act,
-        u_int32_t crc_exp, bool ignore_crc, VerifyCallBack verifyCallBackFunc)
-{
-    char pr[256];
-    const char *sect_type_str = GetSectionNameByType(sect_type);
-    sprintf(pr, CRC_CHECK_OLD, PRE_CRC_OUTPUT, sect_addr, sect_addr + sect_size - 1, sect_size,
-            sect_type_str);
-    if (!strcmp(sect_type_str, UNKNOWN_SECTION)) {
-        sprintf(pr + strlen(pr), ":0x%x", sect_type);
-    }
-    sprintf(pr + strlen(pr), ")");
-    return  CheckAndPrintCrcRes(pr, 0, sect_addr, crc_exp, crc_act, ignore_crc, verifyCallBackFunc);
-
-}
-
-bool Fs3Operations::CheckTocSignature(struct cibfw_itoc_header *itoc_header, u_int32_t first_signature)
-{
-    if ( itoc_header->signature0 != first_signature  ||
-         itoc_header->signature1 !=  TOC_RAND1       ||
-         itoc_header->signature2 !=  TOC_RAND2       ||
-         itoc_header->signature3 !=  TOC_RAND3) {
-        return false;
-    }
-    return true;
-}
-
-#define CHECK_UID_STRUCTS_SIZE(uids_context, cibfw_guids_context) {\
-           if (sizeof(uids_context) != sizeof(cibfw_guids_context)) {\
-               return errmsg("Internal error: Size of uids_t (%d) is not equal to size of  struct cibfw_guids guids (%d)\n",\
-                       (int)sizeof(uids_context), (int)sizeof(cibfw_guids_context));\
-           }\
-}
-
-#define CHECK_MFG_NEW_FORMAT(mfg_st)\
-        (mfg_st.major_version == 1)
-#define CHECK_MFG_OLD_FORMAT(mfg_st)\
-        (mfg_st.major_version == 0)
-bool Fs3Operations::GetMfgInfo(u_int8_t *buff)
-{
-    // structs of the same size we can unpack either way
-    struct cibfw_mfg_info cib_mfg_info;
-    struct cx4fw_mfg_info cx4_mfg_info;
-
-    cibfw_mfg_info_unpack(&cib_mfg_info, buff);
-    // cibfw_mfg_info_dump(&mfg_info, stdout);
-    if (CHECK_MFG_NEW_FORMAT(cib_mfg_info)) {
-        cx4fw_mfg_info_unpack(&cx4_mfg_info, buff);
-        CHECK_UID_STRUCTS_SIZE(_fs3ImgInfo.ext_info.orig_fs3_uids_info.cx4_uids, cx4_mfg_info.guids);
-        memcpy(&_fs3ImgInfo.ext_info.orig_fs3_uids_info.cx4_uids, &cx4_mfg_info.guids, sizeof(cx4_mfg_info.guids));
-        strcpy(_fs3ImgInfo.ext_info.orig_psid, cx4_mfg_info.psid);
-        _fs3ImgInfo.ext_info.guids_override_en = cx4_mfg_info.guids_override_en;
-        _fs3ImgInfo.ext_info.orig_fs3_uids_info.valid_field = 1;
-    } else if (CHECK_MFG_OLD_FORMAT(cib_mfg_info)){
-        CHECK_UID_STRUCTS_SIZE(_fs3ImgInfo.ext_info.orig_fs3_uids_info.cib_uids, cib_mfg_info.guids);
-        memcpy(&_fs3ImgInfo.ext_info.orig_fs3_uids_info.cib_uids, &cib_mfg_info.guids, sizeof(cib_mfg_info.guids));
-        strcpy(_fs3ImgInfo.ext_info.orig_psid, cib_mfg_info.psid);
-        _fs3ImgInfo.ext_info.guids_override_en = cib_mfg_info.guids_override_en;
-        _fs3ImgInfo.ext_info.orig_fs3_uids_info.valid_field = 0;
-    } else {
-        return errmsg(MLXFW_UNKNOWN_SECT_VER_ERR, "Unknown MFG_INFO format version (%d.%d).", cib_mfg_info.major_version, cib_mfg_info.minor_version);
-    }
-
-    if (cib_mfg_info.minor_version == 1) {
-        //get orig_prs name
-        struct tools_open_mfg_info tools_mfg_info;
-        memset(&tools_mfg_info, 0, sizeof(tools_mfg_info));
-        tools_open_mfg_info_unpack(&tools_mfg_info, buff);
-        strncpy(_fs3ImgInfo.ext_info.orig_prs_name, tools_mfg_info.orig_prs_name, FS3_PRS_NAME_LEN - 1);
-    }
-    return true;
-
-}
-
-#define GET_IMAGE_INFO_VERSION(imageInfoBuff, major, minor) \
-        u_int32_t _IIVerDw = __be32_to_cpu(*(u_int32_t*)imageInfoBuff);\
-        minor = ((_IIVerDw) >> 16) & 0xff;\
-        major = ((_IIVerDw) >> 24) & 0xff;
-#define CHECK_IMAGE_INFO_VERSION(major)\
-    ((major) == 0)
-
-#define FAIL_NO_OCR(str) do { \
-                        if (_ioAccess->is_flash() && _fwParams.ignoreCacheRep == 0) {\
-                            return errmsg(MLXFW_OCR_ERR, "-ocr flag must be specified for %s operation.", str);\
-                        }\
-                    } while (0)
-
-bool Fs3Operations::GetImageInfo(u_int8_t *buff)
-{
-    struct cibfw_image_info image_info;
-    int IIMajor, IIMinor;
-
-    // TODO: adrianc: use the version fields once they are available in tools layouts
-    GET_IMAGE_INFO_VERSION(buff, IIMajor, IIMinor);
-    (void)IIMinor;
-    if (!CHECK_IMAGE_INFO_VERSION(IIMajor)) {
-        return errmsg(MLXFW_UNKNOWN_SECT_VER_ERR, "Unknown IMAGE_INFO format version (%d.%d).", IIMajor, IIMinor);
-    }
-    cibfw_image_info_unpack(&image_info, buff);
-    // cibfw_image_info_dump(&image_info, stdout);
-
-    _fwImgInfo.ext_info.fw_ver[0] = image_info.FW_VERSION.MAJOR;
-    _fwImgInfo.ext_info.fw_ver[1] = image_info.FW_VERSION.MINOR;
-    _fwImgInfo.ext_info.fw_ver[2] = image_info.FW_VERSION.SUBMINOR;
-
-    _fwImgInfo.ext_info.mic_ver[0] = image_info.mic_version.MAJOR;
-    _fwImgInfo.ext_info.mic_ver[1] = image_info.mic_version.MINOR;
-    _fwImgInfo.ext_info.mic_ver[2] = image_info.mic_version.SUBMINOR;
-
-    _fwImgInfo.ext_info.fw_rel_date[0] = (u_int16_t)image_info.FW_VERSION.Day;
-    _fwImgInfo.ext_info.fw_rel_date[1] = (u_int16_t)image_info.FW_VERSION.Month;
-    _fwImgInfo.ext_info.fw_rel_date[2] = (u_int16_t)image_info.FW_VERSION.Year;
-
-    // assuming number of supported_hw_id < MAX_NUM_SUPP_HW_IDS
-    memcpy(_fwImgInfo.supportedHwId, image_info.supported_hw_id, sizeof(image_info.supported_hw_id));
-    _fwImgInfo.supportedHwIdNum = (sizeof(image_info.supported_hw_id))/sizeof(image_info.supported_hw_id[0]);
-
-    strcpy(_fs3ImgInfo.ext_info.image_vsd, image_info.vsd);
-    strcpy(_fwImgInfo.ext_info.psid, image_info.psid);
-    strcpy(_fwImgInfo.ext_info.product_ver, image_info.prod_ver);
-    if (IIMinor == 2) {
-        // get name, prs name and description
-        struct tools_open_image_info tools_image_info;
-        memset(&tools_image_info, 0, sizeof(tools_image_info));
-        tools_open_image_info_unpack(&tools_image_info, buff);
-        strncpy(_fs3ImgInfo.ext_info.name, tools_image_info.name, NAME_LEN - 1);
-        strncpy(_fs3ImgInfo.ext_info.description, tools_image_info.description, DESCRIPTION_LEN - 1);
-        strncpy(_fs3ImgInfo.ext_info.prs_name, tools_image_info.prs_name, FS3_PRS_NAME_LEN - 1);
-    }
-    return true;
-}
-
-#define CHECK_DEV_INFO_NEW_FORMAT(info_st)\
-        (info_st.major_version == 2 )
-#define CHECK_DEV_INFO_OLD_FORMAT(info_st)\
-        (info_st.major_version == 1)
-bool Fs3Operations::GetDevInfo(u_int8_t *buff)
-{
-    struct cibfw_device_info cib_dev_info;
-    struct cx4fw_device_info cx4_dev_info;
-    // same size, we can unpack to check version
-    cibfw_device_info_unpack(&cib_dev_info, buff);
-    // cibfw_device_info_dump(&dev_info, stdout);
-
-    if (CHECK_DEV_INFO_NEW_FORMAT(cib_dev_info)) {
-        cx4fw_device_info_unpack(&cx4_dev_info, buff);
-        CHECK_UID_STRUCTS_SIZE(_fs3ImgInfo.ext_info.fs3_uids_info.cx4_uids, cx4_dev_info.guids);
-        memcpy(&_fs3ImgInfo.ext_info.fs3_uids_info.cx4_uids, &cx4_dev_info.guids, sizeof(cx4_dev_info.guids));
-        strcpy(_fwImgInfo.ext_info.vsd, cx4_dev_info.vsd);
-        _fs3ImgInfo.ext_info.fs3_uids_info.valid_field = 1;
-        _fwImgInfo.ext_info.vsd_sect_found = true;
-    } else if (CHECK_DEV_INFO_OLD_FORMAT(cib_dev_info)){
-        CHECK_UID_STRUCTS_SIZE(_fs3ImgInfo.ext_info.fs3_uids_info.cib_uids, cib_dev_info.guids);
-        memcpy(&_fs3ImgInfo.ext_info.fs3_uids_info.cib_uids, &cib_dev_info.guids, sizeof(cib_dev_info.guids));
-        strcpy(_fwImgInfo.ext_info.vsd, cib_dev_info.vsd);
-        _fs3ImgInfo.ext_info.fs3_uids_info.valid_field = 0;
-        _fwImgInfo.ext_info.vsd_sect_found = true;
-    } else {
-        return errmsg(MLXFW_UNKNOWN_SECT_VER_ERR, "Unknown DEV_INFO format version (%d.%d).", cib_dev_info.major_version, cib_dev_info.minor_version);
-    }
-    return true;
-}
-
-bool Fs3Operations::GetRomInfo(u_int8_t *buff, u_int32_t size)
-{
-    TOCPUn(buff, size/4);
-    // update _romSect buff
-    GetSectData(_romSect, (u_int32_t*)buff, size);
-    // parse rom Info and fill rom_info struct
-    RomInfo rInfo(_romSect);
-    rInfo.ParseInfo();
-    rInfo.initRomsInfo(&_fwImgInfo.ext_info.roms_info);
-    return true;
-}
-
-bool Fs3Operations::GetImageInfoFromSection(u_int8_t *buff, u_int8_t sect_type, u_int32_t sect_size, u_int8_t check_support_only)
-{
-    #define EXEC_GET_INFO_OR_GET_SUPPORT(get_info_func, buff, check_support_only) (check_support_only) ? true : get_info_func(buff);
-
-    switch (sect_type) {
-        case FS3_MFG_INFO:
-            return EXEC_GET_INFO_OR_GET_SUPPORT(GetMfgInfo, buff, check_support_only);
-        case FS3_IMAGE_INFO:
-            return EXEC_GET_INFO_OR_GET_SUPPORT(GetImageInfo, buff, check_support_only);
-        case FS3_DEV_INFO:
-            return EXEC_GET_INFO_OR_GET_SUPPORT(GetDevInfo, buff, check_support_only);
-        case FS3_ROM_CODE:
-            return check_support_only ? true : GetRomInfo(buff, sect_size);
-        default:
-            break;
-    }
-
-    if (check_support_only) {
-        return false;
-    }
-    return errmsg("Getting info from section type (%s:%d) is not supported\n", GetSectionNameByType(sect_type), sect_type);
-}
-
-bool Fs3Operations::IsGetInfoSupported(u_int8_t sect_type)
-{
-    return GetImageInfoFromSection((u_int8_t*)NULL, sect_type, 0, 1);
-}
-
-bool Fs3Operations::IsFs3SectionReadable(u_int8_t type, QueryOptions queryOptions)
-{
-    //printf("-D- readSectList.size %d\n", (int) _readSectList.size());
-    if (_readSectList.size()) {
-        for (u_int32_t i = 0; i < _readSectList.size(); i++) {
-            if (_readSectList.at(i) == type) {
-                return true;
-            }
-        }
-        return false;
-
-    } else{
-        if (!queryOptions.readRom && type == FS3_ROM_CODE) {
-            return false;
-        }
-        if (queryOptions.quickQuery) {
-            if ( IsGetInfoSupported(type)) {
-                return true;
-            }
-            return false;
-        }
-    }
-    return true;
-}
-
-bool Fs3Operations::VerifyTOC(u_int32_t dtoc_addr, bool& bad_signature, VerifyCallBack verifyCallBackFunc, bool show_itoc,
-        struct QueryOptions queryOptions)
-{
-    u_int8_t buffer[TOC_HEADER_SIZE], entry_buffer[TOC_ENTRY_SIZE];
-    struct cibfw_itoc_header itoc_header;
-    bool ret_val = true, mfg_exists = false;
-    u_int32_t phys_addr;
-    bad_signature = false;
-
-
-    // Read the sigmature and check it
-    READBUF((*_ioAccess), dtoc_addr, buffer, TOC_HEADER_SIZE, "TOC Header");
-    Fs3UpdateImgCache(buffer, dtoc_addr, TOC_HEADER_SIZE);
-    cibfw_itoc_header_unpack(&itoc_header, buffer);
-    memcpy(_fs3ImgInfo.itocHeader, buffer, CIBFW_ITOC_HEADER_SIZE);
-    // cibfw_itoc_header_dump(&itoc_header, stdout);
-    u_int32_t first_signature =  ITOC_ASCII;
-    if (!CheckTocSignature(&itoc_header, first_signature)) {
-        bad_signature = true;
-        return false;
-    }
-    u_int32_t toc_crc = CalcImageCRC((u_int32_t*)buffer, (TOC_HEADER_SIZE / 4) - 1);
-    phys_addr = _ioAccess->get_phys_from_cont(dtoc_addr, _fwImgInfo.cntxLog2ChunkSize, _fwImgInfo.imgStart != 0);
-    if (!DumpFs3CRCCheck(FS3_ITOC, phys_addr, TOC_HEADER_SIZE, toc_crc, itoc_header.itoc_entry_crc,false,verifyCallBackFunc)) {
-        ret_val = false;
-    }
-    _fs3ImgInfo.itocAddr = dtoc_addr;
-
-    int section_index = 0;
-    struct cibfw_itoc_entry toc_entry;
-
-    do {
-        // Uopdate the cont address
-        _ioAccess->set_address_convertor(_fwImgInfo.cntxLog2ChunkSize, _fwImgInfo.imgStart != 0);
-        u_int32_t entry_addr = dtoc_addr + TOC_HEADER_SIZE + section_index *  TOC_ENTRY_SIZE;
-        READBUF((*_ioAccess), entry_addr , entry_buffer, TOC_ENTRY_SIZE, "TOC Entry");
-        Fs3UpdateImgCache(entry_buffer, entry_addr, TOC_ENTRY_SIZE);
-
-        cibfw_itoc_entry_unpack(&toc_entry, entry_buffer);
-        if (toc_entry.type == FS3_MFG_INFO) {
-            mfg_exists = true;
-        }
-        // printf("-D- toc = %#x, toc_entry.type  = %#x\n", section_index, toc_entry.type);
-        if (toc_entry.type != FS3_END) {
-            if (section_index + 1 >= MAX_TOCS_NUM) {
-                return errmsg("Internal error: number of ITOCs %d is greater than allowed %d", section_index + 1, MAX_TOCS_NUM);
-            }
-
-            u_int32_t entry_crc = CalcImageCRC((u_int32_t*)entry_buffer, (TOC_ENTRY_SIZE / 4) - 1);
-            u_int32_t entry_size_in_bytes = toc_entry.size * 4;
-            //printf("-D- entry_crc = %#x, toc_entry.itoc_entry_crc = %#x\n", entry_crc, toc_entry.itoc_entry_crc);
-
-            if (toc_entry.itoc_entry_crc == entry_crc) {
-                // Update last image address
-                u_int32_t section_last_addr;
-                u_int32_t flash_addr = toc_entry.flash_addr << 2;
-                if (!toc_entry.relative_addr) {
-                    _ioAccess->set_address_convertor(0, 0);
-                    phys_addr = flash_addr;
-                    _fs3ImgInfo.smallestAbsAddr = (_fs3ImgInfo.smallestAbsAddr < flash_addr && _fs3ImgInfo.smallestAbsAddr > 0)
-                            ? _fs3ImgInfo.smallestAbsAddr : flash_addr;
-                } else {
-                    phys_addr = _ioAccess->get_phys_from_cont(flash_addr, _fwImgInfo.cntxLog2ChunkSize, _fwImgInfo.imgStart != 0);
-                    u_int32_t currSizeOfImgdata = phys_addr + entry_size_in_bytes;
-                    _fs3ImgInfo.sizeOfImgData = (_fs3ImgInfo.sizeOfImgData > currSizeOfImgdata) ? _fs3ImgInfo.sizeOfImgData : phys_addr;
-                }
-                section_last_addr = phys_addr + entry_size_in_bytes;
-                _fwImgInfo.lastImageAddr = (_fwImgInfo.lastImageAddr >= section_last_addr) ? _fwImgInfo.lastImageAddr : section_last_addr;
-
-                if (IsFs3SectionReadable(toc_entry.type, queryOptions)) {
-
-                    // Only when we have full verify or the info of this section should be collected for query
-                    std::vector<u_int8_t> buffv(entry_size_in_bytes);
-                    u_int8_t *buff = (u_int8_t*)(&(buffv[0]));
-                    if (show_itoc) {
-                        cibfw_itoc_entry_dump(&toc_entry, stdout);
-                        DumpFs3CRCCheck(toc_entry.type, phys_addr, entry_size_in_bytes, 0, 0, true, verifyCallBackFunc);
-                    } else {
-                        READBUF((*_ioAccess), flash_addr, buff, entry_size_in_bytes, "Section");
-                        Fs3UpdateImgCache(buff, flash_addr, entry_size_in_bytes);
-                        u_int32_t sect_crc = CalcImageCRC((u_int32_t*)buff, toc_entry.size);
-
-                        //printf("-D- flash_addr: %#x, toc_entry_size = %#x, actual sect = %#x, from itoc: %#x np_crc = %s\n", flash_addr, toc_entry.size, sect_crc,
-                            //    toc_entry.section_crc, toc_entry.no_crc ? "yes" : "no");
-                        if (!DumpFs3CRCCheck(toc_entry.type, phys_addr, entry_size_in_bytes, sect_crc, toc_entry.section_crc, toc_entry.no_crc, verifyCallBackFunc)) {
-                            if (toc_entry.device_data) {
-                                _badDevDataSections = true;
-                            }
-                            ret_val = false;
-                        } else {
-                            //printf("-D- toc type : 0x%.8x\n" , toc_entry.type);
-                            GetSectData(_fs3ImgInfo.tocArr[section_index].section_data, (u_int32_t*)buff, toc_entry.size * 4);
-                            if (IsGetInfoSupported(toc_entry.type)) {
-                                 if (!GetImageInfoFromSection(buff, toc_entry.type, toc_entry.size * 4)) {
-                                     ret_val = false;
-                                     errmsg("Failed to get info from section %d", toc_entry.type);
-                                 }
-                            } else if (toc_entry.type == FS3_DBG_FW_INI) {
-                                 TOCPUn(buff, toc_entry.size);
-                                 GetSectData(_fwConfSect, (u_int32_t*)buff, toc_entry.size * 4);
-                            }
-                        }
-                    }
-                 }
-             } else {
-                 /*
-                  printf("-D- Bad ITOC CRC: toc_entry.itoc_entry_crc = %#x, actual crc: %#x, entry_size_in_bytes = %#x\n", toc_entry.itoc_entry_crc,
-                         entry_crc, entry_size_in_bytes);
-                  */
-                 return errmsg(MLXFW_BAD_CRC_ERR, "Bad Itoc Entry CRC. Expected: 0x%x , Actual: 0x%x", toc_entry.itoc_entry_crc, entry_crc);
-            }
-
-            _fs3ImgInfo.tocArr[section_index].entry_addr = entry_addr;
-            _fs3ImgInfo.tocArr[section_index].toc_entry = toc_entry;
-            memcpy(_fs3ImgInfo.tocArr[section_index].data, entry_buffer, CIBFW_ITOC_ENTRY_SIZE);
-        }
-        section_index++;
-    } while (toc_entry.type != FS3_END);
-    _fs3ImgInfo.numOfItocs = section_index - 1;
-
-    if (!mfg_exists) {
-        _badDevDataSections = true;
-        return errmsg(MLXFW_NO_MFG_ERR, "No \"" MFG_INFO "\" info section.");
-    }
-    return ret_val;
-}
-
-
-bool Fs3Operations::FwVerify(VerifyCallBack verifyCallBackFunc, bool isStripedImage, bool showItoc) {
-    //dummy assignment to avoid compiler warrning (isStripedImage is not used in fs3)
-    (void)isStripedImage;
-
-    struct QueryOptions queryOptions;
-    queryOptions.readRom = true;
-    queryOptions.quickQuery = false;
-
-    return FsVerifyAux(verifyCallBackFunc, showItoc, queryOptions);
-}
-
-#define BOOT_RECORD_SIZE 0x10
-bool Fs3Operations::checkPreboot(u_int32_t* prebootBuff, u_int32_t size, VerifyCallBack verifyCallBackFunc)
-{
-    u_int32_t expectedCRC;
-    char outputLine[512] = {0};
-    u_int32_t startAddr = (_ioAccess->is_flash()) ? \
-            _ioAccess->get_phys_from_cont(0x0, _fwImgInfo.cntxLog2ChunkSize, (_fwImgInfo.imgStart != 0)) : 0x0;
-
-    sprintf(outputLine,"%s /0x%08x-0x%08x (0x%06x)/ (PREBOOT)", PRE_CRC_OUTPUT, startAddr, 0x34, size << 2);
-    expectedCRC = prebootBuff[size-1];
-    // calc CRC
-    Crc16        crc1, crc2;
-    CRC1n(crc1, prebootBuff, size);
-    crc1.finish();
-    // HACK: due to a bug in imgen this crc might not be calculated correctly(calculate in the "wrong way" for backward compat)
-    // crc1 represents the proper way to calculate the crc , crc2 represents the "wrong" way
-
-    // signature
-    CRCn(crc2, prebootBuff, 4);
-    // boot record
-    u_int8_t bootRecordBE[BOOT_RECORD_SIZE];
-    memcpy(bootRecordBE, &prebootBuff[4], BOOT_RECORD_SIZE);
-    TOCPUn(bootRecordBE, (BOOT_RECORD_SIZE  >> 2));
-    for (int i = 0; i < BOOT_RECORD_SIZE; i++) {
-        crc2 << bootRecordBE[i];
-    }
-    // the rest of the section (leave last dword out of the crc calc as its the expected crc)
-    CRC1n(crc2, &prebootBuff[8], size - 8);
-    crc2.finish();
-
-    // print results
-    if (expectedCRC != crc1.get() && expectedCRC != crc2.get()) {
-        report_callback(verifyCallBackFunc, "%s /0x%08x/ - wrong CRC (exp:0x%x, act:0x%x)\n",
-                outputLine, startAddr, expectedCRC, crc1.get());
-        return errmsg("Bad CRC");
-    }
-    report_callback(verifyCallBackFunc, "%s - OK\n", outputLine);
-    return true;
-}
-
-bool Fs3Operations::FsVerifyAux(VerifyCallBack verifyCallBackFunc, bool show_itoc, struct QueryOptions queryOptions)
-{
-    u_int32_t cntx_image_start[CNTX_START_POS_SIZE];
-    u_int32_t cntx_image_num;
-    u_int32_t buff[FS3_BOOT_START_IN_DW];
-    u_int32_t offset;
-    u_int8_t binVerMajor = 0, binVerMinor = 0;
-    bool bad_signature;
-
-    FindAllImageStart(_ioAccess, cntx_image_start, &cntx_image_num, _cntx_magic_pattern);
-    if (cntx_image_num == 0) {
-        return errmsg(MLXFW_NO_VALID_IMAGE_ERR, "No valid FS3 image found");
-    }
-    if (cntx_image_num > 1) { // ATM we support only one valid image
-        return errmsg(MLXFW_MULTIPLE_VALID_IMAGES_ERR, "More than one FS3 image found on %s", this->_ioAccess->is_flash() ? "Device" : "image");
-    }
-    u_int32_t image_start = cntx_image_start[0];
-    offset = 0;
-    // Read BOOT
-    _ioAccess->set_address_convertor(0, 0);
-    READBUF((*_ioAccess), image_start, buff, FS3_BOOT_START, "Image header");
-    Fs3UpdateImgCache((u_int8_t*)buff, 0, FS3_BOOT_START);
-    TOCPUn(buff, FS3_BOOT_START_IN_DW);
-    _maxImgLog2Size = EXTRACT(buff[FS3_LOG2_CHUNK_SIZE_DW_OFFSET],16,8) ? EXTRACT(buff[FS3_LOG2_CHUNK_SIZE_DW_OFFSET],16,8) : FS3_LOG_CHUNK_SIZE;
-    binVerMajor = EXTRACT(buff[FS3_LOG2_CHUNK_SIZE_DW_OFFSET], 8, 8);
-    binVerMinor = EXTRACT(buff[FS3_LOG2_CHUNK_SIZE_DW_OFFSET], 0, 8);
-    // check if binary version is supported by the tool
-    if (!CheckBinVersion(binVerMajor, binVerMinor)) {
-        return false;
-    }
-    // Put info
-    _fwImgInfo.imgStart = image_start;
-    // read the chunk size from the image header
-    _fwImgInfo.cntxLog2ChunkSize = _maxImgLog2Size;
-    _fwImgInfo.ext_info.is_failsafe        = true;
-    _fwImgInfo.actuallyFailsafe  = true;
-    _fwImgInfo.magicPatternFound = 1;
-    _ioAccess->set_address_convertor(_fwImgInfo.cntxLog2ChunkSize, _fwImgInfo.imgStart != 0);
-
-
-    report_callback(verifyCallBackFunc, "\nFS3 failsafe image\n\n");
-    // adrianc: we dont check Preboot section (or boot start) because of a variance in the calculation of the CRC
-
-    // Get BOOT2 -Get Only bootSize if quickQuery == true else read and check CRC of boot2 section as well
-    offset += FS3_BOOT_START;
-    FS3_CHECKB2(0, offset, !queryOptions.quickQuery, PRE_CRC_OUTPUT, verifyCallBackFunc);
-
-    offset += _fwImgInfo.bootSize;
-    _fs3ImgInfo.firstItocIsEmpty = false;
-    // printf("-D- image_start = %#x\n", image_start);
-    // Go over the ITOC entries
-    // adrianc: need to have the sector size hardcoded in the FW binary (since its determined in the image generation process)
-    u_int32_t sector_size = FS3_DEFAULT_SECTOR_SIZE;
-    offset = (offset % sector_size == 0) ? offset : (offset + sector_size - offset % 0x1000);
-    while (offset < _ioAccess->get_size())
-    {
-
-        if (VerifyTOC(offset, bad_signature, verifyCallBackFunc, show_itoc, queryOptions)) {
-            return true;
-        } else {
-            if (!bad_signature) {
-                return false;
-            }
-            _fs3ImgInfo.firstItocIsEmpty = true;
-
-        }
-        offset += sector_size;
-    }
-    return errmsg(MLXFW_NO_VALID_ITOC_ERR, "No valid ITOC was found.");
-}
-
-
-bool Fs3Operations::FsIntQueryAux(bool readRom, bool quickQuery)
-{
-    struct QueryOptions queryOptions;
-    queryOptions.readRom = readRom;
-    queryOptions.quickQuery = quickQuery;
-
-    if (!FsVerifyAux((VerifyCallBack)NULL, 0, queryOptions)) {
-        return false;
-    }
-    // get chip type and device sw id, from device/image
-    const u_int32_t* swId = (u_int32_t*)NULL;
-    if (_ioAccess->is_flash()) {
-        if (!getInfoFromHwDevid(_ioAccess->get_dev_id(), _fwImgInfo.ext_info.chip_type, &swId)) {
-            return false;
-        }
-        _fwImgInfo.ext_info.dev_type = swId[0];
-        if (!_fwParams.ignoreCacheRep) {
-            getRunningFwVersion();
-        }
-    } else if(_fwImgInfo.supportedHwIdNum > 0){ // image
-        if (!getInfoFromHwDevid(_fwImgInfo.supportedHwId[0], _fwImgInfo.ext_info.chip_type, &swId)) {
-            return false;
-        }
-        _fwImgInfo.ext_info.dev_type = swId[0];
-    }
-    return true;
-}
-
-bool Fs3Operations::getRunningFwVersion()
-{
-#ifndef UEFI_BUILD
-    struct connectib_icmd_get_fw_info fwVer;
-    memset(&fwVer, 0, sizeof(fwVer));
-    int rc =  gcif_get_fw_info(((Flash*)_ioAccess)->getMfileObj(), &fwVer);
-    if (rc && rc != GCIF_STATUS_UNSUPPORTED_ICMD_VERSION && rc != GCIF_STATUS_INVALID_OPCODE && rc != GCIF_ICMD_NOT_SUPPORTED) {
-        return errmsg("Failed to get running FW version. %s", gcif_err_str(rc));
-    }
-    if (!rc) {
-        _fwImgInfo.ext_info.running_fw_ver[0] = fwVer.fw_version.MAJOR;
-        _fwImgInfo.ext_info.running_fw_ver[1] = fwVer.fw_version.MINOR;
-        _fwImgInfo.ext_info.running_fw_ver[2] = fwVer.fw_version.SUBMINOR;
-    }
-#endif
-    return true;
-}
-
-bool Fs3Operations::FwQuery(fw_info_t *fwInfo, bool readRom, bool isStripedImage)
-{
-    //isStripedImage flag is not needed in FS3 image format
-    // Avoid warning - no striped image in FS3
-    (void)isStripedImage;
-    if (!FsIntQueryAux(readRom)) {
-        return false;
-    }
-
-    memcpy(&(fwInfo->fw_info),  &(_fwImgInfo.ext_info),  sizeof(fw_info_com_t));
-    memcpy(&(fwInfo->fs3_info), &(_fs3ImgInfo.ext_info), sizeof(fs3_info_t));
-    fwInfo->fw_type = FwType();
-    return true;
-}
-
-u_int8_t Fs3Operations::FwType()
-{
-    return FIT_FS3;
-}
-
-
-bool Fs3Operations::FwInit()
-{
-    FwInitCom();
-    memset(&_fs3ImgInfo, 0, sizeof(_fs3ImgInfo));
-    _fwImgInfo.fwType = FIT_FS3;
-    return true;
-}
-
-#define GET_DIFFER_STR(flash_toc_entry, image_toc_entry) \
-        (flash_toc_entry->device_data != image_toc_entry->device_data) ? "device_data" : \
-                (flash_toc_entry->no_crc != image_toc_entry->no_crc)   ? "no_crc" : \
-                        (flash_toc_entry->relative_addr != image_toc_entry->relative_addr) ? "relative_addr" : ""
-
-bool Fs3Operations::UpdateDevDataITOC(Fs3Operations &imageOps, struct toc_info *image_toc_info_entry, struct toc_info *flash_toc_arr, int flash_toc_size)
-{
-    u_int8_t itoc_data[CIBFW_ITOC_ENTRY_SIZE];
-    struct cibfw_itoc_entry *image_toc_entry = &image_toc_info_entry->toc_entry;
-
-    for (int i = 0; i < flash_toc_size; i++) {
-        struct toc_info *flash_toc_info = &flash_toc_arr[i];
-        struct cibfw_itoc_entry *flash_toc_entry = &flash_toc_info->toc_entry;
-        if (flash_toc_entry->type == image_toc_entry->type) {
-            // sanity checks on itoc entry
-            if ( (flash_toc_entry->device_data != image_toc_entry->device_data) || \
-                 (flash_toc_entry->no_crc != image_toc_entry->no_crc) || \
-                 (flash_toc_entry->relative_addr != image_toc_entry->relative_addr)) {
-                    return errmsg(MLXFW_DEVICE_IMAGE_MISSMATCH_ERR, "An inconsistency was found in %s section attributes. %s ITOC attribute differs",\
-                            GetSectionNameByType(image_toc_entry->type), GET_DIFFER_STR(flash_toc_entry, image_toc_entry));
-            }
-            // replace itoc entry in the image
-            memset(itoc_data, 0, CIBFW_ITOC_ENTRY_SIZE);
-            cibfw_itoc_entry_pack(flash_toc_entry, itoc_data);
-            imageOps.Fs3UpdateImgCache(itoc_data, image_toc_info_entry->entry_addr, CIBFW_ITOC_ENTRY_SIZE);
-            cibfw_itoc_entry_unpack(&image_toc_info_entry->toc_entry, itoc_data);
-        }
-    }
-    return true;
-}
-
-
-// add an itoc entry to the image  (just the entry no the section itself)
-bool Fs3Operations::AddDevDataITOC(struct toc_info *flash_toc_entry, u_int8_t *image_data, struct toc_info *image_toc_arr, int& image_toc_size)
-{
-
-    if (image_toc_size + 1 > MAX_TOCS_NUM) {
-        return errmsg("Cannot add iTOC entry, too many entries in iTOC array.");
-    }
-    if (!flash_toc_entry->toc_entry.device_data) {
-        return errmsg("Cannot add non device data iTOC entry");
-    }
-    // add new entry to array
-    image_toc_arr[image_toc_size].entry_addr = image_toc_arr[image_toc_size - 1].entry_addr + CIBFW_ITOC_ENTRY_SIZE;
-    memcpy(image_toc_arr[image_toc_size].data, flash_toc_entry->data, CIBFW_ITOC_ENTRY_SIZE);
-    image_toc_arr[image_toc_size].section_data = flash_toc_entry->section_data;
-    image_toc_arr[image_toc_size].toc_entry = flash_toc_entry->toc_entry;
-    // write entry data to image_data
-    memcpy(&image_data[image_toc_arr[image_toc_size].entry_addr], image_toc_arr[image_toc_size].data, CIBFW_ITOC_ENTRY_SIZE);
-    // write END itoc entry at the end of the array
-    memset(&image_data[image_toc_arr[image_toc_size].entry_addr + CIBFW_ITOC_ENTRY_SIZE], 0xff, CIBFW_ITOC_ENTRY_SIZE);
-    image_toc_size++;
-    return true;
-}
-
-bool Fs3Operations::CheckFs3ImgSize(Fs3Operations& imageOps, bool useImageDevData)
-{
-    /* there are (ATM) two image slots on the flash:
-     * SLOT0: starts add flash address 0x0
-     * SLOT1: starts at flash address 2^_maxImgLogSize
-     * Device sections can either be a part of SLOT0 Image or SLOT1 or not, depending on flash size
-     * if flash size is greater than 2^(_maxImgLogSize+1) than device sections and first/second image dont share same area
-     * */
-    Fs3Operations& ops = useImageDevData ? imageOps : *this;
-    u_int32_t maxFsImgSize = 1 << ops._maxImgLog2Size;
-    u_int32_t smallestAbsAddrSlot0 = maxFsImgSize;
-    u_int32_t smallestAbsAddrSlot1 = 2*maxFsImgSize;
-    u_int32_t maxImgDataSizeSlot0, maxImgDataSizeSlot1;
-
-    // find smallest abs address in SLOT0
-    for (int i = 0; i < ops._fs3ImgInfo.numOfItocs; i++) {
-        struct cibfw_itoc_entry *toc_entry = &ops._fs3ImgInfo.tocArr[i].toc_entry;
-        u_int32_t tocEntryFlashAddr = toc_entry->flash_addr << 2;
-        if (toc_entry->device_data) {
-            if (tocEntryFlashAddr > maxFsImgSize) {
-                // address in SLOT1
-                smallestAbsAddrSlot1 = smallestAbsAddrSlot1 > tocEntryFlashAddr ? tocEntryFlashAddr : smallestAbsAddrSlot1;
-            } else {
-                // address in SLOT0
-                smallestAbsAddrSlot0 = smallestAbsAddrSlot0 > tocEntryFlashAddr ? tocEntryFlashAddr : smallestAbsAddrSlot0;
-            }
-        }
-    }
-    maxImgDataSizeSlot0 = smallestAbsAddrSlot0;
-    maxImgDataSizeSlot1 = smallestAbsAddrSlot1 - maxFsImgSize;
-
-    u_int32_t maxImgDataSize = maxImgDataSizeSlot0 < maxImgDataSizeSlot1 ? maxImgDataSizeSlot0 : maxImgDataSizeSlot1;
-    if (imageOps._fs3ImgInfo.sizeOfImgData > maxImgDataSize) {
-        return errmsg(MLXFW_IMAGE_TOO_LARGE_ERR, "Size of image data (0x%x) is greater than max size of image data (0x%x)",
-                imageOps._fs3ImgInfo.sizeOfImgData,  maxImgDataSize);
-    }
-    return true;
-}
-
-#define SUPPORTS_ISFU(chip_type) \
-    (chip_type == CT_CONNECT_IB || chip_type == CT_CONNECTX4 || chip_type == CT_CONNECTX4_LX || chip_type == CT_CONNECTX5)
-
-bool Fs3Operations::BurnFs3Image(Fs3Operations &imageOps,
-                                  ExtBurnParams& burnParams)
-{
-    u_int8_t  is_curr_image_in_odd_chunks;
-    u_int32_t new_image_start;
-    u_int32_t total_img_size = 0;
-    u_int32_t sector_size = FS3_DEFAULT_SECTOR_SIZE;
-    u_int8_t imageSignature[16];
-    Flash    *f     = (Flash*)(this->_ioAccess);
-    FImage   *fim   = (FImage*)(imageOps._ioAccess);
-    u_int8_t *data8;
-
-    if (_fwImgInfo.imgStart != 0 || (!burnParams.burnFailsafe && ((Flash*)_ioAccess)->get_ignore_cache_replacment())) {
-        // if the burn is not failsafe and with -ocr, the image is burnt at 0x0
-        is_curr_image_in_odd_chunks = 1;
-        new_image_start = 0;
-    } else {
-        is_curr_image_in_odd_chunks = 0;
-        new_image_start = (1 << imageOps._fwImgInfo.cntxLog2ChunkSize);
-    }
-    /*printf("-D- new_image_start = %#x, is_curr_image_in_odd_chunks = %#x\n", new_image_start, is_curr_image_in_odd_chunks);*/
-
-
-    // take chunk size from image in case of a non failsafe burn (in any case they should be the same)
-    f->set_address_convertor(imageOps._fwImgInfo.cntxLog2ChunkSize, !is_curr_image_in_odd_chunks);
-
-    // check max image size
-    bool useImageDevData =  !burnParams.burnFailsafe && burnParams.useImgDevData;
-    if (!CheckFs3ImgSize(imageOps, useImageDevData)) {
-        return false;
-    }
-
-    // update devDataTocsInImage
-    for (int i = 0; i < imageOps._fs3ImgInfo.numOfItocs; i++) {
-        struct toc_info *itoc_info_p = &imageOps._fs3ImgInfo.tocArr[i];
-        struct cibfw_itoc_entry *toc_entry = &itoc_info_p->toc_entry;
-
-        if (toc_entry->device_data) {// update dev_data itoc with the device's dev_data section addr
-            if (burnParams.burnFailsafe || !burnParams.useImgDevData) {
-                // we update the device data entires if : a. we burn failsafe or b. we burn non-failsafe but we take the device data anyway
-                if(!UpdateDevDataITOC(imageOps, itoc_info_p, _fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs)){
-                    return false;
-                }
-            }
-        }
-    }
-    // sanity check on the image itoc array
-    if (!imageOps.CheckItocArray()) {
-        return errmsg(MLXFW_IMAGE_CORRUPTED_ERR, "%s", imageOps.err());
-    }
-    //find total image size that will be written
-    for (int i = 0; i < imageOps._fs3ImgInfo.numOfItocs; i++) {
-        struct toc_info *itoc_info_p = &imageOps._fs3ImgInfo.tocArr[i];
-        struct cibfw_itoc_entry *toc_entry = &itoc_info_p->toc_entry;
-        if (!toc_entry->device_data) {
-            total_img_size += toc_entry->size << 2;
-        } else if (!burnParams.burnFailsafe && burnParams.useImgDevData) {
-            total_img_size += toc_entry->size << 2;
-        } else {
-            continue;
-        }
-    }
-
-    // add boot section, itoc array (wo signature)
-    total_img_size += imageOps._fs3ImgInfo.itocAddr + sector_size - FS3_FW_SIGNATURE_SIZE;
-
-    if ( total_img_size <= sector_size) {
-        return errmsg("Failed to burn FW. Internal error.");
-    }
-
-    // write the image
-    int alreadyWrittenSz=0;
-
-    /* Write begining of image: up to and including ITOCs  W/O signature */
-    u_int32_t beginingWithoutSignatureSize =  imageOps._fs3ImgInfo.itocAddr + sector_size - FS3_FW_SIGNATURE_SIZE;
-    data8 = new u_int8_t[beginingWithoutSignatureSize];
-    imageOps._imageCache.get(data8, FS3_FW_SIGNATURE_SIZE, beginingWithoutSignatureSize);
-    // write boot section, itoc array (wo signature)
-    if (!writeImage(burnParams.progressFunc,
-                    FS3_FW_SIGNATURE_SIZE,
-                    data8,
-                    beginingWithoutSignatureSize,
-                    false,
-                    false,
-                    total_img_size,
-                    alreadyWrittenSz)) {
-        delete[] data8;
-        return false;
-    }
-    delete[] data8;
-    alreadyWrittenSz += beginingWithoutSignatureSize;
-    // write itoc entries data
-    for (int i = 0; i < imageOps._fs3ImgInfo.numOfItocs; i++) {
-        struct toc_info *itoc_info_p = &imageOps._fs3ImgInfo.tocArr[i];
-        struct cibfw_itoc_entry *toc_entry = &itoc_info_p->toc_entry;
-        bool writeSection = true;
-        if (toc_entry->device_data && (burnParams.burnFailsafe || !burnParams.useImgDevData)) {
-            writeSection = false;
-        }
-
-        if (writeSection) {
-            if (!writeImage(burnParams.progressFunc, toc_entry->flash_addr << 2 , &(itoc_info_p->section_data[0]), itoc_info_p->section_data.size(), !toc_entry->relative_addr, false, total_img_size, alreadyWrittenSz)) {
-                return false;
-            }
-            alreadyWrittenSz += itoc_info_p->section_data.size();
-        }
-    }
-
-    if (!f->is_flash()) {
-        return true;
-    }
-    fim->read(0, imageSignature, 16);
-    // Write new signature
-    if (!f->write(0, imageSignature, 16, true)) {
-        return false;
-    }
-    return DoAfterBurnJobs(_cntx_magic_pattern, imageOps, burnParams, f,
-            new_image_start, is_curr_image_in_odd_chunks);
-}
-
-bool Fs3Operations::FsBurnAux(FwOperations *imgops, ExtBurnParams& burnParams)
-{
-    Fs3Operations& imageOps = * ((Fs3Operations *) imgops);
-
-    if (imageOps.FwType() != FIT_FS3) {
-        return errmsg(MLXFW_IMAGE_FORMAT_ERR, "FW image type is not FS3\n");
-    }
-    bool devIntQueryRes = FsIntQueryAux();
-
-    if (!devIntQueryRes && burnParams.burnFailsafe) {
-        return false;
-    }
-
-    // for image we execute full verify to bring all the information needed for ROM Patch
-    if (!imageOps.FsIntQueryAux(true, false)) {
-          return false;
-    }
-    // Check Matching device ID
-    if (!burnParams.noDevidCheck && _ioAccess->is_flash()) {
-        if (imageOps._fwImgInfo.supportedHwIdNum) {
-             if (!CheckMatchingHwDevId(_ioAccess->get_dev_id(),
-                                         _ioAccess->get_rev_id(),
-                                         imageOps._fwImgInfo.supportedHwId,
-                                         imageOps._fwImgInfo.supportedHwIdNum)) {
-                 return errmsg(MLXFW_DEVICE_IMAGE_MISSMATCH_ERR, "Device/Image mismatch: %s\n",this->err( ));
-             }
-         } else { // no suppored hw ids (problem with the image ?)
-             return errmsg(MLXFW_DEVICE_IMAGE_MISSMATCH_ERR, "No supported devices were found in the FW image.");
-         }
-    }
-
-    if (!burnParams.burnFailsafe) {
-        // some checks in case we burn in a non-failsafe manner and attempt to integrate existing device
-        // data sections from device.
-        if (!burnParams.useImgDevData) { // we will take device data section from device: perform some checks
-            if (_fs3ImgInfo.itocAddr == 0) {
-                return errmsg("Cannot extract device data sections: invalid ITOC section. please ignore extracting device data sections.");
-            }
-            if (_badDevDataSections) {
-                return errmsg("Cannot integrate device data sections: device data sections are corrupted. please ignore extracting device data sections.");
-            }
-        } else { // we will take device data sections from image: make sure device is not write protected
-            if (_ioAccess->is_flash()) {
-                FBase* origFlashObj = (FBase*)NULL;
-                if (!((Flash*)_ioAccess)->get_ignore_cache_replacment()) {
-                   origFlashObj = _ioAccess;
-                   _fwParams.ignoreCacheRep = 1;
-                   if (!FwOperations::FwAccessCreate(_fwParams, &_ioAccess)) {
-                       _ioAccess = origFlashObj;
-                       _fwParams.ignoreCacheRep = 0;
-                       return errmsg(MLXFW_OPEN_OCR_ERR, "Failed to open device for direct flash access");
-                   }
-                }
-
-                if (((Flash*)_ioAccess)->is_flash_write_protected()) {
-                   FLASH_RESTORE(origFlashObj);
-                   return errmsg("Cannot burn device data sections, Flash is write protected.");
-                }
-                FLASH_RESTORE(origFlashObj);
-            }
-        }
-    }
-
-    if (devIntQueryRes && !CheckPSID(imageOps, burnParams.allowPsidChange)) {
-        return false;
-    }
-
-    if (burnParams.burnFailsafe) {
-        // Check image and device chunk sizes are Ok
-        if (_fwImgInfo.cntxLog2ChunkSize != imageOps._fwImgInfo.cntxLog2ChunkSize) {
-            //TODO: remove both cond before release
-            if (_ioAccess->get_size() < 0x1000000) {
-                return errmsg(MLXFW_DEVICE_IMAGE_MISSMATCH_ERR, "Image intended for 16MB Flash. please replace your HCA or perform rework before updating.");
-            }
-            // if (imageOps._fwImgInfo.cntxLog2ChunkSize == 0x16 ) {
-                return errmsg(MLXFW_FS_INFO_MISSMATCH_ERR, "Device and Image chunk sizes differ\n"
-                              "    Internal users: in order to fix, please run:  mlxfwup -d %s -f %d.%04d.%04d --fix_cx4_image\n"
-                              "    External users: contact Mellanox support team.", _devName, imageOps._fwImgInfo.ext_info.fw_ver[0],
-                              imageOps._fwImgInfo.ext_info.fw_ver[1], imageOps._fwImgInfo.ext_info.fw_ver[2]); 
-            //}
-            // return errmsg("Device and Image chunk sizes differ, use non failsafe burn flow.");
-        }
-
-        // Check if the burnt FW version is OK
-        if (!CheckFwVersion(imageOps, burnParams.ignoreVersionCheck)) {
-            return false;
-        }
-
-        // Check TimeStamp
-        if (!TestAndSetTimeStamp(imageOps)) {
-            return false;
-        }
-
-        // ROM patchs
-        if (((burnParams.burnRomOptions == ExtBurnParams::BRO_FROM_DEV_IF_EXIST) && (_fwImgInfo.ext_info.roms_info.exp_rom_found)) || // There is ROM in device and user choses to keep it
-                ((burnParams.burnRomOptions == ExtBurnParams::BRO_DEFAULT) && (!imageOps._fwImgInfo.ext_info.roms_info.exp_rom_found && _fwImgInfo.ext_info.roms_info.exp_rom_found))) { // No ROM in image and ROM in device
-            // here we should take rom from device and insert into the image
-            // i.e if we have rom in image remove it and put the rom from the device else just put rom from device.
-            // 1. use Fs3ModifySection to integrate _romSect buff with the image , newImageData contains the modified image buffer
-            std::vector<u_int8_t> romSect = _romSect;
-            TOCPUn((u_int32_t*)&romSect[0], romSect.size()/4);
-            if (!imageOps.Fs3ReplaceSectionInDevImg(FS3_ROM_CODE, FS3_PCI_CODE, true, (u_int8_t*)NULL, 0,
-                    (u_int32_t*)&romSect[0], (u_int32_t)romSect.size())) {
-                return errmsg(MLXFW_ROM_UPDATE_IN_IMAGE_ERR, "failed to update ROM in image. %s", imageOps.err());
-            }
-
-        }
-        // image vsd patch
-        if (!burnParams.useImagePs && (burnParams.vsdSpecified || burnParams.useDevImgInfo)) {
-            // get image info section :
-            struct toc_info *imageInfoToc = (struct toc_info *)NULL;
-            if (!imageOps.Fs3GetItocInfo(imageOps._fs3ImgInfo.tocArr, imageOps._fs3ImgInfo.numOfItocs, FS3_IMAGE_INFO, imageInfoToc)){
-                return errmsg(MLXFW_GET_SECT_ERR, "failed to get Image Info section.");
-            }
-            // modify it:
-            std::vector<u_int8_t> imageInfoSect = imageInfoToc->section_data;
-            struct cibfw_image_info image_info;
-            cibfw_image_info_unpack(&image_info, &imageInfoSect[0]);
-            if (burnParams.vsdSpecified) {
-                strncpy(image_info.vsd, burnParams.userVsd, VSD_LEN);
-            }
-            cibfw_image_info_pack(&image_info, &imageInfoSect[0]);
-            if (burnParams.useDevImgInfo) {
-                // update PSID, name and description in image info
-                struct tools_open_image_info tools_image_info;
-                tools_open_image_info_unpack(&tools_image_info, &imageInfoSect[0]);
-                strncpy(tools_image_info.psid, _fwImgInfo.ext_info.psid, PSID_LEN - 1);
-                strncpy(tools_image_info.name, _fs3ImgInfo.ext_info.name, NAME_LEN - 1);
-                strncpy(tools_image_info.description, _fs3ImgInfo.ext_info.description, DESCRIPTION_LEN - 1);
-                tools_open_image_info_pack(&tools_image_info, &imageInfoSect[0]);
-            }
-            // re-insert it into the image:
-            if (!imageOps.Fs3ReplaceSectionInDevImg(FS3_IMAGE_INFO, FS3_FW_ADB, true,(u_int8_t*) NULL, 0,
-                    (u_int32_t*)&imageInfoSect[0], (u_int32_t)imageInfoSect.size())) {
-                return errmsg(MLXFW_UPDATE_SECT_ERR, "failed to update IMAGE_INFO section in image. %s", imageOps.err());
-            }
-        }
-    }
-    return BurnFs3Image(imageOps, burnParams);
-}
-
-bool Fs3Operations::FwBurn(FwOperations *imageOps, u_int8_t forceVersion, ProgressCallBack progressFunc)
-{
-    if (imageOps == NULL) {
-        return errmsg("bad parameter is given to FwBurn\n");
-    }
-
-    ExtBurnParams burnParams = ExtBurnParams();
-    burnParams.ignoreVersionCheck = forceVersion;
-    burnParams.progressFunc = progressFunc;
-
-    return FsBurnAux(imageOps, burnParams);
-
-}
-
-bool Fs3Operations::FwBurnAdvanced(FwOperations *imageOps, ExtBurnParams& burnParams)
-{
-    if (imageOps == NULL) {
-        return errmsg("bad parameter is given to FwBurnAdvanced\n");
-    }
-    return FsBurnAux(imageOps, burnParams);
-}
-
-bool Fs3Operations::FwBurnBlock(FwOperations *imageOps, ProgressCallBack progressFunc)
-{
-    // Avoid Warning!
-    (void)imageOps;
-    (void)progressFunc;
-    return errmsg("FwBurnBlock is not supported anymore in FS3 image.");
-}
-
-bool Fs3Operations::FwReadData(void* image, u_int32_t* imageSize)
-{
-    struct QueryOptions queryOptions;
-    if (!imageSize) {
-        return errmsg("bad parameter is given to FwReadData\n");
-    }
-
-    queryOptions.readRom = true;
-    queryOptions.quickQuery = false;
-    if (image == NULL) {
-        // When we need only to get size, no need for reading entire image
-        queryOptions.readRom = false;
-        queryOptions.quickQuery = true;
-    }
-    // Avoid Warning
-    if (!FsVerifyAux((VerifyCallBack)NULL, 0, queryOptions)) {
-        return false;
-    }
-
-    _imageCache.get((u_int8_t*)image, _fwImgInfo.lastImageAddr);
-    *imageSize = _fwImgInfo.lastImageAddr;
-    return true;
-}
-
-bool Fs3Operations::FwReadRom(std::vector<u_int8_t>& romSect)
-{
-    if (!FsIntQueryAux()) {
-        return false;
-    }
-    if (_romSect.empty()) {
-        return errmsg("Read ROM failed: The FW does not contain a ROM section");
-    }
-    romSect = _romSect;
-    // Set endianness
-    TOCPUn(&(romSect[0]), romSect.size()/4);
-    return true;
-}
-
-bool Fs3Operations::FwGetSection (u_int32_t sectType, std::vector<u_int8_t>& sectInfo, bool stripedImage)
-{
-    (void) stripedImage; // unused for FS3
-    //FwGetSection only supports retrieving FS3_DBG_FW_INI section atm.
-    if (sectType != FS3_DBG_FW_INI) {
-        return errmsg("Unsupported section type.");
-    }
-    //set the sector to read (need to remove it after read)
-    _readSectList.push_back(sectType);
-    if (!FsIntQueryAux()) {
-        _readSectList.pop_back();
-        return false;
-    }
-    _readSectList.pop_back();
-    sectInfo = _fwConfSect;
-    if (sectInfo.empty()) {
-        return errmsg("Hash File section not found in the given image.");
-    }
-    return true;
-}
-
-bool Fs3Operations::FwSetMFG(fs3_uid_t baseGuid, PrintCallBack callBackFunc)
-{
-    if (!baseGuid.base_guid_specified && !baseGuid.base_mac_specified) {
-        return errmsg("base GUID/MAC were not specified.");
-    }
-
-    if (baseGuid.base_mac_specified && !CheckMac(baseGuid.base_mac)) {
-        return errmsg("Bad MAC (" MAC_FORMAT ") given: %s. Please specify a valid MAC value", baseGuid.base_mac.h, baseGuid.base_mac.l, err());
-    }
-    if (!baseGuid.use_pp_attr) {
-        baseGuid.num_of_guids_pp[0] = baseGuid.num_of_guids ? baseGuid.num_of_guids : DEFAULT_GUID_NUM;
-        baseGuid.step_size_pp[0] = baseGuid.step_size ? baseGuid.step_size : DEFAULT_STEP;
-        baseGuid.num_of_guids_pp[1] = baseGuid.num_of_guids ? baseGuid.num_of_guids : DEFAULT_GUID_NUM;
-        baseGuid.step_size_pp[1] = baseGuid.step_size ? baseGuid.step_size : DEFAULT_STEP;
-        baseGuid.use_pp_attr = 1;
-    }
-    FAIL_NO_OCR("set manufacture GUIDs/MACs");
-    if (!Fs3UpdateSection(&baseGuid, FS3_MFG_INFO, false, CMD_SET_MFG_GUIDS, callBackFunc)) {
-        return false;
-    }
-    // on image verify that image is OK after modification (we skip this on device for performance reasons)
-    if (!_ioAccess->is_flash() && !FsIntQueryAux(false, false)) {
-        return false;
-    }
-    return true;
-}
-
-bool Fs3Operations::FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc)
-{
-    // in FS3 default behavior when setting GUIDs / MFG is to assign ini default step size and number.
-    fs3_uid_t bGuid = {baseGuid, 1, {0, 0}, 0, 0, 0, 1, 1, {DEFAULT_GUID_NUM, DEFAULT_STEP}, {DEFAULT_GUID_NUM, DEFAULT_STEP}};
-    return FwSetMFG(bGuid, callBackFunc);
-}
-
-bool Fs3Operations::FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc, ProgressCallBack progressFunc)
-{
-    fs3_uid_t usrGuid;
-    memset(&usrGuid, 0, sizeof(usrGuid));
-    // Avoid Warning because there is no need for progressFunc
-    (void)progressFunc;
-    if (sgParam.userGuids.empty()) {
-        return errmsg("Base GUID not found.");
-    }
-    //query device to get mfg info (for guids override en bit)
-    if (!FsIntQueryAux(false)) {
-        return false;
-    }
-
-    if (!_fs3ImgInfo.ext_info.guids_override_en) {
-       return errmsg("guids override is not set, cannot set device guids");
-    }
-
-    usrGuid.num_of_guids_pp[0] = sgParam.usePPAttr ? sgParam.numOfGUIDsPP[0] : sgParam.numOfGUIDs ? sgParam.numOfGUIDs : DEFAULT_GUID_NUM;
-    usrGuid.step_size_pp[0] =  sgParam.usePPAttr ? sgParam.stepSizePP[0] : sgParam.stepSize ? sgParam.stepSize : DEFAULT_STEP;
-    usrGuid.num_of_guids_pp[1] = sgParam.usePPAttr ? sgParam.numOfGUIDsPP[1] : sgParam.numOfGUIDs ? sgParam.numOfGUIDs : DEFAULT_GUID_NUM;
-    usrGuid.step_size_pp[1] =  sgParam.usePPAttr ? sgParam.stepSizePP[1] : sgParam.stepSize ? sgParam.stepSize : DEFAULT_STEP;
-    usrGuid.use_pp_attr = 1;
-
-    usrGuid.base_guid_specified = false;
-    usrGuid.base_mac_specified = false;
-    usrGuid.set_mac_from_guid = false;
-
-    if (sgParam.guidsSpecified || sgParam.uidSpecified) {
-        usrGuid.base_guid_specified = true;
-        usrGuid.base_guid = sgParam.userGuids[0];
-        usrGuid.set_mac_from_guid = sgParam.uidSpecified ? true : false;
-    }
-    if (sgParam.macsSpecified) {
-        // check base mac
-        if (!CheckMac(sgParam.userGuids[1])) {
-            return errmsg("Bad MAC (" MAC_FORMAT ") given: %s. Please specify a valid MAC value", sgParam.userGuids[1].h, sgParam.userGuids[1].l, err());
-        }
-        usrGuid.base_mac_specified = true;
-        usrGuid.base_mac = sgParam.userGuids[1];
-    }
-
-    if (!usrGuid.base_guid_specified && !usrGuid.base_mac_specified) {
-        return errmsg("base GUID/MAC were not specified.");
-    }
-    FAIL_NO_OCR("set GUIDs/MACs");
-    if (!Fs3UpdateSection(&usrGuid, FS3_DEV_INFO, false, CMD_SET_GUIDS, callBackFunc)) {
-        return false;
-    }
-    // on image verify that image is OK after modification (we skip this on device for performance reasons)
-    if (!_ioAccess->is_flash() && !FsIntQueryAux(false, false)) {
-        return false;
-    }
-    return true;
-}
-
-bool Fs3Operations::FwSetVPD(char* vpdFileStr, PrintCallBack callBackFunc)
-{
-    if (!vpdFileStr) {
-        return errmsg("Please specify a valid vpd file.");
-    }
-    FAIL_NO_OCR("set VPD");
-
-    if (!Fs3UpdateSection(vpdFileStr, FS3_VPD_R0, false, CMD_BURN_VPD, callBackFunc)) {
-        return false;
-    }
-    // on image verify that image is OK after modification (we skip this on device for performance reasons)
-    if (!_ioAccess->is_flash() && !FsIntQueryAux(false, false)) {
-        return false;
-    }
-    return true;
-}
-
-bool Fs3Operations::GetModifiedSectionInfo(fs3_section_t sectionType, fs3_section_t nextSectionType, u_int32_t &newSectAddr,
-        fs3_section_t &SectToPut, u_int32_t &oldSectSize)
-{
-    struct toc_info *curr_itoc = (struct toc_info *)NULL;
-    if (Fs3GetItocInfo(_fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs, sectionType, curr_itoc) ||
-        Fs3GetItocInfo(_fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs, nextSectionType, curr_itoc)) {
-        newSectAddr = curr_itoc->toc_entry.flash_addr << 2;
-        SectToPut = (curr_itoc->toc_entry.type == sectionType) ? sectionType :  nextSectionType;
-        oldSectSize = curr_itoc->toc_entry.size * 4;
-        return true;
-    }
-    return false;
-}
-
-bool Fs3Operations::ShiftItocAddrInEntry(struct toc_info *newItocInfo, struct toc_info *oldItocInfo, int shiftSize)
-{
-    u_int32_t currSectaddr;
-    CopyItocInfo(newItocInfo, oldItocInfo);
-    currSectaddr =  (newItocInfo->toc_entry.flash_addr << 2) + shiftSize;
-    Fs3UpdateItocInfo(newItocInfo, currSectaddr);
-    return true;
-}
-bool Fs3Operations::Fs3UpdateItocInfo(struct toc_info *newItocInfo, u_int32_t newSectAddr, fs3_section_t sectionType, u_int32_t* newSectData,
-        u_int32_t NewSectSize)
-{
-    std::vector<u_int8_t>  newSecVect(NewSectSize);
-    newItocInfo->toc_entry.type = sectionType;
-    memcpy(&newSecVect[0], newSectData, NewSectSize);
-    return Fs3UpdateItocInfo(newItocInfo, newSectAddr, NewSectSize / 4, newSecVect);
-}
-
-
-bool Fs3Operations::CopyItocInfo(struct toc_info *newTocInfo, struct toc_info *currToc)
-{
-    memcpy(newTocInfo->data, currToc->data, CIBFW_ITOC_ENTRY_SIZE);
-    newTocInfo->entry_addr = currToc->entry_addr;
-    newTocInfo->section_data = currToc->section_data;
-    newTocInfo->toc_entry = currToc->toc_entry;
-    return true;
-}
-
-
-
-
-bool Fs3Operations::UpdateItocAfterInsert(fs3_section_t sectionType, u_int32_t newSectAddr, fs3_section_t SectToPut, bool toAdd, u_int32_t* newSectData,
-        u_int32_t removedOrNewSectSize, struct toc_info *tocArr, u_int32_t &numOfItocs)
-{
-    bool isReplacement = (sectionType == SectToPut) ? true : false;
-    int shiftSize;
-
-    if (toAdd) {
-        if (isReplacement) {
-            struct toc_info *curr_itoc = (struct toc_info *)NULL;
-            u_int32_t sectSize;
-            if (!Fs3GetItocInfo(_fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs, sectionType, curr_itoc)) {
-                return false;
-            }
-            sectSize = curr_itoc->toc_entry.size * 4;
-            shiftSize = (removedOrNewSectSize > sectSize) ? removedOrNewSectSize - sectSize : 0;
-        } else {
-            shiftSize = removedOrNewSectSize;
-        }
-        if (shiftSize % FS3_DEFAULT_SECTOR_SIZE) {
-            shiftSize += (FS3_DEFAULT_SECTOR_SIZE - shiftSize % FS3_DEFAULT_SECTOR_SIZE);
-        }
-    } else {
-        shiftSize = 0;
-        if (removedOrNewSectSize % FS3_DEFAULT_SECTOR_SIZE) {
-            removedOrNewSectSize += (FS3_DEFAULT_SECTOR_SIZE - removedOrNewSectSize % FS3_DEFAULT_SECTOR_SIZE);
-        }
-        shiftSize -= removedOrNewSectSize;
-    }
-    numOfItocs = 0;
-    int shifEntryToc = 0;
-    u_int32_t shiftEntryAddr = -1;
-    int ignoreShiftIdx = -1;
-    for (int i = 0; i < _fs3ImgInfo.numOfItocs; i++) {
-        struct toc_info *curr_itoc = &_fs3ImgInfo.tocArr[i];
-        struct toc_info *newTocInfo = &tocArr[numOfItocs];
-        u_int32_t currSectaddr =  curr_itoc->toc_entry.flash_addr << 2; // Put it in one place
-        //printf("-D- BEFORE : Entry Type: %#x, Entry offset: %#x\n", curr_itoc->toc_entry.type, curr_itoc->entry_addr);
-        if (currSectaddr > newSectAddr) {
-            if (!curr_itoc->toc_entry.relative_addr) {
-
-                CopyItocInfo(newTocInfo, curr_itoc);
-            } else {
-                ShiftItocAddrInEntry(newTocInfo, curr_itoc, shiftSize);
-
-            }
-        } else if (currSectaddr == newSectAddr) {
-            shiftEntryAddr = curr_itoc->entry_addr + CIBFW_ITOC_ENTRY_SIZE;
-            if (!toAdd) {
-                shifEntryToc = -1 * CIBFW_ITOC_ENTRY_SIZE;
-                continue;
-            }
-            shifEntryToc = CIBFW_ITOC_ENTRY_SIZE;
-            CopyItocInfo(newTocInfo, curr_itoc);
-            Fs3UpdateItocInfo(newTocInfo, newSectAddr, sectionType, newSectData, removedOrNewSectSize);
-
-            if (!isReplacement) {
-                // put next section
-                newTocInfo = &tocArr[++numOfItocs];
-                ShiftItocAddrInEntry(newTocInfo, curr_itoc, shiftSize);
-                newTocInfo->entry_addr = shiftEntryAddr;
-                ignoreShiftIdx = numOfItocs;
-            } else {
-                shifEntryToc = 0;
-            }
-        } else {
-             // just Copy the ITOC as is
-            CopyItocInfo(newTocInfo, curr_itoc);
-        }
-        numOfItocs++;
-    }
-    if (shifEntryToc) {
-        for (int i = 0; i < (int)numOfItocs; i++) {
-            struct toc_info *tocInfo = &tocArr[i];
-            if (i != ignoreShiftIdx && tocInfo->entry_addr >= shiftEntryAddr) {
-                tocInfo->entry_addr += shifEntryToc;
-            }
-            //printf("-D- AFTER : Entry Type: %#x, Entry offset: %#x\n", tocInfo->toc_entry.type, tocInfo->entry_addr);
-        }
-    }
-    return true;
-}
-
-bool Fs3Operations::UpdateImageAfterInsert(struct toc_info *tocArr, u_int32_t numOfItocs, u_int8_t* newImgData, u_int32_t newImageSize)
-{
-
-    // Copy data before itocAddr and ITOC header
-    //memcpy(newImgData, &_imageCache[0], _fs3ImgInfo.itocAddr);
-    if (newImgData) {
-        _imageCache.get(newImgData, _fs3ImgInfo.itocAddr);
-        memcpy(&newImgData[_fs3ImgInfo.itocAddr], _fs3ImgInfo.itocHeader, CIBFW_ITOC_HEADER_SIZE);
-    } else {
-        Fs3UpdateImgCache(_fs3ImgInfo.itocHeader, _fs3ImgInfo.itocAddr, CIBFW_ITOC_HEADER_SIZE);
-        newImageSize = _fwImgInfo.lastImageAddr;
-    }
-    for (int i = 0; i < (int)numOfItocs; i++) {
-        // Inits
-        u_int32_t itocOffset = _fs3ImgInfo.itocAddr + CIBFW_ITOC_HEADER_SIZE + i * CIBFW_ITOC_ENTRY_SIZE;
-        struct toc_info *currItoc = &tocArr[i];
-        u_int8_t sectType = currItoc->toc_entry.type;
-        u_int32_t sectAddr = currItoc->toc_entry.flash_addr << 2;
-        u_int32_t sectSize = currItoc->toc_entry.size * 4;
-        // Some checks
-        if (sectAddr + sectSize > newImageSize) {
-            return errmsg("Internal error: Size of modified image (0x%x) is longer than size of original image (0x%x)!", sectAddr + sectSize, newImageSize);
-        }
-        if (sectSize != currItoc->section_data.size()) {
-            return errmsg("Internal error: Sectoion size of %s (0x%x) is not equal to allocated memory for it(0x%x)", GetSectionNameByType(sectType),
-                    sectSize, (u_int32_t)currItoc->section_data.size());
-        }
-        if (!newImgData) {
-            Fs3UpdateImgCache(currItoc->data, itocOffset, CIBFW_ITOC_ENTRY_SIZE);
-            Fs3UpdateImgCache(&currItoc->section_data[0], sectAddr, sectSize);
-        } else {
-            memcpy(&newImgData[itocOffset], currItoc->data, CIBFW_ITOC_ENTRY_SIZE);
-
-            memcpy(&newImgData[sectAddr], &currItoc->section_data[0], sectSize);
-        }
-    }
-    u_int32_t lastItocSect = _fs3ImgInfo.itocAddr + CIBFW_ITOC_HEADER_SIZE + numOfItocs * CIBFW_ITOC_ENTRY_SIZE;
-    if (!newImgData) {
-        u_int8_t fs3_end_buf[CIBFW_ITOC_ENTRY_SIZE] = {FS3_END};
-        Fs3UpdateImgCache(fs3_end_buf, lastItocSect, CIBFW_ITOC_ENTRY_SIZE);
-    } else {
-        memset(&newImgData[lastItocSect], FS3_END, CIBFW_ITOC_ENTRY_SIZE);
-    }
-
-    return true;
-}
-
-/*
- * Adrianc: this is probably the longest method signature in this file. to make things clear:
- *              Fs3ReplaceSectionInDevImg() adds a new section to the firmware image or removes an exsisting section from the firmware image.
- *              if user specified newImgData, the modified image (after add/remove) will be copied to the buffer, else the object itself will be modified
- *              (i.e imageCache and itocs updated)
- *
- *@param sectionType : section type to add or remove
- *@param nextSectionType : in case of adding, add the new section before this section type
- *@param toAdd : specifies whether the operation is add or remove
- *@param newImageData : if not null the new modified image will be written here (object context remains un-changed)
- *@param newImageSize:  size of newImageData
- *@param newSectData : data buffer of the section to be added
- *@param newSectSize : newSectData size
- *@param UpdateExsistingTocArr: update the objects itoc array
- * */
-
-bool Fs3Operations::Fs3ReplaceSectionInDevImg(fs3_section_t sectionType, fs3_section_t nextSectionType, bool toAdd, u_int8_t* newImgData, u_int32_t newImageSize,
-        u_int32_t* newSectData, u_int32_t NewSectSize)
-{
-    u_int32_t newSectAddr;
-    u_int32_t numOfItocs;
-    struct toc_info tocArr[MAX_TOCS_NUM];
-    fs3_section_t sectToPut;
-    u_int32_t oldSectSize;
-    if (!GetModifiedSectionInfo(sectionType, nextSectionType, newSectAddr, sectToPut, oldSectSize)) {
-        return false;
-    }
-    u_int32_t removedOrNewSectSize = (toAdd) ? NewSectSize : oldSectSize;
-
-    if (!UpdateItocAfterInsert(sectionType, newSectAddr, sectToPut, toAdd, newSectData, removedOrNewSectSize, tocArr, numOfItocs)) {
-        return false;
-    }
-    if (!UpdateImageAfterInsert(tocArr, numOfItocs, newImgData, newImageSize)) {
-        return false;
-    }
-    if (!newImgData) { // uptade was perform on the object, update its itoc array
-       _fs3ImgInfo.numOfItocs = numOfItocs;
-       for (u_int32_t i=0;i < numOfItocs;i++) {
-               _fs3ImgInfo.tocArr[i] = tocArr[i];
-       }
-    }
-    return true;
-}
-
-bool Fs3Operations::Fs3ModifySection(fs3_section_t sectionType, fs3_section_t neighbourSection, bool toAdd, u_int32_t* newSectData, u_int32_t newSectSize,
-        ProgressCallBack progressFunc)
-{
-    // Get image data and ROM data and integrate ROM data into image data
-    // Verify FW on device
-    if (!FwVerify((VerifyCallBack)NULL)) {
-        return errmsg("Verify FW burn on the device failed: %s", err());
-    }
-
-    std::vector<u_int8_t> newImageData(_fwImgInfo.lastImageAddr);
-    // u_int8_t *newImageData = new u_int8_t[_fwImgInfo.lastImageAddr];
-
-    if (!Fs3ReplaceSectionInDevImg(sectionType, neighbourSection, toAdd, (u_int8_t*)&newImageData[0], _fwImgInfo.lastImageAddr,
-            newSectData, newSectSize)) {
-        return false;
-    }
-    // Burn the new image into the device.
-    if (!FwBurnData((u_int32_t*)&newImageData[0], _fwImgInfo.lastImageAddr, progressFunc)) {
-        return false;
-    }
-    return true;
-}
-
-bool Fs3Operations::Fs3AddSection(fs3_section_t sectionType, fs3_section_t neighbourSection, u_int32_t* newSectData, u_int32_t newSectSize,
-        ProgressCallBack progressFunc)
-{
-    // We need to add the new section before the neighbourSection
-    return Fs3ModifySection(sectionType, neighbourSection, true, newSectData, newSectSize, progressFunc);
-}
-
-bool Fs3Operations::Fs3RemoveSection(fs3_section_t sectionType, ProgressCallBack progressFunc)
-{
-    return Fs3ModifySection(sectionType, sectionType, false, (u_int32_t*)NULL, 0, progressFunc);
-}
-
-bool Fs3Operations::FwBurnRom(FImage* romImg, bool ignoreProdIdCheck, bool ignoreDevidCheck,
-        ProgressCallBack progressFunc)
-{
-    roms_info_t romsInfo;
-
-    if (romImg == NULL) {
-        return errmsg("Bad ROM image is given.");
-    }
-
-    if (romImg->getBufLength() == 0) {
-        return errmsg("Bad ROM file: Empty file.");
-    }
-    if (!FwOperations::getRomsInfo(romImg, romsInfo)) {
-            return errmsg("Failed to read given ROM.");
-    }
-    if (!FsIntQueryAux(false)) {
-        return false;
-    }
-
-    if (getInfoFromChipType(_fwImgInfo.ext_info.chip_type).chipFamilyType != CFT_HCA) {
-        return errmsg("Burn ROM is supported only for HCA devices.");
-    }
-
-    if (!ignoreProdIdCheck && strcmp(_fwImgInfo.ext_info.product_ver, "") != 0) {
-        return errmsg("The device FW contains common FW/ROM Product Version - The ROM cannot be updated separately.");
-    }
-
-    if (!ignoreDevidCheck && !FwOperations::checkMatchingExpRomDevId(_fwImgInfo.ext_info.dev_type, romsInfo)) {
-        return errmsg("Image file ROM: FW is for device %d, but Exp-ROM is for device %d\n", _fwImgInfo.ext_info.dev_type,
-                romsInfo.exp_rom_com_devid);
-    }
-    // Burning ROM is not allowed on Device with Timestamp enabled.
-    if (DeviceTimestampEnabled()) {
-        return errmsg("A valid Timestamp was detected on device. ROM cannot be updated. reset timestamp and resume operation");
-    }
-    return Fs3AddSection(FS3_ROM_CODE, FS3_PCI_CODE, romImg->getBuf(), romImg->getBufLength(), progressFunc);
-}
-
-bool Fs3Operations::FwDeleteRom(bool ignoreProdIdCheck, ProgressCallBack progressFunc)
-{
-    //run int query to get product ver
-    if (!FsIntQueryAux(true)) {
-        return false;
-    }
-
-    if (getInfoFromChipType(_fwImgInfo.ext_info.chip_type).chipFamilyType != CFT_HCA) {
-        return errmsg("Delete ROM is supported only for HCA devices.");
-    }
-
-    if (_romSect.empty()) {
-        return errmsg("The FW does not contain a ROM section");
-    }
-
-    if (!ignoreProdIdCheck && strcmp(_fwImgInfo.ext_info.product_ver, "") != 0) {
-        return errmsg("The device FW contains common FW/ROM Product Version - The ROM cannot be updated separately.");
-    }
-    // Deleting ROM is not allowed on Device with Timestamp enabled.
-    if (DeviceTimestampEnabled()) {
-        return errmsg("A valid Timestamp was detected on device. ROM cannot be updated. reset timestamp and resume operation");
-    }
-    return Fs3RemoveSection(FS3_ROM_CODE, progressFunc);
-}
-
-bool Fs3Operations::Fs3GetItocInfo(struct toc_info *tocArr, int num_of_itocs, fs3_section_t sect_type, struct toc_info *&curr_toc)
-{
-    for (int i = 0; i < num_of_itocs; i++) {
-        struct toc_info *itoc_info = &tocArr[i];
-        if (itoc_info->toc_entry.type == sect_type) {
-            curr_toc =  itoc_info;
-            return true;
-        }
-    }
-    return errmsg("ITOC entry type: %s (%d) not found", GetSectionNameByType(sect_type), sect_type);
-}
-
-bool Fs3Operations::Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vector<u_int8_t>  section_data, fs3_uid_t base_uid,
-                                            std::vector<u_int8_t>  &newSectionData)
-{
-    struct cibfw_mfg_info cib_mfg_info;
-    struct cx4fw_mfg_info cx4_mfg_info;
-    (void)curr_toc;
-    cibfw_mfg_info_unpack(&cib_mfg_info, (u_int8_t*)&section_data[0]);
-
-    if (CHECK_MFG_OLD_FORMAT(cib_mfg_info)) {
-        if (!Fs3ChangeUidsFromBase(base_uid, cib_mfg_info.guids)) {
-            return false;
-        }
-    } else if (CHECK_MFG_NEW_FORMAT(cib_mfg_info)) {
-        cx4fw_mfg_info_unpack(&cx4_mfg_info, (u_int8_t*)&section_data[0]);
-        if (!Fs3ChangeUidsFromBase(base_uid, cx4_mfg_info.guids)) {
-            return false;
-        }
-    } else {
-        return errmsg("Unknown MFG_INFO format version (%d.%d).", cib_mfg_info.major_version, cib_mfg_info.minor_version);
-    }
-    newSectionData = section_data;
-
-    if (CHECK_MFG_NEW_FORMAT(cib_mfg_info)) {
-        cx4fw_mfg_info_pack(&cx4_mfg_info, (u_int8_t*)&newSectionData[0]);
-    } else {
-        cibfw_mfg_info_pack(&cib_mfg_info, (u_int8_t*)&newSectionData[0]);
-    }
-    return true;
-}
-
-#define GUID_TO_64(guid_st) \
-        (guid_st.l | (u_int64_t)guid_st.h << 32)
-
-bool Fs3Operations::Fs3ChangeUidsFromBase(fs3_uid_t base_uid, struct cibfw_guids& guids)
-{
-    /*
-     * On ConnectIB and SwitchIB we derrive macs and guids from a single base_guid
-     */
-    u_int64_t base_guid_64;
-    u_int64_t base_mac_64;
-    if (!base_uid.use_pp_attr) {
-        return errmsg("Expected per port attributes to be specified");
-    }
-
-    base_guid_64 = GUID_TO_64(base_uid.base_guid);
-    base_mac_64 = (((u_int64_t)base_uid.base_guid.l & 0xffffff) | (((u_int64_t)base_uid.base_guid.h & 0xffffff00) << 16));
-    guids.guids[0].uid = base_guid_64;
-    guids.guids[0].num_allocated = base_uid.num_of_guids_pp[0] != DEFAULT_GUID_NUM ? base_uid.num_of_guids_pp[0] : guids.guids[0].num_allocated;
-    guids.guids[0].step = base_uid.step_size_pp[0] != DEFAULT_STEP ? base_uid.step_size_pp[0] : guids.guids[0].step;
-
-    guids.guids[1].uid = base_guid_64 + (guids.guids[0].num_allocated * guids.guids[0].step);
-    guids.guids[1].num_allocated = base_uid.num_of_guids_pp[1] != DEFAULT_GUID_NUM ? base_uid.num_of_guids_pp[1] : guids.guids[1].num_allocated;
-    guids.guids[1].step = base_uid.step_size_pp[1] != DEFAULT_STEP ? base_uid.step_size_pp[1] : guids.guids[1].step;
-
-    guids.macs[0].uid = base_mac_64;
-    guids.macs[0].num_allocated = base_uid.num_of_guids_pp[0] != DEFAULT_GUID_NUM ? base_uid.num_of_guids_pp[0] : guids.macs[0].num_allocated;
-    guids.macs[0].step = base_uid.step_size_pp[0] != DEFAULT_STEP ? base_uid.step_size_pp[0] : guids.macs[0].step;
-
-    guids.macs[1].uid = base_mac_64 + (guids.macs[0].num_allocated * guids.macs[0].step);
-    guids.macs[1].num_allocated = base_uid.num_of_guids_pp[1] != DEFAULT_GUID_NUM ? base_uid.num_of_guids_pp[1] : guids.macs[1].num_allocated;
-    guids.macs[1].step = base_uid.step_size_pp[1] != DEFAULT_STEP ? base_uid.step_size_pp[1] : guids.macs[1].step;
-    return true;
-}
-
-bool Fs3Operations::Fs3ChangeUidsFromBase(fs3_uid_t base_uid, struct cx4fw_guids& guids)
-{
-    /*
-     * on ConnectX4 we derrive guids from base_guid and macs from base_mac
-     */
-    u_int64_t base_guid_64;
-    u_int64_t base_mac_64;
-    if (!base_uid.use_pp_attr) {
-        return errmsg("Expected per port attributes to be specified");
-    }
-
-    base_guid_64 = base_uid.base_guid_specified ? GUID_TO_64(base_uid.base_guid) : guids.guids.uid;
-    base_mac_64 = base_uid.base_mac_specified ? GUID_TO_64(base_uid.base_mac) : guids.macs.uid;
-    if (base_uid.set_mac_from_guid && base_uid.base_guid_specified) {
-        // in case we derrive mac from guid
-        base_mac_64 = (((u_int64_t)base_uid.base_guid.l & 0xffffff) | (((u_int64_t)base_uid.base_guid.h & 0xffffff00) << 16));
-    }
-
-    guids.guids.uid = base_guid_64;
-    guids.guids.num_allocated = base_uid.num_of_guids_pp[0] != DEFAULT_GUID_NUM ? base_uid.num_of_guids_pp[0] : guids.guids.num_allocated;
-    guids.guids.step = base_uid.step_size_pp[0] != DEFAULT_STEP ? base_uid.step_size_pp[0] : guids.guids.step;
-
-    guids.macs.uid = base_mac_64;
-    guids.macs.num_allocated = base_uid.num_of_guids_pp[0] != DEFAULT_GUID_NUM ? base_uid.num_of_guids_pp[0] : guids.macs.num_allocated;
-    guids.macs.step = base_uid.step_size_pp[0] != DEFAULT_STEP ? base_uid.step_size_pp[0] : guids.macs.step ;
-    return true;
-}
-
-bool Fs3Operations::Fs3UpdateUidsSection(struct toc_info *curr_toc, std::vector<u_int8_t>  section_data, fs3_uid_t base_uid,
-        std::vector<u_int8_t>  &newSectionData)
-{
-    struct cibfw_device_info cib_dev_info;
-    struct cx4fw_device_info cx4_dev_info;
-    (void)curr_toc;
-    cibfw_device_info_unpack(&cib_dev_info, (u_int8_t*)&section_data[0]);
-
-    if (CHECK_DEV_INFO_OLD_FORMAT(cib_dev_info)) {
-        if (!Fs3ChangeUidsFromBase(base_uid, cib_dev_info.guids)) {
-            return false;
-        }
-    } else if (CHECK_DEV_INFO_NEW_FORMAT(cib_dev_info)) {
-        cx4fw_device_info_unpack(&cx4_dev_info, (u_int8_t*)&section_data[0]);
-        if (!Fs3ChangeUidsFromBase(base_uid, cx4_dev_info.guids)) {
-            return false;
-        }
-    } else {
-        return errmsg("Unknown DEV_INFO format version (%d.%d).", cib_dev_info.major_version, cib_dev_info.minor_version);
-    }
-    newSectionData = section_data;
-
-    if (CHECK_DEV_INFO_NEW_FORMAT(cib_dev_info)) {
-        cx4fw_device_info_pack(&cx4_dev_info, (u_int8_t*)&newSectionData[0]);
-    } else {
-        cibfw_device_info_pack(&cib_dev_info, (u_int8_t*)&newSectionData[0]);
-    }
-    return true;
-}
-
-bool Fs3Operations::Fs3UpdateVsdSection(struct toc_info *curr_toc, std::vector<u_int8_t>  section_data, char* user_vsd,
-        std::vector<u_int8_t>  &newSectionData)
-{
-    struct cibfw_device_info dev_info;
-    (void)curr_toc;
-    cibfw_device_info_unpack(&dev_info, (u_int8_t*)&section_data[0]);
-    memset(dev_info.vsd, 0, sizeof(dev_info.vsd));
-    strncpy(dev_info.vsd, user_vsd, TOOLS_ARR_SZ(dev_info.vsd) - 1);
-    newSectionData = section_data;
-    cibfw_device_info_pack(&dev_info, (u_int8_t*)&newSectionData[0]);
-    return true;
-}
-
-bool Fs3Operations::Fs3UpdateVpdSection(struct toc_info *curr_toc, char *vpd,
-                               std::vector<u_int8_t>  &newSectionData)
-{
-    int vpd_size = 0;
-    u_int8_t *vpd_data = (u_int8_t*)NULL;
-
-    if (!ReadImageFile(vpd, vpd_data, vpd_size)) {
-        return false;
-    }
-    if (vpd_size % 4) {
-        delete[] vpd_data;
-        return errmsg("Size of VPD file: %d is not 4-byte alligned!", vpd_size);
-    }
-    // assuming VPD section is the last piece of Data on the flash
-    if ( (_ioAccess)->is_flash() && (getAbsAddr(curr_toc) + vpd_size > (_ioAccess)->get_size())) {
-        delete[] vpd_data;
-        return errmsg("VPD data exceeds flash size, max VPD size: 0x%x bytes", (_ioAccess)->get_size() - getAbsAddr(curr_toc));
-    }
-    GetSectData(newSectionData, (u_int32_t*)vpd_data, vpd_size);
-    curr_toc->toc_entry.size = vpd_size / 4;
-    delete[] vpd_data;
-    return true;
-}
-
-// all device data section might be shifted by SHIFT_SIZE due to
-// flash with write protect sector 0f 64kb instead of 4kb
-#define SHIFT_SIZE 0xf000 // 60kb
-
-
-bool Fs3Operations::Fs3GetNewSectionAddr(struct toc_info *curr_toc, u_int32_t &NewSectionAddr, bool failsafe_section)
-{
-    u_int32_t flash_addr = curr_toc->toc_entry.flash_addr << 2;
-
-    // HACK: THIS IS AN UGLY HACK, SHOULD BE REMOVED ASAP
-    // Possible solution : if a section is failsafe  make its size 2kb thus both section will fit in a 4kb chunk (addr & 0x800 == 0x800 then its in second place, if == 0 its in first place )
-
-    if (failsafe_section) {// we assume dev_info is the only FS section.
-        // get the two dev_info addresses (section is failsafe) according to the location of the mfg section
-        toc_info* toc = (toc_info*) NULL;
-        u_int32_t devInfoAddr1 = 0;
-        u_int32_t devInfoAddr2 = 0;
-
-        if (!Fs3GetItocInfo(_fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs, FS3_MFG_INFO, toc)) {
-                 return errmsg("failed to locate MFG_INFO address within the FW image");
-             }
-        // calculate device info sections (fs section) address according to the MFG section
-        // (i.e we assume they are located in: mfg_addr - 4k and mfg_addr - 8k)
-        devInfoAddr1 = (toc->toc_entry.flash_addr << 2) - 0x1000;
-        devInfoAddr2 = (toc->toc_entry.flash_addr << 2) - 0x2000;
-
-        if ((flash_addr == devInfoAddr1) || (flash_addr == devInfoAddr2)){
-            NewSectionAddr = (flash_addr == devInfoAddr1) ? devInfoAddr2 : devInfoAddr1;
-        } else {
-            // FW image is a mess
-            return errmsg("DEV_INFO section is located in an unexpected address(0x%x)", flash_addr);
-        }
-    } else {
-        NewSectionAddr = flash_addr;
-    }
-    return true;
-}
-
-bool Fs3Operations::CalcItocEntryCRC(struct toc_info *curr_toc)
-{
-    u_int8_t  new_entry_data[CIBFW_ITOC_ENTRY_SIZE];
-    memset(new_entry_data, 0, CIBFW_ITOC_ENTRY_SIZE);
-
-    cibfw_itoc_entry_pack(&curr_toc->toc_entry, new_entry_data);
-    u_int32_t entry_crc = CalcImageCRC((u_int32_t*)new_entry_data, (TOC_ENTRY_SIZE / 4) - 1);
-    curr_toc->toc_entry.itoc_entry_crc = entry_crc;
-    return true;
-
-}
-
-bool Fs3Operations::Fs3UpdateItocData(struct toc_info *currToc)
-{
-    CalcItocEntryCRC(currToc);
-    memset(currToc->data, 0, CIBFW_ITOC_ENTRY_SIZE);
-    cibfw_itoc_entry_pack(&currToc->toc_entry, currToc->data);
-
-    return true;
-
-}
-
-bool Fs3Operations::Fs3UpdateItocInfo(struct toc_info *curr_toc, u_int32_t newSectionAddr)
-{
-    // We assume it's absolute
-     curr_toc->toc_entry.flash_addr = newSectionAddr >> 2;
-     return Fs3UpdateItocData(curr_toc);
-
-}
-bool Fs3Operations::Fs3UpdateItocInfo(struct toc_info *curr_toc, u_int32_t newSectionAddr, u_int32_t NewSectSize, std::vector<u_int8_t>  newSectionData)
-{
-    curr_toc->section_data = newSectionData;
-    curr_toc->toc_entry.size = NewSectSize;
-    u_int32_t new_crc = CalcImageCRC((u_int32_t*)&newSectionData[0], curr_toc->toc_entry.size);
-    curr_toc->toc_entry.section_crc = new_crc;
-
-    return Fs3UpdateItocInfo(curr_toc, newSectionAddr);
- }
-
-bool Fs3Operations::Fs3ReburnItocSection(u_int32_t newSectionAddr,
-        u_int32_t newSectionSize, std::vector<u_int8_t>  newSectionData, const char *msg, PrintCallBack callBackFunc)
-{
-    char message[127];
-
-    sprintf(message, "Updating %-4s section - ", msg);
-    // Burn new Section
-    // we pass a null callback and print the progress here as the writes are small (guids/mfg/vpd_str)
-    // in the future if we want to pass the cb prints to writeImage , need to change the signature of progressCallBack to recieve and optional string to print
-
-    PRINT_PROGRESS(callBackFunc, message);
-
-    if (!writeImage((ProgressCallBack)NULL, newSectionAddr , (u_int8_t*)&newSectionData[0], newSectionSize, true, true)) {
-       PRINT_PROGRESS(callBackFunc, (char*)"FAILED\n");
-        return false;
-    }
-    PRINT_PROGRESS(callBackFunc, (char*)"OK\n");
-    // Update new ITOC section
-    if (!reburnItocSection(callBackFunc)) {
-       return false;
-    }
-    return true;
-}
-
-//add callback if we want info during section update
-bool  Fs3Operations::Fs3UpdateSection(void *new_info, fs3_section_t sect_type, bool is_sect_failsafe, CommandType cmd_type, PrintCallBack callBackFunc)
-{
-    struct toc_info *curr_toc = (struct toc_info *)NULL;
-    std::vector<u_int8_t> newUidSection;
-    u_int32_t newSectionAddr;
-    const char *type_msg;
-    // init sector to read
-    _readSectList.push_back(sect_type);
-    if (!FsIntQueryAux()) {
-        _readSectList.pop_back();
-        return false;
-    }
-    _readSectList.pop_back();
-    // _silent = curr_silent;
-
-    if (!Fs3GetItocInfo(_fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs, sect_type, curr_toc)) {
-         return false;
-     }
-
-    if (sect_type == FS3_MFG_INFO) {
-        fs3_uid_t base_uid = *(fs3_uid_t*)new_info;
-        type_msg = "GUID";
-        if (!Fs3UpdateMfgUidsSection(curr_toc, curr_toc->section_data, base_uid, newUidSection)) {
-            return false;
-        }
-    } else if (sect_type == FS3_DEV_INFO) {
-        if (cmd_type == CMD_SET_GUIDS) {
-            fs3_uid_t base_uid = *(fs3_uid_t*)new_info;
-            type_msg = "GUID";
-            if (!Fs3UpdateUidsSection(curr_toc, curr_toc->section_data, base_uid, newUidSection)) {
-                return false;
-            }
-        } else if(cmd_type == CMD_SET_VSD) {
-            char* user_vsd = (char*)new_info;
-            type_msg = "VSD";
-            if (!Fs3UpdateVsdSection(curr_toc, curr_toc->section_data, user_vsd, newUidSection)) {
-                return false;
-            }
-            } else {
-                // We shouldnt reach here EVER
-                type_msg = (char*)"Unknown";
-        }
-    } else if (sect_type == FS3_VPD_R0) {
-        char *vpd_file = (char*)new_info;
-        type_msg = "VPD";
-        if (!Fs3UpdateVpdSection(curr_toc, vpd_file, newUidSection)) {
-            return false;
-        }
-    } else {
-        return errmsg("Section type %s is not supported\n", GetSectionNameByType(sect_type));
-    }
-
-
-    if (!Fs3GetNewSectionAddr(curr_toc, newSectionAddr, is_sect_failsafe)) {
-        return false;
-    }
-    if (!Fs3UpdateItocInfo(curr_toc, newSectionAddr, curr_toc->toc_entry.size, newUidSection)) {
-        return false;
-    }
-    if (!Fs3ReburnItocSection(newSectionAddr, curr_toc->toc_entry.size * 4, newUidSection, type_msg, callBackFunc)) {
-        return false;
-    }
-    return true;
-}
-
-
-bool Fs3Operations::FwSetVSD(char* vsdStr, ProgressCallBack progressFunc, PrintCallBack printFunc)
-{
-    // Avoid warning
-    (void)progressFunc;
-    if (!vsdStr) {
-        return errmsg("Please specify a valid VSD string.");
-    }
-
-    if (strlen(vsdStr) > VSD_LEN) {
-       return errmsg("VSD string is too long(%d), max allowed length: %d", (int)strlen(vsdStr), (int)VSD_LEN);
-    }
-    FAIL_NO_OCR("set VSD");
-    if (!Fs3UpdateSection(vsdStr, FS3_DEV_INFO, false, CMD_SET_VSD, printFunc)) {
-        return false;
-    }
-    // on image verify that image is OK after modification (we skip this on device for performance reasons)
-    if (!_ioAccess->is_flash() && !FsIntQueryAux(false, false)) {
-        return false;
-    }
-    return true;
-}
-
-bool Fs3Operations::FwSetAccessKey(hw_key_t userKey, ProgressCallBack progressFunc)
-{
-    (void)userKey;
-    (void)progressFunc;
-    return errmsg("Set access key not supported.");
-}
-
-bool Fs3Operations::FwResetNvData()
-{
-       return errmsg("Unsupported Device, can only reset configuration on a CX3/3-PRO device.");
-       /*
-       // future support for cx4
-
-       if (!FsIntQueryAux(false)) {
-               return false;
-       }
-       if (_fwImgInfo.ext_info.chip_type != CT_CONNECTX) {
-               // TODO: Indicate the device name.
-                  return errmsg("Unsupported device type %d", _fwImgInfo.ext_info.dev_type);
-       }
-
-       struct toc_info *currToc;
-
-       if (!Fs3GetItocInfo(_fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs, FS3_NV_DATA, currToc)) {
-               return false;
-       }
-       // allocate new NvData which will contain only zeroes
-       std::vector<u_int8_t> newNvData(currToc->section_data.size());
-       memset(&newNvData[0], 0, currToc->section_data.size());
-
-       return Fs3AddSection(FS3_NV_DATA, FS3_DEV_INFO, (u_int32_t*)&newNvData[0], newNvData.size()/4, progressFunc);
-       */
-}
-
-u_int32_t Fs3Operations::getAbsAddr(toc_info* toc) {
-       if (toc->toc_entry.relative_addr) {
-               return ((toc->toc_entry.flash_addr << 2) + _fwImgInfo.imgStart);
-       }
-       return toc->toc_entry.flash_addr << 2;
-}
-
-u_int32_t Fs3Operations::getAbsAddr(toc_info* toc, u_int32_t imgStart) {
-    if (toc->toc_entry.relative_addr) {
-        return ((toc->toc_entry.flash_addr << 2) + imgStart);
-    }
-    return toc->toc_entry.flash_addr << 2;
-}
-
-//get the last fw section address (i.e the maximal address + size of the fw section)
-bool Fs3Operations::getLastFwSAddr(u_int32_t& lastAddr) {
-       struct toc_info *maxToc= (struct toc_info*)NULL;
-       int i;
-       // find first itoc that isnt device data (assumption: there is at least one)
-       for(i=0 ; i < _fs3ImgInfo.numOfItocs ; i++) {
-               maxToc = &(_fs3ImgInfo.tocArr[i]);
-               if (!maxToc->toc_entry.device_data) {
-                       break;
-               }
-       }
-       // find the last non device data itoc
-       for(; i < _fs3ImgInfo.numOfItocs ; i++) {
-               if ((!_fs3ImgInfo.tocArr[i].toc_entry.device_data) && getAbsAddr(&(_fs3ImgInfo.tocArr[i])) > getAbsAddr(maxToc)) {
-                       maxToc = &_fs3ImgInfo.tocArr[i];
-               }
-       }
-       lastAddr = getAbsAddr(maxToc) + (maxToc->toc_entry.size << 2 );
-       return true;
-}
-
-bool Fs3Operations::getFirstDevDataAddr(u_int32_t& firstAddr) {
-       struct toc_info *minToc = (struct toc_info*)NULL;
-       //find first dev data itoc entry
-       int i;
-       for(i=0 ; i < _fs3ImgInfo.numOfItocs ; i++) {
-               if (_fs3ImgInfo.tocArr[i].toc_entry.device_data) {
-                       minToc = &(_fs3ImgInfo.tocArr[i]);
-                       break;
-               }
-       }
-       if (!minToc) {
-               return errmsg("failed to get device data ITOC.");
-       }
-       i++;
-       // find the minimal one
-       for(; i < _fs3ImgInfo.numOfItocs ; i++) {
-               if (_fs3ImgInfo.tocArr[i].toc_entry.device_data && (getAbsAddr(&(_fs3ImgInfo.tocArr[i])) < getAbsAddr(minToc)) ) {
-                       minToc = &(_fs3ImgInfo.tocArr[i]);
-               }
-       }
-       firstAddr = getAbsAddr(minToc);
-       return true;
-}
-
-bool Fs3Operations::reburnItocSection(PrintCallBack callBackFunc) {
-
-    // HACK SHOULD BE REMOVED ASAP
-    u_int32_t sector_size = FS3_DEFAULT_SECTOR_SIZE;
-    // Itoc section is failsafe (two sectors after boot section are reserved for itoc entries)
-    u_int32_t oldItocAddr = _fs3ImgInfo.itocAddr;
-    u_int32_t newItocAddr = (_fs3ImgInfo.firstItocIsEmpty) ? (_fs3ImgInfo.itocAddr - sector_size) :  (_fs3ImgInfo.itocAddr + sector_size);
-    // Update new ITOC
-    u_int32_t itocSize = (_fs3ImgInfo.numOfItocs + 1 ) * CIBFW_ITOC_ENTRY_SIZE + CIBFW_ITOC_HEADER_SIZE;
-    u_int8_t *p = new u_int8_t[itocSize];
-    memcpy(p, _fs3ImgInfo.itocHeader, CIBFW_ITOC_HEADER_SIZE);
-    for (int i = 0; i < _fs3ImgInfo.numOfItocs; i++) {
-        struct toc_info *curr_itoc = &_fs3ImgInfo.tocArr[i];
-        memcpy(p + CIBFW_ITOC_HEADER_SIZE + i * CIBFW_ITOC_ENTRY_SIZE, curr_itoc->data, CIBFW_ITOC_ENTRY_SIZE);
-    }
-    memset(&p[itocSize] - CIBFW_ITOC_ENTRY_SIZE, FS3_END, CIBFW_ITOC_ENTRY_SIZE);
-
-    PRINT_PROGRESS(callBackFunc, (char*)"Updating ITOC section - ");
-    bool rc = writeImage((ProgressCallBack)NULL, newItocAddr , p, itocSize, false, true);
-    delete[] p;
-    if (!rc) {
-       PRINT_PROGRESS(callBackFunc,(char*)"FAILED\n");
-        return false;
-    }
-    PRINT_PROGRESS(callBackFunc,(char*)"OK\n");
-    u_int32_t zeros = 0;
-
-    PRINT_PROGRESS(callBackFunc,(char*)"Restoring signature   - ");
-    if (!writeImage((ProgressCallBack)NULL, oldItocAddr, (u_int8_t*)&zeros, 4, false, true)) {
-        PRINT_PROGRESS(callBackFunc,(char*)"FAILED\n");
-        return false;
-    }
-    PRINT_PROGRESS(callBackFunc,(char*)"OK\n");
-    return true;
-}
-
-#define PUSH_DEV_DATA(vec)\
-        vec.push_back(FS3_MFG_INFO);\
-        vec.push_back(FS3_DEV_INFO);\
-        vec.push_back(FS3_NV_DATA0);\
-        vec.push_back(FS3_NV_DATA1);\
-        vec.push_back(FS3_NV_DATA2);\
-        vec.push_back(FS3_FW_NV_LOG);\
-        vec.push_back(FS3_VPD_R0)
-#define POP_DEV_DATA(vec)\
-        vec.pop_back();\
-        vec.pop_back();\
-        vec.pop_back();\
-        vec.pop_back();\
-        vec.pop_back();\
-        vec.pop_back();\
-        vec.pop_back()
-
-bool Fs3Operations::TocComp::operator() (toc_info* elem1, toc_info* elem2)
-{
-       u_int32_t absAddr1 = (elem1->toc_entry.flash_addr << 2) + ( elem1->toc_entry.relative_addr ? _startAdd : 0);
-       u_int32_t absAddr2 = (elem2->toc_entry.flash_addr << 2) + ( elem2->toc_entry.relative_addr ? _startAdd : 0);
-       if (absAddr1 < absAddr2) {
-               return true;
-       }
-       return false;
-}
-
-bool Fs3Operations::FwShiftDevData(PrintCallBack progressFunc)
-{
-       if (!_ioAccess->is_flash()) {
-               return errmsg("cannot shift device data sections on Image.");
-       }
-       const char* flashType = ((Flash*)_ioAccess)->getFlashType();
-       if (flashType == NULL) {
-               return errmsg("Cannot shift device data on old flash types.");
-       }
-       if (strcasecmp(flashType,"N25Q0XX")!= 0) {
-               return errmsg("Cannot shift device data on flash type %s.", flashType);
-       }
-
-       //query device and get device data sectors.
-       PUSH_DEV_DATA(_readSectList);
-    if (!FsIntQueryAux()) {
-       POP_DEV_DATA(_readSectList);
-        return false;
-    }
-    POP_DEV_DATA(_readSectList);
-
-    if (_fwImgInfo.ext_info.chip_type != CT_CONNECT_IB) {
-        return errmsg("Cannot shift device data. Unsupported device.");
-    }
-
-       u_int32_t lastFwDataAddr;
-       u_int32_t firstDevDataAddr;
-       if (!getLastFwSAddr(lastFwDataAddr) || !getFirstDevDataAddr(firstDevDataAddr)) {
-               return errmsg("Failed to get ITOC information.");
-       }
-
-       // check if we already shifted
-       struct toc_info* mfgToc = (struct toc_info*)NULL;
-       if (!Fs3GetItocInfo(_fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs, FS3_MFG_INFO, mfgToc)) {
-               return errmsg("Failed to get MFG_INFO ITOC information.");
-       }
-
-       if (getAbsAddr(mfgToc) < _ioAccess->get_size() - (((Flash*)(_ioAccess))->get_sector_size())) {
-               return errmsg("Device data sections already shifted.");
-       }
-
-       //check if we can shift all dev data sections by 60KB
-       if (lastFwDataAddr > (firstDevDataAddr - SHIFT_SIZE)) {
-               return errmsg("Cannot shift device data sections, fw image is too big.");
-       }
-       // for each device data section move it by an offset of 60kb (0xf000)
-
-    PRINT_PROGRESS(progressFunc,(char*)"Shifting dev data section - ");
-
-    // possible problem : if itoc array isnt ordered by ascending flash address and dev data sections are larger that 60kb
-    // there is a chance we runover exsisting device data sections
-    // Fix : preform the section shift by order from the lowest addresss to the highest.
-    std::vector<struct toc_info*> sortedTocs(_fs3ImgInfo.numOfItocs);
-    for (int i=0 ; i< _fs3ImgInfo.numOfItocs ; i++) {
-       sortedTocs[i]= &(_fs3ImgInfo.tocArr[i]);
-    }
-    std::sort(sortedTocs.begin(), sortedTocs.end(), TocComp(_fwImgInfo.imgStart));
-
-    // shift the location of device data sections by SHIFT_SIZE (60kb)
-    for (std::vector<struct toc_info*>::iterator it = sortedTocs.begin() ; it != sortedTocs.end(); it++) {
-        if ((*it)->toc_entry.device_data) {
-            // update the itoc (basically update the flash_addr and itoc entry crc)
-            struct toc_info *currToc = *it;
-            if (!Fs3UpdateItocInfo(currToc, ((currToc->toc_entry.flash_addr << 2) - SHIFT_SIZE))) {
-                PRINT_PROGRESS(progressFunc,(char*)"FAILED\n");
-                return false;
-            }
-            // write the section to its new place in the flash
-            if (!writeImage((ProgressCallBack)NULL, getAbsAddr(currToc) , (u_int8_t*)&currToc->section_data[0], (currToc->toc_entry.size << 2), true, true)) {
-                PRINT_PROGRESS(progressFunc,(char*)"FAILED\n");
-                return false;
-            }
-        }
-    }
-    PRINT_PROGRESS(progressFunc,(char*)"OK\n");
-    // update itoc section
-    if (!reburnItocSection(progressFunc)) {
-       return false;
-    }
-    return true;
-}
-
-
-bool Fs3Operations::CheckItocArrConsistency(std::vector<struct toc_info*>& sortedTocVec, u_int32_t imageStartAddr) {
-    u_int32_t sectEndAddr = 0, nextSectStrtAddr = 0;
-    std::vector<struct toc_info*>::iterator it = sortedTocVec.begin(), itNext = sortedTocVec.begin();
-    itNext++;
-    for ( ; itNext != sortedTocVec.end(); it++, itNext++) {
-        sectEndAddr = getAbsAddr(*it, imageStartAddr) + ((*it)->toc_entry.size << 2) - 1;
-        nextSectStrtAddr = getAbsAddr(*itNext, imageStartAddr);
-        if (sectEndAddr >= nextSectStrtAddr) {
-            return errmsg("inconsistency found in ITOC. %s(0x%x) section will potentially overwrite %s(0x%x) section.",\
-                    GetSectionNameByType((*it)->toc_entry.type), (*it)->toc_entry.type,\
-                    GetSectionNameByType((*itNext)->toc_entry.type), (*itNext)->toc_entry.type);
-        }
-    }
-    return true;
-}
-
-
-bool Fs3Operations::CheckItocArray()
-{
-    // sort the itocs
-    std::vector<struct toc_info*> sortedTocs(_fs3ImgInfo.numOfItocs);
-    for (int i=0 ; i< _fs3ImgInfo.numOfItocs ; i++) {
-        sortedTocs[i]= &(_fs3ImgInfo.tocArr[i]);
-    }
-    std::sort(sortedTocs.begin(), sortedTocs.end(), TocComp(0));
-    // check for inconsistency image burnt on 1st half
-    if(!CheckItocArrConsistency(sortedTocs, 0)) {
-        return false;
-    }
-
-    std::sort(sortedTocs.begin(), sortedTocs.end(), TocComp((1 << _fwImgInfo.cntxLog2ChunkSize)));
-    // check for inconsistency image burn on second half
-    if(!CheckItocArrConsistency(sortedTocs, (1 << _fwImgInfo.cntxLog2ChunkSize))) {
-        return false;
-    }
-    return true;
-}
-
-const char* Fs3Operations::FwGetResetRecommandationStr()
-{
-#if defined(_WIN_) || defined(MST_UL)
-    // mlxfwreset tool not supported for windows yet
-    return (const char*)NULL;
-#endif
-
-    if (!_isfuSupported) {
-        return (const char*)NULL;
-    }
-    return "To load new FW run mlxfwreset or reboot machine.";
-}
-
-bool Fs3Operations::Fs3IsfuActivateImage(u_int32_t newImageStart)
-{
-    int rc = 0;
-    mfile *mf = _ioAccess->is_flash() ? ((Flash*)_ioAccess)->getMfileObj() : (mfile*)NULL;
-    struct cibfw_register_mfai mfai;
-    struct cibfw_register_mfrl mfrl;
-    memset(&mfai, 0, sizeof(mfai));
-    memset(&mfrl, 0, sizeof(mfrl));
-
-    if (!mf) {
-        return errmsg("Failed to activate image. No mfile object found.");
-    }
-
-    mfai.address = newImageStart;
-    mfai.use_address = 1;
-    rc = reg_access_mfai(mf,REG_ACCESS_METHOD_SET, &mfai);
-    if (rc) {
-        goto cleanup;
-    }
-    // send warm boot (bit 6)
-    mfrl.reset_level = 1 << 6;
-    rc = reg_access_mfrl(mf,REG_ACCESS_METHOD_SET, &mfrl);
-    // ignore ME_REG_ACCESS_BAD_PARAM error for old FW
-    rc = (rc == ME_REG_ACCESS_BAD_PARAM) ? ME_OK : rc;
-cleanup:
-    if (rc) {
-        return errmsg("Failed to activate image. %s", m_err2str((MError)rc));
-    }
-    return true;
-}
-
-bool Fs3Operations::FwCalcMD5(u_int8_t md5sum[16])
-{
-#if defined(UEFI_BUILD) || defined(NO_OPEN_SSL)
-    (void)md5sum;
-    return errmsg("Operation not supported");
-#else
-    if (!FsIntQueryAux(true, false)) {
-        return false;
-    }
-    // push beggining of image to md5buff
-    int sz = FS3_BOOT_START + _fwImgInfo.bootSize;
-    std::vector<u_int8_t> md5buff(sz, 0);
-    _imageCache.get(&(md5buff[0]), sz);
-    // push all non dev data sections to md5buff
-    for (unsigned int j = 0; j < TOC_HEADER_SIZE; j++) {
-        md5buff.push_back(_imageCache[_fs3ImgInfo.itocAddr + j]);
-    }
-    // push itoc header
-    for (int i = 0; i < _fs3ImgInfo.numOfItocs; i++) {
-        // push each non-dev-data section to md5sum buffer
-        u_int32_t tocEntryAddr = _fs3ImgInfo.tocArr[i].entry_addr;
-        u_int32_t tocDataAddr = _fs3ImgInfo.tocArr[i].toc_entry.flash_addr << 2;
-        u_int32_t tocDataSize =  _fs3ImgInfo.tocArr[i].toc_entry.size << 2;
-        if (!_fs3ImgInfo.tocArr[i].toc_entry.device_data) {
-            // itoc entry
-            for (unsigned int j = 0; j < TOC_ENTRY_SIZE; j++) {
-                md5buff.push_back(_imageCache[tocEntryAddr + j]);
-            }
-            // itoc data
-            for (unsigned int j = 0; j < tocDataSize; j++) {
-                md5buff.push_back(_imageCache[tocDataAddr + j]);
-            }
-        }
-    }
-    // calc md5
-    tools_md5(&md5buff[0], md5buff.size(), md5sum);
-    return true;
-#endif
-}
-
-Tlv_Status_t Fs3Operations::GetTsObj(TimeStampIFC** tsObj)
-{
-    if (_ioAccess->is_flash()) {
-        *tsObj = TimeStampIFC::getIFC(((Flash*)(_ioAccess))->getMfileObj());
-    } else {
-        // check if buffer or file and allocate accrodingly
-        if (_fwParams.hndlType == FHT_FW_FILE) {
-            *tsObj = TimeStampIFC::getIFC(_fname, _fwImgInfo.lastImageAddr);
-        } else if (_fwParams.hndlType == FHT_FW_BUFF) {
-            *tsObj = TimeStampIFC::getIFC((u_int8_t*)((FImage*)_ioAccess)->getBuf(), ((FImage*)_ioAccess)->getBufLength());
-        } else {
-            *tsObj = (TimeStampIFC*)NULL;
-            errmsg("Unsupported FW handle type.");
-            return TS_HANDLE_NOT_SUPPORTED;
-        }
-    }
-    Tlv_Status_t rc = (*tsObj)->init();
-    if (rc) {
-        errmsg("%s", (*tsObj)->err());
-        delete *tsObj;
-        *tsObj = (TimeStampIFC*)NULL;
-        return rc;
-    }
-    return TS_OK;
-}
-
-bool Fs3Operations::FwSetTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer)
-{
-    TimeStampIFC* tsObj;
-    Tlv_Status_t rc;
-
-    if (!_ioAccess->is_flash() && !FsIntQueryAux(false, true)) {
-        return false;
-    }
-    if (GetTsObj(&tsObj)) {
-        return errmsg("Failed to set timestamp. %s", err());
-    }
-
-    if (!_ioAccess->is_flash()) {
-        // if caller hasnt specified fw version take from image
-        struct tools_open_fw_version zeroVer;
-        memset(&zeroVer, 0, sizeof(zeroVer));
-        if (!memcmp(&fwVer, &zeroVer, sizeof(fwVer))) {
-            fwVer.fw_ver_major = _fwImgInfo.ext_info.fw_ver[0];
-            fwVer.fw_ver_minor = _fwImgInfo.ext_info.fw_ver[1];
-            fwVer.fw_ver_subminor = _fwImgInfo.ext_info.fw_ver[2];
-        }
-    }
-
-    rc = tsObj->setTimeStamp(timestamp, fwVer);
-    if (rc) {
-        errmsg("%s", tsObj->err());
-    }
-    delete tsObj;
-    return rc ? false : true;
-}
-
-bool Fs3Operations::FwResetTimeStamp()
-{
-    TimeStampIFC* tsObj;
-    Tlv_Status_t rc;
-
-    if (!_ioAccess->is_flash() && !FsIntQueryAux(false, true)) {
-        return false;
-    }
-    if (GetTsObj(&tsObj)) {
-        return errmsg("Failed to reset timestamp. %s", err());
-    }
-    rc = tsObj->resetTimeStamp();
-    if (rc) {
-        errmsg("%s", tsObj->err());
-    }
-    delete tsObj;
-    return rc ? false : true;
-}
-
-bool Fs3Operations::FwQueryTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer, bool queryRunning)
-{
-    TimeStampIFC* tsObj;
-    Tlv_Status_t rc;
-    if (!_ioAccess->is_flash()) {
-        if (queryRunning) {
-            return errmsg("cannot get running FW Timestamp on image file");
-        }
-        if (!FsIntQueryAux(false, true)) {
-            return false;
-        }
-    }
-
-    if (GetTsObj(&tsObj)) {
-        return errmsg("Failed to query timestamp. %s", err());
-    }
-
-    rc = tsObj->queryTimeStamp(timestamp, fwVer, queryRunning);
-    if (rc) {
-        errmsg("%s", tsObj->err());
-    }
-    delete tsObj;
-    return rc ? false : true;
-}
-
-bool Fs3Operations::TestAndSetTimeStamp(Fs3Operations &imageOps)
-{
-    Tlv_Status_t rc;
-    Tlv_Status_t devTsQueryRc;
-    bool retRc = true;
-    TimeStampIFC* imgTsObj;
-    TimeStampIFC* devTsObj;
-    bool tsFoundOnImage = false;
-    struct tools_open_ts_entry imgTs;
-    struct tools_open_fw_version imgFwVer;
-    struct tools_open_ts_entry devTs;
-    struct tools_open_fw_version devFwVer;
-    memset(&imgTs, 0, sizeof(imgTs));
-    memset(&imgFwVer, 0, sizeof(imgFwVer));
-    memset(&devTs, 0, sizeof(devTs));
-    memset(&devFwVer, 0, sizeof(devFwVer));
-
-    if (!_ioAccess->is_flash()) {
-        // no need to test timestamp on image
-        return true;
-    }
-
-    if (_fwParams.ignoreCacheRep) {
-        // direct flash access no check is needed
-        return true;
-    }
-    if (imageOps._ioAccess->is_flash()) {
-        return errmsg("TestAndSetTimeStamp bad params");
-    }
-    if (imageOps.GetTsObj(&imgTsObj)) {
-        return errmsg("%s", imageOps.err());
-    }
-    rc = GetTsObj(&devTsObj);
-    if (rc) {
-        delete imgTsObj;
-        return rc == TS_TIMESTAMPING_NOT_SUPPORTED ? true : false;
-    }
-    // check if device supports timestamping or if device is not in livefish
-    devTsQueryRc = devTsObj->queryTimeStamp(devTs, devFwVer);
-    if (devTsQueryRc == TS_TIMESTAMPING_NOT_SUPPORTED || devTsQueryRc == TS_UNSUPPORTED_ICMD_VERSION) {
-        retRc = true;
-        goto cleanup;
-    } else if (devTsQueryRc && devTsQueryRc != TS_NO_VALID_TIMESTAMP) {
-        retRc = errmsg("%s", devTsObj->err());
-        goto cleanup;
-    }
-
-    // Option 1 image was timestampped need to try and set it on device
-    // Option 2 image was not timestampped but device was timestampped
-    rc = imgTsObj->queryTimeStamp(imgTs, imgFwVer);
-    if (rc == TS_OK) {
-        tsFoundOnImage = true;
-    } else if (rc != TS_TLV_NOT_FOUND ) {
-        retRc = errmsg("%s", imgTsObj->err());
-        goto cleanup;
-    }
-
-    if (tsFoundOnImage) {
-        // timestamp found on image, attempt to set it on device
-        rc = devTsObj->setTimeStamp(imgTs, imgFwVer);
-        if (rc == TS_OK) {
-            retRc = true;
-        } else {
-            retRc = errmsg("%s", devTsObj->err());
-        }
-    } else {
-        if (devTsQueryRc == TS_NO_VALID_TIMESTAMP) {
-            // no timestamp on image and no valid timestamp on device check if we got running timestamp if we do then fail
-            devTsQueryRc = devTsObj->queryTimeStamp(devTs, devFwVer, true);
-            if (devTsQueryRc == TS_OK) {
-                // we got running timestamp return error
-                retRc = errmsg("No valid timestamp detected. please set a valid timestamp on image/device or reset timestamps on device.");
-
-            } else if (devTsQueryRc == TS_NO_VALID_TIMESTAMP) {
-                // timestamping not used on device.
-                retRc = true;
-            } else {
-                retRc = errmsg("%s", devTsObj->err());
-            }
-        } else {
-            // we got a valid timestamp on device but not on image! compare the FW version
-            if (devFwVer.fw_ver_major == imageOps._fwImgInfo.ext_info.fw_ver[0] &&
-                    devFwVer.fw_ver_minor == imageOps._fwImgInfo.ext_info.fw_ver[1] &&
-                    devFwVer.fw_ver_subminor == imageOps._fwImgInfo.ext_info.fw_ver[2]) {
-                // versions match allow update
-                retRc = true;
-            } else {
-                retRc = errmsg("Stamped FW version missmatch: %d.%d.%04d differs from %d.%d.%04d", devFwVer.fw_ver_major,\
-                                                                                                devFwVer.fw_ver_minor,\
-                                                                                                devFwVer.fw_ver_subminor,\
-                                                                                                imageOps._fwImgInfo.ext_info.fw_ver[0],\
-                                                                                                imageOps._fwImgInfo.ext_info.fw_ver[1],\
-                                                                                                imageOps._fwImgInfo.ext_info.fw_ver[2]);
-            }
-        }
-    }
-cleanup:
-    delete imgTsObj;
-    delete devTsObj;
-    return retRc;
-}
-
-bool Fs3Operations::DeviceTimestampEnabled()
-{
-    Tlv_Status_t rc;
-    Tlv_Status_t queryNextTsRc;
-    Tlv_Status_t queryRunningTsRc;
-    TimeStampIFC* devTsObj;
-    struct tools_open_ts_entry devTs;
-    struct tools_open_fw_version devFwVer;
-    memset(&devTs, 0, sizeof(devTs));
-    memset(&devFwVer, 0, sizeof(devFwVer));
-
-    if (!_ioAccess->is_flash()) {
-        return false;
-    }
-
-    if (_fwParams.ignoreCacheRep) {
-        // direct flash assume no TS
-        return false;
-    }
-
-    rc = GetTsObj(&devTsObj);
-    if (rc) {
-        return false;
-    }
-    // TS supported, make sure no valid TS is set
-    queryRunningTsRc = devTsObj->queryTimeStamp(devTs, devFwVer, true);
-    queryNextTsRc = devTsObj->queryTimeStamp(devTs, devFwVer);
-    // Cleanup
-    delete devTsObj;
-
-    if (queryRunningTsRc == TS_OK || queryNextTsRc == TS_OK) {
-        return true;
-    }
-    return false;
-}
-
-bool Fs3Operations::DoAfterBurnJobs(const u_int32_t magic_patter[],
-        Fs3Operations &imageOps, ExtBurnParams& burnParams, Flash *f,
-        u_int32_t new_image_start, u_int8_t  is_curr_image_in_odd_chunks)
-{
-    u_int32_t  zeroes = 0;
-    bool boot_address_was_updated = true;
-
-    // if we access without cache replacement or the burn was non failsafe, update YU bootloaders.
-    // if we access with cache replacement notify currently running fw of new image start address to crspace (for SW reset)
-    //TODO: add SwitchIB, Spectrum when we have support for ISFU
-    if (!SUPPORTS_ISFU(_fwImgInfo.ext_info.chip_type) || !burnParams.burnFailsafe || f->get_ignore_cache_replacment()) {
-        boot_address_was_updated = f->update_boot_addr(new_image_start);
-    } else {
-        _isfuSupported = Fs3IsfuActivateImage(new_image_start);
-        boot_address_was_updated = _isfuSupported;
-    }
-
-    if (imageOps._fwImgInfo.ext_info.is_failsafe) {
-        if (!burnParams.burnFailsafe) {
-            // When burning in nofs, remnant of older image with different chunk size
-            // may reside on the flash -
-            // Invalidate all images marking on flash except the one we've just burnt
-
-            u_int32_t cntx_image_start[CNTX_START_POS_SIZE];
-            u_int32_t cntx_image_num;
-
-            FindAllImageStart(f, cntx_image_start, &cntx_image_num, magic_patter);
-            // Address convertor is disabled now - use phys addresses
-            for (u_int32_t i = 0; i < cntx_image_num; i++) {
-                if (cntx_image_start[i] != new_image_start) {
-                    if (!f->write(cntx_image_start[i], &zeroes, sizeof(zeroes), true)) {
-                        return errmsg(MLXFW_FLASH_WRITE_ERR, "Failed to invalidate old fw signature: %s", f->err());
-                    }
-                }
-            }
-        } else {
-            // invalidate previous signature
-            f->set_address_convertor(imageOps._fwImgInfo.cntxLog2ChunkSize, is_curr_image_in_odd_chunks);
-            if (!f->write(0, &zeroes, sizeof(zeroes), true)) {
-                return errmsg(MLXFW_FLASH_WRITE_ERR, "Failed to invalidate old fw signature: %s", f->err());
-            }
-        }
-    }
-    if (boot_address_was_updated == false) {
-        report_warn("Failed to update FW boot address. Power cycle the device in order to load the new FW.\n");
-    }
-    return true;
-}
diff --git a/mlxfwops/lib/fs3_ops.h b/mlxfwops/lib/fs3_ops.h
deleted file mode 100644 (file)
index 9ec54e4..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#ifndef FS3_OPS_
-#define FS3_OPS_
-
-#include <cibfw_layouts.h>
-#include <cx4fw_layouts.h>
-#include <mlarge_buffer.h>
-// #include "flint_base.h"
-#include "fw_ops.h"
-#include "aux_tlv_ops.h"
-
-// FW Binary version
-
-// max supported major version
-// first time breaking compatibility remove the check if the version is not initialized
-#define FS3_MAX_BIN_VER_MAJOR 1
-
-// min supported version
-#define FS3_MIN_BIN_VER_MAJOR 1
-#define FS3_MIN_BIN_VER_MINOR 1
-
-#define FLASH_RESTORE(origFlashObj) \
-        if (origFlashObj) {\
-            _ioAccess->close();\
-            delete _ioAccess;\
-            _ioAccess = origFlashObj;\
-            _fwParams.ignoreCacheRep = 0;\
-        }
-
-class Fs3Operations : public FwOperations {
-public:
-
-
-    Fs3Operations(FBase *ioAccess) : FwOperations(ioAccess),
-        _isfuSupported(false), _badDevDataSections(false), _maxImgLog2Size(0){
-        _minBinMinorVer = FS3_MIN_BIN_VER_MINOR;
-        _minBinMajorVer = FS3_MIN_BIN_VER_MAJOR;
-        _maxBinMajorVer = FS3_MAX_BIN_VER_MAJOR;
-    };
-
-    virtual ~Fs3Operations()  {};
-    //virtual void print_type() {printf("-D- FS3 type!\n");};
-    virtual bool FwVerify(VerifyCallBack verifyCallBackFunc, bool isStripedImage = false, bool showItoc = false);
-    virtual bool FwQuery(fw_info_t *fwInfo, bool readRom = true, bool isStripedImage = false);
-    virtual u_int8_t FwType();
-    virtual bool FwInit();
-    virtual bool FwReadData(void* image, u_int32_t* image_size);
-
-    virtual bool FwReadRom(std::vector<u_int8_t>& romSect);
-    virtual bool FwBurnRom(FImage* romImg, bool ignoreProdIdCheck = false, bool ignoreDevidCheck = false, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-    virtual bool FwDeleteRom(bool ignoreProdIdCheck, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-
-    virtual bool FwBurn(FwOperations *imageOps, u_int8_t forceVersion, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-    virtual bool FwBurnAdvanced(FwOperations *imageOps, ExtBurnParams& burnParams);
-    virtual bool FwBurnBlock(FwOperations* imageOps, ProgressCallBack progressFunc);
-
-    virtual bool FwSetGuids(sg_params_t& sgParam, PrintCallBack callBack=(PrintCallBack)NULL, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-    virtual bool FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL);
-    virtual bool FwSetMFG(fs3_uid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL);
-    virtual bool FwGetSection (u_int32_t sectType, std::vector<u_int8_t>& sectInfo, bool stripedImage=false);
-    virtual bool FwSetVSD(char* vsdStr, ProgressCallBack progressFunc=(ProgressCallBack)NULL, PrintCallBack printFunc=(PrintCallBack)NULL);
-    virtual bool FwSetVPD(char* vpdFileStr, PrintCallBack callBackFunc=(PrintCallBack)NULL);
-    virtual bool FwSetAccessKey(hw_key_t userKey, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-    virtual bool FwResetNvData();
-    virtual bool FwShiftDevData(PrintCallBack progressFunc=(PrintCallBack)NULL);
-    virtual const char*  FwGetResetRecommandationStr();
-    virtual bool FwCalcMD5(u_int8_t md5sum[16]);
-    virtual bool FwSetTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer);
-    virtual bool FwQueryTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer, bool queryRunning=false);
-    virtual bool FwResetTimeStamp();
-
-protected:
-    #define ITOC_ASCII 0x49544f43
-    #define TOC_RAND1  0x04081516
-    #define TOC_RAND2  0x2342cafa
-    #define TOC_RAND3  0xbacafe00
-    #define TOC_HEADER_SIZE 0x20
-    #define TOC_ENTRY_SIZE  0x20
-    #define FS3_FW_SIGNATURE_SIZE 0x10
-    #define MAX_TOCS_NUM         64
-    #define MFG_INFO "MFG_INFO"
-    #define UNKNOWN_SECTION "UNKNOWN"
-
-    virtual bool FsBurnAux(FwOperations *imageOps, ExtBurnParams& burnParams);
-    bool DumpFs3CRCCheck(u_int8_t sect_type, u_int32_t sect_addr, u_int32_t sect_size, u_int32_t crc_act, u_int32_t crc_exp,
-                bool ignore_crc = false, VerifyCallBack verifyCallBackFunc = (VerifyCallBack)NULL);
-    bool Fs3UpdateImgCache(u_int8_t *buff, u_int32_t addr, u_int32_t size);
-    virtual bool UpdateImgCache(u_int8_t *buff, u_int32_t addr, u_int32_t size);
-    virtual bool FsVerifyAux(VerifyCallBack verifyCallBackFunc, bool show_itoc, struct QueryOptions queryOptions);
-    bool FsIntQueryAux(bool readRom = true, bool quickQuery=true);
-    const char* GetSectionNameByType(u_int8_t section_type);
-    bool GetImageInfoFromSection(u_int8_t *buff, u_int8_t sect_type, u_int32_t sect_size, u_int8_t check_support_only = 0);
-    bool IsGetInfoSupported(u_int8_t sect_type);
-    bool IsFs3SectionReadable(u_int8_t type, QueryOptions queryOptions);
-    bool GetMfgInfo(u_int8_t *buff);
-    bool GetDevInfo(u_int8_t *buff);
-    bool GetImageInfo(u_int8_t *buff);
-    bool GetRomInfo(u_int8_t *buff, u_int32_t size);
-    bool DoAfterBurnJobs(const u_int32_t magic_patter[], Fs3Operations &imageOps,
-            ExtBurnParams& burnParams, Flash *f,
-            u_int32_t new_image_start, u_int8_t  is_curr_image_in_odd_chunks);
-
-    virtual bool getRunningFwVersion();
-    virtual bool Fs3IsfuActivateImage(u_int32_t newImageStart);
-    bool TestAndSetTimeStamp(Fs3Operations &imageOps);
-
-    struct toc_info {
-        u_int32_t entry_addr;
-        struct cibfw_itoc_entry toc_entry;
-        u_int8_t  data[CIBFW_ITOC_ENTRY_SIZE];
-        std::vector<u_int8_t>  section_data;
-    };
-        
-    struct Fs3ImgInfo {
-        fs3_info_t ext_info;
-        int             numOfItocs;
-        struct toc_info tocArr[MAX_TOCS_NUM];
-        u_int8_t        itocHeader[CIBFW_ITOC_HEADER_SIZE];
-        u_int8_t        firstItocIsEmpty;
-        u_int32_t       itocAddr;
-        u_int32_t       smallestAbsAddr;
-        u_int32_t       sizeOfImgData;
-    };
-
-    static const SectionInfo _fs3SectionsInfoArr[];
-    static const u_int32_t _itocSignature[4];
-    Fs3ImgInfo _fs3ImgInfo;
-    MlargeBuffer _imageCache;
-    bool _isfuSupported;
-    bool _badDevDataSections; // set true if during verify one of the device data section is corrupt or mfg section missing
-    u_int32_t _maxImgLog2Size;
-
-private:
-    #define CRC_CHECK_OUTPUT  CRC_CHECK_OLD")"
-    #define FS3_CRC_CHECK_OUT CRC_CHECK_OLD":0x%x)"
-    #define PRE_CRC_OUTPUT   "    "
-    #define FS3_DEFAULT_SECTOR_SIZE 0x1000
-    #define FS3_LOG2_CHUNK_SIZE_DW_OFFSET 0x9
-
-
-    bool VerifyTOC(u_int32_t dtoc_addr, bool& bad_signature, VerifyCallBack verifyCallBackFunc, bool show_itoc,
-            struct QueryOptions queryOptions);
-    bool checkPreboot(u_int32_t* prebootBuff, u_int32_t size, VerifyCallBack verifyCallBackFunc);
-    bool CheckTocSignature(struct cibfw_itoc_header *itoc_header, u_int32_t first_signature);
-    bool BurnFs3Image(Fs3Operations &imageOps, ExtBurnParams& burnParams);
-    bool UpdateDevDataITOC(Fs3Operations &imageOps, struct toc_info *image_toc_info_entry, struct toc_info *flash_toc_arr, int flash_toc_size);
-
-    bool AddDevDataITOC(struct toc_info *flash_toc_entry, u_int8_t *image_data, struct toc_info *image_toc_arr, int& image_toc_size);
-    bool Fs3UpdateSection(void *new_info, fs3_section_t sect_type=FS3_DEV_INFO, bool is_sect_failsafe=true, CommandType cmd_type=CMD_UNKNOWN, PrintCallBack callBackFunc=(PrintCallBack)NULL );
-    bool Fs3GetItocInfo(struct toc_info *tocArr, int num_of_itocs, fs3_section_t sect_type, struct toc_info *&curr_toc);
-    bool Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vector<u_int8_t>  section_data, fs3_uid_t base_uid,
-                                            std::vector<u_int8_t>  &newSectionData);
-    bool Fs3ChangeUidsFromBase(fs3_uid_t base_uid, struct cibfw_guids& guids);
-    bool Fs3ChangeUidsFromBase(fs3_uid_t base_uid, struct cx4fw_guids& guids);
-    bool Fs3UpdateUidsSection(struct toc_info *curr_toc, std::vector<u_int8_t>  section_data, fs3_uid_t base_uid,
-                                             std::vector<u_int8_t>  &newSectionData);
-    bool Fs3UpdateVsdSection(struct toc_info *curr_toc, std::vector<u_int8_t>  section_data, char* user_vsd,
-                                     std::vector<u_int8_t>  &newSectionData);
-    bool Fs3UpdateVpdSection(struct toc_info *curr_toc, char *vpd, std::vector<u_int8_t>  &newSectionData);
-    bool Fs3GetNewSectionAddr(struct toc_info *curr_toc, u_int32_t &NewSectionAddr, bool failsafe_section);
-    bool Fs3UpdateItocInfo(struct toc_info *curr_toc, u_int32_t newSectionAddr, u_int32_t itocSize, std::vector<u_int8_t>  newSectionData);
-    bool Fs3UpdateItocInfo(struct toc_info *curr_toc, u_int32_t newSectionAddr);
-    bool Fs3UpdateItocInfo(struct toc_info *newItocInfo, u_int32_t newSectionAddr, fs3_section_t sectionType, u_int32_t* newSectData, u_int32_t NewSectSize);
-    bool Fs3UpdateItocData(struct toc_info *currToc);
-
-    bool Fs3ReburnItocSection(u_int32_t newSectionAddr, u_int32_t newSectionSize, std::vector<u_int8_t>  newSectionData, const char *msg, PrintCallBack callBackFunc=(PrintCallBack)NULL);
-    bool GetModifiedSectionInfo(fs3_section_t sectionType, fs3_section_t nextSectionType, u_int32_t &newSectAddr,
-            fs3_section_t &sectToPut, u_int32_t &oldSectSize);
-    bool UpdateItocAfterInsert(fs3_section_t sectionType, u_int32_t newSectAddr, fs3_section_t SectToPut,  bool toAdd, u_int32_t* newSectData, u_int32_t NewSectSize,
-            struct toc_info *tocArr, u_int32_t &numOfItocs);
-    bool UpdateImageAfterInsert(struct toc_info *tocArr, u_int32_t numOfItocs, u_int8_t* newImgData, u_int32_t newSectSize);
-    bool Fs3ReplaceSectionInDevImg(fs3_section_t sectionType, fs3_section_t nextSectionType, bool toAdd, u_int8_t* newImgData,
-            u_int32_t newImageSize, u_int32_t* newSectData, u_int32_t NewSectSize);
-    bool CalcItocEntryCRC(struct toc_info *curr_toc);
-    bool ShiftItocAddrInEntry(struct toc_info *newItocInfo, struct toc_info *oldItocInfo, int shiftSize);
-    bool CopyItocInfo(struct toc_info *newTocInfo, struct toc_info *currToc);
-    bool Fs3ModifySection(fs3_section_t sectionType, fs3_section_t neighbourSection, bool toAdd, u_int32_t* newSectData,
-            u_int32_t newImageSize, ProgressCallBack progressFunc);
-    bool Fs3RemoveSection(fs3_section_t sectionType, ProgressCallBack progressFunc);
-    bool Fs3AddSection(fs3_section_t sectionType, fs3_section_t neighbourSection, u_int32_t* newSectData, u_int32_t newSectSize,
-            ProgressCallBack progressFunc);
-    bool CheckFs3ImgSize(Fs3Operations& imageOps, bool useImageDevData=false);
-    bool CheckItocArray();
-    bool CheckItocArrConsistency(std::vector<struct toc_info*>& sortedTocVec, u_int32_t imageStartAddr);
-
-
-    u_int32_t getAbsAddr(toc_info* toc);
-    u_int32_t getAbsAddr(toc_info* toc, u_int32_t imgStart);
-    bool getLastFwSAddr(u_int32_t& lastAddr);
-    bool getFirstDevDataAddr(u_int32_t& firstAddr);
-    bool reburnItocSection(PrintCallBack callBackFunc);
-
-    bool DeviceTimestampEnabled();
-    Tlv_Status_t GetTsObj(TimeStampIFC** tsObj);
-
-    // this class is for sorting the itoc array by ascending absolute flash_addr used in FwShiftDevData
-    class TocComp {
-    public:
-       TocComp(u_int32_t startAdd):  _startAdd(startAdd) {};
-       ~TocComp() {};
-       bool operator() (toc_info* elem1, toc_info* elem2);
-    private:
-       u_int32_t _startAdd;
-    };
-
-};
-
-
-
-#endif // FS3_OPS_
diff --git a/mlxfwops/lib/fw_ops.cpp b/mlxfwops/lib/fw_ops.cpp
deleted file mode 100644 (file)
index 34a8fc7..0000000
+++ /dev/null
@@ -1,1720 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#include "flint_base.h"
-#include "flint_io.h"
-#include "fw_ops.h"
-#include "fs3_ops.h"
-#include "fs2_ops.h"
-
-#ifdef CABLES_SUPP
-#include "cablefw_ops.h"
-#endif
-
-#ifndef NO_MFA_SUPPORT
-#include <mfa.h>
-#endif
-
-#define BAD_CRC_MSG "Bad CRC."
-extern const char* g_sectNames[];
-
-#ifndef NO_MFA_SUPPORT
-
-int FwOperations::getFileSignature(const char* fname)
-{
-    FILE* fin;
-    char tmpb[16];
-    int res = 0;
-
-    if (!(fin = fopen(fname, "r"))) {
-        // abit ugly , need to establish a correct ret val
-        return IMG_SIG_OPEN_FILE_FAILED;
-    }
-    if (!fgets(tmpb, sizeof(tmpb), fin)) {
-        goto clean_up;
-    }
-    if (strlen(tmpb) < 4) {
-        goto clean_up;
-    }
-
-    if (!strncmp(tmpb, "MTFW", 4)) {
-        res = IMG_SIG_TYPE_BIN;
-    }
-    if (!strncmp(tmpb, "MFAR", 4)) {
-        res = IMG_SIG_TYPE_MFA;
-    }
-    if (!strncmp(tmpb, "MTCF", 4)) {
-        res = IMG_SIG_TYPE_CF;
-    }
-
-clean_up:
-    fclose(fin);
-    return res;
-}
-
-
-int FwOperations::getBufferSignature(u_int8_t* buf, u_int32_t size)
-{
-    int res = 0;
-
-    if (size < 4) {
-        return 0;
-    }
-    if (!strncmp((char*)buf, "MTFW", 4)) {
-        res = IMG_SIG_TYPE_BIN;
-    }
-    if (!strncmp((char*)buf, "MFAR", 4)) {
-        res = IMG_SIG_TYPE_MFA;
-    }
-
-    return res;
-}
-
-const char * FwOperations::err2str(int errNum)
-{
-    switch(errNum) {
-        case -4:
-            return "Found MFA(s) with higher Version, upgrade tool to work with it";
-        case -3:
-            return "File Signature is invalid";
-        default:
-            return "Failed to get MFA Image";
-    }
-}
-int FwOperations::getMfaImg(char* fileName, char *psid, u_int8_t **imgbuf)
-{
-    int res;
-    mfa_desc* mfa_d;
-    int image_type = 1; //FW image
-
-    if (psid == NULL) {
-        return -1; //No psid => no image
-    }
-
-    if ((res = mfa_open_file(&mfa_d, fileName))) {
-        res = res < 0 ? res : -1 * res;
-        return res;
-    }
-
-    res = mfa_get_image(mfa_d, psid, image_type, (char*)"", imgbuf);
-
-    mfa_close(mfa_d);
-    return res;
-}
-
-
-int FwOperations::getMfaImg(u_int8_t* mfa_buf, int size, char *psid, u_int8_t **imgbuf)
-{
-    int res;
-    mfa_desc* mfa_d;
-    int image_type = 1; //FW image
-
-    if (psid == NULL) {
-        return -1; //No psid => no image
-    }
-    if ((res = mfa_open_buf(&mfa_d, mfa_buf, size))) {
-        res = res < 0 ? res : -1 * res;
-        return res;
-    }
-
-    res = mfa_get_image(mfa_d, psid, image_type, (char*)"", imgbuf);
-
-    mfa_close(mfa_d);
-    return res;
-}
-#endif
-
-
-void FwOperations::FwCleanUp()
-{
-    if (_ioAccess) {
-        _ioAccess->close();
-        delete _ioAccess;
-        _ioAccess = (FBase*)NULL;
-    }
-    if (_fname) {
-        delete[] _fname;
-        _fname = (char*)NULL;
-    }
-    if (_devName) {
-        delete[] _devName;
-        _devName = (char*)NULL;
-    }
-    if (_fwParams.fileHndl) {
-        delete[] _fwParams.fileHndl;
-        _fwParams.fileHndl = (char*)NULL;
-    }
-    if (_fwParams.mstHndl) {
-        delete[] _fwParams.mstHndl;
-        _fwParams.mstHndl =(char*)NULL;
-    }
-    if (_fwParams.psid) {
-        delete[] _fwParams.psid;
-        _fwParams.psid = (char*)NULL;
-    }
-}
-
-
-void FwOperations::FwInitCom()
-{
-    memset(&_fwImgInfo, 0, sizeof(_fwImgInfo));
-}
-
-
-void FwOperations::getSupporteHwId(u_int32_t **supportedHwId, u_int32_t &supportedHwIdNum)
-{
-    *supportedHwId    = _fwImgInfo.supportedHwId;
-    supportedHwIdNum = _fwImgInfo.supportedHwIdNum;
-
-}
-
-bool FwOperations::checkBoot2(u_int32_t beg, u_int32_t offs, u_int32_t& next, bool fullRead, const char *pref, VerifyCallBack verifyCallBackFunc)
-{
-    u_int32_t    size;
-
-    // char         *pr = (char *)alloca(strlen(pref) + 512);
-    char pr[strlen(pref) + 512];
-    sprintf(pr, "%s /0x%08x/ (BOOT2)", pref, offs+beg);
-    // Size
-    READ4((*_ioAccess), offs+beg+4, &size, pr);
-    TOCPU1(size);
-    if (size > 1048576 || size < 4) {
-        report_callback(verifyCallBackFunc, "%s /0x%08x/ - unexpected size (0x%x)\n", pr, offs+beg+4, size);
-        return false;
-    }
-    _fwImgInfo.bootSize = (size + 4) * 4;
-
-    // Get absolute address on flash when checking BOOT2 for FS3 image format (for FS2 its always displayed as contiguous)
-    // Adrianc: why dont we show them both in the same way when running verify.
-    u_int32_t boot2AbsAddr = ((this->FwType() == FIT_FS3 || this->FwType() == FIT_FS4) && _ioAccess->is_flash()) ? \
-            _ioAccess->get_phys_from_cont(beg, _fwImgInfo.cntxLog2ChunkSize, (_fwImgInfo.imgStart != 0)) : beg;
-
-    sprintf(pr, "%s /0x%08x-0x%08x (0x%06x)/ (BOOT2)", pref, offs+boot2AbsAddr,
-            offs+boot2AbsAddr+(size+4)*4-1, (size+4)*4);
-
-    if ((_ioAccess->is_flash() && fullRead == true) || !_ioAccess->is_flash()) {
-        Crc16        crc;
-        // u_int32_t    *buff = (u_int32_t*)alloca((size + 4)*sizeof(u_int32_t));
-        u_int32_t buff[size + 4];
-        READBUF((*_ioAccess), offs+beg, buff, size*4 + 16, pr);
-        // we hold for FS3 an image cache so we selectevely update it in UpdateImgCache() call
-        UpdateImgCache((u_int8_t*)buff, offs+beg, size*4 + 16);
-        TOCPUn(buff, size+4);
-        CRC1n(crc, buff, size+4);
-        CRC1n(_ioAccess->get_image_crc(), buff, size+4);
-
-
-        crc.finish();
-
-        u_int32_t crc_act = buff[size+3];
-        if (crc.get() != crc_act) {
-            report_callback(verifyCallBackFunc, "%s /0x%08x/ - wrong CRC (exp:0x%x, act:0x%x)\n",
-                   pr, offs+beg, crc.get(), crc_act);
-            return errmsg(MLXFW_BAD_CRC_ERR, BAD_CRC_MSG);
-        }
-        _ioAccess->get_image_crc() << crc_act;
-        // TODO: Print CRC
-        if (0) {
-            report_callback(verifyCallBackFunc, "%s - OK (CRC:0x%04x)\n", pr, (crc_act & 0xffff));
-        } else {
-            report_callback(verifyCallBackFunc, "%s - OK\n", pr);
-        }
-    }
-    next = offs + size*4 + 16;
-    return true;
-} // checkBoot2
-
-
-bool FwOperations::CheckAndPrintCrcRes(char* pr, bool blank_crc, u_int32_t off, u_int32_t crc_act, u_int32_t crc_exp, bool ignore_crc,
-         VerifyCallBack verifyCallBackFunc)
-{
-    if (ignore_crc) {
-        report_callback(verifyCallBackFunc, "%s - CRC IGNORED\n", pr);
-    } else {
-        if(blank_crc) {
-            report_callback(verifyCallBackFunc, "%s - BLANK CRC (0xffff)\n", pr);
-        } else if (crc_exp == crc_act) {
-            report_callback(verifyCallBackFunc, "%s - OK\n", pr);
-        } else {
-            report_callback(verifyCallBackFunc, "%s /0x%08x/ - wrong CRC (exp:0x%x, act:0x%x)\n",
-                           pr, off, crc_exp, crc_act);
-            return errmsg(BAD_CRC_MSG);
-        }
-    }
-    return true;
-}
-
-#define CIB_MAJOR 10
-#define OLD_FORMAT_MAX_MINOR_CIB 10
-#define SIB_MAJOR 11
-#define OLD_FORMAT_MAX_MINOR_SIB 1
-
-/*
- * currently we have 3 FW version format
- * 0: MM.mm.ssss
- * 1: MM.mmbb.ssss
- * 2: MM.mm.bsss / MM.mm.bbss for branch !=0
- * Where:
- * M: major digit
- * m: minor digit
- * b: branch digit
- * s: subminor digit
- */
-int FwOperations::GetFwVerFormat(u_int16_t fwVer[3])
-{
-    if (fwVer[1] > 99) {
-        return 1;
-    }
-
-    if ((fwVer[0] == CIB_MAJOR && fwVer[1] <= OLD_FORMAT_MAX_MINOR_CIB) ||
-        (fwVer[0] == SIB_MAJOR && fwVer[1] <= OLD_FORMAT_MAX_MINOR_SIB)) {
-        return 0;
-    }
-
-    return 2;
-}
-
-FwVerInfo FwOperations::FwVerLessThan(u_int16_t r1[3], u_int16_t r2[3]) {
-    // copy version arrays to local variables
-    u_int16_t fwVer1[3];
-    u_int16_t fwVer2[3];
-    u_int16_t fwVersionFormatR1 = 0;
-    u_int16_t fwVersionFormatR2 = 0;
-    memcpy(fwVer1, r1, sizeof(fwVer1));
-    memcpy(fwVer2, r2, sizeof(fwVer2));
-
-    fwVersionFormatR1 = GetFwVerFormat(fwVer1);
-    fwVersionFormatR2 = GetFwVerFormat(fwVer2);
-    // try to decide according to format
-    if (fwVersionFormatR1 > fwVersionFormatR2) {
-        return FVI_GREATER;
-    } else if (fwVersionFormatR1 < fwVersionFormatR2) {
-        return FVI_SMALLER;
-    }
-    // same format compare each field
-    for (int i = 0; i < 3 ; i++) {
-        if (fwVer1[i] < fwVer2[i]) {
-            return FVI_SMALLER;
-        }
-        else if (fwVer1[i] > fwVer2[i]) {
-            return FVI_GREATER;
-        }
-    }
-    return FVI_EQUAL; // equal versions
-}
-const u_int32_t FwOperations::_cntx_magic_pattern[4] = {
-    0x4D544657,   // Ascii of "MTFW"
-    0x8CDFD000,   // Random data
-    0xDEAD9270,
-    0x4154BEEF
-};
-
-const u_int32_t FwOperations::_fs4_magic_pattern[4] = {
-    0x4D544657,
-    0xABCDEF00,
-    0xFADE1234,
-    0x5678DEAD
-};
-
-const u_int32_t FwOperations::_cntx_image_start_pos[FwOperations::CNTX_START_POS_SIZE] = {
-    0,
-    0x10000,
-    0x20000,
-    0x40000,
-    0x80000,
-    0x100000,
-    0x200000,
-    0x400000
-};
-
-bool FwOperations::FindMagicPattern(FBase* ioAccess, u_int32_t addr,
-        u_int32_t const cntx_magic_pattern[]) {
-    if (addr + 16 > ioAccess->get_size()) {
-        return false;
-    }
-    for (int i = 0; i < 4 ; i++) {
-        u_int32_t w;
-        READ4_NOERRMSG((*ioAccess), addr + i * 4, &w);
-        TOCPU1(w);
-        if (w != cntx_magic_pattern[i]) {
-            //printf("-D- Looking for magic pattern %d addr %06x: Exp=%08x Act=%08x\n", i, addr + i * 4, _cntx_magic_pattern[i], w);
-            return false;
-        }
-    }
-
-    return true;
-}
-
-// FindAllImageStart
-// OUT: start_locations: set to the start addresses of the found image markers (in accending order)
-// OUT: found_images:    Number of found images (and number of valid entries in the start_locations array).
-bool FwOperations::FindAllImageStart (FBase* ioAccess,
-        u_int32_t start_locations[CNTX_START_POS_SIZE],
-        u_int32_t* found_images,
-        u_int32_t const cntx_magic_pattern[]) {
-
-    int needed_pos_num;
-
-    needed_pos_num = CNTX_START_POS_SIZE;
-
-    if (ioAccess->is_flash()) {
-        if ( (((Flash*)ioAccess)->get_dev_id() == CX2_HW_ID) ||
-             (((Flash*)ioAccess)->get_dev_id() == IS4_HW_ID)) {
-            needed_pos_num = OLD_CNTX_START_POS_SIZE;
-        }
-    }
-    /* WA: due to bug on SwichIB first GA FW (FW doesnt look at chip select field in mfba)
-    *     when reading from flash address 0x400000 it wraps around to 0x0 causing more than one
-    *     valid image to be found. as a WA we dont check at 0x400000. basic flash operations
-    *     are affected when attempting to access addressess greater than 0x3fffff.
-    */
-    if (((Flash*)ioAccess)->get_dev_id() == SWITCH_IB_HW_ID) {
-        needed_pos_num -= 1;
-    }
-
-    ioAccess->set_address_convertor(0,0);
-    if (found_images) {
-        *found_images = 0;
-        for (int i = 0; i < needed_pos_num; i++) {
-            if (FindMagicPattern(ioAccess, _cntx_image_start_pos[i], cntx_magic_pattern)) {
-                start_locations[*found_images] = _cntx_image_start_pos[i];
-                (*found_images)++;
-            }
-        }
-    }
-
-    return true;
-}
-// CAN BE IN ANOTHER MODULE
-bool FwOperations::GetSectData(std::vector<u_int8_t>& file_sect, const u_int32_t *buff, const u_int32_t size) {
-
-    file_sect.clear();
-    file_sect.insert(file_sect.end(),
-                     (u_int8_t*)buff,
-                     (u_int8_t*)buff + size);
-
-
-    return true;
-}
-
-
-bool FwOperations::FwAccessCreate(fw_ops_params_t& fwParams, FBase **ioAccessP)
-{
-    // FBase *ioAccess = *ioAccessP;
-    if (fwParams.hndlType == FHT_FW_FILE) {
-#ifndef NO_MFA_SUPPORT
-        int sig = getFileSignature(fwParams.fileHndl);
-        if (sig == IMG_SIG_OPEN_FILE_FAILED) { //i.e we failed to open file
-            WriteToErrBuff(fwParams.errBuff, strerror(errno), fwParams.errBuffSize);
-            return false;
-        }
-        if (sig == IMG_SIG_TYPE_BIN || sig == IMG_SIG_TYPE_CF) {
-            *ioAccessP = new FImage;
-            if (!(*ioAccessP)->open(fwParams.fileHndl, false, !fwParams.shortErrors)) {
-                WriteToErrBuff(fwParams.errBuff,(*ioAccessP)->err(), fwParams.errBuffSize);
-                delete *ioAccessP;
-                return false;
-            }
-        } else if (sig == IMG_SIG_TYPE_MFA) {
-            u_int8_t* imgbuf;
-            int sz;
-            if ((sz = getMfaImg(fwParams.fileHndl, fwParams.psid, &imgbuf)) < 0) {
-                WriteToErrBuff(fwParams.errBuff, err2str(sz), fwParams.errBuffSize);
-                return false;
-            }
-            *ioAccessP = new FImage;
-            if (!((FImage*)(*ioAccessP))->open((u_int32_t*)imgbuf, (u_int32_t)sz, !fwParams.shortErrors)) {
-                mfa_release_image(imgbuf);
-                WriteToErrBuff(fwParams.errBuff,(*ioAccessP)->err(), fwParams.errBuffSize);
-                delete *ioAccessP;
-                return false;
-            }
-            mfa_release_image(imgbuf);
-        } else {
-            WriteToErrBuff(fwParams.errBuff,"Invalid Image signature.", fwParams.errBuffSize);
-            return false; //Unknown signature
-        }
-#else
-        *ioAccessP = new FImage;
-        if (!(*ioAccessP)->open(fwParams.fileHndl, false, !fwParams.shortErrors)) {
-            WriteToErrBuff(fwParams.errBuff,(*ioAccessP)->err(), fwParams.errBuffSize);
-            delete *ioAccessP;
-            return false;
-        }
-#endif
-    } else if (fwParams.hndlType == FHT_FW_BUFF) {
-        u_int32_t numInfo = fwParams.buffSize;
-#ifndef NO_MFA_SUPPORT
-        int sig = getBufferSignature((u_int8_t*)fwParams.buffHndl, numInfo);
-        if (sig == IMG_SIG_TYPE_BIN) {
-            *ioAccessP = new FImage;
-            if (!((FImage*)*ioAccessP)->open(fwParams.buffHndl, (u_int32_t)numInfo, !fwParams.shortErrors)) {
-                WriteToErrBuff(fwParams.errBuff,(*ioAccessP)->err(), fwParams.errBuffSize);
-                delete *ioAccessP;
-                return false;
-            }
-        } else if (sig == IMG_SIG_TYPE_MFA) {
-            u_int8_t* imgbuf;
-            int sz;
-            if ((sz = getMfaImg((u_int8_t*)fwParams.buffHndl, numInfo, fwParams.psid, &imgbuf)) < 0) {
-                WriteToErrBuff(fwParams.errBuff, err2str(sz), fwParams.errBuffSize);
-                return false;
-            }
-            *ioAccessP = new FImage;
-            if (!((FImage*)*ioAccessP)->open((u_int32_t*)imgbuf, (u_int32_t)sz, !fwParams.shortErrors)) {
-                mfa_release_image(imgbuf);
-                WriteToErrBuff(fwParams.errBuff,(*ioAccessP)->err(), fwParams.errBuffSize);
-                delete *ioAccessP;
-                return false;
-            }
-            mfa_release_image(imgbuf);
-        } else {
-            WriteToErrBuff(fwParams.errBuff,"Invalid Image signature.", fwParams.errBuffSize);
-            return false;//Unknown signature
-        }
-#else
-        *ioAccessP = new FImage;
-        if (!((FImage*)*ioAccessP)->open(fwParams.buffHndl, numInfo, !fwParams.shortErrors)) {
-            WriteToErrBuff(fwParams.errBuff,(*ioAccessP)->err(), fwParams.errBuffSize);
-            delete *ioAccessP;
-            return false;
-        }
-#endif
-    } else if (fwParams.hndlType == FHT_UEFI_DEV) {
-        *ioAccessP = new Flash;
-        if (!((Flash*)*ioAccessP)->open(fwParams.uefiHndl, fwParams.uefiExtra, false, !fwParams.shortErrors)) {
-            WriteToErrBuff(fwParams.errBuff,(*ioAccessP)->err(), fwParams.errBuffSize);
-            delete *ioAccessP;
-            return false;
-        }
-    } else if (fwParams.hndlType == FHT_MST_DEV) {
-        *ioAccessP = new Flash;
-        if ( !((Flash*)*ioAccessP)->open(fwParams.mstHndl, fwParams.forceLock, fwParams.readOnly, fwParams.numOfBanks,\
-                                          fwParams.flashParams, fwParams.ignoreCacheRep, !fwParams.shortErrors, fwParams.cx3FwAccess)) {
-            // TODO: release memory here ?
-            WriteToErrBuff(fwParams.errBuff,(*ioAccessP)->err(), fwParams.errBuffSize);
-            delete *ioAccessP;
-            return false;
-        }
-        //set no flash verify if needed (default =false)
-        ((Flash*)*ioAccessP)->set_no_flash_verify(fwParams.noFlashVerify);
-        // work with 64KB sector size if possible to increase performace in full fw burn
-        (((Flash*)*ioAccessP)->set_flash_working_mode(Flash::Fwm_64KB));
-     } else {
-         WriteToErrBuff(fwParams.errBuff,"Unknown Handle Type.", fwParams.errBuffSize);
-         return false;
-     }
-    return true;
-}
-
-u_int8_t FwOperations::IsFS4Image(FBase& f, u_int32_t* found_images) {
-    u_int32_t data;
-    u_int8_t image_version;
-    u_int32_t image_start[CNTX_START_POS_SIZE];
-
-    FindAllImageStart(&f, image_start, found_images, _fs4_magic_pattern);
-
-    if(*found_images){
-        //check if the image_format_version is ok
-        READ4_NOERRMSG(f, image_start[0] + 0x10, &data);
-        TOCPU1(data);
-        image_version = data >> 24;
-        if(image_version == 1){//1 is the current version
-            return FS_FS4_GEN;
-        } else {
-            return FS_UNKNOWN_IMG;
-        }
-    }
-
-    return FS_UNKNOWN_IMG;
-}
-
-u_int8_t FwOperations::IsFS3OrFS2Image(FBase& f, u_int32_t* found_images) {
-    u_int32_t data;
-    u_int8_t image_version;
-    u_int32_t image_start[CNTX_START_POS_SIZE];
-
-    FindAllImageStart(&f, image_start, found_images, _cntx_magic_pattern);
-
-    if (found_images) {
-        READ4_NOERRMSG(f, image_start[0] + FS3_IND_ADDR, &data);
-        TOCPU1(data);
-        image_version = data >> 24;
-        if (image_version == IMG_VER_FS3) {
-            return FS_FS3_GEN;
-        } else {
-            // TODO: if the img format version is unknown we should fail instead of considering it FS2
-            return FS_FS2_GEN;
-        }
-    }
-
-    return FS_UNKNOWN_IMG;
-}
-
-u_int8_t FwOperations::CheckFwFormat(FBase& f, bool getFwFormatFromImg) {
-    u_int8_t v;
-    u_int32_t found_images = 0;
-
-    if (f.is_flash() && !getFwFormatFromImg) {
-        if (    ( ((Flash*)&f)->get_dev_id() == CX2_HW_ID)        ||
-                ( ((Flash*)&f)->get_dev_id() == CX3_HW_ID)        ||
-                ( ((Flash*)&f)->get_dev_id() == IS4_HW_ID)              ||
-                ( ((Flash*)&f)->get_dev_id() == SWITCHX_HW_ID)    ||
-                ( ((Flash*)&f)->get_dev_id() == CX3_PRO_HW_ID)) {
-            return FS_FS2_GEN;
-        } else if ( (((Flash*)&f)->get_dev_id() == CONNECT_IB_HW_ID) ||
-                    (((Flash*)&f)->get_dev_id() == SWITCH_IB_HW_ID)  ||
-                    (((Flash*)&f)->get_dev_id() == CX4_HW_ID)        ||
-                    (((Flash*)&f)->get_dev_id() == CX4LX_HW_ID)        ||
-                    (((Flash*)&f)->get_dev_id() == SPECTRUM_HW_ID)   ||
-                    (((Flash*)&f)->get_dev_id() == SWITCH_IB2_HW_ID)) {
-            return FS_FS3_GEN;
-        }
-    } else {
-        //First check if it is FS4
-        v = IsFS4Image(f, &found_images);
-        if (found_images) {
-            return v;
-        }
-        //If not FS4 then check if it is FS3 or FS2
-        return IsFS3OrFS2Image(f, &found_images);
-    }
-    return FS_UNKNOWN_IMG;
-}
-
-
-bool FwOperations::CheckBinVersion(u_int8_t binVerMajor, u_int8_t binVerMinor)
-{
-    if (binVerMajor == 0 && binVerMinor == 0) {
-        return true;
-    }
-
-    if (binVerMajor > _maxBinMajorVer/*FS4_MAX_BIN_VER_MAJOR*/) {
-        return errmsg(MLXFW_UNSUPPORTED_BIN_VER_ERR,
-                "Unsupported binary version (%d.%d) please update to latest MFT package",
-                binVerMajor,
-                binVerMinor);
-    }
-    if (binVerMajor < _minBinMajorVer/*FS4_MIN_BIN_VER_MAJOR*/
-            || (binVerMajor == _minBinMajorVer/*FS4_MIN_BIN_VER_MAJOR*/
-                    && binVerMinor < _minBinMinorVer)) {
-        return errmsg(MLXFW_UNSUPPORTED_BIN_VER_ERR,
-                "Unsupported binary version (%d.%d) minimal supported version (%d.%d)", \
-                binVerMajor,
-                binVerMinor,
-                _minBinMajorVer/*FS4_MIN_BIN_VER_MAJOR*/,
-                _minBinMinorVer/*FS4_MIN_BIN_VER_MINOR*/);
-    }
-
-    return true;
-}
-
-FwOperations* FwOperations::FwOperationsCreate(void* fwHndl, void *info, char* psid, fw_hndl_type_t hndlType, char* errBuff, int buffSize)
-{
-    fw_ops_params_t fwParams;
-    memset(&fwParams, 0 , sizeof(fwParams));
-    fwParams.psid = psid;
-    fwParams.hndlType = hndlType;
-    fwParams.errBuff = errBuff;
-    fwParams.errBuffSize = buffSize;
-    fwParams.shortErrors = true;
-
-    if (hndlType == FHT_FW_FILE) {
-        fwParams.fileHndl = (char*)fwHndl;
-    }else if (hndlType == FHT_FW_BUFF) {
-        fwParams.buffHndl = (u_int32_t*)fwHndl;
-        fwParams.buffSize = *((u_int32_t*)info);
-    }else if (hndlType == FHT_UEFI_DEV) {
-        fwParams.uefiHndl = (uefi_Dev_t*)fwHndl;
-        fwParams.uefiExtra = (uefi_dev_extra_t*)info;
-    }else if (hndlType == FHT_MST_DEV) {
-        fwParams.mstHndl = (char*)fwHndl;
-        fwParams.forceLock = false;
-        fwParams.readOnly = false;
-        fwParams.numOfBanks = -1;
-        fwParams.flashParams = (flash_params_t*)NULL;
-        fwParams.ignoreCacheRep = 0;
-        fwParams.noFlashVerify = false;
-        fwParams.cx3FwAccess = 0;
-    } else if (hndlType == FHT_CABLE_DEV) {
-        fwParams.buffHndl = (u_int32_t*)fwHndl;
-    }
-    return FwOperationsCreate(fwParams);
-}
-
-void FwOperations::BackUpFwParams(fw_ops_params_t& fwParams)
-{
-    _fwParams.hndlType = fwParams.hndlType;
-    _fwParams.buffHndl = fwParams.buffHndl;
-    _fwParams.buffSize = fwParams.buffSize;
-    _fwParams.cx3FwAccess = fwParams.cx3FwAccess;
-    _fwParams.errBuff = (char*)NULL;
-    _fwParams.errBuffSize = 0;
-    _fwParams.fileHndl = (fwParams.hndlType == FHT_FW_FILE && fwParams.fileHndl) ? \
-            strncpy((char*)(new char[(strlen(fwParams.fileHndl) + 1)]), fwParams.fileHndl, strlen(fwParams.fileHndl) + 1) : (char*)NULL;
-    // no support for flash params
-    _fwParams.flashParams = (flash_params_t*)NULL;
-    _fwParams.forceLock = fwParams.forceLock;
-    _fwParams.ignoreCacheRep = fwParams.ignoreCacheRep;
-    _fwParams.mstHndl = (fwParams.hndlType == FHT_MST_DEV && fwParams.mstHndl) ? \
-            strncpy((char*)(new char[(strlen(fwParams.mstHndl) + 1)]), fwParams.mstHndl, strlen(fwParams.mstHndl) + 1) : (char*)NULL;
-    _fwParams.noFlashVerify = fwParams.noFlashVerify;
-    _fwParams.numOfBanks = fwParams.numOfBanks;
-    _fwParams.psid = fwParams.psid ? strncpy((char*)(new char[(strlen(fwParams.psid) + 1)]), fwParams.psid, strlen(fwParams.psid) + 1) : (char*)NULL;
-    _fwParams.readOnly = fwParams.readOnly;
-    _fwParams.shortErrors = fwParams.shortErrors;
-    _fwParams.uefiExtra = fwParams.uefiExtra;
-    _fwParams.uefiHndl = fwParams.uefiHndl;
-    _fwParams.isCableFw = fwParams.isCableFw;
-}
-
-FwOperations* FwOperations::FwOperationsCreate(fw_ops_params_t& fwParams)
-{
-    FwOperations* fwops;
-    u_int8_t fwFormat;
-    FBase *ioAccess;
-    bool getFwFormatFromImg = false;
-#ifdef CABLES_SUPP
-    if (fwParams.hndlType == FHT_CABLE_DEV) {
-        fwops = new CableFwOperations(fwParams.mstHndl);
-        if(!fwops->FwInit()) {
-            WriteToErrBuff(fwParams.errBuff, fwops->err(), fwParams.errBuffSize);
-            return (FwOperations*)NULL;
-        }
-        fwops->_devName = strcpy(new char[strlen(fwParams.mstHndl)+ 1], fwParams.mstHndl);
-    } else
-#endif
-    {
-        if (!FwAccessCreate(fwParams, &ioAccess)) {
-            return (FwOperations*)NULL;
-        }
-        if (fwParams.hndlType == FHT_UEFI_DEV) {
-            // IN UEFI we don't have an access to read devID from cr-space so we are reading it from FW  image signature
-            getFwFormatFromImg = true;
-        }
-#if 0 // TODO: Fix when you have cable_fw
-        if (fwParams.isCableFw) {
-            fwops = new CableFwOperations(ioAccess);
-        } else
-#endif
-        {
-            fwFormat = CheckFwFormat(*ioAccess, getFwFormatFromImg);
-            switch (fwFormat) {
-                case FS_FS2_GEN: {
-                    fwops = new Fs2Operations(ioAccess);
-                    break;
-                }
-                case FS_FS3_GEN: {
-                    fwops = new Fs3Operations(ioAccess);
-                    break;
-                }
-                default:
-                    delete ioAccess;
-                    WriteToErrBuff(fwParams.errBuff,"invalid Firmware Format (found FS Gen 1)", fwParams.errBuffSize);
-                    return (FwOperations*)NULL;
-            }
-        }
-        // save initialization parameters
-        fwops->BackUpFwParams(fwParams);
-
-        fwops->_advErrors = !fwParams.shortErrors;
-        fwops->FwInit();
-        if (fwParams.hndlType == FHT_FW_FILE) {
-            fwops->_fname = strcpy(new char[strlen(fwParams.fileHndl)+ 1], fwParams.fileHndl);
-        }
-        if (fwParams.hndlType == FHT_MST_DEV) {
-            fwops->_devName = strcpy(new char[strlen(fwParams.mstHndl)+ 1], fwParams.mstHndl);
-        }
-    }
-    return fwops;
-}
-
-u_int32_t FwOperations::CalcImageCRC(u_int32_t* buff, u_int32_t size)
-{
-    Crc16 crc;
-    TOCPUn(buff, size);
-    CRCn(crc, buff, size);
-    CPUTOn(buff, size);
-    crc.finish();
-    u_int32_t new_crc = crc.get();
-    return new_crc;
-}
-
-bool FwOperations::writeImage(ProgressCallBack progressFunc, u_int32_t addr, void *data, int cnt, bool isPhysAddr, bool readModifyWrite, int totalSz, int alreadyWrittenSz)
-{
-    u_int8_t   *p = (u_int8_t *)data;
-    u_int32_t  curr_addr = addr;
-    u_int32_t  towrite = cnt;
-    totalSz = totalSz == -1 ? cnt : totalSz;
-    int origFlashWorkingMode = Flash::Fwm_Default;
-    bool rc;
-    while (towrite) {
-        // Write
-        int trans;
-        if (_ioAccess->is_flash()) {
-            if (readModifyWrite) {
-                // perform write with the smallest supported sector size
-                origFlashWorkingMode = ((Flash*)_ioAccess)->get_flash_working_mode();
-                ((Flash*)_ioAccess)->set_flash_working_mode(Flash::Fwm_Default);
-            }
-            trans = (towrite > (int)Flash::TRANS) ? (int)Flash::TRANS : towrite;
-            if (isPhysAddr) {
-                if (readModifyWrite) {
-                    rc = ((Flash*)_ioAccess)->read_modify_write_phy(curr_addr, p, trans);
-                } else {
-                    rc = ((Flash*)_ioAccess)->write_phy(curr_addr, p, trans);
-                }
-            } else {
-                if (readModifyWrite) {
-                    rc = ((Flash*)_ioAccess)->read_modify_write(curr_addr, p, trans);
-                } else {
-                    rc = ((Flash*)_ioAccess)->write(curr_addr, p, trans);
-                }
-            }
-            if (readModifyWrite) {
-                // restore erase sector size
-                ((Flash*)_ioAccess)->set_flash_working_mode(origFlashWorkingMode);
-            }
-            if (!rc) {
-                return errmsg(MLXFW_FLASH_WRITE_ERR, "Flash write failed: %s", _ioAccess->err());
-            }
-        } else {
-            trans = towrite;
-            if (!ModifyImageFile(_fname, curr_addr, p, trans)) {
-                return false;
-            }
-        }
-        p += trans;
-        curr_addr += trans;
-        towrite -= trans;
-
-        // Report
-        if (progressFunc != NULL) {
-            u_int32_t new_perc = ((cnt - towrite + alreadyWrittenSz) * 100) / totalSz;
-
-                    if (progressFunc((int)new_perc)) {
-                        return errmsg("Aborting... received interrupt signal");
-                    }
-            }
-        }
-
-    return true;
-} //  Flash::WriteImage
-
-bool FwOperations::ModifyImageFile(const char *fimage, u_int32_t addr, void *data, int cnt)
-{
-    int file_size = 0;
-    u_int8_t * file_data = (u_int8_t*)NULL;
-
-    if (!ReadImageFile(fimage, file_data, file_size, addr + cnt)) {
-        return false;
-    }
-    memcpy(&file_data[addr], data, cnt);
-
-    if (!WriteImageToFile(fimage, file_data, file_size)) {
-        delete[] file_data;
-        return false;
-    }
-    delete[] file_data;
-    return true;
-}
-
-bool FwOperations::WriteImageToFile(const char *file_name, u_int8_t *data, u_int32_t length)
-{
-#ifndef UEFI_BUILD
-    FILE* fh;
-    if ((fh = fopen(file_name, "wb")) == (FILE*)NULL) {
-        return errmsg("Can not open %s: %s\n", file_name, strerror(errno));
-    }
-
-    // Write output
-    if (fwrite(data, 1, length, fh) != length) {
-        fclose(fh);
-        return errmsg("Failed to write to %s: %s\n", file_name, strerror(errno));
-    }
-    fclose(fh);
-    return true;
-#else
-    return errmsg("Not Implemented\n");
-#endif
-}
-
-bool FwOperations::CheckMac(u_int64_t mac) {
-    if ((mac >> 40) & 0x1) {
-        return errmsg("Multicast bit (bit 40) is set");
-    }
-
-    if (mac >> 48) {
-        return errmsg("More than 48 bits are used");
-    }
-
-    return true;
-}
-
-bool FwOperations::CheckMac(guid_t mac) {
-    u_int64_t bigMac = ((u_int64_t)mac.h << 32 & 0xffffffff00000000ULL) | ((u_int64_t)mac.l & 0x00000000ffffffffULL );
-    return CheckMac(bigMac);
-}
-
-void FwOperations::recalcSectionCrc(u_int8_t *buf, u_int32_t data_size) {
-
-    Crc16              crc;
-    u_int32_t crcRes;
-    for (u_int32_t i = 0; i < data_size; i += 4) {
-        crc << __be32_to_cpu(*(u_int32_t*)(buf + i));
-    }
-    crc.finish();
-    crcRes = crc.get();
-    *((u_int32_t*)(buf + data_size)) = __cpu_to_be32(crcRes);
-}
-
-chip_type_t FwOperations::getChipType() {
-    int i = 0;
-    while (hwDevData[i].name != NULL) {
-        int j = 0;
-        while (hwDevData[i].swDevIds[j] != 0) {
-            if (hwDevData[i].swDevIds[j] == _fwImgInfo.ext_info.dev_type) {
-                    return hwDevData[i].chipType;
-                }
-                j++;
-            }
-            i++;
-        }
-    return CT_UNKNOWN;
-}
-
-bool FwOperations::getInfoFromHwDevid(u_int32_t hwDevId, chip_type_t& chipT, const u_int32_t ** swIds) {
-    int i = 0;
-    while (hwDevData[i].name != NULL) {
-        if (hwDevData[i].hwDevId == hwDevId) {
-            chipT = hwDevData[i].chipType;
-            *swIds = hwDevData[i].swDevIds;
-            return true;
-        }
-        i++;
-    }
-    return errmsg(MLXFW_DEV_ID_ERR, "Failed to identify device ID(MT%d).", hwDevId);
-}
-
-FwOperations::HwDevData FwOperations::getInfoFromChipType(chip_type_t chipT) const {
-    int i = 0;
-    while (hwDevData[i].name != NULL) {
-        if (hwDevData[i].chipType == chipT) {
-           return  hwDevData[i];
-        }
-            i++;
-    }
-    return hwDevData[i];
-}
-
-// TODO:combine both databases(hwDevData and hwDev2Str) and remove old unsupporded devices i.e infinihost infinihost_iii_ex infinihost_iii_lx
-const FwOperations::HwDevData FwOperations::hwDevData[] = {
-    { "ConnectX",          CX2_HW_ID, CT_CONNECTX, CFT_HCA, 2,  {25408, 25418, 26418, 26438,
-                                                 26428, 25448, 26448, 26468,
-                                                 25458, 26458, 26478, 26488,
-                                                 4097, 4098, 0}},
-    { "ConnectX-3",        CX3_HW_ID, CT_CONNECTX, CFT_HCA, 2,  {4099, 4100, 4101, 4102,
-                                         4104, 4105, 4106,
-                                         4107, 4108, 4109, 4110,
-                                         4111, 4112, 0}},
-    { "ConnectX-3Pro",    CX3_PRO_HW_ID, CT_CONNECTX, CFT_HCA, 2, {4103,0}},
-    { "Connect_IB",       CONNECT_IB_HW_ID, CT_CONNECT_IB, CFT_HCA, 2, {CONNECT_IB_SW_ID, 4114, 4115, 4116,
-                                         4117, 4118, 4119, 4120,
-                                         4121, 4122, 4123, 4124, 0}},
-    { "InfiniScale IV",   IS4_HW_ID,        CT_IS4, CFT_SWITCH,         0, {48436, 48437, 48438, 0}},
-    { "SwitchX",          SWITCHX_HW_ID,    CT_SWITCHX, CFT_SWITCH,     0, {51000, 0}},
-    { "Switch_IB",        SWITCH_IB_HW_ID,  CT_SWITCH_IB, CFT_SWITCH,   0, {52000, 0}},
-    { "ConnectX-4",       CX4_HW_ID,        CT_CONNECTX4, CFT_HCA,    0, {4115, 0}},
-    { "ConnectX-4LX",     CX4LX_HW_ID,      CT_CONNECTX4_LX, CFT_HCA,    0, {4117, 0}},
-    { "ConnectX-5",       CX5_HW_ID,        CT_CONNECTX5, CFT_HCA,    0, {4119, 0}},
-    { "Spectrum",         SPECTRUM_HW_ID,   CT_SPECTRUM, CFT_SWITCH,   0, {52100, 0}},
-    { "Switch_IB2",       SWITCH_IB2_HW_ID, CT_SWITCH_IB2, CFT_SWITCH,   0, {53000, 0}},
-    { (char*)NULL ,              0, CT_UNKNOWN, CFT_UNKNOWN, 0, {0}},// zero devid terminator
-};
-
-const FwOperations::HwDev2Str FwOperations::hwDev2Str[] = {
-        {"ConnectX-2",        CX2_HW_ID,        0xB0},
-        {"ConnectIB",         CONNECT_IB_HW_ID, 0x00},
-        {"ConnectX-3 A0",     CX3_HW_ID,        0x00},
-        {"ConnectX-3 A1",     CX3_HW_ID,        0x01},
-        {"ConnectX-3Pro",     CX3_PRO_HW_ID,    0x00},
-        {"ConnectX-4",        CX4_HW_ID,        0x00},
-        {"ConnectX-4LX",      CX4LX_HW_ID,      0x00},
-        {"ConnectX-5",        CX5_HW_ID,        0x00},
-        {"SwitchX A0",        SWITCHX_HW_ID,    0x00},
-        {"SwitchX A1",        SWITCHX_HW_ID,    0x01},
-        {"InfiniScale IV A0", IS4_HW_ID,        0xA0},
-        {"InfiniScale IV A1", IS4_HW_ID,        0xA1},
-        {"SwitchIB A0",       SWITCH_IB_HW_ID,  0x00},
-        {"Spectrum A0",       SPECTRUM_HW_ID,   0x00},
-        {"SwitchIB2 A0",      SWITCH_IB2_HW_ID, 0x00},
-        { (char*)NULL ,       (u_int32_t)0, (u_int8_t)0x00}, // zero device ID terminator
-};
-
-#define ARR_SIZE(arr) sizeof(arr)/sizeof(arr[0])
-#define MAX_HW_NAME_LEN 100
-bool FwOperations::HWIdRevToName(u_int32_t hw_id, u_int8_t rev_id, char *hw_name)
-{
-
-    for (int i = 0;  hwDev2Str[i].hwDevId != 0; i++) {
-        const HwDev2Str *hwDev2StrMem = &(hwDev2Str[i]);
-
-        if (hwDev2StrMem->hwDevId == hw_id && hwDev2StrMem->revId == rev_id) {
-            int len = strlen(hwDev2StrMem->name);
-            if (len >= MAX_HW_NAME_LEN) {
-                return errmsg("Internal error: Length of device name: %d exceeds the maximum allowed size: %d", len, MAX_HW_NAME_LEN - 1);
-            }
-            strcpy(hw_name, hwDev2StrMem->name);
-            return true;
-        }
-    }
-    // When the device or rev is unknown we use the hw ID and rev to display it.
-    sprintf(hw_name, "MT%d-%02X", hw_id, rev_id);
-    return true;
-}
-
-
-// This function gets the HW ID of the target device and the dev ID from
-// the image. It then matches the 2 IDs and returns an error in case of
-// missmatch. The match is not 1:1 , since the FW image contains the SW
-// dev id, and a single hw dev id may match multiple SW dev IDs.
-//
-bool FwOperations::CheckMatchingHwDevId(u_int32_t hwDevId, u_int32_t rev_id, u_int32_t* supportedHwId, u_int32_t supportedHwIdNum) {
-
-    char supp_hw_id_list[MAX_NUM_SUPP_HW_LIST_STR] = {'\0'};
-    char supp_hw_id_list_tmp[MAX_NUM_SUPP_HW_LIST_STR];
-    char curr_hw_id_name[MAX_HW_NAME_LEN];
-
-    for (u_int32_t i = 0; i < supportedHwIdNum; i++) {
-        u_int32_t currSupportedHwId = supportedHwId[i];
-        u_int32_t supp_hw_id  = currSupportedHwId & 0xffff;
-        u_int32_t supp_rev_id = (currSupportedHwId >> 16) & 0xff;
-        u_int32_t tmp_size_of_list;
-        char hw_name[MAX_HW_NAME_LEN];
-
-        if (currSupportedHwId == 0) {
-            break;
-        }
-        // Check if device is supported!
-        if ( supp_hw_id == hwDevId && supp_rev_id == rev_id) {
-            return true;
-        }
-        // Append checked to list of supported device in order to print it in the error if we this device is not supported
-
-        // Get the HW name of current supported HW ID
-        if (!HWIdRevToName(supp_hw_id, supp_rev_id, hw_name)) {
-            return false;
-        }
-        // Check if we don't exceed the array size we have
-        tmp_size_of_list = strlen(supp_hw_id_list) + strlen(hw_name) + 2;
-        if (tmp_size_of_list >= MAX_NUM_SUPP_HW_LIST_STR) {
-            return errmsg("Internal error: Size of supported devs list: %d exceeds the maximum allowed size: %d",
-                    tmp_size_of_list, MAX_NUM_SUPP_HW_LIST_STR - 1);
-        }
-
-        if (supp_hw_id_list[0] == '\0') {
-            sprintf(supp_hw_id_list, "%s", hw_name);
-        } else {
-            strcpy(supp_hw_id_list_tmp, supp_hw_id_list);
-            sprintf(supp_hw_id_list, "%s, %s", supp_hw_id_list_tmp, hw_name);
-        }
-    }
-    // If we get here, this FW cannot be burnt in the current device.
-    // Get the Device name
-    if (!HWIdRevToName(hwDevId, rev_id, curr_hw_id_name)) {
-        return false;
-    }
-
-    return errmsg(MLXFW_DEVICE_IMAGE_MISSMATCH_ERR, "FW image file cannot be programmed to device %s, it is intended for: %s only",
-            curr_hw_id_name, supp_hw_id_list);
-}
-bool FwOperations::CheckMatchingDevId(u_int32_t hwDevId, u_int32_t imageDevId) {
-
-    const HwDevData* devData = (const HwDevData*)NULL;
-    const char* hwDevName = (const char*)NULL;
-
-    // First, find the HW device that the SW id matches
-    for (int i = 0; hwDevData[i].hwDevId != 0 ; i++) {
-        if (hwDevData[i].hwDevId == hwDevId) {
-            hwDevName = hwDevData[i].name; // TODO: Check bug if device not found
-        }
-
-        if (devData == NULL) {
-            for (int j = 0; hwDevData[i].swDevIds[j]; j++) {
-                if (hwDevData[i].swDevIds[j] == imageDevId) {
-                    devData = &hwDevData[i];
-                    break;
-                }
-            }
-        }
-    }
-
-    if (devData == NULL) {
-        report_warn("Unknown device id (%d) in the given FW image. Skipping HW match check.\n",
-               imageDevId);
-        return true;
-    } else if (devData->hwDevId != hwDevId) {
-        return errmsg("Trying to burn a \"%s\" image on a \"%s\" device.",
-                      devData->name,
-                      hwDevName);
-    }
-
-    return true;
-}
-
-void FwOperations::FwDebugPrint(char *str)
-{
-    if (_printFunc != NULL) {
-        _printFunc(str);
-    }
-}
-
-bool FwOperations::FwSetPrint(PrintCallBack PrintFunc)
-{
-    _printFunc = PrintFunc;
-    return true;
-}
-
-bool FwOperations::CheckPSID(FwOperations &imageOps, u_int8_t allow_psid_change)
-{
-    if (!allow_psid_change) {
-        if (strncmp( _fwImgInfo.ext_info.psid, imageOps._fwImgInfo.ext_info.psid, PSID_LEN)) {
-            return errmsg(MLXFW_PSID_MISSMATCH_ERR, "Image PSID is %s, it cannot be burnt into current device (PSID: %s)",
-                    imageOps._fwImgInfo.ext_info.psid, _fwImgInfo.ext_info.psid);
-        }
-    }
-    return true;
-}
-
-bool FwOperations::CheckFwVersion(FwOperations &imageOps, u_int8_t forceVersion)
-{
-    FwVerInfo updateRequired;
-    if (!forceVersion) {
-        updateRequired = FwVerLessThan(_fwImgInfo.ext_info.fw_ver, imageOps._fwImgInfo.ext_info.fw_ver);
-       if (updateRequired != FVI_SMALLER ) {
-            return errmsg(MLXFW_FW_ALREADY_UPDATED_ERR, "FW is already updated.");
-        }
-    }
-    return true;
-}
-
-bool FwOperations::FwSwReset() {
-    if (!_ioAccess->is_flash()) {
-        return errmsg("operation supported only for switch devices: InfiniScaleIV SwitchX and SwitchIB over an IB interface");
-    }
-    if (!((Flash*)_ioAccess)->sw_reset()) {
-        return errmsg("%s",  _ioAccess->err());
-    }
-    return true;
-}
-
-
-void FwOperations::WriteToErrBuff(char* errBuff, const char* errStr, int size)
-{
-    if (size>0) {
-        if (size-4 > (int) strlen(errStr)) {
-            strncpy(errBuff, errStr, size);
-        } else {
-            strncpy(errBuff, errStr, size-4);
-            strcpy(&errBuff[size-4], "...");
-        }
-    }
-    return;
-}
-
-bool FwOperations::UpdateImgCache(u_int8_t *buff, u_int32_t addr, u_int32_t size)
-{
-    //avoid compiler warrnings
-    (void)buff;
-    (void)addr;
-    (void)size;
-    //in FS2 we dont have ImgCache, just in FS3 so we define a defult behaviour.
-    return true;
-}
-
-bool FwOperations::CntxEthOnly(u_int32_t devid)
-{
-    return      (devid == 25448) || // ETH
-                (devid == 26448) || // ETH
-                (devid == 25458) || //
-                (devid == 26458) || //
-                (devid == 26468) ||
-                (devid == 26478);
-}
-
-// RomInfo implementation
-
-FwOperations::RomInfo::RomInfo(const std::vector<u_int8_t>& romSector, bool resEndi)
-{
-    expRomFound = !romSector.empty();
-    romSect = romSector;
-    if (resEndi) {
-        TOCPUn(&romSect[0], romSect.size()/4);
-    }
-    numOfExpRom = 0;
-    expRomComDevid = 0;
-    expRomWarning = false;
-    expRomErrMsgValid = false;
-    noRomChecksum = false;
-    memset(expRomErrMsg, 0, sizeof(expRomErrMsg));
-    memset(expRomWarningMsg, 0, sizeof(expRomWarningMsg));
-    memset(&romsInfo, 0, (sizeof(rom_info_t)*MAX_ROMS_NUM));
-}
-
-
-bool FwOperations::RomInfo::initRomsInfo(roms_info_t *info)
-{
-    if (info == NULL) {
-        return errmsg("invalid roms_info_t pointer.");
-    }
-    info->exp_rom_found = expRomFound;
-    info->num_of_exp_rom = numOfExpRom;
-    info->no_rom_checksum = noRomChecksum;
-    info->exp_rom_com_devid = expRomComDevid;
-    info->exp_rom_warning = expRomWarning;
-    info->exp_rom_err_msg_valid = expRomErrMsgValid;
-    //copy strings and rom_info
-    for (int i=0; i< MAX_ROM_ERR_MSG_LEN; i++) {
-        info->exp_rom_warning_msg[i] = expRomWarningMsg[i];
-        info->exp_rom_err_msg[i] = expRomErrMsg[i];
-    }
-    for (int i=0; i< MAX_ROMS_NUM; i++) {
-        //copy rom_info struct
-        info->rom_info[i].exp_rom_product_id = romsInfo[i].exp_rom_product_id; // 0 - invalid.
-        info->rom_info[i].exp_rom_dev_id = romsInfo[i].exp_rom_dev_id;
-        info->rom_info[i].exp_rom_port = romsInfo[i].exp_rom_port;
-        info->rom_info[i].exp_rom_proto = romsInfo[i].exp_rom_proto;
-        info->rom_info[i].exp_rom_num_ver_fields = romsInfo[i].exp_rom_num_ver_fields;
-        for (int j=0; j< 3 ; j++) {
-             info->rom_info[i].exp_rom_ver[j] = romsInfo[i].exp_rom_ver[j];
-        }
-    }
-
-    return true;
-}
-
-bool FwOperations::RomInfo::ParseInfo()
-{
-    if (!GetExpRomVersion()) {
-        snprintf(expRomErrMsg, MAX_ROM_ERR_MSG_LEN, "%s",  err());
-        expRomErrMsgValid = true;
-        //printf("-D-expRomErrMsg: %s \n", expRomErrMsg);
-    }
-    //printf("-D- expRomFound: %d   \n",expRomFound);
-    //printf("-D- numOfExpRom: %d   \n",numOfExpRom);
-    //printf("-D- noRomChecksum: %d   \n",noRomChecksum);
-    //printf("-D- expRomComDevid: %d   \n",expRomComDevid);
-    //printf("-D- expRomWarning: %d   \n",expRomWarning);
-    //printf("-D- expRomErrMsgValid: %d   \n",expRomErrMsgValid);
-    return true;
-}
-
-#define MAGIC_LEN 32
-
-bool FwOperations::RomInfo::GetExpRomVersion()
-{
-    char magicString[MAGIC_LEN] = {"mlxsignX"};
-    u_int32_t magicLen = strlen(magicString);
-    bool magicFound = false;
-    u_int32_t verOffset;
-    u_int32_t romChecksumRange;
-
-    // We do this HACK in order not to have mlxsign: word in our code so if mlxfwops will be part
-    // of rom, no mlxsign: string will appear
-    magicString[magicLen - 1] = ':';
-
-    if (romSect.empty()) {
-        return errmsg("Expansion Rom section not found.");
-    }
-    // When checking the version of the expansion rom, only the first image has
-    // to be checked. This is because the second image  the uefi image does not
-    // have to comply with checksumming to 0. To do this you have to read  byte
-    // 2 (third) of the image  and multiply by 512 to get the size of the x86
-    // image.
-
-    // Checksum:
-    if (romSect.size() < 4) {
-        return errmsg("ROM size (0x%x) is too small",
-                (u_int32_t) romSect.size());
-    }
-
-    // restore endianess is done in the constructor if needed.
-    /*  // FOR WE DON'T CHECKSUM UNTIL WE DECIDED REGARDING THE NEW FORMAT.
-     */
-    // We will look for the magic string in whole ROM instead of the first part of it.
-    romChecksumRange = romSect.size();
-
-    for (u_int32_t i = 0; i < romChecksumRange; i++) {
-        for (u_int32_t j = 0; j < magicLen; j++) {
-            if (romSect[i + j] != magicString[j]) {
-                break;
-            } else if (j == magicLen - 1) {
-                magicFound = true;
-            }
-        }
-
-
-        if (magicFound) {
-            // Get the ROM info after the mlxsign
-            bool rc;
-            rom_info_t *currRom;
-
-            if (numOfExpRom == MAX_ROMS_NUM) {
-                expRomWarning = true;
-                snprintf(expRomWarningMsg,
-                        MAX_ROM_ERR_MSG_LEN,
-                        "Number of exp ROMs exceeds the maximum allowed number (%d)",
-                        MAX_ROMS_NUM);
-                // Here we want to warn regarding this issue without checksum.
-                return true;
-            }
-
-            currRom = &(romsInfo[numOfExpRom]);
-            verOffset = i + magicLen;
-            rc = GetExpRomVerForOneRom(verOffset);
-            if (rc != true) {
-                return rc;
-            }
-
-            // Get the device ID and check if it mismatches with other ROMs
-            if (expRomComDevid != MISS_MATCH_DEV_ID) { // When the DevId is already mismatched, no end to any check
-                 if (currRom->exp_rom_dev_id != EXP_ROM_GEN_DEVID) { // When we have a device ID on the ROM
-                    if (expRomComDevid == EXP_ROM_GEN_DEVID) { // Update the common DevId at the first time we find ID
-                        expRomComDevid = currRom->exp_rom_dev_id;
-                    } else { // Check if we have the same IDs, if yes, continue
-                        if (currRom->exp_rom_dev_id != expRomComDevid) { // There is a mismatch between ROMs
-                            expRomComDevid = MISS_MATCH_DEV_ID;
-                            expRomWarning = true;
-                            snprintf(expRomWarningMsg,
-                                     MAX_ROM_ERR_MSG_LEN,
-                                     "The device IDs of the ROMs mismatched.");
-                        }
-                    }
-                }
-            }
-
-            magicFound = false;      // Clean the magic_found to start search for another magic string
-            i += (ROM_INFO_SIZE - 1); // Increase the index to point to the end of the ROM info.
-            numOfExpRom++;
-        }
-    }
-
-    // TODO: ADD CHECKSUM CHECK
-    if (!numOfExpRom) {
-        return errmsg("Cannot get ROM version. Signature not found.");
-
-    }
-
-    if (!noRomChecksum) { // No need for checksum on some ROMs like uEFI
-         u_int8_t romChecksum = 0;
-         romChecksumRange = romSect[2] * 512;
-         if (romChecksumRange > romSect.size()) {
-             return errmsg(
-                     "ROM size field (0x%2x) is larger than actual ROM size (0x%x)",
-                     romChecksumRange, (u_int32_t) romSect.size());
-         } else if (romChecksumRange == 0) {
-             return errmsg(
-                     "ROM size field is 0. Unknown ROM format or corrupted ROM.");
-         }
-
-         for (u_int32_t i = 0; i < romChecksumRange; i++) {
-             romChecksum += romSect[i];
-         }
-
-         if (romChecksum != 0) {
-             expRomWarning = true;
-             snprintf(
-                     expRomWarningMsg,
-                     MAX_ROM_ERR_MSG_LEN,
-                     "Bad ROM Checksum (0x%02x), ROM info may not be displayed correctly.",
-                     romChecksum);
-         }
-     }
-
-    return true;
-}
-
-bool FwOperations::RomInfo::GetExpRomVerForOneRom(u_int32_t verOffset)
-{
-
-    u_int32_t tmp;
-    u_int32_t offs4;
-    u_int32_t offs8;
-    rom_info_t *romInfo;
-
-    if (numOfExpRom == MAX_ROMS_NUM) {
-        expRomWarning = true;
-        snprintf(expRomWarningMsg,
-                MAX_ROM_ERR_MSG_LEN,
-                "Number of exp ROMs exceeds the maximum allowed number: %d",
-                MAX_ROMS_NUM);
-        return true;
-    }
-    romInfo = &(romsInfo[numOfExpRom]);
-
-    // Following mlxsign:
-    // 31:24    0    Compatible with UEFI
-    // 23:16    ProductID   Product ID:
-    //                          0x1 - CLP implementation for InfiniHost_III_Lx (MT25408)
-    //                          0x2 - CLP implementation for Connectx DDR (MT25418)
-    //                                                 0x3 - CLP implementation for Connectx QDR (MT26428)
-    //                                                 0x4 - CLP implementation for Connectx ETHERNET (MT25448)
-    //                          0X10 - PXE
-    //                                                 0x11 - UEFI
-    //                                                 0x12 - CLP with device ID and Version
-    //                                                 0x21 - FCODE - IBM's ROM version format, the same as PXE
-    //                                            (0xf) - extended format(see code or rom version format document)
-    //
-    // 15:0 Major version   If ProductID < 0x10 or == 0x12 this field is subversion
-    //                          number, otherwise It's product major version.
-    //
-    // 31:16    Minor version   Product minor version*. Not valid if
-    //                          roductID < 0x10 or == 0x12.
-    // 15:0 SubMinor version    Product sub minor version*. Not valid if
-    //                                  ProductID < 0x10 or == 0x12.
-    //
-    // 31:16    Device ID   The PCI Device ID (ex. 0x634A for Connectx
-    //                          DDR). Not valid if ProductID < 0x10.
-    // 15:12    Port Number Port number: 0 - Port independent, 1 - Port 1, 2 - Port 2
-    //  8:11    Reserved
-    //  0:7     Protocol type: 0=IB 1=ETH 2=VPI
-
-    // Get expansion rom product ID
-    tmp = __le32_to_cpu(*((u_int32_t*) &romSect[verOffset]));
-    romInfo->exp_rom_product_id = tmp >> 16;
-    romInfo->exp_rom_ver[0] = tmp & 0xffff;
-
-    if (romInfo->exp_rom_product_id < 0xF || romInfo->exp_rom_product_id == 0x12) {
-        romInfo->exp_rom_num_ver_fields = 1;//For CLPs
-    } else if (romInfo->exp_rom_product_id == 0xF) {
-        romInfo->exp_rom_num_ver_fields = 0;
-    } else { // >= 0x10
-        romInfo->exp_rom_num_ver_fields = 3;
-    }
-
-    if (romInfo->exp_rom_product_id == 0x11 || romInfo->exp_rom_product_id == 0x21) {
-        noRomChecksum = true;
-    }
-
-    if (romInfo->exp_rom_product_id >= 0x10) {
-        offs8 = __le32_to_cpu(*((u_int32_t*) &romSect[verOffset + 8]));
-        romInfo->exp_rom_dev_id = offs8 >> 16;
-       //0x12 is CLP we have only 1 version field and no porty
-       if (romInfo->exp_rom_product_id != 0x12){
-               offs4 = __le32_to_cpu(*((u_int32_t*) &romSect[verOffset + 4]));
-               romInfo->exp_rom_ver[1] = offs4 >> 16;
-               romInfo->exp_rom_ver[2] = offs4 & 0xffff;
-
-               romInfo->exp_rom_port = (offs8 >> 12) & 0xf;
-               romInfo->exp_rom_proto = offs8 & 0xff;
-        }
-    } else if (romInfo->exp_rom_product_id == 0xf) {
-        // get string length
-        u_int32_ba tmp_ba = *((u_int32_t*) &romSect[verOffset + 0xc]);
-        u_int32_t str_len = u_int32_t(tmp_ba.range(15, 8));
-        u_int32_t sign_length = u_int32_t(tmp_ba.range(7, 0));
-        u_int32_t dws_num = ((str_len + 3) / 4) + 4;
-
-        if (sign_length < dws_num) {
-            return errmsg(
-                    "The Signature length (%d) and the ROM version string length (%d) are not coordinated",
-                    sign_length, str_len);
-        }
-
-        int svnv;
-        char free_str[FREE_STR_MAX_LEN];
-        strncpy(free_str,(char*) &romSect[verOffset + 0x10], str_len);
-        free_str[str_len] = '\0';
-        if (sscanf((char*) free_str, "%d", &svnv) == 1) {
-            romInfo->exp_rom_ver[0] = svnv;
-        }
-
-        tmp_ba = __le32_to_cpu(*((u_int32_t*) &romSect[0x18]));
-        u_int32_t dev_id_off = u_int32_t(tmp_ba.range(15, 0)) + 4;
-
-        if (dev_id_off >= romSect.size()) {
-            return errmsg(
-                    "The device ID offset %#x is out of range. ROM size: %#x",
-                    dev_id_off, (u_int32_t) romSect.size());
-        }
-
-        // get devid
-        tmp_ba = __le32_to_cpu(*((u_int32_t*) &romSect[dev_id_off]));
-        romInfo->exp_rom_dev_id = u_int32_t(tmp_ba.range(31, 16));
-        u_int32_t vendor_id = u_int32_t(tmp_ba.range(15, 0));
-
-        if (vendor_id != MELLANOX_VENDOR_ID) {
-            expRomWarning = true;
-            snprintf(expRomWarningMsg,
-                    MAX_ROM_ERR_MSG_LEN,
-                    "The Exp-ROM PCI vendor ID: %#x does not match the expected value: %#x.",
-                    vendor_id, MELLANOX_VENDOR_ID);
-        }
-
-    }
-    return true;
-}
-
-bool FwOperations::ReadImageFile(const char *fimage, u_int8_t *&file_data, int &file_size, int min_size)
-{
-#ifndef UEFI_BUILD
-    FILE* fh;
-
-    if ((fh = fopen(fimage, "rb")) == NULL) {
-        return errmsg("Can not open %s: %s\n", fimage, strerror(errno));
-    }
-
-    if (fseek(fh, 0, SEEK_END) < 0) {
-        fclose(fh);
-        return errmsg("Failed to get size of the file \"%s\": %s\n", fimage, strerror(errno));
-    }
-
-    int read_file_size = ftell(fh);
-    if (read_file_size < 0) {
-        fclose(fh);
-        return errmsg("Failed to get size of the file \"%s\": %s\n", fimage, strerror(errno));
-    }
-    rewind(fh);
-
-    file_size = read_file_size;
-    if (min_size != -1) {// take min of min_size and read_file_size
-        if (min_size < 0) {
-            fclose(fh);
-            return errmsg("Internal error, minimal image read size cannot be negative.");
-        }
-        file_size = ( min_size > read_file_size ) ? min_size : read_file_size;
-    }
-
-    file_data = new u_int8_t[file_size];
-    if (fread(file_data, 1, read_file_size, fh) != (size_t)read_file_size) {
-        delete[] file_data;
-        fclose(fh);
-        return errmsg("Failed to read from %s: %s\n", fimage, strerror(errno));
-    }
-    fclose(fh);
-    return true;
-#else
-    return errmsg("Not implemented.\n");
-#endif
-}
-
-void FwOperations::SetDevFlags(chip_type_t chipType, u_int32_t devType, fw_img_type_t fwType, bool &ibDev, bool &ethDev) {
-
-    (void)devType;
-    if (chipType == CT_IS4) {
-        ibDev =  true;
-        ethDev = false;
-    } else if (chipType == CT_SWITCHX) {
-        ibDev = true;
-        ethDev = true;
-    } else {
-        ibDev  = (fwType == FIT_FS3 && chipType != CT_SPECTRUM) || (chipType == CT_CONNECTX && !CntxEthOnly(devType));
-        ethDev = (chipType == CT_CONNECTX) || (chipType == CT_SPECTRUM) || (chipType == CT_CONNECTX4) || (chipType == CT_CONNECTX4_LX) || (chipType == CT_CONNECTX5);
-    }
-
-    if ((!ibDev && !ethDev) || chipType == CT_UNKNOWN) {
-        // Unknown device id - for forward compat - assume that ConnectX is MP and
-        // prev HCAs are IB only (these flags are for printing only - no real harm can be done).
-        // TODO: FS2 does not mean ConnectX now.
-        ibDev = true;
-        if (fwType == FIT_FS2) {
-            ethDev = true;
-        } else {
-            ethDev = false;
-        }
-    }
-}
-
-bool FwOperations::IsFwSupportingRomModify(u_int16_t fw_ver[3])
-{
-    u_int16_t supported_fw[3] = {MAJOR_MOD_ROM_FW,  MINOR_MOD_ROM_FW, SUBMINOR_MOD_ROM_FW};
-    // only used in connectx (FS2)
-    FwVerInfo verInfo = FwVerLessThan(fw_ver, supported_fw);
-    return ((verInfo == FVI_EQUAL) || (verInfo == FVI_GREATER));
-}
-
-bool FwOperations::checkMatchingExpRomDevId(const fw_info_t& info)
-{
-    /*
-    if ((info.fw_info.roms_info.num_of_exp_rom > 0) && (info.fw_info.dev_type)
-            && (info.fw_info.roms_info.exp_rom_com_devid != EXP_ROM_GEN_DEVID) \
-            && (info.fw_info.roms_info.exp_rom_com_devid != MISS_MATCH_DEV_ID)
-            && (info.fw_info.dev_type != info.fw_info.roms_info.exp_rom_com_devid)) {
-        return false;
-    }
-    return true; */
-    return checkMatchingExpRomDevId(info.fw_info.dev_type, info.fw_info.roms_info);
-}
-
-
-bool FwOperations::checkMatchingExpRomDevId(u_int16_t dev_type, const roms_info_t& roms_info)
-{
-    if ((roms_info.num_of_exp_rom > 0) && (dev_type)
-            && (roms_info.exp_rom_com_devid != EXP_ROM_GEN_DEVID) \
-            && (roms_info.exp_rom_com_devid != MISS_MATCH_DEV_ID)
-            && (dev_type != roms_info.exp_rom_com_devid)) {
-        return false;
-    }
-    return true;
-}
-
-
-bool FwOperations::FwWriteBlock(u_int32_t addr, std::vector<u_int8_t> dataVec, ProgressCallBack progressFunc)
-{
-    if (dataVec.empty()) {
-        return errmsg("no data to write.");
-    }
-    // make sure we work on device
-    if (!_ioAccess->is_flash()) {
-        return errmsg("no flash detected.(command is only supported on flash)");
-    }
-
-    //check if flash is big enough
-    if ((addr + dataVec.size()) > ((Flash*)_ioAccess)->get_size()) {
-       return errmsg("Writing %#x bytes from address %#x is out of flash limits (%#x bytes)\n",
-                            (unsigned int)(dataVec.size()), (unsigned int)addr, (unsigned int)_ioAccess->get_size());
-    }
-
-    if (!writeImage(progressFunc, addr, &dataVec[0], (int)dataVec.size())) {
-        return false;
-    }
-    return true;
-};
-
-
-bool FwOperations::FwBurnData(u_int32_t *data, u_int32_t dataSize, ProgressCallBack progressFunc) {
-    FwOperations* newImgOps;
-    fwOpsParams imgOpsParams;
-    memset(&imgOpsParams, 0, sizeof(imgOpsParams));
-    char errBuff[1024] = {0};
-
-    imgOpsParams.psid      = (char*)NULL;
-    imgOpsParams.buffHndl  = data;
-    imgOpsParams.buffSize = dataSize;
-    imgOpsParams.errBuff = errBuff;
-    imgOpsParams.errBuffSize = 1024;
-    imgOpsParams.hndlType = FHT_FW_BUFF;
-
-    newImgOps = FwOperationsCreate(imgOpsParams);
-    if (newImgOps == NULL) {
-        return errmsg("Internal error: Failed to create modified image: %s", errBuff);
-    }
-    if (!newImgOps->FwVerify((VerifyCallBack)NULL)) {
-       errmsg("Internal error: Modified image failed to verify: %s", newImgOps->err());
-        newImgOps->FwCleanUp();
-        delete newImgOps;
-        return false;
-    }
-
-    ExtBurnParams burnParams = ExtBurnParams();
-    burnParams.ignoreVersionCheck = true;
-    burnParams.progressFunc = progressFunc;
-    burnParams.useImagePs = true;
-    burnParams.useImageGuids = true;
-    burnParams.burnRomOptions = ExtBurnParams::BRO_ONLY_FROM_IMG;
-
-    if (!FwBurnAdvanced(newImgOps, burnParams)) {
-        newImgOps->FwCleanUp();
-        delete newImgOps;
-        return errmsg("Failed to re-burn image after modify: %s", err());
-    }
-    newImgOps->FwCleanUp();
-    delete newImgOps;
-    return true;
-}
-
-
-bool FwOperations::getRomsInfo(FBase* io, roms_info_t& romsInfo)
-{
-    std::vector<u_int8_t> romSector;
-    romSector.clear();
-    romSector.resize(io->get_size());
-    if (!io->read(0, &romSector[0], io->get_size())) {
-        return false;
-    }
-    RomInfo info(romSector, false);
-    info.ParseInfo();
-    info.initRomsInfo(&romsInfo);
-    return true;
-}
-
-const char* FwOperations::expRomType2Str(u_int16_t type)
-{
-       switch (type) {
-               case 0x1:
-                   return "CLP1";
-               case 0x2:
-                       return "CLP2";
-               case 0x3:
-                       return "CLP3";
-               case 0x4:
-                       return "CLP4";
-               case 0xf:
-                       return "CLP"; // hack as 0xf isnt always CLP (its type is defined in the free string inside the ROM)
-               case 0x10:
-                       return "PXE";
-               case 0x11:
-                       return "UEFI";
-               case 0x12:
-                       return "CLP";
-               case 0x21:
-                       return "FCODE";
-               default:
-                   return (const char*)NULL;
-               }
-       return (const char*)NULL;
-}
-
-bool FwOperations::FwSetTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer)
-{
-    (void)timestamp;
-    (void)fwVer;
-    return errmsg("Operation not supported.");
-}
-
-bool FwOperations::FwResetTimeStamp()
-{
-    return errmsg("Operation not supported.");
-}
-
-bool FwOperations::FwQueryTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer, bool queryRunning)
-{
-    (void)timestamp;
-    (void)fwVer;
-    (void)queryRunning;
-    return errmsg("Operation not supported.");
-}
diff --git a/mlxfwops/lib/fw_ops.h b/mlxfwops/lib/fw_ops.h
deleted file mode 100644 (file)
index 9e3542f..0000000
+++ /dev/null
@@ -1,427 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#ifndef FW_OPS_H
-#define FW_OPS_H
-
-#include "flint_base.h"
-#include "flint_io.h"
-#include "mlxfwops_com.h"
-
-#ifdef CABLES_SUPP
-#include <cable_access/cable_access.h>
-#endif
-
-typedef f_prog_func_str VerifyCallBack;
-typedef f_prog_func     ProgressCallBack;
-typedef f_prog_func_str PrintCallBack;
-typedef fw_ver_info_t   FwVerInfo;
-
-typedef int (*PrintCallBackAdv) (int completion, char* str);
-
-class MLXFWOP_API FwOperations : public FlintErrMsg {
-
-
-public:
-    #define EXP_ROM_GEN_DEVID 0
-    #define MISS_MATCH_DEV_ID 0xffff
-    class ExtBurnParams;
-    struct fwOpsParams;
-    struct sgParams;
-    typedef fwOpsParams fw_ops_params_t;
-    typedef sgParams sg_params_t;
-    // typedef std::tr1::function<void (void)> VerifyCallback;
-
-    FwOperations(FBase *ioAccess) :
-        _ioAccess(ioAccess), _isCached(false), _wasVerified(false),
-        _quickQuery(false), _printFunc((PrintCallBack)NULL), _fname((const char*)NULL),\
-        _devName((const char*)NULL), _advErrors(true), _minBinMinorVer(0), _minBinMajorVer(0),
-        _maxBinMajorVer(0)
-    {
-        memset(_sectionsToRead, 0, sizeof(_sectionsToRead));
-        memset(&_fwImgInfo, 0, sizeof(_fwImgInfo));
-        memset(&_fwParams, 0, sizeof(_fwParams));
-    };
-
-
-    virtual ~FwOperations()  {};
-    //virtual void print_type() {};
-    virtual u_int8_t FwType() = 0;
-    static FwVerInfo FwVerLessThan(u_int16_t r1[3], u_int16_t r2[3]);
-    static bool IsFwSupportingRomModify(u_int16_t fw_ver[3]);
-    static bool CntxEthOnly(u_int32_t devid);
-    static void SetDevFlags(chip_type_t chipType, u_int32_t devType, fw_img_type_t fwType, bool &ibDev, bool &ethDev);
-    static bool checkMatchingExpRomDevId(const fw_info_t& info);
-    static bool checkMatchingExpRomDevId(u_int16_t dev_type, const roms_info_t& roms_info);
-    static const char* expRomType2Str(u_int16_t type);
-
-
-    virtual bool FwQuery(fw_info_t *fwInfo, bool readRom = true, bool isStripedImage = false) = 0;
-    virtual bool FwVerify(VerifyCallBack verifyCallBackFunc, bool isStripedImage = false, bool showItoc = false) = 0; // Add callback print
-    //on call of FwReadData with Null image we get image_size
-    virtual bool FwReadData(void* image, u_int32_t* image_size) = 0;
-
-    virtual bool FwReadRom(std::vector<u_int8_t>& romSect) = 0;
-    virtual bool FwBurnRom(FImage* romImg, bool ignoreProdIdCheck = false, bool ignoreDevidCheck = false, ProgressCallBack progressFunc=(ProgressCallBack)NULL) = 0; // can also read the rom from flint and give a vector of u_int8_t
-    virtual bool FwDeleteRom(bool ignoreProdIdCheck, ProgressCallBack progressFunc=(ProgressCallBack)NULL) = 0;
-
-    virtual bool FwBurn(FwOperations *imageOps, u_int8_t forceVersion, ProgressCallBack progressFunc=(ProgressCallBack)NULL) = 0;
-    virtual bool FwBurnAdvanced(FwOperations *imageOps, ExtBurnParams& burnParams) = 0;
-    virtual bool FwBurnBlock(FwOperations* imageOps, ProgressCallBack progressFunc) = 0; //Add: callback progress, question arr, callback question, configurations
-    bool FwWriteBlock(u_int32_t addr, std::vector<u_int8_t> dataVec, ProgressCallBack progressFunc=(ProgressCallBack)NULL);
-
-    virtual bool FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc=(PrintCallBack)NULL, ProgressCallBack progressFunc=(ProgressCallBack)NULL) = 0;
-
-    virtual bool FwSetMFG(fs3_uid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL) = 0;
-    virtual bool FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL) = 0;
-    // use progressFunc when dealing with FS2 image and printFunc when dealing with FS3 image.
-    virtual bool FwSetVSD(char* vsdStr, ProgressCallBack progressFunc=(ProgressCallBack)NULL, PrintCallBack printFunc=(PrintCallBack)NULL) = 0;
-    virtual bool FwSetVPD(char* vpdFileStr, PrintCallBack callBackFunc=(PrintCallBack)NULL) = 0;
-    virtual bool FwSetAccessKey(hw_key_t userKey, ProgressCallBack progressFunc=(ProgressCallBack)NULL) = 0;
-    virtual bool FwGetSection (u_int32_t sectType, std::vector<u_int8_t>& sectInfo, bool stripedImage=false)= 0;
-    virtual bool FwResetNvData() = 0;
-    virtual bool FwShiftDevData(PrintCallBack progressFunc=(PrintCallBack)NULL) = 0;
-    virtual const char*  FwGetResetRecommandationStr() = 0;
-
-    virtual bool FwSetTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer);
-    virtual bool FwQueryTimeStamp(struct tools_open_ts_entry& timestamp, struct tools_open_fw_version& fwVer, bool queryRunning=false);
-    virtual bool FwResetTimeStamp();
-
-    void FwCleanUp();
-    virtual bool FwInit() = 0;
-    bool FwSetPrint(PrintCallBack PrintFunc);
-
-    //needed for flint low level operations
-    bool FwSwReset();
-    virtual bool CheckCX4Device() {return true; /* deprecated always return true*/ }
-    virtual bool FwCalcMD5(u_int8_t md5sum[16]) = 0;
-
-    
-    //virtual bool FwBurnBlock(FwOperations &FwImageAccess); // Add call back
-    static FwOperations* FwOperationsCreate(void* fwHndl, void *info, char* psid, fw_hndl_type_t hndlType, char* errBuff=(char*)NULL, int buffSize=0);
-    static FwOperations* FwOperationsCreate(fw_ops_params_t& fwParams);
-
-    //bool GetExpRomVersionWrapper();
-    void getSupporteHwId(u_int32_t **supportedHwId, u_int32_t &supportedHwIdNum);
-
-    class MLXFWOP_API RomInfo : FlintErrMsg {
-    public:
-        RomInfo(const std::vector<u_int8_t>& romSector, bool resEndi=true);
-        ~RomInfo() {};
-        bool initRomsInfo(roms_info_t* info);
-        bool ParseInfo();
-    private:
-        //Rom Information
-        bool         expRomFound;
-        u_int8_t     numOfExpRom;
-        u_int8_t     noRomChecksum;
-        u_int16_t    expRomComDevid;
-        u_int8_t     expRomWarning;
-        char         expRomWarningMsg[MAX_ROM_ERR_MSG_LEN];
-        u_int8_t     expRomErrMsgValid;
-        char         expRomErrMsg[MAX_ROM_ERR_MSG_LEN];
-        rom_info_t   romsInfo[MAX_ROMS_NUM];
-        std::vector<u_int8_t> romSect;
-
-        bool GetExpRomVerForOneRom(u_int32_t verOffset);
-        bool GetExpRomVersion();
-    };
-
-    // virtual bool FwBurn(FwOperations &FwImageAccess);
-    /*
-    FwAcessRom();
-    FwReadImage();
-    FwSwReset();
-    FwDumpConf();
-    FwSetGuid();
-    FwSetVsd();
-    FwHwAccessChangeMode();
-    FwHwaccessSetKey();
-    FwGetHwInfo();
-    FwSetHWParam();
-    FwQueryROM();
-    FwClearSemaphore();
-*/
-    class ExtBurnParams {
-
-    public:
-        typedef enum BurnRomOption {
-            BRO_DEFAULT,
-            BRO_ONLY_FROM_IMG,
-            BRO_FROM_DEV_IF_EXIST,
-        } BurnRomOption;
-        //burn params
-        bool userGuidsSpecified;
-        bool userMacsSpecified;
-        bool userUidSpecified;
-        bool vsdSpecified;
-        bool blankGuids;
-        bool burnFailsafe;
-        bool allowPsidChange;
-        bool useImagePs;
-        bool useImageGuids;
-        bool singleImageBurn;
-        bool noDevidCheck;
-        bool ignoreVersionCheck;
-        bool useImgDevData; // FS3 image only - take device data sections from image (valid only if burnFailsafe== false)
-        bool useDevImgInfo; // FS3 image only - preserve select fields of image_info section on the device when burning.
-        BurnRomOption burnRomOptions;
-
-        //callback fun
-        ProgressCallBack progressFunc;
-        //data
-        char* userVsd;
-        std::vector<guid_t> userUids; //contains eiter guids or uids
-
-
-        ExtBurnParams():userGuidsSpecified(false), userMacsSpecified(false), userUidSpecified(false),
-                        vsdSpecified(false),blankGuids(false), burnFailsafe(true), allowPsidChange(false),
-                        useImagePs(false), useImageGuids(false), singleImageBurn(true), noDevidCheck(false),
-                        ignoreVersionCheck(false), useImgDevData(false), useDevImgInfo(false),
-                        burnRomOptions(BRO_DEFAULT), progressFunc((ProgressCallBack)NULL),
-                        userVsd((char*)NULL){}
-        };
-
-        struct fwOpsParams{
-            // COMMON
-            char* psid; // can be NULL
-            fw_hndl_type_t hndlType;
-            char* errBuff; // can be NULL
-            int errBuffSize; // can be zero if above NULL
-            // FHT_FW_FILE
-            char* fileHndl;
-            // FHT_FW_BUFF
-            u_int32_t *buffHndl;
-            u_int32_t buffSize;
-            // FHT_UEFI_DEV
-            uefi_Dev_t* uefiHndl;
-            uefi_dev_extra_t* uefiExtra;
-            // FHT_MST_DEV
-            char* mstHndl;
-            bool forceLock;
-            bool readOnly;
-            int numOfBanks; // should be set to -1 for "auto-detect"
-            flash_params_t* flashParams; // can be NULL
-            int ignoreCacheRep;
-            bool noFlashVerify;
-            bool shortErrors; // show short/long error msgs (default shuold be false)
-            int cx3FwAccess;
-            int isCableFw;
-        };
-
-        struct sgParams {
-            bool updateCrc; //default should be set to true
-            bool stripedImage; // default shuold be set to false unless working on striped image file
-            bool macsSpecified;
-            bool guidsSpecified;
-            bool uidSpecified; // valid for ConnectIB only
-            std::vector<guid_t> userGuids;
-            u_int8_t numOfGUIDs; // number of GUIDs to allocate for each port. keep zero for default. (FS3 image Only)
-            u_int8_t stepSize; // step size between GUIDs. keep zero for default. (FS3 Image Only)
-            bool usePPAttr; // if set, use the per prot attributes below (FS3 Image Only)
-            u_int8_t numOfGUIDsPP[2]; // number of GUIDs to allocate for each port. keep 0xff for default. (FS3 image Only)
-            u_int8_t stepSizePP[2]; // step size between GUIDs. keep 0xff for default. (FS3 Image Only)
-        };
-protected:
-    #define FS3_IND_ADDR 0x24
-    #define FS4_IND_ADDR 0x10
-    #define ARR_SIZE(arr) sizeof(arr)/sizeof(arr[0])
-    #define RESTORING_MSG "Restoring signature"
-
-       struct FwImgInfo {
-        fw_info_com_t ext_info;
-        u_int32_t    imgStart;
-        bool         actuallyFailsafe;
-        u_int32_t    cntxLog2ChunkSize;
-        u_int32_t    bootSize;
-        bool         isGa;
-        u_int32_t    supportedHwId[MAX_NUM_SUPP_HW_IDS];
-        int          supportedHwIdNum;
-        bool         magicPatternFound;
-        bool         imageOk;
-        bool         wasQueried;
-        u_int32_t    lastImageAddr;
-        fw_img_type_t fwType;
-    };
-    enum {
-        OLD_CNTX_START_POS_SIZE = 6,
-        CNTX_START_POS_SIZE = 8
-    };
-    enum {
-        MAX_SW_DEVICES_PER_HW=32
-    };
-    enum {
-        IMG_SIG_TYPE_UNKNOWN = 0,
-        IMG_SIG_TYPE_BIN = 1,
-        IMG_SIG_TYPE_MFA = 2,
-        IMG_SIG_TYPE_CF  = 3,
-        IMG_SIG_OPEN_FILE_FAILED = 4
-    };
-
-    enum {
-        IMG_VER_FS2 = 0,
-        IMG_VER_FS3 = 3,
-        IMG_VER_FS4 = 4
-    };
-    enum {
-        FS_OLD_GEN = 0,
-        FS_FS2_GEN,
-        FS_FS3_GEN,
-        FS_FS4_GEN,
-        FS_UNKNOWN_IMG
-    };
-
-    struct HwDevData {
-        const char*      name;
-        u_int32_t        hwDevId;
-        chip_type_t      chipType;
-        chip_family_type chipFamilyType;
-        int              portNum;
-        // Zero terminated list of SW device ids
-        const u_int32_t  swDevIds[MAX_SW_DEVICES_PER_HW];
-    };
-
-    struct HwDev2Str {
-        const char*      name;
-        u_int32_t        hwDevId;
-        u_int8_t         revId;
-    };
-
-    struct SectionInfo {
-        u_int8_t      type;
-        const char    *name;
-    };
-
-    struct QueryOptions {
-        bool quickQuery;
-        bool readRom;
-    };
-
-    typedef int (*print2log_func) (const char* format, ...);
-
-    // Protected Methods
-    static int GetFwVerFormat(u_int16_t fwVer[3]);
-    virtual bool UpdateImgCache(u_int8_t *buff, u_int32_t addr, u_int32_t size);
-    bool CheckAndPrintCrcRes(char* pr, bool blank_crc, u_int32_t off, u_int32_t crc_act, u_int32_t crc_exp, bool ignore_crc = false,
-            VerifyCallBack verifyCallBackFunc = (VerifyCallBack)NULL);
-    bool checkBoot2(u_int32_t beg, u_int32_t offs, u_int32_t& next, bool fullRead, const char *pref,
-            VerifyCallBack verifyCallBackFunc = (VerifyCallBack)NULL);
-    u_int32_t CalcImageCRC(u_int32_t* buff, u_int32_t size);
-    bool writeImage(ProgressCallBack progressFunc, u_int32_t addr, void *data, int cnt, bool isPhysAddr = false, bool readModifyWrite=false, int totalSz = -1, int alreadyWrittenSz = 0);
-    //////////////////////////////////////////////////////////////////
-    bool GetSectData(std::vector<u_int8_t>& file_sect, const u_int32_t *buff, const u_int32_t size);
-    ////////////////////////////////////////////////////////////////////
-    bool CheckMatchingDevId(u_int32_t hwDevId, u_int32_t imageDevId);
-    bool CheckMatchingHwDevId(u_int32_t hwDevId, u_int32_t rev_id, u_int32_t* supportedHwId, u_int32_t supportedHwIdNum);
-    bool HWIdRevToName(u_int32_t hw_id, u_int8_t rev_id, char *hw_name);
-    bool CheckMac(u_int64_t mac);
-    bool CheckMac(guid_t mac);
-    void recalcSectionCrc(u_int8_t *buf, u_int32_t data_size);
-    void FwInitCom();
-    void FwDebugPrint(char *str);
-
-    static bool FindAllImageStart (FBase *ioAccess, u_int32_t start_locations[CNTX_START_POS_SIZE], u_int32_t* found_images, u_int32_t const cntx_magic_pattern[]);
-    static bool     getRomsInfo(FBase* io, roms_info_t& romsInfo);
-
-    bool GetQuickQuery()           {return _quickQuery;}
-    bool CheckFwVersion(FwOperations &imgFwOps, u_int8_t forceVersion);
-    bool CheckPSID(FwOperations &imageOps, u_int8_t allow_psid_change = false);
-    chip_type_t getChipType();
-    bool getInfoFromHwDevid(u_int32_t hwDevId, chip_type_t& chipT, const u_int32_t** swIds);
-    HwDevData getInfoFromChipType(chip_type_t chipT) const;
-
-    bool ReadImageFile(const char *fimage, u_int8_t *&file_data, int &file_size, int min_size=-1); // min_size=-1 like int flint_ops needed for fs3updateSection
-    bool ModifyImageFile(const char *fimage, u_int32_t addr, void *data, int cnt);
-    bool WriteImageToFile(const char *file_name, u_int8_t *data, u_int32_t length);
-    bool FwBurnData(u_int32_t *data, u_int32_t dataSize, ProgressCallBack progressFunc);
-    static bool FwAccessCreate(fw_ops_params_t& fwParams, FBase **ioAccessP);
-    bool CheckBinVersion(u_int8_t binVerMajor, u_int8_t binVerMinor);
-
-    // Protected Members
-    FBase*    _ioAccess;
-    bool      _isCached;
-    FwImgInfo _fwImgInfo;
-    fw_ops_params_t _fwParams;
-    std::vector<u_int8_t> _romSect;
-    std::vector<u_int8_t> _fwConfSect;
-    std::vector<u_int8_t> _hashFileSect;
-    std::vector<u_int8_t> _readSectList;
-
-    bool      _sectionsToRead[H_LAST];
-    bool      _wasVerified;
-    bool      _quickQuery;
-
-    PrintCallBack _printFunc;
-    const char* _fname;
-    const char* _devName;
-    // show advanced error msgs
-    bool _advErrors;
-
-    u_int8_t _minBinMinorVer;
-    u_int8_t _minBinMajorVer;
-    u_int8_t _maxBinMajorVer;
-
-private:
-
-    // Static Methods
-#ifndef NO_MFA_SUPPORT
-    static int      getMfaImg(char* fileName, char *psid, u_int8_t **imgbuf);
-    static int      getMfaImg(u_int8_t* mfa_buf, int size, char *psid, u_int8_t **imgbuf);
-#endif
-    static int      getFileSignature(const char* fname);
-    static int      getBufferSignature(u_int8_t* buf, u_int32_t size);
-    static u_int8_t CheckFwFormat(FBase& f, bool getFwFormatFromImg = false);
-    static u_int8_t IsFS4Image(FBase& f, u_int32_t* found_images);
-    static u_int8_t IsFS3OrFS2Image(FBase& f, u_int32_t* found_images);
-    static bool     FindMagicPattern  (FBase* ioAccess, u_int32_t addr,
-            u_int32_t const cntx_magic_pattern[]);
-
-    static void     WriteToErrBuff(char* errBuff, const char* errStr, int size);
-    void BackUpFwParams(fw_ops_params_t& fwParams);
-    static const char * err2str(int errNum);
-    // Methods
-
-    // Static Members
-    static const u_int32_t _cntx_image_start_pos[CNTX_START_POS_SIZE];
-
-    // Members
-    static const HwDevData hwDevData[];
-    static const HwDev2Str hwDev2Str[];
-    //fw_hndl_type_t _hndlType;  //not used atm
-
-protected:
-    static const u_int32_t _cntx_magic_pattern[4];
-    static const u_int32_t _fs4_magic_pattern[4];
-};
-
-#endif // FW_ACCESS_H
diff --git a/mlxfwops/lib/mlxfwops.cpp b/mlxfwops/lib/mlxfwops.cpp
deleted file mode 100755 (executable)
index 681076a..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-// #include <stdlib.h>
-
-#include "mlxfwops.h"
-#include "fw_ops.h"
-#ifdef UEFI_BUILD
-    #include "uefi_c.h"
-#endif
-
-int mlxfw_open_int(mlxfwops_t** mlxfwops_p, void* fw_hndl, void* extra, char* psid, fw_hndl_type_t hndl_type, char* err_buf, int buf_size)
-{
-     *mlxfwops_p = (mlxfwops_t*) FwOperations::FwOperationsCreate((void*)fw_hndl, extra, psid, hndl_type, err_buf, buf_size);
-     if (*mlxfwops_p == NULL) {
-         return MLXFW_MEM_ERR;
-     }
-     return MLXFW_OK;
-}
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_device_verbose(mlxfwops_t** mlxfwops_p, char *device_name, char* buf, int buf_size)
-{
-    return mlxfw_open_int(mlxfwops_p, device_name, NULL, (char*)NULL, FHT_MST_DEV, buf, buf_size);
-}
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_device(mlxfwops_t** mlxfwops_p, char *handle_name)
-{
-    return mlxfw_open_int(mlxfwops_p, handle_name, NULL, (char*)NULL, FHT_MST_DEV, (char*)NULL, 0);
-}
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_image(mlxfwops_t** mlxfwops_p, char *file_name, char *psid)
-{
-    return mlxfw_open_int(mlxfwops_p, file_name, NULL, psid, FHT_FW_FILE, (char*)NULL, 0);
-}
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_buffer(mlxfwops_t** mlxfwops_p, void* buffer, u_int32_t size, char *psid)
-{
-    return mlxfw_open_int(mlxfwops_p, buffer, &size, psid, FHT_FW_BUFF, (char*)NULL, 0);
-}
-
-#ifdef CABLES_SUPP
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_cable(mlxfwops_t** mlxfwops_p, char *handle_name, int port)
-{
-    return mlxfw_open_int(mlxfwops_p, handle_name, &port, (char*)NULL, FHT_CABLE_DEV, (char*)NULL, 0);
-}
-#endif
-
-#ifdef UEFI_BUILD
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_uefi(mlxfwops_t** mlxfwops_p, uefi_Dev_t* dev, f_fw_cmd fw_cmd_func, uefi_dev_info_t* dev_info)
-{
-       uefi_dev_extra_t dev_extra;
-       memset(&dev_extra, 0, sizeof(dev_extra));
-       dev_extra.fw_cmd_func = fw_cmd_func;
-       dev_extra.dev_info = dev_info;
-    return mlxfw_open_int(mlxfwops_p, dev, (void*)&dev_extra, (char*)NULL, FHT_UEFI_DEV, (char*)NULL, 0);
-}
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_set_print(mlxfwops_t* mlxfwops, f_prog_func_str print_func)
-{
-    if (mlxfwops == NULL) {
-        return MLXFW_BAD_PARAM_ERR;
-    }
-    return !static_cast<FwOperations*>((void*)mlxfwops)->FwSetPrint(print_func);
-}
-
-MLXFWOP_API const char* MLXFWOPCALL mlxfw_err2str(int err)
-{
-    switch (err) {
-    case 0:
-        return "";
-    case MLXFW_ERR:
-        return "General Error";
-    case MLXFW_MEM_ERR:
-        return "Memory allocation Error";
-    case MLXFW_ERR_IN_STR:
-        return "Error in String";
-    case MLXFW_PSID_MISSMATCH_ERR:
-        return "PSID Mismatch";
-    case MLXFW_FLASH_WRITE_ERR:
-        return "Flash write Failed";
-    case MLXFW_NO_VALID_IMAGE_ERR:
-        return "No valid image found";
-    case MLXFW_MULTIPLE_VALID_IMAGES_ERR:
-        return "More than one valid image found";
-    case MLXFW_BAD_CRC_ERR:
-        return "Bad CRC";
-    case MLXFW_BAD_CHECKSUM_ERR:
-        return "Bad Checksum";
-    case MLXFW_SECTION_TOO_LARGE_ERR:
-        return "Section too large";
-    case MLXFW_SECTION_CORRUPTED_ERR:
-        return "Section is corrupted";
-    case MLXFW_IMAGE_NOT_FS_ERR:
-        return "Image is not failsafe";
-    case MLXFW_IMAGE_TOO_LARGE_ERR:
-        return "Image too large";
-    case MLXFW_IMAGE_FORMAT_ERR:
-        return "Incompatible image format";
-    case MLXFW_DEVICE_IMAGE_MISSMATCH_ERR:
-        return "FW image does not match device";
-    case MLXFW_IMAGE_CORRUPTED_ERR:
-        return "FW image corrupted";
-    case MLXFW_FS_INFO_MISSMATCH_ERR:
-        return "Failsafe information mismatch";
-    case MLXFW_DEV_ID_ERR:
-        return "Unsupported device ID";
-    case MLXFW_UNSUPPORTED_BIN_VER_ERR:
-        return "Unsupported binary version";
-    case MLXFW_NO_VALID_ITOC_ERR:
-        return "No valid ITOC found";
-    case MLXFW_NO_MFG_ERR:
-        return "No MFG_INFO section found";
-    case MLXFW_UNKNOWN_SECT_VER_ERR:
-        return "Unknown Section Version";
-    case MLXFW_OCR_ERR:
-        return "-ocr flag must be specified";
-    case MLXFW_OPEN_OCR_ERR:
-        return "Failed to open device for flash direct access";
-    case MLXFW_FW_ALREADY_UPDATED_ERR:
-        return "FW already updated";
-    case MLXFW_ROM_UPDATE_IN_IMAGE_ERR:
-        return "Failed to update Exp-ROM in image";
-    case MLXFW_GET_SECT_ERR:
-        return "Failed to get Section";
-    case MLXFW_UPDATE_SECT_ERR:
-        return "Failed to update section";
-    case MLXFW_BAD_PARAM_ERR:
-        return "Bad parameter";
-    default:
-        return "Unknown Error";
-    }
-}
-
-#endif
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_burn(mlxfwops_t* dev_mlxfwops, mlxfwops_t* img_mlxfwops, u_int8_t force_version, f_prog_func prog_func, int allow_psid_change)
-{
-    if (dev_mlxfwops == NULL || img_mlxfwops == NULL) {
-        return MLXFW_BAD_PARAM_ERR;
-    }
-       FwOperations::ExtBurnParams burnParams = FwOperations::ExtBurnParams();
-    burnParams.ignoreVersionCheck = force_version;
-    burnParams.progressFunc = prog_func;
-    burnParams.allowPsidChange = allow_psid_change ? true : false;
-    bool rc = !static_cast<FwOperations*>((void*)dev_mlxfwops)->FwBurnAdvanced(static_cast<FwOperations*>((void*)img_mlxfwops),burnParams);
-    int errorCode = static_cast<FwOperations*>((void*)dev_mlxfwops)->getErrorCode(); // the class's verbose error code
-    return rc ? ( errorCode ? errorCode : rc) : rc;
-}
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_query(mlxfwops_t* mlxfwops, fw_info_t* fw_info)
-{
-    if (mlxfwops == NULL) {
-        return MLXFW_BAD_PARAM_ERR;
-    }
-#ifdef UEFI_BUILD
-    // skip reading ROM in UEFI due to performance issues
-    return (static_cast<FwOperations*>((void*)mlxfwops)->FwQuery(fw_info, false) == true) ? MLXFW_OK :  MLXFW_ERR_IN_STR;
-#else
-    return (static_cast<FwOperations*>((void*)mlxfwops)->FwQuery(fw_info, true) == true) ? MLXFW_OK :  MLXFW_ERR_IN_STR;
-#endif
-}
-
-MLXFWOP_API const char* MLXFWOPCALL mlxfw_exp_rom_type_to_str(u_int16_t type)
-{
-       return FwOperations::expRomType2Str(type);
-}
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_verify(mlxfwops_t* mlxfwops)
-{
-    if (mlxfwops == NULL) {
-        return MLXFW_BAD_PARAM_ERR;
-    }
-    return !static_cast<FwOperations*>((void*)mlxfwops)->FwVerify((f_prog_func_str)NULL);
-}
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_read_image(mlxfwops_t* mlxfwops, void* image, u_int32_t* image_size)
-{
-    if (mlxfwops == NULL) {
-        return MLXFW_BAD_PARAM_ERR;
-    }
-    return !(static_cast<FwOperations*>((void*)mlxfwops)->FwReadData(image, image_size));
-}
-
-MLXFWOP_API void MLXFWOPCALL mlxfw_close(mlxfwops_t* mlxfwops)
-{
-    if (mlxfwops) {
-        static_cast<FwOperations*>((void*)mlxfwops)->FwCleanUp();
-        delete static_cast<FwOperations*>((void*)mlxfwops);
-        mlxfwops = (mlxfwops_t*)NULL;
-    }
-    return;
-}
-
-MLXFWOP_API const char* MLXFWOPCALL mlxfw_get_last_error(mlxfwops_t* mlxfwops)
-{
-    if (mlxfwops == NULL) {
-        return "Cannot get last error - No mlxfwops handle";
-    }
-    return (static_cast<FwOperations*>((void*)mlxfwops)->err());
-}
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_get_last_error_code(mlxfwops_t* mlxfwops)
-{
-    if (mlxfwops == NULL) {
-        return MLXFW_BAD_PARAM_ERR;
-    }
-    return (static_cast<FwOperations*>((void*)mlxfwops)->getErrorCode());
-}
diff --git a/mlxfwops/lib/mlxfwops.h b/mlxfwops/lib/mlxfwops.h
deleted file mode 100755 (executable)
index 1da17f2..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#ifndef MLXFWOP_H
-#define MLXFWOP_H
-
-#include <stdio.h>
-#include "mlxfwops_com.h"
-
-//#include ".h"
-// struct FwOperations;
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct mlxfwops mlxfwops_t;
-
-struct image_context {
-    void * data;
-    u_int32_t size;
-};
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_device(mlxfwops_t** mlxfwops_p, char *device_name);
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_device_verbose(mlxfwops_t** mlxfwops_p, char *device_name, char* buf, int buf_size);
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_image(mlxfwops_t** mlxfwops_p, char *file_name, char *psid);
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_buffer(mlxfwops_t** mlxfwops_p, void* buffer, u_int32_t size, char *psid);
-
-#ifdef CABLES_SUPP
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_cable(mlxfwops_t** mlxfwops_p, char *handle_name, int port);
-#endif
-
-#ifdef UEFI_BUILD
-#include <mft_uefi_common.h>
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_open_uefi(mlxfwops_t** mlxfwops_p, uefi_Dev_t* dev, f_fw_cmd fw_cmd_func, uefi_dev_info_t* dev_info);
-MLXFWOP_API int MLXFWOPCALL mlxfw_set_print(mlxfwops_t* mlxfwops, f_prog_func_str print_func);
-MLXFWOP_API const char* MLXFWOPCALL mlxfw_err2str(int err);
-
-#endif
-
-MLXFWOP_API const char* MLXFWOPCALL mlxfw_get_last_error(mlxfwops_t* mlxfwops);
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_get_last_error_code(mlxfwops_t* mlxfwops);
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_burn(mlxfwops_t* dev_mlxfwops, mlxfwops_t* img_mlxfwops, u_int8_t force_version, f_prog_func prog_func, int allow_psid_change);
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_read_image(mlxfwops_t* mlxfwops, void* image, u_int32_t* image_size);
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_verify(mlxfwops_t* mlxfwops);
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_query(mlxfwops_t* mlxfwops, fw_info_t* fw_query);
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_type_match(mlxfwops_t* dev_mlxfwops, mlxfwops_t* img_mlxfwops);
-
-MLXFWOP_API const char* MLXFWOPCALL mlxfw_exp_rom_type_to_str(u_int16_t type);
-
-MLXFWOP_API void MLXFWOPCALL mlxfw_close(mlxfwops_t* mlxfwops);
-
-MLXFWOP_API int MLXFWOPCALL mlxfw_test(mlxfwops_t* mlxfwops, u_int32_t *read_data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mlxfwops/lib/mlxfwops_com.h b/mlxfwops/lib/mlxfwops_com.h
deleted file mode 100644 (file)
index 0935904..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#ifndef MLXFWOP_COM_H
-#define MLXFWOP_COM_H
-
-#include <compatibility.h>
-
-#ifdef UEFI_BUILD
-#include <mft_uefi_common.h>
-#endif
-
-#ifdef __WIN__
-
-#ifdef MLXFWOP_EXPORTS
-#define MLXFWOP_API __declspec(dllexport)
-#else
-#define MLXFWOP_API __declspec(dllimport)
-#endif
-#define MLXFWOPCALL __cdecl
-
-#else
-#define MLXFWOP_API
-#define MLXFWOPCALL
-#endif
-
-#ifndef UEFI_BUILD
-    #define EFIAPI
-#endif
-
-typedef int EFIAPI (*f_prog_func) (int completion);
-typedef int (*f_prog_func_str) (char* str);
-
-#define VSD_LEN  208
-#define PSID_LEN 16
-#define PRODUCT_VER_LEN 16
-#define PRS_NAME_LEN 100
-#define FS3_PRS_NAME_LEN 97
-#define FS4_PRS_NAME_LEN 97
-#define NAME_LEN 65
-#define DESCRIPTION_LEN 257
-
-#define FREE_STR_MAX_LEN    256
-
-#define MAX_ROMS_NUM        5
-#define MAX_ROM_ERR_MSG_LEN 256
-#define ROM_INFO_SIZE       12
-
-//min version that supports Rom Modify
-#define MAJOR_MOD_ROM_FW    2
-#define MINOR_MOD_ROM_FW    6
-#define SUBMINOR_MOD_ROM_FW 1410
-
-//Macros
-#define PRINT_PROGRESS(printFunc, arg) \
-       do {\
-           if (printFunc) {\
-               printFunc((arg));\
-           }\
-       } while(0)\
-
-enum {
-    MLXFW_OK = 0,
-    MLXFW_ERR,
-    MLXFW_MEM_ERR,
-    MLXFW_ERR_IN_STR,
-    MLXFW_PSID_MISSMATCH_ERR,
-    MLXFW_FLASH_WRITE_ERR,
-    MLXFW_NO_VALID_IMAGE_ERR,
-    MLXFW_MULTIPLE_VALID_IMAGES_ERR,
-    MLXFW_BAD_CRC_ERR,
-    MLXFW_BAD_CHECKSUM_ERR,
-    MLXFW_SECTION_TOO_LARGE_ERR,
-    MLXFW_SECTION_CORRUPTED_ERR,
-    MLXFW_IMAGE_NOT_FS_ERR,
-    MLXFW_IMAGE_TOO_LARGE_ERR,
-    MLXFW_IMAGE_FORMAT_ERR,
-    MLXFW_DEVICE_IMAGE_MISSMATCH_ERR,
-    MLXFW_IMAGE_CORRUPTED_ERR,
-    MLXFW_FS_INFO_MISSMATCH_ERR,
-    MLXFW_DEV_ID_ERR,
-    MLXFW_UNSUPPORTED_BIN_VER_ERR,
-    MLXFW_NO_VALID_ITOC_ERR,
-    MLXFW_NO_MFG_ERR,
-    MLXFW_UNKNOWN_SECT_VER_ERR,
-    MLXFW_OCR_ERR,
-    MLXFW_OPEN_OCR_ERR,
-    MLXFW_FW_ALREADY_UPDATED_ERR,
-    MLXFW_ROM_UPDATE_IN_IMAGE_ERR,
-    MLXFW_GET_SECT_ERR,
-    MLXFW_UPDATE_SECT_ERR,
-    MLXFW_BAD_PARAM_ERR,
-    MLXFW_PRS_MISSMATCH_ERR,
-    MLXFW_NO_VALID_DEVICE_INFO_ERR,
-    MLXFW_TWO_VALID_DEVICE_INFO_ERR,
-    MLXFW_DTOC_OVERWRITE_CHUNK
-};
-
-enum {
-    GUIDS         = 4,
-    MACS          = 2,
-    MAX_GUIDS     = 32
-};
-
-// needed for flint query
-enum {
-     BX_NP_GUIDS   = 2,
-     BX_SYS_GUIDS  = 1,
-     BX_GUIDS      = BX_NP_GUIDS + BX_SYS_GUIDS,
-     BX_IMACS      = 3,
-     BX_EMACS      = 4,
-     BX_MACS       = BX_EMACS + BX_IMACS,
-     BX_WWPNS      = 4,
-     BX_WWNNS      = 1,
-     BX_SLICE_GUIDS = BX_WWNNS + BX_WWPNS + BX_MACS + BX_NP_GUIDS,
-
-     BX_ALL_GUIDS  = (2 * BX_SLICE_GUIDS) + BX_SYS_GUIDS,
-     BX_SLICES_NUM = 2,
-};
-
-enum {
-      BI_IMACS    = 0,
-      BI_EMACS    = BI_IMACS + BX_IMACS,
-      BI_WWPNS    = BI_EMACS + BX_EMACS,
-      BI_GUIDS    = BI_WWPNS + BX_WWPNS,
-      BI_WWNNS    = BI_GUIDS  + BX_NP_GUIDS,
-      BI_SYS_GUID = BX_ALL_GUIDS - 1,
-};
-
-typedef enum chip_type {
-    CT_UNKNOWN = 0,
-    CT_CONNECTX,
-    CT_SWITCHX,
-    CT_IS4,
-    CT_CONNECT_IB,
-    CT_SWITCH_IB,
-    CT_SPECTRUM,
-    CT_CONNECTX4,
-    CT_CONNECTX4_LX,
-    CT_SWITCH_IB2,
-    CT_CONNECTX5,
-}chip_type_t;
-
-typedef enum chip_family_type {
-    CFT_UNKNOWN = 0,
-    CFT_HCA,
-    CFT_SWITCH,
-}chip_family_type_t;
-
-typedef struct guid {
-    u_int32_t h;
-    u_int32_t l;
-} guid_t;
-typedef guid_t hw_key_t;
-
-typedef struct fs3_uid {
-    guid_t base_guid;
-    int base_guid_specified;
-    guid_t base_mac;
-    int base_mac_specified;
-    u_int8_t num_of_guids; // set 0 for default
-    u_int8_t step_size; // set 0 for default, not relevant for devices >= CX4
-    int set_mac_from_guid;  // if set , base_mac will be derrived automatically from base guid
-    int use_pp_attr; // if set, num_of_guids[2] and step_size[2] will be used for the uid attributes.
-    u_int8_t num_of_guids_pp[2]; // set 0xff for default
-    u_int8_t step_size_pp[2]; // set 0xff for default, not relevant for devices >= CX4
-} fs3_uid_t;
-
-typedef struct fs4_uid {
-    guid_t base_guid;
-    int base_guid_specified;
-    guid_t base_mac;
-    int base_mac_specified;
-    u_int8_t num_of_guids; // set 0 for default
-    u_int8_t step_size; // set 0 for default, not relevant for devices >= CX4
-    int set_mac_from_guid;  // if set , base_mac will be derrived automatically from base guid
-    int use_pp_attr; // if set, num_of_guids[2] and step_size[2] will be used for the uid attributes.
-    u_int8_t num_of_guids_pp[2]; // set 0xff for default
-    u_int8_t step_size_pp[2]; // set 0xff for default, not relevant for devices >= CX4
-} fs4_uid_t;
-
-typedef struct rom_info {
-    u_int16_t exp_rom_product_id; // 0 - invalid.
-    u_int16_t exp_rom_ver[3];
-    u_int16_t exp_rom_dev_id;
-    u_int8_t  exp_rom_port;
-    u_int8_t  exp_rom_proto;
-    u_int8_t  exp_rom_num_ver_fields;
-    //char      expRomFreestr[FREE_STR_MAX_LEN];
-} rom_info_t;
-
-
-struct fs3_uid_entry {
-     u_int8_t num_allocated;
-     u_int8_t step; // not relevant for devices >= CX4
-     u_int64_t uid;
-};
-
-typedef struct cibfw_uids {
-    struct fs3_uid_entry guids[2];
-    struct fs3_uid_entry macs[2];
-} cib_uids_t;
-
-typedef struct cx4fw_uids {
-    struct fs3_uid_entry base_guid;
-    struct fs3_uid_entry base_mac;
-} cx4_uids_t;
-
-typedef struct uids {
-    int valid_field; // 0: cib_uids , 1: cx4_uids
-    union {
-    cib_uids_t cib_uids;
-    cx4_uids_t cx4_uids;
-    };
-} uids_t;
-
-typedef struct fs3_info_ext {
-    u_int8_t        guids_override_en;
-    uids_t          fs3_uids_info;
-    uids_t          orig_fs3_uids_info;
-    char            image_vsd[VSD_LEN+1];
-    char            orig_psid[PSID_LEN+1];
-    char            prs_name[FS3_PRS_NAME_LEN];
-    char            orig_prs_name[FS3_PRS_NAME_LEN];
-    char            name[NAME_LEN];
-    char            description[DESCRIPTION_LEN];
-
-} fs3_info_t;
-
-typedef struct fs3_info_ext fs4_info_t;
-
-typedef struct fs2_info_ext {
-    guid_t       guids[MAX_GUIDS];
-    u_int32_t    guid_num;
-    u_int32_t    config_sectors;
-    u_int32_t    config_pad;
-    u_int8_t     access_key_exists;
-    guid_t       access_key_value;
-    u_int8_t     blank_guids;
-    char         prs_name[PRS_NAME_LEN];
-} fs2_info_t;
-
-#ifdef CABLES_SUPP
-typedef struct cablefw_info_ext {
-        u_int8_t  fw_gw_revision[2];
-        u_int16_t fw_dev_id;
-        u_int32_t fw_revision;
-        u_int8_t  image_key;
-} cablefw_info_t;
-#endif
-
-typedef struct roms_info {
-    u_int8_t     exp_rom_found;
-    u_int8_t     num_of_exp_rom;
-    u_int8_t     no_rom_checksum;
-    u_int16_t    exp_rom_com_devid;
-    u_int8_t     exp_rom_warning;
-    char         exp_rom_warning_msg[MAX_ROM_ERR_MSG_LEN];
-    u_int8_t     exp_rom_err_msg_valid;
-    char         exp_rom_err_msg[MAX_ROM_ERR_MSG_LEN];
-    rom_info_t   rom_info[MAX_ROMS_NUM];
-} roms_info_t;
-
-typedef struct fw_info_com {
-    char         psid[PSID_LEN + 1];
-    u_int8_t     vsd_sect_found; // relevant to FS2 image only
-    char         vsd[VSD_LEN + 1];
-    char         product_ver[PRODUCT_VER_LEN + 1];
-    u_int16_t    fw_ver[3];
-    u_int16_t   fw_rel_date[3];
-    u_int16_t    min_fit_ver[4];
-    u_int16_t    mic_ver[3];
-    u_int32_t    image_size;
-    u_int16_t    dev_type;
-    u_int8_t     dev_rev;
-    u_int16_t    vsd_vendor_id;
-    u_int8_t     is_failsafe;
-    chip_type_t  chip_type;
-    roms_info_t  roms_info;
-    u_int16_t    running_fw_ver[3];
-} fw_info_com_t;
-
-
-typedef struct fw_info_ext {
-    u_int8_t       fw_type;
-    fw_info_com_t  fw_info;
-    fs2_info_t     fs2_info;
-    fs3_info_t     fs3_info;
-#ifdef CABLES_SUPP
-    cablefw_info_t cablefw_info;
-#endif
-    fs3_info_t    fs4_info;
-} fw_info_t;
-
-typedef enum fw_hndl_type {
-    FHT_MST_DEV,
-    FHT_FW_FILE,
-    FHT_UEFI_DEV,
-    FHT_FW_BUFF,
-    FHT_CABLE_DEV,
-} fw_hndl_type_t;
-
-
-typedef enum fw_img_type {
-    FIT_FS2,
-    FIT_FS3,
-    FIT_FC1,
-    FIT_FS4,
-} fw_img_type_t;
-
-
-enum ExpRomProto {
-    ER_IB  = 0,
-    ER_ETH = 1,
-    ER_VPI = 2
-};
-
-typedef enum fw_ver_info {
-    FVI_SMALLER = -1,
-    FVI_EQUAL = 0,
-    FVI_GREATER = 1,
-} fw_ver_info_t;
-
-#endif
diff --git a/mlxfwops/uefi_c/mft_uefi_common.h b/mlxfwops/uefi_c/mft_uefi_common.h
deleted file mode 100644 (file)
index 591180f..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *
- * mft_uefi_common.h - Mellanox Technilogies LTD. UEFI common structs header file
- * ==================================================================
- *
- * Copyright (c) 2005 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  Version: $Id: $
- *
- */
-#ifndef MFT_MLXFWOPS_UEFI_C_MFT_UEFI_COMMON_H_
-#define MFT_MLXFWOPS_UEFI_C_MFT_UEFI_COMMON_H_
-
-
-typedef struct _MLX4_DEV uefi_Dev_t;
-
-typedef int (*f_fw_cmd) (uefi_Dev_t* dev, void* buffer, int* w_size, int* r_size);
-
-typedef struct uefi_dev_info {
-       u_int32_t hw_dev_id;
-       u_int32_t rev_id;
-       u_int32_t max_buffer_size;
-} uefi_dev_info_t;
-
-typedef struct uefi_dev_extra{
-    f_fw_cmd fw_cmd_func;
-    uefi_dev_info_t* dev_info;
-}uefi_dev_extra_t;
-
-
-#endif /* MFT_MLXFWOPS_UEFI_C_MFT_UEFI_COMMON_H_ */
diff --git a/mstdump/Makefile.am b/mstdump/Makefile.am
deleted file mode 100644 (file)
index 493685f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-
-SUBDIRS = crd_lib crd_main mstdump_dbs
-
diff --git a/mstdump/crd_lib/Makefile.am b/mstdump/crd_lib/Makefile.am
deleted file mode 100755 (executable)
index c884184..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-
-
-AM_CPPFLAGS =  -I$(top_srcdir) -I$(top_srcdir)/include/mtcr_ul -I$(top_srcdir)/common
-AM_CFLAGS = -Wall -W -g -MP -MD -pipe -Wno-unused-function  $(COMPILER_FPIC) -DMTCR_EXPORT -DMST_UL -DDATA_PATH=\"$(pkgdatadir)\"
-
-noinst_LIBRARIES = libcrdump.a
-
-libcrdump_a_SOURCES = crdump.c crdump.h
diff --git a/mstdump/crd_lib/crdump.c b/mstdump/crd_lib/crdump.c
deleted file mode 100755 (executable)
index 91f5acf..0000000
+++ /dev/null
@@ -1,684 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#define _GNU_SOURCE
-#include <crdump.h>
-#include <dev_mgt/tools_dev_types.h>
-#include <common/bit_slice.h>
-#include <ctype.h>
-#include <compatibility.h>
-#include <stdio.h>
-
-#define CRD_SELECT_CSV_PATH(dev_name) \
-    do {                              \
-            strcat(csv_file_path, dev_name);\
-            strcat(csv_file_path, ".csv");\
-    } while (0)
-
-
-#define CRD_CHECK_NULL(var)\
-    if (var == NULL)       \
-        do {               \
-            CRD_DEBUG("Sent %s is null!\n", #var);\
-            return CRD_INVALID_PARM;              \
-        } while(0)
-
-
-#if defined(__WIN__)
-#    define strcasecmp    _stricmp
-#    define CRD_MTCR_DLL_NAME "libmtcr-1.dll"
-#endif
-
-
-//#define CRD_DEBUG_BUILD
-#ifdef CRD_DEBUG_BUILD
-#    define CRD_DEBUG(fmt, ...)printf("%s:%s:%d: "fmt, __FILE__, __FUNCTION__, __LINE__,##__VA_ARGS__);
-#else
-#    define CRD_DEBUG(fmt, args...)
-#endif
-
-#define CRD_EMPTY  "EMPTY"
-#define CRD_UNKOWN "UNKNOWN"
-
-#define CRD_MAXLINESIZE 1024
-#define CRD_MAXFLDS 3 /* maximum possible number of fields */
-#define CRD_MAXFLDSIZE 32 /* longest possible field + 1 = 31 byte field */
-#define CRD_CSV_PATH_SIZE 1024
-
-typedef struct crd_parsed_csv {
-
-    u_int32_t addr;
-    u_int32_t len;
-    char      enable_addr[100];
-
-} crd_parsed_csv_t;
-
-
-struct crd_ctxt {
-    mfile     *mf;
-    u_int32_t dev_type;
-    u_int32_t number_of_dwords;
-    int       is_full;
-    int       cause_addr;
-    int       cause_off;
-    char      csv_path[CRD_CSV_PATH_SIZE];
-    u_int32_t block_count;
-    crd_parsed_csv_t * blocks;
-};
-
-static char crd_error[256];
-
-/*
-Store the csv file path at csv_file_path.
- */
-static int crd_get_csv_path(IN dm_dev_id_t dev_type, OUT char *csv_file_path);
-
-/*
-count number of dwords, and store all needed data from csv file at parsed_csv
- */
-static int crd_count_double_word(IN  char *csv_file_path, OUT u_int32_t *number_of_dwords,
-                                 OUT crd_parsed_csv_t blocks[], IN int is_full,
-                                 IN u_int8_t read_single_dword);
-
-/*
-Fill addresses at dword_arr
- */
-static int crd_fill_address(IN crd_ctxt_t *context, OUT crd_dword_t * dword_arr);
-
-/*
-Read a line from csv file
- */
-static int crd_read_line(IN FILE *fd, OUT char *tmp);
-
-/*
-Tokenize line for address, len, and enable_adder
- */
-
-static void crd_parse(IN  char *record, IN  char *delim, OUT char arr[][CRD_MAXFLDSIZE], OUT int *field_count);
-
-static int crd_update_csv_path(IN OUT char *csv_file_path);
-
-static int crd_count_blocks(IN char *csv_file_path, OUT u_int32_t *block_count, u_int8_t read_single_dword);
-
-#if !defined(__WIN__) && !defined(MST_UL)
-static char *crd_trim(char *s);
-
-static char *crd_rtrim(char *s);
-
-static char *crd_ltrim(char *s);
-#endif 
-
-
-#if defined(__WIN__)
-    static int crd_replace(INOUT char *st, IN char *orig, IN char *repl);
-
-    static int crd_get_exec_name_from_path(IN char *str, OUT char *exec_name);
-#endif
-
-int crd_init(OUT crd_ctxt_t **context, IN mfile *mf, IN int is_full, IN int cause_addr, IN int cause_off) {
-
-    dm_dev_id_t dev_type;
-    u_int32_t   dev_id;
-    u_int32_t   chip_rev;
-    u_int32_t   number_of_dwords = 0;
-    u_int32_t   block_count;
-    u_int8_t    read_single_dword = 0;
-    char        csv_file_path [CRD_CSV_PATH_SIZE] = {0x0};
-
-
-    int rc = CRD_OK;
-
-    CRD_CHECK_NULL(mf);
-    CRD_CHECK_NULL(context);
-
-    if (cause_addr >= 0 && cause_off < 0) {
-        CRD_DEBUG("cause_off is negative : %d ", cause_off);
-        return CRD_INVALID_PARM;
-    }
-
-    if (cause_addr >= 0 && cause_off >= 0) {
-        read_single_dword = 1;
-    }
-    CRD_DEBUG("getting device id\n");
-    if (dm_get_device_id(mf, &dev_type, &dev_id, &chip_rev)) {
-        CRD_DEBUG("Failed to identify device.");
-        return CRD_UNKOWN_DEVICE;
-    }
-
-    CRD_DEBUG("Device type : 0x%x, device id : 0x%x, chip rev : 0x%x\n", dev_type, dev_id, chip_rev);
-    if ((rc = crd_get_csv_path(dev_type, csv_file_path)) != CRD_OK) {
-        return rc;
-    }
-
-
-    CRD_DEBUG("allocating struct\n");
-    *context = (crd_ctxt_t*)malloc(sizeof(crd_ctxt_t));
-    if (*context == NULL) {
-        CRD_DEBUG("Failed to allocate memmory for context \n");
-        return CRD_MEM_ALLOCATION_ERR;
-    }
-
-    rc = crd_count_blocks(csv_file_path, &block_count, read_single_dword);
-    if (rc) {
-        free(*context);
-        return rc;
-    }
-
-    CRD_DEBUG("Block count : %d\n", block_count);
-    (*context)->blocks = (crd_parsed_csv_t *) malloc(sizeof(crd_parsed_csv_t) * block_count);
-    if ((*context)->blocks == NULL) {
-        CRD_DEBUG("Failed to allocate memmory for csv blocks\n");
-        free(*context);
-        return CRD_MEM_ALLOCATION_ERR;
-    }
-
-
-    rc = crd_count_double_word(csv_file_path, &number_of_dwords, (*context)->blocks, is_full, read_single_dword);
-    if (rc) {
-        goto Cleanup;
-    }
-
-    CRD_DEBUG("Number of found dwords are : %d \n", number_of_dwords);
-    (*context)->mf               = mf;
-    (*context)->dev_type         = dev_type;
-    (*context)->number_of_dwords = number_of_dwords;
-    (*context)->is_full          = is_full;
-    (*context)->block_count      = block_count;
-    (*context)->cause_addr       = cause_addr;
-    (*context)->cause_off        = cause_off;
-    strcpy((*context)->csv_path, csv_file_path);
-    return rc;
-
-    Cleanup:
-    crd_free(*context);
-    return rc;
-}
-
-
-int crd_get_addr_list(IN crd_ctxt_t *context, OUT crd_dword_t* dword_arr) {
-
-    int rc;
-
-    CRD_CHECK_NULL(context);
-    CRD_CHECK_NULL(dword_arr);
-
-    rc = crd_fill_address(context, dword_arr);
-    if (rc) {
-        return rc;
-    }
-
-    return CRD_OK;
-}
-
-int crd_dump_data(IN crd_ctxt_t *context, OUT crd_dword_t* dword_arr, IN crd_callback_t func) {
-
-    u_int32_t i = 0;
-    u_int32_t j = 0;
-    u_int32_t rc;
-    u_int32_t addr;
-    u_int32_t cause_reg;
-
-    int total = 0;
-    char *data;
-    crd_dword_t tmp_dword;
-
-    CRD_CHECK_NULL(context);
-
-    if (dword_arr == NULL && func == NULL) {
-        CRD_DEBUG("Nothing to do\n");
-        return CRD_INVALID_PARM;
-    }
-
-    for(i = 0; i< context->block_count; i++) {
-        if(!context->is_full && strcmp(context->blocks[i].enable_addr, CRD_EMPTY)) {
-            continue;
-        }
-
-        data = (char*) malloc (context->blocks[i].len * sizeof(u_int32_t));
-        if (data == NULL) {
-            return CRD_MEM_ALLOCATION_ERR;
-        }
-
-        rc = mread4_block (context->mf, context->blocks[i].addr, (u_int32_t *)data, context->blocks[i].len * sizeof(u_int32_t));
-        if (context->blocks[i].len * sizeof(u_int32_t) != rc) {
-            sprintf(crd_error, "Cr read (0x%08x) failed: %s(%d)", context->blocks[i].addr, strerror(errno), (u_int32_t)errno);
-            free(data);
-            return CRD_CR_READ_ERR;
-        }
-
-        for (j = 0; j< context->blocks[i].len; j++) {
-            if ((u_int32_t)total >= context->number_of_dwords) { // dummy check tadah!
-                CRD_DEBUG("value exceeded, something wrong in calculation!");
-                return CRD_EXCEED_VALUE;
-            }
-            addr =  context->blocks[i].addr + (j * sizeof(u_int32_t));
-
-            if (context->cause_addr >= 0) {  /* if we want to check cause bit - read it and verify it hasn't been raised */
-                if (mread4(context->mf, context->cause_addr, &cause_reg) != sizeof(u_int32_t)) {
-                    CRD_DEBUG("Cr read (0x%08x) failed: %s(%d)\n", context->cause_addr, strerror(errno), (u_int32_t)errno);
-                    sprintf(crd_error, "Cr read (0x%08x) failed: %s(%d)", context->cause_addr, strerror(errno), (u_int32_t)errno);
-                    free(data);
-                    return CRD_CR_READ_ERR;
-                }
-                cause_reg = EXTRACT(cause_reg, context->cause_off, 1);
-                if (cause_reg) {
-                    CRD_DEBUG("Cause bit set by read from address 0x%x\n", addr);
-                    sprintf(crd_error, "Cause bit set by read from address 0x%x", addr);
-                    free(data);
-                    return CRD_CAUSE_BIT;
-                }
-            }
-
-            if(dword_arr != NULL) {
-                dword_arr[total].addr = addr;
-                dword_arr[total].data = ((u_int32_t*)data)[j];
-            }
-            if (func != NULL) {
-                tmp_dword.addr = addr;
-                tmp_dword.data = ((u_int32_t*)data)[j];
-                func(&tmp_dword);
-            }
-            total += 1;
-        }
-        free(data);
-    }
-    return CRD_OK;
-}
-
-int crd_get_dword_num(IN crd_ctxt_t *context, OUT u_int32_t *arr_size) {
-
-    CRD_CHECK_NULL(context);
-    *arr_size = context->number_of_dwords;
-    return CRD_OK;
-}
-
-
-static int crd_get_csv_path(IN dm_dev_id_t dev_type, OUT char *csv_file_path) {
-
-    const int dev_name_len = 100;
-    char dev_name[100] = {0};
-    int  rc;
-
-    strncpy(dev_name, dm_dev_type2str(dev_type), dev_name_len - 1);
-
-    if (!strcmp(dev_name, "Unknown Device")) {
-        return CRD_UNKOWN_DEVICE;
-    }
-
-    rc = crd_update_csv_path(csv_file_path);
-    if (rc != CRD_OK) {
-        return rc;
-    }
-    CRD_SELECT_CSV_PATH(dev_name);
-    return CRD_OK;
-}
-
-static void crd_parse(IN  char *record, IN  char *delim, OUT char arr[][CRD_MAXFLDSIZE],
-                      OUT int *field_count) {
-
-    char *p = strtok(record, delim);
-    int field = 0;
-    strcpy(arr[0],"\0");
-    strcpy(arr[1],"\0");
-    strcpy(arr[2],"\0");
-    while(p) {
-        strcpy(arr[field], p);
-        field++;
-        p = strtok(NULL, delim);
-    }
-    *field_count = field;
-}
-
-static int crd_count_blocks(IN char *csv_file_path,
-                            OUT u_int32_t *block_count, u_int8_t read_single_dword) {
-
-    char tmp[1024] = {0x0};
-    char arr[CRD_MAXFLDS][CRD_MAXFLDSIZE] ;
-    int field_count = 0;
-    *block_count = 0;
-
-    CRD_DEBUG("CSV file path : %s\n", csv_file_path);
-    FILE * fd = fopen(csv_file_path, "r");
-    if (fd == NULL) {
-        CRD_DEBUG("Failed to open csv file : '%s'\n", csv_file_path);
-        sprintf(crd_error, "Failed to open csv file : '%s'", csv_file_path);
-        return CRD_OPEN_FILE_ERROR;
-    }
-    while(!feof(fd)) {
-        if (crd_read_line(fd, tmp) == CRD_SKIP) {
-            continue;
-        }
-        crd_parse(tmp, ",", arr, &field_count); /* whack record into fields */
-        if (field_count < 2 ) {
-            CRD_DEBUG("CSV File has bad format, line : %s\n", tmp);
-            sprintf(crd_error, "CSV File has bad format, line : %s", tmp);
-            fclose(fd);
-            return CRD_CSV_BAD_FORMAT;
-        }
-        if (read_single_dword) {
-            *block_count += atoi(arr[1]);
-        } else {
-            *block_count += 1;
-        }
-    }
-    fclose(fd);
-    return CRD_OK;
-}
-
-static int crd_count_double_word(IN char *csv_file_path, OUT u_int32_t *number_of_dwords,
-                                 OUT crd_parsed_csv_t blocks[], IN int is_full,
-                                 IN u_int8_t read_single_dword) {
-
-    int field_count       = 0;
-    int block_count       = 0;
-    u_int32_t addr        = 0;
-    u_int32_t len         = 0;
-    u_int32_t i           = 0;
-    char enable_addr[100] = {0};
-    char tmp[1024]  = {0x0};
-    char arr[CRD_MAXFLDS][CRD_MAXFLDSIZE] ;
-
-    *number_of_dwords = 0;
-
-    CRD_DEBUG("CSV file path : %s\n", csv_file_path);
-    FILE * fd = fopen(csv_file_path, "r");
-    if (fd == NULL) {
-        CRD_DEBUG("Failed to open csv file : '%s'\n", csv_file_path);
-        sprintf(crd_error, "Failed to open csv file : '%s'", csv_file_path);
-        return CRD_OPEN_FILE_ERROR;
-    }
-
-    while(!feof(fd)) {
-        if (crd_read_line(fd, tmp) == CRD_SKIP) {
-            continue;
-        }
-        crd_parse(tmp, ",", arr, &field_count); /* whack record into fields */
-        if (field_count < 2 ) {
-            CRD_DEBUG("CSV File has bad format, line : %s\n", tmp);
-            sprintf(crd_error, "CSV File has bad format, line : %s", tmp);
-            fclose(fd);
-            return CRD_CSV_BAD_FORMAT;
-        }
-        addr = (u_int32_t)strtol(arr[0], NULL, 0);
-        len  = atoi(arr[1]);
-        if (!read_single_dword) {
-            blocks[block_count].addr = addr;
-            blocks[block_count].len  = len;
-            if (field_count > 2) {
-                strcpy(blocks[block_count].enable_addr, arr[2]);
-                if(is_full || (!is_full && !strcmp(blocks[block_count].enable_addr, CRD_EMPTY))) {
-                    *number_of_dwords += len;
-                }
-            }
-            else {
-                strcpy(blocks[block_count].enable_addr, CRD_EMPTY);
-                *number_of_dwords += len;
-            }
-            block_count += 1;
-        } else {
-            if (field_count > 2) {
-                strcpy(enable_addr, arr[2]);
-            } else {
-                strcpy(enable_addr, CRD_EMPTY);
-            }
-            if(is_full || (!is_full && !strcmp(enable_addr, CRD_EMPTY))) {
-                *number_of_dwords += len;
-            }
-            for (i = 0; i < len; i++) {
-                blocks[block_count].addr = addr;
-                blocks[block_count].len  = 1;
-                strcpy(blocks[block_count].enable_addr, enable_addr);
-                block_count += 1;
-                addr += 4;
-            }
-        }
-    }
-    fclose(fd);
-    return CRD_OK;
-}
-
-static int crd_fill_address(IN crd_ctxt_t *context, OUT crd_dword_t * dword_arr) {
-    u_int32_t i = 0;
-    u_int32_t j = 0;
-    int total = 0;
-
-    for(i = 0; i< context->block_count; i++) {
-        for(j = 0; j< context->blocks[i].len; j++) {
-
-            //CRD_UNKOWN, CRD_EMPTY
-            if(!context->is_full && strcmp(context->blocks[i].enable_addr, CRD_EMPTY)) {
-                break;
-            }
-            if ((u_int32_t)total >= context->number_of_dwords) {
-                CRD_DEBUG("value exceeded, something wrong in calculation!");
-                return CRD_EXCEED_VALUE;
-            }
-            dword_arr[total].addr = context->blocks[i].addr + (j * 4);
-            total += 1;
-        }
-    }
-    return CRD_OK;
-}
-
-static int crd_read_line(IN FILE *fd, OUT char *tmp) {
-
-    int i = 0;
-    int j = 0;
-    for (i = 0; i < CRD_MAXLINESIZE;) { // This loop to read line by line no matter the length of the line.
-        if (!feof(fd)) {
-            int c = fgetc(fd);
-            if (c == '#') {
-                if (!fgets (tmp, 300, fd)) { // Avoid warning
-                }
-                tmp[0] = 0;
-                continue;
-            }
-            else if (c == '\r') {
-                break;
-            }
-            else if (c == '\n') {
-                break;
-            }
-            else if (c == ' ') {
-                continue;
-            }
-            else {
-                j++;
-                tmp[i] = c;
-                i++;
-            }
-        }
-        else {
-            return CRD_SKIP;
-        }
-    }
-    if (!j) {
-        return CRD_SKIP;
-    }
-    tmp[i] = 0;
-    return CRD_OK;
-}
-
-#if defined(__WIN__)
-
-static int crd_replace(INOUT char *st, IN char *orig, IN char *repl) {
-  char buffer[CRD_CSV_PATH_SIZE] = {0x0};
-    char *ch;
-
-    if (!(ch = strstr(st, orig))) {
-        return CRD_OK;
-    }
-    strncpy(buffer, st, ch-st);
-    buffer[ch-st] = 0;
-    sprintf(buffer+(ch-st), "%s%s", repl, ch+strlen(orig));
-    strcpy(st, buffer);
-
-    return CRD_OK;
-}
-
-static int crd_get_exec_name_from_path(IN char *str, OUT char *exec_name) {
-    char tmp_str[strlen(str) + 1];
-    char * pch;
-    strcpy(tmp_str, str);
-    pch = strtok (tmp_str,"\\");
-    while (pch != NULL) {
-        strcpy(exec_name, pch);
-        pch = strtok (NULL, "\\");
-    }
-    return CRD_OK;
-}
-#endif 
-
-
-#if !defined(__WIN__) && !defined(MST_UL)
-static char *crd_ltrim(char *s) {
-    while(isspace(*s)){
-        s++;
-    }
-    return s;
-}
-
-static char *crd_rtrim(char *s) {
-    char* back;
-    int len = strlen(s);
-
-    if(len == 0) {
-        return(s);
-    }
-    back = s + len;
-    while(isspace(*--back));
-    *(back+1) = '\0';
-    return s;
-       }
-
-static char *crd_trim(char *s){
-    return crd_rtrim(crd_ltrim(s));
-}
-#endif 
-
-static int crd_update_csv_path(IN OUT char *csv_file_path) {
-
-    int       found  = 0;
-#ifdef __WIN__
-    char exec_name[CRD_CSV_PATH_SIZE];
-    GetModuleFileName(GetModuleHandle(CRD_MTCR_DLL_NAME), csv_file_path, CRD_CSV_PATH_SIZE);
-    crd_get_exec_name_from_path(csv_file_path, exec_name);
-    crd_replace(csv_file_path, exec_name, "mstdump_dbs\\");
-    found = 1;
-
-#elif defined MST_UL
-    strcat(csv_file_path, DATA_PATH "/");
-    found = 1;
-
-#else
-    char      conf_path[256] = ROOT_PATH;
-    char      data_path[CRD_CSV_PATH_SIZE] = {0x0};
-    char      prefix[CRD_CSV_PATH_SIZE] = {0x0};
-    char      * tmp_value = NULL;
-    char      line[CRD_MAXLINESIZE] = {0};
-    FILE      *fd;
-    strcat(conf_path, "etc/mft/mft.conf");
-    fd = fopen(conf_path, "r");
-    if (fd == NULL) {
-        CRD_DEBUG("Failed to open conf file : %s\n", conf_path);
-        sprintf(crd_error, "Failed to open conf file : %s", conf_path);
-        return CRD_OPEN_FILE_ERROR;
-    }
-
-    while ((fgets(line, CRD_MAXLINESIZE, fd))) {
-        if(strstr(line, "mstdump_dbs") != NULL) {
-            tmp_value = strtok(line, "=");
-            if (tmp_value != NULL) {
-                tmp_value = strtok(NULL, "=");
-                crd_trim(tmp_value);
-                strncpy(data_path, tmp_value, CRD_CSV_PATH_SIZE - 1);
-            }
-        } else if(strstr(line, "mft_prefix_location") != NULL) {
-            tmp_value = strtok(line, "=");
-            if (tmp_value != NULL) {
-                tmp_value = strtok(NULL, "=");
-                crd_trim(tmp_value);
-                strncpy(prefix, tmp_value, CRD_CSV_PATH_SIZE - 1);
-            }
-        }
-    }
-    if (strlen(prefix) && strlen(data_path)) {
-        strcpy(csv_file_path, prefix);
-        strcat(csv_file_path, data_path);
-        strcat(csv_file_path, "/");
-        found = 1;
-    }
-
-    fclose(fd);
-#endif
-    if (!found) {
-        return CRD_CONF_BAD_FORMAT;
-    }
-    return CRD_OK;
-}
-
-void crd_free(IN crd_ctxt_t *context) {
-    free(context->blocks);
-    free(context);
-}
-
-
-const char* crd_err_str(int rc) {
-    switch (rc) {
-        case CRD_OK:
-            return "Ok";
-        case CRD_MEM_ALLOCATION_ERR:
-            return "Memory allocation error";
-        case CRD_CR_READ_ERR:
-            return crd_error;
-        case CRD_INVALID_PARM:
-            return "Invalid parameter";
-        case CRD_UNKOWN_DEVICE:
-            return "Unknown/Unsupported device";
-        case CRD_CSV_BAD_FORMAT:
-            return crd_error;
-        case CRD_CONF_BAD_FORMAT:
-            return "Conf file has no valid mstdumb_db path.";
-        case CRD_OPEN_FILE_ERROR:
-            return crd_error;
-        case CRD_SKIP:
-            return "Skip";
-        case CRD_NOT_SUPPORTED:
-            return "Not supported";
-        case CRD_EXCEED_VALUE:
-            return "Value exceed";
-        case CRD_CAUSE_BIT:
-            return crd_error;
-        default:
-            return "Unknown error";
-    }
-}
diff --git a/mstdump/crd_lib/crdump.h b/mstdump/crd_lib/crdump.h
deleted file mode 100644 (file)
index 49acd9c..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef _CRDUMP_H_
-#define _CRDUMP_H_
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <mtcr.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-enum crd_return_code {
-    CRD_OK = 0,
-    CRD_MEM_ALLOCATION_ERR,
-    CRD_CR_READ_ERR,
-    CRD_INVALID_PARM,
-    CRD_UNKOWN_DEVICE,
-    CRD_CSV_BAD_FORMAT,
-    CRD_CONF_BAD_FORMAT,
-    CRD_OPEN_FILE_ERROR,
-    CRD_SKIP,
-    CRD_NOT_SUPPORTED,
-    CRD_EXCEED_VALUE,
-    CRD_CAUSE_BIT,
-};
-
-
-typedef struct crd_ctxt crd_ctxt_t;
-
-typedef struct crd_dword {
-    u_int32_t addr;
-    u_int32_t data;
-} crd_dword_t;
-
-
-typedef void (*crd_callback_t) (crd_dword_t *); // call back
-
-
-#ifndef IN
-#define IN
-#endif
-
-#ifndef OUT
-#define OUT
-#endif
-
-#ifndef INOUT
-#define INOUT
-#endif
-
-/*
-
-Must be called before others methods to allocat memory and store all needed configuration
-
- */
-int crd_init(OUT crd_ctxt_t **context, IN mfile *mf, IN int is_full, IN int cause, IN int cause_off); // fill device type, and number of dewords according to the is_full
-
-/*
-Store cr space length at arr_size
- */
-int crd_get_dword_num(IN crd_ctxt_t *context, OUT u_int32_t *arr_size);
-
-
-/*
-Store all addresses are dword_arr array
- */
-int crd_get_addr_list(IN crd_ctxt_t *context, OUT crd_dword_t* dword_arr); // caller well allocate the array and addresses will be filled.
-
-/*
-Store all addresses and data in dword_arr, if func is not null, it will be called on each dword
- */
-int crd_dump_data(IN crd_ctxt_t *context, OUT crd_dword_t* dword_arr, IN crd_callback_t func);// values will be filled.
-
-/*
-Return string representation of the error code
- */
-const char* crd_err_str(int rc);
-
-/*
-Free context
- */
-void crd_free(IN crd_ctxt_t *context);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _CRDUMP_H_
diff --git a/mstdump/crd_main/Makefile.am b/mstdump/crd_main/Makefile.am
deleted file mode 100755 (executable)
index 89d2778..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir)/../crd_lib -I$(top_srcdir)/include/mtcr_ul
-AM_CFLAGS = -MD -pipe -g -Wall -W
-
-bin_PROGRAMS = mstregdump
-
-mstregdump_SOURCES = mstdump.c
-mstregdump_LDADD = ../crd_lib/libcrdump.a ../../dev_mgt/libdev_mgt.a ../../reg_access/libreg_access.a ../../tools_layouts/libtools_layouts.a \
-                       ../../mtcr_ul/libmtcr_ul.a  -lm -ldl
-
-mstregdump_CFLAGS = -DMSTDUMP_NAME=\"mstregdump\" -DDEV_EXAMPLE=\"0b:00.0\"
-
diff --git a/mstdump/crd_main/mstdump.c b/mstdump/crd_main/mstdump.c
deleted file mode 100755 (executable)
index 01c894b..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <crdump.h>
-#include <dev_mgt/tools_dev_types.h>
-#include <common/tools_version.h>
-#include <common/bit_slice.h>
-
-
-#define CAUSE_FLAG "--cause"
-#define MAX_DEV_LEN 512
-
-#ifndef MSTDUMP_NAME
-#define MSTDUMP_NAME "mstdump"
-#endif
-
-#ifndef DEV_EXAMPLE
-#define DEV_EXAMPLE "/dev/mst/mt4099_pci_cr0"
-#endif
-
-
-// string explaining the cmd-line structure
-char correct_cmdline[] = "   Mellanox "MSTDUMP_NAME" utility, dumps device internal configuration data\n\
-   Usage: "MSTDUMP_NAME" [-full] <device> [i2c-slave] [-v[ersion] [-h[elp]]]\n\n\
-   -full              :  Dump more expanded list of addresses\n\
-                         Note : be careful when using this flag, None safe addresses might be read.\n\
-   -v                 :  Display version info\n\
-   -h                 :  Print this help message\n\
-   Example :\n\
-            "MSTDUMP_NAME" "DEV_EXAMPLE"\n";
-
-
-void print_dword(crd_dword_t *dword) {
-    printf("0x%8.8x 0x%8.8x\n", dword->addr, dword->data);
-}
-
-int main(int argc, char* argv[]) {
-    int i ;
-    mfile *mf;
-    int rc;
-    int full = 0;
-    int cause_addr = -1, cause_off = -1;
-    crd_ctxt_t *context;
-    u_int32_t arr_size = 0;
-    char *endptr;
-    u_int8_t new_i2c_slave = 0;
-    char device[MAX_DEV_LEN] = {0};
-#if defined(linux)
-    if (geteuid() != 0) {
-        printf("Permission denied, you need to run this tool as root\n");
-        return 1;
-    }
-#endif
-
-    if (argc < 2 || argc > 4) {
-        fprintf(stderr, "%s", correct_cmdline);
-        return 2;
-    }
-
-    for (i = 1; i < argc; ++i) {
-        /* check position-independent flags */
-        if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "-help")) {
-            fprintf(stdout, "%s", correct_cmdline);
-            exit (0);
-        }
-        else if (!strcmp(argv[i], "-v") || !strcmp(argv[i], "-version")) {
-            print_version_string("mstdump", "");
-            exit(0);
-        }
-        else if (!strncmp(argv[i], CAUSE_FLAG, strlen(CAUSE_FLAG))) {
-            if (sscanf(argv[i], CAUSE_FLAG"=%i.%d", &cause_addr, &cause_off) != 2) {
-                fprintf(stderr, "Invalid parameters to " CAUSE_FLAG " flag\n");
-                exit(1);
-            }
-            if (cause_addr < 0 || cause_off < 0) {
-                fprintf(stderr, "Parameters to " CAUSE_FLAG " flag must be non-negative values\n");
-                exit(1);
-            }
-        }
-    }
-
-    i = 1;  // i points to the current command line argument
-
-    if (i < argc && !strcasecmp(argv[i], "-full")) {
-        full = 1;
-        ++i;
-    }
-    if (i >= argc) {
-        fprintf(stderr, "Device is not specified in command line. Exiting.\n");
-        return 1;
-    }
-    strncpy(device, argv[i], MAX_DEV_LEN -1);
-    if (!( mf = mopen_adv((const char *)device, (MType)(MST_DEFAULT | MST_CABLE)))) {
-        fprintf(stderr, "Unable to open device %s. Exiting.\n", argv[i]);
-        return 1;
-    }
-    ++i;    // move past the device parameter
-
-#ifndef MST_UL
-    if (mf->tp == MST_MLNXOS) {
-        mset_cr_access(mf, 1);
-    }
-#endif
-
-    if (i < argc && !strncmp(argv[i], CAUSE_FLAG, strlen(CAUSE_FLAG))) {
-        i++;
-    }
-    if (i < argc) {
-        new_i2c_slave = (u_int8_t)strtoul(argv[i], &endptr, 0);
-        if (*endptr || !*argv[i]) {
-            fprintf(stderr, "Invalid i2c-slave %s\n", argv[i]);
-            mclose(mf);
-            return 1;
-        }
-        mset_i2c_slave(mf, new_i2c_slave);
-        i++;
-    }
-    if (i < argc) {
-        if (i < argc) {
-            fprintf(stderr, "Unknown argument: %s.\n", argv[i]);
-            fprintf(stderr, "%s", correct_cmdline);
-            mclose(mf);
-            return 1;
-        }
-    }
-    rc = CRD_OK;
-    rc = crd_init(&context, mf, full, cause_addr, cause_off);
-    if (rc) {
-        mclose(mf);
-        goto error;
-    }
-
-    //printf("Number of blocks : 0x%d\n",(context)->block_count);
-
-    rc = crd_get_dword_num(context, &arr_size);
-    if (rc) {
-        crd_free(context);
-        mclose(mf);
-        goto error;
-    }
-
-    rc = crd_dump_data(context, NULL, print_dword);
-    if (rc) {
-        crd_free(context);
-        mclose(mf);
-        goto error;
-    }
-    crd_free(context);
-    mclose(mf);
-    return 0;
-
-    error :
-        printf("-E- %s\n", crd_err_str(rc));
-        return rc;
-}
-
diff --git a/mstdump/mstdump_dbs/ConnectIB.csv b/mstdump/mstdump_dbs/ConnectIB.csv
deleted file mode 100755 (executable)
index 7086530..0000000
+++ /dev/null
@@ -1,2270 +0,0 @@
-#Addr, Size, Enable addr
-0x000000,16385,
-0x010010,8,
-0x010104,1,
-0x01010c,4,
-0x010200,1,
-0x010210,4,
-0x010300,4,
-0x010400,3,
-0x010410,1,
-0x010444,1,
-0x01044c,4,
-0x010480,2,
-0x010500,35,
-0x010590,1,
-0x010600,32,
-0x010704,1,
-0x01070c,1,
-0x010804,2,
-0x010814,3,
-0x010824,2,
-0x010834,3,
-0x010844,2,
-0x010854,5,
-0x010a00,6,
-0x011004,1,
-0x01100c,4,
-0x011204,1,
-0x011214,4,
-0x011228,1,
-0x011244,1,
-0x011250,4,
-0x011264,1,
-0x011274,1,
-0x01127c,1,
-0x0112a4,1,
-0x011300,4,
-0x011314,1,
-0x01131c,3,
-0x011404,2,
-0x011430,20,
-0x011484,2,
-0x011498,5,
-0x0114bc,1,
-0x0114c8,1,
-0x0114d4,2,
-0x01150c,3,
-0x011524,3,
-0x011608,3,
-0x011618,4,
-0x011680,16,
-0x011704,2,
-0x011730,20,
-0x011784,3,
-0x011794,3,
-0x0117c0,6,
-0x011800,35,
-0x0118a4,1,
-0x0118ac,1,
-0x0118c4,3,
-0x0118d4,1,
-0x0118dc,2,
-0x011900,35,
-0x011b04,2,
-0x011b14,3,
-0x011b24,2,
-0x011b38,6,
-0x011b60,5,
-0x011c04,1,
-0x011cb8,18,
-0x011d98,1,
-0x011e00,1,
-0x011e08,1,
-0x011e10,1,
-0x012000,32,
-0x012200,32,
-0x012400,32,
-0x012600,32,
-0x012800,20,
-0x012888,22,
-0x012900,18,
-0x012a00,36,
-0x012b00,3,
-0x012b10,1,
-0x012b20,1,
-0x012b30,1,
-0x012b40,1,
-0x012b50,1,
-0x012b60,1,
-0x012c00,1,
-0x012c08,1,
-0x012c10,1,
-0x012c18,1,
-0x012c20,1,
-0x012c28,1,
-0x012c30,1,
-0x012c38,1,
-0x012c50,1,
-0x012c58,1,
-0x012c60,1,
-0x012c68,1,
-0x012c70,1,
-0x012c78,1,
-0x012c80,1,
-0x012c88,1,
-0x012d00,5,
-0x012d20,2,
-0x012e00,6,
-0x012e20,6,
-0x012e80,5,
-0x013000,4,
-0x013084,1,
-0x01308c,2,
-0x013180,5,
-0x01319c,5,
-0x013304,1,
-0x0133bc,52,
-0x013500,35,
-0x013604,1,
-0x01360c,1,
-0x013624,1,
-0x01362c,1,
-0x013644,1,
-0x01364c,3,
-0x013800,1,
-0x013808,2,
-0x013a04,1,
-0x013a0c,4,
-0x015000,32,
-0x015100,2,
-0x015110,3,
-0x015120,2,
-0x015144,3,
-0x015204,1,
-0x01520c,1,
-0x015224,1,
-0x01522c,1,
-0x015234,1,
-0x01523c,1,
-0x015244,1,
-0x01524c,1,
-0x015254,1,
-0x01525c,2,
-0x015270,1,
-0x015280,1,
-0x015290,1,
-0x0152a0,1,
-0x0152b0,1,
-0x0152c0,1,
-0x0152d0,1,
-0x0152e0,1,
-0x0152f0,1,
-0x015300,1,
-0x015310,1,
-0x015320,1,
-0x015330,1,
-0x016800,3,
-0x016820,8,
-0x017800,1,
-0x017818,1,
-0x017834,1,
-0x017904,4,
-0x017934,1,
-0x01794c,1,
-0x017970,2,
-0x017a00,6,
-0x017c00,6,
-0x017c20,6,
-0x017c40,6,
-0x017c60,6,
-0x017c80,6,
-0x017ca0,6,
-0x017cc0,6,
-0x017ce0,6,
-0x017d00,3,
-0x017d10,4,
-0x018400,11,
-0x018430,2,
-0x018440,4,
-0x018604,1,
-0x018618,2,
-0x018640,4,
-0x018800,1,
-0x018810,4,
-0x018c04,1,
-0x018c0c,4,
-0x01a400,7,
-0x01a420,2,
-0x01a444,1,
-0x01a44c,1,
-0x01a800,1,
-0x01a814,3,
-0x01ac04,1,
-0x01ac0c,4,
-0x01c400,7,
-0x01c500,8,
-0x01c544,1,
-0x01c554,3,
-0x01c564,3,
-0x01c574,3,
-0x01c604,1,
-0x01c60c,3,
-0x01c800,1,
-0x01c814,3,
-0x01cc04,1,
-0x01cc0c,4,
-0x01f400,1,
-0x01f408,4,
-0x01f41c,3,
-0x01f500,2,
-0x01f800,1,
-0x01f814,3,
-0x01fc04,1,
-0x01fc0c,4,
-0x020004,1,
-0x02000c,4,
-0x020080,9,
-0x021004,1,
-0x02100c,4,
-0x021400,5,
-0x021418,1,
-0x021480,1,
-0x021704,2,
-0x02173c,17,
-0x021804,1,
-0x02180c,4,
-0x021a00,2,
-0x022000,131,
-0x022220,4,
-0x022408,6,
-0x022444,1,
-0x022454,3,
-0x022504,1,
-0x02250c,4,
-0x022624,1,
-0x02262c,3,
-0x02263c,1,
-0x022804,1,
-0x02280c,4,
-0x022904,4,
-0x022924,4,
-0x024000,5,
-0x024020,1,
-0x024030,8,
-0x024058,1,
-0x024060,1,
-0x024070,9,
-0x0240a0,1,
-0x0240b0,4,
-0x024100,24,
-0x024200,5,
-0x024218,3,
-0x0243a0,6,
-0x0243bc,26,
-0x024428,3,
-0x024440,3,
-0x024464,1,
-0x02446c,1,
-0x024474,3,
-0x024484,1,
-0x02448c,4,
-0x024500,1,
-0x02450c,7,
-0x024530,1,
-0x024544,4,
-0x024560,1,
-0x024570,1,
-0x024580,4,
-0x0245a4,2,
-0x0245b4,3,
-0x0245c4,2,
-0x0245d4,3,
-0x024600,2,
-0x02460c,1,
-0x024624,3,
-0x024674,1,
-0x02467c,1,
-0x024684,1,
-0x02468c,4,
-0x024704,1,
-0x02470c,4,
-0x024780,32,
-0x024824,4,
-0x024864,6,
-0x024888,10,
-0x0248b4,3,
-0x0248c4,1,
-0x0248cc,1,
-0x0248d4,1,
-0x0248dc,7,
-0x024908,6,
-0x024928,6,
-0x024968,6,
-0x024984,3,
-0x024994,1,
-0x02499c,6,
-0x025004,6,
-0x025800,2,
-0x026000,99,
-0x028000,2,
-0x028404,1,
-0x02840c,4,
-0x028800,2,
-0x028c04,1,
-0x028c0c,4,
-0x029004,1,
-0x02900c,5,
-0x029b20,2,
-0x029b30,4,
-0x029b50,5,
-0x02a004,1,
-0x02a00c,4,
-0x02a200,1,
-0x02a210,9,
-0x02a3fc,1,
-0x02a484,16,
-0x02a504,16,
-0x02a584,16,
-0x02a604,16,
-0x02a6fc,34,
-0x02a790,4,
-0x02a7c4,1,
-0x02a7d4,11,
-0x02a900,1,
-0x02aa04,1,
-0x02aa0c,4,
-0x02ab00,40,
-0x02aba4,1,
-0x02abac,1,
-0x02abb4,1,
-0x02abbc,1,
-0x02abc4,1,
-0x02abcc,9,
-0x02ac00,2,
-0x02ac10,3,
-0x02ac44,3,
-0x02ad00,1,
-0x02ad08,1,
-0x02ad10,1,
-0x02ad18,1,
-0x02ad20,1,
-0x02ad28,1,
-0x02ad30,1,
-0x02ad38,1,
-0x02ad40,1,
-0x02ad48,1,
-0x02ad50,1,
-0x02ad58,1,
-0x02ad60,1,
-0x02ad68,1,
-0x02ad70,1,
-0x02ad78,1,
-0x02ad80,1,
-0x02ad88,1,
-0x02ad90,1,
-0x02ad98,1,
-0x02ada0,1,
-0x02ada8,1,
-0x02adb0,1,
-0x02adb8,1,
-0x02adc0,1,
-0x02adc8,1,
-0x02add0,1,
-0x02add8,1,
-0x02ade0,1,
-0x02ade8,1,
-0x02adf0,1,
-0x02adf8,1,
-0x02c000,6,
-0x02c100,5,
-0x02c204,1,
-0x02c214,3,
-0x02c224,1,
-0x02c22c,4,
-0x02c244,2,
-0x02c400,2,
-0x02c418,2,
-0x02c434,2,
-0x02c504,6,
-0x02c534,2,
-0x02c54c,1,
-0x02c570,3,
-0x02c600,6,
-0x02c620,6,
-0x02c800,3,
-0x02c820,6,
-0x02c840,6,
-0x02c860,6,
-0x02c880,6,
-0x02c8a0,6,
-0x02c8c0,6,
-0x02c8e0,6,
-0x02c900,6,
-0x02c920,6,
-0x02c940,6,
-0x02c960,6,
-0x02c980,6,
-0x02c9a0,6,
-0x02c9c0,6,
-0x02c9e0,6,
-0x02ca00,6,
-0x02ca20,6,
-0x02ca40,6,
-0x02ca60,6,
-0x02cc00,3,
-0x02cc20,9,
-0x02cc48,4,
-0x030004,2,
-0x030034,19,
-0x030084,2,
-0x0300bc,17,
-0x030104,2,
-0x030138,18,
-0x030300,6,
-0x030340,1,
-0x03034c,1,
-0x030384,1,
-0x0303c0,16,
-0x030404,1,
-0x03040c,4,
-0x030804,1,
-0x03080c,4,
-0x030c04,1,
-0x030c0c,4,
-0x030e00,1,
-0x031000,6,
-0x031100,6,
-0x031200,17,
-0x031400,6,
-0x031420,1,
-0x031444,2,
-0x031454,3,
-0x031464,2,
-0x031474,3,
-0x034104,2,
-0x034118,12,
-0x034180,2,
-0x034200,19,
-0x034254,21,
-0x0342ac,1,
-0x0342c0,6,
-0x0342f0,4,
-0x034504,2,
-0x034518,12,
-0x034580,2,
-0x034600,19,
-0x034654,21,
-0x0346ac,1,
-0x0346c0,6,
-0x0346f0,4,
-0x034800,1,
-0x034904,2,
-0x034918,12,
-0x034980,2,
-0x034c00,12,
-0x034c40,9,
-0x034c80,9,
-0x034e04,3,
-0x034e44,1,
-0x034e4c,4,
-0x034e80,5,
-0x034ea4,1,
-0x034eac,1,
-0x034f04,1,
-0x034f20,9,
-0x034f80,1,
-0x035000,2,
-0x035010,3,
-0x035044,3,
-0x035100,66,
-0x035210,3,
-0x035244,3,
-0x035300,64,
-0x037000,5,
-0x03702c,7,
-0x037080,4,
-0x037094,1,
-0x037100,2,
-0x037200,2,
-0x037210,3,
-0x037244,3,
-0x037300,69,
-0x03742c,7,
-0x037480,4,
-0x037494,1,
-0x037500,2,
-0x037600,2,
-0x037610,3,
-0x037644,3,
-0x037700,69,
-0x038000,3,
-0x038104,2,
-0x03813c,4,
-0x038400,1,
-0x038418,1,
-0x038434,1,
-0x038504,4,
-0x038534,1,
-0x03854c,1,
-0x038570,2,
-0x038600,6,
-0x038800,3,
-0x038820,6,
-0x038840,6,
-0x038860,6,
-0x038880,6,
-0x038900,20,
-0x038958,1,
-0x038980,3,
-0x0389a0,25,
-0x03c000,3,
-0x03c010,3,
-0x03c020,3,
-0x03c040,9,
-0x03c068,6,
-0x03c090,2,
-0x03c0a0,3,
-0x03c0c0,12,
-0x03c0f4,1,
-0x03c100,2,
-0x03c110,3,
-0x03c120,1,
-0x03c130,11,
-0x03c160,2,
-0x03c180,4,
-0x03c194,3,
-0x03c1a4,2,
-0x03c1b0,4,
-0x03c2e0,5,
-0x03c2f8,2,
-0x03c30c,13,
-0x03c34c,77,
-0x03c48c,18,
-0x03c500,32,
-0x03c800,16,
-0x03c84c,18,
-0x03c8e0,2,
-0x03c8ec,3,
-0x03c900,1,
-0x03c910,5,
-0x03c930,5,
-0x03c950,5,
-0x03c970,5,
-0x03c990,1,
-0x03c9a4,3,
-0x03ca78,34,
-0x03cb3c,18,
-0x03cb94,3,
-0x03cba4,3,
-0x03cbf0,1,
-0x03cbf8,10,
-0x03cc30,1,
-0x03cc44,4,
-0x03cc60,1,
-0x03cc80,1,
-0x03cc90,1,
-0x03d004,6,
-0x03e004,1,
-0x03e00c,4,
-0x03e404,1,
-0x03e40c,4,
-0x03e604,1,
-0x03e60c,4,
-0x03e800,1,
-0x03f034,19,
-0x03f084,2,
-0x03f0c0,16,
-0x03f200,1,
-0x03f210,1,
-0x03f300,6,
-0x03f320,6,
-0x03f340,3,
-0x03f360,8,
-0x050000,1,
-0x050008,2,
-0x051004,8,
-0x052004,1,
-0x052078,34,
-0x052104,1,
-0x05210c,1,
-0x052114,1,
-0x052124,1,
-0x05212c,1,
-0x052134,1,
-0x05213c,1,
-0x052144,1,
-0x05214c,1,
-0x052154,1,
-0x052160,4,
-0x05217c,17,
-0x0521c4,3,
-0x0521d4,3,
-0x0521e4,3,
-0x0521f4,1,
-0x0521fc,1,
-0x052204,1,
-0x05220c,1,
-0x052214,1,
-0x05221c,1,
-0x052234,1,
-0x05223c,2,
-0x052260,9,
-0x0522c4,3,
-0x0522d4,3,
-0x0522e4,3,
-0x0522f4,4,
-0x052310,5,
-0x052330,5,
-0x052350,4,
-0x052364,4,
-0x052380,33,
-0x052410,2,
-0x05241c,1,
-0x052424,1,
-0x05242c,23,
-0x052490,16,
-0x0524d4,1,
-0x0524dc,9,
-0x05251c,9,
-0x05255c,9,
-0x0525dc,9,
-0x052604,1,
-0x052640,33,
-0x0526d0,1,
-0x0526e4,1,
-0x0526ec,1,
-0x0526f4,1,
-0x052710,14,
-0x0527ec,1,
-0x0527fc,40,
-0x052c00,3,
-0x052c20,6,
-0x052c40,6,
-0x052c60,6,
-0x052c80,6,
-0x052ca0,6,
-0x052cc0,6,
-0x052ce0,6,
-0x052d00,6,
-0x052d20,6,
-0x052e00,32,
-0x052e84,1,
-0x052e8c,1,
-0x052e94,1,
-0x052e9c,1,
-0x052ea4,1,
-0x052eac,1,
-0x052eb4,4,
-0x052ed0,1,
-0x052ee0,1,
-0x052ef0,1,
-0x052f00,1,
-0x052f10,1,
-0x052f20,1,
-0x052f30,1,
-0x052f40,1,
-0x052f50,1,
-0x052f60,1,
-0x052f70,1,
-0x052f80,1,
-0x052f90,1,
-0x052fa0,1,
-0x052fb0,1,
-0x052fc0,1,
-0x052fd0,1,
-0x052fe0,1,
-0x052ff0,1,
-0x054004,1,
-0x05400c,4,
-0x054200,1,
-0x054210,6,
-0x054244,1,
-0x054254,11,
-0x054404,16,
-0x054484,16,
-0x054504,16,
-0x054584,16,
-0x054604,11,
-0x054680,24,
-0x054700,4,
-0x05477c,34,
-0x055000,6,
-0x055020,6,
-0x055100,13,
-0x055140,11,
-0x055400,3,
-0x055420,6,
-0x055440,6,
-0x055460,6,
-0x055480,6,
-0x0554a0,6,
-0x0554c0,6,
-0x0554e0,6,
-0x055500,6,
-0x055520,6,
-0x055540,6,
-0x055560,6,
-0x055580,6,
-0x056000,2,
-0x056404,1,
-0x05640c,4,
-0x056800,2,
-0x056c04,1,
-0x056c0c,4,
-0x057004,1,
-0x05700c,5,
-0x057b20,2,
-0x057b30,4,
-0x057b50,5,
-0x058004,1,
-0x05800c,4,
-0x058800,7,
-0x058820,6,
-0x058844,2,
-0x058850,9,
-0x058880,1,
-0x058890,1,
-0x0588a0,1,
-0x0588b0,1,
-0x0588c0,1,
-0x058904,3,
-0x058978,66,
-0x058a84,1,
-0x058a8c,1,
-0x058a94,1,
-0x058aa0,2,
-0x058ff0,4,
-0x059004,1,
-0x05900c,4,
-0x059080,39,
-0x059120,1,
-0x059130,1,
-0x059140,1,
-0x059150,1,
-0x059800,1,
-0x059810,1,
-0x059820,1,
-0x059830,1,
-0x059840,1,
-0x059850,1,
-0x059860,1,
-0x059870,1,
-0x059880,1,
-0x059890,1,
-0x0598c4,2,
-0x059900,3,
-0x059940,3,
-0x059960,40,
-0x059c00,1,
-0x059c18,1,
-0x059c34,1,
-0x059d04,4,
-0x059d34,1,
-0x059d4c,1,
-0x059d70,2,
-0x059e00,6,
-0x05a000,4,
-0x05a020,2,
-0x05a030,1,
-0x05a040,1,
-0x05a04c,2,
-0x05a080,5,
-0x05a0a0,1,
-0x05a0b0,1,
-0x05a0c0,1,
-0x060004,11,
-0x060120,4,
-0x060144,2,
-0x060154,7,
-0x060174,1,
-0x06017c,3,
-0x06018c,1,
-0x0601a0,4,
-0x0601b8,2,
-0x060204,1,
-0x06020c,4,
-0x060400,2,
-0x060420,3,
-0x060430,1,
-0x060440,1,
-0x060484,2,
-0x0604b8,18,
-0x060504,1,
-0x06050c,1,
-0x060514,1,
-0x060900,1,
-0x060914,1,
-0x06091c,2,
-0x060930,1,
-0x060a00,32,
-0x060a84,1,
-0x060a8c,1,
-0x060a94,1,
-0x060a9c,1,
-0x060bf0,3,
-0x060c00,11,
-0x060c30,3,
-0x061004,1,
-0x061010,1,
-0x061018,1,
-0x061020,2,
-0x061044,2,
-0x061054,3,
-0x061100,32,
-0x061200,1,
-0x061404,1,
-0x06140c,4,
-0x06180c,8,
-0x061904,3,
-0x061914,3,
-0x061934,3,
-0x061a00,4,
-0x062008,5,
-0x062024,3,
-0x062034,1,
-0x06203c,1,
-0x062044,1,
-0x06204c,1,
-0x062054,1,
-0x06205c,3,
-0x06206c,1,
-0x062080,2,
-0x062094,1,
-0x06209c,2,
-0x0620b0,1,
-0x0620c0,1,
-0x0620d0,1,
-0x0620e0,1,
-0x0620f4,4,
-0x062404,1,
-0x06240c,4,
-0x062800,12,
-0x062834,1,
-0x06283c,5,
-0x062854,1,
-0x062900,3,
-0x062914,1,
-0x06291c,1,
-0x062924,1,
-0x06292c,1,
-0x062934,1,
-0x06293c,2,
-0x062950,2,
-0x063000,1,
-0x063010,4,
-0x063024,1,
-0x06302c,1,
-0x063034,1,
-0x063044,1,
-0x06304c,1,
-0x063054,1,
-0x06305c,2,
-0x063070,1,
-0x063080,1,
-0x063090,1,
-0x0630a4,3,
-0x063100,2,
-0x063144,1,
-0x06314c,1,
-0x063154,1,
-0x063164,1,
-0x06316c,1,
-0x063174,1,
-0x063208,1,
-0x063210,1,
-0x063218,1,
-0x063224,3,
-0x063240,10,
-0x063300,8,
-0x064004,1,
-0x06400c,4,
-0x064200,3,
-0x064300,1,
-0x064308,6,
-0x064324,2,
-0x064338,2,
-0x064380,2,
-0x064394,1,
-0x06439c,2,
-0x064400,2,
-0x064420,3,
-0x064430,1,
-0x064440,1,
-0x064484,2,
-0x0644b8,18,
-0x064504,1,
-0x06450c,1,
-0x064514,1,
-0x064804,1,
-0x064884,2,
-0x0648c8,14,
-0x065018,2,
-0x065040,3,
-0x065060,8,
-0x065104,5,
-0x065200,3,
-0x065220,6,
-0x065240,6,
-0x065260,6,
-0x065280,6,
-0x065f00,2,
-0x066000,2,
-0x066018,2,
-0x066034,2,
-0x066104,6,
-0x066134,2,
-0x06614c,1,
-0x066170,3,
-0x066200,6,
-0x066220,6,
-0x0662c0,1,
-0x066400,8,
-0x066500,14,
-0x066550,8,
-0x066574,3,
-0x070004,1,
-0x07000c,4,
-0x070400,7,
-0x070420,11,
-0x070500,5,
-0x070524,1,
-0x07052c,1,
-0x070534,1,
-0x070600,142,
-0x070884,2,
-0x0708c4,15,
-0x070904,1,
-0x070940,16,
-0x071000,1,
-0x071094,1,
-0x071104,2,
-0x071140,16,
-0x071204,1,
-0x07120c,4,
-0x071404,1,
-0x07140c,1,
-0x071414,1,
-0x07141c,1,
-0x071424,1,
-0x07142c,1,
-0x071504,1,
-0x071540,16,
-0x071800,2,
-0x071904,1,
-0x071940,16,
-0x071a04,1,
-0x071a40,16,
-0x071b04,1,
-0x071b40,16,
-0x072000,3,
-0x072804,1,
-0x07280c,4,
-0x072880,1,
-0x072888,3,
-0x073000,1,
-0x073020,1,
-0x073040,1,
-0x073060,1,
-0x073080,1,
-0x0730a0,1,
-0x0730c0,1,
-0x0730e0,1,
-0x073100,1,
-0x073120,1,
-0x073140,1,
-0x073160,1,
-0x073180,1,
-0x0731a0,1,
-0x0731c0,1,
-0x0731e0,1,
-0x073200,1,
-0x073220,1,
-0x073240,1,
-0x073260,1,
-0x073280,1,
-0x0732a0,1,
-0x0732c0,1,
-0x0732e0,1,
-0x073300,1,
-0x073320,1,
-0x073340,1,
-0x073360,1,
-0x073380,1,
-0x0733a0,1,
-0x0733c0,1,
-0x0733e0,1,
-0x074830,7,
-0x074860,8,
-0x074884,2,
-0x074890,4,
-0x074900,6,
-0x074920,6,
-0x074a00,3,
-0x074c00,1,
-0x074c18,1,
-0x074c34,1,
-0x074d04,3,
-0x074d34,1,
-0x074d4c,1,
-0x074d70,2,
-0x074e00,6,
-0x075000,3,
-0x075010,2,
-0x075020,3,
-0x075100,2,
-0x078000,20,
-0x078054,9,
-0x07807c,3,
-0x07808c,2,
-0x078098,4,
-0x078100,5,
-0x078118,4,
-0x078130,2,
-0x078204,2,
-0x078244,15,
-0x078284,2,
-0x0782c4,22,
-0x078320,2,
-0x078340,2,
-0x078360,2,
-0x078380,2,
-0x0783a0,2,
-0x0783d4,1,
-0x0783dc,1,
-0x078404,1,
-0x07840c,4,
-0x078804,18,
-0x078850,4,
-0x078884,1,
-0x07889c,1,
-0x0788ac,21,
-0x079804,2,
-0x079828,6,
-0x079844,2,
-0x079868,6,
-0x079884,2,
-0x0798a8,7,
-0x0798d0,8,
-0x079904,1,
-0x07990c,1,
-0x079914,1,
-0x079a04,2,
-0x079a40,16,
-0x079a84,2,
-0x079a90,2,
-0x079a9c,13,
-0x079b04,2,
-0x079b3c,17,
-0x079c04,2,
-0x079c40,16,
-0x079c84,2,
-0x079c98,2,
-0x079cc4,13,
-0x079cfc,4,
-0x079d10,2,
-0x079d24,1,
-0x079d2c,2,
-0x079d80,2,
-0x079d8c,1,
-0x079f00,6,
-0x079f20,6,
-0x079f40,6,
-0x079f60,6,
-0x079fa0,3,
-0x079fb0,1,
-0x079fc0,3,
-0x079fe0,11,
-0x07a010,3,
-0x07a020,3,
-0x07a040,9,
-0x07a068,6,
-0x07a090,2,
-0x07a0a0,3,
-0x07a0c0,12,
-0x07a0f4,1,
-0x07a100,2,
-0x07a110,3,
-0x07a120,1,
-0x07a130,11,
-0x07a160,2,
-0x07a180,4,
-0x07a194,3,
-0x07a1a4,2,
-0x07a1b0,4,
-0x07a2e0,5,
-0x07a2f8,2,
-0x07a30c,13,
-0x07a34c,77,
-0x07a48c,18,
-0x07a500,32,
-0x07a800,16,
-0x07a84c,18,
-0x07a8e0,2,
-0x07a8ec,3,
-0x07a900,1,
-0x07a910,5,
-0x07a930,5,
-0x07a950,5,
-0x07a970,5,
-0x07a990,1,
-0x07a9a4,3,
-0x07aa78,34,
-0x07ab3c,18,
-0x07ab94,3,
-0x07aba4,3,
-0x07abf0,1,
-0x07abf8,10,
-0x07ac30,1,
-0x07ac44,4,
-0x07ac60,1,
-0x07ac80,1,
-0x07ac90,1,
-0x07b004,6,
-0x080000,29,
-0x080340,14,
-0x08037c,3,
-0x08038c,1,
-0x080404,6,
-0x080804,2,
-0x080874,35,
-0x081000,129,
-0x081210,4,
-0x081224,4,
-0x081240,3,
-0x081264,2,
-0x081274,3,
-0x081284,2,
-0x081298,2,
-0x081300,2,
-0x081310,8,
-0x081344,1,
-0x08134c,1,
-0x081354,1,
-0x081364,2,
-0x081370,4,
-0x081384,2,
-0x081390,4,
-0x081404,2,
-0x081474,35,
-0x081504,2,
-0x081518,12,
-0x082000,29,
-0x082340,14,
-0x08237c,3,
-0x08238c,1,
-0x082404,1,
-0x08240c,4,
-0x082804,2,
-0x082874,35,
-0x082904,2,
-0x082974,35,
-0x083000,129,
-0x083210,7,
-0x083244,2,
-0x083254,7,
-0x083284,1,
-0x08328c,1,
-0x083294,1,
-0x083304,2,
-0x083310,4,
-0x083324,2,
-0x083330,14,
-0x084000,29,
-0x084340,14,
-0x08437c,3,
-0x08438c,1,
-0x084404,1,
-0x08440c,4,
-0x084804,2,
-0x084874,35,
-0x084904,2,
-0x084974,35,
-0x085000,32,
-0x085200,1,
-0x085210,7,
-0x085240,12,
-0x085280,2,
-0x085304,1,
-0x08530c,1,
-0x085314,1,
-0x085324,2,
-0x085334,3,
-0x085344,2,
-0x085358,2,
-0x085364,2,
-0x085378,2,
-0x085384,2,
-0x085398,2,
-0x085400,7,
-0x086000,2,
-0x086020,2,
-0x086040,1,
-0x086400,11,
-0x086800,3,
-0x086820,6,
-0x086840,6,
-0x086860,6,
-0x086880,6,
-0x0868a0,6,
-0x0868c0,6,
-0x0868e0,6,
-0x086980,3,
-0x0869a0,9,
-0x0869c8,1,
-0x0869d0,3,
-0x087000,26,
-0x087100,1,
-0x087108,1,
-0x087110,1,
-0x087118,1,
-0x087120,1,
-0x087128,1,
-0x087130,1,
-0x087138,1,
-0x087140,1,
-0x087148,1,
-0x087150,1,
-0x087158,1,
-0x087160,1,
-0x087168,1,
-0x087170,1,
-0x087178,1,
-0x087180,10,
-0x0871b0,9,
-0x090000,17,
-0x090060,2,
-0x09006c,1,
-0x090104,1,
-0x090110,12,
-0x090180,9,
-0x0901a8,2,
-0x0901c0,9,
-0x0901e8,2,
-0x090204,1,
-0x090220,24,
-0x090300,6,
-0x090320,9,
-0x090348,1,
-0x090400,6,
-0x090420,9,
-0x090448,1,
-0x090500,6,
-0x090520,2,
-0x090540,1,
-0x090564,2,
-0x090578,3,
-0x091004,3,
-0x091800,8,
-0x091824,2,
-0x091830,10,
-0x091860,6,
-0x092000,32,
-0x093000,1,
-0x093020,1,
-0x093040,1,
-0x093060,1,
-0x093080,1,
-0x0930a0,1,
-0x0930c0,1,
-0x0930e0,1,
-0x093100,1,
-0x0931a0,1,
-0x0931c0,1,
-0x093200,3,
-0x093404,1,
-0x093410,12,
-0x093504,1,
-0x09353c,28,
-0x0935b0,2,
-0x0935c0,3,
-0x094040,3,
-0x094080,3,
-0x0940a0,9,
-0x094800,1,
-0x094818,1,
-0x094834,1,
-0x094904,3,
-0x094934,1,
-0x09494c,1,
-0x094970,2,
-0x094a00,6,
-0x096000,1,
-0x096010,4,
-0x096024,4,
-0x096104,1,
-0x09610c,5,
-0x096204,1,
-0x09620c,4,
-0x096488,1,
-0x096498,3,
-0x0964b0,6,
-0x096504,1,
-0x09650c,4,
-0x096584,3,
-0x096600,16,
-0x096644,2,
-0x096658,3,
-0x096684,2,
-0x0966bc,51,
-0x096800,11,
-0x096884,3,
-0x0968a0,12,
-0x097100,6,
-0x097120,1,
-0x0a0000,1,
-0x0a0008,3,
-0x0a0018,4,
-0x0a0030,2,
-0x0a003c,1,
-0x0a0080,1,
-0x0a0090,1,
-0x0a0804,1,
-0x0a080c,4,
-0x0a0c00,2,
-0x0a0c0c,5,
-0x0a0c40,1,
-0x0a0c50,4,
-0x0a0c64,1,
-0x0a0c70,1,
-0x0a0c80,1,
-0x0a0ca0,21,
-0x0a1004,1,
-0x0a100c,4,
-0x0a1400,2,
-0x0a140c,2,
-0x0a1440,1,
-0x0a1450,4,
-0x0a1464,1,
-0x0a1470,1,
-0x0a1480,4,
-0x0a14f0,1,
-0x0a1804,1,
-0x0a180c,4,
-0x0a1a00,9,
-0x0a1a30,2,
-0x0a1a3c,2,
-0x0a1a48,4,
-0x0a1c00,32,
-0x0a1c84,1,
-0x0a1d04,1,
-0x0a1d18,26,
-0x0a2000,32,
-0x0a2100,3,
-0x0a2110,6,
-0x0a212c,4,
-0x0a2140,1,
-0x0a2200,1,
-0x0a2304,1,
-0x0a231c,9,
-0x0a2804,1,
-0x0a280c,4,
-0x0a2c04,2,
-0x0a2c10,2,
-0x0a2c1c,6,
-0x0a2c38,14,
-0x0a2c78,9,
-0x0a2d04,2,
-0x0a2d40,20,
-0x0a2da4,1,
-0x0a2dac,1,
-0x0a2db4,1,
-0x0a2dc0,1,
-0x0a4000,14,
-0x0a5000,2,
-0x0a5018,2,
-0x0a5034,2,
-0x0a5104,6,
-0x0a5134,2,
-0x0a514c,1,
-0x0a5170,3,
-0x0a5200,6,
-0x0a5220,6,
-0x0a52c0,2,
-0x0a6000,3,
-0x0a6020,6,
-0x0a6040,6,
-0x0a6060,6,
-0x0a6080,6,
-0x0a7000,2,
-0x0a7040,3,
-0x0a7060,10,
-0x0a8000,10,
-0x0a802c,15,
-0x0a806c,5,
-0x0a8408,5,
-0x0a8424,3,
-0x0a8434,6,
-0x0a8450,2,
-0x0a845c,5,
-0x0a8480,1,
-0x0a84c4,1,
-0x0a84cc,4,
-0x0a8604,1,
-0x0a860c,4,
-0x0a8700,17,
-0x0a8750,4,
-0x0a8800,4,
-0x0a8880,1,
-0x0a88a0,1,
-0x0a88c0,1,
-0x0a8900,1,
-0x0a8960,1,
-0x0a8980,4,
-0x0a8994,1,
-0x0a899c,1,
-0x0a89a4,3,
-0x0a89c0,1,
-0x0a8a00,3,
-0x0a8aa4,1,
-0x0a8aac,1,
-0x0a8ab4,1,
-0x0a8ad4,10,
-0x0a8b00,2,
-0x0a8b80,4,
-0x0a8c04,6,
-0x0a9000,3,
-0x0a9010,21,
-0x0a9080,4,
-0x0a9100,10,
-0x0a91f4,3,
-0x0a920c,35,
-0x0a92a4,7,
-0x0a930c,39,
-0x0a940c,35,
-0x0a949c,9,
-0x0a9500,2,
-0x0a950c,3,
-0x0a951c,3,
-0x0a954c,13,
-0x0a9804,1,
-0x0a980c,4,
-0x0a9c00,2,
-0x0a9c0c,3,
-0x0a9c1c,2,
-0x0a9c28,1,
-0x0a9c44,1,
-0x0a9c60,17,
-0x0a9d00,1,
-0x0a9d20,8,
-0x0a9d44,4,
-0x0a9d80,1,
-0x0a9dc4,3,
-0x0a9dd4,3,
-0x0a9de4,3,
-0x0a9df4,4,
-0x0a9e20,8,
-0x0a9e44,4,
-0x0a9e84,1,
-0x0a9e98,1,
-0x0a9ea0,8,
-0x0a9f00,6,
-0x0a9f20,6,
-0x0a9f40,6,
-0x0a9f60,6,
-0x0a9f80,3,
-0x0a9fa0,23,
-0x0aa004,1,
-0x0aa00c,4,
-0x0b0000,2,
-0x0b0010,4,
-0x0b0800,5,
-0x0b0820,10,
-0x0b0880,20,
-0x0b0900,2,
-0x0b0910,2,
-0x0b0920,2,
-0x0b0960,2,
-0x0b096c,1,
-0x0b0980,3,
-0x0b0990,3,
-0x0b09a0,3,
-0x0b09e0,2,
-0x0b09ec,1,
-0x0b0a00,2,
-0x0b0a10,2,
-0x0b0a60,2,
-0x0b0a6c,1,
-0x0b0a80,3,
-0x0b0a90,3,
-0x0b0ae0,2,
-0x0b0aec,1,
-0x0b0b00,2,
-0x0b0b10,2,
-0x0b0b20,2,
-0x0b0b60,2,
-0x0b0b6c,1,
-0x0b0b80,3,
-0x0b0b90,3,
-0x0b0be0,2,
-0x0b0bec,1,
-0x0b0c00,3,
-0x0b0c10,3,
-0x0b0c60,2,
-0x0b0c6c,1,
-0x0b0c80,3,
-0x0b0c90,7,
-0x0b0cb0,4,
-0x0b0ce0,2,
-0x0b0cec,1,
-0x0b0d00,2,
-0x0b0d10,2,
-0x0b0d60,2,
-0x0b0d6c,1,
-0x0b0d80,3,
-0x0b0d90,3,
-0x0b0de0,2,
-0x0b0dec,1,
-0x0b0e00,3,
-0x0b0e10,3,
-0x0b0e60,2,
-0x0b0e6c,1,
-0x0b0e80,8,
-0x0b0ee0,2,
-0x0b0eec,1,
-0x0b0f00,3,
-0x0b0f20,8,
-0x0b1000,3,
-0x0b1010,8,
-0x0b1080,3,
-0x0b10a0,8,
-0x0b1100,3,
-0x0b1110,8,
-0x0b1180,3,
-0x0b11a0,8,
-0x0b1200,3,
-0x0b1210,8,
-0x0b1280,3,
-0x0b12a0,8,
-0x0b1300,3,
-0x0b1310,8,
-0x0b1380,3,
-0x0b13a0,8,
-0x0b1400,3,
-0x0b1410,8,
-0x0b1480,3,
-0x0b14a0,8,
-0x0b1500,3,
-0x0b1510,8,
-0x0b1580,3,
-0x0b15a0,8,
-0x0b1600,3,
-0x0b1610,8,
-0x0b1680,3,
-0x0b16a0,8,
-0x0b1700,3,
-0x0b1710,8,
-0x0b1780,3,
-0x0b17a0,8,
-0x0b1900,1,
-0x0b1910,1,
-0x0b2000,38,
-0x0b2100,3,
-0x0b2120,13,
-0x0b2160,4,
-0x0b2184,5,
-0x0b2200,1,
-0x0b2220,12,
-0x0b2404,1,
-0x0b240c,4,
-0x0b2800,64,
-0x0b3004,1,
-0x0b3010,12,
-0x0b3100,3,
-0x0b3120,8,
-0x0b4000,1,
-0x0b4018,1,
-0x0b4034,1,
-0x0b4104,2,
-0x0b4134,1,
-0x0b414c,1,
-0x0b4170,2,
-0x0b4200,6,
-0x0b4800,3,
-0x0b4820,6,
-0x0b4840,6,
-0x0b4860,6,
-0x0b4880,6,
-0x0b48a0,6,
-0x0b48c0,6,
-0x0b48e0,6,
-0x0b4900,6,
-0x0c0000,4,
-0x0c0058,2,
-0x0c0064,1,
-0x0c0120,2,
-0x0c0130,2,
-0x0c0140,1,
-0x0c0184,11,
-0x0c01c4,3,
-0x0c01dc,3,
-0x0c0280,13,
-0x0c02c0,3,
-0x0c0400,16,
-0x0c0500,3,
-0x0c0804,1,
-0x0c080c,4,
-0x0c0a7c,1,
-0x0c0ae8,6,
-0x0c0b20,24,
-0x0c0ba0,28,
-0x0c0c80,20,
-0x0c0d00,3,
-0x0c0d20,6,
-0x0c0d80,4,
-0x0c0da0,1,
-0x0c0da8,12,
-0x0c0e00,17,
-0x0c0e80,4,
-0x0c0ec0,6,
-0x0c0ee0,6,
-0x0c1000,32,
-0x0c1084,5,
-0x0c10f8,3,
-0x0c1108,3,
-0x0c1118,7,
-0x0c1144,2,
-0x0c1160,11,
-0x0c1200,13,
-0x0c1244,2,
-0x0c1268,6,
-0x0c12a0,1,
-0x0c12c8,6,
-0x0c12e8,6,
-0x0c1310,1,
-0x0c1340,4,
-0x0c13e8,8,
-0x0c140c,14,
-0x0c147c,1,
-0x0c1700,2,
-0x0c1720,8,
-0x0c1800,3,
-0x0c1810,3,
-0x0c1820,3,
-0x0c1830,3,
-0x0c1840,3,
-0x0c1850,3,
-0x0c1860,3,
-0x0c1870,3,
-0x0c1880,3,
-0x0c1890,3,
-0x0c18a0,3,
-0x0c18b0,3,
-0x0c18c0,3,
-0x0c18d0,3,
-0x0c18e0,3,
-0x0c18f0,3,
-0x0c1900,68,
-0x0c1c00,34,
-0x0c1d00,3,
-0x0c1d40,4,
-0x0c1d84,1,
-0x0c1d90,4,
-0x0c1e00,3,
-0x0c1e20,6,
-0x0c1e40,6,
-0x0c1e60,6,
-0x0c1f80,3,
-0x0c1fa0,8,
-0x0c2000,1,
-0x0c2018,1,
-0x0c2034,1,
-0x0c2104,1,
-0x0c2134,1,
-0x0c214c,1,
-0x0c2170,2,
-0x0c2200,6,
-0x0c2400,36,
-0x0c24a0,8,
-0x0c2500,1,
-0x0c2584,7,
-0x0c2604,1,
-0x0c26f0,70,
-0x0c8000,25,
-0x0c8068,4,
-0x0c807c,4,
-0x0c80a0,3,
-0x0c80b0,2,
-0x0c80c8,6,
-0x0c8180,6,
-0x0c81a0,6,
-0x0c9000,1,
-0x0c9018,1,
-0x0c9034,1,
-0x0c9104,1,
-0x0c9134,1,
-0x0c914c,1,
-0x0c9170,2,
-0x0c9200,6,
-0x0c9400,3,
-0x0c9500,3,
-0x0c9520,10,
-0x0ca000,3,
-0x0ca010,36,
-0x0ca0a4,2,
-0x0ca0b0,2,
-0x0ca0c0,14,
-0x0ca100,14,
-0x0ca140,5,
-0x0ca160,4,
-0x0ca180,13,
-0x0ca1b8,11,
-0x0ca1e8,3,
-0x0ca1f8,8,
-0x0ca220,6,
-0x0ca240,6,
-0x0ca260,6,
-0x0ca280,6,
-0x0ca2a0,6,
-0x0ca2c0,6,
-0x0ca2e0,6,
-0x0ca300,6,
-0x0ca320,6,
-0x0ca340,6,
-0x0ca360,6,
-0x0ca400,6,
-0x0ca420,6,
-0x0ca440,6,
-0x0ca460,6,
-0x0ca480,6,
-0x0ca4a0,6,
-0x0ca4c0,6,
-0x0ca4e0,6,
-0x0ca500,6,
-0x0ca520,6,
-0x0ca540,6,
-0x0ca560,6,
-0x0ca580,6,
-0x0ca5a0,6,
-0x0ca5c0,6,
-0x0ca5e0,6,
-0x0ca6fc,1,
-0x0ca704,1,
-0x0ca72c,17,
-0x0ca780,16,
-0x0ca800,8,
-0x0ca824,5,
-0x0ca840,8,
-0x0ca864,5,
-0x0ca880,8,
-0x0ca8a4,5,
-0x0ca8c0,8,
-0x0ca8e4,5,
-0x0ca900,8,
-0x0ca924,5,
-0x0ca940,8,
-0x0ca964,5,
-0x0ca980,8,
-0x0ca9a4,5,
-0x0ca9c0,8,
-0x0ca9e4,5,
-0x0caa00,8,
-0x0caa24,5,
-0x0caa40,8,
-0x0caa64,5,
-0x0caa80,8,
-0x0caaa4,5,
-0x0caac0,8,
-0x0caae4,5,
-0x0cab00,8,
-0x0cab24,5,
-0x0cab40,8,
-0x0cab64,5,
-0x0cab80,8,
-0x0caba4,5,
-0x0cabc0,8,
-0x0cabe4,5,
-0x0cac04,6,
-0x0cac20,2,
-0x0cac30,2,
-0x0cac40,2,
-0x0cac50,2,
-0x0cb000,16,
-0x0cb044,1,
-0x0cb04c,1,
-0x0cb100,16,
-0x0cb1f0,6,
-0x0cb210,3,
-0x0cb220,2,
-0x0cb230,3,
-0x0cb240,2,
-0x0cb250,3,
-0x0cb260,2,
-0x0cb270,3,
-0x0cb280,2,
-0x0cb290,3,
-0x0cb2a0,2,
-0x0cb2b0,3,
-0x0cb2c0,2,
-0x0cb2d0,3,
-0x0cb2e0,2,
-0x0cb2f0,3,
-0x0cb300,2,
-0x0cb310,3,
-0x0cb320,2,
-0x0cb330,3,
-0x0cb340,2,
-0x0cb350,3,
-0x0cb360,2,
-0x0cb370,3,
-0x0cb380,2,
-0x0cb390,3,
-0x0cb3a0,2,
-0x0cb3b0,3,
-0x0cb3c0,2,
-0x0cb3d0,3,
-0x0cb3e0,2,
-0x0cb3f0,3,
-0x0cb400,17,
-0x0cb59c,25,
-0x0cb700,11,
-0x0cb74c,2,
-0x0cb760,24,
-0x0cb800,19,
-0x0cb850,16,
-0x0cb89c,1,
-0x0cb8b0,9,
-0x0cb8e0,1,
-0x0cb8f0,3,
-0x0cb900,17,
-0x0cb958,1,
-0x0cb980,1,
-0x0cb994,2,
-0x0cb9ac,11,
-0x0cb9ec,4,
-0x0cba00,19,
-0x0cba50,16,
-0x0cba9c,1,
-0x0cbab0,9,
-0x0cbae0,1,
-0x0cbaf0,3,
-0x0cbb00,17,
-0x0cbb58,1,
-0x0cbb80,1,
-0x0cbb94,2,
-0x0cbbac,11,
-0x0cbbec,4,
-0x0cbc00,19,
-0x0cbc50,16,
-0x0cbc9c,1,
-0x0cbcb0,9,
-0x0cbce0,1,
-0x0cbcf0,3,
-0x0cbd00,17,
-0x0cbd58,1,
-0x0cbd80,1,
-0x0cbd94,2,
-0x0cbdac,11,
-0x0cbdec,4,
-0x0cbe00,19,
-0x0cbe50,16,
-0x0cbe9c,1,
-0x0cbeb0,9,
-0x0cbee0,1,
-0x0cbef0,3,
-0x0cbf00,17,
-0x0cbf58,1,
-0x0cbf80,1,
-0x0cbf94,2,
-0x0cbfac,11,
-0x0cbfec,4,
-0x0d0000,7,
-0x0d002c,18,
-0x0d1000,2,
-0x0d100c,1,
-0x0d1020,13,
-0x0d1058,1,
-0x0d1060,6,
-0x0d1080,1,
-0x0d10a0,6,
-0x0d1100,2,
-0x0d110c,1,
-0x0d1120,13,
-0x0d1158,1,
-0x0d1160,6,
-0x0d1180,1,
-0x0d11a0,6,
-0x0d1200,2,
-0x0d120c,1,
-0x0d1220,13,
-0x0d1258,1,
-0x0d1260,6,
-0x0d1280,1,
-0x0d12a0,6,
-0x0d1300,2,
-0x0d130c,1,
-0x0d1320,13,
-0x0d1358,1,
-0x0d1360,6,
-0x0d1380,1,
-0x0d13a0,6,
-0x0d1400,14,
-0x0d1448,1,
-0x0d1450,5,
-0x0d1480,6,
-0x0d1500,10,
-0x0d152c,4,
-0x0d1800,4,
-0x0d1820,3,
-0x0d1830,3,
-0x0d1a00,1,
-0x0d1a08,13,
-0x0d1a40,9,
-0x0d1c00,24,
-0x0d1c64,1,
-0x0d1c80,6,
-0x0d1ca0,3,
-0x0d1cb0,2,
-0x0d1d00,6,
-0x0d1d40,12,
-0x0d2000,2,
-0x0d200c,1,
-0x0d2020,13,
-0x0d2058,1,
-0x0d2060,6,
-0x0d2080,1,
-0x0d20a0,6,
-0x0d2100,2,
-0x0d210c,1,
-0x0d2120,13,
-0x0d2158,1,
-0x0d2160,6,
-0x0d2180,1,
-0x0d21a0,6,
-0x0d2200,2,
-0x0d220c,1,
-0x0d2220,13,
-0x0d2258,1,
-0x0d2260,6,
-0x0d2280,1,
-0x0d22a0,6,
-0x0d2300,2,
-0x0d230c,1,
-0x0d2320,13,
-0x0d2358,1,
-0x0d2360,6,
-0x0d2380,1,
-0x0d23a0,6,
-0x0d2400,14,
-0x0d2448,1,
-0x0d2450,5,
-0x0d2480,6,
-0x0d2500,10,
-0x0d252c,4,
-0x0d2800,4,
-0x0d2820,3,
-0x0d2830,3,
-0x0d2a00,1,
-0x0d2a08,13,
-0x0d2a40,9,
-0x0d2c00,24,
-0x0d2c64,1,
-0x0d2c80,6,
-0x0d2ca0,3,
-0x0d2cb0,2,
-0x0d2d00,6,
-0x0d2d40,12,
-0x0d3000,8,
-0x0d3024,5,
-0x0d3040,8,
-0x0d3064,5,
-0x0d3080,8,
-0x0d30a4,5,
-0x0d30c0,8,
-0x0d30e4,5,
-0x0d3100,8,
-0x0d3124,5,
-0x0d3140,8,
-0x0d3164,5,
-0x0d3180,8,
-0x0d31a4,5,
-0x0d31c0,8,
-0x0d31e4,5,
-0x0d3204,5,
-0x0d3220,2,
-0x0d3230,2,
-0x0d3240,2,
-0x0d3400,1,
-0x0d3418,1,
-0x0d3434,1,
-0x0d3504,1,
-0x0d3534,1,
-0x0d354c,1,
-0x0d3570,2,
-0x0d3600,6,
-0x0d3800,19,
-0x0d3850,16,
-0x0d389c,1,
-0x0d38b0,9,
-0x0d38e0,1,
-0x0d38f0,3,
-0x0d3900,17,
-0x0d3958,1,
-0x0d3980,1,
-0x0d3994,2,
-0x0d39ac,11,
-0x0d39ec,4,
-0x0d3a00,19,
-0x0d3a50,16,
-0x0d3a9c,1,
-0x0d3ab0,9,
-0x0d3ae0,1,
-0x0d3af0,3,
-0x0d3b00,17,
-0x0d3b58,1,
-0x0d3b80,1,
-0x0d3b94,2,
-0x0d3bac,11,
-0x0d3bec,4,
-0x0d3c00,11,
-0x0d3c4c,2,
-0x0d3c60,40,
-0x0d3d04,1,
-0x0d3d2c,17,
-0x0d3d80,16,
-0x0d3e00,6,
-0x0d3e20,6,
-0x0d3e40,3,
-0x0d3e50,1,
-0x0d8000,6,
-0x0d8020,3,
-0x0d8030,3,
-0x0d8040,6,
-0x0d8060,4,
-0x0d8100,28,
-0x0d8400,2,
-0x0d8418,2,
-0x0d8434,2,
-0x0d8504,4,
-0x0d8534,2,
-0x0d854c,1,
-0x0d8570,2,
-0x0d8600,6,
-0x0d8620,6,
-0x0d8800,1,
-0x0d8820,13,
-0x0d8858,8,
-0x0d8900,12,
-0x0d8984,1,
-0x0d89bc,18,
-0x0d8a20,13,
-0x0d8a58,8,
-0x0d8b00,12,
-0x0d8b84,1,
-0x0d8bbc,17,
-0x0d9000,6,
-0x0d9020,6,
-0x0d9048,3,
-0x0d9080,6,
-0x0d909c,1,
-0x0d90a4,2,
-0x0d90b8,3,
-0x0d9200,12,
-0x0d9234,11,
-0x0d9280,26,
-0x0d9300,2,
-0x0d9320,1,
-0x0d9404,4,
-0x0d9418,16,
-0x0d9460,3,
-0x0d9600,5,
-0x0d9618,1,
-0x0d9644,9,
-0x0d9680,6,
-0x0d96a0,2,
-0x0d9800,6,
-0x0d9820,6,
-0x0d9848,3,
-0x0d9880,6,
-0x0d989c,1,
-0x0d98a4,2,
-0x0d98b8,3,
-0x0d9a00,12,
-0x0d9a34,11,
-0x0d9a80,26,
-0x0d9b00,2,
-0x0d9b20,1,
-0x0d9c04,4,
-0x0d9c18,16,
-0x0d9c60,3,
-0x0d9e00,5,
-0x0d9e18,1,
-0x0d9e44,9,
-0x0d9e80,6,
-0x0d9ea0,2,
-0x0db000,4,
-0x0db018,18,
-0x0db100,4,
-0x0db118,18,
-0x0db200,8,
-0x0db300,6,
-0x0db320,5,
-0x0db340,6,
-0x0db360,5,
-0x0db380,6,
-0x0db400,3,
-0x0db420,8,
-0x0db500,10,
-0x0db544,2,
-0x0db55c,9,
-0x0db584,7,
-0x0db5a4,2,
-0x0db5b8,3,
-0x0db600,2,
-0x0dbfc4,13,
-0x0dc000,366,
-0x0dc800,366,
-0x0e0000,3,
-0x0e001c,2,
-0x0e0030,1,
-0x0e0048,2,
-0x0e0058,2,
-0x0e0068,31,
-0x0e0180,2,
-0x0e01e0,1,
-0x0e01e8,3,
-0x0e01f8,1,
-0x0e0200,3,
-0x0e021c,2,
-0x0e0230,1,
-0x0e0248,2,
-0x0e0258,2,
-0x0e0268,31,
-0x0e0380,2,
-0x0e03e0,1,
-0x0e03e8,3,
-0x0e03f8,1,
-0x0e0400,3,
-0x0e041c,2,
-0x0e0430,1,
-0x0e0448,2,
-0x0e0458,2,
-0x0e0468,31,
-0x0e0580,2,
-0x0e05e0,1,
-0x0e05e8,3,
-0x0e05f8,1,
-0x0e0600,3,
-0x0e061c,2,
-0x0e0630,1,
-0x0e0648,2,
-0x0e0658,2,
-0x0e0668,31,
-0x0e0780,2,
-0x0e07e0,1,
-0x0e07e8,3,
-0x0e07f8,1,
-0x0e0800,3,
-0x0e081c,2,
-0x0e0830,1,
-0x0e0848,2,
-0x0e0858,2,
-0x0e0868,31,
-0x0e0980,2,
-0x0e09e0,1,
-0x0e09e8,3,
-0x0e09f8,1,
-0x0e0a00,3,
-0x0e0a1c,2,
-0x0e0a30,1,
-0x0e0a48,2,
-0x0e0a58,2,
-0x0e0a68,31,
-0x0e0b80,2,
-0x0e0be0,1,
-0x0e0be8,3,
-0x0e0bf8,1,
-0x0e0c00,3,
-0x0e0c1c,2,
-0x0e0c30,1,
-0x0e0c48,2,
-0x0e0c58,2,
-0x0e0c68,31,
-0x0e0d80,2,
-0x0e0de0,1,
-0x0e0de8,3,
-0x0e0df8,1,
-0x0e0e00,3,
-0x0e0e1c,2,
-0x0e0e30,1,
-0x0e0e48,2,
-0x0e0e58,2,
-0x0e0e68,31,
-0x0e0f80,2,
-0x0e0fe0,1,
-0x0e0fe8,3,
-0x0e0ff8,1,
-0x0e1400,8,
-0x0e1450,3,
-0x0e1460,3,
-0x0e1474,5,
-0x0e14a0,8,
-0x0e14e0,7,
-0x0e1504,1,
-0x0e1540,16,
-0x0e15f0,3,
-0x0e1604,1,
-0x0e1640,16,
-0x0e1700,16,
-0x0e1a00,4,
-0x0e2000,1,
-0x0e2018,1,
-0x0e2034,1,
-0x0e2104,1,
-0x0e2134,1,
-0x0e214c,1,
-0x0e2170,2,
-0x0e2200,6,
-0x0e2420,2,
-0x0e2430,10,
-0x0e2460,6,
-0x0e2480,6,
-0x0e24a0,3,
-0x0e2504,4,
-0x0e2600,16,
-0x0e2644,5,
-0x0e2660,6,
-0x0e2804,8,
-0x0e2828,5,
-0x0e2844,3,
-0x0e2854,5,
-0x0e2880,4,
-0x0e28a0,6,
-0x0e2a04,3,
-0x0e2b00,33,
-0x0e2c40,3,
-0x0e2c60,11,
-0x0e8000,9,
-0x0e8050,1,
-0x0e8064,6,
-0x0e8080,1,
-0x0e8088,2,
-0x0f0000,3,
-0x0f0014,8,
-0x0f0040,3,
-0x0f0050,4,
-0x0f0080,12,
-0x0f00f0,2,
-0x0f0100,3,
-0x0f0118,5,
-0x0f0130,6,
-0x0f015c,13,
-0x0f01a0,3,
-0x0f01c0,2,
-0x0f01d0,10,
-0x0f0200,61,
-0x0f0404,8,
-0x0f0440,4,
-0x0f0460,1,
-0x0f0468,3,
-0x0f0480,6,
-0x0f04a0,8,
-0x0f04e0,6,
-0x0f0500,6,
-0x0f0520,8,
-0x0f0560,6,
-0x0f05dc,73,
-0x0f0704,1,
-0x0f0714,10,
-0x0f0800,17,
-0x0f0850,9,
-0x0f0880,4,
-0x0f089c,5,
-0x0f08bc,5,
-0x0f08dc,1,
-0x0f0900,6,
-0x0f0920,6,
-0x0f0940,6,
-0x0f0980,3,
-0x0f0990,1,
-0x0f0ffc,1,
diff --git a/mstdump/mstdump_dbs/ConnectX2.csv b/mstdump/mstdump_dbs/ConnectX2.csv
deleted file mode 100755 (executable)
index 01d9838..0000000
+++ /dev/null
@@ -1,2335 +0,0 @@
-#Addr, Size, Enable addr
-0x010000,2,
-0x0100a0,15,
-0x0100ec,2,
-0x0100fc,2,
-0x01010c,2,
-0x010150,1,
-0x0101cc,1,
-0x0101fc,1,
-0x010208,10,
-0x010300,6,
-0x010320,20,
-0x010374,3,
-0x010400,1,
-0x010410,2,
-0x010440,1,
-0x010450,2,
-0x010480,1,
-0x010488,2,
-0x0104a0,1,
-0x0104a8,14,
-0x0104f4,4,
-0x010510,2,
-0x010520,13,
-0x0105c0,15,
-0x010600,29,
-0x010680,1,
-0x010690,2,
-0x0106ac,1,
-0x0106b8,1,
-0x0106e0,3,
-0x0106f0,3,
-0x010740,4,
-0x010754,8,
-0x010800,2,
-0x0108a0,15,
-0x0108ec,2,
-0x0108fc,2,
-0x01090c,2,
-0x010950,1,
-0x0109cc,1,
-0x0109fc,1,
-0x010a08,10,
-0x010b00,6,
-0x010b20,20,
-0x010b74,3,
-0x010c00,1,
-0x010c10,2,
-0x010c40,1,
-0x010c50,2,
-0x010c80,1,
-0x010c88,2,
-0x010ca0,1,
-0x010ca8,14,
-0x010cf4,4,
-0x010d10,2,
-0x010d20,13,
-0x010dc0,15,
-0x010e00,29,
-0x010e80,1,
-0x010e90,2,
-0x010eac,1,
-0x010eb8,1,
-0x010ee0,3,
-0x010ef0,3,
-0x010f40,4,
-0x010f54,8,
-0x011000,1,
-0x011010,4,
-0x011024,2,
-0x011080,2,
-0x011090,12,
-0x011180,6,
-0x011200,7,
-0x011220,1,
-0x011240,4,
-0x011260,1,
-0x011280,5,
-0x011300,1,
-0x011310,2,
-0x011400,1,
-0x011408,1,
-0x011460,1,
-0x0114b0,4,
-0x011800,1,
-0x011810,4,
-0x011824,2,
-0x011880,2,
-0x011890,12,
-0x011980,6,
-0x011a00,7,
-0x011a20,1,
-0x011a40,4,
-0x011a60,1,
-0x011a80,5,
-0x011b00,1,
-0x011b10,2,
-0x011c00,1,
-0x011c08,1,
-0x011c60,1,
-0x011cb0,4,
-0x012000,2,
-0x012020,1,
-0x012030,2,
-0x012044,2,
-0x0120a0,4,
-0x0120c0,7,
-0x01211c,13,
-0x012164,1,
-0x012170,4,
-0x0121e0,6,
-0x012250,1,
-0x012360,4,
-0x012380,3,
-0x012390,5,
-0x0123b0,5,
-0x012440,3,
-0x012450,3,
-0x0124a8,2,
-0x0124c0,2,
-0x0124d0,2,
-0x012568,2,
-0x0125c0,4,
-0x0125fc,10,
-0x012628,6,
-0x012644,1,
-0x012660,2,
-0x012670,2,
-0x01268c,5,
-0x01270c,1,
-0x012728,8,
-0x012750,2,
-0x01275c,1,
-0x0127d8,2,
-0x0127e8,2,
-0x012840,1,
-0x012850,2,
-0x0128a0,5,
-0x0128c0,2,
-0x012904,1,
-0x012910,5,
-0x012928,4,
-0x012944,4,
-0x012958,4,
-0x0129a0,1,
-0x0129b0,2,
-0x012a00,2,
-0x012a14,2,
-0x012a28,3,
-0x012a40,1,
-0x012a50,2,
-0x012a60,1,
-0x012a70,2,
-0x012ae4,4,
-0x012b00,9,
-0x012b30,2,
-0x012b40,2,
-0x012b4c,4,
-0x012b80,9,
-0x012bb0,2,
-0x012bc0,2,
-0x012bcc,4,
-0x012c00,37,
-0x012ca0,5,
-0x012cc0,5,
-0x012ce0,5,
-0x012d00,2,
-0x012d48,4,
-0x012e00,32,
-0x012e84,7,
-0x012ea8,2,
-0x012ec4,7,
-0x012ee8,2,
-0x018000,1,
-0x01805c,4,
-0x018080,8,
-0x0180a4,7,
-0x0180c4,2,
-0x018100,32,
-0x018200,4,
-0x018224,1,
-0x018234,5,
-0x018300,32,
-0x018384,1,
-0x01838c,1,
-0x0183a4,3,
-0x018400,5,
-0x018420,5,
-0x018440,5,
-0x018460,5,
-0x018480,5,
-0x0184a0,5,
-0x0184c0,5,
-0x0184e0,5,
-0x018500,5,
-0x018520,5,
-0x018540,5,
-0x018560,5,
-0x018580,5,
-0x0185a0,5,
-0x0185c0,5,
-0x0185e0,5,
-0x018610,4,
-0x018624,4,
-0x018810,3,
-0x018820,11,
-0x018850,3,
-0x018860,7,
-0x018884,11,
-0x0188c8,2,
-0x0188d4,2,
-0x0188e0,8,
-0x018a04,3,
-0x018a20,3,
-0x018a30,4,
-0x018a44,21,
-0x018b04,3,
-0x018b14,11,
-0x018b4c,5,
-0x018b68,5,
-0x018c00,17,
-0x018c50,29,
-0x018cd0,14,
-0x018d0c,2,
-0x018e00,1,
-0x018e10,2,
-0x018e50,2,
-0x018f00,2,
-0x018f14,2,
-0x018f28,3,
-0x018f40,1,
-0x018f50,2,
-0x018f60,1,
-0x018f70,2,
-0x018fe4,5,
-0x019ff0,2052,
-0x01c004,2,
-0x01c010,1,
-0x01c01c,2,
-0x01c06c,27,
-0x01c180,1,
-0x01c190,2,
-0x01c1a0,1,
-0x01c1b0,2,
-0x01c1c0,7,
-0x01c1e0,7,
-0x01c200,17,
-0x01c250,29,
-0x01c2d0,14,
-0x01c30c,2,
-0x01c40c,5,
-0x01c428,2,
-0x01c434,1,
-0x01c448,2,
-0x01c454,1,
-0x01c464,24,
-0x01c4d8,2,
-0x01c4e4,8,
-0x01c514,1,
-0x01c528,2,
-0x01c540,1,
-0x01c550,2,
-0x01c5e4,5,
-0x01c608,4,
-0x01c624,3,
-0x01c63c,1,
-0x01c64c,22,
-0x01c6a8,4,
-0x01c6c0,9,
-0x01c6e8,8,
-0x01c70c,2,
-0x01c71c,5,
-0x01c738,2,
-0x01c744,1,
-0x01c75c,1,
-0x01c7dc,1,
-0x01c7e4,1,
-0x01c7f8,7,
-0x01c818,7,
-0x01c840,19,
-0x01c8a0,5,
-0x01c8c0,1,
-0x01c900,5,
-0x01c918,7,
-0x01c940,19,
-0x01c9a0,5,
-0x01c9c0,1,
-0x01ca00,5,
-0x01ca18,7,
-0x01ca40,19,
-0x01caa0,5,
-0x01cac0,1,
-0x01cb00,5,
-0x01cb18,7,
-0x01cb40,19,
-0x01cba0,5,
-0x01cbc0,1,
-0x01cc00,5,
-0x01cc18,7,
-0x01cc40,19,
-0x01cca0,5,
-0x01ccc0,1,
-0x01cd00,5,
-0x01cd18,7,
-0x01cd40,19,
-0x01cda0,5,
-0x01cdc0,1,
-0x01ce00,5,
-0x01ce18,7,
-0x01ce40,19,
-0x01cea0,5,
-0x01cec0,1,
-0x01cf00,5,
-0x01cf18,7,
-0x01cf40,19,
-0x01cfa0,5,
-0x01cfc0,1,
-0x01d000,19,
-0x01d050,22,
-0x01d0ac,6,
-0x01d0d0,2,
-0x01d0e8,15,
-0x01d140,1,
-0x01d148,53,
-0x01d220,10,
-0x01d260,5,
-0x01d278,2,
-0x01d284,1,
-0x01d298,2,
-0x01d2a8,6,
-0x01d300,2,
-0x01d310,19,
-0x01d368,2,
-0x01d37c,6,
-0x01d3c0,5,
-0x01d3e0,6,
-0x01d400,19,
-0x01d450,22,
-0x01d4ac,6,
-0x01d4d0,2,
-0x01d4e8,15,
-0x01d540,1,
-0x01d548,53,
-0x01d620,10,
-0x01d660,5,
-0x01d678,2,
-0x01d684,1,
-0x01d698,2,
-0x01d6a8,6,
-0x01d700,2,
-0x01d710,19,
-0x01d768,2,
-0x01d77c,6,
-0x01d7c0,5,
-0x01d7e0,6,
-0x01d800,16,
-0x01d844,1,
-0x01d880,8,
-0x01d8c4,1,
-0x01d8cc,5,
-0x01d8e4,7,
-0x01d920,1,
-0x01d968,2,
-0x01d9e0,6,
-0x01da00,4,
-0x01da14,2,
-0x01db0c,14,
-0x01db50,2,
-0x01db60,1,
-0x01db70,2,
-0x01db80,1,
-0x01db90,2,
-0x01dba0,3,
-0x01dc00,1,
-0x01dc0c,1,
-0x01dd80,13,
-0x01ddbc,1,
-0x01dde0,9,
-0x01df00,1,
-0x01df14,1,
-0x01df28,2,
-0x01df40,1,
-0x01df50,2,
-0x01dfe4,4,
-0x01e5c0,1,
-0x01e5dc,1,
-0x01e5e4,14,
-0x01e620,4,
-0x01e668,6,
-0x01e780,160,
-0x01ea04,12,
-0x01ec00,8,
-0x01ec24,1,
-0x01ec30,1,
-0x01ec44,20,
-0x01ec9c,2,
-0x01ecac,14,
-0x01ed80,1,
-0x01edc4,1,
-0x01ede0,1,
-0x01ede8,3,
-0x01edf8,1,
-0x01ee00,8,
-0x01ee24,1,
-0x01ee30,1,
-0x01ee44,20,
-0x01ee9c,2,
-0x01eeac,14,
-0x01ef80,1,
-0x01efc4,1,
-0x01efe0,1,
-0x01efe8,3,
-0x01eff8,1,
-0x01f000,1024,
-0x030000,1,
-0x030010,2,
-0x030020,1,
-0x030030,2,
-0x030040,1,
-0x030050,2,
-0x030100,27,
-0x030180,3,
-0x030200,80,
-0x030400,288,
-0x030900,32,
-0x030a04,1,
-0x030c00,128,
-0x030e1c,1,
-0x030e3c,1,
-0x030e44,1,
-0x030e5c,16,
-0x030f10,28,
-0x031000,14,
-0x031040,14,
-0x031080,14,
-0x0310c0,14,
-0x031100,133,
-0x031318,13,
-0x034000,1,
-0x034010,2,
-0x034224,1,
-0x034260,7,
-0x034284,4,
-0x034304,1,
-0x034314,3,
-0x034324,1,
-0x034334,3,
-0x034344,1,
-0x034358,2,
-0x034414,3,
-0x034510,4,
-0x034608,6,
-0x034800,7,
-0x034820,4,
-0x034868,6,
-0x034980,45,
-0x034a40,13,
-0x034a80,13,
-0x034ac0,13,
-0x034b00,13,
-0x034b40,13,
-0x034b80,13,
-0x034bc0,13,
-0x035020,1,
-0x035028,1,
-0x035040,2,
-0x03504c,1,
-0x035058,3,
-0x035068,4,
-0x035104,5,
-0x035200,12,
-0x035240,12,
-0x035280,12,
-0x0352c0,12,
-0x035300,12,
-0x035340,12,
-0x035380,12,
-0x0353c0,12,
-0x036000,128,
-0x036204,12,
-0x036400,8,
-0x036424,1,
-0x036430,1,
-0x036444,20,
-0x03649c,2,
-0x0364ac,14,
-0x036580,1,
-0x0365c4,1,
-0x0365e0,1,
-0x0365e8,3,
-0x0365f8,1,
-0x036600,2,
-0x036614,2,
-0x036628,3,
-0x036640,1,
-0x036650,2,
-0x036660,1,
-0x036670,2,
-0x0366e4,5,
-0x036700,1,
-0x036710,2,
-0x036720,1,
-0x036730,2,
-0x040000,19,
-0x040050,3,
-0x040060,2,
-0x040080,1,
-0x0400a4,5,
-0x0400c0,4,
-0x0400e0,3,
-0x040100,6,
-0x04011c,14,
-0x04015c,1,
-0x040170,4,
-0x040190,3,
-0x0401a4,1,
-0x0401ac,5,
-0x0401c4,1,
-0x0401cc,6,
-0x040200,3,
-0x040210,3,
-0x040220,3,
-0x040230,3,
-0x040240,3,
-0x040250,3,
-0x040260,3,
-0x040270,3,
-0x040280,3,
-0x040290,3,
-0x0402a0,3,
-0x0402b0,3,
-0x0402c0,3,
-0x0402d0,3,
-0x0402e0,3,
-0x0402f0,3,
-0x040304,1,
-0x040314,8,
-0x040340,11,
-0x040490,1,
-0x0404a8,15,
-0x040510,18,
-0x04055c,3,
-0x04056c,3,
-0x04057c,3,
-0x04058c,2,
-0x04059c,17,
-0x040610,16,
-0x0406e0,51,
-0x0407d0,3,
-0x0407f0,1,
-0x040800,337,
-0x040d50,18,
-0x040d9c,4,
-0x040db0,11,
-0x040df0,11,
-0x040e20,1,
-0x040e28,11,
-0x040e58,1,
-0x040e60,2,
-0x040e6c,1,
-0x040e74,11,
-0x040eb0,4,
-0x040ec8,2,
-0x040ed4,7,
-0x040ef8,6,
-0x041000,33,
-0x041100,15,
-0x041140,14,
-0x041180,15,
-0x0411dc,1,
-0x0411e4,15,
-0x041224,1,
-0x041230,1,
-0x041244,20,
-0x04129c,2,
-0x0412ac,14,
-0x041380,1,
-0x0413c4,1,
-0x0413e0,1,
-0x0413e8,3,
-0x0413f8,1,
-0x041400,8,
-0x041424,1,
-0x041430,1,
-0x041444,20,
-0x04149c,2,
-0x0414ac,14,
-0x041580,1,
-0x0415c4,1,
-0x0415e0,1,
-0x0415e8,3,
-0x0415f8,1,
-0x041600,2,
-0x041614,2,
-0x041628,3,
-0x041640,1,
-0x041650,2,
-0x041660,1,
-0x041670,2,
-0x0416e4,6,
-0x041a00,1,
-0x041a10,2,
-0x041a20,1,
-0x041a30,2,
-0x041c00,128,
-0x041e04,12,
-0x042000,5,
-0x042020,5,
-0x042040,5,
-0x042060,5,
-0x042080,5,
-0x0420a0,5,
-0x0420c0,5,
-0x0420e0,5,
-0x042100,5,
-0x042120,5,
-0x042140,5,
-0x042160,5,
-0x042180,5,
-0x0421a0,5,
-0x0421c0,5,
-0x0421e0,5,
-0x042200,5,
-0x042220,5,
-0x042240,5,
-0x042260,5,
-0x042280,5,
-0x0422a0,5,
-0x0422c0,5,
-0x0422e0,5,
-0x042300,5,
-0x042320,5,
-0x042340,5,
-0x042360,5,
-0x042380,5,
-0x0423a0,5,
-0x0423c0,5,
-0x0423e0,5,
-0x042400,5,
-0x042420,5,
-0x042440,5,
-0x042460,5,
-0x042480,5,
-0x0424a0,5,
-0x0424c0,5,
-0x0424e0,5,
-0x042500,5,
-0x042520,5,
-0x042540,5,
-0x042560,5,
-0x042580,5,
-0x0425a0,5,
-0x0425c0,5,
-0x0425e0,5,
-0x042600,5,
-0x042620,5,
-0x042640,5,
-0x042660,5,
-0x042680,5,
-0x0426a0,5,
-0x0426c0,5,
-0x0426e0,5,
-0x042700,5,
-0x042720,5,
-0x042740,5,
-0x042760,5,
-0x042780,5,
-0x0427a0,5,
-0x0427c0,5,
-0x0427e0,5,
-0x042800,5,
-0x042820,5,
-0x042840,5,
-0x042860,5,
-0x042880,5,
-0x0428a0,5,
-0x0428c0,5,
-0x0428e0,5,
-0x042900,5,
-0x042920,5,
-0x042940,5,
-0x042960,5,
-0x042980,5,
-0x0429a0,5,
-0x0429c0,5,
-0x0429e0,5,
-0x042a00,5,
-0x042a20,5,
-0x042a40,5,
-0x042a60,5,
-0x042a80,5,
-0x042aa0,5,
-0x042ac0,5,
-0x042ae0,5,
-0x042b00,5,
-0x042b20,5,
-0x042b40,5,
-0x042b60,5,
-0x042b80,5,
-0x042ba0,5,
-0x042bc0,5,
-0x042be0,5,
-0x042c00,5,
-0x042c20,5,
-0x042c40,5,
-0x042c60,5,
-0x042c80,5,
-0x042ca0,5,
-0x042cc0,5,
-0x042ce0,5,
-0x042d00,5,
-0x042d20,5,
-0x042d40,5,
-0x042d60,5,
-0x042d80,5,
-0x042da0,5,
-0x042dc0,5,
-0x042de0,5,
-0x042e00,5,
-0x042e20,5,
-0x042e40,5,
-0x042e60,5,
-0x042e80,5,
-0x042ea0,5,
-0x042ec0,5,
-0x042ee0,5,
-0x042f00,5,
-0x042f20,5,
-0x042f40,5,
-0x042f60,5,
-0x042f80,5,
-0x042fa0,5,
-0x042fc0,5,
-0x042fe0,5,
-0x043000,5,
-0x043020,5,
-0x043040,5,
-0x043060,5,
-0x043080,5,
-0x0430a0,5,
-0x0430c0,5,
-0x0430e0,5,
-0x043100,5,
-0x043120,5,
-0x043140,5,
-0x043160,5,
-0x043180,5,
-0x0431a0,5,
-0x0431c0,5,
-0x0431e0,5,
-0x043200,5,
-0x043220,5,
-0x043240,5,
-0x043260,5,
-0x043280,5,
-0x0432a0,5,
-0x0432c0,5,
-0x0432e0,5,
-0x043300,5,
-0x043320,5,
-0x043340,5,
-0x043360,5,
-0x043380,5,
-0x0433a0,5,
-0x0433c0,5,
-0x0433e0,5,
-0x043400,5,
-0x043420,5,
-0x043440,5,
-0x043460,5,
-0x043480,5,
-0x0434a0,5,
-0x0434c0,5,
-0x0434e0,5,
-0x043500,5,
-0x043520,5,
-0x043540,5,
-0x043560,5,
-0x043580,5,
-0x0435a0,5,
-0x0435c0,5,
-0x0435e0,5,
-0x043600,5,
-0x043620,5,
-0x043640,5,
-0x043660,5,
-0x043680,5,
-0x0436a0,5,
-0x0436c0,5,
-0x0436e0,5,
-0x043700,5,
-0x043720,5,
-0x043740,5,
-0x043760,5,
-0x043780,5,
-0x0437a0,5,
-0x0437c0,5,
-0x0437e0,5,
-0x043800,5,
-0x043820,5,
-0x043840,5,
-0x043860,5,
-0x043880,5,
-0x0438a0,5,
-0x0438c0,5,
-0x0438e0,5,
-0x043900,5,
-0x043920,5,
-0x043940,5,
-0x043960,5,
-0x043980,5,
-0x0439a0,5,
-0x0439c0,5,
-0x0439e0,5,
-0x043a00,5,
-0x043a20,5,
-0x043a40,5,
-0x043a60,5,
-0x043a80,5,
-0x043aa0,5,
-0x043ac0,5,
-0x043ae0,5,
-0x043b00,5,
-0x043b20,5,
-0x043b40,5,
-0x043b60,5,
-0x043b80,5,
-0x043ba0,5,
-0x043bc0,5,
-0x043be0,5,
-0x043c00,5,
-0x043c20,5,
-0x043c40,5,
-0x043c60,5,
-0x043c80,5,
-0x043ca0,5,
-0x043cc0,5,
-0x043ce0,5,
-0x043d00,5,
-0x043d20,5,
-0x043d40,5,
-0x043d60,5,
-0x043d80,5,
-0x043da0,5,
-0x043dc0,5,
-0x043de0,5,
-0x043e00,5,
-0x043e20,5,
-0x043e40,5,
-0x043e60,5,
-0x043e80,5,
-0x043ea0,5,
-0x043ec0,5,
-0x043ee0,5,
-0x043f00,5,
-0x043f20,5,
-0x043f40,5,
-0x043f60,5,
-0x043f80,5,
-0x043fa0,5,
-0x043fc0,5,
-0x043fe0,5,
-0x044004,1,
-0x044200,8,
-0x044230,9,
-0x044260,5,
-0x044280,32,
-0x044fc8,112,
-0x045190,88,
-0x045300,39,
-0x045400,13,
-0x045440,9,
-0x04546c,5,
-0x047ff0,2,
-0x048000,5,
-0x048020,5,
-0x048040,5,
-0x048060,5,
-0x048080,5,
-0x0480a0,5,
-0x0480c0,5,
-0x0480e0,5,
-0x048100,5,
-0x048120,5,
-0x048140,5,
-0x048160,5,
-0x048180,5,
-0x0481a0,5,
-0x0481c0,5,
-0x0481e0,5,
-0x048200,5,
-0x048220,5,
-0x048240,5,
-0x048260,5,
-0x048280,5,
-0x0482a0,5,
-0x0482c0,5,
-0x0482e0,5,
-0x048300,5,
-0x048320,5,
-0x048340,5,
-0x048360,5,
-0x048380,5,
-0x0483a0,5,
-0x0483c0,5,
-0x0483e0,5,
-0x048400,5,
-0x048420,5,
-0x048440,5,
-0x048460,5,
-0x048480,5,
-0x0484a0,5,
-0x0484c0,5,
-0x0484e0,5,
-0x048500,5,
-0x048520,5,
-0x048540,5,
-0x048560,5,
-0x048580,5,
-0x0485a0,5,
-0x0485c0,5,
-0x0485e0,5,
-0x048600,5,
-0x048620,5,
-0x048640,5,
-0x048660,5,
-0x048680,5,
-0x0486a0,5,
-0x0486c0,5,
-0x0486e0,5,
-0x048700,5,
-0x048720,5,
-0x048740,5,
-0x048760,5,
-0x048780,5,
-0x0487a0,5,
-0x0487c0,5,
-0x0487e0,5,
-0x048800,5,
-0x048820,5,
-0x048840,5,
-0x048860,5,
-0x048880,5,
-0x0488a0,5,
-0x0488c0,5,
-0x0488e0,5,
-0x048900,5,
-0x048920,5,
-0x048940,5,
-0x048960,5,
-0x048980,5,
-0x0489a0,5,
-0x0489c0,5,
-0x0489e0,5,
-0x048a00,5,
-0x048a20,5,
-0x048a40,5,
-0x048a60,5,
-0x048a80,5,
-0x048aa0,5,
-0x048ac0,5,
-0x048ae0,5,
-0x048b00,5,
-0x048b20,5,
-0x048b40,5,
-0x048b60,5,
-0x048b80,5,
-0x048ba0,5,
-0x048bc0,5,
-0x048be0,5,
-0x048c00,5,
-0x048c20,5,
-0x048c40,5,
-0x048c60,5,
-0x048c80,5,
-0x048ca0,5,
-0x048cc0,5,
-0x048ce0,5,
-0x048d00,5,
-0x048d20,5,
-0x048d40,5,
-0x048d60,5,
-0x048d80,5,
-0x048da0,5,
-0x048dc0,5,
-0x048de0,5,
-0x048e00,5,
-0x048e20,5,
-0x048e40,5,
-0x048e60,5,
-0x048e80,5,
-0x048ea0,5,
-0x048ec0,5,
-0x048ee0,5,
-0x048f00,5,
-0x048f20,5,
-0x048f40,5,
-0x048f60,5,
-0x048f80,5,
-0x048fa0,5,
-0x048fc0,5,
-0x048fe0,5,
-0x049000,5,
-0x049020,5,
-0x049040,5,
-0x049060,5,
-0x049080,5,
-0x0490a0,5,
-0x0490c0,5,
-0x0490e0,5,
-0x049100,5,
-0x049120,5,
-0x049140,5,
-0x049160,5,
-0x049180,5,
-0x0491a0,5,
-0x0491c0,5,
-0x0491e0,5,
-0x049200,5,
-0x049220,5,
-0x049240,5,
-0x049260,5,
-0x049280,5,
-0x0492a0,5,
-0x0492c0,5,
-0x0492e0,5,
-0x049300,5,
-0x049320,5,
-0x049340,5,
-0x049360,5,
-0x049380,5,
-0x0493a0,5,
-0x0493c0,5,
-0x0493e0,5,
-0x049400,5,
-0x049420,5,
-0x049440,5,
-0x049460,5,
-0x049480,5,
-0x0494a0,5,
-0x0494c0,5,
-0x0494e0,5,
-0x049500,5,
-0x049520,5,
-0x049540,5,
-0x049560,5,
-0x049580,5,
-0x0495a0,5,
-0x0495c0,5,
-0x0495e0,5,
-0x049600,5,
-0x049620,5,
-0x049640,5,
-0x049660,5,
-0x049680,5,
-0x0496a0,5,
-0x0496c0,5,
-0x0496e0,5,
-0x049700,5,
-0x049720,5,
-0x049740,5,
-0x049760,5,
-0x049780,5,
-0x0497a0,5,
-0x0497c0,5,
-0x0497e0,5,
-0x049800,5,
-0x049820,5,
-0x049840,5,
-0x049860,5,
-0x049880,5,
-0x0498a0,5,
-0x0498c0,5,
-0x0498e0,5,
-0x049900,5,
-0x049920,5,
-0x049940,5,
-0x049960,5,
-0x049980,5,
-0x0499a0,5,
-0x0499c0,5,
-0x0499e0,5,
-0x049a00,5,
-0x049a20,5,
-0x049a40,5,
-0x049a60,5,
-0x049a80,5,
-0x049aa0,5,
-0x049ac0,5,
-0x049ae0,5,
-0x049b00,5,
-0x049b20,5,
-0x049b40,5,
-0x049b60,5,
-0x049b80,5,
-0x049ba0,5,
-0x049bc0,5,
-0x049be0,5,
-0x049c00,5,
-0x049c20,5,
-0x049c40,5,
-0x049c60,5,
-0x049c80,5,
-0x049ca0,5,
-0x049cc0,5,
-0x049ce0,5,
-0x049d00,5,
-0x049d20,5,
-0x049d40,5,
-0x049d60,5,
-0x049d80,5,
-0x049da0,5,
-0x049dc0,5,
-0x049de0,5,
-0x049e00,5,
-0x049e20,5,
-0x049e40,5,
-0x049e60,5,
-0x049e80,5,
-0x049ea0,5,
-0x049ec0,5,
-0x049ee0,5,
-0x049f00,5,
-0x049f20,5,
-0x049f40,5,
-0x049f60,5,
-0x049f80,5,
-0x049fa0,5,
-0x049fc0,5,
-0x049fe0,5,
-0x04a000,5,
-0x04a020,5,
-0x04a040,5,
-0x04a060,5,
-0x04a080,5,
-0x04a0a0,5,
-0x04a0c0,5,
-0x04a0e0,5,
-0x04a100,5,
-0x04a120,5,
-0x04a140,5,
-0x04a160,5,
-0x04a180,5,
-0x04a1a0,5,
-0x04a1c0,5,
-0x04a1e0,5,
-0x04a200,5,
-0x04a220,5,
-0x04a240,5,
-0x04a260,5,
-0x04a280,5,
-0x04a2a0,5,
-0x04a2c0,5,
-0x04a2e0,5,
-0x04a300,5,
-0x04a320,5,
-0x04a340,5,
-0x04a360,5,
-0x04a380,5,
-0x04a3a0,5,
-0x04a3c0,5,
-0x04a3e0,5,
-0x04a400,5,
-0x04a420,5,
-0x04a440,5,
-0x04a460,5,
-0x04a480,5,
-0x04a4a0,5,
-0x04a4c0,5,
-0x04a4e0,5,
-0x04a500,5,
-0x04a520,5,
-0x04a540,5,
-0x04a560,5,
-0x04a580,5,
-0x04a5a0,5,
-0x04a5c0,5,
-0x04a5e0,5,
-0x04a600,5,
-0x04a620,5,
-0x04a640,5,
-0x04a660,5,
-0x04a680,5,
-0x04a6a0,5,
-0x04a6c0,5,
-0x04a6e0,5,
-0x04a700,5,
-0x04a720,5,
-0x04a740,5,
-0x04a760,5,
-0x04a780,5,
-0x04a7a0,5,
-0x04a7c0,5,
-0x04a7e0,5,
-0x04a800,5,
-0x04a820,5,
-0x04a840,5,
-0x04a860,5,
-0x04a880,5,
-0x04a8a0,5,
-0x04a8c0,5,
-0x04a8e0,5,
-0x04a900,5,
-0x04a920,5,
-0x04a940,5,
-0x04a960,5,
-0x04a980,5,
-0x04a9a0,5,
-0x04a9c0,5,
-0x04a9e0,5,
-0x04aa00,5,
-0x04aa20,5,
-0x04aa40,5,
-0x04aa60,5,
-0x04aa80,5,
-0x04aaa0,5,
-0x04aac0,5,
-0x04aae0,5,
-0x04ab00,5,
-0x04ab20,5,
-0x04ab40,5,
-0x04ab60,5,
-0x04ab80,5,
-0x04aba0,5,
-0x04abc0,5,
-0x04abe0,5,
-0x04ac00,5,
-0x04ac20,5,
-0x04ac40,5,
-0x04ac60,5,
-0x04ac80,5,
-0x04aca0,5,
-0x04acc0,5,
-0x04ace0,5,
-0x04ad00,5,
-0x04ad20,5,
-0x04ad40,5,
-0x04ad60,5,
-0x04ad80,5,
-0x04ada0,5,
-0x04adc0,5,
-0x04ade0,5,
-0x04ae00,5,
-0x04ae20,5,
-0x04ae40,5,
-0x04ae60,5,
-0x04ae80,5,
-0x04aea0,5,
-0x04aec0,5,
-0x04aee0,5,
-0x04af00,5,
-0x04af20,5,
-0x04af40,5,
-0x04af60,5,
-0x04af80,5,
-0x04afa0,5,
-0x04afc0,5,
-0x04afe0,5,
-0x04b000,5,
-0x04b020,5,
-0x04b040,5,
-0x04b060,5,
-0x04b080,5,
-0x04b0a0,5,
-0x04b0c0,5,
-0x04b0e0,5,
-0x04b100,5,
-0x04b120,5,
-0x04b140,5,
-0x04b160,5,
-0x04b180,5,
-0x04b1a0,5,
-0x04b1c0,5,
-0x04b1e0,5,
-0x04b200,5,
-0x04b220,5,
-0x04b240,5,
-0x04b260,5,
-0x04b280,5,
-0x04b2a0,5,
-0x04b2c0,5,
-0x04b2e0,5,
-0x04b300,5,
-0x04b320,5,
-0x04b340,5,
-0x04b360,5,
-0x04b380,5,
-0x04b3a0,5,
-0x04b3c0,5,
-0x04b3e0,5,
-0x04b400,5,
-0x04b420,5,
-0x04b440,5,
-0x04b460,5,
-0x04b480,5,
-0x04b4a0,5,
-0x04b4c0,5,
-0x04b4e0,5,
-0x04b500,5,
-0x04b520,5,
-0x04b540,5,
-0x04b560,5,
-0x04b580,5,
-0x04b5a0,5,
-0x04b5c0,5,
-0x04b5e0,5,
-0x04b600,5,
-0x04b620,5,
-0x04b640,5,
-0x04b660,5,
-0x04b680,5,
-0x04b6a0,5,
-0x04b6c0,5,
-0x04b6e0,5,
-0x04b700,5,
-0x04b720,5,
-0x04b740,5,
-0x04b760,5,
-0x04b780,5,
-0x04b7a0,5,
-0x04b7c0,5,
-0x04b7e0,5,
-0x04b800,5,
-0x04b820,5,
-0x04b840,5,
-0x04b860,5,
-0x04b880,5,
-0x04b8a0,5,
-0x04b8c0,5,
-0x04b8e0,5,
-0x04b900,5,
-0x04b920,5,
-0x04b940,5,
-0x04b960,5,
-0x04b980,5,
-0x04b9a0,5,
-0x04b9c0,5,
-0x04b9e0,5,
-0x04ba00,5,
-0x04ba20,5,
-0x04ba40,5,
-0x04ba60,5,
-0x04ba80,5,
-0x04baa0,5,
-0x04bac0,5,
-0x04bae0,5,
-0x04bb00,5,
-0x04bb20,5,
-0x04bb40,5,
-0x04bb60,5,
-0x04bb80,5,
-0x04bba0,5,
-0x04bbc0,5,
-0x04bbe0,5,
-0x04bc00,5,
-0x04bc20,5,
-0x04bc40,5,
-0x04bc60,5,
-0x04bc80,5,
-0x04bca0,5,
-0x04bcc0,5,
-0x04bce0,5,
-0x04bd00,5,
-0x04bd20,5,
-0x04bd40,5,
-0x04bd60,5,
-0x04bd80,5,
-0x04bda0,5,
-0x04bdc0,5,
-0x04bde0,5,
-0x04be00,5,
-0x04be20,5,
-0x04be40,5,
-0x04be60,5,
-0x04be80,5,
-0x04bea0,5,
-0x04bec0,5,
-0x04bee0,5,
-0x04bf00,5,
-0x04bf20,5,
-0x04bf40,5,
-0x04bf60,5,
-0x04bf80,5,
-0x04bfa0,5,
-0x04bfc0,5,
-0x04bfe0,5,
-0x04c000,5,
-0x04c020,5,
-0x04c040,5,
-0x04c060,5,
-0x04c080,5,
-0x04c0a0,5,
-0x04c0c0,5,
-0x04c0e0,5,
-0x04c100,5,
-0x04c120,5,
-0x04c140,5,
-0x04c160,5,
-0x04c180,5,
-0x04c1a0,5,
-0x04c1c0,5,
-0x04c1e0,5,
-0x04c200,5,
-0x04c220,5,
-0x04c240,5,
-0x04c260,5,
-0x04c280,5,
-0x04c2a0,5,
-0x04c2c0,5,
-0x04c2e0,5,
-0x04c300,5,
-0x04c320,5,
-0x04c340,5,
-0x04c360,5,
-0x04c380,5,
-0x04c3a0,5,
-0x04c3c0,5,
-0x04c3e0,5,
-0x04c400,5,
-0x04c420,5,
-0x04c440,5,
-0x04c460,5,
-0x04c480,5,
-0x04c4a0,5,
-0x04c4c0,5,
-0x04c4e0,5,
-0x04c500,5,
-0x04c520,5,
-0x04c540,5,
-0x04c560,5,
-0x04c580,5,
-0x04c5a0,5,
-0x04c5c0,5,
-0x04c5e0,5,
-0x04c600,5,
-0x04c620,5,
-0x04c640,5,
-0x04c660,5,
-0x04c680,5,
-0x04c6a0,5,
-0x04c6c0,5,
-0x04c6e0,5,
-0x04c700,5,
-0x04c720,5,
-0x04c740,5,
-0x04c760,5,
-0x04c780,5,
-0x04c7a0,5,
-0x04c7c0,5,
-0x04c7e0,5,
-0x04c800,5,
-0x04c820,5,
-0x04c840,5,
-0x04c860,5,
-0x04c880,5,
-0x04c8a0,5,
-0x04c8c0,5,
-0x04c8e0,5,
-0x04c900,5,
-0x04c920,5,
-0x04c940,5,
-0x04c960,5,
-0x04c980,5,
-0x04c9a0,5,
-0x04c9c0,5,
-0x04c9e0,5,
-0x04ca00,5,
-0x04ca20,5,
-0x04ca40,5,
-0x04ca60,5,
-0x04ca80,5,
-0x04caa0,5,
-0x04cac0,5,
-0x04cae0,5,
-0x04cb00,5,
-0x04cb20,5,
-0x04cb40,5,
-0x04cb60,5,
-0x04cb80,5,
-0x04cba0,5,
-0x04cbc0,5,
-0x04cbe0,5,
-0x04cc00,5,
-0x04cc20,5,
-0x04cc40,5,
-0x04cc60,5,
-0x04cc80,5,
-0x04cca0,5,
-0x04ccc0,5,
-0x04cce0,5,
-0x04cd00,5,
-0x04cd20,5,
-0x04cd40,5,
-0x04cd60,5,
-0x04cd80,5,
-0x04cda0,5,
-0x04cdc0,5,
-0x04cde0,5,
-0x04ce00,5,
-0x04ce20,5,
-0x04ce40,5,
-0x04ce60,5,
-0x04ce80,5,
-0x04cea0,5,
-0x04cec0,5,
-0x04cee0,5,
-0x04cf00,5,
-0x04cf20,5,
-0x04cf40,5,
-0x04cf60,5,
-0x04cf80,5,
-0x04cfa0,5,
-0x04cfc0,5,
-0x04cfe0,5,
-0x050004,1,
-0x05000c,5,
-0x05900c,10,
-0x05903c,1,
-0x060400,5,
-0x060500,6,
-0x060520,6,
-0x060600,6,
-0x060700,7,
-0x060800,64,
-0x060940,1,
-0x060a04,7,
-0x060c00,4,
-0x060d00,2,
-0x060e00,4,
-0x060f40,16,
-0x060f88,2,
-0x061000,34,
-0x061100,34,
-0x061200,34,
-0x061300,34,
-0x061400,34,
-0x061500,34,
-0x061600,34,
-0x061700,34,
-0x061800,34,
-0x061900,34,
-0x061a00,34,
-0x061b00,34,
-0x061c00,34,
-0x061d00,34,
-0x061e00,34,
-0x061f00,34,
-0x062100,2,
-0x064000,2048,
-0x066100,3,
-0x068000,2,
-0x068014,2,
-0x068028,3,
-0x068040,1,
-0x068050,2,
-0x068060,1,
-0x068070,2,
-0x0680e4,5,
-0x068800,7,
-0x068820,4,
-0x068868,6,
-0x068980,32,
-0x068a20,1,
-0x068a30,2,
-0x068a80,2,
-0x070000,1,
-0x07000c,6,
-0x070028,3,
-0x070040,12,
-0x07007c,13,
-0x0700bc,6,
-0x0700d8,5,
-0x0700f0,20,
-0x070144,1,
-0x070180,5,
-0x0701fc,1,
-0x070210,12,
-0x070244,7,
-0x070290,12,
-0x0702c4,1,
-0x0702d0,4,
-0x070300,69,
-0x070418,2,
-0x070424,1,
-0x07042c,1,
-0x070434,3,
-0x070448,1,
-0x070450,1,
-0x071000,33,
-0x071100,33,
-0x071200,33,
-0x071300,33,
-0x071400,33,
-0x071500,33,
-0x071600,33,
-0x071700,33,
-0x071800,33,
-0x071900,33,
-0x071a00,33,
-0x071b00,33,
-0x072000,67,
-0x072200,67,
-0x072400,67,
-0x072600,67,
-0x072800,67,
-0x072a00,67,
-0x072c00,67,
-0x073000,33,
-0x073100,33,
-0x073200,33,
-0x073300,33,
-0x073400,33,
-0x073500,33,
-0x073600,33,
-0x073700,33,
-0x073800,33,
-0x073900,33,
-0x073a00,33,
-0x073b00,33,
-0x074000,1536,
-0x076000,12,
-0x077000,384,
-0x077800,256,
-0x078000,17,
-0x078080,17,
-0x078100,17,
-0x078180,17,
-0x078210,5,
-0x078240,1,
-0x078250,1,
-0x078260,1,
-0x078270,1,
-0x078284,2,
-0x0782d4,59,
-0x078400,2,
-0x078420,1,
-0x078a60,5,
-0x078a84,16,
-0x078b00,32,
-0x078b84,6,
-0x078c20,10,
-0x078c50,2,
-0x078c5c,7,
-0x078c80,4,
-0x078ca0,1,
-0x078cc0,9,
-0x078e60,1,
-0x078e80,10,
-0x078ec0,2,
-0x078ecc,1,
-0x078ee0,6,
-0x078f00,7,
-0x078f20,7,
-0x078f44,2,
-0x078f50,2,
-0x078f60,3,
-0x078f70,1,
-0x078f78,2,
-0x078fb4,6,
-0x078fd0,1,
-0x079000,1,
-0x079008,1,
-0x079010,1,
-0x079018,1,
-0x079020,1,
-0x079028,1,
-0x079030,1,
-0x079038,1,
-0x079040,1,
-0x079048,1,
-0x079050,1,
-0x079058,1,
-0x079060,1,
-0x079068,1,
-0x079070,1,
-0x079078,1,
-0x079080,1,
-0x079088,1,
-0x079090,1,
-0x079098,1,
-0x0790a0,1,
-0x0790a8,1,
-0x0790b0,1,
-0x0790b8,1,
-0x0790c0,1,
-0x0790c8,1,
-0x0790d0,1,
-0x0790d8,1,
-0x0790e0,1,
-0x0790e8,1,
-0x0790f0,1,
-0x0790f8,1,
-0x079100,1,
-0x079108,1,
-0x079110,1,
-0x079118,1,
-0x079120,1,
-0x079128,1,
-0x079130,1,
-0x079138,1,
-0x079140,1,
-0x079148,1,
-0x079150,1,
-0x079158,1,
-0x079160,1,
-0x079168,1,
-0x079170,1,
-0x079178,1,
-0x079180,1,
-0x079188,1,
-0x079190,1,
-0x079198,1,
-0x0791a0,1,
-0x0791a8,1,
-0x0791b0,1,
-0x0791b8,1,
-0x0791c0,1,
-0x0791c8,1,
-0x0791d0,1,
-0x0791d8,1,
-0x0791e0,1,
-0x0791e8,1,
-0x0791f0,1,
-0x0791f8,1,
-0x079200,1,
-0x079208,1,
-0x079210,1,
-0x079218,1,
-0x079220,1,
-0x079228,1,
-0x079230,1,
-0x079238,1,
-0x079240,1,
-0x079248,1,
-0x079250,1,
-0x079258,1,
-0x079260,1,
-0x079268,1,
-0x079270,1,
-0x079278,1,
-0x079280,1,
-0x079288,1,
-0x079290,1,
-0x079298,1,
-0x0792a0,1,
-0x0792a8,1,
-0x0792b0,1,
-0x0792b8,1,
-0x0792c0,1,
-0x0792c8,1,
-0x0792d0,1,
-0x0792d8,1,
-0x0792e0,1,
-0x0792e8,1,
-0x0792f0,1,
-0x0792f8,1,
-0x079300,1,
-0x079308,1,
-0x079310,1,
-0x079318,1,
-0x079320,1,
-0x079328,1,
-0x079330,1,
-0x079338,1,
-0x079340,1,
-0x079348,1,
-0x079350,1,
-0x079358,1,
-0x079360,1,
-0x079368,1,
-0x079370,1,
-0x079378,1,
-0x079380,1,
-0x079388,1,
-0x079390,1,
-0x079398,1,
-0x0793a0,1,
-0x0793a8,1,
-0x0793b0,1,
-0x0793b8,1,
-0x0793c0,1,
-0x0793c8,1,
-0x0793d0,1,
-0x0793d8,1,
-0x0793e0,1,
-0x0793e8,1,
-0x0793f0,1,
-0x0793f8,1,
-0x079400,1,
-0x079408,1,
-0x079410,1,
-0x079418,1,
-0x079420,1,
-0x079428,1,
-0x079430,1,
-0x079438,1,
-0x079440,1,
-0x079448,1,
-0x079450,1,
-0x079458,1,
-0x079460,1,
-0x079468,1,
-0x079470,1,
-0x079478,1,
-0x079480,1,
-0x079488,1,
-0x079490,1,
-0x079498,1,
-0x0794a0,1,
-0x0794a8,1,
-0x0794b0,1,
-0x0794b8,1,
-0x0794c0,1,
-0x0794c8,1,
-0x0794d0,1,
-0x0794d8,1,
-0x0794e0,1,
-0x0794e8,1,
-0x0794f0,1,
-0x0794f8,1,
-0x079500,1,
-0x079508,1,
-0x079510,1,
-0x079518,1,
-0x079520,1,
-0x079528,1,
-0x079530,1,
-0x079538,1,
-0x079540,1,
-0x079548,1,
-0x079550,1,
-0x079558,1,
-0x079560,1,
-0x079568,1,
-0x079570,1,
-0x079578,1,
-0x079580,1,
-0x079588,1,
-0x079590,1,
-0x079598,1,
-0x0795a0,1,
-0x0795a8,1,
-0x0795b0,1,
-0x0795b8,1,
-0x0795c0,1,
-0x0795c8,1,
-0x0795d0,1,
-0x0795d8,1,
-0x0795e0,1,
-0x0795e8,1,
-0x0795f0,1,
-0x0795f8,1,
-0x079600,1,
-0x079608,1,
-0x079610,1,
-0x079618,1,
-0x079620,1,
-0x079628,1,
-0x079630,1,
-0x079638,1,
-0x079640,1,
-0x079648,1,
-0x079650,1,
-0x079658,1,
-0x079660,1,
-0x079668,1,
-0x079670,1,
-0x079678,1,
-0x079680,1,
-0x079688,1,
-0x079690,1,
-0x079698,1,
-0x0796a0,1,
-0x0796a8,1,
-0x0796b0,1,
-0x0796b8,1,
-0x0796c0,1,
-0x0796c8,1,
-0x0796d0,1,
-0x0796d8,1,
-0x0796e0,1,
-0x0796e8,1,
-0x0796f0,1,
-0x0796f8,1,
-0x079700,1,
-0x079708,1,
-0x079710,1,
-0x079718,1,
-0x079720,1,
-0x079728,1,
-0x079730,1,
-0x079738,1,
-0x079740,1,
-0x079748,1,
-0x079750,1,
-0x079758,1,
-0x079760,1,
-0x079768,1,
-0x079770,1,
-0x079778,1,
-0x079780,1,
-0x079788,1,
-0x079790,1,
-0x079798,1,
-0x0797a0,1,
-0x0797a8,1,
-0x0797b0,1,
-0x0797b8,1,
-0x0797c0,1,
-0x0797c8,1,
-0x0797d0,1,
-0x0797d8,1,
-0x0797e0,1,
-0x0797e8,1,
-0x0797f0,1,
-0x0797f8,1,
-0x079800,1,
-0x079808,1,
-0x079810,1,
-0x079818,1,
-0x079820,1,
-0x079828,1,
-0x079830,1,
-0x079838,1,
-0x079840,1,
-0x079848,1,
-0x079850,1,
-0x079858,1,
-0x079860,1,
-0x079868,1,
-0x079870,1,
-0x079878,1,
-0x079880,1,
-0x079888,1,
-0x079890,1,
-0x079898,1,
-0x0798a0,1,
-0x0798a8,1,
-0x0798b0,1,
-0x0798b8,1,
-0x0798c0,1,
-0x0798c8,1,
-0x0798d0,1,
-0x0798d8,1,
-0x0798e0,1,
-0x0798e8,1,
-0x0798f0,1,
-0x0798f8,1,
-0x079900,1,
-0x079908,1,
-0x079910,1,
-0x079918,1,
-0x079920,1,
-0x079928,1,
-0x079930,1,
-0x079938,1,
-0x079940,1,
-0x079948,1,
-0x079950,1,
-0x079958,1,
-0x079960,1,
-0x079968,1,
-0x079970,1,
-0x079978,1,
-0x079980,1,
-0x079988,1,
-0x079990,1,
-0x079998,1,
-0x0799a0,1,
-0x0799a8,1,
-0x0799b0,1,
-0x0799b8,1,
-0x0799c0,1,
-0x0799c8,1,
-0x0799d0,1,
-0x0799d8,1,
-0x0799e0,1,
-0x0799e8,1,
-0x0799f0,1,
-0x0799f8,1,
-0x079a00,1,
-0x079a08,1,
-0x079a10,1,
-0x079a18,1,
-0x079a20,1,
-0x079a28,1,
-0x079a30,1,
-0x079a38,1,
-0x079a40,1,
-0x079a48,1,
-0x079a50,1,
-0x079a58,1,
-0x079a60,1,
-0x079a68,1,
-0x079a70,1,
-0x079a78,1,
-0x079a80,1,
-0x079a88,1,
-0x079a90,1,
-0x079a98,1,
-0x079aa0,1,
-0x079aa8,1,
-0x079ab0,1,
-0x079ab8,1,
-0x079ac0,1,
-0x079ac8,1,
-0x079ad0,1,
-0x079ad8,1,
-0x079ae0,1,
-0x079ae8,1,
-0x079af0,1,
-0x079af8,1,
-0x079b00,1,
-0x079b08,1,
-0x079b10,1,
-0x079b18,1,
-0x079b20,1,
-0x079b28,1,
-0x079b30,1,
-0x079b38,1,
-0x079b40,1,
-0x079b48,1,
-0x079b50,1,
-0x079b58,1,
-0x079b60,1,
-0x079b68,1,
-0x079b70,1,
-0x079b78,1,
-0x079b80,1,
-0x079b88,1,
-0x079b90,1,
-0x079b98,1,
-0x079ba0,1,
-0x079ba8,1,
-0x079bb0,1,
-0x079bb8,1,
-0x079bc0,1,
-0x079bc8,1,
-0x079bd0,1,
-0x079bd8,1,
-0x079be0,1,
-0x079be8,1,
-0x079bf0,1,
-0x079bf8,1,
-0x079c00,1,
-0x079c08,1,
-0x079c10,1,
-0x079c18,1,
-0x079c20,1,
-0x079c28,1,
-0x079c30,1,
-0x079c38,1,
-0x079c40,1,
-0x079c48,1,
-0x079c50,1,
-0x079c58,1,
-0x079c60,1,
-0x079c68,1,
-0x079c70,1,
-0x079c78,1,
-0x079c80,1,
-0x079c88,1,
-0x079c90,1,
-0x079c98,1,
-0x079ca0,1,
-0x079ca8,1,
-0x079cb0,1,
-0x079cb8,1,
-0x079cc0,1,
-0x079cc8,1,
-0x079cd0,1,
-0x079cd8,1,
-0x079ce0,1,
-0x079ce8,1,
-0x079cf0,1,
-0x079cf8,1,
-0x079d00,1,
-0x079d08,1,
-0x079d10,1,
-0x079d18,1,
-0x079d20,1,
-0x079d28,1,
-0x079d30,1,
-0x079d38,1,
-0x079d40,1,
-0x079d48,1,
-0x079d50,1,
-0x079d58,1,
-0x079d60,1,
-0x079d68,1,
-0x079d70,1,
-0x079d78,1,
-0x079d80,1,
-0x079d88,1,
-0x079d90,1,
-0x079d98,1,
-0x079da0,1,
-0x079da8,1,
-0x079db0,1,
-0x079db8,1,
-0x079dc0,1,
-0x079dc8,1,
-0x079dd0,1,
-0x079dd8,1,
-0x079de0,1,
-0x079de8,1,
-0x079df0,1,
-0x079df8,1,
-0x079e00,1,
-0x079e08,1,
-0x079e10,1,
-0x079e18,1,
-0x079e20,1,
-0x079e28,1,
-0x079e30,1,
-0x079e38,1,
-0x079e40,1,
-0x079e48,1,
-0x079e50,1,
-0x079e58,1,
-0x079e60,1,
-0x079e68,1,
-0x079e70,1,
-0x079e78,1,
-0x079e80,1,
-0x079e88,1,
-0x079e90,1,
-0x079e98,1,
-0x079ea0,1,
-0x079ea8,1,
-0x079eb0,1,
-0x079eb8,1,
-0x079ec0,1,
-0x079ec8,1,
-0x079ed0,1,
-0x079ed8,1,
-0x079ee0,1,
-0x079ee8,1,
-0x079ef0,1,
-0x079ef8,1,
-0x079f00,1,
-0x079f08,1,
-0x079f10,1,
-0x079f18,1,
-0x079f20,1,
-0x079f28,1,
-0x079f30,1,
-0x079f38,1,
-0x079f40,1,
-0x079f48,1,
-0x079f50,1,
-0x079f58,1,
-0x079f60,1,
-0x079f68,1,
-0x079f70,1,
-0x079f78,1,
-0x079f80,1,
-0x079f88,1,
-0x079f90,1,
-0x079f98,1,
-0x079fa0,1,
-0x079fa8,1,
-0x079fb0,1,
-0x079fb8,1,
-0x079fc0,1,
-0x079fc8,1,
-0x079fd0,1,
-0x079fd8,1,
-0x079fe0,1,
-0x079fe8,1,
-0x079ff0,1,
-0x079ff8,1,
-0x07bef8,2,
-0x07bf04,1,
-0x07bf14,22,
-0x07bf80,2,
-0x07bffc,1033,
-0x07e000,1044,
-0x07f100,8,
-0x07f160,4,
-0x07f200,3,
-0x07f7f8,514,
-0x080680,7,
-0x081000,3,
-0x081010,16,
-0x081120,1,
-0x081130,2,
-0x081140,1,
-0x081150,2,
-0x081160,1,
-0x081170,2,
-0x081204,18,
-0x081304,2,
-0x08139c,25,
-0x081404,23,
-0x081468,6,
-0x081504,2,
-0x081604,14,
-0x081640,2,
-0x08164c,15,
-0x08168c,15,
-0x0816cc,15,
-0x08170c,15,
-0x08174c,15,
-0x08178c,15,
-0x0817cc,15,
-0x08180c,13,
-0x081904,5,
-0x081a30,4,
-0x081a60,18,
-0x081ab0,3,
-0x081ad0,4,
-0x081c00,128,
-0x081e04,12,
-0x082000,8,
-0x082024,1,
-0x082030,1,
-0x082044,20,
-0x08209c,2,
-0x0820ac,14,
-0x082180,1,
-0x0821c4,1,
-0x0821e0,1,
-0x0821e8,3,
-0x0821f8,1,
-0x082200,9,
-0x08229c,3,
-0x0822e0,7,
-0x082328,2,
-0x082430,20,
-0x082484,3,
-0x082498,2,
-0x082500,16,
-0x082548,2,
-0x082558,2,
-0x082564,2,
-0x082590,11,
-0x0825c4,7,
-0x0827fc,14,
-0x082838,66,
-0x082c00,13,
-0x082c38,66,
-0x083000,13,
-0x083038,66,
-0x083800,2,
-0x083814,2,
-0x083828,3,
-0x083840,1,
-0x083850,2,
-0x083860,1,
-0x083870,2,
-0x0838e4,5,
-0x083910,5,
-0x083948,6,
-0x0f0000,3,
-0x0f0014,4,
-0x0f0040,6,
-0x0f0078,3,
-0x0f0090,2,
-0x0f00a4,2,
-0x0f00b0,4,
-0x0f00f0,24,
-0x0f0180,17,
-0x0f01e0,4,
-0x0f01f4,1,
-0x0f0200,4,
-0x0f0240,9,
-0x0f0270,2,
-0x0f0280,3,
-0x0f02a4,5,
-0x0f02c0,11,
-0x0f0400,2,
-0x0f0410,10,
-0x0f0510,20,
-0x0f3000,1,
-0x0f300c,3,
-0x0f301c,21,
-0x0f3078,14,
-0x0f30c0,13,
-0x0f30fc,2,
-0x0f310c,1,
-0x0f3120,2,
-0x0f3130,5,
-0x0f3184,13,
-0x0f31bc,2,
-0x0f3204,1,
-0x0f3210,5,
-0x0f3240,1,
-0x0f3248,3,
-0x0f3260,6,
-0x0f3280,8,
-0x0f32d4,1,
-0x0f3400,12,
-0x0f3434,3,
-0x0f3444,15,
-0x0f3500,1,
-0x0f3520,6,
-0x0f3540,15,
-0x0f3580,9,
-0x0f35b0,2,
-0x0f35c0,2,
-0x0f35dc,6,
-0x0f360c,6,
-0x0f362c,5,
-0x0f3700,15,
-0x0f3740,4,
-0x0f3760,1,
-0x0f3770,2,
-0x0f3780,1,
-0x0f3790,2,
-0x0f3800,3,
-0x0f3810,25,
-0x0f389c,5,
-0x0f38f8,2,
-0x0f3a00,3,
-0x0f3a10,4,
-0x0f3a24,3,
-0x0f3a34,4,
-0x0f3a84,3,
-0x0f3b00,1,
-0x0f3b08,2,
-0x0f3b20,1,
-0x0f3b28,23,
-0x0f3b88,2,
-0x0f3ba0,1,
-0x0f3ba8,27,
-0x0f3c18,3,
-0x0f3c30,4,
-0x0f3d00,1,
-0x0f3d14,1,
-0x0f3d28,2,
-0x0f3d40,1,
-0x0f3d50,2,
-0x0f3de4,4,
-0x0f3e00,73,
diff --git a/mstdump/mstdump_dbs/ConnectX3.csv b/mstdump/mstdump_dbs/ConnectX3.csv
deleted file mode 100755 (executable)
index 940e162..0000000
+++ /dev/null
@@ -1,3599 +0,0 @@
-#Addr, Size, Enable addr
-0x010000,2,
-0x010010,2,
-0x0100a0,15,
-0x0100ec,2,
-0x0100fc,2,
-0x01010c,2,
-0x010150,1,
-0x0101cc,1,
-0x0101fc,1,
-0x010208,9,
-0x010300,6,
-0x010320,20,
-0x010374,3,
-0x010400,1,
-0x010410,2,
-0x010440,1,
-0x010450,2,
-0x010500,1,
-0x010510,2,
-0x010520,2,
-0x01052c,3,
-0x01053c,3,
-0x010550,1,
-0x010600,16,
-0x010680,1,
-0x010690,2,
-0x0106ac,1,
-0x0106b8,1,
-0x0106e0,3,
-0x0106f0,3,
-0x010740,4,
-0x010754,8,
-0x010800,2,
-0x010810,2,
-0x0108a0,15,
-0x0108ec,2,
-0x0108fc,2,
-0x01090c,2,
-0x010950,1,
-0x0109cc,1,
-0x0109fc,1,
-0x010a08,9,
-0x010b00,6,
-0x010b20,20,
-0x010b74,3,
-0x010c00,1,
-0x010c10,2,
-0x010c40,1,
-0x010c50,2,
-0x010d00,1,
-0x010d10,2,
-0x010d20,2,
-0x010d2c,3,
-0x010d3c,3,
-0x010d50,1,
-0x010e00,16,
-0x010e80,1,
-0x010e90,2,
-0x010eac,1,
-0x010eb8,1,
-0x010ee0,3,
-0x010ef0,3,
-0x010f40,4,
-0x010f54,8,
-0x011000,1,
-0x011010,4,
-0x011024,2,
-0x011080,2,
-0x011090,12,
-0x011180,6,
-0x011200,7,
-0x011220,1,
-0x011240,4,
-0x011260,1,
-0x011280,5,
-0x011300,1,
-0x011310,2,
-0x011400,4,
-0x011460,1,
-0x0114b0,4,
-0x011800,1,
-0x011810,4,
-0x011824,2,
-0x011880,2,
-0x011890,12,
-0x011980,6,
-0x011a00,7,
-0x011a20,1,
-0x011a40,4,
-0x011a60,1,
-0x011a80,5,
-0x011b00,1,
-0x011b10,2,
-0x011c00,4,
-0x011c60,1,
-0x011cb0,4,
-0x012000,1,
-0x01200c,1,
-0x012020,1,
-0x012030,2,
-0x012044,2,
-0x0120a0,4,
-0x0120c0,7,
-0x01211c,13,
-0x012164,1,
-0x012170,4,
-0x0121e0,6,
-0x012250,1,
-0x012360,4,
-0x012380,3,
-0x012390,5,
-0x0123b0,5,
-0x012440,3,
-0x012450,3,
-0x0124a8,2,
-0x0124c0,2,
-0x0124d0,2,
-0x012568,2,
-0x0125c0,4,
-0x0125fc,10,
-0x012628,6,
-0x012644,1,
-0x012660,2,
-0x012670,2,
-0x01268c,5,
-0x01270c,1,
-0x012728,8,
-0x012750,2,
-0x01275c,1,
-0x0127d8,2,
-0x0127e8,2,
-0x012840,1,
-0x012850,2,
-0x0128a0,5,
-0x012904,1,
-0x012910,5,
-0x012928,4,
-0x012944,2,
-0x012950,1,
-0x012958,4,
-0x012980,4,
-0x0129a0,1,
-0x0129b0,2,
-0x012d48,4,
-0x013000,9,
-0x013040,6,
-0x013060,6,
-0x013080,13,
-0x0130c0,13,
-0x013100,37,
-0x0131a0,5,
-0x0131c0,5,
-0x0131e0,5,
-0x013200,37,
-0x0132a0,5,
-0x0132c0,5,
-0x0132e0,5,
-0x013300,9,
-0x013330,2,
-0x013340,1,
-0x013350,2,
-0x013360,1,
-0x013370,2,
-0x013380,2,
-0x01338c,38,
-0x013430,2,
-0x013440,1,
-0x013450,2,
-0x013460,1,
-0x013470,2,
-0x013480,2,
-0x01348c,30,
-0x013510,2,
-0x013520,1,
-0x013530,2,
-0x013544,2,
-0x013580,8,
-0x0135a4,6,
-0x0135c0,16,
-0x013604,2,
-0x013628,2,
-0x013634,1,
-0x013644,2,
-0x013668,2,
-0x013674,1,
-0x013684,2,
-0x0136a8,2,
-0x0136b4,1,
-0x0136c4,2,
-0x0136e8,2,
-0x0136f4,1,
-0x013700,21,
-0x013800,1,
-0x013820,2,
-0x01382c,10,
-0x01386c,10,
-0x013898,3,
-0x0138b0,2,
-0x013a00,1,
-0x013a20,2,
-0x013a2c,10,
-0x013a6c,10,
-0x013a98,3,
-0x013ab0,2,
-0x013c00,4,
-0x013c14,7,
-0x013c38,4,
-0x013c54,2,
-0x013ca0,1,
-0x013cb0,2,
-0x013cc0,1,
-0x013cd0,2,
-0x013d00,3,
-0x013d10,6,
-0x013d44,7,
-0x013d64,8,
-0x013d90,2,
-0x013da0,6,
-0x013e00,1,
-0x014000,3,
-0x014010,15,
-0x014050,16,
-0x01409c,1,
-0x0140b0,9,
-0x0140e0,1,
-0x0140f0,3,
-0x014100,12,
-0x014134,4,
-0x014158,1,
-0x014180,1,
-0x014194,2,
-0x0141ac,11,
-0x0141ec,4,
-0x014200,3,
-0x014210,15,
-0x014250,16,
-0x01429c,1,
-0x0142b0,9,
-0x0142e0,1,
-0x0142f0,3,
-0x014300,12,
-0x014334,4,
-0x014358,1,
-0x014380,1,
-0x014394,2,
-0x0143ac,11,
-0x0143ec,4,
-0x014400,11,
-0x01444c,8,
-0x014470,2,
-0x01447c,33,
-0x018000,2,
-0x01805c,4,
-0x018080,8,
-0x0180a4,7,
-0x0180c4,2,
-0x018100,32,
-0x018200,4,
-0x018224,1,
-0x018234,5,
-0x018300,32,
-0x018384,1,
-0x01838c,1,
-0x0183a4,3,
-0x018400,5,
-0x018420,5,
-0x018440,5,
-0x018460,5,
-0x018480,5,
-0x0184a0,5,
-0x0184c0,5,
-0x0184e0,5,
-0x018500,5,
-0x018520,5,
-0x018540,5,
-0x018560,5,
-0x018580,5,
-0x0185a0,5,
-0x0185c0,5,
-0x0185e0,5,
-0x018610,4,
-0x018624,4,
-0x018810,3,
-0x018820,11,
-0x018850,3,
-0x018860,7,
-0x018884,11,
-0x0188c8,2,
-0x0188d4,2,
-0x0188e0,8,
-0x018a04,3,
-0x018a20,3,
-0x018a30,4,
-0x018a44,21,
-0x018b00,16,
-0x018b4c,5,
-0x018b68,5,
-0x018c00,17,
-0x018c54,28,
-0x018cd4,13,
-0x018d0c,2,
-0x018e00,1,
-0x018e10,2,
-0x018e50,2,
-0x018f00,4,
-0x018f14,7,
-0x018f38,5,
-0x018f54,2,
-0x018fa0,1,
-0x018fb0,2,
-0x018fc0,1,
-0x018fd0,2,
-0x018fe0,5,
-0x019ff0,2052,
-0x01c004,2,
-0x01c010,1,
-0x01c01c,2,
-0x01c06c,27,
-0x01c180,1,
-0x01c190,2,
-0x01c1a0,1,
-0x01c1b0,2,
-0x01c1c0,7,
-0x01c1e0,7,
-0x01c200,17,
-0x01c254,28,
-0x01c2d4,13,
-0x01c30c,2,
-0x01c40c,5,
-0x01c428,2,
-0x01c434,1,
-0x01c448,2,
-0x01c454,1,
-0x01c464,25,
-0x01c4d8,2,
-0x01c4e4,7,
-0x01c608,4,
-0x01c624,3,
-0x01c63c,1,
-0x01c64c,27,
-0x01c6c0,18,
-0x01c70c,2,
-0x01c71c,5,
-0x01c738,2,
-0x01c744,1,
-0x01c75c,1,
-0x01c7dc,1,
-0x01c7e4,1,
-0x01c7f8,7,
-0x01c818,7,
-0x01c840,19,
-0x01c8a0,5,
-0x01c8c0,1,
-0x01c900,5,
-0x01c918,7,
-0x01c940,19,
-0x01c9a0,5,
-0x01c9c0,1,
-0x01ca00,5,
-0x01ca18,7,
-0x01ca40,19,
-0x01caa0,5,
-0x01cac0,1,
-0x01cb00,5,
-0x01cb18,7,
-0x01cb40,19,
-0x01cba0,5,
-0x01cbc0,1,
-0x01cc00,5,
-0x01cc18,7,
-0x01cc40,19,
-0x01cca0,5,
-0x01ccc0,1,
-0x01cd00,5,
-0x01cd18,7,
-0x01cd40,19,
-0x01cda0,5,
-0x01cdc0,1,
-0x01ce00,5,
-0x01ce18,7,
-0x01ce40,19,
-0x01cea0,5,
-0x01cec0,1,
-0x01cf00,5,
-0x01cf18,7,
-0x01cf40,19,
-0x01cfa0,5,
-0x01cfc0,1,
-0x01d000,19,
-0x01d054,21,
-0x01d0ac,6,
-0x01d0d0,2,
-0x01d0e8,15,
-0x01d140,1,
-0x01d148,53,
-0x01d220,12,
-0x01d25c,6,
-0x01d278,2,
-0x01d284,1,
-0x01d298,2,
-0x01d2a8,6,
-0x01d300,2,
-0x01d310,20,
-0x01d368,2,
-0x01d37c,6,
-0x01d3c0,5,
-0x01d3e0,6,
-0x01d400,19,
-0x01d454,21,
-0x01d4ac,6,
-0x01d4d0,2,
-0x01d4e8,15,
-0x01d540,1,
-0x01d548,53,
-0x01d620,12,
-0x01d65c,6,
-0x01d678,2,
-0x01d684,1,
-0x01d698,2,
-0x01d6a8,6,
-0x01d700,2,
-0x01d710,20,
-0x01d768,2,
-0x01d77c,6,
-0x01d7c0,5,
-0x01d7e0,6,
-0x01d800,16,
-0x01d844,1,
-0x01d880,8,
-0x01d8c4,1,
-0x01d8cc,5,
-0x01d8e4,7,
-0x01d920,1,
-0x01d968,3,
-0x01d9e0,6,
-0x01da00,2,
-0x01da14,2,
-0x01da20,8,
-0x01da44,1,
-0x01da58,2,
-0x01da64,1,
-0x01da78,8,
-0x01db04,1,
-0x01db0c,14,
-0x01db50,2,
-0x01db60,1,
-0x01db70,2,
-0x01db80,1,
-0x01db90,2,
-0x01dba0,3,
-0x01dc00,1,
-0x01dc0c,1,
-0x01dd80,13,
-0x01ddbc,1,
-0x01dde0,9,
-0x01df00,1,
-0x01df08,1,
-0x01df14,5,
-0x01df38,1,
-0x01df40,1,
-0x01df54,2,
-0x01dfa0,1,
-0x01dfb0,2,
-0x01e5c0,1,
-0x01e5dc,1,
-0x01e5e4,14,
-0x01e620,4,
-0x01e668,6,
-0x01e780,160,
-0x01ea04,12,
-0x01ec00,8,
-0x01ec24,1,
-0x01ec30,1,
-0x01ec44,20,
-0x01ec9c,2,
-0x01ecac,14,
-0x01ed80,1,
-0x01edc4,1,
-0x01ede0,1,
-0x01ede8,3,
-0x01edf8,1,
-0x01ee00,8,
-0x01ee24,1,
-0x01ee30,1,
-0x01ee44,20,
-0x01ee9c,2,
-0x01eeac,14,
-0x01ef80,1,
-0x01efc4,1,
-0x01efe0,1,
-0x01efe8,3,
-0x01eff8,1,
-0x01f000,1024,
-0x030000,1,
-0x030010,2,
-0x030020,1,
-0x030030,2,
-0x030040,1,
-0x030050,2,
-0x030100,27,
-0x030180,3,
-0x030200,80,
-0x030400,288,
-0x030900,32,
-0x030a04,1,
-0x030c00,128,
-0x030e1c,1,
-0x030e3c,1,
-0x030e44,1,
-0x030e5c,16,
-0x030f10,28,
-0x031000,14,
-0x031040,14,
-0x031080,14,
-0x0310c0,14,
-0x031100,133,
-0x031318,13,
-0x033000,1025,
-0x034010,2,
-0x034104,1,
-0x034224,1,
-0x034260,7,
-0x034284,4,
-0x034304,1,
-0x034314,3,
-0x034324,1,
-0x034334,3,
-0x034344,1,
-0x034358,2,
-0x034414,3,
-0x034510,4,
-0x034608,6,
-0x034800,7,
-0x034820,4,
-0x034868,6,
-0x034980,45,
-0x034a40,13,
-0x034a80,13,
-0x034ac0,13,
-0x034b00,13,
-0x034b40,13,
-0x034b80,13,
-0x034bc0,13,
-0x035020,1,
-0x035028,1,
-0x035040,2,
-0x03504c,1,
-0x035058,3,
-0x035068,4,
-0x035104,5,
-0x035200,12,
-0x035240,12,
-0x035280,12,
-0x0352c0,12,
-0x035300,12,
-0x035340,12,
-0x035380,12,
-0x0353c0,12,
-0x036000,128,
-0x036204,12,
-0x036400,8,
-0x036424,1,
-0x036430,1,
-0x036444,20,
-0x03649c,2,
-0x0364ac,14,
-0x036580,1,
-0x0365c4,1,
-0x0365e0,1,
-0x0365e8,3,
-0x0365f8,1,
-0x036600,4,
-0x036614,6,
-0x036638,3,
-0x036654,2,
-0x0366a0,1,
-0x0366b0,2,
-0x0366c0,1,
-0x0366d0,2,
-0x036700,1,
-0x036710,2,
-0x036720,1,
-0x036730,2,
-0x040000,19,
-0x040050,3,
-0x040060,2,
-0x040080,1,
-0x040088,3,
-0x0400a4,5,
-0x0400c0,4,
-0x0400e0,3,
-0x040100,6,
-0x04011c,14,
-0x04015c,1,
-0x040170,4,
-0x040190,3,
-0x0401a4,1,
-0x0401ac,5,
-0x0401c4,1,
-0x0401cc,6,
-0x040200,3,
-0x040210,3,
-0x040220,3,
-0x040230,3,
-0x040240,3,
-0x040250,3,
-0x040260,3,
-0x040270,3,
-0x040280,3,
-0x040290,3,
-0x0402a0,3,
-0x0402b0,3,
-0x0402c0,3,
-0x0402d0,3,
-0x0402e0,3,
-0x0402f0,3,
-0x040304,1,
-0x040314,8,
-0x040340,11,
-0x040490,1,
-0x0404a8,15,
-0x040510,18,
-0x04055c,3,
-0x04056c,3,
-0x04057c,3,
-0x04058c,2,
-0x04059c,17,
-0x040610,16,
-0x0406e0,51,
-0x0407d0,3,
-0x0407f0,1,
-0x040800,337,
-0x040d50,18,
-0x040d9c,4,
-0x040db0,11,
-0x040df0,11,
-0x040e20,1,
-0x040e28,11,
-0x040e58,1,
-0x040e60,2,
-0x040e6c,1,
-0x040e74,11,
-0x040eb0,4,
-0x040ec8,2,
-0x040ed4,7,
-0x040ef8,8,
-0x040f20,4,
-0x041000,33,
-0x041100,30,
-0x041180,15,
-0x0411dc,1,
-0x0411e4,15,
-0x041224,1,
-0x041230,1,
-0x041244,20,
-0x04129c,2,
-0x0412ac,14,
-0x041380,1,
-0x0413c4,1,
-0x0413e0,1,
-0x0413e8,3,
-0x0413f8,1,
-0x041400,8,
-0x041424,1,
-0x041430,1,
-0x041444,20,
-0x04149c,2,
-0x0414ac,14,
-0x041580,1,
-0x0415c4,1,
-0x0415e0,1,
-0x0415e8,3,
-0x0415f8,1,
-0x041600,4,
-0x041614,7,
-0x041638,4,
-0x041654,2,
-0x0416a0,1,
-0x0416b0,2,
-0x0416c0,1,
-0x0416d0,2,
-0x0416e0,1,
-0x041a00,1,
-0x041a10,2,
-0x041a20,1,
-0x041a30,2,
-0x041c00,128,
-0x041e04,12,
-0x042000,5,
-0x042020,5,
-0x042040,5,
-0x042060,5,
-0x042080,5,
-0x0420a0,5,
-0x0420c0,5,
-0x0420e0,5,
-0x042100,5,
-0x042120,5,
-0x042140,5,
-0x042160,5,
-0x042180,5,
-0x0421a0,5,
-0x0421c0,5,
-0x0421e0,5,
-0x042200,5,
-0x042220,5,
-0x042240,5,
-0x042260,5,
-0x042280,5,
-0x0422a0,5,
-0x0422c0,5,
-0x0422e0,5,
-0x042300,5,
-0x042320,5,
-0x042340,5,
-0x042360,5,
-0x042380,5,
-0x0423a0,5,
-0x0423c0,5,
-0x0423e0,5,
-0x042400,5,
-0x042420,5,
-0x042440,5,
-0x042460,5,
-0x042480,5,
-0x0424a0,5,
-0x0424c0,5,
-0x0424e0,5,
-0x042500,5,
-0x042520,5,
-0x042540,5,
-0x042560,5,
-0x042580,5,
-0x0425a0,5,
-0x0425c0,5,
-0x0425e0,5,
-0x042600,5,
-0x042620,5,
-0x042640,5,
-0x042660,5,
-0x042680,5,
-0x0426a0,5,
-0x0426c0,5,
-0x0426e0,5,
-0x042700,5,
-0x042720,5,
-0x042740,5,
-0x042760,5,
-0x042780,5,
-0x0427a0,5,
-0x0427c0,5,
-0x0427e0,5,
-0x042800,5,
-0x042820,5,
-0x042840,5,
-0x042860,5,
-0x042880,5,
-0x0428a0,5,
-0x0428c0,5,
-0x0428e0,5,
-0x042900,5,
-0x042920,5,
-0x042940,5,
-0x042960,5,
-0x042980,5,
-0x0429a0,5,
-0x0429c0,5,
-0x0429e0,5,
-0x042a00,5,
-0x042a20,5,
-0x042a40,5,
-0x042a60,5,
-0x042a80,5,
-0x042aa0,5,
-0x042ac0,5,
-0x042ae0,5,
-0x042b00,5,
-0x042b20,5,
-0x042b40,5,
-0x042b60,5,
-0x042b80,5,
-0x042ba0,5,
-0x042bc0,5,
-0x042be0,5,
-0x042c00,5,
-0x042c20,5,
-0x042c40,5,
-0x042c60,5,
-0x042c80,5,
-0x042ca0,5,
-0x042cc0,5,
-0x042ce0,5,
-0x042d00,5,
-0x042d20,5,
-0x042d40,5,
-0x042d60,5,
-0x042d80,5,
-0x042da0,5,
-0x042dc0,5,
-0x042de0,5,
-0x042e00,5,
-0x042e20,5,
-0x042e40,5,
-0x042e60,5,
-0x042e80,5,
-0x042ea0,5,
-0x042ec0,5,
-0x042ee0,5,
-0x042f00,5,
-0x042f20,5,
-0x042f40,5,
-0x042f60,5,
-0x042f80,5,
-0x042fa0,5,
-0x042fc0,5,
-0x042fe0,5,
-0x043000,5,
-0x043020,5,
-0x043040,5,
-0x043060,5,
-0x043080,5,
-0x0430a0,5,
-0x0430c0,5,
-0x0430e0,5,
-0x043100,5,
-0x043120,5,
-0x043140,5,
-0x043160,5,
-0x043180,5,
-0x0431a0,5,
-0x0431c0,5,
-0x0431e0,5,
-0x043200,5,
-0x043220,5,
-0x043240,5,
-0x043260,5,
-0x043280,5,
-0x0432a0,5,
-0x0432c0,5,
-0x0432e0,5,
-0x043300,5,
-0x043320,5,
-0x043340,5,
-0x043360,5,
-0x043380,5,
-0x0433a0,5,
-0x0433c0,5,
-0x0433e0,5,
-0x043400,5,
-0x043420,5,
-0x043440,5,
-0x043460,5,
-0x043480,5,
-0x0434a0,5,
-0x0434c0,5,
-0x0434e0,5,
-0x043500,5,
-0x043520,5,
-0x043540,5,
-0x043560,5,
-0x043580,5,
-0x0435a0,5,
-0x0435c0,5,
-0x0435e0,5,
-0x043600,5,
-0x043620,5,
-0x043640,5,
-0x043660,5,
-0x043680,5,
-0x0436a0,5,
-0x0436c0,5,
-0x0436e0,5,
-0x043700,5,
-0x043720,5,
-0x043740,5,
-0x043760,5,
-0x043780,5,
-0x0437a0,5,
-0x0437c0,5,
-0x0437e0,5,
-0x043800,5,
-0x043820,5,
-0x043840,5,
-0x043860,5,
-0x043880,5,
-0x0438a0,5,
-0x0438c0,5,
-0x0438e0,5,
-0x043900,5,
-0x043920,5,
-0x043940,5,
-0x043960,5,
-0x043980,5,
-0x0439a0,5,
-0x0439c0,5,
-0x0439e0,5,
-0x043a00,5,
-0x043a20,5,
-0x043a40,5,
-0x043a60,5,
-0x043a80,5,
-0x043aa0,5,
-0x043ac0,5,
-0x043ae0,5,
-0x043b00,5,
-0x043b20,5,
-0x043b40,5,
-0x043b60,5,
-0x043b80,5,
-0x043ba0,5,
-0x043bc0,5,
-0x043be0,5,
-0x043c00,5,
-0x043c20,5,
-0x043c40,5,
-0x043c60,5,
-0x043c80,5,
-0x043ca0,5,
-0x043cc0,5,
-0x043ce0,5,
-0x043d00,5,
-0x043d20,5,
-0x043d40,5,
-0x043d60,5,
-0x043d80,5,
-0x043da0,5,
-0x043dc0,5,
-0x043de0,5,
-0x043e00,5,
-0x043e20,5,
-0x043e40,5,
-0x043e60,5,
-0x043e80,5,
-0x043ea0,5,
-0x043ec0,5,
-0x043ee0,5,
-0x043f00,5,
-0x043f20,5,
-0x043f40,5,
-0x043f60,5,
-0x043f80,5,
-0x043fa0,5,
-0x043fc0,5,
-0x043fe0,5,
-0x044004,1,
-0x044200,8,
-0x044230,52,
-0x044320,3,
-0x044fc8,112,
-0x045190,88,
-0x045300,39,
-0x045400,13,
-0x045440,9,
-0x04546c,5,
-0x047ff0,2,
-0x048000,5,
-0x048020,5,
-0x048040,5,
-0x048060,5,
-0x048080,5,
-0x0480a0,5,
-0x0480c0,5,
-0x0480e0,5,
-0x048100,5,
-0x048120,5,
-0x048140,5,
-0x048160,5,
-0x048180,5,
-0x0481a0,5,
-0x0481c0,5,
-0x0481e0,5,
-0x048200,5,
-0x048220,5,
-0x048240,5,
-0x048260,5,
-0x048280,5,
-0x0482a0,5,
-0x0482c0,5,
-0x0482e0,5,
-0x048300,5,
-0x048320,5,
-0x048340,5,
-0x048360,5,
-0x048380,5,
-0x0483a0,5,
-0x0483c0,5,
-0x0483e0,5,
-0x048400,5,
-0x048420,5,
-0x048440,5,
-0x048460,5,
-0x048480,5,
-0x0484a0,5,
-0x0484c0,5,
-0x0484e0,5,
-0x048500,5,
-0x048520,5,
-0x048540,5,
-0x048560,5,
-0x048580,5,
-0x0485a0,5,
-0x0485c0,5,
-0x0485e0,5,
-0x048600,5,
-0x048620,5,
-0x048640,5,
-0x048660,5,
-0x048680,5,
-0x0486a0,5,
-0x0486c0,5,
-0x0486e0,5,
-0x048700,5,
-0x048720,5,
-0x048740,5,
-0x048760,5,
-0x048780,5,
-0x0487a0,5,
-0x0487c0,5,
-0x0487e0,5,
-0x048800,5,
-0x048820,5,
-0x048840,5,
-0x048860,5,
-0x048880,5,
-0x0488a0,5,
-0x0488c0,5,
-0x0488e0,5,
-0x048900,5,
-0x048920,5,
-0x048940,5,
-0x048960,5,
-0x048980,5,
-0x0489a0,5,
-0x0489c0,5,
-0x0489e0,5,
-0x048a00,5,
-0x048a20,5,
-0x048a40,5,
-0x048a60,5,
-0x048a80,5,
-0x048aa0,5,
-0x048ac0,5,
-0x048ae0,5,
-0x048b00,5,
-0x048b20,5,
-0x048b40,5,
-0x048b60,5,
-0x048b80,5,
-0x048ba0,5,
-0x048bc0,5,
-0x048be0,5,
-0x048c00,5,
-0x048c20,5,
-0x048c40,5,
-0x048c60,5,
-0x048c80,5,
-0x048ca0,5,
-0x048cc0,5,
-0x048ce0,5,
-0x048d00,5,
-0x048d20,5,
-0x048d40,5,
-0x048d60,5,
-0x048d80,5,
-0x048da0,5,
-0x048dc0,5,
-0x048de0,5,
-0x048e00,5,
-0x048e20,5,
-0x048e40,5,
-0x048e60,5,
-0x048e80,5,
-0x048ea0,5,
-0x048ec0,5,
-0x048ee0,5,
-0x048f00,5,
-0x048f20,5,
-0x048f40,5,
-0x048f60,5,
-0x048f80,5,
-0x048fa0,5,
-0x048fc0,5,
-0x048fe0,5,
-0x049000,5,
-0x049020,5,
-0x049040,5,
-0x049060,5,
-0x049080,5,
-0x0490a0,5,
-0x0490c0,5,
-0x0490e0,5,
-0x049100,5,
-0x049120,5,
-0x049140,5,
-0x049160,5,
-0x049180,5,
-0x0491a0,5,
-0x0491c0,5,
-0x0491e0,5,
-0x049200,5,
-0x049220,5,
-0x049240,5,
-0x049260,5,
-0x049280,5,
-0x0492a0,5,
-0x0492c0,5,
-0x0492e0,5,
-0x049300,5,
-0x049320,5,
-0x049340,5,
-0x049360,5,
-0x049380,5,
-0x0493a0,5,
-0x0493c0,5,
-0x0493e0,5,
-0x049400,5,
-0x049420,5,
-0x049440,5,
-0x049460,5,
-0x049480,5,
-0x0494a0,5,
-0x0494c0,5,
-0x0494e0,5,
-0x049500,5,
-0x049520,5,
-0x049540,5,
-0x049560,5,
-0x049580,5,
-0x0495a0,5,
-0x0495c0,5,
-0x0495e0,5,
-0x049600,5,
-0x049620,5,
-0x049640,5,
-0x049660,5,
-0x049680,5,
-0x0496a0,5,
-0x0496c0,5,
-0x0496e0,5,
-0x049700,5,
-0x049720,5,
-0x049740,5,
-0x049760,5,
-0x049780,5,
-0x0497a0,5,
-0x0497c0,5,
-0x0497e0,5,
-0x049800,5,
-0x049820,5,
-0x049840,5,
-0x049860,5,
-0x049880,5,
-0x0498a0,5,
-0x0498c0,5,
-0x0498e0,5,
-0x049900,5,
-0x049920,5,
-0x049940,5,
-0x049960,5,
-0x049980,5,
-0x0499a0,5,
-0x0499c0,5,
-0x0499e0,5,
-0x049a00,5,
-0x049a20,5,
-0x049a40,5,
-0x049a60,5,
-0x049a80,5,
-0x049aa0,5,
-0x049ac0,5,
-0x049ae0,5,
-0x049b00,5,
-0x049b20,5,
-0x049b40,5,
-0x049b60,5,
-0x049b80,5,
-0x049ba0,5,
-0x049bc0,5,
-0x049be0,5,
-0x049c00,5,
-0x049c20,5,
-0x049c40,5,
-0x049c60,5,
-0x049c80,5,
-0x049ca0,5,
-0x049cc0,5,
-0x049ce0,5,
-0x049d00,5,
-0x049d20,5,
-0x049d40,5,
-0x049d60,5,
-0x049d80,5,
-0x049da0,5,
-0x049dc0,5,
-0x049de0,5,
-0x049e00,5,
-0x049e20,5,
-0x049e40,5,
-0x049e60,5,
-0x049e80,5,
-0x049ea0,5,
-0x049ec0,5,
-0x049ee0,5,
-0x049f00,5,
-0x049f20,5,
-0x049f40,5,
-0x049f60,5,
-0x049f80,5,
-0x049fa0,5,
-0x049fc0,5,
-0x049fe0,5,
-0x04a000,5,
-0x04a020,5,
-0x04a040,5,
-0x04a060,5,
-0x04a080,5,
-0x04a0a0,5,
-0x04a0c0,5,
-0x04a0e0,5,
-0x04a100,5,
-0x04a120,5,
-0x04a140,5,
-0x04a160,5,
-0x04a180,5,
-0x04a1a0,5,
-0x04a1c0,5,
-0x04a1e0,5,
-0x04a200,5,
-0x04a220,5,
-0x04a240,5,
-0x04a260,5,
-0x04a280,5,
-0x04a2a0,5,
-0x04a2c0,5,
-0x04a2e0,5,
-0x04a300,5,
-0x04a320,5,
-0x04a340,5,
-0x04a360,5,
-0x04a380,5,
-0x04a3a0,5,
-0x04a3c0,5,
-0x04a3e0,5,
-0x04a400,5,
-0x04a420,5,
-0x04a440,5,
-0x04a460,5,
-0x04a480,5,
-0x04a4a0,5,
-0x04a4c0,5,
-0x04a4e0,5,
-0x04a500,5,
-0x04a520,5,
-0x04a540,5,
-0x04a560,5,
-0x04a580,5,
-0x04a5a0,5,
-0x04a5c0,5,
-0x04a5e0,5,
-0x04a600,5,
-0x04a620,5,
-0x04a640,5,
-0x04a660,5,
-0x04a680,5,
-0x04a6a0,5,
-0x04a6c0,5,
-0x04a6e0,5,
-0x04a700,5,
-0x04a720,5,
-0x04a740,5,
-0x04a760,5,
-0x04a780,5,
-0x04a7a0,5,
-0x04a7c0,5,
-0x04a7e0,5,
-0x04a800,5,
-0x04a820,5,
-0x04a840,5,
-0x04a860,5,
-0x04a880,5,
-0x04a8a0,5,
-0x04a8c0,5,
-0x04a8e0,5,
-0x04a900,5,
-0x04a920,5,
-0x04a940,5,
-0x04a960,5,
-0x04a980,5,
-0x04a9a0,5,
-0x04a9c0,5,
-0x04a9e0,5,
-0x04aa00,5,
-0x04aa20,5,
-0x04aa40,5,
-0x04aa60,5,
-0x04aa80,5,
-0x04aaa0,5,
-0x04aac0,5,
-0x04aae0,5,
-0x04ab00,5,
-0x04ab20,5,
-0x04ab40,5,
-0x04ab60,5,
-0x04ab80,5,
-0x04aba0,5,
-0x04abc0,5,
-0x04abe0,5,
-0x04ac00,5,
-0x04ac20,5,
-0x04ac40,5,
-0x04ac60,5,
-0x04ac80,5,
-0x04aca0,5,
-0x04acc0,5,
-0x04ace0,5,
-0x04ad00,5,
-0x04ad20,5,
-0x04ad40,5,
-0x04ad60,5,
-0x04ad80,5,
-0x04ada0,5,
-0x04adc0,5,
-0x04ade0,5,
-0x04ae00,5,
-0x04ae20,5,
-0x04ae40,5,
-0x04ae60,5,
-0x04ae80,5,
-0x04aea0,5,
-0x04aec0,5,
-0x04aee0,5,
-0x04af00,5,
-0x04af20,5,
-0x04af40,5,
-0x04af60,5,
-0x04af80,5,
-0x04afa0,5,
-0x04afc0,5,
-0x04afe0,5,
-0x04b000,5,
-0x04b020,5,
-0x04b040,5,
-0x04b060,5,
-0x04b080,5,
-0x04b0a0,5,
-0x04b0c0,5,
-0x04b0e0,5,
-0x04b100,5,
-0x04b120,5,
-0x04b140,5,
-0x04b160,5,
-0x04b180,5,
-0x04b1a0,5,
-0x04b1c0,5,
-0x04b1e0,5,
-0x04b200,5,
-0x04b220,5,
-0x04b240,5,
-0x04b260,5,
-0x04b280,5,
-0x04b2a0,5,
-0x04b2c0,5,
-0x04b2e0,5,
-0x04b300,5,
-0x04b320,5,
-0x04b340,5,
-0x04b360,5,
-0x04b380,5,
-0x04b3a0,5,
-0x04b3c0,5,
-0x04b3e0,5,
-0x04b400,5,
-0x04b420,5,
-0x04b440,5,
-0x04b460,5,
-0x04b480,5,
-0x04b4a0,5,
-0x04b4c0,5,
-0x04b4e0,5,
-0x04b500,5,
-0x04b520,5,
-0x04b540,5,
-0x04b560,5,
-0x04b580,5,
-0x04b5a0,5,
-0x04b5c0,5,
-0x04b5e0,5,
-0x04b600,5,
-0x04b620,5,
-0x04b640,5,
-0x04b660,5,
-0x04b680,5,
-0x04b6a0,5,
-0x04b6c0,5,
-0x04b6e0,5,
-0x04b700,5,
-0x04b720,5,
-0x04b740,5,
-0x04b760,5,
-0x04b780,5,
-0x04b7a0,5,
-0x04b7c0,5,
-0x04b7e0,5,
-0x04b800,5,
-0x04b820,5,
-0x04b840,5,
-0x04b860,5,
-0x04b880,5,
-0x04b8a0,5,
-0x04b8c0,5,
-0x04b8e0,5,
-0x04b900,5,
-0x04b920,5,
-0x04b940,5,
-0x04b960,5,
-0x04b980,5,
-0x04b9a0,5,
-0x04b9c0,5,
-0x04b9e0,5,
-0x04ba00,5,
-0x04ba20,5,
-0x04ba40,5,
-0x04ba60,5,
-0x04ba80,5,
-0x04baa0,5,
-0x04bac0,5,
-0x04bae0,5,
-0x04bb00,5,
-0x04bb20,5,
-0x04bb40,5,
-0x04bb60,5,
-0x04bb80,5,
-0x04bba0,5,
-0x04bbc0,5,
-0x04bbe0,5,
-0x04bc00,5,
-0x04bc20,5,
-0x04bc40,5,
-0x04bc60,5,
-0x04bc80,5,
-0x04bca0,5,
-0x04bcc0,5,
-0x04bce0,5,
-0x04bd00,5,
-0x04bd20,5,
-0x04bd40,5,
-0x04bd60,5,
-0x04bd80,5,
-0x04bda0,5,
-0x04bdc0,5,
-0x04bde0,5,
-0x04be00,5,
-0x04be20,5,
-0x04be40,5,
-0x04be60,5,
-0x04be80,5,
-0x04bea0,5,
-0x04bec0,5,
-0x04bee0,5,
-0x04bf00,5,
-0x04bf20,5,
-0x04bf40,5,
-0x04bf60,5,
-0x04bf80,5,
-0x04bfa0,5,
-0x04bfc0,5,
-0x04bfe0,5,
-0x04c000,5,
-0x04c020,5,
-0x04c040,5,
-0x04c060,5,
-0x04c080,5,
-0x04c0a0,5,
-0x04c0c0,5,
-0x04c0e0,5,
-0x04c100,5,
-0x04c120,5,
-0x04c140,5,
-0x04c160,5,
-0x04c180,5,
-0x04c1a0,5,
-0x04c1c0,5,
-0x04c1e0,5,
-0x04c200,5,
-0x04c220,5,
-0x04c240,5,
-0x04c260,5,
-0x04c280,5,
-0x04c2a0,5,
-0x04c2c0,5,
-0x04c2e0,5,
-0x04c300,5,
-0x04c320,5,
-0x04c340,5,
-0x04c360,5,
-0x04c380,5,
-0x04c3a0,5,
-0x04c3c0,5,
-0x04c3e0,5,
-0x04c400,5,
-0x04c420,5,
-0x04c440,5,
-0x04c460,5,
-0x04c480,5,
-0x04c4a0,5,
-0x04c4c0,5,
-0x04c4e0,5,
-0x04c500,5,
-0x04c520,5,
-0x04c540,5,
-0x04c560,5,
-0x04c580,5,
-0x04c5a0,5,
-0x04c5c0,5,
-0x04c5e0,5,
-0x04c600,5,
-0x04c620,5,
-0x04c640,5,
-0x04c660,5,
-0x04c680,5,
-0x04c6a0,5,
-0x04c6c0,5,
-0x04c6e0,5,
-0x04c700,5,
-0x04c720,5,
-0x04c740,5,
-0x04c760,5,
-0x04c780,5,
-0x04c7a0,5,
-0x04c7c0,5,
-0x04c7e0,5,
-0x04c800,5,
-0x04c820,5,
-0x04c840,5,
-0x04c860,5,
-0x04c880,5,
-0x04c8a0,5,
-0x04c8c0,5,
-0x04c8e0,5,
-0x04c900,5,
-0x04c920,5,
-0x04c940,5,
-0x04c960,5,
-0x04c980,5,
-0x04c9a0,5,
-0x04c9c0,5,
-0x04c9e0,5,
-0x04ca00,5,
-0x04ca20,5,
-0x04ca40,5,
-0x04ca60,5,
-0x04ca80,5,
-0x04caa0,5,
-0x04cac0,5,
-0x04cae0,5,
-0x04cb00,5,
-0x04cb20,5,
-0x04cb40,5,
-0x04cb60,5,
-0x04cb80,5,
-0x04cba0,5,
-0x04cbc0,5,
-0x04cbe0,5,
-0x04cc00,5,
-0x04cc20,5,
-0x04cc40,5,
-0x04cc60,5,
-0x04cc80,5,
-0x04cca0,5,
-0x04ccc0,5,
-0x04cce0,5,
-0x04cd00,5,
-0x04cd20,5,
-0x04cd40,5,
-0x04cd60,5,
-0x04cd80,5,
-0x04cda0,5,
-0x04cdc0,5,
-0x04cde0,5,
-0x04ce00,5,
-0x04ce20,5,
-0x04ce40,5,
-0x04ce60,5,
-0x04ce80,5,
-0x04cea0,5,
-0x04cec0,5,
-0x04cee0,5,
-0x04cf00,5,
-0x04cf20,5,
-0x04cf40,5,
-0x04cf60,5,
-0x04cf80,5,
-0x04cfa0,5,
-0x04cfc0,5,
-0x04cfe0,5,
-0x050004,1,
-0x05000c,5,
-0x05900c,10,
-0x05903c,1,
-0x05a000,1,
-0x05a008,1,
-0x05a010,1,
-0x05a018,1,
-0x05a020,1,
-0x05a028,1,
-0x05a030,1,
-0x05a038,1,
-0x05a040,1,
-0x05a048,1,
-0x05a050,1,
-0x05a058,1,
-0x05a060,1,
-0x05a068,1,
-0x05a070,1,
-0x05a078,1,
-0x05a080,1,
-0x05a088,1,
-0x05a090,1,
-0x05a098,1,
-0x05a0a0,1,
-0x05a0a8,1,
-0x05a0b0,1,
-0x05a0b8,1,
-0x05a0c0,1,
-0x05a0c8,1,
-0x05a0d0,1,
-0x05a0d8,1,
-0x05a0e0,1,
-0x05a0e8,1,
-0x05a0f0,1,
-0x05a0f8,1,
-0x05a100,1,
-0x05a108,1,
-0x05a110,1,
-0x05a118,1,
-0x05a120,1,
-0x05a128,1,
-0x05a130,1,
-0x05a138,1,
-0x05a140,1,
-0x05a148,1,
-0x05a150,1,
-0x05a158,1,
-0x05a160,1,
-0x05a168,1,
-0x05a170,1,
-0x05a178,1,
-0x05a180,1,
-0x05a188,1,
-0x05a190,1,
-0x05a198,1,
-0x05a1a0,1,
-0x05a1a8,1,
-0x05a1b0,1,
-0x05a1b8,1,
-0x05a1c0,1,
-0x05a1c8,1,
-0x05a1d0,1,
-0x05a1d8,1,
-0x05a1e0,1,
-0x05a1e8,1,
-0x05a1f0,1,
-0x05a1f8,1,
-0x05a200,1,
-0x05a208,1,
-0x05a210,1,
-0x05a218,1,
-0x05a220,1,
-0x05a228,1,
-0x05a230,1,
-0x05a238,1,
-0x05a240,1,
-0x05a248,1,
-0x05a250,1,
-0x05a258,1,
-0x05a260,1,
-0x05a268,1,
-0x05a270,1,
-0x05a278,1,
-0x05a280,1,
-0x05a288,1,
-0x05a290,1,
-0x05a298,1,
-0x05a2a0,1,
-0x05a2a8,1,
-0x05a2b0,1,
-0x05a2b8,1,
-0x05a2c0,1,
-0x05a2c8,1,
-0x05a2d0,1,
-0x05a2d8,1,
-0x05a2e0,1,
-0x05a2e8,1,
-0x05a2f0,1,
-0x05a2f8,1,
-0x05a300,1,
-0x05a308,1,
-0x05a310,1,
-0x05a318,1,
-0x05a320,1,
-0x05a328,1,
-0x05a330,1,
-0x05a338,1,
-0x05a340,1,
-0x05a348,1,
-0x05a350,1,
-0x05a358,1,
-0x05a360,1,
-0x05a368,1,
-0x05a370,1,
-0x05a378,1,
-0x05a380,1,
-0x05a388,1,
-0x05a390,1,
-0x05a398,1,
-0x05a3a0,1,
-0x05a3a8,1,
-0x05a3b0,1,
-0x05a3b8,1,
-0x05a3c0,1,
-0x05a3c8,1,
-0x05a3d0,1,
-0x05a3d8,1,
-0x05a3e0,1,
-0x05a3e8,1,
-0x05a3f0,1,
-0x05a3f8,1,
-0x05a400,1,
-0x05a408,1,
-0x05a410,1,
-0x05a418,1,
-0x05a420,1,
-0x05a428,1,
-0x05a430,1,
-0x05a438,1,
-0x05a440,1,
-0x05a448,1,
-0x05a450,1,
-0x05a458,1,
-0x05a460,1,
-0x05a468,1,
-0x05a470,1,
-0x05a478,1,
-0x05a480,1,
-0x05a488,1,
-0x05a490,1,
-0x05a498,1,
-0x05a4a0,1,
-0x05a4a8,1,
-0x05a4b0,1,
-0x05a4b8,1,
-0x05a4c0,1,
-0x05a4c8,1,
-0x05a4d0,1,
-0x05a4d8,1,
-0x05a4e0,1,
-0x05a4e8,1,
-0x05a4f0,1,
-0x05a4f8,1,
-0x05a500,1,
-0x05a508,1,
-0x05a510,1,
-0x05a518,1,
-0x05a520,1,
-0x05a528,1,
-0x05a530,1,
-0x05a538,1,
-0x05a540,1,
-0x05a548,1,
-0x05a550,1,
-0x05a558,1,
-0x05a560,1,
-0x05a568,1,
-0x05a570,1,
-0x05a578,1,
-0x05a580,1,
-0x05a588,1,
-0x05a590,1,
-0x05a598,1,
-0x05a5a0,1,
-0x05a5a8,1,
-0x05a5b0,1,
-0x05a5b8,1,
-0x05a5c0,1,
-0x05a5c8,1,
-0x05a5d0,1,
-0x05a5d8,1,
-0x05a5e0,1,
-0x05a5e8,1,
-0x05a5f0,1,
-0x05a5f8,1,
-0x05a600,1,
-0x05a608,1,
-0x05a610,1,
-0x05a618,1,
-0x05a620,1,
-0x05a628,1,
-0x05a630,1,
-0x05a638,1,
-0x05a640,1,
-0x05a648,1,
-0x05a650,1,
-0x05a658,1,
-0x05a660,1,
-0x05a668,1,
-0x05a670,1,
-0x05a678,1,
-0x05a680,1,
-0x05a688,1,
-0x05a690,1,
-0x05a698,1,
-0x05a6a0,1,
-0x05a6a8,1,
-0x05a6b0,1,
-0x05a6b8,1,
-0x05a6c0,1,
-0x05a6c8,1,
-0x05a6d0,1,
-0x05a6d8,1,
-0x05a6e0,1,
-0x05a6e8,1,
-0x05a6f0,1,
-0x05a6f8,1,
-0x05a700,1,
-0x05a708,1,
-0x05a710,1,
-0x05a718,1,
-0x05a720,1,
-0x05a728,1,
-0x05a730,1,
-0x05a738,1,
-0x05a740,1,
-0x05a748,1,
-0x05a750,1,
-0x05a758,1,
-0x05a760,1,
-0x05a768,1,
-0x05a770,1,
-0x05a778,1,
-0x05a780,1,
-0x05a788,1,
-0x05a790,1,
-0x05a798,1,
-0x05a7a0,1,
-0x05a7a8,1,
-0x05a7b0,1,
-0x05a7b8,1,
-0x05a7c0,1,
-0x05a7c8,1,
-0x05a7d0,1,
-0x05a7d8,1,
-0x05a7e0,1,
-0x05a7e8,1,
-0x05a7f0,1,
-0x05a7f8,1,
-0x05a800,1,
-0x05a808,1,
-0x05a810,1,
-0x05a818,1,
-0x05a820,1,
-0x05a828,1,
-0x05a830,1,
-0x05a838,1,
-0x05a840,1,
-0x05a848,1,
-0x05a850,1,
-0x05a858,1,
-0x05a860,1,
-0x05a868,1,
-0x05a870,1,
-0x05a878,1,
-0x05a880,1,
-0x05a888,1,
-0x05a890,1,
-0x05a898,1,
-0x05a8a0,1,
-0x05a8a8,1,
-0x05a8b0,1,
-0x05a8b8,1,
-0x05a8c0,1,
-0x05a8c8,1,
-0x05a8d0,1,
-0x05a8d8,1,
-0x05a8e0,1,
-0x05a8e8,1,
-0x05a8f0,1,
-0x05a8f8,1,
-0x05a900,1,
-0x05a908,1,
-0x05a910,1,
-0x05a918,1,
-0x05a920,1,
-0x05a928,1,
-0x05a930,1,
-0x05a938,1,
-0x05a940,1,
-0x05a948,1,
-0x05a950,1,
-0x05a958,1,
-0x05a960,1,
-0x05a968,1,
-0x05a970,1,
-0x05a978,1,
-0x05a980,1,
-0x05a988,1,
-0x05a990,1,
-0x05a998,1,
-0x05a9a0,1,
-0x05a9a8,1,
-0x05a9b0,1,
-0x05a9b8,1,
-0x05a9c0,1,
-0x05a9c8,1,
-0x05a9d0,1,
-0x05a9d8,1,
-0x05a9e0,1,
-0x05a9e8,1,
-0x05a9f0,1,
-0x05a9f8,1,
-0x05aa00,1,
-0x05aa08,1,
-0x05aa10,1,
-0x05aa18,1,
-0x05aa20,1,
-0x05aa28,1,
-0x05aa30,1,
-0x05aa38,1,
-0x05aa40,1,
-0x05aa48,1,
-0x05aa50,1,
-0x05aa58,1,
-0x05aa60,1,
-0x05aa68,1,
-0x05aa70,1,
-0x05aa78,1,
-0x05aa80,1,
-0x05aa88,1,
-0x05aa90,1,
-0x05aa98,1,
-0x05aaa0,1,
-0x05aaa8,1,
-0x05aab0,1,
-0x05aab8,1,
-0x05aac0,1,
-0x05aac8,1,
-0x05aad0,1,
-0x05aad8,1,
-0x05aae0,1,
-0x05aae8,1,
-0x05aaf0,1,
-0x05aaf8,1,
-0x05ab00,1,
-0x05ab08,1,
-0x05ab10,1,
-0x05ab18,1,
-0x05ab20,1,
-0x05ab28,1,
-0x05ab30,1,
-0x05ab38,1,
-0x05ab40,1,
-0x05ab48,1,
-0x05ab50,1,
-0x05ab58,1,
-0x05ab60,1,
-0x05ab68,1,
-0x05ab70,1,
-0x05ab78,1,
-0x05ab80,1,
-0x05ab88,1,
-0x05ab90,1,
-0x05ab98,1,
-0x05aba0,1,
-0x05aba8,1,
-0x05abb0,1,
-0x05abb8,1,
-0x05abc0,1,
-0x05abc8,1,
-0x05abd0,1,
-0x05abd8,1,
-0x05abe0,1,
-0x05abe8,1,
-0x05abf0,1,
-0x05abf8,1,
-0x05ac00,1,
-0x05ac08,1,
-0x05ac10,1,
-0x05ac18,1,
-0x05ac20,1,
-0x05ac28,1,
-0x05ac30,1,
-0x05ac38,1,
-0x05ac40,1,
-0x05ac48,1,
-0x05ac50,1,
-0x05ac58,1,
-0x05ac60,1,
-0x05ac68,1,
-0x05ac70,1,
-0x05ac78,1,
-0x05ac80,1,
-0x05ac88,1,
-0x05ac90,1,
-0x05ac98,1,
-0x05aca0,1,
-0x05aca8,1,
-0x05acb0,1,
-0x05acb8,1,
-0x05acc0,1,
-0x05acc8,1,
-0x05acd0,1,
-0x05acd8,1,
-0x05ace0,1,
-0x05ace8,1,
-0x05acf0,1,
-0x05acf8,1,
-0x05ad00,1,
-0x05ad08,1,
-0x05ad10,1,
-0x05ad18,1,
-0x05ad20,1,
-0x05ad28,1,
-0x05ad30,1,
-0x05ad38,1,
-0x05ad40,1,
-0x05ad48,1,
-0x05ad50,1,
-0x05ad58,1,
-0x05ad60,1,
-0x05ad68,1,
-0x05ad70,1,
-0x05ad78,1,
-0x05ad80,1,
-0x05ad88,1,
-0x05ad90,1,
-0x05ad98,1,
-0x05ada0,1,
-0x05ada8,1,
-0x05adb0,1,
-0x05adb8,1,
-0x05adc0,1,
-0x05adc8,1,
-0x05add0,1,
-0x05add8,1,
-0x05ade0,1,
-0x05ade8,1,
-0x05adf0,1,
-0x05adf8,1,
-0x05ae00,1,
-0x05ae08,1,
-0x05ae10,1,
-0x05ae18,1,
-0x05ae20,1,
-0x05ae28,1,
-0x05ae30,1,
-0x05ae38,1,
-0x05ae40,1,
-0x05ae48,1,
-0x05ae50,1,
-0x05ae58,1,
-0x05ae60,1,
-0x05ae68,1,
-0x05ae70,1,
-0x05ae78,1,
-0x05ae80,1,
-0x05ae88,1,
-0x05ae90,1,
-0x05ae98,1,
-0x05aea0,1,
-0x05aea8,1,
-0x05aeb0,1,
-0x05aeb8,1,
-0x05aec0,1,
-0x05aec8,1,
-0x05aed0,1,
-0x05aed8,1,
-0x05aee0,1,
-0x05aee8,1,
-0x05aef0,1,
-0x05aef8,1,
-0x05af00,1,
-0x05af08,1,
-0x05af10,1,
-0x05af18,1,
-0x05af20,1,
-0x05af28,1,
-0x05af30,1,
-0x05af38,1,
-0x05af40,1,
-0x05af48,1,
-0x05af50,1,
-0x05af58,1,
-0x05af60,1,
-0x05af68,1,
-0x05af70,1,
-0x05af78,1,
-0x05af80,1,
-0x05af88,1,
-0x05af90,1,
-0x05af98,1,
-0x05afa0,1,
-0x05afa8,1,
-0x05afb0,1,
-0x05afb8,1,
-0x05afc0,1,
-0x05afc8,1,
-0x05afd0,1,
-0x05afd8,1,
-0x05afe0,1,
-0x05afe8,1,
-0x05aff0,1,
-0x05aff8,1,
-0x05b000,1,
-0x05b008,1,
-0x05b010,1,
-0x05b018,1,
-0x05b020,1,
-0x05b028,1,
-0x05b030,1,
-0x05b038,1,
-0x05b040,1,
-0x05b048,1,
-0x05b050,1,
-0x05b058,1,
-0x05b060,1,
-0x05b068,1,
-0x05b070,1,
-0x05b078,1,
-0x05b080,1,
-0x05b088,1,
-0x05b090,1,
-0x05b098,1,
-0x05b0a0,1,
-0x05b0a8,1,
-0x05b0b0,1,
-0x05b0b8,1,
-0x05b0c0,1,
-0x05b0c8,1,
-0x05b0d0,1,
-0x05b0d8,1,
-0x05b0e0,1,
-0x05b0e8,1,
-0x05b0f0,1,
-0x05b0f8,1,
-0x05b100,1,
-0x05b108,1,
-0x05b110,1,
-0x05b118,1,
-0x05b120,1,
-0x05b128,1,
-0x05b130,1,
-0x05b138,1,
-0x05b140,1,
-0x05b148,1,
-0x05b150,1,
-0x05b158,1,
-0x05b160,1,
-0x05b168,1,
-0x05b170,1,
-0x05b178,1,
-0x05b180,1,
-0x05b188,1,
-0x05b190,1,
-0x05b198,1,
-0x05b1a0,1,
-0x05b1a8,1,
-0x05b1b0,1,
-0x05b1b8,1,
-0x05b1c0,1,
-0x05b1c8,1,
-0x05b1d0,1,
-0x05b1d8,1,
-0x05b1e0,1,
-0x05b1e8,1,
-0x05b1f0,1,
-0x05b1f8,1,
-0x05b200,1,
-0x05b208,1,
-0x05b210,1,
-0x05b218,1,
-0x05b220,1,
-0x05b228,1,
-0x05b230,1,
-0x05b238,1,
-0x05b240,1,
-0x05b248,1,
-0x05b250,1,
-0x05b258,1,
-0x05b260,1,
-0x05b268,1,
-0x05b270,1,
-0x05b278,1,
-0x05b280,1,
-0x05b288,1,
-0x05b290,1,
-0x05b298,1,
-0x05b2a0,1,
-0x05b2a8,1,
-0x05b2b0,1,
-0x05b2b8,1,
-0x05b2c0,1,
-0x05b2c8,1,
-0x05b2d0,1,
-0x05b2d8,1,
-0x05b2e0,1,
-0x05b2e8,1,
-0x05b2f0,1,
-0x05b2f8,1,
-0x05b300,1,
-0x05b308,1,
-0x05b310,1,
-0x05b318,1,
-0x05b320,1,
-0x05b328,1,
-0x05b330,1,
-0x05b338,1,
-0x05b340,1,
-0x05b348,1,
-0x05b350,1,
-0x05b358,1,
-0x05b360,1,
-0x05b368,1,
-0x05b370,1,
-0x05b378,1,
-0x05b380,1,
-0x05b388,1,
-0x05b390,1,
-0x05b398,1,
-0x05b3a0,1,
-0x05b3a8,1,
-0x05b3b0,1,
-0x05b3b8,1,
-0x05b3c0,1,
-0x05b3c8,1,
-0x05b3d0,1,
-0x05b3d8,1,
-0x05b3e0,1,
-0x05b3e8,1,
-0x05b3f0,1,
-0x05b3f8,1,
-0x05b400,1,
-0x05b408,1,
-0x05b410,1,
-0x05b418,1,
-0x05b420,1,
-0x05b428,1,
-0x05b430,1,
-0x05b438,1,
-0x05b440,1,
-0x05b448,1,
-0x05b450,1,
-0x05b458,1,
-0x05b460,1,
-0x05b468,1,
-0x05b470,1,
-0x05b478,1,
-0x05b480,1,
-0x05b488,1,
-0x05b490,1,
-0x05b498,1,
-0x05b4a0,1,
-0x05b4a8,1,
-0x05b4b0,1,
-0x05b4b8,1,
-0x05b4c0,1,
-0x05b4c8,1,
-0x05b4d0,1,
-0x05b4d8,1,
-0x05b4e0,1,
-0x05b4e8,1,
-0x05b4f0,1,
-0x05b4f8,1,
-0x05b500,1,
-0x05b508,1,
-0x05b510,1,
-0x05b518,1,
-0x05b520,1,
-0x05b528,1,
-0x05b530,1,
-0x05b538,1,
-0x05b540,1,
-0x05b548,1,
-0x05b550,1,
-0x05b558,1,
-0x05b560,1,
-0x05b568,1,
-0x05b570,1,
-0x05b578,1,
-0x05b580,1,
-0x05b588,1,
-0x05b590,1,
-0x05b598,1,
-0x05b5a0,1,
-0x05b5a8,1,
-0x05b5b0,1,
-0x05b5b8,1,
-0x05b5c0,1,
-0x05b5c8,1,
-0x05b5d0,1,
-0x05b5d8,1,
-0x05b5e0,1,
-0x05b5e8,1,
-0x05b5f0,1,
-0x05b5f8,1,
-0x05b600,1,
-0x05b608,1,
-0x05b610,1,
-0x05b618,1,
-0x05b620,1,
-0x05b628,1,
-0x05b630,1,
-0x05b638,1,
-0x05b640,1,
-0x05b648,1,
-0x05b650,1,
-0x05b658,1,
-0x05b660,1,
-0x05b668,1,
-0x05b670,1,
-0x05b678,1,
-0x05b680,1,
-0x05b688,1,
-0x05b690,1,
-0x05b698,1,
-0x05b6a0,1,
-0x05b6a8,1,
-0x05b6b0,1,
-0x05b6b8,1,
-0x05b6c0,1,
-0x05b6c8,1,
-0x05b6d0,1,
-0x05b6d8,1,
-0x05b6e0,1,
-0x05b6e8,1,
-0x05b6f0,1,
-0x05b6f8,1,
-0x05b700,1,
-0x05b708,1,
-0x05b710,1,
-0x05b718,1,
-0x05b720,1,
-0x05b728,1,
-0x05b730,1,
-0x05b738,1,
-0x05b740,1,
-0x05b748,1,
-0x05b750,1,
-0x05b758,1,
-0x05b760,1,
-0x05b768,1,
-0x05b770,1,
-0x05b778,1,
-0x05b780,1,
-0x05b788,1,
-0x05b790,1,
-0x05b798,1,
-0x05b7a0,1,
-0x05b7a8,1,
-0x05b7b0,1,
-0x05b7b8,1,
-0x05b7c0,1,
-0x05b7c8,1,
-0x05b7d0,1,
-0x05b7d8,1,
-0x05b7e0,1,
-0x05b7e8,1,
-0x05b7f0,1,
-0x05b7f8,1,
-0x05b800,1,
-0x05b808,1,
-0x05b810,1,
-0x05b818,1,
-0x05b820,1,
-0x05b828,1,
-0x05b830,1,
-0x05b838,1,
-0x05b840,1,
-0x05b848,1,
-0x05b850,1,
-0x05b858,1,
-0x05b860,1,
-0x05b868,1,
-0x05b870,1,
-0x05b878,1,
-0x05b880,1,
-0x05b888,1,
-0x05b890,1,
-0x05b898,1,
-0x05b8a0,1,
-0x05b8a8,1,
-0x05b8b0,1,
-0x05b8b8,1,
-0x05b8c0,1,
-0x05b8c8,1,
-0x05b8d0,1,
-0x05b8d8,1,
-0x05b8e0,1,
-0x05b8e8,1,
-0x05b8f0,1,
-0x05b8f8,1,
-0x05b900,1,
-0x05b908,1,
-0x05b910,1,
-0x05b918,1,
-0x05b920,1,
-0x05b928,1,
-0x05b930,1,
-0x05b938,1,
-0x05b940,1,
-0x05b948,1,
-0x05b950,1,
-0x05b958,1,
-0x05b960,1,
-0x05b968,1,
-0x05b970,1,
-0x05b978,1,
-0x05b980,1,
-0x05b988,1,
-0x05b990,1,
-0x05b998,1,
-0x05b9a0,1,
-0x05b9a8,1,
-0x05b9b0,1,
-0x05b9b8,1,
-0x05b9c0,1,
-0x05b9c8,1,
-0x05b9d0,1,
-0x05b9d8,1,
-0x05b9e0,1,
-0x05b9e8,1,
-0x05b9f0,1,
-0x05b9f8,1,
-0x05ba00,1,
-0x05ba08,1,
-0x05ba10,1,
-0x05ba18,1,
-0x05ba20,1,
-0x05ba28,1,
-0x05ba30,1,
-0x05ba38,1,
-0x05ba40,1,
-0x05ba48,1,
-0x05ba50,1,
-0x05ba58,1,
-0x05ba60,1,
-0x05ba68,1,
-0x05ba70,1,
-0x05ba78,1,
-0x05ba80,1,
-0x05ba88,1,
-0x05ba90,1,
-0x05ba98,1,
-0x05baa0,1,
-0x05baa8,1,
-0x05bab0,1,
-0x05bab8,1,
-0x05bac0,1,
-0x05bac8,1,
-0x05bad0,1,
-0x05bad8,1,
-0x05bae0,1,
-0x05bae8,1,
-0x05baf0,1,
-0x05baf8,1,
-0x05bb00,1,
-0x05bb08,1,
-0x05bb10,1,
-0x05bb18,1,
-0x05bb20,1,
-0x05bb28,1,
-0x05bb30,1,
-0x05bb38,1,
-0x05bb40,1,
-0x05bb48,1,
-0x05bb50,1,
-0x05bb58,1,
-0x05bb60,1,
-0x05bb68,1,
-0x05bb70,1,
-0x05bb78,1,
-0x05bb80,1,
-0x05bb88,1,
-0x05bb90,1,
-0x05bb98,1,
-0x05bba0,1,
-0x05bba8,1,
-0x05bbb0,1,
-0x05bbb8,1,
-0x05bbc0,1,
-0x05bbc8,1,
-0x05bbd0,1,
-0x05bbd8,1,
-0x05bbe0,1,
-0x05bbe8,1,
-0x05bbf0,1,
-0x05bbf8,1,
-0x05bc00,1,
-0x05bc08,1,
-0x05bc10,1,
-0x05bc18,1,
-0x05bc20,1,
-0x05bc28,1,
-0x05bc30,1,
-0x05bc38,1,
-0x05bc40,1,
-0x05bc48,1,
-0x05bc50,1,
-0x05bc58,1,
-0x05bc60,1,
-0x05bc68,1,
-0x05bc70,1,
-0x05bc78,1,
-0x05bc80,1,
-0x05bc88,1,
-0x05bc90,1,
-0x05bc98,1,
-0x05bca0,1,
-0x05bca8,1,
-0x05bcb0,1,
-0x05bcb8,1,
-0x05bcc0,1,
-0x05bcc8,1,
-0x05bcd0,1,
-0x05bcd8,1,
-0x05bce0,1,
-0x05bce8,1,
-0x05bcf0,1,
-0x05bcf8,1,
-0x05bd00,1,
-0x05bd08,1,
-0x05bd10,1,
-0x05bd18,1,
-0x05bd20,1,
-0x05bd28,1,
-0x05bd30,1,
-0x05bd38,1,
-0x05bd40,1,
-0x05bd48,1,
-0x05bd50,1,
-0x05bd58,1,
-0x05bd60,1,
-0x05bd68,1,
-0x05bd70,1,
-0x05bd78,1,
-0x05bd80,1,
-0x05bd88,1,
-0x05bd90,1,
-0x05bd98,1,
-0x05bda0,1,
-0x05bda8,1,
-0x05bdb0,1,
-0x05bdb8,1,
-0x05bdc0,1,
-0x05bdc8,1,
-0x05bdd0,1,
-0x05bdd8,1,
-0x05bde0,1,
-0x05bde8,1,
-0x05bdf0,1,
-0x05bdf8,1,
-0x05be00,1,
-0x05be08,1,
-0x05be10,1,
-0x05be18,1,
-0x05be20,1,
-0x05be28,1,
-0x05be30,1,
-0x05be38,1,
-0x05be40,1,
-0x05be48,1,
-0x05be50,1,
-0x05be58,1,
-0x05be60,1,
-0x05be68,1,
-0x05be70,1,
-0x05be78,1,
-0x05be80,1,
-0x05be88,1,
-0x05be90,1,
-0x05be98,1,
-0x05bea0,1,
-0x05bea8,1,
-0x05beb0,1,
-0x05beb8,1,
-0x05bec0,1,
-0x05bec8,1,
-0x05bed0,1,
-0x05bed8,1,
-0x05bee0,1,
-0x05bee8,1,
-0x05bef0,1,
-0x05bef8,1,
-0x05bf00,1,
-0x05bf08,1,
-0x05bf10,1,
-0x05bf18,1,
-0x05bf20,1,
-0x05bf28,1,
-0x05bf30,1,
-0x05bf38,1,
-0x05bf40,1,
-0x05bf48,1,
-0x05bf50,1,
-0x05bf58,1,
-0x05bf60,1,
-0x05bf68,1,
-0x05bf70,1,
-0x05bf78,1,
-0x05bf80,1,
-0x05bf88,1,
-0x05bf90,1,
-0x05bf98,1,
-0x05bfa0,1,
-0x05bfa8,1,
-0x05bfb0,1,
-0x05bfb8,1,
-0x05bfc0,1,
-0x05bfc8,1,
-0x05bfd0,1,
-0x05bfd8,1,
-0x05bfe0,1,
-0x05bfe8,1,
-0x05bff0,1,
-0x05bff8,1,
-0x05c000,1024,
-0x060400,5,
-0x060500,6,
-0x060520,6,
-0x060600,6,
-0x060700,7,
-0x060800,64,
-0x060940,1,
-0x060a04,7,
-0x060c00,4,
-0x060d00,2,
-0x060e00,4,
-0x060f40,16,
-0x060f88,2,
-0x061000,34,
-0x061100,34,
-0x061200,34,
-0x061300,34,
-0x061400,34,
-0x061500,34,
-0x061600,34,
-0x061700,34,
-0x061800,34,
-0x061900,34,
-0x061a00,34,
-0x061b00,34,
-0x061c00,34,
-0x061d00,34,
-0x061e00,34,
-0x061f00,34,
-0x062100,2,
-0x063000,3072,
-0x066100,3,
-0x068000,4,
-0x068014,7,
-0x068038,4,
-0x068054,2,
-0x0680a0,1,
-0x0680b0,2,
-0x0680c0,1,
-0x0680d0,2,
-0x068800,7,
-0x068820,4,
-0x068868,6,
-0x068980,33,
-0x068a20,1,
-0x068a30,2,
-0x068a80,2,
-0x069000,4128,
-0x06e000,2049,
-0x07000c,6,
-0x070028,3,
-0x070040,12,
-0x07007c,13,
-0x0700bc,6,
-0x0700d8,5,
-0x0700f0,20,
-0x070144,1,
-0x070180,5,
-0x0701fc,1,
-0x070210,12,
-0x070244,7,
-0x070290,12,
-0x0702c4,1,
-0x0702d0,4,
-0x070300,69,
-0x070418,2,
-0x070424,1,
-0x07042c,1,
-0x070434,3,
-0x070448,1,
-0x070450,1,
-0x071000,33,
-0x071100,33,
-0x071200,33,
-0x071300,33,
-0x071400,33,
-0x071500,33,
-0x071600,33,
-0x071700,33,
-0x071800,33,
-0x071900,33,
-0x071a00,33,
-0x071b00,33,
-0x072000,67,
-0x072200,67,
-0x072400,67,
-0x072600,67,
-0x072800,67,
-0x072a00,67,
-0x072c00,67,
-0x073000,33,
-0x073100,33,
-0x073200,33,
-0x073300,33,
-0x073400,33,
-0x073500,33,
-0x073600,33,
-0x073700,33,
-0x073800,33,
-0x073900,33,
-0x073a00,33,
-0x073b00,33,
-0x074000,1536,
-0x076000,12,
-0x077000,384,
-0x077800,256,
-0x078000,17,
-0x078080,17,
-0x078100,17,
-0x078180,17,
-0x078210,5,
-0x078240,1,
-0x078250,1,
-0x078260,1,
-0x078270,1,
-0x078284,2,
-0x0782d4,59,
-0x078400,2,
-0x078420,1,
-0x078600,96,
-0x078a60,5,
-0x078a84,16,
-0x078b00,32,
-0x078b84,6,
-0x078c20,10,
-0x078c50,2,
-0x078c5c,7,
-0x078c80,4,
-0x078ca0,1,
-0x078cc0,9,
-0x078e60,1,
-0x078e80,10,
-0x078ec0,2,
-0x078ecc,1,
-0x078ee0,6,
-0x078f00,7,
-0x078f20,7,
-0x078f44,2,
-0x078f50,2,
-0x078f60,3,
-0x078f70,1,
-0x078f78,3,
-0x078fb4,6,
-0x078fd0,1,
-0x079000,1,
-0x079008,1,
-0x079010,1,
-0x079018,1,
-0x079020,1,
-0x079028,1,
-0x079030,1,
-0x079038,1,
-0x079040,1,
-0x079048,1,
-0x079050,1,
-0x079058,1,
-0x079060,1,
-0x079068,1,
-0x079070,1,
-0x079078,1,
-0x079080,1,
-0x079088,1,
-0x079090,1,
-0x079098,1,
-0x0790a0,1,
-0x0790a8,1,
-0x0790b0,1,
-0x0790b8,1,
-0x0790c0,1,
-0x0790c8,1,
-0x0790d0,1,
-0x0790d8,1,
-0x0790e0,1,
-0x0790e8,1,
-0x0790f0,1,
-0x0790f8,1,
-0x079100,1,
-0x079108,1,
-0x079110,1,
-0x079118,1,
-0x079120,1,
-0x079128,1,
-0x079130,1,
-0x079138,1,
-0x079140,1,
-0x079148,1,
-0x079150,1,
-0x079158,1,
-0x079160,1,
-0x079168,1,
-0x079170,1,
-0x079178,1,
-0x079180,1,
-0x079188,1,
-0x079190,1,
-0x079198,1,
-0x0791a0,1,
-0x0791a8,1,
-0x0791b0,1,
-0x0791b8,1,
-0x0791c0,1,
-0x0791c8,1,
-0x0791d0,1,
-0x0791d8,1,
-0x0791e0,1,
-0x0791e8,1,
-0x0791f0,1,
-0x0791f8,1,
-0x079200,1,
-0x079208,1,
-0x079210,1,
-0x079218,1,
-0x079220,1,
-0x079228,1,
-0x079230,1,
-0x079238,1,
-0x079240,1,
-0x079248,1,
-0x079250,1,
-0x079258,1,
-0x079260,1,
-0x079268,1,
-0x079270,1,
-0x079278,1,
-0x079280,1,
-0x079288,1,
-0x079290,1,
-0x079298,1,
-0x0792a0,1,
-0x0792a8,1,
-0x0792b0,1,
-0x0792b8,1,
-0x0792c0,1,
-0x0792c8,1,
-0x0792d0,1,
-0x0792d8,1,
-0x0792e0,1,
-0x0792e8,1,
-0x0792f0,1,
-0x0792f8,1,
-0x079300,1,
-0x079308,1,
-0x079310,1,
-0x079318,1,
-0x079320,1,
-0x079328,1,
-0x079330,1,
-0x079338,1,
-0x079340,1,
-0x079348,1,
-0x079350,1,
-0x079358,1,
-0x079360,1,
-0x079368,1,
-0x079370,1,
-0x079378,1,
-0x079380,1,
-0x079388,1,
-0x079390,1,
-0x079398,1,
-0x0793a0,1,
-0x0793a8,1,
-0x0793b0,1,
-0x0793b8,1,
-0x0793c0,1,
-0x0793c8,1,
-0x0793d0,1,
-0x0793d8,1,
-0x0793e0,1,
-0x0793e8,1,
-0x0793f0,1,
-0x0793f8,1,
-0x079400,1,
-0x079408,1,
-0x079410,1,
-0x079418,1,
-0x079420,1,
-0x079428,1,
-0x079430,1,
-0x079438,1,
-0x079440,1,
-0x079448,1,
-0x079450,1,
-0x079458,1,
-0x079460,1,
-0x079468,1,
-0x079470,1,
-0x079478,1,
-0x079480,1,
-0x079488,1,
-0x079490,1,
-0x079498,1,
-0x0794a0,1,
-0x0794a8,1,
-0x0794b0,1,
-0x0794b8,1,
-0x0794c0,1,
-0x0794c8,1,
-0x0794d0,1,
-0x0794d8,1,
-0x0794e0,1,
-0x0794e8,1,
-0x0794f0,1,
-0x0794f8,1,
-0x079500,1,
-0x079508,1,
-0x079510,1,
-0x079518,1,
-0x079520,1,
-0x079528,1,
-0x079530,1,
-0x079538,1,
-0x079540,1,
-0x079548,1,
-0x079550,1,
-0x079558,1,
-0x079560,1,
-0x079568,1,
-0x079570,1,
-0x079578,1,
-0x079580,1,
-0x079588,1,
-0x079590,1,
-0x079598,1,
-0x0795a0,1,
-0x0795a8,1,
-0x0795b0,1,
-0x0795b8,1,
-0x0795c0,1,
-0x0795c8,1,
-0x0795d0,1,
-0x0795d8,1,
-0x0795e0,1,
-0x0795e8,1,
-0x0795f0,1,
-0x0795f8,1,
-0x079600,1,
-0x079608,1,
-0x079610,1,
-0x079618,1,
-0x079620,1,
-0x079628,1,
-0x079630,1,
-0x079638,1,
-0x079640,1,
-0x079648,1,
-0x079650,1,
-0x079658,1,
-0x079660,1,
-0x079668,1,
-0x079670,1,
-0x079678,1,
-0x079680,1,
-0x079688,1,
-0x079690,1,
-0x079698,1,
-0x0796a0,1,
-0x0796a8,1,
-0x0796b0,1,
-0x0796b8,1,
-0x0796c0,1,
-0x0796c8,1,
-0x0796d0,1,
-0x0796d8,1,
-0x0796e0,1,
-0x0796e8,1,
-0x0796f0,1,
-0x0796f8,1,
-0x079700,1,
-0x079708,1,
-0x079710,1,
-0x079718,1,
-0x079720,1,
-0x079728,1,
-0x079730,1,
-0x079738,1,
-0x079740,1,
-0x079748,1,
-0x079750,1,
-0x079758,1,
-0x079760,1,
-0x079768,1,
-0x079770,1,
-0x079778,1,
-0x079780,1,
-0x079788,1,
-0x079790,1,
-0x079798,1,
-0x0797a0,1,
-0x0797a8,1,
-0x0797b0,1,
-0x0797b8,1,
-0x0797c0,1,
-0x0797c8,1,
-0x0797d0,1,
-0x0797d8,1,
-0x0797e0,1,
-0x0797e8,1,
-0x0797f0,1,
-0x0797f8,1,
-0x079800,1,
-0x079808,1,
-0x079810,1,
-0x079818,1,
-0x079820,1,
-0x079828,1,
-0x079830,1,
-0x079838,1,
-0x079840,1,
-0x079848,1,
-0x079850,1,
-0x079858,1,
-0x079860,1,
-0x079868,1,
-0x079870,1,
-0x079878,1,
-0x079880,1,
-0x079888,1,
-0x079890,1,
-0x079898,1,
-0x0798a0,1,
-0x0798a8,1,
-0x0798b0,1,
-0x0798b8,1,
-0x0798c0,1,
-0x0798c8,1,
-0x0798d0,1,
-0x0798d8,1,
-0x0798e0,1,
-0x0798e8,1,
-0x0798f0,1,
-0x0798f8,1,
-0x079900,1,
-0x079908,1,
-0x079910,1,
-0x079918,1,
-0x079920,1,
-0x079928,1,
-0x079930,1,
-0x079938,1,
-0x079940,1,
-0x079948,1,
-0x079950,1,
-0x079958,1,
-0x079960,1,
-0x079968,1,
-0x079970,1,
-0x079978,1,
-0x079980,1,
-0x079988,1,
-0x079990,1,
-0x079998,1,
-0x0799a0,1,
-0x0799a8,1,
-0x0799b0,1,
-0x0799b8,1,
-0x0799c0,1,
-0x0799c8,1,
-0x0799d0,1,
-0x0799d8,1,
-0x0799e0,1,
-0x0799e8,1,
-0x0799f0,1,
-0x0799f8,1,
-0x079a00,1,
-0x079a08,1,
-0x079a10,1,
-0x079a18,1,
-0x079a20,1,
-0x079a28,1,
-0x079a30,1,
-0x079a38,1,
-0x079a40,1,
-0x079a48,1,
-0x079a50,1,
-0x079a58,1,
-0x079a60,1,
-0x079a68,1,
-0x079a70,1,
-0x079a78,1,
-0x079a80,1,
-0x079a88,1,
-0x079a90,1,
-0x079a98,1,
-0x079aa0,1,
-0x079aa8,1,
-0x079ab0,1,
-0x079ab8,1,
-0x079ac0,1,
-0x079ac8,1,
-0x079ad0,1,
-0x079ad8,1,
-0x079ae0,1,
-0x079ae8,1,
-0x079af0,1,
-0x079af8,1,
-0x079b00,1,
-0x079b08,1,
-0x079b10,1,
-0x079b18,1,
-0x079b20,1,
-0x079b28,1,
-0x079b30,1,
-0x079b38,1,
-0x079b40,1,
-0x079b48,1,
-0x079b50,1,
-0x079b58,1,
-0x079b60,1,
-0x079b68,1,
-0x079b70,1,
-0x079b78,1,
-0x079b80,1,
-0x079b88,1,
-0x079b90,1,
-0x079b98,1,
-0x079ba0,1,
-0x079ba8,1,
-0x079bb0,1,
-0x079bb8,1,
-0x079bc0,1,
-0x079bc8,1,
-0x079bd0,1,
-0x079bd8,1,
-0x079be0,1,
-0x079be8,1,
-0x079bf0,1,
-0x079bf8,1,
-0x079c00,1,
-0x079c08,1,
-0x079c10,1,
-0x079c18,1,
-0x079c20,1,
-0x079c28,1,
-0x079c30,1,
-0x079c38,1,
-0x079c40,1,
-0x079c48,1,
-0x079c50,1,
-0x079c58,1,
-0x079c60,1,
-0x079c68,1,
-0x079c70,1,
-0x079c78,1,
-0x079c80,1,
-0x079c88,1,
-0x079c90,1,
-0x079c98,1,
-0x079ca0,1,
-0x079ca8,1,
-0x079cb0,1,
-0x079cb8,1,
-0x079cc0,1,
-0x079cc8,1,
-0x079cd0,1,
-0x079cd8,1,
-0x079ce0,1,
-0x079ce8,1,
-0x079cf0,1,
-0x079cf8,1,
-0x079d00,1,
-0x079d08,1,
-0x079d10,1,
-0x079d18,1,
-0x079d20,1,
-0x079d28,1,
-0x079d30,1,
-0x079d38,1,
-0x079d40,1,
-0x079d48,1,
-0x079d50,1,
-0x079d58,1,
-0x079d60,1,
-0x079d68,1,
-0x079d70,1,
-0x079d78,1,
-0x079d80,1,
-0x079d88,1,
-0x079d90,1,
-0x079d98,1,
-0x079da0,1,
-0x079da8,1,
-0x079db0,1,
-0x079db8,1,
-0x079dc0,1,
-0x079dc8,1,
-0x079dd0,1,
-0x079dd8,1,
-0x079de0,1,
-0x079de8,1,
-0x079df0,1,
-0x079df8,1,
-0x079e00,1,
-0x079e08,1,
-0x079e10,1,
-0x079e18,1,
-0x079e20,1,
-0x079e28,1,
-0x079e30,1,
-0x079e38,1,
-0x079e40,1,
-0x079e48,1,
-0x079e50,1,
-0x079e58,1,
-0x079e60,1,
-0x079e68,1,
-0x079e70,1,
-0x079e78,1,
-0x079e80,1,
-0x079e88,1,
-0x079e90,1,
-0x079e98,1,
-0x079ea0,1,
-0x079ea8,1,
-0x079eb0,1,
-0x079eb8,1,
-0x079ec0,1,
-0x079ec8,1,
-0x079ed0,1,
-0x079ed8,1,
-0x079ee0,1,
-0x079ee8,1,
-0x079ef0,1,
-0x079ef8,1,
-0x079f00,1,
-0x079f08,1,
-0x079f10,1,
-0x079f18,1,
-0x079f20,1,
-0x079f28,1,
-0x079f30,1,
-0x079f38,1,
-0x079f40,1,
-0x079f48,1,
-0x079f50,1,
-0x079f58,1,
-0x079f60,1,
-0x079f68,1,
-0x079f70,1,
-0x079f78,1,
-0x079f80,1,
-0x079f88,1,
-0x079f90,1,
-0x079f98,1,
-0x079fa0,1,
-0x079fa8,1,
-0x079fb0,1,
-0x079fb8,1,
-0x079fc0,1,
-0x079fc8,1,
-0x079fd0,1,
-0x079fd8,1,
-0x079fe0,1,
-0x079fe8,1,
-0x079ff0,1,
-0x079ff8,1,
-0x07bef8,2,
-0x07bf04,1,
-0x07bf14,22,
-0x07bf80,2,
-0x07bffc,1033,
-0x07e000,1044,
-0x07f100,8,
-0x07f160,4,
-0x07f200,3,
-0x07f300,20,
-0x07f400,4,
-0x07f7f8,514,
-0x080680,7,
-0x081000,3,
-0x081010,21,
-0x081120,1,
-0x081130,2,
-0x081140,1,
-0x081150,2,
-0x081160,1,
-0x081170,2,
-0x081204,18,
-0x081304,2,
-0x08139c,25,
-0x081404,23,
-0x081468,6,
-0x081504,2,
-0x081604,14,
-0x081640,2,
-0x08164c,15,
-0x08168c,15,
-0x0816cc,15,
-0x08170c,15,
-0x08174c,15,
-0x08178c,15,
-0x0817cc,15,
-0x08180c,13,
-0x081904,5,
-0x081a30,4,
-0x081a60,18,
-0x081ab0,3,
-0x081ad0,4,
-0x081c00,128,
-0x081e04,12,
-0x082000,8,
-0x082024,1,
-0x082030,1,
-0x082044,20,
-0x08209c,2,
-0x0820ac,14,
-0x082180,1,
-0x0821c4,1,
-0x0821e0,1,
-0x0821e8,3,
-0x0821f8,1,
-0x082200,10,
-0x08229c,3,
-0x0822e0,7,
-0x082328,2,
-0x082430,20,
-0x082484,3,
-0x082498,2,
-0x082500,16,
-0x082548,2,
-0x082558,2,
-0x082564,2,
-0x082590,11,
-0x0825c4,15,
-0x0827fc,14,
-0x082838,66,
-0x082c00,13,
-0x082c38,66,
-0x083000,13,
-0x083038,66,
-0x083800,4,
-0x083814,7,
-0x083838,4,
-0x083854,2,
-0x0838a0,1,
-0x0838b0,2,
-0x0838c0,1,
-0x0838d0,2,
-0x083910,5,
-0x083928,4,
-0x083948,6,
-0x0f0000,3,
-0x0f0014,8,
-0x0f0040,6,
-0x0f0068,2,
-0x0f0078,3,
-0x0f0090,2,
-0x0f00a4,2,
-0x0f00b0,1,
-0x0f00b8,38,
-0x0f0180,17,
-0x0f01e0,4,
-0x0f01f4,1,
-0x0f0200,4,
-0x0f0220,1,
-0x0f0228,1,
-0x0f0250,5,
-0x0f0270,2,
-0x0f0280,3,
-0x0f02a4,5,
-0x0f02c0,3,
-0x0f02d8,5,
-0x0f02f0,4,
-0x0f0400,2,
-0x0f0410,4,
-0x0f0440,1,
-0x0f0450,2,
-0x0f0460,4,
-0x0f0510,34,
-0x0f0600,64,
-0x0f0714,9,
-0x0f1000,9,
-0x0f107c,1,
-0x0f2000,2,
-0x0f2010,3,
-0x0f2020,2,
-0x0f2030,3,
-0x0f2040,2,
-0x0f2050,3,
-0x0f2060,2,
-0x0f2070,3,
-0x0f2080,2,
-0x0f2090,3,
-0x0f20a0,2,
-0x0f20b0,3,
-0x0f20c0,2,
-0x0f20d0,3,
-0x0f20e0,2,
-0x0f20f0,3,
-0x0f2100,3,
-0x0f2110,25,
-0x0f2178,3,
-0x0f2190,2,
-0x0f21a0,1,
-0x0f21b0,2,
-0x0f21c0,2,
-0x0f2200,3,
-0x0f2210,15,
-0x0f2250,16,
-0x0f229c,1,
-0x0f22b0,9,
-0x0f22e0,1,
-0x0f22f0,3,
-0x0f2300,12,
-0x0f2334,4,
-0x0f2358,1,
-0x0f2380,1,
-0x0f2394,2,
-0x0f23ac,11,
-0x0f23ec,4,
-0x0f2400,3,
-0x0f2410,15,
-0x0f2450,16,
-0x0f249c,1,
-0x0f24b0,9,
-0x0f24e0,1,
-0x0f24f0,3,
-0x0f2500,12,
-0x0f2534,4,
-0x0f2558,1,
-0x0f2580,1,
-0x0f2594,2,
-0x0f25ac,11,
-0x0f25ec,4,
-0x0f2600,11,
-0x0f264c,8,
-0x0f2670,2,
-0x0f267c,17,
-0x0f2700,9,
-0x0f2728,1,
-0x0f2804,2,
-0x0f2844,2,
-0x0f2868,2,
-0x0f2874,1,
-0x0f2884,2,
-0x0f28a8,2,
-0x0f28b4,1,
-0x0f28c4,2,
-0x0f28e8,2,
-0x0f28f4,1,
-0x0f2904,2,
-0x0f2928,2,
-0x0f2934,1,
-0x0f2a40,12,
-0x0f2a80,5,
-0x0f2aa0,12,
-0x0f2b10,3,
-0x0f2b20,7,
-0x0f2b40,4,
-0x0f2b80,1,
-0x0f2c1c,9,
-0x0f2c5c,9,
-0x0f2c9c,9,
-0x0f2cc4,1,
-0x0f2ccc,1,
-0x0f2cd4,1,
-0x0f2e00,1,
-0x0f2e08,7,
-0x0f2e28,7,
-0x0f2e48,7,
-0x0f2e68,7,
-0x0f2e88,7,
-0x0f2ea8,7,
-0x0f2ec8,7,
-0x0f2ee8,7,
-0x0f2f08,7,
-0x0f2f28,7,
-0x0f2f48,7,
-0x0f2f68,7,
-0x0f2f88,7,
-0x0f2fa8,7,
-0x0f2fc8,7,
-0x0f2fe8,50,
-0x0f30c0,13,
-0x0f30fc,2,
-0x0f310c,1,
-0x0f3120,2,
-0x0f3130,5,
-0x0f3184,11,
-0x0f31c4,3,
-0x0f31e0,1,
-0x0f31f0,2,
-0x0f3204,1,
-0x0f3210,5,
-0x0f3240,1,
-0x0f3248,12,
-0x0f3280,8,
-0x0f32a4,3,
-0x0f32cc,1,
-0x0f32d4,1,
-0x0f32e0,11,
-0x0f3400,11,
-0x0f3430,3,
-0x0f3444,2,
-0x0f3554,10,
-0x0f35c0,2,
-0x0f35dc,7,
-0x0f3600,16,
-0x0f3644,1,
-0x0f365c,11,
-0x0f36a0,1,
-0x0f36b0,2,
-0x0f36c0,1,
-0x0f36d0,2,
-0x0f36e0,1,
-0x0f36f0,2,
-0x0f3700,5,
-0x0f371c,4,
-0x0f3740,4,
-0x0f3760,1,
-0x0f3770,2,
-0x0f3780,1,
-0x0f3790,2,
-0x0f37a0,1,
-0x0f37b0,2,
-0x0f37c0,1,
-0x0f37d0,2,
-0x0f37e0,1,
-0x0f37f0,2,
-0x0f3800,3,
-0x0f3810,18,
-0x0f3878,6,
-0x0f3894,3,
-0x0f38c0,7,
-0x0f38e0,6,
-0x0f3900,8,
-0x0f3924,6,
-0x0f3940,17,
-0x0f3998,1,
-0x0f39a0,9,
-0x0f3a00,1,
-0x0f3a10,2,
-0x0f3a20,1,
-0x0f3a30,2,
-0x0f3a40,1,
-0x0f3a50,2,
-0x0f3a60,1,
-0x0f3a70,2,
-0x0f3a80,1,
-0x0f3a90,2,
-0x0f3aa0,1,
-0x0f3ab0,2,
-0x0f3ac0,1,
-0x0f3ad0,2,
-0x0f3ae0,1,
-0x0f3af0,2,
-0x0f3b00,1,
-0x0f3b10,2,
-0x0f3b20,1,
-0x0f3b30,2,
-0x0f3b40,1,
-0x0f3b50,2,
-0x0f3b60,1,
-0x0f3b70,2,
-0x0f3b80,1,
-0x0f3b90,2,
-0x0f3ba0,3,
-0x0f3c00,12,
-0x0f3c34,6,
-0x0f3c60,1,
-0x0f3c70,2,
-0x0f3c84,3,
-0x0f3d00,1,
-0x0f3d08,1,
-0x0f3d14,1,
-0x0f3d1c,3,
-0x0f3d38,1,
-0x0f3d40,1,
-0x0f3d54,2,
-0x0f3da0,1,
-0x0f3db0,2,
-0x0f3e00,76,
-0x0f3f40,5,
-0x0f3f60,4,
diff --git a/mstdump/mstdump_dbs/ConnectX3Pro.csv b/mstdump/mstdump_dbs/ConnectX3Pro.csv
deleted file mode 100755 (executable)
index aadf8dd..0000000
+++ /dev/null
@@ -1,3651 +0,0 @@
-#Addr, Size, Enable addr
-0x010004,1,
-0x010010,2,
-0x0100a0,15,
-0x0100ec,2,
-0x0100fc,2,
-0x01010c,2,
-0x010150,1,
-0x0101cc,1,
-0x0101fc,1,
-0x010208,10,
-0x010300,6,
-0x010320,20,
-0x010374,3,
-0x010400,1,
-0x010410,2,
-0x010440,1,
-0x010450,2,
-0x010500,1,
-0x010510,2,
-0x010520,2,
-0x01052c,3,
-0x01053c,3,
-0x010550,1,
-0x010600,18,
-0x010680,1,
-0x010690,2,
-0x0106ac,1,
-0x0106b8,1,
-0x0106e0,3,
-0x0106f0,3,
-0x010740,4,
-0x010754,8,
-0x010800,2,
-0x010810,2,
-0x0108a0,15,
-0x0108ec,2,
-0x0108fc,2,
-0x01090c,2,
-0x010950,1,
-0x0109cc,1,
-0x0109fc,1,
-0x010a08,10,
-0x010b00,6,
-0x010b20,20,
-0x010b74,3,
-0x010c00,1,
-0x010c10,2,
-0x010c40,1,
-0x010c50,2,
-0x010d00,1,
-0x010d10,2,
-0x010d20,2,
-0x010d2c,3,
-0x010d3c,3,
-0x010d50,1,
-0x010e00,18,
-0x010e80,1,
-0x010e90,2,
-0x010eac,1,
-0x010eb8,1,
-0x010ee0,3,
-0x010ef0,3,
-0x010f40,4,
-0x010f54,8,
-0x011000,1,
-0x011010,4,
-0x011024,2,
-0x011080,2,
-0x011090,12,
-0x011180,6,
-0x011200,7,
-0x011220,1,
-0x011240,4,
-0x011260,1,
-0x011280,5,
-0x011300,1,
-0x011310,2,
-0x011400,6,
-0x011460,1,
-0x0114b0,4,
-0x011800,1,
-0x011810,4,
-0x011824,2,
-0x011880,2,
-0x011890,12,
-0x011980,6,
-0x011a00,7,
-0x011a20,1,
-0x011a40,4,
-0x011a60,1,
-0x011a80,5,
-0x011b00,1,
-0x011b10,2,
-0x011c00,6,
-0x011c60,1,
-0x011cb0,4,
-0x012000,1,
-0x01200c,1,
-0x012020,1,
-0x012030,2,
-0x012044,2,
-0x0120a0,4,
-0x0120c0,7,
-0x01211c,13,
-0x012164,1,
-0x012170,4,
-0x0121e0,6,
-0x012250,1,
-0x012360,4,
-0x012380,3,
-0x012390,5,
-0x0123b0,5,
-0x012440,3,
-0x012450,3,
-0x0124a8,2,
-0x0124c0,2,
-0x0124d0,2,
-0x012568,2,
-0x0125c0,4,
-0x0125fc,10,
-0x012628,6,
-0x012644,1,
-0x012660,2,
-0x012670,2,
-0x01268c,5,
-0x01270c,1,
-0x012728,8,
-0x012750,2,
-0x01275c,1,
-0x0127d8,2,
-0x0127e8,2,
-0x012840,1,
-0x012850,2,
-0x0128a0,6,
-0x012904,1,
-0x012910,5,
-0x012928,4,
-0x012944,2,
-0x012950,1,
-0x012958,4,
-0x012980,7,
-0x0129a0,1,
-0x0129b0,2,
-0x012d48,4,
-0x013000,10,
-0x013040,14,
-0x013080,14,
-0x0130c0,14,
-0x013100,37,
-0x013198,1,
-0x0131a0,5,
-0x0131b8,1,
-0x0131c0,5,
-0x0131d8,1,
-0x0131e0,5,
-0x0131f8,1,
-0x013200,37,
-0x013298,1,
-0x0132a0,5,
-0x0132b8,1,
-0x0132c0,5,
-0x0132d8,1,
-0x0132e0,5,
-0x0132f8,1,
-0x013300,9,
-0x013330,2,
-0x013340,1,
-0x013350,2,
-0x013360,1,
-0x013370,2,
-0x013380,2,
-0x01338c,38,
-0x013430,2,
-0x013440,1,
-0x013450,2,
-0x013460,1,
-0x013470,2,
-0x013480,2,
-0x01348c,30,
-0x013510,2,
-0x013520,1,
-0x013530,2,
-0x013544,2,
-0x013580,8,
-0x0135a4,6,
-0x0135c0,16,
-0x013604,2,
-0x013628,2,
-0x013634,1,
-0x013644,2,
-0x013668,2,
-0x013674,1,
-0x013684,2,
-0x0136a8,2,
-0x0136b4,1,
-0x0136c4,2,
-0x0136e8,2,
-0x0136f4,1,
-0x013700,21,
-0x013760,1,
-0x013770,2,
-0x013780,1,
-0x013790,2,
-0x0137a0,1,
-0x0137b0,2,
-0x013800,1,
-0x013820,2,
-0x01382c,10,
-0x01386c,10,
-0x013898,3,
-0x0138b0,2,
-0x013a00,1,
-0x013a20,2,
-0x013a2c,10,
-0x013a6c,10,
-0x013a98,3,
-0x013ab0,2,
-0x013c00,4,
-0x013c14,7,
-0x013c38,4,
-0x013c54,2,
-0x013ca0,1,
-0x013cb0,2,
-0x013cc0,1,
-0x013cd0,2,
-0x013d00,3,
-0x013d10,6,
-0x013d44,7,
-0x013d64,8,
-0x013d90,2,
-0x013da0,6,
-0x013e00,1,
-0x014000,3,
-0x014010,15,
-0x014050,16,
-0x01409c,1,
-0x0140b0,9,
-0x0140e0,1,
-0x0140f0,3,
-0x014100,12,
-0x014134,4,
-0x014158,1,
-0x014180,1,
-0x014194,2,
-0x0141ac,12,
-0x0141ec,4,
-0x014200,3,
-0x014210,15,
-0x014250,16,
-0x01429c,1,
-0x0142b0,9,
-0x0142e0,1,
-0x0142f0,3,
-0x014300,12,
-0x014334,4,
-0x014358,1,
-0x014380,1,
-0x014394,2,
-0x0143ac,12,
-0x0143ec,4,
-0x014400,12,
-0x01444c,8,
-0x014470,2,
-0x01447c,33,
-0x014800,8,
-0x014824,5,
-0x014840,8,
-0x014864,5,
-0x014880,8,
-0x0148a4,5,
-0x0148c0,8,
-0x0148e4,5,
-0x014900,8,
-0x014924,5,
-0x014940,8,
-0x014964,5,
-0x014980,8,
-0x0149a4,5,
-0x0149c0,8,
-0x0149e4,5,
-0x014a04,5,
-0x018000,2,
-0x01805c,4,
-0x018080,8,
-0x0180a4,7,
-0x0180c4,2,
-0x018100,32,
-0x018200,4,
-0x018224,1,
-0x018234,5,
-0x018300,32,
-0x018384,1,
-0x01838c,1,
-0x0183a4,3,
-0x018400,5,
-0x018420,5,
-0x018440,5,
-0x018460,5,
-0x018480,5,
-0x0184a0,5,
-0x0184c0,5,
-0x0184e0,5,
-0x018500,5,
-0x018520,5,
-0x018540,5,
-0x018560,5,
-0x018580,5,
-0x0185a0,5,
-0x0185c0,5,
-0x0185e0,5,
-0x018610,4,
-0x018624,4,
-0x018810,3,
-0x018820,11,
-0x018850,3,
-0x018860,7,
-0x018884,11,
-0x0188c8,2,
-0x0188d4,2,
-0x0188e0,8,
-0x018a04,3,
-0x018a20,3,
-0x018a30,4,
-0x018a44,21,
-0x018b00,16,
-0x018b4c,5,
-0x018b68,5,
-0x018c00,17,
-0x018c54,28,
-0x018cd4,13,
-0x018d0c,2,
-0x018e00,1,
-0x018e10,2,
-0x018e50,2,
-0x018f00,4,
-0x018f14,7,
-0x018f38,5,
-0x018f54,2,
-0x018fa0,1,
-0x018fb0,2,
-0x018fc0,1,
-0x018fd0,2,
-0x018fe0,5,
-0x019ff0,2052,
-0x01c004,2,
-0x01c010,1,
-0x01c01c,2,
-0x01c06c,27,
-0x01c180,1,
-0x01c190,2,
-0x01c1a0,1,
-0x01c1b0,2,
-0x01c1c0,33,
-0x01c254,28,
-0x01c2d4,13,
-0x01c30c,2,
-0x01c40c,5,
-0x01c428,2,
-0x01c434,2,
-0x01c448,2,
-0x01c454,1,
-0x01c464,25,
-0x01c4d8,2,
-0x01c4e4,12,
-0x01c608,4,
-0x01c624,3,
-0x01c63c,1,
-0x01c64c,27,
-0x01c6c0,18,
-0x01c70c,2,
-0x01c71c,5,
-0x01c738,2,
-0x01c744,1,
-0x01c75c,1,
-0x01c7dc,1,
-0x01c7e4,1,
-0x01c7f8,7,
-0x01c818,7,
-0x01c840,2,
-0x01c84c,16,
-0x01c8a0,5,
-0x01c8c0,1,
-0x01c900,5,
-0x01c918,7,
-0x01c940,2,
-0x01c94c,16,
-0x01c9a0,5,
-0x01c9c0,1,
-0x01ca00,5,
-0x01ca18,7,
-0x01ca40,2,
-0x01ca4c,16,
-0x01caa0,5,
-0x01cac0,1,
-0x01cb00,5,
-0x01cb18,7,
-0x01cb40,2,
-0x01cb4c,16,
-0x01cba0,5,
-0x01cbc0,1,
-0x01cc00,5,
-0x01cc18,7,
-0x01cc40,2,
-0x01cc4c,16,
-0x01cca0,5,
-0x01ccc0,1,
-0x01cd00,5,
-0x01cd18,7,
-0x01cd40,2,
-0x01cd4c,16,
-0x01cda0,5,
-0x01cdc0,1,
-0x01ce00,5,
-0x01ce18,7,
-0x01ce40,2,
-0x01ce4c,16,
-0x01cea0,5,
-0x01cec0,1,
-0x01cf00,5,
-0x01cf18,7,
-0x01cf40,2,
-0x01cf4c,16,
-0x01cfa0,5,
-0x01cfc0,1,
-0x01d000,19,
-0x01d054,21,
-0x01d0ac,6,
-0x01d0d0,2,
-0x01d0e8,15,
-0x01d140,1,
-0x01d148,53,
-0x01d220,12,
-0x01d25c,6,
-0x01d278,2,
-0x01d284,1,
-0x01d298,2,
-0x01d2a8,6,
-0x01d300,2,
-0x01d310,11,
-0x01d350,4,
-0x01d368,3,
-0x01d37c,6,
-0x01d3a0,3,
-0x01d3b0,9,
-0x01d3e0,6,
-0x01d400,19,
-0x01d454,21,
-0x01d4ac,6,
-0x01d4d0,2,
-0x01d4e8,15,
-0x01d540,1,
-0x01d548,53,
-0x01d620,12,
-0x01d65c,6,
-0x01d678,2,
-0x01d684,1,
-0x01d698,2,
-0x01d6a8,6,
-0x01d700,2,
-0x01d710,11,
-0x01d750,4,
-0x01d768,3,
-0x01d77c,6,
-0x01d7a0,3,
-0x01d7b0,9,
-0x01d7e0,6,
-0x01d800,16,
-0x01d844,1,
-0x01d880,8,
-0x01d8c4,1,
-0x01d8cc,5,
-0x01d8e4,7,
-0x01d920,1,
-0x01d968,3,
-0x01d9e0,6,
-0x01da00,2,
-0x01da14,2,
-0x01da20,8,
-0x01da44,1,
-0x01da58,2,
-0x01da64,1,
-0x01da78,8,
-0x01db04,1,
-0x01db0c,14,
-0x01db50,2,
-0x01db60,1,
-0x01db70,2,
-0x01db80,1,
-0x01db90,2,
-0x01dba0,3,
-0x01dc00,1,
-0x01dc0c,1,
-0x01dc80,6,
-0x01dca0,1,
-0x01dd80,13,
-0x01ddbc,1,
-0x01dde0,9,
-0x01df00,1,
-0x01df08,1,
-0x01df14,1,
-0x01df1c,3,
-0x01df38,1,
-0x01df40,1,
-0x01df54,2,
-0x01dfa0,1,
-0x01dfb0,2,
-0x01e5c0,1,
-0x01e5dc,1,
-0x01e5e4,14,
-0x01e620,4,
-0x01e668,6,
-0x01e780,160,
-0x01ea04,12,
-0x01ec00,8,
-0x01ec24,1,
-0x01ec30,1,
-0x01ec44,20,
-0x01ec9c,2,
-0x01ecac,14,
-0x01ed80,1,
-0x01edc4,1,
-0x01ede0,1,
-0x01ede8,3,
-0x01edf8,1,
-0x01ee00,8,
-0x01ee24,1,
-0x01ee30,1,
-0x01ee44,20,
-0x01ee9c,2,
-0x01eeac,14,
-0x01ef80,1,
-0x01efc4,1,
-0x01efe0,1,
-0x01efe8,3,
-0x01eff8,1,
-0x01f000,1024,
-0x030000,1,
-0x030010,2,
-0x030020,1,
-0x030030,2,
-0x030040,1,
-0x030050,2,
-0x030100,27,
-0x030180,3,
-0x030200,80,
-0x030c00,128,
-0x030e1c,1,
-0x030e3c,1,
-0x030e44,1,
-0x030e5c,16,
-0x030f10,4,
-0x030f40,32,
-0x031000,14,
-0x031040,14,
-0x031080,14,
-0x0310c0,14,
-0x031100,133,
-0x031318,13,
-0x031a00,64,
-0x031c00,64,
-0x031e04,1,
-0x032000,512,
-0x033000,1025,
-0x034010,2,
-0x034104,1,
-0x034224,1,
-0x034260,7,
-0x034284,4,
-0x034304,1,
-0x034314,3,
-0x034324,1,
-0x034334,3,
-0x034344,1,
-0x034358,2,
-0x034414,3,
-0x034510,4,
-0x034608,6,
-0x034800,7,
-0x034820,4,
-0x034868,6,
-0x034980,45,
-0x034a40,13,
-0x034a80,13,
-0x034ac0,13,
-0x034b00,13,
-0x034b40,13,
-0x034b80,13,
-0x034bc0,13,
-0x035020,1,
-0x035028,1,
-0x035040,2,
-0x03504c,1,
-0x035058,3,
-0x035068,4,
-0x035104,5,
-0x035200,12,
-0x035240,12,
-0x035280,12,
-0x0352c0,12,
-0x035300,12,
-0x035340,12,
-0x035380,12,
-0x0353c0,12,
-0x036000,128,
-0x036204,12,
-0x036400,8,
-0x036424,1,
-0x036430,1,
-0x036444,20,
-0x03649c,2,
-0x0364ac,14,
-0x036580,1,
-0x0365c4,1,
-0x0365e0,1,
-0x0365e8,3,
-0x0365f8,1,
-0x036600,4,
-0x036614,6,
-0x036638,3,
-0x036654,2,
-0x0366a0,1,
-0x0366b0,2,
-0x0366c0,1,
-0x0366d0,2,
-0x036700,1,
-0x036710,2,
-0x036720,1,
-0x036730,2,
-0x040000,19,
-0x040050,3,
-0x040060,2,
-0x04007c,6,
-0x0400a4,5,
-0x0400c0,4,
-0x0400e0,3,
-0x040100,6,
-0x04011c,14,
-0x04015c,1,
-0x040170,4,
-0x040190,3,
-0x0401a4,1,
-0x0401ac,5,
-0x0401c4,1,
-0x0401cc,6,
-0x040200,3,
-0x040210,3,
-0x040220,3,
-0x040230,3,
-0x040240,3,
-0x040250,3,
-0x040260,3,
-0x040270,3,
-0x040280,3,
-0x040290,3,
-0x0402a0,3,
-0x0402b0,3,
-0x0402c0,3,
-0x0402d0,3,
-0x0402e0,3,
-0x0402f0,3,
-0x040304,1,
-0x040314,8,
-0x040340,11,
-0x040490,1,
-0x0404a8,15,
-0x040510,18,
-0x04055c,3,
-0x04056c,3,
-0x04057c,3,
-0x04058c,2,
-0x04059c,18,
-0x040610,16,
-0x0406e0,51,
-0x0407d0,3,
-0x0407f0,1,
-0x040800,337,
-0x040d50,18,
-0x040d9c,4,
-0x040db0,11,
-0x040df0,11,
-0x040e20,1,
-0x040e28,11,
-0x040e58,1,
-0x040e60,2,
-0x040e6c,1,
-0x040e74,11,
-0x040eb0,4,
-0x040ec8,2,
-0x040ed4,7,
-0x040ef8,9,
-0x040f20,4,
-0x041000,33,
-0x041100,30,
-0x041180,15,
-0x0411dc,1,
-0x0411e4,15,
-0x041224,1,
-0x041230,1,
-0x041244,20,
-0x04129c,2,
-0x0412ac,14,
-0x041380,1,
-0x0413c4,1,
-0x0413e0,1,
-0x0413e8,3,
-0x0413f8,1,
-0x041400,8,
-0x041424,1,
-0x041430,1,
-0x041444,20,
-0x04149c,2,
-0x0414ac,14,
-0x041580,1,
-0x0415c4,1,
-0x0415e0,1,
-0x0415e8,3,
-0x0415f8,1,
-0x041600,4,
-0x041614,7,
-0x041638,4,
-0x041654,2,
-0x0416a0,1,
-0x0416b0,2,
-0x0416c0,1,
-0x0416d0,2,
-0x0416e0,1,
-0x041a00,1,
-0x041a10,2,
-0x041a20,1,
-0x041a30,2,
-0x041c00,128,
-0x041e04,12,
-0x042000,5,
-0x042020,5,
-0x042040,5,
-0x042060,5,
-0x042080,5,
-0x0420a0,5,
-0x0420c0,5,
-0x0420e0,5,
-0x042100,5,
-0x042120,5,
-0x042140,5,
-0x042160,5,
-0x042180,5,
-0x0421a0,5,
-0x0421c0,5,
-0x0421e0,5,
-0x042200,5,
-0x042220,5,
-0x042240,5,
-0x042260,5,
-0x042280,5,
-0x0422a0,5,
-0x0422c0,5,
-0x0422e0,5,
-0x042300,5,
-0x042320,5,
-0x042340,5,
-0x042360,5,
-0x042380,5,
-0x0423a0,5,
-0x0423c0,5,
-0x0423e0,5,
-0x042400,5,
-0x042420,5,
-0x042440,5,
-0x042460,5,
-0x042480,5,
-0x0424a0,5,
-0x0424c0,5,
-0x0424e0,5,
-0x042500,5,
-0x042520,5,
-0x042540,5,
-0x042560,5,
-0x042580,5,
-0x0425a0,5,
-0x0425c0,5,
-0x0425e0,5,
-0x042600,5,
-0x042620,5,
-0x042640,5,
-0x042660,5,
-0x042680,5,
-0x0426a0,5,
-0x0426c0,5,
-0x0426e0,5,
-0x042700,5,
-0x042720,5,
-0x042740,5,
-0x042760,5,
-0x042780,5,
-0x0427a0,5,
-0x0427c0,5,
-0x0427e0,5,
-0x042800,5,
-0x042820,5,
-0x042840,5,
-0x042860,5,
-0x042880,5,
-0x0428a0,5,
-0x0428c0,5,
-0x0428e0,5,
-0x042900,5,
-0x042920,5,
-0x042940,5,
-0x042960,5,
-0x042980,5,
-0x0429a0,5,
-0x0429c0,5,
-0x0429e0,5,
-0x042a00,5,
-0x042a20,5,
-0x042a40,5,
-0x042a60,5,
-0x042a80,5,
-0x042aa0,5,
-0x042ac0,5,
-0x042ae0,5,
-0x042b00,5,
-0x042b20,5,
-0x042b40,5,
-0x042b60,5,
-0x042b80,5,
-0x042ba0,5,
-0x042bc0,5,
-0x042be0,5,
-0x042c00,5,
-0x042c20,5,
-0x042c40,5,
-0x042c60,5,
-0x042c80,5,
-0x042ca0,5,
-0x042cc0,5,
-0x042ce0,5,
-0x042d00,5,
-0x042d20,5,
-0x042d40,5,
-0x042d60,5,
-0x042d80,5,
-0x042da0,5,
-0x042dc0,5,
-0x042de0,5,
-0x042e00,5,
-0x042e20,5,
-0x042e40,5,
-0x042e60,5,
-0x042e80,5,
-0x042ea0,5,
-0x042ec0,5,
-0x042ee0,5,
-0x042f00,5,
-0x042f20,5,
-0x042f40,5,
-0x042f60,5,
-0x042f80,5,
-0x042fa0,5,
-0x042fc0,5,
-0x042fe0,5,
-0x043000,5,
-0x043020,5,
-0x043040,5,
-0x043060,5,
-0x043080,5,
-0x0430a0,5,
-0x0430c0,5,
-0x0430e0,5,
-0x043100,5,
-0x043120,5,
-0x043140,5,
-0x043160,5,
-0x043180,5,
-0x0431a0,5,
-0x0431c0,5,
-0x0431e0,5,
-0x043200,5,
-0x043220,5,
-0x043240,5,
-0x043260,5,
-0x043280,5,
-0x0432a0,5,
-0x0432c0,5,
-0x0432e0,5,
-0x043300,5,
-0x043320,5,
-0x043340,5,
-0x043360,5,
-0x043380,5,
-0x0433a0,5,
-0x0433c0,5,
-0x0433e0,5,
-0x043400,5,
-0x043420,5,
-0x043440,5,
-0x043460,5,
-0x043480,5,
-0x0434a0,5,
-0x0434c0,5,
-0x0434e0,5,
-0x043500,5,
-0x043520,5,
-0x043540,5,
-0x043560,5,
-0x043580,5,
-0x0435a0,5,
-0x0435c0,5,
-0x0435e0,5,
-0x043600,5,
-0x043620,5,
-0x043640,5,
-0x043660,5,
-0x043680,5,
-0x0436a0,5,
-0x0436c0,5,
-0x0436e0,5,
-0x043700,5,
-0x043720,5,
-0x043740,5,
-0x043760,5,
-0x043780,5,
-0x0437a0,5,
-0x0437c0,5,
-0x0437e0,5,
-0x043800,5,
-0x043820,5,
-0x043840,5,
-0x043860,5,
-0x043880,5,
-0x0438a0,5,
-0x0438c0,5,
-0x0438e0,5,
-0x043900,5,
-0x043920,5,
-0x043940,5,
-0x043960,5,
-0x043980,5,
-0x0439a0,5,
-0x0439c0,5,
-0x0439e0,5,
-0x043a00,5,
-0x043a20,5,
-0x043a40,5,
-0x043a60,5,
-0x043a80,5,
-0x043aa0,5,
-0x043ac0,5,
-0x043ae0,5,
-0x043b00,5,
-0x043b20,5,
-0x043b40,5,
-0x043b60,5,
-0x043b80,5,
-0x043ba0,5,
-0x043bc0,5,
-0x043be0,5,
-0x043c00,5,
-0x043c20,5,
-0x043c40,5,
-0x043c60,5,
-0x043c80,5,
-0x043ca0,5,
-0x043cc0,5,
-0x043ce0,5,
-0x043d00,5,
-0x043d20,5,
-0x043d40,5,
-0x043d60,5,
-0x043d80,5,
-0x043da0,5,
-0x043dc0,5,
-0x043de0,5,
-0x043e00,5,
-0x043e20,5,
-0x043e40,5,
-0x043e60,5,
-0x043e80,5,
-0x043ea0,5,
-0x043ec0,5,
-0x043ee0,5,
-0x043f00,5,
-0x043f20,5,
-0x043f40,5,
-0x043f60,5,
-0x043f80,5,
-0x043fa0,5,
-0x043fc0,5,
-0x043fe0,5,
-0x044004,32,
-0x04408c,6,
-0x0440a8,4,
-0x0440c8,3,
-0x0440d8,2,
-0x0440e8,3,
-0x0440f8,5,
-0x044200,8,
-0x044240,48,
-0x044320,3,
-0x044ec8,4,
-0x044fc8,202,
-0x045300,48,
-0x045400,25,
-0x045468,22,
-0x046480,23,
-0x047000,60,
-0x047ff0,2,
-0x048000,5,
-0x048020,5,
-0x048040,5,
-0x048060,5,
-0x048080,5,
-0x0480a0,5,
-0x0480c0,5,
-0x0480e0,5,
-0x048100,5,
-0x048120,5,
-0x048140,5,
-0x048160,5,
-0x048180,5,
-0x0481a0,5,
-0x0481c0,5,
-0x0481e0,5,
-0x048200,5,
-0x048220,5,
-0x048240,5,
-0x048260,5,
-0x048280,5,
-0x0482a0,5,
-0x0482c0,5,
-0x0482e0,5,
-0x048300,5,
-0x048320,5,
-0x048340,5,
-0x048360,5,
-0x048380,5,
-0x0483a0,5,
-0x0483c0,5,
-0x0483e0,5,
-0x048400,5,
-0x048420,5,
-0x048440,5,
-0x048460,5,
-0x048480,5,
-0x0484a0,5,
-0x0484c0,5,
-0x0484e0,5,
-0x048500,5,
-0x048520,5,
-0x048540,5,
-0x048560,5,
-0x048580,5,
-0x0485a0,5,
-0x0485c0,5,
-0x0485e0,5,
-0x048600,5,
-0x048620,5,
-0x048640,5,
-0x048660,5,
-0x048680,5,
-0x0486a0,5,
-0x0486c0,5,
-0x0486e0,5,
-0x048700,5,
-0x048720,5,
-0x048740,5,
-0x048760,5,
-0x048780,5,
-0x0487a0,5,
-0x0487c0,5,
-0x0487e0,5,
-0x048800,5,
-0x048820,5,
-0x048840,5,
-0x048860,5,
-0x048880,5,
-0x0488a0,5,
-0x0488c0,5,
-0x0488e0,5,
-0x048900,5,
-0x048920,5,
-0x048940,5,
-0x048960,5,
-0x048980,5,
-0x0489a0,5,
-0x0489c0,5,
-0x0489e0,5,
-0x048a00,5,
-0x048a20,5,
-0x048a40,5,
-0x048a60,5,
-0x048a80,5,
-0x048aa0,5,
-0x048ac0,5,
-0x048ae0,5,
-0x048b00,5,
-0x048b20,5,
-0x048b40,5,
-0x048b60,5,
-0x048b80,5,
-0x048ba0,5,
-0x048bc0,5,
-0x048be0,5,
-0x048c00,5,
-0x048c20,5,
-0x048c40,5,
-0x048c60,5,
-0x048c80,5,
-0x048ca0,5,
-0x048cc0,5,
-0x048ce0,5,
-0x048d00,5,
-0x048d20,5,
-0x048d40,5,
-0x048d60,5,
-0x048d80,5,
-0x048da0,5,
-0x048dc0,5,
-0x048de0,5,
-0x048e00,5,
-0x048e20,5,
-0x048e40,5,
-0x048e60,5,
-0x048e80,5,
-0x048ea0,5,
-0x048ec0,5,
-0x048ee0,5,
-0x048f00,5,
-0x048f20,5,
-0x048f40,5,
-0x048f60,5,
-0x048f80,5,
-0x048fa0,5,
-0x048fc0,5,
-0x048fe0,5,
-0x049000,5,
-0x049020,5,
-0x049040,5,
-0x049060,5,
-0x049080,5,
-0x0490a0,5,
-0x0490c0,5,
-0x0490e0,5,
-0x049100,5,
-0x049120,5,
-0x049140,5,
-0x049160,5,
-0x049180,5,
-0x0491a0,5,
-0x0491c0,5,
-0x0491e0,5,
-0x049200,5,
-0x049220,5,
-0x049240,5,
-0x049260,5,
-0x049280,5,
-0x0492a0,5,
-0x0492c0,5,
-0x0492e0,5,
-0x049300,5,
-0x049320,5,
-0x049340,5,
-0x049360,5,
-0x049380,5,
-0x0493a0,5,
-0x0493c0,5,
-0x0493e0,5,
-0x049400,5,
-0x049420,5,
-0x049440,5,
-0x049460,5,
-0x049480,5,
-0x0494a0,5,
-0x0494c0,5,
-0x0494e0,5,
-0x049500,5,
-0x049520,5,
-0x049540,5,
-0x049560,5,
-0x049580,5,
-0x0495a0,5,
-0x0495c0,5,
-0x0495e0,5,
-0x049600,5,
-0x049620,5,
-0x049640,5,
-0x049660,5,
-0x049680,5,
-0x0496a0,5,
-0x0496c0,5,
-0x0496e0,5,
-0x049700,5,
-0x049720,5,
-0x049740,5,
-0x049760,5,
-0x049780,5,
-0x0497a0,5,
-0x0497c0,5,
-0x0497e0,5,
-0x049800,5,
-0x049820,5,
-0x049840,5,
-0x049860,5,
-0x049880,5,
-0x0498a0,5,
-0x0498c0,5,
-0x0498e0,5,
-0x049900,5,
-0x049920,5,
-0x049940,5,
-0x049960,5,
-0x049980,5,
-0x0499a0,5,
-0x0499c0,5,
-0x0499e0,5,
-0x049a00,5,
-0x049a20,5,
-0x049a40,5,
-0x049a60,5,
-0x049a80,5,
-0x049aa0,5,
-0x049ac0,5,
-0x049ae0,5,
-0x049b00,5,
-0x049b20,5,
-0x049b40,5,
-0x049b60,5,
-0x049b80,5,
-0x049ba0,5,
-0x049bc0,5,
-0x049be0,5,
-0x049c00,5,
-0x049c20,5,
-0x049c40,5,
-0x049c60,5,
-0x049c80,5,
-0x049ca0,5,
-0x049cc0,5,
-0x049ce0,5,
-0x049d00,5,
-0x049d20,5,
-0x049d40,5,
-0x049d60,5,
-0x049d80,5,
-0x049da0,5,
-0x049dc0,5,
-0x049de0,5,
-0x049e00,5,
-0x049e20,5,
-0x049e40,5,
-0x049e60,5,
-0x049e80,5,
-0x049ea0,5,
-0x049ec0,5,
-0x049ee0,5,
-0x049f00,5,
-0x049f20,5,
-0x049f40,5,
-0x049f60,5,
-0x049f80,5,
-0x049fa0,5,
-0x049fc0,5,
-0x049fe0,5,
-0x04a000,5,
-0x04a020,5,
-0x04a040,5,
-0x04a060,5,
-0x04a080,5,
-0x04a0a0,5,
-0x04a0c0,5,
-0x04a0e0,5,
-0x04a100,5,
-0x04a120,5,
-0x04a140,5,
-0x04a160,5,
-0x04a180,5,
-0x04a1a0,5,
-0x04a1c0,5,
-0x04a1e0,5,
-0x04a200,5,
-0x04a220,5,
-0x04a240,5,
-0x04a260,5,
-0x04a280,5,
-0x04a2a0,5,
-0x04a2c0,5,
-0x04a2e0,5,
-0x04a300,5,
-0x04a320,5,
-0x04a340,5,
-0x04a360,5,
-0x04a380,5,
-0x04a3a0,5,
-0x04a3c0,5,
-0x04a3e0,5,
-0x04a400,5,
-0x04a420,5,
-0x04a440,5,
-0x04a460,5,
-0x04a480,5,
-0x04a4a0,5,
-0x04a4c0,5,
-0x04a4e0,5,
-0x04a500,5,
-0x04a520,5,
-0x04a540,5,
-0x04a560,5,
-0x04a580,5,
-0x04a5a0,5,
-0x04a5c0,5,
-0x04a5e0,5,
-0x04a600,5,
-0x04a620,5,
-0x04a640,5,
-0x04a660,5,
-0x04a680,5,
-0x04a6a0,5,
-0x04a6c0,5,
-0x04a6e0,5,
-0x04a700,5,
-0x04a720,5,
-0x04a740,5,
-0x04a760,5,
-0x04a780,5,
-0x04a7a0,5,
-0x04a7c0,5,
-0x04a7e0,5,
-0x04a800,5,
-0x04a820,5,
-0x04a840,5,
-0x04a860,5,
-0x04a880,5,
-0x04a8a0,5,
-0x04a8c0,5,
-0x04a8e0,5,
-0x04a900,5,
-0x04a920,5,
-0x04a940,5,
-0x04a960,5,
-0x04a980,5,
-0x04a9a0,5,
-0x04a9c0,5,
-0x04a9e0,5,
-0x04aa00,5,
-0x04aa20,5,
-0x04aa40,5,
-0x04aa60,5,
-0x04aa80,5,
-0x04aaa0,5,
-0x04aac0,5,
-0x04aae0,5,
-0x04ab00,5,
-0x04ab20,5,
-0x04ab40,5,
-0x04ab60,5,
-0x04ab80,5,
-0x04aba0,5,
-0x04abc0,5,
-0x04abe0,5,
-0x04ac00,5,
-0x04ac20,5,
-0x04ac40,5,
-0x04ac60,5,
-0x04ac80,5,
-0x04aca0,5,
-0x04acc0,5,
-0x04ace0,5,
-0x04ad00,5,
-0x04ad20,5,
-0x04ad40,5,
-0x04ad60,5,
-0x04ad80,5,
-0x04ada0,5,
-0x04adc0,5,
-0x04ade0,5,
-0x04ae00,5,
-0x04ae20,5,
-0x04ae40,5,
-0x04ae60,5,
-0x04ae80,5,
-0x04aea0,5,
-0x04aec0,5,
-0x04aee0,5,
-0x04af00,5,
-0x04af20,5,
-0x04af40,5,
-0x04af60,5,
-0x04af80,5,
-0x04afa0,5,
-0x04afc0,5,
-0x04afe0,5,
-0x04b000,5,
-0x04b020,5,
-0x04b040,5,
-0x04b060,5,
-0x04b080,5,
-0x04b0a0,5,
-0x04b0c0,5,
-0x04b0e0,5,
-0x04b100,5,
-0x04b120,5,
-0x04b140,5,
-0x04b160,5,
-0x04b180,5,
-0x04b1a0,5,
-0x04b1c0,5,
-0x04b1e0,5,
-0x04b200,5,
-0x04b220,5,
-0x04b240,5,
-0x04b260,5,
-0x04b280,5,
-0x04b2a0,5,
-0x04b2c0,5,
-0x04b2e0,5,
-0x04b300,5,
-0x04b320,5,
-0x04b340,5,
-0x04b360,5,
-0x04b380,5,
-0x04b3a0,5,
-0x04b3c0,5,
-0x04b3e0,5,
-0x04b400,5,
-0x04b420,5,
-0x04b440,5,
-0x04b460,5,
-0x04b480,5,
-0x04b4a0,5,
-0x04b4c0,5,
-0x04b4e0,5,
-0x04b500,5,
-0x04b520,5,
-0x04b540,5,
-0x04b560,5,
-0x04b580,5,
-0x04b5a0,5,
-0x04b5c0,5,
-0x04b5e0,5,
-0x04b600,5,
-0x04b620,5,
-0x04b640,5,
-0x04b660,5,
-0x04b680,5,
-0x04b6a0,5,
-0x04b6c0,5,
-0x04b6e0,5,
-0x04b700,5,
-0x04b720,5,
-0x04b740,5,
-0x04b760,5,
-0x04b780,5,
-0x04b7a0,5,
-0x04b7c0,5,
-0x04b7e0,5,
-0x04b800,5,
-0x04b820,5,
-0x04b840,5,
-0x04b860,5,
-0x04b880,5,
-0x04b8a0,5,
-0x04b8c0,5,
-0x04b8e0,5,
-0x04b900,5,
-0x04b920,5,
-0x04b940,5,
-0x04b960,5,
-0x04b980,5,
-0x04b9a0,5,
-0x04b9c0,5,
-0x04b9e0,5,
-0x04ba00,5,
-0x04ba20,5,
-0x04ba40,5,
-0x04ba60,5,
-0x04ba80,5,
-0x04baa0,5,
-0x04bac0,5,
-0x04bae0,5,
-0x04bb00,5,
-0x04bb20,5,
-0x04bb40,5,
-0x04bb60,5,
-0x04bb80,5,
-0x04bba0,5,
-0x04bbc0,5,
-0x04bbe0,5,
-0x04bc00,5,
-0x04bc20,5,
-0x04bc40,5,
-0x04bc60,5,
-0x04bc80,5,
-0x04bca0,5,
-0x04bcc0,5,
-0x04bce0,5,
-0x04bd00,5,
-0x04bd20,5,
-0x04bd40,5,
-0x04bd60,5,
-0x04bd80,5,
-0x04bda0,5,
-0x04bdc0,5,
-0x04bde0,5,
-0x04be00,5,
-0x04be20,5,
-0x04be40,5,
-0x04be60,5,
-0x04be80,5,
-0x04bea0,5,
-0x04bec0,5,
-0x04bee0,5,
-0x04bf00,5,
-0x04bf20,5,
-0x04bf40,5,
-0x04bf60,5,
-0x04bf80,5,
-0x04bfa0,5,
-0x04bfc0,5,
-0x04bfe0,5,
-0x04c000,5,
-0x04c020,5,
-0x04c040,5,
-0x04c060,5,
-0x04c080,5,
-0x04c0a0,5,
-0x04c0c0,5,
-0x04c0e0,5,
-0x04c100,5,
-0x04c120,5,
-0x04c140,5,
-0x04c160,5,
-0x04c180,5,
-0x04c1a0,5,
-0x04c1c0,5,
-0x04c1e0,5,
-0x04c200,5,
-0x04c220,5,
-0x04c240,5,
-0x04c260,5,
-0x04c280,5,
-0x04c2a0,5,
-0x04c2c0,5,
-0x04c2e0,5,
-0x04c300,5,
-0x04c320,5,
-0x04c340,5,
-0x04c360,5,
-0x04c380,5,
-0x04c3a0,5,
-0x04c3c0,5,
-0x04c3e0,5,
-0x04c400,5,
-0x04c420,5,
-0x04c440,5,
-0x04c460,5,
-0x04c480,5,
-0x04c4a0,5,
-0x04c4c0,5,
-0x04c4e0,5,
-0x04c500,5,
-0x04c520,5,
-0x04c540,5,
-0x04c560,5,
-0x04c580,5,
-0x04c5a0,5,
-0x04c5c0,5,
-0x04c5e0,5,
-0x04c600,5,
-0x04c620,5,
-0x04c640,5,
-0x04c660,5,
-0x04c680,5,
-0x04c6a0,5,
-0x04c6c0,5,
-0x04c6e0,5,
-0x04c700,5,
-0x04c720,5,
-0x04c740,5,
-0x04c760,5,
-0x04c780,5,
-0x04c7a0,5,
-0x04c7c0,5,
-0x04c7e0,5,
-0x04c800,5,
-0x04c820,5,
-0x04c840,5,
-0x04c860,5,
-0x04c880,5,
-0x04c8a0,5,
-0x04c8c0,5,
-0x04c8e0,5,
-0x04c900,5,
-0x04c920,5,
-0x04c940,5,
-0x04c960,5,
-0x04c980,5,
-0x04c9a0,5,
-0x04c9c0,5,
-0x04c9e0,5,
-0x04ca00,5,
-0x04ca20,5,
-0x04ca40,5,
-0x04ca60,5,
-0x04ca80,5,
-0x04caa0,5,
-0x04cac0,5,
-0x04cae0,5,
-0x04cb00,5,
-0x04cb20,5,
-0x04cb40,5,
-0x04cb60,5,
-0x04cb80,5,
-0x04cba0,5,
-0x04cbc0,5,
-0x04cbe0,5,
-0x04cc00,5,
-0x04cc20,5,
-0x04cc40,5,
-0x04cc60,5,
-0x04cc80,5,
-0x04cca0,5,
-0x04ccc0,5,
-0x04cce0,5,
-0x04cd00,5,
-0x04cd20,5,
-0x04cd40,5,
-0x04cd60,5,
-0x04cd80,5,
-0x04cda0,5,
-0x04cdc0,5,
-0x04cde0,5,
-0x04ce00,5,
-0x04ce20,5,
-0x04ce40,5,
-0x04ce60,5,
-0x04ce80,5,
-0x04cea0,5,
-0x04cec0,5,
-0x04cee0,5,
-0x04cf00,5,
-0x04cf20,5,
-0x04cf40,5,
-0x04cf60,5,
-0x04cf80,5,
-0x04cfa0,5,
-0x04cfc0,5,
-0x04cfe0,5,
-0x050004,1,
-0x05000c,5,
-0x05900c,10,
-0x05903c,1,
-0x059080,4,
-0x05a000,1,
-0x05a008,1,
-0x05a010,1,
-0x05a018,1,
-0x05a020,1,
-0x05a028,1,
-0x05a030,1,
-0x05a038,1,
-0x05a040,1,
-0x05a048,1,
-0x05a050,1,
-0x05a058,1,
-0x05a060,1,
-0x05a068,1,
-0x05a070,1,
-0x05a078,1,
-0x05a080,1,
-0x05a088,1,
-0x05a090,1,
-0x05a098,1,
-0x05a0a0,1,
-0x05a0a8,1,
-0x05a0b0,1,
-0x05a0b8,1,
-0x05a0c0,1,
-0x05a0c8,1,
-0x05a0d0,1,
-0x05a0d8,1,
-0x05a0e0,1,
-0x05a0e8,1,
-0x05a0f0,1,
-0x05a0f8,1,
-0x05a100,1,
-0x05a108,1,
-0x05a110,1,
-0x05a118,1,
-0x05a120,1,
-0x05a128,1,
-0x05a130,1,
-0x05a138,1,
-0x05a140,1,
-0x05a148,1,
-0x05a150,1,
-0x05a158,1,
-0x05a160,1,
-0x05a168,1,
-0x05a170,1,
-0x05a178,1,
-0x05a180,1,
-0x05a188,1,
-0x05a190,1,
-0x05a198,1,
-0x05a1a0,1,
-0x05a1a8,1,
-0x05a1b0,1,
-0x05a1b8,1,
-0x05a1c0,1,
-0x05a1c8,1,
-0x05a1d0,1,
-0x05a1d8,1,
-0x05a1e0,1,
-0x05a1e8,1,
-0x05a1f0,1,
-0x05a1f8,1,
-0x05a200,1,
-0x05a208,1,
-0x05a210,1,
-0x05a218,1,
-0x05a220,1,
-0x05a228,1,
-0x05a230,1,
-0x05a238,1,
-0x05a240,1,
-0x05a248,1,
-0x05a250,1,
-0x05a258,1,
-0x05a260,1,
-0x05a268,1,
-0x05a270,1,
-0x05a278,1,
-0x05a280,1,
-0x05a288,1,
-0x05a290,1,
-0x05a298,1,
-0x05a2a0,1,
-0x05a2a8,1,
-0x05a2b0,1,
-0x05a2b8,1,
-0x05a2c0,1,
-0x05a2c8,1,
-0x05a2d0,1,
-0x05a2d8,1,
-0x05a2e0,1,
-0x05a2e8,1,
-0x05a2f0,1,
-0x05a2f8,1,
-0x05a300,1,
-0x05a308,1,
-0x05a310,1,
-0x05a318,1,
-0x05a320,1,
-0x05a328,1,
-0x05a330,1,
-0x05a338,1,
-0x05a340,1,
-0x05a348,1,
-0x05a350,1,
-0x05a358,1,
-0x05a360,1,
-0x05a368,1,
-0x05a370,1,
-0x05a378,1,
-0x05a380,1,
-0x05a388,1,
-0x05a390,1,
-0x05a398,1,
-0x05a3a0,1,
-0x05a3a8,1,
-0x05a3b0,1,
-0x05a3b8,1,
-0x05a3c0,1,
-0x05a3c8,1,
-0x05a3d0,1,
-0x05a3d8,1,
-0x05a3e0,1,
-0x05a3e8,1,
-0x05a3f0,1,
-0x05a3f8,1,
-0x05a400,1,
-0x05a408,1,
-0x05a410,1,
-0x05a418,1,
-0x05a420,1,
-0x05a428,1,
-0x05a430,1,
-0x05a438,1,
-0x05a440,1,
-0x05a448,1,
-0x05a450,1,
-0x05a458,1,
-0x05a460,1,
-0x05a468,1,
-0x05a470,1,
-0x05a478,1,
-0x05a480,1,
-0x05a488,1,
-0x05a490,1,
-0x05a498,1,
-0x05a4a0,1,
-0x05a4a8,1,
-0x05a4b0,1,
-0x05a4b8,1,
-0x05a4c0,1,
-0x05a4c8,1,
-0x05a4d0,1,
-0x05a4d8,1,
-0x05a4e0,1,
-0x05a4e8,1,
-0x05a4f0,1,
-0x05a4f8,1,
-0x05a500,1,
-0x05a508,1,
-0x05a510,1,
-0x05a518,1,
-0x05a520,1,
-0x05a528,1,
-0x05a530,1,
-0x05a538,1,
-0x05a540,1,
-0x05a548,1,
-0x05a550,1,
-0x05a558,1,
-0x05a560,1,
-0x05a568,1,
-0x05a570,1,
-0x05a578,1,
-0x05a580,1,
-0x05a588,1,
-0x05a590,1,
-0x05a598,1,
-0x05a5a0,1,
-0x05a5a8,1,
-0x05a5b0,1,
-0x05a5b8,1,
-0x05a5c0,1,
-0x05a5c8,1,
-0x05a5d0,1,
-0x05a5d8,1,
-0x05a5e0,1,
-0x05a5e8,1,
-0x05a5f0,1,
-0x05a5f8,1,
-0x05a600,1,
-0x05a608,1,
-0x05a610,1,
-0x05a618,1,
-0x05a620,1,
-0x05a628,1,
-0x05a630,1,
-0x05a638,1,
-0x05a640,1,
-0x05a648,1,
-0x05a650,1,
-0x05a658,1,
-0x05a660,1,
-0x05a668,1,
-0x05a670,1,
-0x05a678,1,
-0x05a680,1,
-0x05a688,1,
-0x05a690,1,
-0x05a698,1,
-0x05a6a0,1,
-0x05a6a8,1,
-0x05a6b0,1,
-0x05a6b8,1,
-0x05a6c0,1,
-0x05a6c8,1,
-0x05a6d0,1,
-0x05a6d8,1,
-0x05a6e0,1,
-0x05a6e8,1,
-0x05a6f0,1,
-0x05a6f8,1,
-0x05a700,1,
-0x05a708,1,
-0x05a710,1,
-0x05a718,1,
-0x05a720,1,
-0x05a728,1,
-0x05a730,1,
-0x05a738,1,
-0x05a740,1,
-0x05a748,1,
-0x05a750,1,
-0x05a758,1,
-0x05a760,1,
-0x05a768,1,
-0x05a770,1,
-0x05a778,1,
-0x05a780,1,
-0x05a788,1,
-0x05a790,1,
-0x05a798,1,
-0x05a7a0,1,
-0x05a7a8,1,
-0x05a7b0,1,
-0x05a7b8,1,
-0x05a7c0,1,
-0x05a7c8,1,
-0x05a7d0,1,
-0x05a7d8,1,
-0x05a7e0,1,
-0x05a7e8,1,
-0x05a7f0,1,
-0x05a7f8,1,
-0x05a800,1,
-0x05a808,1,
-0x05a810,1,
-0x05a818,1,
-0x05a820,1,
-0x05a828,1,
-0x05a830,1,
-0x05a838,1,
-0x05a840,1,
-0x05a848,1,
-0x05a850,1,
-0x05a858,1,
-0x05a860,1,
-0x05a868,1,
-0x05a870,1,
-0x05a878,1,
-0x05a880,1,
-0x05a888,1,
-0x05a890,1,
-0x05a898,1,
-0x05a8a0,1,
-0x05a8a8,1,
-0x05a8b0,1,
-0x05a8b8,1,
-0x05a8c0,1,
-0x05a8c8,1,
-0x05a8d0,1,
-0x05a8d8,1,
-0x05a8e0,1,
-0x05a8e8,1,
-0x05a8f0,1,
-0x05a8f8,1,
-0x05a900,1,
-0x05a908,1,
-0x05a910,1,
-0x05a918,1,
-0x05a920,1,
-0x05a928,1,
-0x05a930,1,
-0x05a938,1,
-0x05a940,1,
-0x05a948,1,
-0x05a950,1,
-0x05a958,1,
-0x05a960,1,
-0x05a968,1,
-0x05a970,1,
-0x05a978,1,
-0x05a980,1,
-0x05a988,1,
-0x05a990,1,
-0x05a998,1,
-0x05a9a0,1,
-0x05a9a8,1,
-0x05a9b0,1,
-0x05a9b8,1,
-0x05a9c0,1,
-0x05a9c8,1,
-0x05a9d0,1,
-0x05a9d8,1,
-0x05a9e0,1,
-0x05a9e8,1,
-0x05a9f0,1,
-0x05a9f8,1,
-0x05aa00,1,
-0x05aa08,1,
-0x05aa10,1,
-0x05aa18,1,
-0x05aa20,1,
-0x05aa28,1,
-0x05aa30,1,
-0x05aa38,1,
-0x05aa40,1,
-0x05aa48,1,
-0x05aa50,1,
-0x05aa58,1,
-0x05aa60,1,
-0x05aa68,1,
-0x05aa70,1,
-0x05aa78,1,
-0x05aa80,1,
-0x05aa88,1,
-0x05aa90,1,
-0x05aa98,1,
-0x05aaa0,1,
-0x05aaa8,1,
-0x05aab0,1,
-0x05aab8,1,
-0x05aac0,1,
-0x05aac8,1,
-0x05aad0,1,
-0x05aad8,1,
-0x05aae0,1,
-0x05aae8,1,
-0x05aaf0,1,
-0x05aaf8,1,
-0x05ab00,1,
-0x05ab08,1,
-0x05ab10,1,
-0x05ab18,1,
-0x05ab20,1,
-0x05ab28,1,
-0x05ab30,1,
-0x05ab38,1,
-0x05ab40,1,
-0x05ab48,1,
-0x05ab50,1,
-0x05ab58,1,
-0x05ab60,1,
-0x05ab68,1,
-0x05ab70,1,
-0x05ab78,1,
-0x05ab80,1,
-0x05ab88,1,
-0x05ab90,1,
-0x05ab98,1,
-0x05aba0,1,
-0x05aba8,1,
-0x05abb0,1,
-0x05abb8,1,
-0x05abc0,1,
-0x05abc8,1,
-0x05abd0,1,
-0x05abd8,1,
-0x05abe0,1,
-0x05abe8,1,
-0x05abf0,1,
-0x05abf8,1,
-0x05ac00,1,
-0x05ac08,1,
-0x05ac10,1,
-0x05ac18,1,
-0x05ac20,1,
-0x05ac28,1,
-0x05ac30,1,
-0x05ac38,1,
-0x05ac40,1,
-0x05ac48,1,
-0x05ac50,1,
-0x05ac58,1,
-0x05ac60,1,
-0x05ac68,1,
-0x05ac70,1,
-0x05ac78,1,
-0x05ac80,1,
-0x05ac88,1,
-0x05ac90,1,
-0x05ac98,1,
-0x05aca0,1,
-0x05aca8,1,
-0x05acb0,1,
-0x05acb8,1,
-0x05acc0,1,
-0x05acc8,1,
-0x05acd0,1,
-0x05acd8,1,
-0x05ace0,1,
-0x05ace8,1,
-0x05acf0,1,
-0x05acf8,1,
-0x05ad00,1,
-0x05ad08,1,
-0x05ad10,1,
-0x05ad18,1,
-0x05ad20,1,
-0x05ad28,1,
-0x05ad30,1,
-0x05ad38,1,
-0x05ad40,1,
-0x05ad48,1,
-0x05ad50,1,
-0x05ad58,1,
-0x05ad60,1,
-0x05ad68,1,
-0x05ad70,1,
-0x05ad78,1,
-0x05ad80,1,
-0x05ad88,1,
-0x05ad90,1,
-0x05ad98,1,
-0x05ada0,1,
-0x05ada8,1,
-0x05adb0,1,
-0x05adb8,1,
-0x05adc0,1,
-0x05adc8,1,
-0x05add0,1,
-0x05add8,1,
-0x05ade0,1,
-0x05ade8,1,
-0x05adf0,1,
-0x05adf8,1,
-0x05ae00,1,
-0x05ae08,1,
-0x05ae10,1,
-0x05ae18,1,
-0x05ae20,1,
-0x05ae28,1,
-0x05ae30,1,
-0x05ae38,1,
-0x05ae40,1,
-0x05ae48,1,
-0x05ae50,1,
-0x05ae58,1,
-0x05ae60,1,
-0x05ae68,1,
-0x05ae70,1,
-0x05ae78,1,
-0x05ae80,1,
-0x05ae88,1,
-0x05ae90,1,
-0x05ae98,1,
-0x05aea0,1,
-0x05aea8,1,
-0x05aeb0,1,
-0x05aeb8,1,
-0x05aec0,1,
-0x05aec8,1,
-0x05aed0,1,
-0x05aed8,1,
-0x05aee0,1,
-0x05aee8,1,
-0x05aef0,1,
-0x05aef8,1,
-0x05af00,1,
-0x05af08,1,
-0x05af10,1,
-0x05af18,1,
-0x05af20,1,
-0x05af28,1,
-0x05af30,1,
-0x05af38,1,
-0x05af40,1,
-0x05af48,1,
-0x05af50,1,
-0x05af58,1,
-0x05af60,1,
-0x05af68,1,
-0x05af70,1,
-0x05af78,1,
-0x05af80,1,
-0x05af88,1,
-0x05af90,1,
-0x05af98,1,
-0x05afa0,1,
-0x05afa8,1,
-0x05afb0,1,
-0x05afb8,1,
-0x05afc0,1,
-0x05afc8,1,
-0x05afd0,1,
-0x05afd8,1,
-0x05afe0,1,
-0x05afe8,1,
-0x05aff0,1,
-0x05aff8,1,
-0x05b000,1,
-0x05b008,1,
-0x05b010,1,
-0x05b018,1,
-0x05b020,1,
-0x05b028,1,
-0x05b030,1,
-0x05b038,1,
-0x05b040,1,
-0x05b048,1,
-0x05b050,1,
-0x05b058,1,
-0x05b060,1,
-0x05b068,1,
-0x05b070,1,
-0x05b078,1,
-0x05b080,1,
-0x05b088,1,
-0x05b090,1,
-0x05b098,1,
-0x05b0a0,1,
-0x05b0a8,1,
-0x05b0b0,1,
-0x05b0b8,1,
-0x05b0c0,1,
-0x05b0c8,1,
-0x05b0d0,1,
-0x05b0d8,1,
-0x05b0e0,1,
-0x05b0e8,1,
-0x05b0f0,1,
-0x05b0f8,1,
-0x05b100,1,
-0x05b108,1,
-0x05b110,1,
-0x05b118,1,
-0x05b120,1,
-0x05b128,1,
-0x05b130,1,
-0x05b138,1,
-0x05b140,1,
-0x05b148,1,
-0x05b150,1,
-0x05b158,1,
-0x05b160,1,
-0x05b168,1,
-0x05b170,1,
-0x05b178,1,
-0x05b180,1,
-0x05b188,1,
-0x05b190,1,
-0x05b198,1,
-0x05b1a0,1,
-0x05b1a8,1,
-0x05b1b0,1,
-0x05b1b8,1,
-0x05b1c0,1,
-0x05b1c8,1,
-0x05b1d0,1,
-0x05b1d8,1,
-0x05b1e0,1,
-0x05b1e8,1,
-0x05b1f0,1,
-0x05b1f8,1,
-0x05b200,1,
-0x05b208,1,
-0x05b210,1,
-0x05b218,1,
-0x05b220,1,
-0x05b228,1,
-0x05b230,1,
-0x05b238,1,
-0x05b240,1,
-0x05b248,1,
-0x05b250,1,
-0x05b258,1,
-0x05b260,1,
-0x05b268,1,
-0x05b270,1,
-0x05b278,1,
-0x05b280,1,
-0x05b288,1,
-0x05b290,1,
-0x05b298,1,
-0x05b2a0,1,
-0x05b2a8,1,
-0x05b2b0,1,
-0x05b2b8,1,
-0x05b2c0,1,
-0x05b2c8,1,
-0x05b2d0,1,
-0x05b2d8,1,
-0x05b2e0,1,
-0x05b2e8,1,
-0x05b2f0,1,
-0x05b2f8,1,
-0x05b300,1,
-0x05b308,1,
-0x05b310,1,
-0x05b318,1,
-0x05b320,1,
-0x05b328,1,
-0x05b330,1,
-0x05b338,1,
-0x05b340,1,
-0x05b348,1,
-0x05b350,1,
-0x05b358,1,
-0x05b360,1,
-0x05b368,1,
-0x05b370,1,
-0x05b378,1,
-0x05b380,1,
-0x05b388,1,
-0x05b390,1,
-0x05b398,1,
-0x05b3a0,1,
-0x05b3a8,1,
-0x05b3b0,1,
-0x05b3b8,1,
-0x05b3c0,1,
-0x05b3c8,1,
-0x05b3d0,1,
-0x05b3d8,1,
-0x05b3e0,1,
-0x05b3e8,1,
-0x05b3f0,1,
-0x05b3f8,1,
-0x05b400,1,
-0x05b408,1,
-0x05b410,1,
-0x05b418,1,
-0x05b420,1,
-0x05b428,1,
-0x05b430,1,
-0x05b438,1,
-0x05b440,1,
-0x05b448,1,
-0x05b450,1,
-0x05b458,1,
-0x05b460,1,
-0x05b468,1,
-0x05b470,1,
-0x05b478,1,
-0x05b480,1,
-0x05b488,1,
-0x05b490,1,
-0x05b498,1,
-0x05b4a0,1,
-0x05b4a8,1,
-0x05b4b0,1,
-0x05b4b8,1,
-0x05b4c0,1,
-0x05b4c8,1,
-0x05b4d0,1,
-0x05b4d8,1,
-0x05b4e0,1,
-0x05b4e8,1,
-0x05b4f0,1,
-0x05b4f8,1,
-0x05b500,1,
-0x05b508,1,
-0x05b510,1,
-0x05b518,1,
-0x05b520,1,
-0x05b528,1,
-0x05b530,1,
-0x05b538,1,
-0x05b540,1,
-0x05b548,1,
-0x05b550,1,
-0x05b558,1,
-0x05b560,1,
-0x05b568,1,
-0x05b570,1,
-0x05b578,1,
-0x05b580,1,
-0x05b588,1,
-0x05b590,1,
-0x05b598,1,
-0x05b5a0,1,
-0x05b5a8,1,
-0x05b5b0,1,
-0x05b5b8,1,
-0x05b5c0,1,
-0x05b5c8,1,
-0x05b5d0,1,
-0x05b5d8,1,
-0x05b5e0,1,
-0x05b5e8,1,
-0x05b5f0,1,
-0x05b5f8,1,
-0x05b600,1,
-0x05b608,1,
-0x05b610,1,
-0x05b618,1,
-0x05b620,1,
-0x05b628,1,
-0x05b630,1,
-0x05b638,1,
-0x05b640,1,
-0x05b648,1,
-0x05b650,1,
-0x05b658,1,
-0x05b660,1,
-0x05b668,1,
-0x05b670,1,
-0x05b678,1,
-0x05b680,1,
-0x05b688,1,
-0x05b690,1,
-0x05b698,1,
-0x05b6a0,1,
-0x05b6a8,1,
-0x05b6b0,1,
-0x05b6b8,1,
-0x05b6c0,1,
-0x05b6c8,1,
-0x05b6d0,1,
-0x05b6d8,1,
-0x05b6e0,1,
-0x05b6e8,1,
-0x05b6f0,1,
-0x05b6f8,1,
-0x05b700,1,
-0x05b708,1,
-0x05b710,1,
-0x05b718,1,
-0x05b720,1,
-0x05b728,1,
-0x05b730,1,
-0x05b738,1,
-0x05b740,1,
-0x05b748,1,
-0x05b750,1,
-0x05b758,1,
-0x05b760,1,
-0x05b768,1,
-0x05b770,1,
-0x05b778,1,
-0x05b780,1,
-0x05b788,1,
-0x05b790,1,
-0x05b798,1,
-0x05b7a0,1,
-0x05b7a8,1,
-0x05b7b0,1,
-0x05b7b8,1,
-0x05b7c0,1,
-0x05b7c8,1,
-0x05b7d0,1,
-0x05b7d8,1,
-0x05b7e0,1,
-0x05b7e8,1,
-0x05b7f0,1,
-0x05b7f8,1,
-0x05b800,1,
-0x05b808,1,
-0x05b810,1,
-0x05b818,1,
-0x05b820,1,
-0x05b828,1,
-0x05b830,1,
-0x05b838,1,
-0x05b840,1,
-0x05b848,1,
-0x05b850,1,
-0x05b858,1,
-0x05b860,1,
-0x05b868,1,
-0x05b870,1,
-0x05b878,1,
-0x05b880,1,
-0x05b888,1,
-0x05b890,1,
-0x05b898,1,
-0x05b8a0,1,
-0x05b8a8,1,
-0x05b8b0,1,
-0x05b8b8,1,
-0x05b8c0,1,
-0x05b8c8,1,
-0x05b8d0,1,
-0x05b8d8,1,
-0x05b8e0,1,
-0x05b8e8,1,
-0x05b8f0,1,
-0x05b8f8,1,
-0x05b900,1,
-0x05b908,1,
-0x05b910,1,
-0x05b918,1,
-0x05b920,1,
-0x05b928,1,
-0x05b930,1,
-0x05b938,1,
-0x05b940,1,
-0x05b948,1,
-0x05b950,1,
-0x05b958,1,
-0x05b960,1,
-0x05b968,1,
-0x05b970,1,
-0x05b978,1,
-0x05b980,1,
-0x05b988,1,
-0x05b990,1,
-0x05b998,1,
-0x05b9a0,1,
-0x05b9a8,1,
-0x05b9b0,1,
-0x05b9b8,1,
-0x05b9c0,1,
-0x05b9c8,1,
-0x05b9d0,1,
-0x05b9d8,1,
-0x05b9e0,1,
-0x05b9e8,1,
-0x05b9f0,1,
-0x05b9f8,1,
-0x05ba00,1,
-0x05ba08,1,
-0x05ba10,1,
-0x05ba18,1,
-0x05ba20,1,
-0x05ba28,1,
-0x05ba30,1,
-0x05ba38,1,
-0x05ba40,1,
-0x05ba48,1,
-0x05ba50,1,
-0x05ba58,1,
-0x05ba60,1,
-0x05ba68,1,
-0x05ba70,1,
-0x05ba78,1,
-0x05ba80,1,
-0x05ba88,1,
-0x05ba90,1,
-0x05ba98,1,
-0x05baa0,1,
-0x05baa8,1,
-0x05bab0,1,
-0x05bab8,1,
-0x05bac0,1,
-0x05bac8,1,
-0x05bad0,1,
-0x05bad8,1,
-0x05bae0,1,
-0x05bae8,1,
-0x05baf0,1,
-0x05baf8,1,
-0x05bb00,1,
-0x05bb08,1,
-0x05bb10,1,
-0x05bb18,1,
-0x05bb20,1,
-0x05bb28,1,
-0x05bb30,1,
-0x05bb38,1,
-0x05bb40,1,
-0x05bb48,1,
-0x05bb50,1,
-0x05bb58,1,
-0x05bb60,1,
-0x05bb68,1,
-0x05bb70,1,
-0x05bb78,1,
-0x05bb80,1,
-0x05bb88,1,
-0x05bb90,1,
-0x05bb98,1,
-0x05bba0,1,
-0x05bba8,1,
-0x05bbb0,1,
-0x05bbb8,1,
-0x05bbc0,1,
-0x05bbc8,1,
-0x05bbd0,1,
-0x05bbd8,1,
-0x05bbe0,1,
-0x05bbe8,1,
-0x05bbf0,1,
-0x05bbf8,1,
-0x05bc00,1,
-0x05bc08,1,
-0x05bc10,1,
-0x05bc18,1,
-0x05bc20,1,
-0x05bc28,1,
-0x05bc30,1,
-0x05bc38,1,
-0x05bc40,1,
-0x05bc48,1,
-0x05bc50,1,
-0x05bc58,1,
-0x05bc60,1,
-0x05bc68,1,
-0x05bc70,1,
-0x05bc78,1,
-0x05bc80,1,
-0x05bc88,1,
-0x05bc90,1,
-0x05bc98,1,
-0x05bca0,1,
-0x05bca8,1,
-0x05bcb0,1,
-0x05bcb8,1,
-0x05bcc0,1,
-0x05bcc8,1,
-0x05bcd0,1,
-0x05bcd8,1,
-0x05bce0,1,
-0x05bce8,1,
-0x05bcf0,1,
-0x05bcf8,1,
-0x05bd00,1,
-0x05bd08,1,
-0x05bd10,1,
-0x05bd18,1,
-0x05bd20,1,
-0x05bd28,1,
-0x05bd30,1,
-0x05bd38,1,
-0x05bd40,1,
-0x05bd48,1,
-0x05bd50,1,
-0x05bd58,1,
-0x05bd60,1,
-0x05bd68,1,
-0x05bd70,1,
-0x05bd78,1,
-0x05bd80,1,
-0x05bd88,1,
-0x05bd90,1,
-0x05bd98,1,
-0x05bda0,1,
-0x05bda8,1,
-0x05bdb0,1,
-0x05bdb8,1,
-0x05bdc0,1,
-0x05bdc8,1,
-0x05bdd0,1,
-0x05bdd8,1,
-0x05bde0,1,
-0x05bde8,1,
-0x05bdf0,1,
-0x05bdf8,1,
-0x05be00,1,
-0x05be08,1,
-0x05be10,1,
-0x05be18,1,
-0x05be20,1,
-0x05be28,1,
-0x05be30,1,
-0x05be38,1,
-0x05be40,1,
-0x05be48,1,
-0x05be50,1,
-0x05be58,1,
-0x05be60,1,
-0x05be68,1,
-0x05be70,1,
-0x05be78,1,
-0x05be80,1,
-0x05be88,1,
-0x05be90,1,
-0x05be98,1,
-0x05bea0,1,
-0x05bea8,1,
-0x05beb0,1,
-0x05beb8,1,
-0x05bec0,1,
-0x05bec8,1,
-0x05bed0,1,
-0x05bed8,1,
-0x05bee0,1,
-0x05bee8,1,
-0x05bef0,1,
-0x05bef8,1,
-0x05bf00,1,
-0x05bf08,1,
-0x05bf10,1,
-0x05bf18,1,
-0x05bf20,1,
-0x05bf28,1,
-0x05bf30,1,
-0x05bf38,1,
-0x05bf40,1,
-0x05bf48,1,
-0x05bf50,1,
-0x05bf58,1,
-0x05bf60,1,
-0x05bf68,1,
-0x05bf70,1,
-0x05bf78,1,
-0x05bf80,1,
-0x05bf88,1,
-0x05bf90,1,
-0x05bf98,1,
-0x05bfa0,1,
-0x05bfa8,1,
-0x05bfb0,1,
-0x05bfb8,1,
-0x05bfc0,1,
-0x05bfc8,1,
-0x05bfd0,1,
-0x05bfd8,1,
-0x05bfe0,1,
-0x05bfe8,1,
-0x05bff0,1,
-0x05bff8,1,
-0x05c000,1024,
-0x060400,5,
-0x060500,6,
-0x060520,6,
-0x060600,6,
-0x060700,7,
-0x060800,64,
-0x060940,1,
-0x060a04,7,
-0x060c00,4,
-0x060d00,2,
-0x060e00,4,
-0x060f40,16,
-0x060f88,2,
-0x061000,34,
-0x061100,34,
-0x061200,34,
-0x061300,34,
-0x061400,34,
-0x061500,34,
-0x061600,34,
-0x061700,34,
-0x061800,34,
-0x061900,34,
-0x061a00,34,
-0x061b00,34,
-0x061c00,34,
-0x061d00,34,
-0x061e00,34,
-0x061f00,34,
-0x062100,2,
-0x063000,3072,
-0x066100,3,
-0x068000,4,
-0x068014,7,
-0x068038,4,
-0x068054,2,
-0x0680a0,1,
-0x0680b0,2,
-0x0680c0,1,
-0x0680d0,2,
-0x068800,7,
-0x068820,4,
-0x068868,6,
-0x068980,33,
-0x068a20,1,
-0x068a30,2,
-0x068a80,2,
-0x069000,4128,
-0x06e000,2049,
-0x07000c,6,
-0x070028,3,
-0x070040,12,
-0x07007c,13,
-0x0700bc,6,
-0x0700d8,5,
-0x0700f0,20,
-0x070144,1,
-0x070180,5,
-0x0701fc,1,
-0x070210,12,
-0x070244,7,
-0x070290,12,
-0x0702c4,1,
-0x0702d0,4,
-0x070300,69,
-0x070418,2,
-0x070424,1,
-0x07042c,1,
-0x070434,3,
-0x070448,1,
-0x070450,1,
-0x071000,33,
-0x071100,33,
-0x071200,33,
-0x071300,33,
-0x071400,33,
-0x071500,33,
-0x071600,33,
-0x071700,33,
-0x071800,33,
-0x071900,33,
-0x071a00,33,
-0x071b00,33,
-0x072000,67,
-0x072200,67,
-0x072400,67,
-0x072600,67,
-0x072800,67,
-0x072a00,67,
-0x072c00,67,
-0x073000,33,
-0x073100,33,
-0x073200,33,
-0x073300,33,
-0x073400,33,
-0x073500,33,
-0x073600,33,
-0x073700,33,
-0x073800,33,
-0x073900,33,
-0x073a00,33,
-0x073b00,33,
-0x074000,1536,
-0x076000,12,
-0x077000,384,
-0x077800,256,
-0x078000,17,
-0x078080,17,
-0x078100,17,
-0x078180,17,
-0x078210,5,
-0x078240,1,
-0x078250,1,
-0x078260,1,
-0x078270,1,
-0x078284,2,
-0x0782d4,59,
-0x078400,2,
-0x078420,1,
-0x078600,96,
-0x078a60,5,
-0x078a84,16,
-0x078b00,32,
-0x078b84,6,
-0x078c20,10,
-0x078c50,2,
-0x078c5c,7,
-0x078c80,4,
-0x078ca0,1,
-0x078cc0,9,
-0x078e60,1,
-0x078e80,10,
-0x078ec0,2,
-0x078ecc,1,
-0x078ee0,6,
-0x078f00,7,
-0x078f20,7,
-0x078f44,2,
-0x078f50,2,
-0x078f60,3,
-0x078f70,1,
-0x078f78,3,
-0x078fb4,6,
-0x078fd0,1,
-0x079000,1,
-0x079008,1,
-0x079010,1,
-0x079018,1,
-0x079020,1,
-0x079028,1,
-0x079030,1,
-0x079038,1,
-0x079040,1,
-0x079048,1,
-0x079050,1,
-0x079058,1,
-0x079060,1,
-0x079068,1,
-0x079070,1,
-0x079078,1,
-0x079080,1,
-0x079088,1,
-0x079090,1,
-0x079098,1,
-0x0790a0,1,
-0x0790a8,1,
-0x0790b0,1,
-0x0790b8,1,
-0x0790c0,1,
-0x0790c8,1,
-0x0790d0,1,
-0x0790d8,1,
-0x0790e0,1,
-0x0790e8,1,
-0x0790f0,1,
-0x0790f8,1,
-0x079100,1,
-0x079108,1,
-0x079110,1,
-0x079118,1,
-0x079120,1,
-0x079128,1,
-0x079130,1,
-0x079138,1,
-0x079140,1,
-0x079148,1,
-0x079150,1,
-0x079158,1,
-0x079160,1,
-0x079168,1,
-0x079170,1,
-0x079178,1,
-0x079180,1,
-0x079188,1,
-0x079190,1,
-0x079198,1,
-0x0791a0,1,
-0x0791a8,1,
-0x0791b0,1,
-0x0791b8,1,
-0x0791c0,1,
-0x0791c8,1,
-0x0791d0,1,
-0x0791d8,1,
-0x0791e0,1,
-0x0791e8,1,
-0x0791f0,1,
-0x0791f8,1,
-0x079200,1,
-0x079208,1,
-0x079210,1,
-0x079218,1,
-0x079220,1,
-0x079228,1,
-0x079230,1,
-0x079238,1,
-0x079240,1,
-0x079248,1,
-0x079250,1,
-0x079258,1,
-0x079260,1,
-0x079268,1,
-0x079270,1,
-0x079278,1,
-0x079280,1,
-0x079288,1,
-0x079290,1,
-0x079298,1,
-0x0792a0,1,
-0x0792a8,1,
-0x0792b0,1,
-0x0792b8,1,
-0x0792c0,1,
-0x0792c8,1,
-0x0792d0,1,
-0x0792d8,1,
-0x0792e0,1,
-0x0792e8,1,
-0x0792f0,1,
-0x0792f8,1,
-0x079300,1,
-0x079308,1,
-0x079310,1,
-0x079318,1,
-0x079320,1,
-0x079328,1,
-0x079330,1,
-0x079338,1,
-0x079340,1,
-0x079348,1,
-0x079350,1,
-0x079358,1,
-0x079360,1,
-0x079368,1,
-0x079370,1,
-0x079378,1,
-0x079380,1,
-0x079388,1,
-0x079390,1,
-0x079398,1,
-0x0793a0,1,
-0x0793a8,1,
-0x0793b0,1,
-0x0793b8,1,
-0x0793c0,1,
-0x0793c8,1,
-0x0793d0,1,
-0x0793d8,1,
-0x0793e0,1,
-0x0793e8,1,
-0x0793f0,1,
-0x0793f8,1,
-0x079400,1,
-0x079408,1,
-0x079410,1,
-0x079418,1,
-0x079420,1,
-0x079428,1,
-0x079430,1,
-0x079438,1,
-0x079440,1,
-0x079448,1,
-0x079450,1,
-0x079458,1,
-0x079460,1,
-0x079468,1,
-0x079470,1,
-0x079478,1,
-0x079480,1,
-0x079488,1,
-0x079490,1,
-0x079498,1,
-0x0794a0,1,
-0x0794a8,1,
-0x0794b0,1,
-0x0794b8,1,
-0x0794c0,1,
-0x0794c8,1,
-0x0794d0,1,
-0x0794d8,1,
-0x0794e0,1,
-0x0794e8,1,
-0x0794f0,1,
-0x0794f8,1,
-0x079500,1,
-0x079508,1,
-0x079510,1,
-0x079518,1,
-0x079520,1,
-0x079528,1,
-0x079530,1,
-0x079538,1,
-0x079540,1,
-0x079548,1,
-0x079550,1,
-0x079558,1,
-0x079560,1,
-0x079568,1,
-0x079570,1,
-0x079578,1,
-0x079580,1,
-0x079588,1,
-0x079590,1,
-0x079598,1,
-0x0795a0,1,
-0x0795a8,1,
-0x0795b0,1,
-0x0795b8,1,
-0x0795c0,1,
-0x0795c8,1,
-0x0795d0,1,
-0x0795d8,1,
-0x0795e0,1,
-0x0795e8,1,
-0x0795f0,1,
-0x0795f8,1,
-0x079600,1,
-0x079608,1,
-0x079610,1,
-0x079618,1,
-0x079620,1,
-0x079628,1,
-0x079630,1,
-0x079638,1,
-0x079640,1,
-0x079648,1,
-0x079650,1,
-0x079658,1,
-0x079660,1,
-0x079668,1,
-0x079670,1,
-0x079678,1,
-0x079680,1,
-0x079688,1,
-0x079690,1,
-0x079698,1,
-0x0796a0,1,
-0x0796a8,1,
-0x0796b0,1,
-0x0796b8,1,
-0x0796c0,1,
-0x0796c8,1,
-0x0796d0,1,
-0x0796d8,1,
-0x0796e0,1,
-0x0796e8,1,
-0x0796f0,1,
-0x0796f8,1,
-0x079700,1,
-0x079708,1,
-0x079710,1,
-0x079718,1,
-0x079720,1,
-0x079728,1,
-0x079730,1,
-0x079738,1,
-0x079740,1,
-0x079748,1,
-0x079750,1,
-0x079758,1,
-0x079760,1,
-0x079768,1,
-0x079770,1,
-0x079778,1,
-0x079780,1,
-0x079788,1,
-0x079790,1,
-0x079798,1,
-0x0797a0,1,
-0x0797a8,1,
-0x0797b0,1,
-0x0797b8,1,
-0x0797c0,1,
-0x0797c8,1,
-0x0797d0,1,
-0x0797d8,1,
-0x0797e0,1,
-0x0797e8,1,
-0x0797f0,1,
-0x0797f8,1,
-0x079800,1,
-0x079808,1,
-0x079810,1,
-0x079818,1,
-0x079820,1,
-0x079828,1,
-0x079830,1,
-0x079838,1,
-0x079840,1,
-0x079848,1,
-0x079850,1,
-0x079858,1,
-0x079860,1,
-0x079868,1,
-0x079870,1,
-0x079878,1,
-0x079880,1,
-0x079888,1,
-0x079890,1,
-0x079898,1,
-0x0798a0,1,
-0x0798a8,1,
-0x0798b0,1,
-0x0798b8,1,
-0x0798c0,1,
-0x0798c8,1,
-0x0798d0,1,
-0x0798d8,1,
-0x0798e0,1,
-0x0798e8,1,
-0x0798f0,1,
-0x0798f8,1,
-0x079900,1,
-0x079908,1,
-0x079910,1,
-0x079918,1,
-0x079920,1,
-0x079928,1,
-0x079930,1,
-0x079938,1,
-0x079940,1,
-0x079948,1,
-0x079950,1,
-0x079958,1,
-0x079960,1,
-0x079968,1,
-0x079970,1,
-0x079978,1,
-0x079980,1,
-0x079988,1,
-0x079990,1,
-0x079998,1,
-0x0799a0,1,
-0x0799a8,1,
-0x0799b0,1,
-0x0799b8,1,
-0x0799c0,1,
-0x0799c8,1,
-0x0799d0,1,
-0x0799d8,1,
-0x0799e0,1,
-0x0799e8,1,
-0x0799f0,1,
-0x0799f8,1,
-0x079a00,1,
-0x079a08,1,
-0x079a10,1,
-0x079a18,1,
-0x079a20,1,
-0x079a28,1,
-0x079a30,1,
-0x079a38,1,
-0x079a40,1,
-0x079a48,1,
-0x079a50,1,
-0x079a58,1,
-0x079a60,1,
-0x079a68,1,
-0x079a70,1,
-0x079a78,1,
-0x079a80,1,
-0x079a88,1,
-0x079a90,1,
-0x079a98,1,
-0x079aa0,1,
-0x079aa8,1,
-0x079ab0,1,
-0x079ab8,1,
-0x079ac0,1,
-0x079ac8,1,
-0x079ad0,1,
-0x079ad8,1,
-0x079ae0,1,
-0x079ae8,1,
-0x079af0,1,
-0x079af8,1,
-0x079b00,1,
-0x079b08,1,
-0x079b10,1,
-0x079b18,1,
-0x079b20,1,
-0x079b28,1,
-0x079b30,1,
-0x079b38,1,
-0x079b40,1,
-0x079b48,1,
-0x079b50,1,
-0x079b58,1,
-0x079b60,1,
-0x079b68,1,
-0x079b70,1,
-0x079b78,1,
-0x079b80,1,
-0x079b88,1,
-0x079b90,1,
-0x079b98,1,
-0x079ba0,1,
-0x079ba8,1,
-0x079bb0,1,
-0x079bb8,1,
-0x079bc0,1,
-0x079bc8,1,
-0x079bd0,1,
-0x079bd8,1,
-0x079be0,1,
-0x079be8,1,
-0x079bf0,1,
-0x079bf8,1,
-0x079c00,1,
-0x079c08,1,
-0x079c10,1,
-0x079c18,1,
-0x079c20,1,
-0x079c28,1,
-0x079c30,1,
-0x079c38,1,
-0x079c40,1,
-0x079c48,1,
-0x079c50,1,
-0x079c58,1,
-0x079c60,1,
-0x079c68,1,
-0x079c70,1,
-0x079c78,1,
-0x079c80,1,
-0x079c88,1,
-0x079c90,1,
-0x079c98,1,
-0x079ca0,1,
-0x079ca8,1,
-0x079cb0,1,
-0x079cb8,1,
-0x079cc0,1,
-0x079cc8,1,
-0x079cd0,1,
-0x079cd8,1,
-0x079ce0,1,
-0x079ce8,1,
-0x079cf0,1,
-0x079cf8,1,
-0x079d00,1,
-0x079d08,1,
-0x079d10,1,
-0x079d18,1,
-0x079d20,1,
-0x079d28,1,
-0x079d30,1,
-0x079d38,1,
-0x079d40,1,
-0x079d48,1,
-0x079d50,1,
-0x079d58,1,
-0x079d60,1,
-0x079d68,1,
-0x079d70,1,
-0x079d78,1,
-0x079d80,1,
-0x079d88,1,
-0x079d90,1,
-0x079d98,1,
-0x079da0,1,
-0x079da8,1,
-0x079db0,1,
-0x079db8,1,
-0x079dc0,1,
-0x079dc8,1,
-0x079dd0,1,
-0x079dd8,1,
-0x079de0,1,
-0x079de8,1,
-0x079df0,1,
-0x079df8,1,
-0x079e00,1,
-0x079e08,1,
-0x079e10,1,
-0x079e18,1,
-0x079e20,1,
-0x079e28,1,
-0x079e30,1,
-0x079e38,1,
-0x079e40,1,
-0x079e48,1,
-0x079e50,1,
-0x079e58,1,
-0x079e60,1,
-0x079e68,1,
-0x079e70,1,
-0x079e78,1,
-0x079e80,1,
-0x079e88,1,
-0x079e90,1,
-0x079e98,1,
-0x079ea0,1,
-0x079ea8,1,
-0x079eb0,1,
-0x079eb8,1,
-0x079ec0,1,
-0x079ec8,1,
-0x079ed0,1,
-0x079ed8,1,
-0x079ee0,1,
-0x079ee8,1,
-0x079ef0,1,
-0x079ef8,1,
-0x079f00,1,
-0x079f08,1,
-0x079f10,1,
-0x079f18,1,
-0x079f20,1,
-0x079f28,1,
-0x079f30,1,
-0x079f38,1,
-0x079f40,1,
-0x079f48,1,
-0x079f50,1,
-0x079f58,1,
-0x079f60,1,
-0x079f68,1,
-0x079f70,1,
-0x079f78,1,
-0x079f80,1,
-0x079f88,1,
-0x079f90,1,
-0x079f98,1,
-0x079fa0,1,
-0x079fa8,1,
-0x079fb0,1,
-0x079fb8,1,
-0x079fc0,1,
-0x079fc8,1,
-0x079fd0,1,
-0x079fd8,1,
-0x079fe0,1,
-0x079fe8,1,
-0x079ff0,1,
-0x079ff8,1,
-0x07bef8,2,
-0x07bf04,1,
-0x07bf14,22,
-0x07bf80,2,
-0x07bffc,1033,
-0x07e000,1044,
-0x07f100,8,
-0x07f160,4,
-0x07f200,3,
-0x07f300,20,
-0x07f400,4,
-0x07f7f8,514,
-0x080680,7,
-0x081000,3,
-0x081010,21,
-0x081104,2,
-0x081120,1,
-0x081130,2,
-0x081140,1,
-0x081150,2,
-0x081160,1,
-0x081170,2,
-0x081204,21,
-0x081304,2,
-0x08139c,25,
-0x081404,23,
-0x081468,6,
-0x081504,2,
-0x081604,14,
-0x081640,2,
-0x08164c,15,
-0x08168c,15,
-0x0816cc,15,
-0x08170c,15,
-0x08174c,15,
-0x08178c,15,
-0x0817cc,15,
-0x08180c,13,
-0x081904,5,
-0x081a30,4,
-0x081a60,18,
-0x081ab0,3,
-0x081ad0,4,
-0x081c00,128,
-0x081e04,12,
-0x082000,8,
-0x082024,1,
-0x082030,1,
-0x082044,20,
-0x08209c,2,
-0x0820ac,14,
-0x082180,1,
-0x0821c4,1,
-0x0821e0,1,
-0x0821e8,3,
-0x0821f8,1,
-0x082200,10,
-0x08229c,3,
-0x0822e0,7,
-0x082328,2,
-0x082430,20,
-0x082484,3,
-0x082498,2,
-0x082500,16,
-0x082548,2,
-0x082558,2,
-0x082564,2,
-0x082590,11,
-0x0825c4,15,
-0x0827fc,14,
-0x082838,66,
-0x082c00,13,
-0x082c38,66,
-0x083000,13,
-0x083038,66,
-0x083800,4,
-0x083814,7,
-0x083838,4,
-0x083854,2,
-0x0838a0,1,
-0x0838b0,2,
-0x0838c0,1,
-0x0838d0,2,
-0x083910,5,
-0x083928,4,
-0x083948,6,
-0x0f0000,3,
-0x0f0014,8,
-0x0f0040,6,
-0x0f0068,2,
-0x0f0078,3,
-0x0f0090,2,
-0x0f00a4,2,
-0x0f00b0,1,
-0x0f00b8,38,
-0x0f0180,17,
-0x0f01e0,4,
-0x0f01f4,1,
-0x0f0200,4,
-0x0f0220,1,
-0x0f0250,5,
-0x0f0270,2,
-0x0f0280,3,
-0x0f02a4,5,
-0x0f02c0,3,
-0x0f02d8,5,
-0x0f02f0,4,
-0x0f0400,2,
-0x0f0410,4,
-0x0f0440,1,
-0x0f0450,2,
-0x0f0460,4,
-0x0f0510,34,
-0x0f0600,64,
-0x0f0714,9,
-0x0f1000,9,
-0x0f107c,1,
-0x0f2000,2,
-0x0f2010,3,
-0x0f2020,2,
-0x0f2030,3,
-0x0f2040,2,
-0x0f2050,3,
-0x0f2060,2,
-0x0f2070,3,
-0x0f2080,2,
-0x0f2090,3,
-0x0f20a0,2,
-0x0f20b0,3,
-0x0f20c0,2,
-0x0f20d0,3,
-0x0f20e0,2,
-0x0f20f0,3,
-0x0f2100,3,
-0x0f2110,25,
-0x0f2178,3,
-0x0f2190,2,
-0x0f21a0,1,
-0x0f21b0,2,
-0x0f21c0,2,
-0x0f2200,3,
-0x0f2210,15,
-0x0f2250,16,
-0x0f229c,1,
-0x0f22b0,9,
-0x0f22e0,1,
-0x0f22f0,3,
-0x0f2300,12,
-0x0f2334,4,
-0x0f2358,1,
-0x0f2380,1,
-0x0f2394,2,
-0x0f23ac,12,
-0x0f23ec,4,
-0x0f2400,3,
-0x0f2410,15,
-0x0f2450,16,
-0x0f249c,1,
-0x0f24b0,9,
-0x0f24e0,1,
-0x0f24f0,3,
-0x0f2500,12,
-0x0f2534,4,
-0x0f2558,1,
-0x0f2580,1,
-0x0f2594,2,
-0x0f25ac,12,
-0x0f25ec,4,
-0x0f2600,12,
-0x0f264c,8,
-0x0f2670,2,
-0x0f267c,17,
-0x0f2700,9,
-0x0f2728,1,
-0x0f2804,2,
-0x0f2844,2,
-0x0f2868,2,
-0x0f2874,1,
-0x0f2884,2,
-0x0f28a8,2,
-0x0f28b4,1,
-0x0f28c4,2,
-0x0f28e8,2,
-0x0f28f4,1,
-0x0f2904,2,
-0x0f2928,2,
-0x0f2934,1,
-0x0f2a40,12,
-0x0f2a80,5,
-0x0f2aa0,12,
-0x0f2b10,3,
-0x0f2b20,7,
-0x0f2b40,4,
-0x0f2b80,1,
-0x0f2c1c,9,
-0x0f2c5c,9,
-0x0f2c9c,9,
-0x0f2cc4,1,
-0x0f2ccc,1,
-0x0f2cd4,1,
-0x0f2e00,1,
-0x0f2e08,7,
-0x0f2e28,7,
-0x0f2e48,7,
-0x0f2e68,7,
-0x0f2e88,7,
-0x0f2ea8,7,
-0x0f2ec8,7,
-0x0f2ee8,7,
-0x0f2f08,7,
-0x0f2f28,7,
-0x0f2f48,7,
-0x0f2f68,7,
-0x0f2f88,7,
-0x0f2fa8,7,
-0x0f2fc8,7,
-0x0f2fe8,50,
-0x0f30c0,13,
-0x0f30fc,2,
-0x0f310c,1,
-0x0f3120,2,
-0x0f3130,5,
-0x0f3184,11,
-0x0f31c4,3,
-0x0f31e0,1,
-0x0f31f0,2,
-0x0f3204,1,
-0x0f3210,5,
-0x0f3240,1,
-0x0f3248,12,
-0x0f3280,8,
-0x0f32a4,3,
-0x0f32cc,1,
-0x0f32d4,1,
-0x0f32e0,11,
-0x0f3400,11,
-0x0f3430,3,
-0x0f3444,2,
-0x0f3554,10,
-0x0f35c0,2,
-0x0f35dc,7,
-0x0f3600,16,
-0x0f3644,1,
-0x0f365c,11,
-0x0f36a0,1,
-0x0f36b0,2,
-0x0f36c0,1,
-0x0f36d0,2,
-0x0f36e0,1,
-0x0f36f0,2,
-0x0f3700,5,
-0x0f371c,4,
-0x0f3740,4,
-0x0f3760,1,
-0x0f3770,2,
-0x0f3780,1,
-0x0f3790,2,
-0x0f37a0,1,
-0x0f37b0,2,
-0x0f37c0,1,
-0x0f37d0,2,
-0x0f37e0,1,
-0x0f37f0,2,
-0x0f3800,3,
-0x0f3810,18,
-0x0f3878,6,
-0x0f3894,3,
-0x0f38c0,7,
-0x0f38e0,6,
-0x0f3900,8,
-0x0f3924,6,
-0x0f3940,17,
-0x0f3998,1,
-0x0f39a0,9,
-0x0f3a00,1,
-0x0f3a10,2,
-0x0f3a20,1,
-0x0f3a30,2,
-0x0f3a40,1,
-0x0f3a50,2,
-0x0f3a60,1,
-0x0f3a70,2,
-0x0f3a80,1,
-0x0f3a90,2,
-0x0f3aa0,1,
-0x0f3ab0,2,
-0x0f3ac0,1,
-0x0f3ad0,2,
-0x0f3ae0,1,
-0x0f3af0,2,
-0x0f3b00,1,
-0x0f3b10,2,
-0x0f3b20,1,
-0x0f3b30,2,
-0x0f3b40,1,
-0x0f3b50,2,
-0x0f3b60,1,
-0x0f3b70,2,
-0x0f3b80,1,
-0x0f3b90,2,
-0x0f3ba0,3,
-0x0f3c00,12,
-0x0f3c34,6,
-0x0f3c60,1,
-0x0f3c70,2,
-0x0f3c84,3,
-0x0f3d00,1,
-0x0f3d08,1,
-0x0f3d14,1,
-0x0f3d1c,3,
-0x0f3d38,1,
-0x0f3d40,1,
-0x0f3d54,2,
-0x0f3da0,1,
-0x0f3db0,2,
-0x0f3e00,76,
-0x0f3f40,5,
-0x0f3f60,4,
diff --git a/mstdump/mstdump_dbs/ConnectX4.csv b/mstdump/mstdump_dbs/ConnectX4.csv
deleted file mode 100644 (file)
index 87d9904..0000000
+++ /dev/null
@@ -1,3578 +0,0 @@
-#Addr, Size, Enable addr
-0x000000,16388,
-0x010084,1,
-0x01008c,2,
-0x010180,6,
-0x01019c,9,
-0x010304,1,
-0x0103bc,52,
-0x010500,35,
-0x010604,1,
-0x01060c,1,
-0x010624,1,
-0x01062c,1,
-0x010644,1,
-0x01064c,3,
-0x010800,1,
-0x010814,3,
-0x010844,1,
-0x01084c,4,
-0x011000,32,
-0x011200,32,
-0x011400,32,
-0x011600,32,
-0x011800,32,
-0x011a00,5,
-0x011a24,1,
-0x011a2c,1,
-0x011a34,3,
-0x011a44,1,
-0x011a4c,2,
-0x012000,20,
-0x012088,22,
-0x012100,18,
-0x012200,36,
-0x012300,3,
-0x012310,1,
-0x012320,1,
-0x012330,1,
-0x012340,1,
-0x012350,1,
-0x012360,1,
-0x012370,1,
-0x012400,166,
-0x0126a0,1,
-0x012700,32,
-0x012800,1,
-0x012808,1,
-0x012810,1,
-0x012818,1,
-0x012820,1,
-0x012828,1,
-0x012830,1,
-0x012838,1,
-0x012850,1,
-0x012858,1,
-0x012860,1,
-0x012868,1,
-0x012870,1,
-0x012878,1,
-0x012880,1,
-0x012888,1,
-0x012890,5,
-0x012900,10,
-0x012940,6,
-0x012960,6,
-0x012980,5,
-0x012a00,6,
-0x012a40,5,
-0x012a80,9,
-0x012ac0,19,
-0x012b10,2,
-0x014000,1,
-0x014010,10,
-0x014104,1,
-0x01410c,4,
-0x014200,1,
-0x014210,4,
-0x014300,4,
-0x014400,3,
-0x014410,1,
-0x014444,1,
-0x01444c,4,
-0x014480,2,
-0x014500,35,
-0x014590,1,
-0x014600,32,
-0x014704,1,
-0x01470c,1,
-0x014804,2,
-0x014814,3,
-0x014824,2,
-0x014834,3,
-0x014844,2,
-0x014854,5,
-0x014a00,4,
-0x014a14,2,
-0x015004,1,
-0x01500c,4,
-0x015204,1,
-0x015214,4,
-0x015228,1,
-0x015244,1,
-0x015250,4,
-0x015274,1,
-0x01527c,1,
-0x0152a4,1,
-0x015300,4,
-0x015314,1,
-0x01531c,3,
-0x015404,2,
-0x015430,20,
-0x015484,2,
-0x015498,5,
-0x0154bc,1,
-0x0154c8,1,
-0x0154d4,2,
-0x01550c,3,
-0x015524,3,
-0x015608,3,
-0x015618,4,
-0x015680,16,
-0x015704,2,
-0x015730,20,
-0x015784,3,
-0x015794,3,
-0x0157c0,6,
-0x015800,52,
-0x0158d4,1,
-0x0158dc,1,
-0x0158e4,3,
-0x0158f4,1,
-0x0158fc,52,
-0x015b04,2,
-0x015b14,3,
-0x015b24,2,
-0x015b38,6,
-0x015b60,5,
-0x015c04,1,
-0x015cb8,18,
-0x015d98,1,
-0x015e00,1,
-0x015e08,1,
-0x015e10,1,
-0x016000,32,
-0x016100,7,
-0x016120,2,
-0x016144,3,
-0x016204,1,
-0x01620c,1,
-0x016224,1,
-0x01622c,1,
-0x016234,1,
-0x01623c,1,
-0x016244,1,
-0x01624c,1,
-0x016254,1,
-0x01625c,2,
-0x016270,1,
-0x016280,1,
-0x016290,1,
-0x0162a0,1,
-0x0162b0,1,
-0x0162c0,1,
-0x0162d0,1,
-0x0162e0,1,
-0x0162f0,1,
-0x016300,1,
-0x016310,1,
-0x016320,1,
-0x016330,1,
-0x016340,32,
-0x016400,19,
-0x016454,7,
-0x016484,1,
-0x01648c,1,
-0x016800,9,
-0x016840,16,
-0x017800,1,
-0x017828,1,
-0x017850,1,
-0x017878,1,
-0x0178a0,12,
-0x0179ac,1,
-0x0179d8,4,
-0x017a00,6,
-0x017a20,6,
-0x017a40,3,
-0x017c00,6,
-0x017c20,6,
-0x017c40,6,
-0x017c60,6,
-0x017c80,6,
-0x017ca0,6,
-0x017cc0,6,
-0x017ce0,6,
-0x017d00,3,
-0x017d10,5,
-0x018400,11,
-0x018430,2,
-0x018440,4,
-0x018604,1,
-0x018618,2,
-0x018640,4,
-0x018660,2,
-0x018800,1,
-0x018810,4,
-0x018844,1,
-0x01884c,4,
-0x018880,2,
-0x01a400,12,
-0x01a444,1,
-0x01a44c,1,
-0x01a800,1,
-0x01a814,3,
-0x01a844,1,
-0x01a84c,4,
-0x01c400,7,
-0x01c500,8,
-0x01c544,1,
-0x01c554,3,
-0x01c564,3,
-0x01c574,3,
-0x01c604,1,
-0x01c60c,3,
-0x01c800,1,
-0x01c814,3,
-0x01c844,1,
-0x01c84c,4,
-0x01f000,1,
-0x01f400,1,
-0x01f408,4,
-0x01f41c,3,
-0x01f500,2,
-0x01f800,1,
-0x01f814,3,
-0x01f844,1,
-0x01f84c,4,
-0x01f880,3,
-0x020004,1,
-0x02000c,4,
-0x020080,9,
-0x020800,16,
-0x020900,192,
-0x021004,1,
-0x02100c,4,
-0x021400,5,
-0x021418,5,
-0x021480,1,
-0x021704,2,
-0x02173c,17,
-0x021804,1,
-0x02180c,4,
-0x021840,2,
-0x022280,12,
-0x022408,6,
-0x022444,1,
-0x022454,3,
-0x022504,1,
-0x02250c,4,
-0x022624,1,
-0x02262c,3,
-0x02263c,1,
-0x022804,1,
-0x02280c,4,
-0x022904,4,
-0x022924,4,
-0x024000,36,
-0x0240c0,21,
-0x024120,11,
-0x024200,5,
-0x024220,1,
-0x024230,8,
-0x024258,1,
-0x024260,1,
-0x024270,9,
-0x0242a0,1,
-0x0242b0,4,
-0x0242c8,2,
-0x024300,5,
-0x024318,2,
-0x02439c,25,
-0x024424,4,
-0x024464,13,
-0x0244a4,1,
-0x0244ac,3,
-0x0244c0,2,
-0x0244d0,3,
-0x0244e0,3,
-0x0244f0,3,
-0x024500,3,
-0x024510,3,
-0x024520,3,
-0x024530,3,
-0x024884,11,
-0x0248b4,3,
-0x0248c4,1,
-0x0248cc,1,
-0x0248d4,1,
-0x0248dc,1,
-0x0248f0,2,
-0x024908,6,
-0x024928,6,
-0x024968,6,
-0x024984,3,
-0x024994,1,
-0x02499c,6,
-0x0249b8,7,
-0x024a08,6,
-0x024a28,6,
-0x024a68,6,
-0x024a84,1,
-0x024a8c,1,
-0x024a94,1,
-0x024a9c,13,
-0x024ae0,6,
-0x024b00,7,
-0x024b20,6,
-0x024b40,8,
-0x024c00,2,
-0x024c24,3,
-0x024c34,3,
-0x025004,6,
-0x025800,37,
-0x025904,1,
-0x02590c,1,
-0x026000,99,
-0x026200,1,
-0x026800,7,
-0x026824,6,
-0x026840,2,
-0x026864,1,
-0x02686c,1,
-0x026874,3,
-0x026884,1,
-0x0268a4,7,
-0x026904,1,
-0x02690c,4,
-0x026940,1,
-0x026980,33,
-0x026a0c,7,
-0x026a30,1,
-0x026a44,4,
-0x026a60,1,
-0x026a70,1,
-0x026b00,9,
-0x026b44,2,
-0x026b68,6,
-0x026b84,2,
-0x026ba8,14,
-0x026c00,16,
-0x026c44,1,
-0x026c4c,1,
-0x026c84,1,
-0x026c8c,4,
-0x026cc4,1,
-0x026ccc,4,
-0x026d00,2,
-0x028800,2,
-0x028844,1,
-0x02884c,4,
-0x029004,7,
-0x029b30,2,
-0x029b50,4,
-0x02a004,1,
-0x02a00c,4,
-0x02a040,6,
-0x02a200,1,
-0x02a210,11,
-0x02a240,8,
-0x02a484,1,
-0x02a4c0,16,
-0x02a780,1,
-0x02a7a0,4,
-0x02a7c0,1,
-0x02a900,1,
-0x02aa04,1,
-0x02aa0c,4,
-0x02ab00,40,
-0x02aba4,1,
-0x02abac,1,
-0x02abb4,1,
-0x02abbc,1,
-0x02abc4,1,
-0x02abcc,1,
-0x02abe0,4,
-0x02abf4,2,
-0x02ac00,2,
-0x02ac10,3,
-0x02ac44,3,
-0x02ad00,1,
-0x02ad08,1,
-0x02ad10,1,
-0x02ad18,1,
-0x02ad20,1,
-0x02ad28,1,
-0x02ad30,1,
-0x02ad38,1,
-0x02ad40,1,
-0x02ad48,1,
-0x02ad50,1,
-0x02ad58,1,
-0x02ad60,1,
-0x02ad68,1,
-0x02ad70,1,
-0x02ad78,1,
-0x02ad80,1,
-0x02ad88,1,
-0x02ad90,1,
-0x02ad98,1,
-0x02ada0,1,
-0x02ada8,1,
-0x02adb0,1,
-0x02adb8,1,
-0x02adc0,1,
-0x02adc8,1,
-0x02add0,1,
-0x02add8,1,
-0x02ade0,1,
-0x02ade8,1,
-0x02adf0,1,
-0x02adf8,1,
-0x02ae00,6,
-0x02ae20,5,
-0x02ae40,4,
-0x02c000,6,
-0x02c100,5,
-0x02c204,1,
-0x02c214,3,
-0x02c224,1,
-0x02c22c,4,
-0x02c244,2,
-0x02c250,5,
-0x02c400,2,
-0x02c428,2,
-0x02c450,2,
-0x02c478,2,
-0x02c4a0,24,
-0x02c5ac,1,
-0x02c5d8,4,
-0x02c600,6,
-0x02c620,6,
-0x02c640,6,
-0x02c660,6,
-0x02c680,3,
-0x02c800,3,
-0x02c820,6,
-0x02c840,6,
-0x02c860,6,
-0x02c880,6,
-0x02c8a0,6,
-0x02c8c0,6,
-0x02c8e0,6,
-0x02c900,6,
-0x02c920,6,
-0x02c940,6,
-0x02c960,6,
-0x02c980,6,
-0x02c9a0,6,
-0x02c9c0,6,
-0x02c9e0,6,
-0x02ca00,6,
-0x02ca20,6,
-0x02ca40,6,
-0x02ca60,6,
-0x02ca80,6,
-0x02caa0,6,
-0x02cac0,6,
-0x02cae0,6,
-0x02cb00,6,
-0x02cb20,6,
-0x02cc48,4,
-0x02cd00,9,
-0x02cd40,17,
-0x030004,2,
-0x030034,19,
-0x030084,2,
-0x0300bc,17,
-0x030104,2,
-0x030138,27,
-0x030300,7,
-0x030340,2,
-0x03034c,2,
-0x030384,1,
-0x0303c0,16,
-0x030404,1,
-0x03040c,4,
-0x030804,1,
-0x03080c,4,
-0x030c04,1,
-0x030c0c,4,
-0x030c40,4,
-0x031000,11,
-0x031100,11,
-0x031200,17,
-0x031280,6,
-0x031304,1,
-0x03130c,5,
-0x031400,6,
-0x031420,1,
-0x031444,2,
-0x031454,3,
-0x031464,2,
-0x031474,11,
-0x031500,7,
-0x031520,6,
-0x031540,8,
-0x031600,13,
-0x031640,6,
-0x031700,2,
-0x034200,24,
-0x034280,10,
-0x0342ac,2,
-0x0342c0,6,
-0x0342f0,39,
-0x034600,24,
-0x034680,10,
-0x0346ac,2,
-0x0346c0,6,
-0x0346f0,39,
-0x034c00,6,
-0x034c20,4,
-0x034c40,9,
-0x034c80,9,
-0x034e04,2,
-0x034e14,3,
-0x034e44,1,
-0x034e4c,4,
-0x034e80,6,
-0x034f04,1,
-0x034f18,11,
-0x034f80,2,
-0x035000,2,
-0x035010,3,
-0x035044,3,
-0x035100,66,
-0x035210,3,
-0x035244,3,
-0x035300,64,
-0x035404,1,
-0x03540c,8,
-0x037000,6,
-0x03702c,7,
-0x037080,10,
-0x0370ac,4,
-0x037100,4,
-0x037200,2,
-0x037210,3,
-0x037244,3,
-0x037300,70,
-0x03742c,7,
-0x037480,10,
-0x0374ac,4,
-0x037500,4,
-0x037600,2,
-0x037610,3,
-0x037644,3,
-0x037700,69,
-0x037818,4,
-0x038000,3,
-0x038104,3,
-0x03813c,2,
-0x038150,3,
-0x038400,2,
-0x038428,2,
-0x038450,2,
-0x038478,2,
-0x0384a0,22,
-0x0385ac,1,
-0x0385d8,4,
-0x038600,6,
-0x038620,6,
-0x038640,6,
-0x038660,6,
-0x038680,3,
-0x038800,3,
-0x038820,6,
-0x038840,6,
-0x038860,6,
-0x038880,6,
-0x0388a0,6,
-0x0388c0,6,
-0x038900,28,
-0x038978,1,
-0x038a40,25,
-0x038ac0,16,
-0x039000,35,
-0x039090,3,
-0x039100,35,
-0x039190,3,
-0x039200,35,
-0x039290,3,
-0x039300,35,
-0x039390,3,
-0x039400,35,
-0x039490,3,
-0x039500,1,
-0x039800,3,
-0x039884,1,
-0x0398c0,16,
-0x039904,2,
-0x039934,20,
-0x039a04,2,
-0x039a10,4,
-0x039a24,2,
-0x039a30,4,
-0x039a44,2,
-0x039a50,4,
-0x039a64,2,
-0x039a70,8,
-0x039c00,7,
-0x039c20,6,
-0x039c40,8,
-0x039d00,11,
-0x039d40,11,
-0x039d84,1,
-0x039dc0,26,
-0x039e30,2,
-0x039e44,3,
-0x039e54,1,
-0x039e5c,2,
-0x039e80,2,
-0x039e90,3,
-0x039ea4,1,
-0x039eac,3,
-0x039ec0,3,
-0x039f00,9,
-0x039f40,22,
-0x039fa0,6,
-0x039fc0,8,
-0x03c000,3,
-0x03c010,3,
-0x03c020,3,
-0x03c040,9,
-0x03c068,6,
-0x03c090,2,
-0x03c0a0,3,
-0x03c0c0,12,
-0x03c0f4,1,
-0x03c100,2,
-0x03c110,3,
-0x03c120,1,
-0x03c130,11,
-0x03c160,2,
-0x03c180,4,
-0x03c194,3,
-0x03c1a4,2,
-0x03c1b0,4,
-0x03c2e0,5,
-0x03c2f8,2,
-0x03c30c,13,
-0x03c34c,77,
-0x03c48c,18,
-0x03c500,32,
-0x03c800,16,
-0x03c84c,18,
-0x03c8e0,2,
-0x03c8ec,3,
-0x03c900,1,
-0x03c910,5,
-0x03c930,5,
-0x03c950,5,
-0x03c970,5,
-0x03c9a4,3,
-0x03ca78,34,
-0x03cb3c,18,
-0x03cb94,3,
-0x03cba4,3,
-0x03cbf0,1,
-0x03cbf8,10,
-0x03cc30,1,
-0x03cc44,4,
-0x03cc60,1,
-0x03cc80,1,
-0x03cc90,1,
-0x03d004,6,
-0x03e004,1,
-0x03e00c,4,
-0x03e404,1,
-0x03e40c,4,
-0x03e604,1,
-0x03e60c,4,
-0x03e800,1,
-0x03f034,19,
-0x03f084,2,
-0x03f0c0,16,
-0x03f200,1,
-0x03f210,1,
-0x03f300,6,
-0x03f320,6,
-0x03f380,9,
-0x03f3c0,16,
-0x050000,1,
-0x050008,2,
-0x050044,8,
-0x050104,1,
-0x050178,34,
-0x050204,1,
-0x05020c,1,
-0x050214,1,
-0x050224,1,
-0x05022c,1,
-0x050234,1,
-0x05023c,1,
-0x050244,1,
-0x05024c,1,
-0x050254,1,
-0x050264,3,
-0x050280,2,
-0x0502b0,2,
-0x0502c4,1,
-0x0502cc,1,
-0x0502d4,1,
-0x0502dc,1,
-0x0502e4,1,
-0x0502ec,1,
-0x0502f4,1,
-0x0502fc,1,
-0x050304,1,
-0x05030c,1,
-0x050314,3,
-0x050324,3,
-0x050334,6,
-0x050380,32,
-0x050404,1,
-0x050438,18,
-0x050500,2,
-0x050544,1,
-0x05054c,4,
-0x050584,2,
-0x050598,2,
-0x0505a4,1,
-0x0505b0,4,
-0x0505c4,1,
-0x0505cc,1,
-0x0505d4,1,
-0x0505e0,1,
-0x0505f0,17,
-0x050700,2,
-0x050800,1,
-0x050820,9,
-0x050850,5,
-0x050870,5,
-0x0508c4,3,
-0x0508d4,3,
-0x0508e4,3,
-0x0508f4,4,
-0x050910,5,
-0x050930,4,
-0x050944,1,
-0x05094c,57,
-0x050a40,1,
-0x050a50,28,
-0x050ac4,1,
-0x050acc,2,
-0x050ad8,10,
-0x050b04,1,
-0x050b0c,1,
-0x050b14,1,
-0x050b20,9,
-0x050b50,4,
-0x050b64,1,
-0x050b70,6,
-0x050b8c,4,
-0x050ba4,4,
-0x050bc0,1,
-0x050bd0,1,
-0x050be0,1,
-0x050bf0,1,
-0x050c00,1,
-0x050c14,1,
-0x050c1c,1,
-0x050c24,1,
-0x050c2c,1,
-0x050c34,1,
-0x050c3c,1,
-0x050c44,1,
-0x050c4c,1,
-0x050c54,4,
-0x050c70,1,
-0x050c80,1,
-0x050c90,1,
-0x050ca0,1,
-0x050cb0,1,
-0x050cc0,1,
-0x050cd0,1,
-0x050ce0,1,
-0x050cf0,1,
-0x050d00,1,
-0x050d10,1,
-0x050d20,1,
-0x050d30,1,
-0x050d40,1,
-0x050d50,1,
-0x050d60,1,
-0x050d70,1,
-0x050d80,1,
-0x050d90,1,
-0x050da0,1,
-0x052000,192,
-0x052800,2,
-0x053000,51,
-0x053400,3,
-0x053420,6,
-0x053440,6,
-0x053460,6,
-0x053480,6,
-0x0534a0,6,
-0x0534c0,6,
-0x0534e0,6,
-0x053500,6,
-0x053520,6,
-0x053540,6,
-0x053560,6,
-0x053600,32,
-0x0536c0,16,
-0x053704,1,
-0x053740,18,
-0x0537a0,10,
-0x0537e0,29,
-0x053860,10,
-0x054204,1,
-0x05420c,1,
-0x054214,1,
-0x054224,1,
-0x05422c,1,
-0x054234,1,
-0x054244,1,
-0x05424c,3,
-0x054304,1,
-0x054340,16,
-0x0543a0,1,
-0x0543b0,1,
-0x0543c0,1,
-0x0543d0,4,
-0x054400,8,
-0x054820,3,
-0x054928,9,
-0x054954,4,
-0x054970,1,
-0x054980,1,
-0x054990,3,
-0x0549c4,13,
-0x054a04,1,
-0x054a0c,4,
-0x054a40,1,
-0x054a50,5,
-0x054a70,1,
-0x054a80,1,
-0x054a90,2,
-0x054c04,1,
-0x054c0c,4,
-0x054c40,1,
-0x054c50,4,
-0x054d40,1,
-0x054d80,7,
-0x054e04,1,
-0x054e0c,4,
-0x054e40,1,
-0x054e50,4,
-0x054f40,1,
-0x054f80,7,
-0x055000,11,
-0x055050,7,
-0x055070,16,
-0x0550b8,8,
-0x055200,13,
-0x055240,11,
-0x055300,16,
-0x055400,3,
-0x055420,6,
-0x055440,6,
-0x055460,6,
-0x055480,6,
-0x0554a0,6,
-0x0554c0,6,
-0x0554e0,6,
-0x055500,6,
-0x055520,6,
-0x055540,6,
-0x055560,6,
-0x055580,6,
-0x0555a0,6,
-0x0555c0,6,
-0x0555e0,6,
-0x055600,6,
-0x055620,6,
-0x055640,6,
-0x055660,6,
-0x056000,2,
-0x056044,1,
-0x05604c,4,
-0x056800,2,
-0x056844,1,
-0x05684c,4,
-0x057004,7,
-0x057b20,2,
-0x057b30,2,
-0x057b50,5,
-0x058004,1,
-0x05800c,4,
-0x058800,7,
-0x058820,6,
-0x058844,2,
-0x058864,9,
-0x058890,1,
-0x0588a0,1,
-0x0588b0,1,
-0x0588c0,1,
-0x0588d0,1,
-0x058904,3,
-0x058978,66,
-0x058a84,1,
-0x058a8c,1,
-0x058a94,1,
-0x058aa0,2,
-0x058ff0,4,
-0x059004,1,
-0x05900c,4,
-0x059080,39,
-0x059120,1,
-0x059130,1,
-0x059140,1,
-0x059150,1,
-0x059160,1,
-0x059800,1,
-0x059810,1,
-0x059820,1,
-0x059830,1,
-0x059840,1,
-0x059850,1,
-0x059860,1,
-0x059870,1,
-0x059880,1,
-0x059890,1,
-0x0598a0,1,
-0x0598d4,2,
-0x0598e0,1,
-0x059900,3,
-0x059980,9,
-0x0599c0,32,
-0x059a44,3,
-0x059a54,1,
-0x059a5c,1,
-0x059c00,2,
-0x059c28,2,
-0x059c50,2,
-0x059c78,2,
-0x059ca0,20,
-0x059dac,1,
-0x059dd8,4,
-0x059e00,6,
-0x059e20,6,
-0x059e40,6,
-0x059e60,6,
-0x059e80,3,
-0x05a000,4,
-0x05a020,2,
-0x05a030,1,
-0x05a04c,2,
-0x05a070,4,
-0x05a088,3,
-0x05a0a0,1,
-0x05a0b0,1,
-0x05a0c0,1,
-0x060020,4,
-0x060120,4,
-0x060144,2,
-0x060154,7,
-0x060174,1,
-0x06017c,3,
-0x06018c,1,
-0x0601a0,4,
-0x0601b8,2,
-0x0601c4,2,
-0x0601e4,7,
-0x060204,1,
-0x06020c,4,
-0x060240,16,
-0x060304,1,
-0x06030c,1,
-0x060400,2,
-0x060420,3,
-0x060430,1,
-0x060440,1,
-0x060484,2,
-0x0604b8,18,
-0x060504,1,
-0x06050c,1,
-0x060514,1,
-0x060900,1,
-0x060914,1,
-0x06091c,2,
-0x060930,1,
-0x060a00,32,
-0x060a84,1,
-0x060a8c,1,
-0x060a94,1,
-0x060a9c,1,
-0x060bf0,3,
-0x060c00,11,
-0x060c30,3,
-0x061004,1,
-0x061010,1,
-0x061018,4,
-0x061044,2,
-0x061054,3,
-0x061100,32,
-0x061200,1,
-0x061404,1,
-0x06140c,4,
-0x061440,2,
-0x061468,2,
-0x061478,2,
-0x06180c,8,
-0x061908,6,
-0x061928,6,
-0x061968,6,
-0x061988,6,
-0x0619a8,6,
-0x0619e8,14,
-0x062008,5,
-0x062024,3,
-0x062034,1,
-0x06203c,1,
-0x062044,1,
-0x06204c,1,
-0x062054,1,
-0x06205c,3,
-0x06206c,1,
-0x062080,2,
-0x062094,1,
-0x06209c,2,
-0x0620b0,1,
-0x0620c0,1,
-0x0620d0,1,
-0x0620e0,1,
-0x0620f4,4,
-0x0621c0,2,
-0x0621e4,3,
-0x0621f4,3,
-0x062404,1,
-0x06240c,4,
-0x062800,12,
-0x062834,1,
-0x06283c,5,
-0x062854,1,
-0x062900,3,
-0x062914,1,
-0x06291c,1,
-0x062924,1,
-0x06292c,1,
-0x062934,1,
-0x06293c,2,
-0x062950,3,
-0x062960,2,
-0x063000,1,
-0x063010,4,
-0x063024,1,
-0x06302c,1,
-0x063034,1,
-0x063044,1,
-0x06304c,1,
-0x063054,1,
-0x06305c,2,
-0x063070,1,
-0x063080,1,
-0x063090,1,
-0x0630a4,3,
-0x063100,2,
-0x063144,1,
-0x06314c,1,
-0x063154,1,
-0x063164,1,
-0x06316c,1,
-0x063174,1,
-0x063180,16,
-0x063208,1,
-0x063210,1,
-0x063218,1,
-0x063224,3,
-0x063240,10,
-0x063300,8,
-0x064004,1,
-0x06400c,4,
-0x064200,3,
-0x064300,1,
-0x064308,6,
-0x064324,2,
-0x064338,2,
-0x064380,2,
-0x064394,1,
-0x06439c,2,
-0x064400,2,
-0x064420,3,
-0x064430,1,
-0x064440,1,
-0x064484,2,
-0x0644b8,18,
-0x064504,1,
-0x06450c,1,
-0x064514,1,
-0x064804,1,
-0x064884,2,
-0x0648c8,14,
-0x065018,2,
-0x065080,9,
-0x0650c0,16,
-0x065104,3,
-0x065114,1,
-0x065200,3,
-0x065220,6,
-0x065240,6,
-0x065260,6,
-0x065280,6,
-0x065300,1,
-0x065f00,2,
-0x066000,2,
-0x066028,2,
-0x066050,2,
-0x066078,2,
-0x0660a0,24,
-0x0661ac,1,
-0x0661d8,4,
-0x066200,6,
-0x066220,6,
-0x066240,6,
-0x066260,6,
-0x066280,3,
-0x066400,6,
-0x066500,17,
-0x066550,8,
-0x066574,3,
-0x070004,1,
-0x07000c,4,
-0x070400,7,
-0x070420,11,
-0x070500,5,
-0x070524,1,
-0x07052c,1,
-0x070534,1,
-0x070540,4,
-0x070600,142,
-0x070884,2,
-0x0708b4,19,
-0x070904,1,
-0x070940,16,
-0x071000,1,
-0x071094,1,
-0x071104,2,
-0x071140,16,
-0x071204,1,
-0x07120c,4,
-0x071404,1,
-0x07140c,1,
-0x071414,1,
-0x07141c,1,
-0x071424,1,
-0x07142c,1,
-0x071434,1,
-0x07143c,1,
-0x071800,2,
-0x071904,1,
-0x071940,16,
-0x071a04,1,
-0x071a40,16,
-0x071b04,1,
-0x071b40,16,
-0x072000,3,
-0x072804,1,
-0x07280c,4,
-0x072880,1,
-0x072888,3,
-0x073000,1,
-0x073020,1,
-0x073040,1,
-0x073060,1,
-0x073080,1,
-0x0730a0,1,
-0x0730c0,1,
-0x0730e0,1,
-0x073100,1,
-0x073120,1,
-0x073140,1,
-0x073160,1,
-0x073180,1,
-0x0731a0,1,
-0x0731c0,1,
-0x0731e0,1,
-0x073200,1,
-0x073220,1,
-0x073240,1,
-0x073260,1,
-0x073280,1,
-0x0732a0,1,
-0x0732c0,1,
-0x0732e0,1,
-0x073300,1,
-0x073320,1,
-0x073340,1,
-0x073360,1,
-0x073380,1,
-0x0733a0,1,
-0x0733c0,1,
-0x0733e0,1,
-0x073800,16,
-0x074830,4,
-0x074884,1,
-0x074890,4,
-0x074900,3,
-0x074920,6,
-0x074940,6,
-0x074980,9,
-0x0749c0,16,
-0x074c00,1,
-0x074c28,1,
-0x074c50,1,
-0x074c78,1,
-0x074ca0,12,
-0x074dac,1,
-0x074dd8,4,
-0x074e00,6,
-0x074e20,6,
-0x074e40,3,
-0x075000,3,
-0x075010,2,
-0x075020,3,
-0x075100,2,
-0x078000,20,
-0x078054,9,
-0x07807c,3,
-0x07808c,7,
-0x078100,5,
-0x078118,4,
-0x078130,2,
-0x078204,2,
-0x078244,15,
-0x078284,2,
-0x0782c4,17,
-0x07830c,4,
-0x078320,2,
-0x078340,2,
-0x078360,2,
-0x078380,2,
-0x0783a0,2,
-0x0783d4,1,
-0x0783dc,1,
-0x078404,1,
-0x07840c,4,
-0x078804,18,
-0x078850,4,
-0x078884,1,
-0x07889c,1,
-0x0788a4,23,
-0x079000,9,
-0x079040,16,
-0x079804,2,
-0x079828,6,
-0x079844,2,
-0x079868,6,
-0x079884,2,
-0x0798a8,7,
-0x0798d0,7,
-0x079904,1,
-0x07990c,1,
-0x079914,1,
-0x079a04,2,
-0x079a40,16,
-0x079a84,2,
-0x079a90,2,
-0x079a9c,13,
-0x079b04,2,
-0x079b3c,17,
-0x079c04,2,
-0x079c40,16,
-0x079c84,2,
-0x079c98,2,
-0x079cc4,13,
-0x079cfc,7,
-0x079d24,1,
-0x079d2c,1,
-0x079d80,2,
-0x079d8c,1,
-0x079f00,6,
-0x079f20,6,
-0x079f40,6,
-0x079f60,6,
-0x079fa0,3,
-0x079fb0,1,
-0x07a000,3,
-0x07a010,3,
-0x07a020,3,
-0x07a040,9,
-0x07a068,6,
-0x07a090,2,
-0x07a0a0,3,
-0x07a0c0,12,
-0x07a0f4,1,
-0x07a100,2,
-0x07a110,3,
-0x07a120,1,
-0x07a130,11,
-0x07a160,2,
-0x07a180,4,
-0x07a194,3,
-0x07a1a4,2,
-0x07a1b0,4,
-0x07a2e0,5,
-0x07a2f8,2,
-0x07a30c,13,
-0x07a34c,77,
-0x07a48c,18,
-0x07a500,32,
-0x07a800,16,
-0x07a84c,18,
-0x07a8e0,2,
-0x07a8ec,3,
-0x07a900,1,
-0x07a910,5,
-0x07a930,5,
-0x07a950,5,
-0x07a970,5,
-0x07a9a4,3,
-0x07aa78,34,
-0x07ab3c,18,
-0x07ab94,3,
-0x07aba4,3,
-0x07abf0,1,
-0x07abf8,10,
-0x07ac30,1,
-0x07ac44,4,
-0x07ac60,1,
-0x07ac80,1,
-0x07ac90,1,
-0x07b004,6,
-0x080000,29,
-0x080340,14,
-0x08037c,3,
-0x08038c,1,
-0x0803c0,2,
-0x0803e4,3,
-0x0803f4,3,
-0x080404,6,
-0x080804,2,
-0x080874,35,
-0x081000,129,
-0x081210,4,
-0x081228,3,
-0x081240,2,
-0x081264,2,
-0x081274,3,
-0x081284,2,
-0x081298,2,
-0x0812a4,1,
-0x0812b4,21,
-0x081310,8,
-0x081344,1,
-0x08134c,1,
-0x081354,1,
-0x081364,2,
-0x081370,4,
-0x081384,2,
-0x081390,4,
-0x081404,2,
-0x081478,34,
-0x081504,2,
-0x081518,14,
-0x081580,5,
-0x081598,2,
-0x0815a4,10,
-0x082000,29,
-0x082340,14,
-0x08237c,3,
-0x08238c,1,
-0x0823c0,2,
-0x0823e4,3,
-0x0823f4,3,
-0x082404,1,
-0x08240c,4,
-0x082804,2,
-0x082874,35,
-0x082904,2,
-0x082974,35,
-0x083000,129,
-0x083210,6,
-0x083244,2,
-0x083254,7,
-0x083284,1,
-0x08328c,1,
-0x083294,1,
-0x0832a4,1,
-0x0832b4,19,
-0x083304,2,
-0x083310,4,
-0x083324,2,
-0x083330,14,
-0x084000,29,
-0x084340,14,
-0x08437c,3,
-0x08438c,1,
-0x0843c0,2,
-0x0843e4,3,
-0x0843f4,3,
-0x084404,1,
-0x08440c,4,
-0x084804,2,
-0x084874,35,
-0x084904,2,
-0x084974,35,
-0x085000,32,
-0x085200,1,
-0x085210,7,
-0x085240,12,
-0x085280,2,
-0x0852a4,1,
-0x0852b4,3,
-0x085304,1,
-0x08530c,1,
-0x085314,1,
-0x085324,2,
-0x085334,3,
-0x085344,2,
-0x085358,2,
-0x085364,2,
-0x085378,2,
-0x085384,2,
-0x085398,2,
-0x0853c0,23,
-0x086000,2,
-0x086020,2,
-0x086040,1,
-0x086400,11,
-0x086800,3,
-0x086820,6,
-0x086840,6,
-0x086860,6,
-0x086880,6,
-0x0868a0,6,
-0x0868c0,6,
-0x0868e0,6,
-0x086900,9,
-0x086940,16,
-0x087000,26,
-0x087100,1,
-0x087108,1,
-0x087110,1,
-0x087118,1,
-0x087120,1,
-0x087128,1,
-0x087130,1,
-0x087138,1,
-0x087140,1,
-0x087148,1,
-0x087150,1,
-0x087158,1,
-0x087160,1,
-0x087168,1,
-0x087170,1,
-0x087178,1,
-0x087180,10,
-0x0871b0,9,
-0x087200,1,
-0x087208,1,
-0x087210,3,
-0x090000,17,
-0x090060,2,
-0x09006c,1,
-0x090104,1,
-0x090140,25,
-0x0901a8,2,
-0x0901c0,9,
-0x0901e8,2,
-0x090204,1,
-0x090220,24,
-0x090300,6,
-0x090320,9,
-0x090348,1,
-0x090350,1,
-0x090400,6,
-0x090420,9,
-0x090448,1,
-0x090450,1,
-0x090500,6,
-0x090520,6,
-0x090540,2,
-0x090564,2,
-0x090578,3,
-0x091004,3,
-0x091800,8,
-0x091824,2,
-0x091830,10,
-0x091860,6,
-0x092000,32,
-0x093000,1,
-0x093020,1,
-0x093040,1,
-0x093060,1,
-0x093080,1,
-0x0930a0,1,
-0x0930c0,1,
-0x0930e0,1,
-0x093100,1,
-0x0931a0,1,
-0x0931c0,1,
-0x093200,3,
-0x093404,1,
-0x093440,16,
-0x093504,1,
-0x09353c,28,
-0x0935b0,2,
-0x0935c0,3,
-0x094000,9,
-0x094040,19,
-0x0940c0,1,
-0x094800,1,
-0x094828,1,
-0x094850,1,
-0x094878,1,
-0x0948a0,8,
-0x0949ac,1,
-0x0949d8,4,
-0x094a00,6,
-0x094a20,6,
-0x094a40,3,
-0x096000,1,
-0x096010,4,
-0x096028,3,
-0x096104,1,
-0x09610c,7,
-0x096204,1,
-0x09620c,4,
-0x096488,1,
-0x096498,3,
-0x0964b0,4,
-0x096504,1,
-0x09650c,4,
-0x096584,4,
-0x096600,16,
-0x096644,2,
-0x096658,10,
-0x096684,2,
-0x0966bc,51,
-0x096800,11,
-0x096884,3,
-0x0968a0,12,
-0x097100,6,
-0x097120,1,
-0x0a0000,10,
-0x0a0030,4,
-0x0a0080,6,
-0x0a00a0,8,
-0x0a0400,7,
-0x0a0420,2,
-0x0a0464,3,
-0x0a0480,6,
-0x0a04a0,6,
-0x0a0500,30,
-0x0a0580,2,
-0x0a0800,14,
-0x0a0840,6,
-0x0a0860,18,
-0x0a1004,1,
-0x0a100c,4,
-0x0a1044,2,
-0x0a1058,2,
-0x0a1064,2,
-0x0a1074,6,
-0x0a1090,9,
-0x0a1204,1,
-0x0a120c,4,
-0x0a1244,2,
-0x0a1254,6,
-0x0a1270,6,
-0x0a1300,1,
-0x0a1404,1,
-0x0a1440,16,
-0x0a1484,1,
-0x0a148c,4,
-0x0a14c4,1,
-0x0a14d0,12,
-0x0a1504,1,
-0x0a1510,12,
-0x0a1544,1,
-0x0a1550,12,
-0x0a1584,1,
-0x0a1590,12,
-0x0a15c4,1,
-0x0a15cc,5,
-0x0a15e4,1,
-0x0a15ec,5,
-0x0a1604,1,
-0x0a160c,5,
-0x0a1624,1,
-0x0a162c,5,
-0x0a1644,1,
-0x0a164c,5,
-0x0a1664,1,
-0x0a166c,5,
-0x0a1684,1,
-0x0a168c,5,
-0x0a16a4,1,
-0x0a16ac,5,
-0x0a16c4,7,
-0x0a16e4,1,
-0x0a16ec,1,
-0x0a16f4,1,
-0x0a16fc,1,
-0x0a1704,17,
-0x0a1754,1,
-0x0a175c,1,
-0x0a1764,2,
-0x0a1774,3,
-0x0a1800,18,
-0x0a1900,3,
-0x0a1948,3,
-0x0a1958,6,
-0x0a1974,8,
-0x0a2004,1,
-0x0a200c,4,
-0x0a2400,2,
-0x0a240c,6,
-0x0a2440,1,
-0x0a2450,4,
-0x0a2468,3,
-0x0a2480,1,
-0x0a24a0,10,
-0x0a24d0,9,
-0x0a2804,1,
-0x0a280c,4,
-0x0a2c00,2,
-0x0a2c0c,2,
-0x0a2c40,1,
-0x0a2c50,4,
-0x0a2c68,3,
-0x0a2c88,2,
-0x0a2cf0,1,
-0x0a3004,1,
-0x0a300c,4,
-0x0a3040,2,
-0x0a3064,3,
-0x0a3074,4,
-0x0a3200,9,
-0x0a3230,2,
-0x0a323c,2,
-0x0a3248,4,
-0x0a3400,1,
-0x0a3408,3,
-0x0a3418,4,
-0x0a3430,2,
-0x0a343c,1,
-0x0a3480,1,
-0x0a3490,1,
-0x0a3504,1,
-0x0a3510,76,
-0x0a4000,48,
-0x0a4100,3,
-0x0a4110,6,
-0x0a412c,4,
-0x0a4140,1,
-0x0a4304,1,
-0x0a4318,10,
-0x0a4804,1,
-0x0a480c,4,
-0x0a4840,2,
-0x0a4864,3,
-0x0a4874,3,
-0x0a4c04,2,
-0x0a4c10,2,
-0x0a4c1c,6,
-0x0a4c38,2,
-0x0a4c50,8,
-0x0a4c78,19,
-0x0a4d04,2,
-0x0a4d40,21,
-0x0a4da4,1,
-0x0a4dac,1,
-0x0a4db4,1,
-0x0a4dc0,1,
-0x0a5000,14,
-0x0a6000,2,
-0x0a6028,2,
-0x0a6050,2,
-0x0a6078,2,
-0x0a60a0,35,
-0x0a61ac,1,
-0x0a61d8,4,
-0x0a6200,6,
-0x0a6220,6,
-0x0a6240,6,
-0x0a6260,6,
-0x0a6280,3,
-0x0a6400,3,
-0x0a6420,6,
-0x0a6440,6,
-0x0a6460,6,
-0x0a6480,6,
-0x0a64a0,6,
-0x0a64c0,6,
-0x0a6500,9,
-0x0a6540,18,
-0x0a65c0,4,
-0x0a8000,10,
-0x0a802c,15,
-0x0a806c,5,
-0x0a8408,5,
-0x0a8424,3,
-0x0a8434,6,
-0x0a8450,2,
-0x0a845c,5,
-0x0a84c4,1,
-0x0a84cc,4,
-0x0a8604,1,
-0x0a860c,4,
-0x0a8700,17,
-0x0a8750,4,
-0x0a8800,4,
-0x0a8880,1,
-0x0a88a0,1,
-0x0a88c0,1,
-0x0a8900,1,
-0x0a8960,1,
-0x0a8980,4,
-0x0a8994,1,
-0x0a899c,1,
-0x0a89a4,3,
-0x0a89c0,1,
-0x0a8a00,4,
-0x0a8aa4,1,
-0x0a8aac,1,
-0x0a8ab4,1,
-0x0a8ad4,10,
-0x0a8b00,2,
-0x0a8b80,4,
-0x0a8c04,6,
-0x0a9000,3,
-0x0a9010,21,
-0x0a9080,4,
-0x0a9100,10,
-0x0a91f4,3,
-0x0a920c,35,
-0x0a92a4,7,
-0x0a930c,39,
-0x0a940c,35,
-0x0a949c,9,
-0x0a9500,2,
-0x0a950c,3,
-0x0a951c,3,
-0x0a954c,13,
-0x0a9804,1,
-0x0a980c,4,
-0x0a9c00,2,
-0x0a9c0c,3,
-0x0a9c1c,2,
-0x0a9c28,1,
-0x0a9c44,1,
-0x0a9c60,17,
-0x0a9d00,1,
-0x0a9d20,8,
-0x0a9d48,3,
-0x0a9d80,1,
-0x0a9dc4,3,
-0x0a9dd4,3,
-0x0a9de4,3,
-0x0a9df4,4,
-0x0a9e20,8,
-0x0a9e48,3,
-0x0a9e84,1,
-0x0a9e98,1,
-0x0a9ea0,8,
-0x0a9f00,6,
-0x0a9f20,6,
-0x0a9f40,6,
-0x0a9f60,6,
-0x0a9f80,9,
-0x0a9fc0,31,
-0x0aa204,1,
-0x0aa20c,4,
-0x0b0000,2,
-0x0b0010,4,
-0x0b1000,15,
-0x0b1040,10,
-0x0b1080,20,
-0x0b1100,2,
-0x0b1110,2,
-0x0b1120,2,
-0x0b1160,2,
-0x0b116c,1,
-0x0b1180,3,
-0x0b1190,3,
-0x0b11a0,3,
-0x0b11e0,2,
-0x0b11ec,1,
-0x0b1200,2,
-0x0b1210,2,
-0x0b1260,2,
-0x0b126c,1,
-0x0b1280,3,
-0x0b1290,3,
-0x0b12e0,2,
-0x0b12ec,1,
-0x0b1300,2,
-0x0b1310,2,
-0x0b1320,2,
-0x0b1360,2,
-0x0b136c,1,
-0x0b1380,3,
-0x0b1390,3,
-0x0b13e0,2,
-0x0b13ec,1,
-0x0b1400,3,
-0x0b1410,3,
-0x0b1460,2,
-0x0b146c,1,
-0x0b1480,3,
-0x0b1490,7,
-0x0b14b0,4,
-0x0b14e0,2,
-0x0b14ec,1,
-0x0b1500,3,
-0x0b1510,3,
-0x0b1560,2,
-0x0b156c,1,
-0x0b1580,2,
-0x0b1590,2,
-0x0b15e0,2,
-0x0b15ec,1,
-0x0b1600,3,
-0x0b1610,3,
-0x0b1660,2,
-0x0b166c,1,
-0x0b1680,3,
-0x0b1690,3,
-0x0b16e0,2,
-0x0b16ec,1,
-0x0b1700,8,
-0x0b1760,2,
-0x0b176c,1,
-0x0b1780,3,
-0x0b1790,3,
-0x0b17e0,2,
-0x0b17ec,1,
-0x0b1800,9,
-0x0b1840,16,
-0x0b2000,2,
-0x0b2010,24,
-0x0b2080,9,
-0x0b20c0,18,
-0x0b2110,24,
-0x0b2180,9,
-0x0b21c0,18,
-0x0b2210,24,
-0x0b2280,9,
-0x0b22c0,18,
-0x0b2310,24,
-0x0b2380,9,
-0x0b23c0,18,
-0x0b2410,24,
-0x0b2480,9,
-0x0b24c0,18,
-0x0b2510,24,
-0x0b2580,9,
-0x0b25c0,18,
-0x0b2610,24,
-0x0b2680,9,
-0x0b26c0,18,
-0x0b2710,24,
-0x0b2780,9,
-0x0b27c0,16,
-0x0b2900,1,
-0x0b2910,1,
-0x0b3000,157,
-0x0b3278,26,
-0x0b3300,9,
-0x0b3404,1,
-0x0b340c,4,
-0x0b3800,73,
-0x0b3940,20,
-0x0b39a0,4,
-0x0b39c4,5,
-0x0b3a00,1,
-0x0b3a20,8,
-0x0b3a44,3,
-0x0b4000,7,
-0x0b4040,12,
-0x0b4100,9,
-0x0b4140,16,
-0x0b5000,2,
-0x0b5028,2,
-0x0b5050,2,
-0x0b5078,2,
-0x0b50a0,5,
-0x0b51ac,1,
-0x0b51d8,4,
-0x0b5200,6,
-0x0b5220,6,
-0x0b5240,6,
-0x0b5260,6,
-0x0b5280,3,
-0x0b6800,3,
-0x0b6820,6,
-0x0b6840,6,
-0x0b6860,6,
-0x0b6880,6,
-0x0b68a0,6,
-0x0b68c0,6,
-0x0b68e0,6,
-0x0b6900,6,
-0x0d0000,5,
-0x0d0038,4,
-0x0d0050,4,
-0x0d0080,3,
-0x0d00a0,6,
-0x0d00c0,6,
-0x0d0100,3,
-0x0d0120,6,
-0x0d0140,6,
-0x0d0180,14,
-0x0d01c0,6,
-0x0d1000,2,
-0x0d100c,1,
-0x0d1020,13,
-0x0d1058,1,
-0x0d1060,6,
-0x0d1080,1,
-0x0d1100,2,
-0x0d110c,1,
-0x0d1120,13,
-0x0d1158,1,
-0x0d1160,6,
-0x0d1180,1,
-0x0d1200,2,
-0x0d120c,1,
-0x0d1220,13,
-0x0d1258,1,
-0x0d1260,6,
-0x0d1280,1,
-0x0d1300,2,
-0x0d130c,1,
-0x0d1320,13,
-0x0d1358,1,
-0x0d1360,6,
-0x0d1380,1,
-0x0d1400,3,
-0x0d1410,10,
-0x0d1440,1,
-0x0d1450,6,
-0x0d1484,6,
-0x0d14a0,6,
-0x0d1504,25,
-0x0d1580,14,
-0x0d15c0,4,
-0x0d1600,6,
-0x0d1620,6,
-0x0d1640,3,
-0x0d1660,6,
-0x0d1700,2,
-0x0d170c,3,
-0x0d1720,6,
-0x0d1800,11,
-0x0d1830,7,
-0x0d1850,7,
-0x0d1870,9,
-0x0d18a0,2,
-0x0d18c0,2,
-0x0d1a00,1,
-0x0d1a08,13,
-0x0d1a40,11,
-0x0d1c00,24,
-0x0d1c64,5,
-0x0d1c80,3,
-0x0d1c90,2,
-0x0d1d00,15,
-0x0d1d40,16,
-0x0d1d90,4,
-0x0d1dc0,12,
-0x0d1e00,1,
-0x0d1e20,1,
-0x0d1e28,12,
-0x0d1e5c,7,
-0x0d1f00,14,
-0x0d2000,2,
-0x0d200c,1,
-0x0d2020,13,
-0x0d2058,1,
-0x0d2060,6,
-0x0d2080,1,
-0x0d2100,2,
-0x0d210c,1,
-0x0d2120,13,
-0x0d2158,1,
-0x0d2160,6,
-0x0d2180,1,
-0x0d2200,2,
-0x0d220c,1,
-0x0d2220,13,
-0x0d2258,1,
-0x0d2260,6,
-0x0d2280,1,
-0x0d2300,2,
-0x0d230c,1,
-0x0d2320,13,
-0x0d2358,1,
-0x0d2360,6,
-0x0d2380,1,
-0x0d2400,3,
-0x0d2410,10,
-0x0d2440,1,
-0x0d2450,6,
-0x0d2484,6,
-0x0d24a0,6,
-0x0d2504,25,
-0x0d2580,14,
-0x0d25c0,4,
-0x0d2600,6,
-0x0d2620,6,
-0x0d2640,3,
-0x0d2660,6,
-0x0d2700,2,
-0x0d270c,3,
-0x0d2720,6,
-0x0d2800,11,
-0x0d2830,7,
-0x0d2850,7,
-0x0d2870,9,
-0x0d28a0,2,
-0x0d28c0,2,
-0x0d2a00,1,
-0x0d2a08,13,
-0x0d2a40,11,
-0x0d2c00,24,
-0x0d2c64,5,
-0x0d2c80,3,
-0x0d2c90,2,
-0x0d2d00,15,
-0x0d2d40,16,
-0x0d2d90,4,
-0x0d2dc0,12,
-0x0d2e00,1,
-0x0d2e20,1,
-0x0d2e28,12,
-0x0d2e5c,7,
-0x0d2f00,14,
-0x0d3000,2,
-0x0d3400,1,
-0x0d3428,1,
-0x0d3450,1,
-0x0d3478,1,
-0x0d34a0,5,
-0x0d35ac,1,
-0x0d35d8,4,
-0x0d3600,6,
-0x0d3620,6,
-0x0d3640,3,
-0x0d3e00,3,
-0x0d3e20,6,
-0x0d3e40,6,
-0x0d3e80,3,
-0x0d3e90,1,
-0x0d4000,29,
-0x0d4078,4,
-0x0d4090,2,
-0x0d40a0,7,
-0x0d40c0,11,
-0x0d4100,14,
-0x0d4140,14,
-0x0d4180,61,
-0x0d4278,4,
-0x0d4290,2,
-0x0d42a0,7,
-0x0d42c0,11,
-0x0d4300,14,
-0x0d4340,14,
-0x0d4380,61,
-0x0d4478,4,
-0x0d4490,2,
-0x0d44a0,7,
-0x0d44c0,11,
-0x0d4500,14,
-0x0d4540,14,
-0x0d4580,61,
-0x0d4678,4,
-0x0d4690,2,
-0x0d46a0,7,
-0x0d46c0,11,
-0x0d4700,14,
-0x0d4740,14,
-0x0d4780,62,
-0x0d487c,1,
-0x0d4a00,8,
-0x0d4a24,15,
-0x0d4a64,30,
-0x0d4b00,4,
-0x0d4b20,3,
-0x0d4c00,6,
-0x0d4c40,14,
-0x0d4c80,9,
-0x0d4d00,9,
-0x0d4d2c,1,
-0x0d4d40,3,
-0x0d4d60,1,
-0x0d4d80,3,
-0x0d4e00,2,
-0x0d4e0c,1,
-0x0d4e14,5,
-0x0d4e2c,1,
-0x0d4e34,5,
-0x0d4e4c,1,
-0x0d4e54,5,
-0x0d4e6c,1,
-0x0d4e74,5,
-0x0d4e8c,1,
-0x0d4e94,5,
-0x0d4eac,1,
-0x0d4eb4,3,
-0x0d5000,29,
-0x0d5078,4,
-0x0d5090,2,
-0x0d50a0,7,
-0x0d50c0,11,
-0x0d5100,14,
-0x0d5140,14,
-0x0d5180,61,
-0x0d5278,4,
-0x0d5290,2,
-0x0d52a0,7,
-0x0d52c0,11,
-0x0d5300,14,
-0x0d5340,14,
-0x0d5380,61,
-0x0d5478,4,
-0x0d5490,2,
-0x0d54a0,7,
-0x0d54c0,11,
-0x0d5500,14,
-0x0d5540,14,
-0x0d5580,61,
-0x0d5678,4,
-0x0d5690,2,
-0x0d56a0,7,
-0x0d56c0,11,
-0x0d5700,14,
-0x0d5740,14,
-0x0d5780,62,
-0x0d587c,1,
-0x0d5a00,8,
-0x0d5a24,15,
-0x0d5a64,30,
-0x0d5b00,4,
-0x0d5b20,3,
-0x0d5c00,6,
-0x0d5c40,14,
-0x0d5c80,9,
-0x0d5d00,9,
-0x0d5d2c,1,
-0x0d5d40,3,
-0x0d5d60,1,
-0x0d5d80,3,
-0x0d5e00,2,
-0x0d5e0c,1,
-0x0d5e14,5,
-0x0d5e2c,1,
-0x0d5e34,5,
-0x0d5e4c,1,
-0x0d5e54,5,
-0x0d5e6c,1,
-0x0d5e74,5,
-0x0d5e8c,1,
-0x0d5e94,5,
-0x0d5eac,1,
-0x0d5eb4,3,
-0x0d6000,15,
-0x0d6070,3,
-0x0d6080,6,
-0x0d6100,9,
-0x0d6204,8,
-0x0d6240,13,
-0x0d6280,16,
-0x0d6400,8,
-0x0d6424,15,
-0x0d6464,15,
-0x0d64a4,15,
-0x0d64e4,30,
-0x0d6580,10,
-0x0d65ac,1,
-0x0d65b4,5,
-0x0d65cc,1,
-0x0d65d4,5,
-0x0d65ec,1,
-0x0d65f4,13,
-0x0d6680,7,
-0x0d66a0,5,
-0x0d66c0,5,
-0x0d66e0,4,
-0x0d6800,19,
-0x0d6850,10,
-0x0d6880,19,
-0x0d68d0,10,
-0x0d6900,19,
-0x0d6950,10,
-0x0d6980,19,
-0x0d69d0,10,
-0x0d6a00,19,
-0x0d6a50,10,
-0x0d6a80,19,
-0x0d6ad0,10,
-0x0d6b00,19,
-0x0d6b50,10,
-0x0d6b80,19,
-0x0d6bd0,10,
-0x0d6c00,19,
-0x0d6c60,6,
-0x0d6c84,1,
-0x0d6c94,8,
-0x0d6cb8,9,
-0x0d6ce0,4,
-0x0d7000,9,
-0x0d7040,16,
-0x0d8000,6,
-0x0d8020,3,
-0x0d8030,3,
-0x0d8040,6,
-0x0d8060,17,
-0x0d80c0,38,
-0x0d8180,1,
-0x0d8400,2,
-0x0d8428,2,
-0x0d8450,2,
-0x0d8478,2,
-0x0d84a0,16,
-0x0d85ac,1,
-0x0d85d8,4,
-0x0d8600,6,
-0x0d8620,6,
-0x0d8640,6,
-0x0d8660,6,
-0x0d8680,3,
-0x0d8800,2,
-0x0d9000,35,
-0x0d9100,26,
-0x0d916c,7,
-0x0d91a0,1,
-0x0d91c0,9,
-0x0d91e8,1,
-0x0d9200,6,
-0x0d9220,6,
-0x0d9248,4,
-0x0d9280,6,
-0x0d929c,1,
-0x0d92a4,2,
-0x0d92b8,9,
-0x0d9304,4,
-0x0d9328,3,
-0x0d9340,6,
-0x0d9400,1,
-0x0d9408,1,
-0x0d9410,2,
-0x0d9424,2,
-0x0d9444,1,
-0x0d9480,27,
-0x0d9500,6,
-0x0d9520,12,
-0x0d9700,7,
-0x0d9744,9,
-0x0d976c,2,
-0x0d9780,6,
-0x0d97a0,2,
-0x0d9800,35,
-0x0d9900,26,
-0x0d996c,7,
-0x0d99a0,1,
-0x0d99c0,9,
-0x0d99e8,1,
-0x0d9a00,6,
-0x0d9a20,6,
-0x0d9a48,4,
-0x0d9a80,6,
-0x0d9a9c,1,
-0x0d9aa4,2,
-0x0d9ab8,9,
-0x0d9b04,4,
-0x0d9b28,3,
-0x0d9b40,6,
-0x0d9c00,1,
-0x0d9c08,1,
-0x0d9c10,2,
-0x0d9c24,2,
-0x0d9c44,1,
-0x0d9c80,27,
-0x0d9d00,6,
-0x0d9d20,12,
-0x0d9f00,7,
-0x0d9f44,9,
-0x0d9f6c,2,
-0x0d9f80,6,
-0x0d9fa0,2,
-0x0db000,1028,
-0x0dc018,18,
-0x0dc100,4,
-0x0dc118,18,
-0x0dc200,12,
-0x0dc300,6,
-0x0dc320,5,
-0x0dc340,6,
-0x0dc360,5,
-0x0dc380,6,
-0x0dc400,9,
-0x0dc440,26,
-0x0dc4c4,1,
-0x0dc4cc,1,
-0x0dc4d4,1,
-0x0dc50c,7,
-0x0dc544,2,
-0x0dc55c,9,
-0x0dc584,7,
-0x0dc5a4,2,
-0x0dc5b8,2,
-0x0dc5c4,2,
-0x0dc5d8,2,
-0x0dc600,2,
-0x0dcfbc,15,
-0x0dd000,7,
-0x0dd020,6,
-0x0dd040,8,
-0x0dd104,1,
-0x0dd10c,1,
-0x0dd200,8,
-0x0dd244,2,
-0x0dd268,18,
-0x0dd404,1,
-0x0dd440,40,
-0x0dd504,3,
-0x0dd514,3,
-0x0dd524,3,
-0x0dd534,3,
-0x0dd544,3,
-0x0dd554,3,
-0x0dd564,3,
-0x0dd574,3,
-0x0dd584,3,
-0x0dd594,3,
-0x0dd5a4,3,
-0x0dd5b4,3,
-0x0dd604,2,
-0x0dd640,16,
-0x0dd684,3,
-0x0dd704,2,
-0x0dd740,18,
-0x0ddc00,4,
-0x0ddc80,1,
-0x0ddd00,6,
-0x0ddd20,6,
-0x0ddd40,6,
-0x0ddd80,1,
-0x0dde00,3,
-0x0dde20,10,
-0x0dde50,6,
-0x0dde80,9,
-0x0ddec0,16,
-0x0de000,123,
-0x0de200,2,
-0x0de20c,3,
-0x0de220,2,
-0x0de22c,3,
-0x0de240,2,
-0x0de24c,3,
-0x0de260,2,
-0x0de26c,3,
-0x0de280,2,
-0x0de28c,3,
-0x0de2a0,2,
-0x0de2ac,3,
-0x0de2c0,2,
-0x0de2cc,3,
-0x0de2e0,2,
-0x0de2ec,3,
-0x0de300,2,
-0x0de30c,3,
-0x0de320,2,
-0x0de32c,3,
-0x0de340,2,
-0x0de34c,3,
-0x0de360,2,
-0x0de36c,3,
-0x0de380,2,
-0x0de38c,3,
-0x0de3a0,2,
-0x0de3ac,3,
-0x0de3c0,2,
-0x0de3cc,3,
-0x0de3e0,2,
-0x0de3ec,3,
-0x0de400,123,
-0x0de600,2,
-0x0de60c,3,
-0x0de620,2,
-0x0de62c,3,
-0x0de640,2,
-0x0de64c,3,
-0x0de660,2,
-0x0de66c,3,
-0x0de680,2,
-0x0de68c,3,
-0x0de6a0,2,
-0x0de6ac,3,
-0x0de6c0,2,
-0x0de6cc,3,
-0x0de6e0,2,
-0x0de6ec,3,
-0x0de700,2,
-0x0de70c,3,
-0x0de720,2,
-0x0de72c,3,
-0x0de740,2,
-0x0de74c,3,
-0x0de760,2,
-0x0de76c,3,
-0x0de780,2,
-0x0de78c,3,
-0x0de7a0,2,
-0x0de7ac,3,
-0x0de7c0,2,
-0x0de7cc,3,
-0x0de7e0,2,
-0x0de7ec,3,
-0x0de800,123,
-0x0dea00,2,
-0x0dea0c,3,
-0x0dea20,2,
-0x0dea2c,3,
-0x0dea40,2,
-0x0dea4c,3,
-0x0dea60,2,
-0x0dea6c,3,
-0x0dea80,2,
-0x0dea8c,3,
-0x0deaa0,2,
-0x0deaac,3,
-0x0deac0,2,
-0x0deacc,3,
-0x0deae0,2,
-0x0deaec,3,
-0x0deb00,2,
-0x0deb0c,3,
-0x0deb20,2,
-0x0deb2c,3,
-0x0deb40,2,
-0x0deb4c,3,
-0x0deb60,2,
-0x0deb6c,3,
-0x0deb80,2,
-0x0deb8c,3,
-0x0deba0,2,
-0x0debac,3,
-0x0debc0,2,
-0x0debcc,3,
-0x0debe0,2,
-0x0debec,3,
-0x0dec00,123,
-0x0dee00,2,
-0x0dee0c,3,
-0x0dee20,2,
-0x0dee2c,3,
-0x0dee40,2,
-0x0dee4c,3,
-0x0dee60,2,
-0x0dee6c,3,
-0x0dee80,2,
-0x0dee8c,3,
-0x0deea0,2,
-0x0deeac,3,
-0x0deec0,2,
-0x0deecc,3,
-0x0deee0,2,
-0x0deeec,3,
-0x0def00,2,
-0x0def0c,3,
-0x0def20,2,
-0x0def2c,3,
-0x0def40,2,
-0x0def4c,3,
-0x0def60,2,
-0x0def6c,3,
-0x0def80,2,
-0x0def8c,3,
-0x0defa0,2,
-0x0defac,3,
-0x0defc0,2,
-0x0defcc,3,
-0x0defe0,2,
-0x0defec,3,
-0x0df000,123,
-0x0df200,2,
-0x0df20c,3,
-0x0df220,2,
-0x0df22c,3,
-0x0df240,2,
-0x0df24c,3,
-0x0df260,2,
-0x0df26c,3,
-0x0df280,2,
-0x0df28c,3,
-0x0df2a0,2,
-0x0df2ac,3,
-0x0df2c0,2,
-0x0df2cc,3,
-0x0df2e0,2,
-0x0df2ec,3,
-0x0df300,2,
-0x0df30c,3,
-0x0df320,2,
-0x0df32c,3,
-0x0df340,2,
-0x0df34c,3,
-0x0df360,2,
-0x0df36c,3,
-0x0df380,2,
-0x0df38c,3,
-0x0df3a0,2,
-0x0df3ac,3,
-0x0df3c0,2,
-0x0df3cc,3,
-0x0df3e0,2,
-0x0df3ec,3,
-0x0df400,2,
-0x0e0000,3,
-0x0e0010,4,
-0x0e0028,3,
-0x0e0048,2,
-0x0e0058,2,
-0x0e0064,32,
-0x0e00f0,1,
-0x0e00fc,35,
-0x0e019c,15,
-0x0e01e0,1,
-0x0e01e8,5,
-0x0e0204,5,
-0x0e021c,1,
-0x0e0300,16,
-0x0e0400,3,
-0x0e0410,4,
-0x0e0428,3,
-0x0e0448,2,
-0x0e0458,2,
-0x0e0464,32,
-0x0e04f0,1,
-0x0e04fc,35,
-0x0e059c,15,
-0x0e05e0,1,
-0x0e05e8,5,
-0x0e0604,5,
-0x0e061c,1,
-0x0e0700,16,
-0x0e0800,3,
-0x0e0810,4,
-0x0e0828,3,
-0x0e0848,2,
-0x0e0858,2,
-0x0e0864,32,
-0x0e08f0,1,
-0x0e08fc,35,
-0x0e099c,15,
-0x0e09e0,1,
-0x0e09e8,5,
-0x0e0a04,5,
-0x0e0a1c,1,
-0x0e0b00,16,
-0x0e0c00,3,
-0x0e0c10,4,
-0x0e0c28,3,
-0x0e0c48,2,
-0x0e0c58,2,
-0x0e0c64,32,
-0x0e0cf0,1,
-0x0e0cfc,35,
-0x0e0d9c,15,
-0x0e0de0,1,
-0x0e0de8,5,
-0x0e0e04,5,
-0x0e0e1c,1,
-0x0e0f00,16,
-0x0e1000,3,
-0x0e1010,4,
-0x0e1028,3,
-0x0e1048,2,
-0x0e1058,2,
-0x0e1064,32,
-0x0e10f0,1,
-0x0e10fc,35,
-0x0e119c,15,
-0x0e11e0,1,
-0x0e11e8,5,
-0x0e1204,5,
-0x0e121c,1,
-0x0e1300,16,
-0x0e1400,3,
-0x0e1410,4,
-0x0e1428,3,
-0x0e1448,2,
-0x0e1458,2,
-0x0e1464,32,
-0x0e14f0,1,
-0x0e14fc,35,
-0x0e159c,15,
-0x0e15e0,1,
-0x0e15e8,5,
-0x0e1604,5,
-0x0e161c,1,
-0x0e1700,16,
-0x0e1800,3,
-0x0e1810,4,
-0x0e1828,3,
-0x0e1848,2,
-0x0e1858,2,
-0x0e1864,32,
-0x0e18f0,1,
-0x0e18fc,35,
-0x0e199c,15,
-0x0e19e0,1,
-0x0e19e8,5,
-0x0e1a04,5,
-0x0e1a1c,1,
-0x0e1b00,16,
-0x0e1c00,3,
-0x0e1c10,4,
-0x0e1c28,3,
-0x0e1c48,2,
-0x0e1c58,2,
-0x0e1c64,32,
-0x0e1cf0,1,
-0x0e1cfc,35,
-0x0e1d9c,15,
-0x0e1de0,1,
-0x0e1de8,5,
-0x0e1e04,5,
-0x0e1e1c,1,
-0x0e1f00,16,
-0x0e20c0,8,
-0x0e20ec,5,
-0x0e2108,3,
-0x0e2200,5,
-0x0e2218,36,
-0x0e2300,6,
-0x0e2330,4,
-0x0e2500,3,
-0x0e2510,12,
-0x0e26e0,6,
-0x0e2700,6,
-0x0e2720,6,
-0x0e2740,3,
-0x0e2780,6,
-0x0e27a0,6,
-0x0e27c0,3,
-0x0e2800,67,
-0x0e2a00,6,
-0x0e2a20,6,
-0x0e2a40,3,
-0x0e2a50,3,
-0x0e2a60,1,
-0x0e2a80,17,
-0x0e3020,10,
-0x0e3070,1,
-0x0e3080,2,
-0x0e308c,1,
-0x0e3440,21,
-0x0e34e4,13,
-0x0e3520,6,
-0x0e3540,6,
-0x0e3560,6,
-0x0e3580,6,
-0x0e35a0,6,
-0x0e35c0,6,
-0x0e35e0,6,
-0x0e3600,16,
-0x0e3804,3,
-0x0e3900,33,
-0x0e3a00,6,
-0x0e3a20,2,
-0x0e3a30,1,
-0x0e3a40,8,
-0x0e3a64,5,
-0x0e3c00,1,
-0x0e3c28,1,
-0x0e3c50,1,
-0x0e3c78,1,
-0x0e3ca0,2,
-0x0e3dac,1,
-0x0e3dd8,4,
-0x0e3e00,6,
-0x0e3e20,6,
-0x0e3e40,3,
-0x0e4010,12,
-0x0e4044,3,
-0x0e4084,2,
-0x0e40bc,84,
-0x0e4240,18,
-0x0e45f0,4,
-0x0e4604,1,
-0x0e4640,16,
-0x0e46f0,4,
-0x0e4704,1,
-0x0e4740,16,
-0x0e5000,8,
-0x0e6000,9,
-0x0e6040,16,
-0x0e8000,9,
-0x0e8080,6,
-0x0e80a0,3,
-0x0f0000,3,
-0x0f0014,11,
-0x0f004c,3,
-0x0f0060,8,
-0x0f00f0,3,
-0x0f0100,1,
-0x0f010c,2,
-0x0f0118,1,
-0x0f0130,4,
-0x0f0180,3,
-0x0f0190,2,
-0x0f01a8,1,
-0x0f01c0,2,
-0x0f01d0,10,
-0x0f0200,61,
-0x0f0404,9,
-0x0f0440,12,
-0x0f0480,5,
-0x0f04b8,21,
-0x0f0520,1,
-0x0f0528,1,
-0x0f0540,2,
-0x0f0580,4,
-0x0f05a0,1,
-0x0f05c0,8,
-0x0f0800,17,
-0x0f0850,9,
-0x0f0880,9,
-0x0f08b0,9,
-0x0f08e0,9,
-0x0f0920,4,
-0x0f093c,5,
-0x0f095c,5,
-0x0f097c,5,
-0x0f099c,5,
-0x0f09bc,5,
-0x0f09dc,1,
-0x0f0a90,2,
-0x0f0c00,128,
-0x0f0e04,1,
-0x0f0e14,9,
-0x0f0e3c,1,
-0x0f1000,3,
-0x0f1010,12,
-0x0f1080,10,
-0x0f10c0,1,
-0x0f10e0,2,
-0x0f10ec,1,
-0x0f10f4,3,
-0x0f1400,6,
-0x0f1420,6,
-0x0f1440,6,
-0x0f1460,6,
-0x0f1480,6,
-0x0f14a0,6,
-0x0f14c0,6,
-0x0f14e0,6,
-0x0f1500,6,
-0x0f1520,6,
-0x0f1540,6,
-0x0f1560,6,
-0x0f1580,6,
-0x0f15a0,6,
-0x0f15c0,6,
-0x0f15e0,6,
-0x0f1600,6,
-0x0f1620,3,
-0x0f1800,3,
-0x0f1840,4,
-0x0f1854,3,
-0x0f1864,3,
-0x0f1874,3,
-0x0f2000,2,
-0x0f200c,3,
-0x0f2020,10,
-0x0f2060,6,
-0x0f2080,2,
-0x0f208c,3,
-0x0f20a0,10,
-0x0f20e0,6,
-0x0f2100,2,
-0x0f210c,3,
-0x0f2120,10,
-0x0f2160,6,
-0x0f2180,2,
-0x0f218c,3,
-0x0f21a0,10,
-0x0f21e0,6,
-0x0f2200,2,
-0x0f220c,3,
-0x0f2220,10,
-0x0f2260,6,
-0x0f2280,2,
-0x0f228c,3,
-0x0f22a0,10,
-0x0f22e0,6,
-0x0f2300,2,
-0x0f230c,3,
-0x0f2320,10,
-0x0f2360,6,
-0x0f2380,2,
-0x0f238c,3,
-0x0f23a0,10,
-0x0f23e0,6,
-0x0f2400,2,
-0x0f240c,3,
-0x0f2420,10,
-0x0f2460,6,
-0x0f2480,2,
-0x0f248c,3,
-0x0f24a0,10,
-0x0f24e0,6,
-0x0f2500,2,
-0x0f250c,3,
-0x0f2520,10,
-0x0f2560,6,
-0x0f2580,2,
-0x0f258c,3,
-0x0f25a0,10,
-0x0f25e0,6,
-0x0f2600,2,
-0x0f260c,3,
-0x0f2620,10,
-0x0f2660,6,
-0x0f2680,2,
-0x0f268c,3,
-0x0f26a0,10,
-0x0f26e0,6,
-0x0f2700,2,
-0x0f270c,3,
-0x0f2720,10,
-0x0f2760,6,
-0x0f2780,2,
-0x0f278c,3,
-0x0f27a0,10,
-0x0f27e0,6,
-0x0f2800,2,
-0x0f280c,3,
-0x0f2820,10,
-0x0f2860,6,
-0x0f2880,2,
-0x0f288c,3,
-0x0f28a0,10,
-0x0f28e0,6,
-0x0f2900,2,
-0x0f290c,3,
-0x0f2920,10,
-0x0f2960,6,
-0x0f2980,2,
-0x0f298c,3,
-0x0f29a0,10,
-0x0f29e0,6,
-0x0f4000,7,
-0x0f4020,4,
-0x0f4204,1,
-0x0f4280,35,
-0x0f4310,4,
-0x0f4404,1,
-0x0f4480,34,
-0x0f4510,10,
-0x0f453c,3,
-0x0f4800,7,
-0x0f4820,4,
-0x0f4a04,1,
-0x0f4a80,35,
-0x0f4b10,4,
-0x0f4c04,1,
-0x0f4c80,34,
-0x0f4d10,10,
-0x0f4d3c,3,
-0x0f5000,7,
-0x0f5020,4,
-0x0f5204,1,
-0x0f5280,35,
-0x0f5310,4,
-0x0f5404,1,
-0x0f5480,34,
-0x0f5510,10,
-0x0f553c,3,
-0x0f5800,7,
-0x0f5820,4,
-0x0f5a04,1,
-0x0f5a80,35,
-0x0f5b10,4,
-0x0f5c04,1,
-0x0f5c80,34,
-0x0f5d10,10,
-0x0f5d3c,3,
-0x0f6000,7,
-0x0f6020,4,
-0x0f6204,1,
-0x0f6280,35,
-0x0f6310,4,
-0x0f6404,1,
-0x0f6480,34,
-0x0f6510,10,
-0x0f653c,3,
-0x0f6800,7,
-0x0f6820,4,
-0x0f6a04,1,
-0x0f6a80,35,
-0x0f6b10,4,
-0x0f6c04,1,
-0x0f6c80,34,
-0x0f6d10,10,
-0x0f6d3c,3,
-0x100000,1,
-0x100008,1,
-0x100010,2,
-0x100020,1,
-0x100028,1,
-0x100030,2,
-0x100040,1,
-0x100048,1,
-0x100050,2,
-0x100060,1,
-0x100068,1,
-0x100070,2,
-0x100080,21,
-0x100100,21,
-0x100180,21,
-0x100200,21,
-0x100284,1,
-0x1003b0,5,
-0x100400,13,
-0x100440,13,
-0x100480,13,
-0x1004c0,13,
-0x100500,68,
-0x100618,1,
-0x100804,1,
-0x10080c,4,
-0x100820,9,
-0x1008a0,24,
-0x100920,24,
-0x100a00,48,
-0x100b00,59,
-0x100d00,1,
-0x100d08,2,
-0x100d80,4,
-0x100da0,6,
-0x100e00,4,
-0x100e20,1,
-0x100e28,7,
-0x100e48,7,
-0x100e68,7,
-0x100e88,6,
-0x100ee0,6,
-0x100f00,6,
-0x100f1c,10,
-0x100f70,8,
-0x100f94,4,
-0x100fc0,6,
-0x100fe0,6,
-0x101400,16,
-0x101444,1,
-0x10145c,10,
-0x101504,1,
-0x10151c,30,
-0x101600,1,
-0x101628,6,
-0x101648,6,
-0x101680,16,
-0x1016e0,16,
-0x101780,1,
-0x101790,16,
-0x101a00,14,
-0x101a40,3,
-0x101a50,2,
-0x101a60,2,
-0x101a70,2,
-0x101a80,2,
-0x101a90,1,
-0x101a9c,11,
-0x101b0c,5,
-0x101c00,34,
-0x101d00,3,
-0x102000,1,
-0x102028,1,
-0x102050,1,
-0x102078,1,
-0x1020a0,7,
-0x1021ac,1,
-0x1021d8,4,
-0x102200,6,
-0x102220,6,
-0x102240,3,
-0x102560,1,
-0x102584,10,
-0x1025b0,1,
-0x1025fc,1,
-0x102604,1,
-0x1026ec,69,
-0x103000,32,
-0x103084,5,
-0x1030f8,3,
-0x103108,3,
-0x103118,7,
-0x103144,1,
-0x103160,10,
-0x103200,32,
-0x103284,5,
-0x1032f8,3,
-0x103308,3,
-0x103318,7,
-0x103344,1,
-0x103360,10,
-0x103400,32,
-0x103484,5,
-0x1034f8,3,
-0x103508,3,
-0x103518,7,
-0x103544,1,
-0x103560,10,
-0x103600,32,
-0x103684,5,
-0x1036f8,3,
-0x103708,3,
-0x103718,7,
-0x103744,1,
-0x103760,10,
-0x103800,1,
-0x10380c,1,
-0x103a00,64,
-0x104000,3,
-0x104020,3,
-0x104040,3,
-0x104060,3,
-0x104084,1,
-0x104090,4,
-0x1040a4,1,
-0x1040b0,4,
-0x1040c4,1,
-0x1040d0,4,
-0x1040e4,1,
-0x1040f0,21,
-0x104148,18,
-0x1041f0,6,
-0x104308,9,
-0x104330,1,
-0x104340,16,
-0x1043b4,4,
-0x1043c8,4,
-0x1043dc,4,
-0x1043f0,4,
-0x104404,1,
-0x104470,36,
-0x104504,1,
-0x104570,36,
-0x104604,1,
-0x104670,36,
-0x104704,1,
-0x104770,50,
-0x104840,2,
-0x10484c,1,
-0x104900,1,
-0x104908,1,
-0x104984,1,
-0x1049a0,24,
-0x104a08,6,
-0x104a28,6,
-0x104a48,6,
-0x104a68,6,
-0x104a88,6,
-0x104aa8,6,
-0x104ac8,6,
-0x104ae8,15,
-0x104b40,16,
-0x104c00,6,
-0x104c20,6,
-0x104c40,6,
-0x104c60,6,
-0x104c80,6,
-0x104ca0,6,
-0x104cc0,6,
-0x104ce0,6,
-0x104d00,3,
-0x104d20,6,
-0x104d40,6,
-0x105000,448,
-0x105704,3,
-0x105734,1,
-0x106000,62,
-0x106100,32,
-0x106184,1,
-0x107010,1,
-0x110000,4,
-0x110014,2,
-0x110020,5,
-0x110040,5,
-0x110060,6,
-0x110080,5,
-0x110098,1,
-0x1100a0,4,
-0x1100b8,8,
-0x1100e0,6,
-0x110200,4,
-0x110214,2,
-0x110220,5,
-0x110240,5,
-0x110260,6,
-0x110280,5,
-0x110298,1,
-0x1102a0,4,
-0x1102b8,8,
-0x1102e0,6,
-0x110400,4,
-0x110414,2,
-0x110420,5,
-0x110440,5,
-0x110460,6,
-0x110480,5,
-0x110498,1,
-0x1104a0,4,
-0x1104b8,8,
-0x1104e0,6,
-0x110600,4,
-0x110614,2,
-0x110620,5,
-0x110640,5,
-0x110660,6,
-0x110680,5,
-0x110698,1,
-0x1106a0,4,
-0x1106b8,8,
-0x1106e0,6,
-0x110800,21,
-0x110880,15,
-0x1108c0,3,
-0x1108d0,2,
-0x110900,1,
-0x111000,1,
-0x111028,1,
-0x111050,1,
-0x111078,1,
-0x1110a0,5,
-0x1111ac,1,
-0x1111d8,4,
-0x111200,6,
-0x111220,6,
-0x111240,3,
-0x111400,3,
-0x111480,9,
-0x1114c0,25,
-0x111540,25,
-0x1115c0,25,
-0x111640,17,
-0x11168c,1,
-0x118000,29,
-0x118078,4,
-0x118090,2,
-0x1180a0,7,
-0x1180c0,11,
-0x118100,14,
-0x118140,14,
-0x118180,61,
-0x118278,4,
-0x118290,2,
-0x1182a0,7,
-0x1182c0,11,
-0x118300,14,
-0x118340,14,
-0x118380,61,
-0x118478,4,
-0x118490,2,
-0x1184a0,7,
-0x1184c0,11,
-0x118500,14,
-0x118540,14,
-0x118580,61,
-0x118678,4,
-0x118690,2,
-0x1186a0,7,
-0x1186c0,11,
-0x118700,14,
-0x118740,14,
-0x118780,62,
-0x11887c,1,
-0x118a00,8,
-0x118a24,15,
-0x118a64,30,
-0x118b00,4,
-0x118b20,3,
-0x118c00,6,
-0x118c40,14,
-0x118c80,9,
-0x118d00,9,
-0x118d2c,1,
-0x118d40,3,
-0x118d60,1,
-0x118d80,3,
-0x118e00,2,
-0x118e0c,1,
-0x118e14,5,
-0x118e2c,1,
-0x118e34,5,
-0x118e4c,1,
-0x118e54,5,
-0x118e6c,1,
-0x118e74,5,
-0x118e8c,1,
-0x118e94,5,
-0x118eac,1,
-0x118eb4,3,
-0x119000,29,
-0x119078,4,
-0x119090,2,
-0x1190a0,7,
-0x1190c0,11,
-0x119100,14,
-0x119140,14,
-0x119180,61,
-0x119278,4,
-0x119290,2,
-0x1192a0,7,
-0x1192c0,11,
-0x119300,14,
-0x119340,14,
-0x119380,61,
-0x119478,4,
-0x119490,2,
-0x1194a0,7,
-0x1194c0,11,
-0x119500,14,
-0x119540,14,
-0x119580,61,
-0x119678,4,
-0x119690,2,
-0x1196a0,7,
-0x1196c0,11,
-0x119700,14,
-0x119740,14,
-0x119780,62,
-0x11987c,1,
-0x119a00,8,
-0x119a24,15,
-0x119a64,30,
-0x119b00,4,
-0x119b20,3,
-0x119c00,6,
-0x119c40,14,
-0x119c80,9,
-0x119d00,9,
-0x119d2c,1,
-0x119d40,3,
-0x119d60,1,
-0x119d80,3,
-0x119e00,2,
-0x119e0c,1,
-0x119e14,5,
-0x119e2c,1,
-0x119e34,5,
-0x119e4c,1,
-0x119e54,5,
-0x119e6c,1,
-0x119e74,5,
-0x119e8c,1,
-0x119e94,5,
-0x119eac,1,
-0x119eb4,3,
-0x11a000,29,
-0x11a078,4,
-0x11a090,2,
-0x11a0a0,7,
-0x11a0c0,11,
-0x11a100,14,
-0x11a140,14,
-0x11a180,61,
-0x11a278,4,
-0x11a290,2,
-0x11a2a0,7,
-0x11a2c0,11,
-0x11a300,14,
-0x11a340,14,
-0x11a380,61,
-0x11a478,4,
-0x11a490,2,
-0x11a4a0,7,
-0x11a4c0,11,
-0x11a500,14,
-0x11a540,14,
-0x11a580,61,
-0x11a678,4,
-0x11a690,2,
-0x11a6a0,7,
-0x11a6c0,11,
-0x11a700,14,
-0x11a740,14,
-0x11a780,62,
-0x11a87c,1,
-0x11aa00,8,
-0x11aa24,15,
-0x11aa64,30,
-0x11ab00,4,
-0x11ab20,3,
-0x11ac00,6,
-0x11ac40,14,
-0x11ac80,9,
-0x11ad00,9,
-0x11ad2c,1,
-0x11ad40,3,
-0x11ad60,1,
-0x11ad80,3,
-0x11ae00,2,
-0x11ae0c,1,
-0x11ae14,5,
-0x11ae2c,1,
-0x11ae34,5,
-0x11ae4c,1,
-0x11ae54,5,
-0x11ae6c,1,
-0x11ae74,5,
-0x11ae8c,1,
-0x11ae94,5,
-0x11aeac,1,
-0x11aeb4,3,
-0x11b000,29,
-0x11b078,4,
-0x11b090,2,
-0x11b0a0,7,
-0x11b0c0,11,
-0x11b100,14,
-0x11b140,14,
-0x11b180,61,
-0x11b278,4,
-0x11b290,2,
-0x11b2a0,7,
-0x11b2c0,11,
-0x11b300,14,
-0x11b340,14,
-0x11b380,61,
-0x11b478,4,
-0x11b490,2,
-0x11b4a0,7,
-0x11b4c0,11,
-0x11b500,14,
-0x11b540,14,
-0x11b580,61,
-0x11b678,4,
-0x11b690,2,
-0x11b6a0,7,
-0x11b6c0,11,
-0x11b700,14,
-0x11b740,14,
-0x11b780,62,
-0x11b87c,1,
-0x11ba00,8,
-0x11ba24,15,
-0x11ba64,30,
-0x11bb00,4,
-0x11bb20,3,
-0x11bc00,6,
-0x11bc40,14,
-0x11bc80,9,
-0x11bd00,9,
-0x11bd2c,1,
-0x11bd40,3,
-0x11bd60,1,
-0x11bd80,3,
-0x11be00,2,
-0x11be0c,1,
-0x11be14,5,
-0x11be2c,1,
-0x11be34,5,
-0x11be4c,1,
-0x11be54,5,
-0x11be6c,1,
-0x11be74,5,
-0x11be8c,1,
-0x11be94,5,
-0x11beac,1,
-0x11beb4,3,
-0x11c000,19,
-0x11c050,10,
-0x11c080,19,
-0x11c0d0,10,
-0x11c100,19,
-0x11c150,10,
-0x11c180,19,
-0x11c1d0,10,
-0x11c200,19,
-0x11c250,10,
-0x11c280,19,
-0x11c2d0,10,
-0x11c300,19,
-0x11c350,10,
-0x11c380,19,
-0x11c3d0,10,
-0x11c400,19,
-0x11c450,10,
-0x11c480,19,
-0x11c4d0,10,
-0x11c500,19,
-0x11c550,10,
-0x11c580,19,
-0x11c5d0,10,
-0x11c600,19,
-0x11c650,10,
-0x11c680,19,
-0x11c6d0,10,
-0x11c700,19,
-0x11c750,10,
-0x11c780,19,
-0x11c7d0,10,
-0x11c800,19,
-0x11c860,6,
-0x11c884,1,
-0x11c894,22,
-0x11c900,7,
-0x11d000,7,
-0x11d020,15,
-0x11d060,15,
-0x11d0a0,15,
-0x11d0e0,15,
-0x11d120,15,
-0x11d160,15,
-0x11d1a0,15,
-0x11d1e0,15,
-0x11d220,15,
-0x11d260,15,
-0x11d2a0,15,
-0x11d2e0,15,
-0x11d320,15,
-0x11d360,15,
-0x11d3a0,15,
-0x11d3e0,17,
-0x11d428,3,
-0x11d440,5,
-0x11d480,9,
-0x11d4a8,3,
-0x11d4c0,5,
-0x11d500,9,
-0x11d528,3,
-0x11d540,5,
-0x11d580,9,
-0x11d5a8,3,
-0x11d5c0,5,
-0x11d600,6,
-0x11d620,6,
-0x11d640,6,
-0x11d660,6,
-0x11d680,6,
-0x11d6a0,6,
-0x11d6c0,6,
-0x11d6e0,6,
-0x11d700,12,
-0x11d734,1,
-0x11d73c,4,
-0x11d750,4,
-0x11d764,1,
-0x11d800,102,
-0x11da00,3,
-0x11da10,1,
-0x11da18,2,
-0x11da24,7,
-0x11da50,4,
-0x11da80,3,
-0x11da90,1,
-0x11da98,2,
-0x11daa4,7,
-0x11dad0,4,
-0x11db00,3,
-0x11db10,1,
-0x11db18,2,
-0x11db24,7,
-0x11db50,4,
-0x11db80,3,
-0x11db90,1,
-0x11db98,2,
-0x11dba4,7,
-0x11dbd0,4,
-0x11dc00,17,
-0x11e000,72,
-0x11e200,72,
-0x11e400,72,
-0x11e600,72,
-0x11e800,6,
-0x11e820,6,
-0x11e840,6,
-0x11e860,6,
-0x11e880,6,
-0x11e8a0,6,
-0x11e8c0,6,
-0x11e8e0,6,
-0x11e900,6,
-0x11e920,1,
-0x11ea00,6,
-0x11ea20,6,
-0x11ea40,6,
-0x11ea60,6,
-0x11ea80,6,
-0x11eaa0,6,
-0x11eac0,6,
-0x11eae0,6,
-0x11eb00,6,
-0x11eb20,1,
-0x11ec00,6,
-0x11ec20,6,
-0x11ec40,6,
-0x11ec60,6,
-0x11ec80,6,
-0x11eca0,6,
-0x11ecc0,6,
-0x11ece0,6,
-0x11ed00,6,
-0x11ed20,1,
-0x11ee00,6,
-0x11ee20,6,
-0x11ee40,6,
-0x11ee60,6,
-0x11ee80,6,
-0x11eea0,6,
-0x11eec0,6,
-0x11eee0,6,
-0x11ef00,6,
-0x11ef20,1,
-0x11f000,14,
-0x11f040,2,
-0x11f080,14,
-0x11f0c0,2,
-0x11f100,14,
-0x11f140,2,
-0x11f180,14,
-0x11f1c0,2,
-0x11f400,17,
-0x11f448,5,
-0x11f460,3,
-0x11f470,3,
-0x11f480,13,
-0x11f4b8,1,
-0x11f500,17,
-0x11f548,5,
-0x11f560,3,
-0x11f570,3,
-0x11f580,13,
-0x11f5b8,1,
-0x11f600,17,
-0x11f648,5,
-0x11f660,3,
-0x11f670,3,
-0x11f680,13,
-0x11f6b8,1,
-0x11f700,17,
-0x11f748,5,
-0x11f760,3,
-0x11f770,3,
-0x11f780,13,
-0x11f7b8,1,
-0x11f800,8,
-0x11f824,15,
-0x11f864,15,
-0x11f8a4,15,
-0x11f8e4,30,
-0x11f980,10,
-0x11f9ac,1,
-0x11f9b4,5,
-0x11f9cc,1,
-0x11f9d4,5,
-0x11f9ec,1,
-0x11f9f4,13,
-0x11fa80,7,
-0x11faa0,5,
-0x11fac0,5,
-0x11fae0,4,
-0x11fc04,8,
-0x11fc40,13,
-0x11fc80,16,
-0x11fd00,6,
-0x11fd20,3,
-0x11fd30,3,
-0x11fd40,19,
-0x11fdc0,3,
diff --git a/mstdump/mstdump_dbs/ConnectX4LX.csv b/mstdump/mstdump_dbs/ConnectX4LX.csv
deleted file mode 100644 (file)
index 0a15268..0000000
+++ /dev/null
@@ -1,3129 +0,0 @@
-#Addr, Size, Enable addr
-0x000000,16388,
-0x010084,1,
-0x01008c,2,
-0x010180,6,
-0x01019c,9,
-0x010304,1,
-0x0103bc,52,
-0x010500,35,
-0x010604,1,
-0x01060c,1,
-0x010624,1,
-0x01062c,1,
-0x010644,1,
-0x01064c,3,
-0x010800,1,
-0x010814,3,
-0x010844,1,
-0x01084c,4,
-0x011000,32,
-0x011200,32,
-0x011400,32,
-0x011600,32,
-0x011800,32,
-0x011a00,5,
-0x011a24,1,
-0x011a2c,1,
-0x011a34,3,
-0x011a44,1,
-0x011a4c,2,
-0x012000,20,
-0x012088,22,
-0x012100,18,
-0x012200,36,
-0x012300,3,
-0x012310,1,
-0x012320,1,
-0x012330,1,
-0x012340,1,
-0x012350,1,
-0x012360,1,
-0x012370,1,
-0x012400,166,
-0x0126a0,1,
-0x012700,32,
-0x012800,1,
-0x012808,1,
-0x012810,1,
-0x012818,1,
-0x012820,1,
-0x012828,1,
-0x012830,1,
-0x012838,1,
-0x012850,1,
-0x012858,1,
-0x012860,1,
-0x012868,1,
-0x012870,1,
-0x012878,1,
-0x012880,1,
-0x012888,1,
-0x012890,5,
-0x012900,10,
-0x012940,6,
-0x012960,6,
-0x012980,5,
-0x012a00,6,
-0x012a40,5,
-0x012a80,9,
-0x012ac0,19,
-0x012b10,2,
-0x014000,1,
-0x014010,10,
-0x014104,1,
-0x01410c,4,
-0x014200,1,
-0x014210,4,
-0x014300,4,
-0x014400,3,
-0x014410,1,
-0x014444,1,
-0x01444c,4,
-0x014480,2,
-0x014500,35,
-0x014590,1,
-0x014600,32,
-0x014704,1,
-0x01470c,1,
-0x014804,2,
-0x014814,3,
-0x014824,2,
-0x014834,3,
-0x014844,2,
-0x014854,5,
-0x014a00,4,
-0x014a14,2,
-0x015004,1,
-0x01500c,4,
-0x015204,1,
-0x015214,4,
-0x015228,1,
-0x015244,1,
-0x015250,4,
-0x015274,1,
-0x01527c,1,
-0x0152a4,1,
-0x015300,4,
-0x015314,1,
-0x01531c,3,
-0x015404,2,
-0x015430,20,
-0x015484,2,
-0x015498,5,
-0x0154bc,1,
-0x0154c8,1,
-0x0154d4,2,
-0x01550c,3,
-0x015524,3,
-0x015608,3,
-0x015618,4,
-0x015680,16,
-0x015704,2,
-0x015730,20,
-0x015784,3,
-0x015794,3,
-0x0157c0,6,
-0x015800,52,
-0x0158d4,1,
-0x0158dc,1,
-0x0158e4,3,
-0x0158f4,1,
-0x0158fc,52,
-0x015b04,2,
-0x015b14,3,
-0x015b24,2,
-0x015b38,6,
-0x015b60,5,
-0x015c04,1,
-0x015cb8,18,
-0x015d98,1,
-0x015e00,1,
-0x015e08,1,
-0x015e10,1,
-0x016000,32,
-0x016100,7,
-0x016120,2,
-0x016144,3,
-0x016204,1,
-0x01620c,1,
-0x016224,1,
-0x01622c,1,
-0x016234,1,
-0x01623c,1,
-0x016244,1,
-0x01624c,1,
-0x016254,1,
-0x01625c,2,
-0x016270,1,
-0x016280,1,
-0x016290,1,
-0x0162a0,1,
-0x0162b0,1,
-0x0162c0,1,
-0x0162d0,1,
-0x0162e0,1,
-0x0162f0,1,
-0x016300,1,
-0x016310,1,
-0x016320,1,
-0x016330,1,
-0x016340,32,
-0x016400,19,
-0x016454,7,
-0x016484,1,
-0x01648c,1,
-0x016800,9,
-0x016840,16,
-0x017800,1,
-0x017828,1,
-0x017850,1,
-0x017878,1,
-0x0178a0,12,
-0x0179ac,1,
-0x0179d8,4,
-0x017a00,6,
-0x017a20,6,
-0x017a40,3,
-0x017c00,6,
-0x017c20,6,
-0x017c40,6,
-0x017c60,6,
-0x017c80,6,
-0x017ca0,6,
-0x017cc0,6,
-0x017ce0,6,
-0x017d00,3,
-0x017d10,6,
-0x018400,11,
-0x018430,2,
-0x018440,4,
-0x018604,1,
-0x018618,2,
-0x018640,4,
-0x018660,2,
-0x018800,1,
-0x018810,4,
-0x018844,1,
-0x01884c,4,
-0x018880,2,
-0x01a400,12,
-0x01a444,1,
-0x01a44c,1,
-0x01a800,1,
-0x01a814,3,
-0x01a844,1,
-0x01a84c,4,
-0x01c400,7,
-0x01c500,8,
-0x01c544,1,
-0x01c554,3,
-0x01c564,3,
-0x01c574,3,
-0x01c604,1,
-0x01c60c,3,
-0x01c800,1,
-0x01c814,3,
-0x01c844,1,
-0x01c84c,4,
-0x01f000,1,
-0x01f400,1,
-0x01f408,4,
-0x01f41c,3,
-0x01f500,2,
-0x01f800,1,
-0x01f814,3,
-0x01f844,1,
-0x01f84c,4,
-0x01f880,3,
-0x020004,1,
-0x02000c,4,
-0x020080,3,
-0x020090,5,
-0x020800,16,
-0x020900,192,
-0x021004,1,
-0x02100c,4,
-0x021400,5,
-0x021418,5,
-0x021480,1,
-0x021704,2,
-0x02173c,17,
-0x0217fc,2,
-0x021844,1,
-0x022280,12,
-0x022408,6,
-0x022444,1,
-0x022454,3,
-0x022504,1,
-0x02250c,4,
-0x022624,1,
-0x02262c,3,
-0x02263c,1,
-0x022804,1,
-0x02280c,4,
-0x022904,4,
-0x022924,4,
-0x024000,36,
-0x0240c0,21,
-0x024120,11,
-0x024200,5,
-0x024220,1,
-0x024230,8,
-0x024258,1,
-0x024260,1,
-0x024270,9,
-0x0242a0,1,
-0x0242b0,4,
-0x0242c8,2,
-0x024300,5,
-0x024318,2,
-0x02439c,25,
-0x024424,4,
-0x024464,13,
-0x0244a4,1,
-0x0244ac,3,
-0x0244c0,2,
-0x0244d0,3,
-0x0244e0,3,
-0x0244f0,3,
-0x024500,3,
-0x024510,3,
-0x024520,3,
-0x024530,3,
-0x024884,11,
-0x0248b4,3,
-0x0248c4,1,
-0x0248cc,1,
-0x0248d4,1,
-0x0248dc,1,
-0x0248f0,2,
-0x024908,6,
-0x024928,6,
-0x024968,6,
-0x024984,3,
-0x024994,1,
-0x02499c,6,
-0x0249b8,7,
-0x024a08,6,
-0x024a28,6,
-0x024a68,6,
-0x024a84,1,
-0x024a8c,1,
-0x024a94,1,
-0x024a9c,13,
-0x024ae0,6,
-0x024b00,7,
-0x024b20,6,
-0x024b40,8,
-0x024c00,2,
-0x024c24,3,
-0x024c34,3,
-0x025004,6,
-0x025800,37,
-0x025904,1,
-0x02590c,1,
-0x026000,99,
-0x026200,1,
-0x026800,7,
-0x026824,6,
-0x026840,2,
-0x026864,1,
-0x02686c,1,
-0x026874,3,
-0x026884,1,
-0x0268a4,7,
-0x026904,1,
-0x02690c,4,
-0x026940,1,
-0x026980,33,
-0x026a0c,7,
-0x026a30,1,
-0x026a44,4,
-0x026a60,1,
-0x026a70,1,
-0x026b00,9,
-0x026b44,2,
-0x026b68,6,
-0x026b84,2,
-0x026ba8,14,
-0x026c00,16,
-0x026c44,1,
-0x026c4c,1,
-0x026c84,1,
-0x026c8c,4,
-0x026cc4,1,
-0x026ccc,4,
-0x026d00,2,
-0x028800,2,
-0x028844,1,
-0x02884c,4,
-0x029004,7,
-0x029b30,2,
-0x029b50,4,
-0x02a004,1,
-0x02a00c,4,
-0x02a040,6,
-0x02a200,1,
-0x02a210,11,
-0x02a240,8,
-0x02a484,1,
-0x02a4c0,16,
-0x02a780,1,
-0x02a7a0,4,
-0x02a7c0,1,
-0x02a900,1,
-0x02aa04,1,
-0x02aa0c,4,
-0x02ab00,40,
-0x02aba4,1,
-0x02abac,1,
-0x02abb4,1,
-0x02abbc,1,
-0x02abc4,1,
-0x02abcc,1,
-0x02abe0,4,
-0x02abf4,2,
-0x02ac00,2,
-0x02ac10,3,
-0x02ac44,3,
-0x02ad00,1,
-0x02ad08,1,
-0x02ad10,1,
-0x02ad18,1,
-0x02ad20,1,
-0x02ad28,1,
-0x02ad30,1,
-0x02ad38,1,
-0x02ad40,1,
-0x02ad48,1,
-0x02ad50,1,
-0x02ad58,1,
-0x02ad60,1,
-0x02ad68,1,
-0x02ad70,1,
-0x02ad78,1,
-0x02ad80,1,
-0x02ad88,1,
-0x02ad90,1,
-0x02ad98,1,
-0x02ada0,1,
-0x02ada8,1,
-0x02adb0,1,
-0x02adb8,1,
-0x02adc0,1,
-0x02adc8,1,
-0x02add0,1,
-0x02add8,1,
-0x02ade0,1,
-0x02ade8,1,
-0x02adf0,1,
-0x02adf8,1,
-0x02ae00,6,
-0x02ae20,5,
-0x02ae40,4,
-0x02c000,6,
-0x02c100,5,
-0x02c204,1,
-0x02c214,3,
-0x02c224,1,
-0x02c22c,4,
-0x02c244,2,
-0x02c250,5,
-0x02c400,2,
-0x02c428,2,
-0x02c450,2,
-0x02c478,2,
-0x02c4a0,21,
-0x02c5ac,1,
-0x02c5d8,4,
-0x02c600,6,
-0x02c620,6,
-0x02c640,6,
-0x02c660,6,
-0x02c680,3,
-0x02c800,3,
-0x02c820,6,
-0x02c840,6,
-0x02c860,6,
-0x02c880,6,
-0x02c8a0,6,
-0x02c8c0,6,
-0x02c8e0,6,
-0x02c900,6,
-0x02c920,6,
-0x02c940,6,
-0x02c960,6,
-0x02c980,6,
-0x02c9a0,6,
-0x02c9c0,6,
-0x02c9e0,6,
-0x02ca00,6,
-0x02ca20,6,
-0x02ca40,6,
-0x02ca60,6,
-0x02ca80,6,
-0x02caa0,6,
-0x02cac0,6,
-0x02cae0,6,
-0x02cb00,6,
-0x02cb20,6,
-0x02cc48,5,
-0x02cd00,9,
-0x02cd40,18,
-0x030004,2,
-0x030034,19,
-0x030084,2,
-0x0300bc,17,
-0x030104,2,
-0x030138,27,
-0x030310,3,
-0x030340,2,
-0x03034c,2,
-0x030384,1,
-0x0303c0,16,
-0x030404,1,
-0x03040c,4,
-0x030804,1,
-0x03080c,4,
-0x030c04,1,
-0x030c0c,4,
-0x030c40,4,
-0x031000,11,
-0x031100,11,
-0x031200,17,
-0x031280,6,
-0x031304,1,
-0x03130c,5,
-0x031400,6,
-0x031420,1,
-0x031444,2,
-0x031454,3,
-0x031464,2,
-0x031474,11,
-0x031500,7,
-0x031520,6,
-0x031540,8,
-0x031600,13,
-0x031640,6,
-0x031700,2,
-0x034200,24,
-0x034280,10,
-0x0342ac,2,
-0x0342c0,6,
-0x0342f0,39,
-0x034600,24,
-0x034680,10,
-0x0346ac,2,
-0x0346c0,6,
-0x0346f0,39,
-0x034c00,6,
-0x034c20,4,
-0x034c40,9,
-0x034c80,9,
-0x034cc0,3,
-0x034cd0,3,
-0x034e04,2,
-0x034e10,4,
-0x034e44,1,
-0x034e4c,4,
-0x034e80,6,
-0x034ea0,4,
-0x034f04,1,
-0x034f18,11,
-0x034f80,2,
-0x035000,2,
-0x035010,3,
-0x035044,3,
-0x035100,66,
-0x035210,3,
-0x035244,3,
-0x035300,64,
-0x035404,1,
-0x03540c,8,
-0x037000,6,
-0x03702c,7,
-0x037080,10,
-0x0370ac,4,
-0x037100,4,
-0x037200,2,
-0x037210,3,
-0x037244,3,
-0x037300,70,
-0x03742c,7,
-0x037480,10,
-0x0374ac,4,
-0x037500,4,
-0x037600,2,
-0x037610,3,
-0x037644,3,
-0x037700,69,
-0x037818,4,
-0x038000,3,
-0x038104,3,
-0x03813c,2,
-0x038150,3,
-0x038400,1,
-0x038428,1,
-0x038450,1,
-0x038478,1,
-0x0384a0,20,
-0x0385ac,1,
-0x0385d8,4,
-0x038600,6,
-0x038620,6,
-0x038640,3,
-0x038800,3,
-0x038820,6,
-0x038840,6,
-0x038860,6,
-0x038880,6,
-0x0388a0,6,
-0x0388c0,6,
-0x038900,28,
-0x038978,2,
-0x038a40,25,
-0x038ac0,16,
-0x039000,35,
-0x039090,3,
-0x039100,35,
-0x039190,3,
-0x039200,35,
-0x039290,3,
-0x039300,35,
-0x039390,3,
-0x039400,35,
-0x039490,3,
-0x039500,1,
-0x039800,3,
-0x039884,1,
-0x0398c0,16,
-0x039904,2,
-0x039934,20,
-0x039a04,2,
-0x039a10,4,
-0x039a24,2,
-0x039a30,4,
-0x039a44,2,
-0x039a50,4,
-0x039a64,2,
-0x039a70,8,
-0x039c00,7,
-0x039c20,6,
-0x039c40,8,
-0x039d00,11,
-0x039d40,11,
-0x039d84,1,
-0x039dc0,26,
-0x039e30,2,
-0x039e44,3,
-0x039e54,1,
-0x039e5c,2,
-0x039e80,2,
-0x039e90,3,
-0x039ea4,1,
-0x039eac,3,
-0x039ec0,3,
-0x039f00,9,
-0x039f40,22,
-0x039fa0,6,
-0x039fc0,8,
-0x03c000,3,
-0x03c010,3,
-0x03c020,3,
-0x03c040,9,
-0x03c068,6,
-0x03c090,2,
-0x03c0a0,3,
-0x03c0c0,12,
-0x03c0f4,1,
-0x03c100,2,
-0x03c110,3,
-0x03c120,1,
-0x03c130,11,
-0x03c160,2,
-0x03c180,4,
-0x03c194,3,
-0x03c1a4,2,
-0x03c1b0,4,
-0x03c2e0,5,
-0x03c2f8,2,
-0x03c30c,13,
-0x03c34c,77,
-0x03c48c,18,
-0x03c500,32,
-0x03c800,16,
-0x03c84c,18,
-0x03c8e0,2,
-0x03c8ec,3,
-0x03ca78,34,
-0x03cb3c,18,
-0x03cb94,3,
-0x03cba4,3,
-0x03cbf0,1,
-0x03cbf8,10,
-0x03cc30,1,
-0x03cc44,4,
-0x03cc60,1,
-0x03cc80,1,
-0x03cc90,1,
-0x03d004,6,
-0x03e004,1,
-0x03e00c,4,
-0x03e404,1,
-0x03e40c,4,
-0x03e604,1,
-0x03e60c,4,
-0x03e800,1,
-0x03f034,19,
-0x03f084,2,
-0x03f0c0,16,
-0x03f200,1,
-0x03f210,1,
-0x03f300,6,
-0x03f320,6,
-0x03f380,9,
-0x03f3c0,16,
-0x050000,1,
-0x050008,2,
-0x050044,8,
-0x050104,1,
-0x050178,34,
-0x050204,1,
-0x05020c,1,
-0x050214,1,
-0x050224,1,
-0x05022c,1,
-0x050234,1,
-0x05023c,1,
-0x050244,1,
-0x05024c,1,
-0x050254,1,
-0x050264,3,
-0x050280,2,
-0x050290,2,
-0x0502b4,1,
-0x0502bc,1,
-0x0502c4,1,
-0x0502cc,1,
-0x0502d4,1,
-0x0502dc,1,
-0x0502e4,1,
-0x0502ec,1,
-0x0502f4,1,
-0x0502fc,1,
-0x050304,1,
-0x05030c,1,
-0x050314,3,
-0x050324,3,
-0x050334,6,
-0x050380,32,
-0x050404,1,
-0x050438,18,
-0x050500,2,
-0x050544,1,
-0x05054c,4,
-0x050584,2,
-0x050598,2,
-0x0505a4,1,
-0x0505b0,4,
-0x0505c4,1,
-0x0505cc,1,
-0x0505d4,1,
-0x0505e0,1,
-0x0505f0,17,
-0x050700,2,
-0x050800,1,
-0x050820,9,
-0x050850,5,
-0x050870,5,
-0x0508c4,3,
-0x0508d4,3,
-0x0508e4,3,
-0x0508f4,4,
-0x050910,5,
-0x050930,4,
-0x050944,1,
-0x05094c,47,
-0x050a40,1,
-0x050a50,28,
-0x050ac4,1,
-0x050acc,2,
-0x050ad8,10,
-0x050b04,1,
-0x050b0c,1,
-0x050b14,1,
-0x050b20,9,
-0x050b50,4,
-0x050b64,1,
-0x050b70,6,
-0x050b8c,4,
-0x050ba4,4,
-0x050bc0,1,
-0x050bd0,1,
-0x050be0,1,
-0x050bf0,1,
-0x050c00,1,
-0x050c14,1,
-0x050c1c,1,
-0x050c24,1,
-0x050c2c,1,
-0x050c34,1,
-0x050c3c,1,
-0x050c44,1,
-0x050c4c,1,
-0x050c54,4,
-0x050c70,1,
-0x050c80,1,
-0x050c90,1,
-0x050ca0,1,
-0x050cb0,1,
-0x050cc0,1,
-0x050cd0,1,
-0x050ce0,1,
-0x050cf0,1,
-0x050d00,1,
-0x050d10,1,
-0x050d20,1,
-0x050d30,1,
-0x050d40,1,
-0x050d50,1,
-0x050d60,1,
-0x050d70,1,
-0x050d80,1,
-0x050d90,1,
-0x050da0,1,
-0x050db0,1,
-0x050dc0,1,
-0x050dd0,1,
-0x050de0,1,
-0x050e00,64,
-0x052000,192,
-0x052800,2,
-0x053000,51,
-0x053400,3,
-0x053420,6,
-0x053440,6,
-0x053460,6,
-0x053480,6,
-0x0534a0,6,
-0x0534c0,6,
-0x0534e0,6,
-0x053500,6,
-0x053520,6,
-0x053540,6,
-0x053560,6,
-0x053614,11,
-0x053654,11,
-0x0536d4,11,
-0x053704,1,
-0x053740,18,
-0x0537a0,10,
-0x0537e0,29,
-0x053860,10,
-0x054204,1,
-0x05420c,1,
-0x054214,1,
-0x054224,1,
-0x05422c,1,
-0x054234,1,
-0x054244,1,
-0x05424c,3,
-0x054304,1,
-0x054340,16,
-0x0543a0,1,
-0x0543b0,1,
-0x0543c0,1,
-0x0543d0,4,
-0x054400,8,
-0x054440,10,
-0x054820,3,
-0x054928,9,
-0x054954,4,
-0x054970,1,
-0x054980,1,
-0x054990,5,
-0x0549c4,13,
-0x054a04,1,
-0x054a0c,4,
-0x054a40,1,
-0x054a50,5,
-0x054a70,1,
-0x054a80,1,
-0x054a90,2,
-0x054c04,1,
-0x054c0c,4,
-0x054c40,1,
-0x054c50,4,
-0x054d40,1,
-0x054d80,7,
-0x054e04,1,
-0x054e0c,4,
-0x054e40,1,
-0x054e50,4,
-0x054f40,1,
-0x054f80,7,
-0x055000,11,
-0x055050,7,
-0x055070,16,
-0x0550b8,8,
-0x055200,13,
-0x055240,11,
-0x055300,16,
-0x055400,3,
-0x055420,6,
-0x055440,6,
-0x055460,6,
-0x055480,6,
-0x0554a0,6,
-0x0554c0,6,
-0x0554e0,6,
-0x055500,6,
-0x055520,6,
-0x055540,6,
-0x055560,6,
-0x055580,6,
-0x0555a0,6,
-0x0555c0,6,
-0x0555e0,6,
-0x055600,6,
-0x055620,6,
-0x055640,6,
-0x055660,6,
-0x055680,6,
-0x056000,2,
-0x056044,1,
-0x05604c,4,
-0x056800,2,
-0x056844,1,
-0x05684c,4,
-0x057004,7,
-0x057b20,2,
-0x057b30,2,
-0x057b50,5,
-0x058004,1,
-0x05800c,4,
-0x058800,7,
-0x058820,6,
-0x058844,2,
-0x058864,9,
-0x058890,1,
-0x0588a0,1,
-0x0588b0,1,
-0x0588c0,1,
-0x0588d0,1,
-0x058904,3,
-0x058978,66,
-0x058a84,1,
-0x058a8c,1,
-0x058a94,1,
-0x058aa0,2,
-0x058ff0,4,
-0x059004,1,
-0x05900c,4,
-0x059080,39,
-0x059120,1,
-0x059130,1,
-0x059140,1,
-0x059150,1,
-0x059160,1,
-0x059800,1,
-0x059810,1,
-0x059820,1,
-0x059830,1,
-0x059840,1,
-0x059850,1,
-0x059860,1,
-0x059870,1,
-0x059880,1,
-0x059890,1,
-0x0598a0,1,
-0x0598b0,1,
-0x0598d8,3,
-0x059900,3,
-0x059980,9,
-0x0599c0,32,
-0x059a44,3,
-0x059a54,1,
-0x059a5c,1,
-0x059c00,2,
-0x059c28,2,
-0x059c50,2,
-0x059c78,2,
-0x059ca0,18,
-0x059dac,1,
-0x059dd8,4,
-0x059e00,6,
-0x059e20,6,
-0x059e40,6,
-0x059e60,6,
-0x059e80,3,
-0x05a000,4,
-0x05a020,2,
-0x05a030,1,
-0x05a04c,2,
-0x05a070,4,
-0x05a088,3,
-0x05a0a0,1,
-0x05a0b0,1,
-0x05a0c0,1,
-0x05a0d4,1,
-0x060020,4,
-0x060120,4,
-0x060144,2,
-0x060154,7,
-0x060174,1,
-0x06017c,3,
-0x06018c,1,
-0x0601a0,4,
-0x0601b8,2,
-0x0601c4,2,
-0x0601e4,7,
-0x060204,1,
-0x06020c,4,
-0x060240,16,
-0x060304,1,
-0x06030c,1,
-0x060400,2,
-0x060420,3,
-0x060430,1,
-0x060440,1,
-0x060484,2,
-0x0604b8,18,
-0x060504,1,
-0x06050c,1,
-0x060514,1,
-0x060900,1,
-0x060914,1,
-0x06091c,2,
-0x060930,1,
-0x060a00,32,
-0x060a84,1,
-0x060a8c,1,
-0x060a94,1,
-0x060a9c,1,
-0x060bf0,3,
-0x060c00,11,
-0x060c30,3,
-0x061004,1,
-0x061010,1,
-0x061018,4,
-0x061044,2,
-0x061054,3,
-0x061100,32,
-0x061200,1,
-0x061404,1,
-0x06140c,4,
-0x061440,2,
-0x061468,2,
-0x061478,2,
-0x06180c,8,
-0x061908,6,
-0x061928,6,
-0x061968,6,
-0x061988,6,
-0x0619a8,6,
-0x0619e8,14,
-0x062008,5,
-0x062024,3,
-0x062034,1,
-0x06203c,1,
-0x062044,1,
-0x06204c,1,
-0x062054,1,
-0x06205c,3,
-0x06206c,1,
-0x062080,2,
-0x062094,1,
-0x06209c,2,
-0x0620b0,1,
-0x0620c0,1,
-0x0620d0,1,
-0x0620e0,1,
-0x0620f4,4,
-0x0621c0,2,
-0x0621e4,3,
-0x0621f4,3,
-0x062404,1,
-0x06240c,4,
-0x062800,12,
-0x062834,1,
-0x06283c,5,
-0x062854,1,
-0x062900,3,
-0x062914,1,
-0x06291c,1,
-0x062924,1,
-0x06292c,1,
-0x062934,1,
-0x06293c,2,
-0x062950,3,
-0x062960,2,
-0x063000,1,
-0x063010,4,
-0x063024,1,
-0x06302c,1,
-0x063034,1,
-0x063044,1,
-0x06304c,1,
-0x063054,1,
-0x06305c,2,
-0x063070,1,
-0x063080,1,
-0x063090,1,
-0x0630a4,3,
-0x063100,2,
-0x063144,1,
-0x06314c,1,
-0x063154,1,
-0x063164,1,
-0x06316c,1,
-0x063174,1,
-0x063180,16,
-0x063208,1,
-0x063210,1,
-0x063218,1,
-0x063224,3,
-0x063240,10,
-0x063300,8,
-0x064004,1,
-0x06400c,4,
-0x064200,3,
-0x064300,1,
-0x064308,6,
-0x064324,2,
-0x064338,2,
-0x064380,2,
-0x064394,1,
-0x06439c,2,
-0x064400,2,
-0x064420,3,
-0x064430,1,
-0x064440,1,
-0x064484,2,
-0x0644b8,18,
-0x064504,1,
-0x06450c,1,
-0x064514,1,
-0x064804,1,
-0x064884,2,
-0x0648c8,14,
-0x065018,2,
-0x06507c,10,
-0x0650c0,16,
-0x065104,3,
-0x065114,1,
-0x065200,3,
-0x065220,6,
-0x065240,6,
-0x065260,6,
-0x065280,6,
-0x065300,1,
-0x065f00,2,
-0x066000,2,
-0x066028,2,
-0x066050,2,
-0x066078,2,
-0x0660a0,27,
-0x0661ac,1,
-0x0661d8,4,
-0x066200,6,
-0x066220,6,
-0x066240,6,
-0x066260,6,
-0x066280,3,
-0x066400,6,
-0x066500,17,
-0x066550,8,
-0x066574,3,
-0x070004,1,
-0x07000c,4,
-0x070400,7,
-0x070420,11,
-0x070500,5,
-0x070524,1,
-0x07052c,1,
-0x070534,1,
-0x070540,4,
-0x070600,142,
-0x070884,2,
-0x0708b4,19,
-0x070904,1,
-0x070940,16,
-0x071000,1,
-0x071094,1,
-0x071104,2,
-0x071140,16,
-0x071204,1,
-0x07120c,4,
-0x071404,1,
-0x07140c,1,
-0x071414,1,
-0x07141c,1,
-0x071424,1,
-0x07142c,1,
-0x071434,1,
-0x07143c,1,
-0x071800,2,
-0x071904,1,
-0x071940,16,
-0x071a04,1,
-0x071a40,16,
-0x071b04,1,
-0x071b40,16,
-0x072000,3,
-0x072804,1,
-0x07280c,4,
-0x072880,1,
-0x072888,3,
-0x073000,1,
-0x073020,1,
-0x073040,1,
-0x073060,1,
-0x073080,1,
-0x0730a0,1,
-0x0730c0,1,
-0x0730e0,1,
-0x073100,1,
-0x073120,1,
-0x073140,1,
-0x073160,1,
-0x073180,1,
-0x0731a0,1,
-0x0731c0,1,
-0x0731e0,1,
-0x073200,1,
-0x073220,1,
-0x073240,1,
-0x073260,1,
-0x073280,1,
-0x0732a0,1,
-0x0732c0,1,
-0x0732e0,1,
-0x073300,1,
-0x073320,1,
-0x073340,1,
-0x073360,1,
-0x073380,1,
-0x0733a0,1,
-0x0733c0,1,
-0x0733e0,1,
-0x073800,16,
-0x074830,4,
-0x074884,1,
-0x074890,4,
-0x074900,3,
-0x074920,6,
-0x074940,6,
-0x074980,9,
-0x0749c0,16,
-0x075000,3,
-0x075010,2,
-0x075020,4,
-0x075100,2,
-0x080000,29,
-0x080340,14,
-0x08037c,3,
-0x08038c,1,
-0x0803c0,2,
-0x0803e4,3,
-0x0803f4,3,
-0x080404,6,
-0x080804,2,
-0x080874,35,
-0x081000,129,
-0x081210,4,
-0x081228,3,
-0x081240,2,
-0x081264,2,
-0x081274,3,
-0x081284,2,
-0x081298,2,
-0x0812a4,1,
-0x0812b4,21,
-0x081310,8,
-0x081344,1,
-0x08134c,1,
-0x081354,1,
-0x081364,2,
-0x081370,4,
-0x081384,2,
-0x081390,4,
-0x081404,2,
-0x081478,34,
-0x081504,2,
-0x081518,14,
-0x081580,5,
-0x081598,2,
-0x0815a4,10,
-0x082000,29,
-0x082340,14,
-0x08237c,3,
-0x08238c,1,
-0x0823c0,2,
-0x0823e4,3,
-0x0823f4,3,
-0x082404,1,
-0x08240c,4,
-0x082804,2,
-0x082874,35,
-0x082904,2,
-0x082974,35,
-0x083000,129,
-0x083210,6,
-0x083244,2,
-0x083254,7,
-0x083284,1,
-0x08328c,1,
-0x083294,1,
-0x0832a4,1,
-0x0832b4,19,
-0x083304,2,
-0x083310,4,
-0x083324,2,
-0x083330,14,
-0x084000,29,
-0x084340,14,
-0x08437c,3,
-0x08438c,1,
-0x0843c0,2,
-0x0843e4,3,
-0x0843f4,3,
-0x084404,1,
-0x08440c,4,
-0x084804,2,
-0x084874,35,
-0x084904,2,
-0x084974,35,
-0x085000,32,
-0x085200,1,
-0x085210,7,
-0x085240,12,
-0x085280,2,
-0x0852a4,1,
-0x0852b4,3,
-0x085304,1,
-0x08530c,1,
-0x085314,1,
-0x085324,2,
-0x085334,3,
-0x085344,2,
-0x085358,2,
-0x085364,2,
-0x085378,2,
-0x085384,2,
-0x085398,2,
-0x0853c0,23,
-0x086000,2,
-0x086020,2,
-0x086040,1,
-0x086400,11,
-0x086800,3,
-0x086820,6,
-0x086840,6,
-0x086860,6,
-0x086880,6,
-0x0868a0,6,
-0x0868c0,6,
-0x0868e0,6,
-0x086900,9,
-0x086940,17,
-0x087000,26,
-0x087100,1,
-0x087108,1,
-0x087110,1,
-0x087118,1,
-0x087120,1,
-0x087128,1,
-0x087130,1,
-0x087138,1,
-0x087140,1,
-0x087148,1,
-0x087150,1,
-0x087158,1,
-0x087160,1,
-0x087168,1,
-0x087170,1,
-0x087178,1,
-0x087180,10,
-0x0871b0,9,
-0x087200,1,
-0x087208,1,
-0x087210,3,
-0x090000,17,
-0x090060,2,
-0x09006c,1,
-0x090104,1,
-0x090140,25,
-0x0901a8,2,
-0x0901c0,9,
-0x0901e8,2,
-0x090204,1,
-0x090220,24,
-0x090300,6,
-0x090320,9,
-0x090348,1,
-0x090350,1,
-0x090400,6,
-0x090420,9,
-0x090448,1,
-0x090450,1,
-0x090500,6,
-0x090520,6,
-0x090540,2,
-0x090564,2,
-0x090578,3,
-0x091004,3,
-0x091800,8,
-0x091824,2,
-0x091830,10,
-0x091860,6,
-0x092000,32,
-0x093000,1,
-0x093020,1,
-0x093040,1,
-0x093060,1,
-0x093080,1,
-0x0930a0,1,
-0x0930c0,1,
-0x0930e0,1,
-0x093100,1,
-0x0931a0,1,
-0x0931c0,1,
-0x093200,3,
-0x093404,1,
-0x093440,16,
-0x093504,1,
-0x09353c,28,
-0x0935b0,2,
-0x0935c0,3,
-0x094000,9,
-0x094040,19,
-0x0940c0,2,
-0x094800,1,
-0x094828,1,
-0x094850,1,
-0x094878,1,
-0x0948a0,8,
-0x0949ac,1,
-0x0949d8,4,
-0x094a00,6,
-0x094a20,6,
-0x094a40,3,
-0x096000,1,
-0x096010,4,
-0x096028,3,
-0x096104,1,
-0x09610c,7,
-0x096204,1,
-0x09620c,4,
-0x096488,1,
-0x096498,3,
-0x0964b0,4,
-0x096504,1,
-0x09650c,4,
-0x096584,4,
-0x096600,16,
-0x096644,2,
-0x096658,10,
-0x096684,2,
-0x0966bc,51,
-0x096800,11,
-0x096884,3,
-0x0968a0,12,
-0x097100,6,
-0x097120,1,
-0x0a2004,1,
-0x0a200c,4,
-0x0a2400,2,
-0x0a240c,6,
-0x0a2440,1,
-0x0a2450,4,
-0x0a2468,3,
-0x0a2480,1,
-0x0a24a0,10,
-0x0a24d0,9,
-0x0a2804,1,
-0x0a280c,4,
-0x0a2c00,2,
-0x0a2c0c,2,
-0x0a2c40,1,
-0x0a2c50,4,
-0x0a2c68,3,
-0x0a2c88,2,
-0x0a2cf0,1,
-0x0a3004,1,
-0x0a300c,4,
-0x0a3040,2,
-0x0a3064,3,
-0x0a3074,3,
-0x0a3200,9,
-0x0a3230,2,
-0x0a323c,2,
-0x0a3248,4,
-0x0a3400,1,
-0x0a3408,3,
-0x0a3418,4,
-0x0a3430,2,
-0x0a343c,1,
-0x0a3480,1,
-0x0a3490,1,
-0x0a3504,1,
-0x0a3510,76,
-0x0a4000,48,
-0x0a4100,3,
-0x0a4110,6,
-0x0a412c,4,
-0x0a4140,1,
-0x0a4304,1,
-0x0a4318,10,
-0x0a4804,1,
-0x0a480c,4,
-0x0a4840,2,
-0x0a4864,3,
-0x0a4874,3,
-0x0a4c04,2,
-0x0a4c10,2,
-0x0a4c1c,6,
-0x0a4c38,2,
-0x0a4c50,8,
-0x0a4c78,19,
-0x0a4d04,2,
-0x0a4d40,21,
-0x0a4da4,1,
-0x0a4dac,1,
-0x0a4db4,1,
-0x0a4dc0,1,
-0x0a5000,14,
-0x0a6000,1,
-0x0a6028,1,
-0x0a6050,1,
-0x0a6078,1,
-0x0a60a0,18,
-0x0a61ac,1,
-0x0a61d8,4,
-0x0a6200,6,
-0x0a6220,6,
-0x0a6240,3,
-0x0a6400,3,
-0x0a6420,6,
-0x0a6440,6,
-0x0a6460,6,
-0x0a6480,6,
-0x0a64a0,6,
-0x0a64c0,6,
-0x0a6500,9,
-0x0a6540,18,
-0x0a65c0,4,
-0x0a8000,10,
-0x0a802c,15,
-0x0a806c,5,
-0x0a8700,17,
-0x0a8750,4,
-0x0a8800,4,
-0x0a8880,1,
-0x0a88a0,1,
-0x0a88c0,1,
-0x0a8900,1,
-0x0a8960,1,
-0x0a8980,4,
-0x0a89a4,3,
-0x0a89c0,1,
-0x0a8a00,4,
-0x0a8ad4,10,
-0x0a8b00,2,
-0x0a8b80,4,
-0x0a9804,1,
-0x0a980c,4,
-0x0a9f00,6,
-0x0a9f20,6,
-0x0a9f40,6,
-0x0a9f60,6,
-0x0a9f80,9,
-0x0a9fc0,16,
-0x0aa020,1,
-0x0aa028,2,
-0x0b0000,2,
-0x0b0010,4,
-0x0b1000,15,
-0x0b1040,10,
-0x0b1080,20,
-0x0b1100,2,
-0x0b1110,2,
-0x0b1120,2,
-0x0b1160,2,
-0x0b116c,1,
-0x0b1180,3,
-0x0b1190,3,
-0x0b11a0,3,
-0x0b11e0,2,
-0x0b11ec,1,
-0x0b1200,2,
-0x0b1210,2,
-0x0b1260,2,
-0x0b126c,1,
-0x0b1280,3,
-0x0b1290,3,
-0x0b12e0,2,
-0x0b12ec,1,
-0x0b1300,2,
-0x0b1310,2,
-0x0b1320,2,
-0x0b1360,2,
-0x0b136c,1,
-0x0b1380,3,
-0x0b1390,3,
-0x0b13e0,2,
-0x0b13ec,1,
-0x0b1400,3,
-0x0b1410,3,
-0x0b1460,2,
-0x0b146c,1,
-0x0b1480,3,
-0x0b1490,7,
-0x0b14b0,4,
-0x0b14e0,2,
-0x0b14ec,1,
-0x0b1500,3,
-0x0b1510,3,
-0x0b1560,2,
-0x0b156c,1,
-0x0b1580,2,
-0x0b1590,2,
-0x0b15e0,2,
-0x0b15ec,1,
-0x0b1600,3,
-0x0b1610,3,
-0x0b1660,2,
-0x0b166c,1,
-0x0b1680,3,
-0x0b1690,3,
-0x0b16e0,2,
-0x0b16ec,1,
-0x0b1700,8,
-0x0b1760,2,
-0x0b176c,1,
-0x0b1780,3,
-0x0b1790,3,
-0x0b17e0,2,
-0x0b17ec,1,
-0x0b1800,9,
-0x0b1840,16,
-0x0b2000,9,
-0x0b2040,48,
-0x0b2104,7,
-0x0b2200,9,
-0x0b2240,48,
-0x0b2304,7,
-0x0b2400,9,
-0x0b2440,48,
-0x0b2504,7,
-0x0b2600,9,
-0x0b2640,48,
-0x0b2704,7,
-0x0b2800,9,
-0x0b2840,48,
-0x0b2904,7,
-0x0b2a00,9,
-0x0b2a40,48,
-0x0b2b04,7,
-0x0b2c00,9,
-0x0b2c40,48,
-0x0b2d04,7,
-0x0b2e00,9,
-0x0b2e40,48,
-0x0b2f04,7,
-0x0b3000,65,
-0x0b3140,35,
-0x0b31d0,1,
-0x0b4000,132,
-0x0b4240,13,
-0x0b4278,26,
-0x0b4300,9,
-0x0b4380,32,
-0x0b4404,1,
-0x0b440c,4,
-0x0b4444,1,
-0x0b444c,4,
-0x0b4484,1,
-0x0b448c,4,
-0x0b44c4,3,
-0x0b4800,73,
-0x0b4940,28,
-0x0b49c4,5,
-0x0b4a00,1,
-0x0b4a20,16,
-0x0b5000,7,
-0x0b5040,12,
-0x0b5100,9,
-0x0b5140,16,
-0x0b6000,3,
-0x0b6028,3,
-0x0b6050,3,
-0x0b6078,3,
-0x0b60a0,7,
-0x0b61ac,1,
-0x0b61d8,4,
-0x0b6200,6,
-0x0b6220,6,
-0x0b6240,6,
-0x0b6260,6,
-0x0b6280,6,
-0x0b62a0,6,
-0x0b62c0,3,
-0x0b7800,3,
-0x0b7820,6,
-0x0b7840,6,
-0x0b7860,6,
-0x0b7880,6,
-0x0b78a0,6,
-0x0b78c0,6,
-0x0b78e0,6,
-0x0b7900,6,
-0x0b7a00,1,
-0x0d0000,5,
-0x0d0038,4,
-0x0d0050,4,
-0x0d0080,3,
-0x0d00a0,6,
-0x0d00c0,6,
-0x0d0100,3,
-0x0d0120,6,
-0x0d0140,6,
-0x0d0180,14,
-0x0d01c0,6,
-0x0d1000,2,
-0x0d100c,1,
-0x0d1020,13,
-0x0d1058,1,
-0x0d1060,6,
-0x0d1080,1,
-0x0d1100,2,
-0x0d110c,1,
-0x0d1120,13,
-0x0d1158,1,
-0x0d1160,6,
-0x0d1180,1,
-0x0d1200,2,
-0x0d120c,1,
-0x0d1220,13,
-0x0d1258,1,
-0x0d1260,6,
-0x0d1280,1,
-0x0d1300,2,
-0x0d130c,1,
-0x0d1320,13,
-0x0d1358,1,
-0x0d1360,6,
-0x0d1380,1,
-0x0d1400,3,
-0x0d1410,10,
-0x0d1440,1,
-0x0d1450,6,
-0x0d1484,6,
-0x0d14a0,6,
-0x0d1504,25,
-0x0d1580,14,
-0x0d15c0,4,
-0x0d1600,6,
-0x0d1620,6,
-0x0d1640,3,
-0x0d1660,6,
-0x0d1700,2,
-0x0d170c,3,
-0x0d1720,6,
-0x0d1800,11,
-0x0d1830,7,
-0x0d1850,7,
-0x0d1880,5,
-0x0d18a0,3,
-0x0d18c0,7,
-0x0d1a00,1,
-0x0d1a08,13,
-0x0d1a40,11,
-0x0d1c00,24,
-0x0d1c64,5,
-0x0d1c80,3,
-0x0d1c90,2,
-0x0d1d00,15,
-0x0d1d40,16,
-0x0d1d90,4,
-0x0d1dc0,12,
-0x0d1e00,1,
-0x0d1e20,1,
-0x0d1e28,12,
-0x0d1e5c,1,
-0x0d1e80,6,
-0x0d1f00,14,
-0x0d2000,2,
-0x0d200c,1,
-0x0d2020,13,
-0x0d2058,1,
-0x0d2060,6,
-0x0d2080,1,
-0x0d2100,2,
-0x0d210c,1,
-0x0d2120,13,
-0x0d2158,1,
-0x0d2160,6,
-0x0d2180,1,
-0x0d2200,2,
-0x0d220c,1,
-0x0d2220,13,
-0x0d2258,1,
-0x0d2260,6,
-0x0d2280,1,
-0x0d2300,2,
-0x0d230c,1,
-0x0d2320,13,
-0x0d2358,1,
-0x0d2360,6,
-0x0d2380,1,
-0x0d2400,3,
-0x0d2410,10,
-0x0d2440,1,
-0x0d2450,6,
-0x0d2484,6,
-0x0d24a0,6,
-0x0d2504,25,
-0x0d2580,14,
-0x0d25c0,4,
-0x0d2600,6,
-0x0d2620,6,
-0x0d2640,3,
-0x0d2660,6,
-0x0d2700,2,
-0x0d270c,3,
-0x0d2720,6,
-0x0d2800,11,
-0x0d2830,7,
-0x0d2850,7,
-0x0d2880,5,
-0x0d28a0,3,
-0x0d28c0,7,
-0x0d2a00,1,
-0x0d2a08,13,
-0x0d2a40,11,
-0x0d2c00,24,
-0x0d2c64,5,
-0x0d2c80,3,
-0x0d2c90,2,
-0x0d2d00,15,
-0x0d2d40,16,
-0x0d2d90,4,
-0x0d2dc0,12,
-0x0d3000,2,
-0x0d3400,1,
-0x0d3428,1,
-0x0d3450,1,
-0x0d3478,1,
-0x0d34a0,5,
-0x0d35ac,1,
-0x0d35d8,4,
-0x0d3600,6,
-0x0d3620,6,
-0x0d3640,3,
-0x0d3e00,3,
-0x0d3e20,6,
-0x0d3e40,6,
-0x0d3e80,3,
-0x0d3e90,2,
-0x0d4000,29,
-0x0d4078,4,
-0x0d4090,2,
-0x0d40a0,7,
-0x0d40c0,11,
-0x0d4100,14,
-0x0d4140,14,
-0x0d4180,61,
-0x0d4278,4,
-0x0d4290,2,
-0x0d42a0,7,
-0x0d42c0,11,
-0x0d4300,14,
-0x0d4340,14,
-0x0d4380,61,
-0x0d4478,4,
-0x0d4490,2,
-0x0d44a0,7,
-0x0d44c0,11,
-0x0d4500,14,
-0x0d4540,14,
-0x0d4580,61,
-0x0d4678,4,
-0x0d4690,2,
-0x0d46a0,7,
-0x0d46c0,11,
-0x0d4700,14,
-0x0d4740,14,
-0x0d4780,69,
-0x0d4c00,6,
-0x0d4c40,14,
-0x0d4c80,9,
-0x0d4d00,9,
-0x0d4d2c,1,
-0x0d4d40,3,
-0x0d4d60,1,
-0x0d4d80,3,
-0x0d4e00,2,
-0x0d4e0c,1,
-0x0d4e14,5,
-0x0d4e2c,1,
-0x0d4e34,5,
-0x0d4e4c,1,
-0x0d4e54,5,
-0x0d4e6c,1,
-0x0d4e74,5,
-0x0d4e8c,1,
-0x0d4e94,5,
-0x0d4eac,1,
-0x0d4eb4,3,
-0x0d6000,15,
-0x0d6070,3,
-0x0d6080,6,
-0x0d6100,9,
-0x0d6204,8,
-0x0d6240,13,
-0x0d6280,16,
-0x0d6400,8,
-0x0d6424,15,
-0x0d6464,15,
-0x0d64a4,15,
-0x0d64e4,30,
-0x0d6580,10,
-0x0d65ac,1,
-0x0d65b4,5,
-0x0d65cc,1,
-0x0d65d4,5,
-0x0d65ec,1,
-0x0d65f4,13,
-0x0d6680,4,
-0x0d6694,2,
-0x0d66a0,5,
-0x0d66c0,5,
-0x0d66e0,4,
-0x0d6800,19,
-0x0d6850,10,
-0x0d6880,19,
-0x0d68d0,10,
-0x0d6900,19,
-0x0d6950,10,
-0x0d6980,19,
-0x0d69d0,10,
-0x0d6a00,19,
-0x0d6a50,10,
-0x0d6a80,19,
-0x0d6ad0,10,
-0x0d6c00,19,
-0x0d6c60,6,
-0x0d6c84,1,
-0x0d6c94,8,
-0x0d6cb8,9,
-0x0d6ce0,4,
-0x0d7000,9,
-0x0d7040,16,
-0x0d8000,6,
-0x0d8020,3,
-0x0d8030,3,
-0x0d8040,6,
-0x0d8060,17,
-0x0d80c0,38,
-0x0d8180,2,
-0x0d8400,2,
-0x0d8428,2,
-0x0d8450,2,
-0x0d8478,2,
-0x0d84a0,16,
-0x0d85ac,1,
-0x0d85d8,4,
-0x0d8600,6,
-0x0d8620,6,
-0x0d8640,6,
-0x0d8660,6,
-0x0d8680,3,
-0x0d8800,2,
-0x0d9000,36,
-0x0d9100,26,
-0x0d916c,7,
-0x0d91a0,1,
-0x0d91c0,9,
-0x0d91e8,1,
-0x0d9200,6,
-0x0d9220,6,
-0x0d9248,4,
-0x0d9280,6,
-0x0d929c,1,
-0x0d92a4,2,
-0x0d92b8,9,
-0x0d9304,4,
-0x0d9328,3,
-0x0d9340,6,
-0x0d9400,1,
-0x0d9408,1,
-0x0d9410,2,
-0x0d9424,2,
-0x0d9444,1,
-0x0d9480,27,
-0x0d9500,6,
-0x0d9520,12,
-0x0d9700,7,
-0x0d9744,9,
-0x0d976c,2,
-0x0d9780,6,
-0x0d97a0,2,
-0x0d9800,36,
-0x0d9900,26,
-0x0d996c,7,
-0x0d99a0,1,
-0x0d99c0,9,
-0x0d99e8,1,
-0x0d9a00,6,
-0x0d9a20,6,
-0x0d9a48,4,
-0x0d9a80,6,
-0x0d9a9c,1,
-0x0d9aa4,2,
-0x0d9ab8,9,
-0x0d9b04,4,
-0x0d9b28,3,
-0x0d9b40,6,
-0x0d9c00,1,
-0x0d9c08,1,
-0x0d9c10,2,
-0x0d9c24,2,
-0x0d9c44,1,
-0x0d9c80,27,
-0x0d9d00,6,
-0x0d9d20,12,
-0x0d9f00,7,
-0x0d9f44,9,
-0x0d9f6c,2,
-0x0d9f80,6,
-0x0d9fa0,2,
-0x0db000,1028,
-0x0dc018,18,
-0x0dc100,4,
-0x0dc118,18,
-0x0dc200,12,
-0x0dc300,6,
-0x0dc320,5,
-0x0dc340,6,
-0x0dc360,5,
-0x0dc380,6,
-0x0dc400,9,
-0x0dc440,26,
-0x0dc4c4,1,
-0x0dc4cc,1,
-0x0dc4d4,1,
-0x0dc50c,7,
-0x0dc544,2,
-0x0dc55c,9,
-0x0dc584,7,
-0x0dc5a4,2,
-0x0dc5b8,2,
-0x0dc5c4,2,
-0x0dc5d8,2,
-0x0dc600,2,
-0x0dcfbc,15,
-0x0dd000,7,
-0x0dd020,6,
-0x0dd040,8,
-0x0dd104,1,
-0x0dd10c,1,
-0x0dd200,8,
-0x0dd244,2,
-0x0dd268,18,
-0x0dd404,1,
-0x0dd440,40,
-0x0dd504,3,
-0x0dd514,3,
-0x0dd524,3,
-0x0dd534,3,
-0x0dd544,3,
-0x0dd554,3,
-0x0dd564,3,
-0x0dd574,3,
-0x0dd584,3,
-0x0dd594,3,
-0x0dd5a4,3,
-0x0dd5b4,3,
-0x0dd604,2,
-0x0dd640,16,
-0x0dd684,3,
-0x0dd704,2,
-0x0dd740,18,
-0x0ddc00,4,
-0x0ddc80,1,
-0x0ddd00,6,
-0x0ddd20,6,
-0x0ddd40,6,
-0x0ddd80,1,
-0x0dde00,3,
-0x0dde20,10,
-0x0dde50,6,
-0x0dde80,9,
-0x0ddec0,16,
-0x0de000,135,
-0x0de300,2,
-0x0de30c,3,
-0x0de320,2,
-0x0de32c,3,
-0x0de340,2,
-0x0de34c,3,
-0x0de360,2,
-0x0de36c,3,
-0x0de380,2,
-0x0de38c,3,
-0x0de3a0,2,
-0x0de3ac,3,
-0x0de3c0,2,
-0x0de3cc,3,
-0x0de3e0,2,
-0x0de3ec,3,
-0x0de400,2,
-0x0de40c,3,
-0x0de420,2,
-0x0de42c,3,
-0x0de440,2,
-0x0de44c,3,
-0x0de460,2,
-0x0de46c,3,
-0x0de480,2,
-0x0de48c,3,
-0x0de4a0,2,
-0x0de4ac,3,
-0x0de4c0,2,
-0x0de4cc,3,
-0x0de4e0,2,
-0x0de4ec,3,
-0x0de500,135,
-0x0de800,2,
-0x0de80c,3,
-0x0de820,2,
-0x0de82c,3,
-0x0de840,2,
-0x0de84c,3,
-0x0de860,2,
-0x0de86c,3,
-0x0de880,2,
-0x0de88c,3,
-0x0de8a0,2,
-0x0de8ac,3,
-0x0de8c0,2,
-0x0de8cc,3,
-0x0de8e0,2,
-0x0de8ec,3,
-0x0de900,2,
-0x0de90c,3,
-0x0de920,2,
-0x0de92c,3,
-0x0de940,2,
-0x0de94c,3,
-0x0de960,2,
-0x0de96c,3,
-0x0de980,2,
-0x0de98c,3,
-0x0de9a0,2,
-0x0de9ac,3,
-0x0de9c0,2,
-0x0de9cc,3,
-0x0de9e0,2,
-0x0de9ec,3,
-0x0dea00,135,
-0x0ded00,2,
-0x0ded0c,3,
-0x0ded20,2,
-0x0ded2c,3,
-0x0ded40,2,
-0x0ded4c,3,
-0x0ded60,2,
-0x0ded6c,3,
-0x0ded80,2,
-0x0ded8c,3,
-0x0deda0,2,
-0x0dedac,3,
-0x0dedc0,2,
-0x0dedcc,3,
-0x0dede0,2,
-0x0dedec,3,
-0x0dee00,2,
-0x0dee0c,3,
-0x0dee20,2,
-0x0dee2c,3,
-0x0dee40,2,
-0x0dee4c,3,
-0x0dee60,2,
-0x0dee6c,3,
-0x0dee80,2,
-0x0dee8c,3,
-0x0deea0,2,
-0x0deeac,3,
-0x0deec0,2,
-0x0deecc,3,
-0x0deee0,2,
-0x0deeec,3,
-0x0def00,135,
-0x0df200,2,
-0x0df20c,3,
-0x0df220,2,
-0x0df22c,3,
-0x0df240,2,
-0x0df24c,3,
-0x0df260,2,
-0x0df26c,3,
-0x0df280,2,
-0x0df28c,3,
-0x0df2a0,2,
-0x0df2ac,3,
-0x0df2c0,2,
-0x0df2cc,3,
-0x0df2e0,2,
-0x0df2ec,3,
-0x0df300,2,
-0x0df30c,3,
-0x0df320,2,
-0x0df32c,3,
-0x0df340,2,
-0x0df34c,3,
-0x0df360,2,
-0x0df36c,3,
-0x0df380,2,
-0x0df38c,3,
-0x0df3a0,2,
-0x0df3ac,3,
-0x0df3c0,2,
-0x0df3cc,3,
-0x0df3e0,2,
-0x0df3ec,3,
-0x0df400,135,
-0x0df700,2,
-0x0df70c,3,
-0x0df720,2,
-0x0df72c,3,
-0x0df740,2,
-0x0df74c,3,
-0x0df760,2,
-0x0df76c,3,
-0x0df780,2,
-0x0df78c,3,
-0x0df7a0,2,
-0x0df7ac,3,
-0x0df7c0,2,
-0x0df7cc,3,
-0x0df7e0,2,
-0x0df7ec,3,
-0x0df800,2,
-0x0df80c,3,
-0x0df820,2,
-0x0df82c,3,
-0x0df840,2,
-0x0df84c,3,
-0x0df860,2,
-0x0df86c,3,
-0x0df880,2,
-0x0df88c,3,
-0x0df8a0,2,
-0x0df8ac,3,
-0x0df8c0,2,
-0x0df8cc,3,
-0x0df8e0,2,
-0x0df8ec,3,
-0x0df900,2,
-0x0e0000,3,
-0x0e0010,4,
-0x0e0028,3,
-0x0e0048,2,
-0x0e0058,2,
-0x0e0064,32,
-0x0e00f0,1,
-0x0e00fc,35,
-0x0e019c,15,
-0x0e01e0,1,
-0x0e01e8,5,
-0x0e0204,5,
-0x0e021c,1,
-0x0e0300,16,
-0x0e0400,3,
-0x0e0410,4,
-0x0e0428,3,
-0x0e0448,2,
-0x0e0458,2,
-0x0e0464,32,
-0x0e04f0,1,
-0x0e04fc,35,
-0x0e059c,15,
-0x0e05e0,1,
-0x0e05e8,5,
-0x0e0604,5,
-0x0e061c,1,
-0x0e0700,16,
-0x0e0800,3,
-0x0e0810,4,
-0x0e0828,3,
-0x0e0848,2,
-0x0e0858,2,
-0x0e0864,32,
-0x0e08f0,1,
-0x0e08fc,35,
-0x0e099c,15,
-0x0e09e0,1,
-0x0e09e8,5,
-0x0e0a04,5,
-0x0e0a1c,1,
-0x0e0b00,16,
-0x0e0c00,3,
-0x0e0c10,4,
-0x0e0c28,3,
-0x0e0c48,2,
-0x0e0c58,2,
-0x0e0c64,32,
-0x0e0cf0,1,
-0x0e0cfc,35,
-0x0e0d9c,15,
-0x0e0de0,1,
-0x0e0de8,5,
-0x0e0e04,5,
-0x0e0e1c,1,
-0x0e0f00,16,
-0x0e1000,3,
-0x0e1010,4,
-0x0e1028,3,
-0x0e1048,2,
-0x0e1058,2,
-0x0e1064,32,
-0x0e10f0,1,
-0x0e10fc,35,
-0x0e119c,15,
-0x0e11e0,1,
-0x0e11e8,5,
-0x0e1204,5,
-0x0e121c,1,
-0x0e1300,16,
-0x0e1400,3,
-0x0e1410,4,
-0x0e1428,3,
-0x0e1448,2,
-0x0e1458,2,
-0x0e1464,32,
-0x0e14f0,1,
-0x0e14fc,35,
-0x0e159c,15,
-0x0e15e0,1,
-0x0e15e8,5,
-0x0e1604,5,
-0x0e161c,1,
-0x0e1700,16,
-0x0e1800,3,
-0x0e1810,4,
-0x0e1828,3,
-0x0e1848,2,
-0x0e1858,2,
-0x0e1864,32,
-0x0e18f0,1,
-0x0e18fc,35,
-0x0e199c,15,
-0x0e19e0,1,
-0x0e19e8,5,
-0x0e1a04,5,
-0x0e1a1c,1,
-0x0e1b00,16,
-0x0e1c00,3,
-0x0e1c10,4,
-0x0e1c28,3,
-0x0e1c48,2,
-0x0e1c58,2,
-0x0e1c64,32,
-0x0e1cf0,1,
-0x0e1cfc,35,
-0x0e1d9c,15,
-0x0e1de0,1,
-0x0e1de8,5,
-0x0e1e04,5,
-0x0e1e1c,1,
-0x0e1f00,16,
-0x0e20c0,9,
-0x0e20ec,5,
-0x0e2108,3,
-0x0e2200,5,
-0x0e2218,36,
-0x0e2300,6,
-0x0e2330,4,
-0x0e2500,3,
-0x0e2510,12,
-0x0e26e0,6,
-0x0e2700,6,
-0x0e2720,6,
-0x0e2740,3,
-0x0e2780,6,
-0x0e27a0,6,
-0x0e27c0,3,
-0x0e2800,67,
-0x0e2a00,6,
-0x0e2a20,6,
-0x0e2a40,3,
-0x0e2a50,3,
-0x0e2a60,1,
-0x0e2a80,17,
-0x0e3020,10,
-0x0e3070,2,
-0x0e3080,2,
-0x0e308c,1,
-0x0e3440,21,
-0x0e34e4,13,
-0x0e3520,6,
-0x0e3540,6,
-0x0e3560,6,
-0x0e3580,6,
-0x0e35a0,6,
-0x0e35c0,6,
-0x0e35e0,6,
-0x0e3600,16,
-0x0e3804,3,
-0x0e3900,33,
-0x0e3a00,6,
-0x0e3a20,2,
-0x0e3a30,1,
-0x0e3a40,8,
-0x0e3a64,5,
-0x0e3c00,1,
-0x0e3c28,1,
-0x0e3c50,1,
-0x0e3c78,1,
-0x0e3ca0,2,
-0x0e3dac,1,
-0x0e3dd8,4,
-0x0e3e00,6,
-0x0e3e20,6,
-0x0e3e40,3,
-0x0e4010,12,
-0x0e4044,3,
-0x0e4084,2,
-0x0e40bc,84,
-0x0e4240,18,
-0x0e45f0,4,
-0x0e4604,1,
-0x0e4640,16,
-0x0e46f0,4,
-0x0e4704,1,
-0x0e4740,16,
-0x0e5000,8,
-0x0e6000,9,
-0x0e6040,16,
-0x0e8000,9,
-0x0e8080,6,
-0x0e80a0,3,
-0x0f0000,3,
-0x0f0014,11,
-0x0f004c,3,
-0x0f0060,8,
-0x0f00f0,3,
-0x0f0100,1,
-0x0f010c,2,
-0x0f0118,1,
-0x0f0130,4,
-0x0f01a8,1,
-0x0f01c0,2,
-0x0f01d0,10,
-0x0f0200,62,
-0x0f0404,9,
-0x0f0440,8,
-0x0f0480,5,
-0x0f04b8,21,
-0x0f0520,1,
-0x0f0528,1,
-0x0f0540,2,
-0x0f0580,4,
-0x0f05a0,1,
-0x0f05c0,8,
-0x0f0800,17,
-0x0f0850,9,
-0x0f0880,9,
-0x0f0920,4,
-0x0f093c,5,
-0x0f095c,5,
-0x0f097c,5,
-0x0f099c,1,
-0x0f0a90,3,
-0x0f0c00,128,
-0x0f0e04,1,
-0x0f0e14,9,
-0x0f0e3c,1,
-0x0f1000,16,
-0x0f1080,10,
-0x0f10c0,1,
-0x0f10e0,2,
-0x0f10ec,1,
-0x0f10f4,3,
-0x0f1400,6,
-0x0f1420,6,
-0x0f1440,6,
-0x0f1460,6,
-0x0f1480,6,
-0x0f14a0,6,
-0x0f14c0,6,
-0x0f14e0,6,
-0x0f1500,6,
-0x0f1520,6,
-0x0f1540,6,
-0x0f1560,6,
-0x0f1580,6,
-0x0f15a0,3,
-0x0f1800,3,
-0x0f1840,4,
-0x0f1854,3,
-0x0f1864,3,
-0x0f1874,3,
-0x0f2000,2,
-0x0f200c,3,
-0x0f2020,10,
-0x0f2060,6,
-0x0f2080,2,
-0x0f208c,3,
-0x0f20a0,10,
-0x0f20e0,6,
-0x0f2100,2,
-0x0f210c,3,
-0x0f2120,10,
-0x0f2160,6,
-0x0f2180,2,
-0x0f218c,3,
-0x0f21a0,10,
-0x0f21e0,6,
-0x0f2200,2,
-0x0f220c,3,
-0x0f2220,10,
-0x0f2260,6,
-0x0f2280,2,
-0x0f228c,3,
-0x0f22a0,10,
-0x0f22e0,6,
-0x0f2300,2,
-0x0f230c,3,
-0x0f2320,10,
-0x0f2360,6,
-0x0f2380,2,
-0x0f238c,3,
-0x0f23a0,10,
-0x0f23e0,6,
-0x0f2400,2,
-0x0f240c,3,
-0x0f2420,10,
-0x0f2460,6,
-0x0f2480,2,
-0x0f248c,3,
-0x0f24a0,10,
-0x0f24e0,6,
-0x0f2500,2,
-0x0f250c,3,
-0x0f2520,10,
-0x0f2560,6,
-0x0f2580,2,
-0x0f258c,3,
-0x0f25a0,10,
-0x0f25e0,6,
-0x0f2600,2,
-0x0f260c,3,
-0x0f2620,10,
-0x0f2660,6,
-0x0f2680,2,
-0x0f268c,3,
-0x0f26a0,10,
-0x0f26e0,6,
-0x0f2700,2,
-0x0f270c,3,
-0x0f2720,10,
-0x0f2760,6,
-0x0f2780,2,
-0x0f278c,3,
-0x0f27a0,10,
-0x0f27e0,6,
-0x0f2800,2,
-0x0f280c,3,
-0x0f2820,10,
-0x0f2860,6,
-0x0f2880,2,
-0x0f288c,3,
-0x0f28a0,10,
-0x0f28e0,6,
-0x0f2900,2,
-0x0f290c,3,
-0x0f2920,10,
-0x0f2960,6,
-0x0f2980,2,
-0x0f298c,3,
-0x0f29a0,10,
-0x0f29e0,6,
-0x0f4000,7,
-0x0f4020,4,
-0x0f4204,1,
-0x0f4280,35,
-0x0f4310,4,
-0x0f4404,1,
-0x0f4480,34,
-0x0f4510,10,
-0x0f453c,3,
-0x0f4800,7,
-0x0f4820,4,
-0x0f4a04,1,
-0x0f4a80,35,
-0x0f4b10,4,
-0x0f4c04,1,
-0x0f4c80,34,
-0x0f4d10,10,
-0x0f4d3c,3,
-0x0f5000,7,
-0x0f5020,4,
-0x0f5204,1,
-0x0f5280,35,
-0x0f5310,4,
-0x0f5404,1,
-0x0f5480,34,
-0x0f5510,10,
-0x0f553c,3,
-0x0f5800,7,
-0x0f5820,4,
-0x0f5a04,1,
-0x0f5a80,35,
-0x0f5b10,4,
-0x0f5c04,1,
-0x0f5c80,34,
-0x0f5d10,10,
-0x0f5d3c,3,
-0x100000,1,
-0x100008,1,
-0x100010,2,
-0x100020,1,
-0x100028,1,
-0x100030,2,
-0x100040,1,
-0x100048,1,
-0x100050,2,
-0x100060,1,
-0x100068,1,
-0x100070,2,
-0x100080,21,
-0x1000d8,2,
-0x100100,21,
-0x100158,2,
-0x100180,21,
-0x1001d8,2,
-0x100200,21,
-0x100258,2,
-0x100284,1,
-0x1003b0,5,
-0x100400,13,
-0x100440,13,
-0x100480,13,
-0x1004c0,13,
-0x100500,68,
-0x100618,1,
-0x100804,1,
-0x10080c,4,
-0x100820,9,
-0x1008a0,24,
-0x100920,24,
-0x100a00,48,
-0x100adc,68,
-0x100d00,1,
-0x100d08,2,
-0x100d80,4,
-0x100e00,4,
-0x100e20,1,
-0x100e28,7,
-0x100e48,7,
-0x100e68,7,
-0x100e88,6,
-0x100ebc,9,
-0x100f00,6,
-0x100f1c,10,
-0x100f70,8,
-0x100f94,4,
-0x101404,1,
-0x10141c,26,
-0x101504,1,
-0x10151c,30,
-0x101600,1,
-0x101628,6,
-0x101648,6,
-0x101680,16,
-0x1016e0,16,
-0x101780,2,
-0x101790,16,
-0x101a00,14,
-0x101a3c,4,
-0x101a50,2,
-0x101a60,2,
-0x101a70,2,
-0x101a80,2,
-0x101a90,1,
-0x101a9c,11,
-0x101b0c,5,
-0x101c00,34,
-0x101d00,3,
-0x102000,1,
-0x102028,1,
-0x102050,1,
-0x102078,1,
-0x1020a0,5,
-0x1021ac,1,
-0x1021d8,4,
-0x102200,6,
-0x102220,6,
-0x102240,3,
-0x102560,1,
-0x102584,10,
-0x1025b0,1,
-0x1025fc,1,
-0x102604,1,
-0x1026ec,69,
-0x103000,32,
-0x103084,5,
-0x1030f8,3,
-0x103108,3,
-0x103118,7,
-0x103144,1,
-0x103160,10,
-0x103200,32,
-0x103284,5,
-0x1032f8,3,
-0x103308,3,
-0x103318,7,
-0x103344,1,
-0x103360,10,
-0x103400,32,
-0x103484,5,
-0x1034f8,3,
-0x103508,3,
-0x103518,7,
-0x103544,1,
-0x103560,10,
-0x103600,32,
-0x103684,5,
-0x1036f8,3,
-0x103708,3,
-0x103718,7,
-0x103744,1,
-0x103760,10,
-0x103800,1,
-0x10380c,1,
-0x10397c,97,
-0x104000,3,
-0x104020,3,
-0x104040,3,
-0x104060,3,
-0x104084,1,
-0x104090,4,
-0x1040a4,1,
-0x1040b0,4,
-0x1040c4,1,
-0x1040d0,4,
-0x1040e4,1,
-0x1040f0,21,
-0x104148,18,
-0x1041f0,4,
-0x104204,3,
-0x104308,9,
-0x104330,2,
-0x104340,16,
-0x1043b4,4,
-0x1043c8,4,
-0x1043dc,4,
-0x1043f0,4,
-0x104404,1,
-0x104470,36,
-0x104504,1,
-0x104570,36,
-0x104604,1,
-0x104670,36,
-0x104704,1,
-0x104770,50,
-0x104840,2,
-0x10484c,1,
-0x104900,1,
-0x104908,1,
-0x104984,1,
-0x1049a0,24,
-0x104a04,7,
-0x104a24,7,
-0x104a44,7,
-0x104a64,7,
-0x104a84,7,
-0x104aa4,7,
-0x104ac4,7,
-0x104ae4,16,
-0x104b40,16,
-0x104c00,6,
-0x104c20,6,
-0x104c40,6,
-0x104c60,6,
-0x104c80,6,
-0x104ca0,6,
-0x104cc0,6,
-0x104ce0,6,
-0x104d00,3,
-0x104d20,6,
-0x104d40,6,
-0x105000,448,
-0x105704,3,
-0x105734,1,
-0x106000,62,
-0x106100,35,
-0x1061c0,6,
-0x1061e0,6,
-0x106200,6,
-0x106220,6,
-0x106240,6,
-0x106260,6,
-0x106280,6,
-0x1062a0,6,
-0x1062c0,6,
-0x1062e0,6,
-0x106300,6,
-0x106320,6,
-0x106340,6,
-0x106360,6,
-0x106380,6,
-0x1063a0,6,
-0x107010,1,
-0x110000,7,
-0x110020,7,
-0x110040,5,
-0x110060,6,
-0x110080,5,
-0x110098,1,
-0x1100a0,4,
-0x1100b8,8,
-0x1100e0,6,
-0x110200,7,
-0x110220,7,
-0x110240,5,
-0x110260,6,
-0x110280,5,
-0x110298,1,
-0x1102a0,4,
-0x1102b8,8,
-0x1102e0,6,
-0x110400,7,
-0x110420,7,
-0x110440,5,
-0x110460,6,
-0x110480,5,
-0x110498,1,
-0x1104a0,4,
-0x1104b8,8,
-0x1104e0,6,
-0x110600,7,
-0x110620,7,
-0x110640,5,
-0x110660,6,
-0x110680,5,
-0x110698,1,
-0x1106a0,4,
-0x1106b8,8,
-0x1106e0,6,
-0x110800,21,
-0x110880,15,
-0x1108c0,3,
-0x1108d0,2,
-0x110900,1,
-0x111000,1,
-0x111028,1,
-0x111050,1,
-0x111078,1,
-0x1110a0,5,
-0x1111ac,1,
-0x1111d8,4,
-0x111200,6,
-0x111220,6,
-0x111240,3,
-0x111400,6,
-0x111420,3,
-0x111480,9,
-0x1114c0,25,
-0x111540,25,
-0x1115c0,25,
-0x111640,20,
-0x118000,29,
-0x118078,4,
-0x118090,2,
-0x1180a0,7,
-0x1180c0,11,
-0x118100,14,
-0x118140,14,
-0x118180,61,
-0x118278,4,
-0x118290,2,
-0x1182a0,7,
-0x1182c0,11,
-0x118300,14,
-0x118340,14,
-0x118380,61,
-0x118478,4,
-0x118490,2,
-0x1184a0,7,
-0x1184c0,11,
-0x118500,14,
-0x118540,14,
-0x118580,61,
-0x118678,4,
-0x118690,2,
-0x1186a0,7,
-0x1186c0,11,
-0x118700,14,
-0x118740,14,
-0x118780,69,
-0x118c00,6,
-0x118c40,14,
-0x118c80,9,
-0x118d00,9,
-0x118d2c,1,
-0x118d40,3,
-0x118d60,1,
-0x118d80,3,
-0x118e00,2,
-0x118e0c,1,
-0x118e14,5,
-0x118e2c,1,
-0x118e34,5,
-0x118e4c,1,
-0x118e54,5,
-0x118e6c,1,
-0x118e74,5,
-0x118e8c,1,
-0x118e94,5,
-0x118eac,1,
-0x118eb4,3,
-0x119000,29,
-0x119078,4,
-0x119090,2,
-0x1190a0,7,
-0x1190c0,11,
-0x119100,14,
-0x119140,14,
-0x119180,61,
-0x119278,4,
-0x119290,2,
-0x1192a0,7,
-0x1192c0,11,
-0x119300,14,
-0x119340,14,
-0x119380,61,
-0x119478,4,
-0x119490,2,
-0x1194a0,7,
-0x1194c0,11,
-0x119500,14,
-0x119540,14,
-0x119580,61,
-0x119678,4,
-0x119690,2,
-0x1196a0,7,
-0x1196c0,11,
-0x119700,14,
-0x119740,14,
-0x119780,69,
-0x119c00,6,
-0x119c40,14,
-0x119c80,9,
-0x119d00,9,
-0x119d2c,1,
-0x119d40,3,
-0x119d60,1,
-0x119d80,3,
-0x119e00,2,
-0x119e0c,1,
-0x119e14,5,
-0x119e2c,1,
-0x119e34,5,
-0x119e4c,1,
-0x119e54,5,
-0x119e6c,1,
-0x119e74,5,
-0x119e8c,1,
-0x119e94,5,
-0x119eac,1,
-0x119eb4,3,
-0x11c000,19,
-0x11c050,10,
-0x11c080,19,
-0x11c0d0,10,
-0x11c100,19,
-0x11c150,10,
-0x11c180,19,
-0x11c1d0,10,
-0x11c200,19,
-0x11c250,10,
-0x11c280,19,
-0x11c2d0,10,
-0x11c300,19,
-0x11c350,10,
-0x11c380,19,
-0x11c3d0,10,
-0x11c400,19,
-0x11c460,6,
-0x11c484,1,
-0x11c494,8,
-0x11c4b8,9,
-0x11c4e0,4,
-0x11c500,3,
-0x11d000,7,
-0x11d020,15,
-0x11d060,15,
-0x11d0a0,15,
-0x11d0e0,15,
-0x11d120,15,
-0x11d160,15,
-0x11d1a0,15,
-0x11d1e0,8,
-0x11d400,9,
-0x11d428,3,
-0x11d440,5,
-0x11d480,9,
-0x11d4a8,3,
-0x11d4c0,5,
-0x11d500,9,
-0x11d528,3,
-0x11d540,5,
-0x11d580,9,
-0x11d5a8,3,
-0x11d5c0,5,
-0x11d600,6,
-0x11d620,6,
-0x11d640,6,
-0x11d660,6,
-0x11d680,6,
-0x11d6a0,6,
-0x11d6c0,6,
-0x11d6e0,6,
-0x11d708,2,
-0x11d718,4,
-0x11d734,1,
-0x11d73c,4,
-0x11d750,4,
-0x11d764,1,
-0x11d76c,2,
-0x11d800,8,
-0x11d840,8,
-0x11d880,8,
-0x11d8c0,8,
-0x11d900,8,
-0x11d940,8,
-0x11d988,4,
-0x11da00,3,
-0x11da18,2,
-0x11da24,16,
-0x11da80,3,
-0x11da98,2,
-0x11daa4,16,
-0x11db00,3,
-0x11db18,2,
-0x11db24,16,
-0x11db80,3,
-0x11db98,2,
-0x11dba4,16,
-0x11dc00,8,
-0x11dc40,1,
-0x11e000,72,
-0x11e200,72,
-0x11e400,72,
-0x11e600,72,
-0x11e800,6,
-0x11e820,6,
-0x11e840,6,
-0x11e860,6,
-0x11e880,6,
-0x11e8a0,6,
-0x11e8c0,6,
-0x11e8e0,6,
-0x11e900,6,
-0x11e920,6,
-0x11e940,6,
-0x11e9fc,7,
-0x11ea20,6,
-0x11ea40,6,
-0x11ea60,6,
-0x11ea80,6,
-0x11eaa0,6,
-0x11eac0,6,
-0x11eae0,6,
-0x11eb00,6,
-0x11eb20,6,
-0x11eb40,6,
-0x11ebfc,7,
-0x11ec20,6,
-0x11ec40,6,
-0x11ec60,6,
-0x11ec80,6,
-0x11eca0,6,
-0x11ecc0,6,
-0x11ece0,6,
-0x11ed00,6,
-0x11ed20,6,
-0x11ed40,6,
-0x11edfc,7,
-0x11ee20,6,
-0x11ee40,6,
-0x11ee60,6,
-0x11ee80,6,
-0x11eea0,6,
-0x11eec0,6,
-0x11eee0,6,
-0x11ef00,6,
-0x11ef20,6,
-0x11ef40,6,
-0x11effc,15,
-0x11f040,2,
-0x11f080,14,
-0x11f0c0,2,
-0x11f100,14,
-0x11f140,2,
-0x11f180,14,
-0x11f1c0,2,
-0x11f400,17,
-0x11f448,5,
-0x11f460,3,
-0x11f470,3,
-0x11f480,16,
-0x11f500,17,
-0x11f548,5,
-0x11f560,3,
-0x11f570,3,
-0x11f580,16,
-0x11f600,17,
-0x11f648,5,
-0x11f660,3,
-0x11f670,3,
-0x11f680,16,
-0x11f700,17,
-0x11f748,5,
-0x11f760,3,
-0x11f770,3,
-0x11f780,16,
-0x11f800,8,
-0x11f824,15,
-0x11f864,15,
-0x11f8a4,15,
-0x11f8e4,30,
-0x11f980,10,
-0x11f9ac,1,
-0x11f9b4,5,
-0x11f9cc,1,
-0x11f9d4,5,
-0x11f9ec,1,
-0x11f9f4,13,
-0x11fa80,4,
-0x11fa94,2,
-0x11faa0,5,
-0x11fac0,5,
-0x11fae0,4,
-0x11fc04,8,
-0x11fc40,13,
-0x11fd00,6,
-0x11fd20,3,
-0x11fd30,3,
-0x11fd44,1,
-0x11fd4c,1,
-0x11fd54,1,
-0x11fd5c,8,
-0x11fd80,11,
-0x11fdc0,3,
diff --git a/mstdump/mstdump_dbs/InfiniScaleIV.csv b/mstdump/mstdump_dbs/InfiniScaleIV.csv
deleted file mode 100755 (executable)
index 61b145d..0000000
+++ /dev/null
@@ -1,14584 +0,0 @@
-# addr, size, enable addr
-0x0f3c0c,1,UNKNOWN
-0x0f3c08,1,UNKNOWN
-0x0f3c04,1,UNKNOWN
-0x0f3c00,1,UNKNOWN
-0x0f3bf8,1,UNKNOWN
-0x0f3bf4,1,UNKNOWN
-0x0f3bf0,1,UNKNOWN
-0x0f3b54,1,UNKNOWN
-0x0f3b50,1,UNKNOWN
-0x0f3b40,1,UNKNOWN
-0x0f3b28,1,UNKNOWN
-0x0f3b1c,1,UNKNOWN
-0x0f3b18,1,UNKNOWN
-0x0f3b0c,1,UNKNOWN
-0x0f3b00,1,UNKNOWN
-0x0f3a8c,1,UNKNOWN
-0x0f3a88,1,UNKNOWN
-0x0f3a84,1,UNKNOWN
-0x0f3a74,1,UNKNOWN
-0x0f3a70,1,UNKNOWN
-0x0f3a60,1,UNKNOWN
-0x0f3a40,1,UNKNOWN
-0x0f3a3c,1,UNKNOWN
-0x0f3a38,1,UNKNOWN
-0x0f3a34,1,UNKNOWN
-0x0f3a2c,1,UNKNOWN
-0x0f3a28,1,UNKNOWN
-0x0f3a24,1,UNKNOWN
-0x0f3a1c,1,UNKNOWN
-0x0f3a18,1,UNKNOWN
-0x0f3a14,1,UNKNOWN
-0x0f3a10,1,UNKNOWN
-0x0f3a08,1,UNKNOWN
-0x0f3a04,1,UNKNOWN
-0x0f3a00,1,UNKNOWN
-0x0f39bc,1,UNKNOWN
-0x0f39b8,1,UNKNOWN
-0x0f39b4,1,UNKNOWN
-0x0f39b0,1,UNKNOWN
-0x0f39a0,1,UNKNOWN
-0x0f399c,1,UNKNOWN
-0x0f3998,1,UNKNOWN
-0x0f3990,1,UNKNOWN
-0x0f398c,1,UNKNOWN
-0x0f3988,1,UNKNOWN
-0x0f3984,1,UNKNOWN
-0x0f3980,1,UNKNOWN
-0x0f397c,1,UNKNOWN
-0x0f3978,1,UNKNOWN
-0x0f3974,1,UNKNOWN
-0x0f3970,1,UNKNOWN
-0x0f396c,1,UNKNOWN
-0x0f3968,1,UNKNOWN
-0x0f3964,1,UNKNOWN
-0x0f3960,1,UNKNOWN
-0x0f395c,1,UNKNOWN
-0x0f3958,1,UNKNOWN
-0x0f3954,1,UNKNOWN
-0x0f3950,1,UNKNOWN
-0x0f394c,1,UNKNOWN
-0x0f3948,1,UNKNOWN
-0x0f3944,1,UNKNOWN
-0x0f3940,1,UNKNOWN
-0x0f393c,1,UNKNOWN
-0x0f3938,1,UNKNOWN
-0x0f3934,1,UNKNOWN
-0x0f3930,1,UNKNOWN
-0x0f392c,1,UNKNOWN
-0x0f3928,1,UNKNOWN
-0x0f3920,1,UNKNOWN
-0x0f390c,1,UNKNOWN
-0x0f3908,1,UNKNOWN
-0x0f3900,1,UNKNOWN
-0x0f38fc,1,UNKNOWN
-0x0f38f8,1,UNKNOWN
-0x0f38c0,1,UNKNOWN
-0x0f38b4,1,UNKNOWN
-0x0f38b0,1,UNKNOWN
-0x0f38a0,1,UNKNOWN
-0x0f389c,1,UNKNOWN
-0x0f3898,1,UNKNOWN
-0x0f3894,1,UNKNOWN
-0x0f3890,1,UNKNOWN
-0x0f388c,1,UNKNOWN
-0x0f3888,1,UNKNOWN
-0x0f3884,1,UNKNOWN
-0x0f3880,1,UNKNOWN
-0x0f386c,1,UNKNOWN
-0x0f3868,1,UNKNOWN
-0x0f3864,1,UNKNOWN
-0x0f3860,1,UNKNOWN
-0x0f385c,1,UNKNOWN
-0x0f3858,1,UNKNOWN
-0x0f3854,1,UNKNOWN
-0x0f3850,1,UNKNOWN
-0x0f384c,1,UNKNOWN
-0x0f3848,1,UNKNOWN
-0x0f3844,1,UNKNOWN
-0x0f3840,1,UNKNOWN
-0x0f383c,1,UNKNOWN
-0x0f3838,1,UNKNOWN
-0x0f3834,1,UNKNOWN
-0x0f3830,1,UNKNOWN
-0x0f382c,1,UNKNOWN
-0x0f3828,1,UNKNOWN
-0x0f3824,1,UNKNOWN
-0x0f3820,1,UNKNOWN
-0x0f381c,1,UNKNOWN
-0x0f3814,1,UNKNOWN
-0x0f3810,1,UNKNOWN
-0x0f3808,1,UNKNOWN
-0x0f3804,1,UNKNOWN
-0x0f3800,1,UNKNOWN
-0x0f37bc,1,UNKNOWN
-0x0f37b8,1,UNKNOWN
-0x0f37b4,1,UNKNOWN
-0x0f37b0,1,UNKNOWN
-0x0f37ac,1,UNKNOWN
-0x0f3794,1,UNKNOWN
-0x0f3790,1,UNKNOWN
-0x0f3780,1,UNKNOWN
-0x0f3774,1,UNKNOWN
-0x0f3770,1,UNKNOWN
-0x0f3760,1,UNKNOWN
-0x0f3738,1,UNKNOWN
-0x0f3734,1,UNKNOWN
-0x0f3730,1,UNKNOWN
-0x0f372c,1,UNKNOWN
-0x0f3728,1,UNKNOWN
-0x0f3724,1,UNKNOWN
-0x0f3720,1,UNKNOWN
-0x0f371c,1,UNKNOWN
-0x0f3718,1,UNKNOWN
-0x0f3714,1,UNKNOWN
-0x0f3710,1,UNKNOWN
-0x0f370c,1,UNKNOWN
-0x0f3704,1,UNKNOWN
-0x0f35e8,1,UNKNOWN
-0x0f35e4,1,UNKNOWN
-0x0f35e0,1,UNKNOWN
-0x0f35dc,1,UNKNOWN
-0x0f35d8,1,UNKNOWN
-0x0f35d4,1,UNKNOWN
-0x0f35d0,1,UNKNOWN
-0x0f35cc,1,UNKNOWN
-0x0f35b4,1,UNKNOWN
-0x0f35b0,1,UNKNOWN
-0x0f35a0,1,UNKNOWN
-0x0f359c,1,UNKNOWN
-0x0f3598,1,UNKNOWN
-0x0f3594,1,UNKNOWN
-0x0f3590,1,UNKNOWN
-0x0f358c,1,UNKNOWN
-0x0f3588,1,UNKNOWN
-0x0f3584,1,UNKNOWN
-0x0f3580,1,UNKNOWN
-0x0f3578,1,UNKNOWN
-0x0f3574,1,UNKNOWN
-0x0f3560,1,UNKNOWN
-0x0f355c,1,UNKNOWN
-0x0f3558,1,UNKNOWN
-0x0f3554,1,UNKNOWN
-0x0f354c,1,UNKNOWN
-0x0f3548,1,UNKNOWN
-0x0f3534,1,UNKNOWN
-0x0f3530,1,UNKNOWN
-0x0f352c,1,UNKNOWN
-0x0f3528,1,UNKNOWN
-0x0f3524,1,UNKNOWN
-0x0f3520,1,UNKNOWN
-0x0f351c,1,UNKNOWN
-0x0f3518,1,UNKNOWN
-0x0f3514,1,UNKNOWN
-0x0f3510,1,UNKNOWN
-0x0f350c,1,UNKNOWN
-0x0f3504,1,UNKNOWN
-0x0f3500,1,UNKNOWN
-0x0f347c,1,UNKNOWN
-0x0f3478,1,UNKNOWN
-0x0f3474,1,UNKNOWN
-0x0f3470,1,UNKNOWN
-0x0f346c,1,UNKNOWN
-0x0f3468,1,UNKNOWN
-0x0f3464,1,UNKNOWN
-0x0f3460,1,UNKNOWN
-0x0f345c,1,UNKNOWN
-0x0f3458,1,UNKNOWN
-0x0f3454,1,UNKNOWN
-0x0f3450,1,UNKNOWN
-0x0f344c,1,UNKNOWN
-0x0f3448,1,UNKNOWN
-0x0f3444,1,UNKNOWN
-0x0f3440,1,UNKNOWN
-0x0f343c,1,UNKNOWN
-0x0f3438,1,UNKNOWN
-0x0f3434,1,UNKNOWN
-0x0f3430,1,UNKNOWN
-0x0f342c,1,UNKNOWN
-0x0f3428,1,UNKNOWN
-0x0f3424,1,UNKNOWN
-0x0f3420,1,UNKNOWN
-0x0f341c,1,UNKNOWN
-0x0f3418,1,UNKNOWN
-0x0f3414,1,UNKNOWN
-0x0f3410,1,UNKNOWN
-0x0f340c,1,UNKNOWN
-0x0f3408,1,UNKNOWN
-0x0f3404,1,UNKNOWN
-0x0f3400,1,UNKNOWN
-0x0f3330,1,UNKNOWN
-0x0f3328,1,UNKNOWN
-0x0f3324,1,UNKNOWN
-0x0f3320,1,UNKNOWN
-0x0f331c,1,UNKNOWN
-0x0f3318,1,UNKNOWN
-0x0f3314,1,UNKNOWN
-0x0f3310,1,UNKNOWN
-0x0f330c,1,UNKNOWN
-0x0f3308,1,UNKNOWN
-0x0f3304,1,UNKNOWN
-0x0f3300,1,UNKNOWN
-0x0f32ec,1,UNKNOWN
-0x0f32ac,1,UNKNOWN
-0x0f32a8,1,UNKNOWN
-0x0f32a4,1,UNKNOWN
-0x0f32a0,1,UNKNOWN
-0x0f329c,1,UNKNOWN
-0x0f3298,1,UNKNOWN
-0x0f3294,1,UNKNOWN
-0x0f3290,1,UNKNOWN
-0x0f3284,1,UNKNOWN
-0x0f3280,1,UNKNOWN
-0x0f3274,1,UNKNOWN
-0x0f3270,1,UNKNOWN
-0x0f326c,1,UNKNOWN
-0x0f3268,1,UNKNOWN
-0x0f3264,1,UNKNOWN
-0x0f3258,1,UNKNOWN
-0x0f3254,1,UNKNOWN
-0x0f3250,1,UNKNOWN
-0x0f324c,1,UNKNOWN
-0x0f3248,1,UNKNOWN
-0x0f3244,1,UNKNOWN
-0x0f3220,1,UNKNOWN
-0x0f321c,1,UNKNOWN
-0x0f3218,1,UNKNOWN
-0x0f3214,1,UNKNOWN
-0x0f3210,1,UNKNOWN
-0x0f3204,1,UNKNOWN
-0x0f31bc,1,UNKNOWN
-0x0f31b4,1,UNKNOWN
-0x0f31b0,1,UNKNOWN
-0x0f31ac,1,UNKNOWN
-0x0f31a8,1,UNKNOWN
-0x0f31a4,1,UNKNOWN
-0x0f31a0,1,UNKNOWN
-0x0f319c,1,UNKNOWN
-0x0f3198,1,UNKNOWN
-0x0f3194,1,UNKNOWN
-0x0f3190,1,UNKNOWN
-0x0f318c,1,UNKNOWN
-0x0f3188,1,UNKNOWN
-0x0f3184,1,UNKNOWN
-0x0f3140,1,UNKNOWN
-0x0f313c,1,UNKNOWN
-0x0f3138,1,UNKNOWN
-0x0f3134,1,UNKNOWN
-0x0f3130,1,UNKNOWN
-0x0f3124,1,UNKNOWN
-0x0f3120,1,UNKNOWN
-0x0f310c,1,UNKNOWN
-0x0f3100,1,UNKNOWN
-0x0f30f0,1,UNKNOWN
-0x0f30ec,1,UNKNOWN
-0x0f30e8,1,UNKNOWN
-0x0f30e4,1,UNKNOWN
-0x0f30e0,1,UNKNOWN
-0x0f30dc,1,UNKNOWN
-0x0f30d8,1,UNKNOWN
-0x0f30d4,1,UNKNOWN
-0x0f30d0,1,UNKNOWN
-0x0f30cc,1,UNKNOWN
-0x0f30c8,1,UNKNOWN
-0x0f30c4,1,UNKNOWN
-0x0f30c0,1,UNKNOWN
-0x0f30ac,1,UNKNOWN
-0x0f30a8,1,UNKNOWN
-0x0f30a4,1,UNKNOWN
-0x0f30a0,1,UNKNOWN
-0x0f309c,1,UNKNOWN
-0x0f3098,1,UNKNOWN
-0x0f3094,1,UNKNOWN
-0x0f3090,1,UNKNOWN
-0x0f308c,1,UNKNOWN
-0x0f3088,1,UNKNOWN
-0x0f3084,1,UNKNOWN
-0x0f3080,1,UNKNOWN
-0x0f307c,1,UNKNOWN
-0x0f3078,1,UNKNOWN
-0x0f3070,1,UNKNOWN
-0x0f306c,1,UNKNOWN
-0x0f3068,1,UNKNOWN
-0x0f3064,1,UNKNOWN
-0x0f3060,1,UNKNOWN
-0x0f305c,1,UNKNOWN
-0x0f3058,1,UNKNOWN
-0x0f3050,1,UNKNOWN
-0x0f304c,1,UNKNOWN
-0x0f3048,1,UNKNOWN
-0x0f3044,1,UNKNOWN
-0x0f3040,1,UNKNOWN
-0x0f3030,1,UNKNOWN
-0x0f302c,1,UNKNOWN
-0x0f3028,1,UNKNOWN
-0x0f3024,1,UNKNOWN
-0x0f3020,1,UNKNOWN
-0x0f301c,1,UNKNOWN
-0x0f3014,1,UNKNOWN
-0x0f3010,1,UNKNOWN
-0x0f300c,1,UNKNOWN
-0x0f3008,1,UNKNOWN
-0x0f3004,1,UNKNOWN
-0x0f3000,1,UNKNOWN
-0x0f04d4,1,
-0x0f04d0,1,
-0x0f04cc,1,
-0x0f04c8,1,
-0x0f04c4,1,
-0x0f04c0,1,
-0x0f04bc,1,
-0x0f04b8,1,
-0x0f04b4,1,
-0x0f04b0,1,
-0x0f04ac,1,
-0x0f04a8,1,
-0x0f04a4,1,
-0x0f04a0,1,
-0x0f049c,1,
-0x0f0498,1,
-0x0f0494,1,
-0x0f0490,1,
-0x0f048c,1,
-0x0f0488,1,
-0x0f0484,1,
-0x0f0480,1,
-0x0f0434,1,
-0x0f0430,1,
-0x0f042c,1,
-0x0f0428,1,
-0x0f0424,1,
-0x0f0420,1,
-0x0f041c,1,
-0x0f0418,1,
-0x0f0414,1,
-0x0f0410,1,
-0x0f0408,1,
-0x0f0404,1,
-0x0f02fc,1,
-0x0f02f8,1,
-0x0f02f4,1,
-0x0f02f0,1,
-0x0f02ec,1,
-0x0f02e8,1,
-0x0f02e4,1,
-0x0f02e0,1,
-0x0f02cc,1,
-0x0f02c8,1,
-0x0f02c4,1,
-0x0f02c0,1,
-0x0f02b4,1,
-0x0f02b0,1,
-0x0f02ac,1,
-0x0f02a8,1,
-0x0f02a4,1,
-0x0f0298,1,
-0x0f0294,1,
-0x0f0290,1,
-0x0f0258,1,
-0x0f0254,1,
-0x0f0250,1,
-0x0f024c,1,
-0x0f0248,1,
-0x0f0244,1,
-0x0f0240,1,
-0x0f023c,1,
-0x0f0238,1,
-0x0f0234,1,
-0x0f0230,1,
-0x0f022c,1,
-0x0f0228,1,
-0x0f0224,1,
-0x0f0220,1,
-0x0f021c,1,
-0x0f0218,1,
-0x0f0214,1,
-0x0f0210,1,
-0x0f020c,1,
-0x0f0208,1,
-0x0f0204,1,
-0x0f0200,1,
-0x0f01c0,1,
-0x0f01bc,1,
-0x0f01b8,1,
-0x0f01b4,1,
-0x0f01b0,1,
-0x0f01ac,1,
-0x0f01a8,1,
-0x0f01a4,1,
-0x0f01a0,1,
-0x0f019c,1,
-0x0f0198,1,
-0x0f0194,1,
-0x0f0190,1,
-0x0f018c,1,
-0x0f0188,1,
-0x0f0184,1,
-0x0f0180,1,
-0x0f0170,1,
-0x0f016c,1,
-0x0f0168,1,
-0x0f0164,1,
-0x0f0160,1,
-0x0f0154,1,
-0x0f0150,1,
-0x0f0140,1,
-0x0f013c,1,
-0x0f0138,1,
-0x0f0134,1,
-0x0f0130,1,
-0x0f012c,1,
-0x0f0128,1,
-0x0f0110,1,
-0x0f010c,1,
-0x0f0108,1,
-0x0f0104,1,
-0x0f0100,1,
-0x0f00fc,1,
-0x0f00f8,1,
-0x0f00f4,1,
-0x0f00f0,1,
-0x0f00ec,1,
-0x0f00e8,1,
-0x0f00e4,1,
-0x0f00e0,1,
-0x0f00dc,1,
-0x0f00d8,1,
-0x0f00d4,1,
-0x0f00d0,1,
-0x0f00cc,1,
-0x0f00c8,1,
-0x0f00c4,1,
-0x0f00c0,1,
-0x0f00b4,1,
-0x0f00b0,1,
-0x0f00a0,1,
-0x0f0094,1,
-0x0f0090,1,
-0x0f008c,1,
-0x0f0084,1,
-0x0f0080,1,
-0x0f0074,1,
-0x0f0070,1,
-0x0f0060,1,
-0x0f0054,1,
-0x0f0050,1,
-0x0f004c,1,
-0x0f0044,1,
-0x0f0040,1,
-0x0f0038,1,
-0x0f0034,1,
-0x0f0030,1,
-0x0f001c,1,
-0x0f0014,1,
-0x0f0008,1,
-0x0f0004,1,
-0x0f0000,1,
-0x0d7844,1,
-0x0d7840,1,
-0x0d783c,1,
-0x0d7838,1,
-0x0d7834,1,
-0x0d7830,1,
-0x0d782c,1,
-0x0d7828,1,
-0x0d7824,1,
-0x0d7820,1,
-0x0d7814,1,
-0x0d7810,1,
-0x0d7800,1,
-0x0d7624,1,
-0x0d7620,1,
-0x0d7554,1,
-0x0d7550,1,
-0x0d7540,1,
-0x0d752c,1,
-0x0d7528,1,
-0x0d7524,1,
-0x0d7520,1,
-0x0d751c,1,
-0x0d7518,1,
-0x0d7514,1,
-0x0d7510,1,
-0x0d750c,1,
-0x0d7508,1,
-0x0d7504,1,
-0x0d7500,1,
-0x0d74fc,1,
-0x0d74f8,1,
-0x0d74f4,1,
-0x0d74f0,1,
-0x0d74c8,1,
-0x0d74c4,1,
-0x0d74c0,1,
-0x0d74b8,1,
-0x0d74b4,1,
-0x0d74b0,1,
-0x0d74ac,1,
-0x0d74a8,1,
-0x0d749c,1,
-0x0d7498,1,
-0x0d7494,1,
-0x0d7490,1,
-0x0d748c,1,
-0x0d7488,1,
-0x0d7484,1,
-0x0d7480,1,
-0x0d7474,1,
-0x0d7470,1,
-0x0d746c,1,
-0x0d7468,1,
-0x0d7464,1,
-0x0d7460,1,
-0x0d745c,1,
-0x0d7458,1,
-0x0d7454,1,
-0x0d7450,1,
-0x0d7440,1,
-0x0d7430,1,
-0x0d7428,1,
-0x0d7424,1,
-0x0d7420,1,
-0x0d741c,1,
-0x0d7418,1,
-0x0d7414,1,
-0x0d7410,1,
-0x0d740c,1,
-0x0d7408,1,
-0x0d7404,1,
-0x0d7400,1,
-0x0d7354,1,
-0x0d7350,1,
-0x0d7340,1,
-0x0d732c,1,
-0x0d7328,1,
-0x0d7324,1,
-0x0d7320,1,
-0x0d731c,1,
-0x0d7318,1,
-0x0d7314,1,
-0x0d7310,1,
-0x0d730c,1,
-0x0d7308,1,
-0x0d7304,1,
-0x0d7300,1,
-0x0d72fc,1,
-0x0d72f8,1,
-0x0d72f4,1,
-0x0d72f0,1,
-0x0d72c8,1,
-0x0d72c4,1,
-0x0d72c0,1,
-0x0d72b8,1,
-0x0d72b4,1,
-0x0d72b0,1,
-0x0d72ac,1,
-0x0d72a8,1,
-0x0d729c,1,
-0x0d7298,1,
-0x0d7294,1,
-0x0d7290,1,
-0x0d728c,1,
-0x0d7288,1,
-0x0d7284,1,
-0x0d7280,1,
-0x0d7274,1,
-0x0d7270,1,
-0x0d726c,1,
-0x0d7268,1,
-0x0d7264,1,
-0x0d7260,1,
-0x0d725c,1,
-0x0d7258,1,
-0x0d7254,1,
-0x0d7250,1,
-0x0d7240,1,
-0x0d7230,1,
-0x0d7228,1,
-0x0d7224,1,
-0x0d7220,1,
-0x0d721c,1,
-0x0d7218,1,
-0x0d7214,1,
-0x0d7210,1,
-0x0d720c,1,
-0x0d7208,1,
-0x0d7204,1,
-0x0d7200,1,
-0x0d7154,1,
-0x0d7150,1,
-0x0d7140,1,
-0x0d712c,1,
-0x0d7128,1,
-0x0d7124,1,
-0x0d7120,1,
-0x0d711c,1,
-0x0d7118,1,
-0x0d7114,1,
-0x0d7110,1,
-0x0d710c,1,
-0x0d7108,1,
-0x0d7104,1,
-0x0d7100,1,
-0x0d70fc,1,
-0x0d70f8,1,
-0x0d70f4,1,
-0x0d70f0,1,
-0x0d70c8,1,
-0x0d70c4,1,
-0x0d70c0,1,
-0x0d70b8,1,
-0x0d70b4,1,
-0x0d70b0,1,
-0x0d70ac,1,
-0x0d70a8,1,
-0x0d709c,1,
-0x0d7098,1,
-0x0d7094,1,
-0x0d7090,1,
-0x0d708c,1,
-0x0d7088,1,
-0x0d7084,1,
-0x0d7080,1,
-0x0d7074,1,
-0x0d7070,1,
-0x0d706c,1,
-0x0d7068,1,
-0x0d7064,1,
-0x0d7060,1,
-0x0d705c,1,
-0x0d7058,1,
-0x0d7054,1,
-0x0d7050,1,
-0x0d7040,1,
-0x0d7030,1,
-0x0d7028,1,
-0x0d7024,1,
-0x0d7020,1,
-0x0d701c,1,
-0x0d7018,1,
-0x0d7014,1,
-0x0d7010,1,
-0x0d700c,1,
-0x0d7008,1,
-0x0d7004,1,
-0x0d7000,1,
-0x0d6e24,1,
-0x0d6e20,1,
-0x0d6d54,1,
-0x0d6d50,1,
-0x0d6d40,1,
-0x0d6d2c,1,
-0x0d6d28,1,
-0x0d6d24,1,
-0x0d6d20,1,
-0x0d6d1c,1,
-0x0d6d18,1,
-0x0d6d14,1,
-0x0d6d10,1,
-0x0d6d0c,1,
-0x0d6d08,1,
-0x0d6d04,1,
-0x0d6d00,1,
-0x0d6cfc,1,
-0x0d6cf8,1,
-0x0d6cf4,1,
-0x0d6cf0,1,
-0x0d6cc8,1,
-0x0d6cc4,1,
-0x0d6cc0,1,
-0x0d6cb8,1,
-0x0d6cb4,1,
-0x0d6cb0,1,
-0x0d6cac,1,
-0x0d6ca8,1,
-0x0d6c9c,1,
-0x0d6c98,1,
-0x0d6c94,1,
-0x0d6c90,1,
-0x0d6c8c,1,
-0x0d6c88,1,
-0x0d6c84,1,
-0x0d6c80,1,
-0x0d6c74,1,
-0x0d6c70,1,
-0x0d6c6c,1,
-0x0d6c68,1,
-0x0d6c64,1,
-0x0d6c60,1,
-0x0d6c5c,1,
-0x0d6c58,1,
-0x0d6c54,1,
-0x0d6c50,1,
-0x0d6c40,1,
-0x0d6c30,1,
-0x0d6c28,1,
-0x0d6c24,1,
-0x0d6c20,1,
-0x0d6c1c,1,
-0x0d6c18,1,
-0x0d6c14,1,
-0x0d6c10,1,
-0x0d6c0c,1,
-0x0d6c08,1,
-0x0d6c04,1,
-0x0d6c00,1,
-0x0d6b54,1,
-0x0d6b50,1,UNKNOWN
-0x0d6b40,1,
-0x0d6b2c,1,
-0x0d6b28,1,
-0x0d6b24,1,
-0x0d6b20,1,
-0x0d6b1c,1,
-0x0d6b18,1,
-0x0d6b14,1,
-0x0d6b10,1,
-0x0d6b0c,1,
-0x0d6b08,1,
-0x0d6b04,1,
-0x0d6b00,1,
-0x0d6afc,1,
-0x0d6af8,1,
-0x0d6af4,1,
-0x0d6af0,1,
-0x0d6ac8,1,
-0x0d6ac4,1,
-0x0d6ac0,1,
-0x0d6ab8,1,
-0x0d6ab4,1,
-0x0d6ab0,1,
-0x0d6aac,1,
-0x0d6aa8,1,
-0x0d6a9c,1,
-0x0d6a98,1,
-0x0d6a94,1,
-0x0d6a90,1,
-0x0d6a8c,1,
-0x0d6a88,1,
-0x0d6a84,1,
-0x0d6a80,1,
-0x0d6a74,1,
-0x0d6a70,1,
-0x0d6a6c,1,
-0x0d6a68,1,
-0x0d6a64,1,
-0x0d6a60,1,
-0x0d6a5c,1,
-0x0d6a58,1,
-0x0d6a54,1,
-0x0d6a50,1,
-0x0d6a40,1,
-0x0d6a30,1,
-0x0d6a28,1,
-0x0d6a24,1,
-0x0d6a20,1,UNKNOWN
-0x0d6a1c,1,
-0x0d6a18,1,
-0x0d6a14,1,
-0x0d6a10,1,
-0x0d6a0c,1,
-0x0d6a08,1,
-0x0d6a04,1,
-0x0d6a00,1,
-0x0d6954,1,
-0x0d6950,1,
-0x0d6940,1,
-0x0d692c,1,
-0x0d6928,1,
-0x0d6924,1,
-0x0d6920,1,
-0x0d691c,1,
-0x0d6918,1,
-0x0d6914,1,
-0x0d6910,1,
-0x0d690c,1,
-0x0d6908,1,
-0x0d6904,1,
-0x0d6900,1,
-0x0d68fc,1,
-0x0d68f8,1,
-0x0d68f4,1,
-0x0d68f0,1,
-0x0d68c8,1,
-0x0d68c4,1,
-0x0d68c0,1,
-0x0d68b8,1,
-0x0d68b4,1,
-0x0d68b0,1,
-0x0d68ac,1,
-0x0d68a8,1,
-0x0d689c,1,
-0x0d6898,1,
-0x0d6894,1,
-0x0d6890,1,
-0x0d688c,1,
-0x0d6888,1,
-0x0d6884,1,
-0x0d6880,1,
-0x0d6874,1,
-0x0d6870,1,
-0x0d686c,1,
-0x0d6868,1,
-0x0d6864,1,
-0x0d6860,1,
-0x0d685c,1,
-0x0d6858,1,
-0x0d6854,1,
-0x0d6850,1,
-0x0d6840,1,
-0x0d6830,1,
-0x0d6828,1,
-0x0d6824,1,
-0x0d6820,1,
-0x0d681c,1,
-0x0d6818,1,
-0x0d6814,1,
-0x0d6810,1,
-0x0d680c,1,
-0x0d6808,1,
-0x0d6804,1,
-0x0d6800,1,
-0x0d6624,1,
-0x0d6620,1,
-0x0d6554,1,
-0x0d6550,1,
-0x0d6540,1,
-0x0d652c,1,
-0x0d6528,1,
-0x0d6524,1,
-0x0d6520,1,
-0x0d651c,1,
-0x0d6518,1,
-0x0d6514,1,
-0x0d6510,1,
-0x0d650c,1,
-0x0d6508,1,
-0x0d6504,1,
-0x0d6500,1,
-0x0d64fc,1,
-0x0d64f8,1,
-0x0d64f4,1,
-0x0d64f0,1,
-0x0d64c8,1,
-0x0d64c4,1,
-0x0d64c0,1,
-0x0d64b8,1,
-0x0d64b4,1,
-0x0d64b0,1,
-0x0d64ac,1,
-0x0d64a8,1,
-0x0d649c,1,
-0x0d6498,1,
-0x0d6494,1,
-0x0d6490,1,
-0x0d648c,1,
-0x0d6488,1,
-0x0d6484,1,
-0x0d6480,1,
-0x0d6474,1,
-0x0d6470,1,
-0x0d646c,1,
-0x0d6468,1,
-0x0d6464,1,
-0x0d6460,1,
-0x0d645c,1,
-0x0d6458,1,
-0x0d6454,1,
-0x0d6450,1,
-0x0d6440,1,
-0x0d6430,1,
-0x0d6428,1,
-0x0d6424,1,
-0x0d6420,1,
-0x0d641c,1,
-0x0d6418,1,
-0x0d6414,1,
-0x0d6410,1,
-0x0d640c,1,
-0x0d6408,1,
-0x0d6404,1,
-0x0d6400,1,
-0x0d6354,1,
-0x0d6350,1,
-0x0d6340,1,
-0x0d632c,1,
-0x0d6328,1,
-0x0d6324,1,
-0x0d6320,1,
-0x0d631c,1,
-0x0d6318,1,
-0x0d6314,1,
-0x0d6310,1,
-0x0d630c,1,
-0x0d6308,1,
-0x0d6304,1,
-0x0d6300,1,
-0x0d62fc,1,
-0x0d62f8,1,
-0x0d62f4,1,
-0x0d62f0,1,
-0x0d62c8,1,
-0x0d62c4,1,
-0x0d62c0,1,
-0x0d62b8,1,
-0x0d62b4,1,
-0x0d62b0,1,
-0x0d62ac,1,
-0x0d62a8,1,
-0x0d629c,1,
-0x0d6298,1,
-0x0d6294,1,
-0x0d6290,1,
-0x0d628c,1,
-0x0d6288,1,
-0x0d6284,1,
-0x0d6280,1,
-0x0d6274,1,
-0x0d6270,1,
-0x0d626c,1,
-0x0d6268,1,
-0x0d6264,1,
-0x0d6260,1,
-0x0d625c,1,
-0x0d6258,1,
-0x0d6254,1,
-0x0d6250,1,
-0x0d6240,1,
-0x0d6230,1,
-0x0d6228,1,
-0x0d6224,1,
-0x0d6220,1,
-0x0d621c,1,
-0x0d6218,1,
-0x0d6214,1,
-0x0d6210,1,
-0x0d620c,1,
-0x0d6208,1,
-0x0d6204,1,
-0x0d6200,1,
-0x0d6154,1,
-0x0d6150,1,
-0x0d6140,1,
-0x0d612c,1,
-0x0d6128,1,
-0x0d6124,1,
-0x0d6120,1,
-0x0d611c,1,
-0x0d6118,1,
-0x0d6114,1,
-0x0d6110,1,
-0x0d610c,1,
-0x0d6108,1,
-0x0d6104,1,
-0x0d6100,1,
-0x0d60fc,1,
-0x0d60f8,1,
-0x0d60f4,1,
-0x0d60f0,1,
-0x0d60c8,1,
-0x0d60c4,1,
-0x0d60c0,1,
-0x0d60b8,1,
-0x0d60b4,1,
-0x0d60b0,1,
-0x0d60ac,1,
-0x0d60a8,1,
-0x0d609c,1,
-0x0d6098,1,
-0x0d6094,1,
-0x0d6090,1,
-0x0d608c,1,
-0x0d6088,1,
-0x0d6084,1,
-0x0d6080,1,
-0x0d6074,1,
-0x0d6070,1,
-0x0d606c,1,
-0x0d6068,1,
-0x0d6064,1,
-0x0d6060,1,
-0x0d605c,1,
-0x0d6058,1,
-0x0d6054,1,
-0x0d6050,1,
-0x0d6040,1,
-0x0d6030,1,
-0x0d6028,1,
-0x0d6024,1,
-0x0d6020,1,
-0x0d601c,1,
-0x0d6018,1,
-0x0d6014,1,
-0x0d6010,1,
-0x0d600c,1,
-0x0d6008,1,
-0x0d6004,1,
-0x0d6000,1,
-0x0d5e24,1,
-0x0d5e20,1,
-0x0d5d54,1,
-0x0d5d50,1,
-0x0d5d40,1,
-0x0d5d2c,1,
-0x0d5d28,1,
-0x0d5d24,1,
-0x0d5d20,1,
-0x0d5d1c,1,
-0x0d5d18,1,
-0x0d5d14,1,
-0x0d5d10,1,
-0x0d5d0c,1,
-0x0d5d08,1,
-0x0d5d04,1,
-0x0d5d00,1,
-0x0d5cfc,1,
-0x0d5cf8,1,
-0x0d5cf4,1,
-0x0d5cf0,1,
-0x0d5cc8,1,
-0x0d5cc4,1,
-0x0d5cc0,1,
-0x0d5cb8,1,
-0x0d5cb4,1,
-0x0d5cb0,1,
-0x0d5cac,1,
-0x0d5ca8,1,
-0x0d5c9c,1,
-0x0d5c98,1,
-0x0d5c94,1,
-0x0d5c90,1,
-0x0d5c8c,1,
-0x0d5c88,1,
-0x0d5c84,1,
-0x0d5c80,1,
-0x0d5c74,1,
-0x0d5c70,1,
-0x0d5c6c,1,
-0x0d5c68,1,
-0x0d5c64,1,
-0x0d5c60,1,
-0x0d5c5c,1,
-0x0d5c58,1,
-0x0d5c54,1,
-0x0d5c50,1,
-0x0d5c40,1,
-0x0d5c30,1,
-0x0d5c28,1,
-0x0d5c24,1,
-0x0d5c20,1,
-0x0d5c1c,1,
-0x0d5c18,1,
-0x0d5c14,1,
-0x0d5c10,1,
-0x0d5c0c,1,
-0x0d5c08,1,
-0x0d5c04,1,
-0x0d5c00,1,
-0x0d5b54,1,
-0x0d5b50,1,
-0x0d5b40,1,
-0x0d5b2c,1,
-0x0d5b28,1,
-0x0d5b24,1,
-0x0d5b20,1,
-0x0d5b1c,1,
-0x0d5b18,1,
-0x0d5b14,1,
-0x0d5b10,1,
-0x0d5b0c,1,
-0x0d5b08,1,
-0x0d5b04,1,
-0x0d5b00,1,
-0x0d5afc,1,
-0x0d5af8,1,
-0x0d5af4,1,
-0x0d5af0,1,
-0x0d5ac8,1,
-0x0d5ac4,1,
-0x0d5ac0,1,
-0x0d5ab8,1,
-0x0d5ab4,1,
-0x0d5ab0,1,
-0x0d5aac,1,
-0x0d5aa8,1,
-0x0d5a9c,1,
-0x0d5a98,1,
-0x0d5a94,1,
-0x0d5a90,1,
-0x0d5a8c,1,
-0x0d5a88,1,
-0x0d5a84,1,
-0x0d5a80,1,
-0x0d5a74,1,
-0x0d5a70,1,
-0x0d5a6c,1,
-0x0d5a68,1,
-0x0d5a64,1,
-0x0d5a60,1,
-0x0d5a5c,1,
-0x0d5a58,1,
-0x0d5a54,1,
-0x0d5a50,1,
-0x0d5a40,1,
-0x0d5a30,1,
-0x0d5a28,1,
-0x0d5a24,1,
-0x0d5a20,1,
-0x0d5a1c,1,
-0x0d5a18,1,
-0x0d5a14,1,
-0x0d5a10,1,
-0x0d5a0c,1,
-0x0d5a08,1,
-0x0d5a04,1,
-0x0d5a00,1,
-0x0d5954,1,
-0x0d5950,1,
-0x0d5940,1,
-0x0d592c,1,
-0x0d5928,1,
-0x0d5924,1,
-0x0d5920,1,
-0x0d591c,1,
-0x0d5918,1,
-0x0d5914,1,
-0x0d5910,1,
-0x0d590c,1,
-0x0d5908,1,
-0x0d5904,1,
-0x0d5900,1,
-0x0d58fc,1,
-0x0d58f8,1,
-0x0d58f4,1,
-0x0d58f0,1,
-0x0d58c8,1,
-0x0d58c4,1,
-0x0d58c0,1,
-0x0d58b8,1,
-0x0d58b4,1,
-0x0d58b0,1,
-0x0d58ac,1,
-0x0d58a8,1,
-0x0d589c,1,
-0x0d5898,1,
-0x0d5894,1,
-0x0d5890,1,
-0x0d588c,1,
-0x0d5888,1,
-0x0d5884,1,
-0x0d5880,1,
-0x0d5874,1,
-0x0d5870,1,
-0x0d586c,1,
-0x0d5868,1,
-0x0d5864,1,
-0x0d5860,1,
-0x0d585c,1,
-0x0d5858,1,
-0x0d5854,1,
-0x0d5850,1,
-0x0d5840,1,
-0x0d5830,1,
-0x0d5828,1,
-0x0d5824,1,
-0x0d5820,1,
-0x0d581c,1,
-0x0d5818,1,
-0x0d5814,1,
-0x0d5810,1,
-0x0d580c,1,
-0x0d5808,1,
-0x0d5804,1,
-0x0d5800,1,
-0x0d5624,1,
-0x0d5620,1,
-0x0d5554,1,
-0x0d5550,1,
-0x0d5540,1,
-0x0d552c,1,
-0x0d5528,1,
-0x0d5524,1,
-0x0d5520,1,
-0x0d551c,1,
-0x0d5518,1,
-0x0d5514,1,
-0x0d5510,1,
-0x0d550c,1,
-0x0d5508,1,
-0x0d5504,1,
-0x0d5500,1,
-0x0d54fc,1,
-0x0d54f8,1,
-0x0d54f4,1,
-0x0d54f0,1,
-0x0d54c8,1,
-0x0d54c4,1,
-0x0d54c0,1,
-0x0d54b8,1,
-0x0d54b4,1,
-0x0d54b0,1,
-0x0d54ac,1,
-0x0d54a8,1,
-0x0d549c,1,
-0x0d5498,1,
-0x0d5494,1,
-0x0d5490,1,
-0x0d548c,1,
-0x0d5488,1,
-0x0d5484,1,
-0x0d5480,1,
-0x0d5474,1,
-0x0d5470,1,
-0x0d546c,1,
-0x0d5468,1,
-0x0d5464,1,
-0x0d5460,1,
-0x0d545c,1,
-0x0d5458,1,
-0x0d5454,1,
-0x0d5450,1,
-0x0d5440,1,
-0x0d5430,1,
-0x0d5428,1,
-0x0d5424,1,
-0x0d5420,1,
-0x0d541c,1,
-0x0d5418,1,
-0x0d5414,1,
-0x0d5410,1,
-0x0d540c,1,
-0x0d5408,1,
-0x0d5404,1,
-0x0d5400,1,
-0x0d5354,1,
-0x0d5350,1,
-0x0d5340,1,
-0x0d532c,1,
-0x0d5328,1,
-0x0d5324,1,
-0x0d5320,1,
-0x0d531c,1,
-0x0d5318,1,
-0x0d5314,1,
-0x0d5310,1,
-0x0d530c,1,
-0x0d5308,1,
-0x0d5304,1,
-0x0d5300,1,
-0x0d52fc,1,
-0x0d52f8,1,
-0x0d52f4,1,
-0x0d52f0,1,
-0x0d52c8,1,
-0x0d52c4,1,
-0x0d52c0,1,
-0x0d52b8,1,
-0x0d52b4,1,
-0x0d52b0,1,
-0x0d52ac,1,
-0x0d52a8,1,
-0x0d529c,1,
-0x0d5298,1,
-0x0d5294,1,
-0x0d5290,1,
-0x0d528c,1,
-0x0d5288,1,
-0x0d5284,1,
-0x0d5280,1,
-0x0d5274,1,
-0x0d5270,1,
-0x0d526c,1,
-0x0d5268,1,
-0x0d5264,1,
-0x0d5260,1,
-0x0d525c,1,
-0x0d5258,1,
-0x0d5254,1,
-0x0d5250,1,
-0x0d5240,1,
-0x0d5230,1,
-0x0d5228,1,
-0x0d5224,1,
-0x0d5220,1,
-0x0d521c,1,
-0x0d5218,1,
-0x0d5214,1,
-0x0d5210,1,
-0x0d520c,1,
-0x0d5208,1,
-0x0d5204,1,
-0x0d5200,1,
-0x0d5154,1,
-0x0d5150,1,
-0x0d5140,1,
-0x0d512c,1,
-0x0d5128,1,
-0x0d5124,1,
-0x0d5120,1,
-0x0d511c,1,
-0x0d5118,1,
-0x0d5114,1,
-0x0d5110,1,
-0x0d510c,1,
-0x0d5108,1,
-0x0d5104,1,
-0x0d5100,1,
-0x0d50fc,1,
-0x0d50f8,1,
-0x0d50f4,1,
-0x0d50f0,1,
-0x0d50c8,1,
-0x0d50c4,1,
-0x0d50c0,1,
-0x0d50b8,1,
-0x0d50b4,1,
-0x0d50b0,1,
-0x0d50ac,1,
-0x0d50a8,1,
-0x0d509c,1,
-0x0d5098,1,
-0x0d5094,1,
-0x0d5090,1,
-0x0d508c,1,
-0x0d5088,1,
-0x0d5084,1,
-0x0d5080,1,
-0x0d5074,1,
-0x0d5070,1,
-0x0d506c,1,
-0x0d5068,1,
-0x0d5064,1,
-0x0d5060,1,
-0x0d505c,1,
-0x0d5058,1,
-0x0d5054,1,
-0x0d5050,1,
-0x0d5040,1,
-0x0d5030,1,
-0x0d5028,1,
-0x0d5024,1,
-0x0d5020,1,
-0x0d501c,1,
-0x0d5018,1,
-0x0d5014,1,
-0x0d5010,1,
-0x0d500c,1,
-0x0d5008,1,
-0x0d5004,1,
-0x0d5000,1,
-0x0d4e24,1,
-0x0d4e20,1,
-0x0d4d54,1,
-0x0d4d50,1,
-0x0d4d40,1,
-0x0d4d2c,1,
-0x0d4d28,1,
-0x0d4d24,1,
-0x0d4d20,1,
-0x0d4d1c,1,
-0x0d4d18,1,
-0x0d4d14,1,
-0x0d4d10,1,
-0x0d4d0c,1,
-0x0d4d08,1,
-0x0d4d04,1,
-0x0d4d00,1,
-0x0d4cfc,1,
-0x0d4cf8,1,
-0x0d4cf4,1,
-0x0d4cf0,1,
-0x0d4cc8,1,
-0x0d4cc4,1,
-0x0d4cc0,1,
-0x0d4cb8,1,
-0x0d4cb4,1,
-0x0d4cb0,1,
-0x0d4cac,1,
-0x0d4ca8,1,
-0x0d4c9c,1,
-0x0d4c98,1,
-0x0d4c94,1,
-0x0d4c90,1,
-0x0d4c8c,1,
-0x0d4c88,1,
-0x0d4c84,1,
-0x0d4c80,1,
-0x0d4c74,1,
-0x0d4c70,1,
-0x0d4c6c,1,
-0x0d4c68,1,
-0x0d4c64,1,
-0x0d4c60,1,
-0x0d4c5c,1,
-0x0d4c58,1,
-0x0d4c54,1,
-0x0d4c50,1,
-0x0d4c40,1,
-0x0d4c30,1,
-0x0d4c28,1,
-0x0d4c24,1,
-0x0d4c20,1,
-0x0d4c1c,1,
-0x0d4c18,1,
-0x0d4c14,1,
-0x0d4c10,1,
-0x0d4c0c,1,
-0x0d4c08,1,
-0x0d4c04,1,
-0x0d4c00,1,
-0x0d4b54,1,
-0x0d4b50,1,
-0x0d4b40,1,
-0x0d4b2c,1,
-0x0d4b28,1,
-0x0d4b24,1,
-0x0d4b20,1,
-0x0d4b1c,1,
-0x0d4b18,1,
-0x0d4b14,1,
-0x0d4b10,1,
-0x0d4b0c,1,
-0x0d4b08,1,
-0x0d4b04,1,
-0x0d4b00,1,
-0x0d4afc,1,
-0x0d4af8,1,
-0x0d4af4,1,
-0x0d4af0,1,
-0x0d4ac8,1,
-0x0d4ac4,1,
-0x0d4ac0,1,
-0x0d4ab8,1,
-0x0d4ab4,1,
-0x0d4ab0,1,
-0x0d4aac,1,
-0x0d4aa8,1,
-0x0d4a9c,1,
-0x0d4a98,1,
-0x0d4a94,1,
-0x0d4a90,1,
-0x0d4a8c,1,
-0x0d4a88,1,
-0x0d4a84,1,
-0x0d4a80,1,
-0x0d4a74,1,
-0x0d4a70,1,
-0x0d4a6c,1,
-0x0d4a68,1,
-0x0d4a64,1,
-0x0d4a60,1,
-0x0d4a5c,1,
-0x0d4a58,1,
-0x0d4a54,1,
-0x0d4a50,1,
-0x0d4a40,1,
-0x0d4a30,1,
-0x0d4a28,1,
-0x0d4a24,1,
-0x0d4a20,1,
-0x0d4a1c,1,
-0x0d4a18,1,
-0x0d4a14,1,
-0x0d4a10,1,
-0x0d4a0c,1,
-0x0d4a08,1,
-0x0d4a04,1,
-0x0d4a00,1,
-0x0d4954,1,
-0x0d4950,1,
-0x0d4940,1,
-0x0d492c,1,
-0x0d4928,1,
-0x0d4924,1,
-0x0d4920,1,
-0x0d491c,1,
-0x0d4918,1,
-0x0d4914,1,
-0x0d4910,1,
-0x0d490c,1,
-0x0d4908,1,
-0x0d4904,1,
-0x0d4900,1,
-0x0d48fc,1,
-0x0d48f8,1,
-0x0d48f4,1,
-0x0d48f0,1,
-0x0d48c8,1,
-0x0d48c4,1,
-0x0d48c0,1,
-0x0d48b8,1,
-0x0d48b4,1,
-0x0d48b0,1,
-0x0d48ac,1,
-0x0d48a8,1,
-0x0d489c,1,
-0x0d4898,1,
-0x0d4894,1,
-0x0d4890,1,
-0x0d488c,1,
-0x0d4888,1,
-0x0d4884,1,
-0x0d4880,1,
-0x0d4874,1,
-0x0d4870,1,
-0x0d486c,1,
-0x0d4868,1,
-0x0d4864,1,
-0x0d4860,1,
-0x0d485c,1,
-0x0d4858,1,
-0x0d4854,1,
-0x0d4850,1,
-0x0d4840,1,
-0x0d4830,1,
-0x0d4828,1,
-0x0d4824,1,
-0x0d4820,1,
-0x0d481c,1,
-0x0d4818,1,
-0x0d4814,1,
-0x0d4810,1,
-0x0d480c,1,
-0x0d4808,1,
-0x0d4804,1,
-0x0d4800,1,
-0x0d4624,1,
-0x0d4620,1,
-0x0d4554,1,
-0x0d4550,1,
-0x0d4540,1,
-0x0d452c,1,
-0x0d4528,1,
-0x0d4524,1,
-0x0d4520,1,
-0x0d451c,1,
-0x0d4518,1,
-0x0d4514,1,
-0x0d4510,1,
-0x0d450c,1,
-0x0d4508,1,
-0x0d4504,1,
-0x0d4500,1,
-0x0d44fc,1,
-0x0d44f8,1,
-0x0d44f4,1,
-0x0d44f0,1,
-0x0d44c8,1,
-0x0d44c4,1,
-0x0d44c0,1,
-0x0d44b8,1,
-0x0d44b4,1,
-0x0d44b0,1,
-0x0d44ac,1,
-0x0d44a8,1,
-0x0d449c,1,
-0x0d4498,1,
-0x0d4494,1,
-0x0d4490,1,
-0x0d448c,1,
-0x0d4488,1,
-0x0d4484,1,
-0x0d4480,1,
-0x0d4474,1,
-0x0d4470,1,
-0x0d446c,1,
-0x0d4468,1,
-0x0d4464,1,
-0x0d4460,1,
-0x0d445c,1,
-0x0d4458,1,
-0x0d4454,1,
-0x0d4450,1,
-0x0d4440,1,
-0x0d4430,1,
-0x0d4428,1,
-0x0d4424,1,
-0x0d4420,1,
-0x0d441c,1,
-0x0d4418,1,
-0x0d4414,1,
-0x0d4410,1,
-0x0d440c,1,
-0x0d4408,1,
-0x0d4404,1,
-0x0d4400,1,
-0x0d4354,1,
-0x0d4350,1,
-0x0d4340,1,
-0x0d432c,1,
-0x0d4328,1,
-0x0d4324,1,
-0x0d4320,1,
-0x0d431c,1,
-0x0d4318,1,
-0x0d4314,1,
-0x0d4310,1,
-0x0d430c,1,
-0x0d4308,1,
-0x0d4304,1,
-0x0d4300,1,
-0x0d42fc,1,
-0x0d42f8,1,
-0x0d42f4,1,
-0x0d42f0,1,
-0x0d42c8,1,
-0x0d42c4,1,
-0x0d42c0,1,
-0x0d42b8,1,
-0x0d42b4,1,
-0x0d42b0,1,
-0x0d42ac,1,
-0x0d42a8,1,
-0x0d429c,1,
-0x0d4298,1,
-0x0d4294,1,
-0x0d4290,1,
-0x0d428c,1,
-0x0d4288,1,
-0x0d4284,1,
-0x0d4280,1,
-0x0d4274,1,
-0x0d4270,1,
-0x0d426c,1,
-0x0d4268,1,
-0x0d4264,1,
-0x0d4260,1,
-0x0d425c,1,
-0x0d4258,1,
-0x0d4254,1,
-0x0d4250,1,
-0x0d4240,1,
-0x0d4230,1,
-0x0d4228,1,
-0x0d4224,1,
-0x0d4220,1,
-0x0d421c,1,
-0x0d4218,1,
-0x0d4214,1,
-0x0d4210,1,
-0x0d420c,1,
-0x0d4208,1,
-0x0d4204,1,
-0x0d4200,1,
-0x0d4154,1,
-0x0d4150,1,
-0x0d4140,1,
-0x0d412c,1,
-0x0d4128,1,
-0x0d4124,1,
-0x0d4120,1,
-0x0d411c,1,
-0x0d4118,1,
-0x0d4114,1,
-0x0d4110,1,
-0x0d410c,1,
-0x0d4108,1,
-0x0d4104,1,
-0x0d4100,1,
-0x0d40fc,1,
-0x0d40f8,1,
-0x0d40f4,1,
-0x0d40f0,1,
-0x0d40c8,1,
-0x0d40c4,1,
-0x0d40c0,1,
-0x0d40b8,1,
-0x0d40b4,1,
-0x0d40b0,1,
-0x0d40ac,1,
-0x0d40a8,1,
-0x0d409c,1,
-0x0d4098,1,
-0x0d4094,1,
-0x0d4090,1,
-0x0d408c,1,
-0x0d4088,1,
-0x0d4084,1,
-0x0d4080,1,
-0x0d4074,1,
-0x0d4070,1,
-0x0d406c,1,
-0x0d4068,1,
-0x0d4064,1,
-0x0d4060,1,
-0x0d405c,1,
-0x0d4058,1,
-0x0d4054,1,
-0x0d4050,1,
-0x0d4040,1,
-0x0d4030,1,
-0x0d4028,1,
-0x0d4024,1,
-0x0d4020,1,
-0x0d401c,1,
-0x0d4018,1,
-0x0d4014,1,
-0x0d4010,1,
-0x0d400c,1,
-0x0d4008,1,
-0x0d4004,1,
-0x0d4000,1,
-0x0d3844,1,
-0x0d3840,1,
-0x0d383c,1,
-0x0d3838,1,
-0x0d3834,1,
-0x0d3830,1,
-0x0d382c,1,
-0x0d3828,1,
-0x0d3824,1,
-0x0d3820,1,
-0x0d3814,1,
-0x0d3810,1,
-0x0d3800,1,
-0x0d3624,1,
-0x0d3620,1,
-0x0d3554,1,
-0x0d3550,1,
-0x0d3540,1,
-0x0d352c,1,
-0x0d3528,1,
-0x0d3524,1,
-0x0d3520,1,
-0x0d351c,1,
-0x0d3518,1,
-0x0d3514,1,
-0x0d3510,1,
-0x0d350c,1,
-0x0d3508,1,
-0x0d3504,1,
-0x0d3500,1,
-0x0d34fc,1,
-0x0d34f8,1,
-0x0d34f4,1,
-0x0d34f0,1,
-0x0d34c8,1,
-0x0d34c4,1,
-0x0d34c0,1,
-0x0d34b8,1,
-0x0d34b4,1,
-0x0d34b0,1,
-0x0d34ac,1,
-0x0d34a8,1,
-0x0d349c,1,
-0x0d3498,1,
-0x0d3494,1,
-0x0d3490,1,
-0x0d348c,1,
-0x0d3488,1,
-0x0d3484,1,
-0x0d3480,1,
-0x0d3474,1,
-0x0d3470,1,
-0x0d346c,1,
-0x0d3468,1,
-0x0d3464,1,
-0x0d3460,1,
-0x0d345c,1,
-0x0d3458,1,
-0x0d3454,1,
-0x0d3450,1,
-0x0d3440,1,
-0x0d3430,1,
-0x0d3428,1,
-0x0d3424,1,
-0x0d3420,1,
-0x0d341c,1,
-0x0d3418,1,
-0x0d3414,1,
-0x0d3410,1,
-0x0d340c,1,
-0x0d3408,1,
-0x0d3404,1,
-0x0d3400,1,
-0x0d3354,1,
-0x0d3350,1,
-0x0d3340,1,
-0x0d332c,1,
-0x0d3328,1,
-0x0d3324,1,
-0x0d3320,1,
-0x0d331c,1,
-0x0d3318,1,
-0x0d3314,1,
-0x0d3310,1,
-0x0d330c,1,
-0x0d3308,1,
-0x0d3304,1,
-0x0d3300,1,
-0x0d32fc,1,
-0x0d32f8,1,
-0x0d32f4,1,
-0x0d32f0,1,
-0x0d32c8,1,
-0x0d32c4,1,
-0x0d32c0,1,
-0x0d32b8,1,
-0x0d32b4,1,
-0x0d32b0,1,
-0x0d32ac,1,
-0x0d32a8,1,
-0x0d329c,1,
-0x0d3298,1,
-0x0d3294,1,
-0x0d3290,1,
-0x0d328c,1,
-0x0d3288,1,
-0x0d3284,1,
-0x0d3280,1,
-0x0d3274,1,
-0x0d3270,1,
-0x0d326c,1,
-0x0d3268,1,
-0x0d3264,1,
-0x0d3260,1,
-0x0d325c,1,
-0x0d3258,1,
-0x0d3254,1,
-0x0d3250,1,
-0x0d3240,1,
-0x0d3230,1,
-0x0d3228,1,
-0x0d3224,1,
-0x0d3220,1,
-0x0d321c,1,
-0x0d3218,1,
-0x0d3214,1,
-0x0d3210,1,
-0x0d320c,1,
-0x0d3208,1,
-0x0d3204,1,
-0x0d3200,1,
-0x0d3154,1,
-0x0d3150,1,
-0x0d3140,1,
-0x0d312c,1,
-0x0d3128,1,
-0x0d3124,1,
-0x0d3120,1,
-0x0d311c,1,
-0x0d3118,1,
-0x0d3114,1,
-0x0d3110,1,
-0x0d310c,1,
-0x0d3108,1,
-0x0d3104,1,
-0x0d3100,1,
-0x0d30fc,1,
-0x0d30f8,1,
-0x0d30f4,1,
-0x0d30f0,1,
-0x0d30c8,1,
-0x0d30c4,1,
-0x0d30c0,1,
-0x0d30b8,1,
-0x0d30b4,1,
-0x0d30b0,1,
-0x0d30ac,1,
-0x0d30a8,1,
-0x0d309c,1,
-0x0d3098,1,
-0x0d3094,1,
-0x0d3090,1,
-0x0d308c,1,
-0x0d3088,1,
-0x0d3084,1,
-0x0d3080,1,
-0x0d3074,1,
-0x0d3070,1,
-0x0d306c,1,
-0x0d3068,1,
-0x0d3064,1,
-0x0d3060,1,
-0x0d305c,1,
-0x0d3058,1,
-0x0d3054,1,
-0x0d3050,1,
-0x0d3040,1,
-0x0d3030,1,
-0x0d3028,1,
-0x0d3024,1,
-0x0d3020,1,
-0x0d301c,1,
-0x0d3018,1,
-0x0d3014,1,
-0x0d3010,1,
-0x0d300c,1,
-0x0d3008,1,
-0x0d3004,1,
-0x0d3000,1,
-0x0d2e24,1,
-0x0d2e20,1,
-0x0d2d54,1,
-0x0d2d50,1,
-0x0d2d40,1,
-0x0d2d2c,1,
-0x0d2d28,1,
-0x0d2d24,1,
-0x0d2d20,1,
-0x0d2d1c,1,
-0x0d2d18,1,
-0x0d2d14,1,
-0x0d2d10,1,
-0x0d2d0c,1,
-0x0d2d08,1,
-0x0d2d04,1,
-0x0d2d00,1,
-0x0d2cfc,1,
-0x0d2cf8,1,
-0x0d2cf4,1,
-0x0d2cf0,1,
-0x0d2cc8,1,
-0x0d2cc4,1,
-0x0d2cc0,1,
-0x0d2cb8,1,
-0x0d2cb4,1,
-0x0d2cb0,1,
-0x0d2cac,1,
-0x0d2ca8,1,
-0x0d2c9c,1,
-0x0d2c98,1,
-0x0d2c94,1,
-0x0d2c90,1,
-0x0d2c8c,1,
-0x0d2c88,1,
-0x0d2c84,1,
-0x0d2c80,1,
-0x0d2c74,1,
-0x0d2c70,1,
-0x0d2c6c,1,
-0x0d2c68,1,
-0x0d2c64,1,
-0x0d2c60,1,
-0x0d2c5c,1,
-0x0d2c58,1,
-0x0d2c54,1,
-0x0d2c50,1,
-0x0d2c40,1,
-0x0d2c30,1,
-0x0d2c28,1,
-0x0d2c24,1,
-0x0d2c20,1,
-0x0d2c1c,1,
-0x0d2c18,1,
-0x0d2c14,1,
-0x0d2c10,1,
-0x0d2c0c,1,
-0x0d2c08,1,
-0x0d2c04,1,
-0x0d2c00,1,
-0x0d2b54,1,
-0x0d2b50,1,
-0x0d2b40,1,
-0x0d2b2c,1,
-0x0d2b28,1,
-0x0d2b24,1,
-0x0d2b20,1,
-0x0d2b1c,1,
-0x0d2b18,1,
-0x0d2b14,1,
-0x0d2b10,1,
-0x0d2b0c,1,
-0x0d2b08,1,
-0x0d2b04,1,
-0x0d2b00,1,
-0x0d2afc,1,
-0x0d2af8,1,
-0x0d2af4,1,
-0x0d2af0,1,
-0x0d2ac8,1,
-0x0d2ac4,1,
-0x0d2ac0,1,
-0x0d2ab8,1,
-0x0d2ab4,1,
-0x0d2ab0,1,
-0x0d2aac,1,
-0x0d2aa8,1,
-0x0d2a9c,1,
-0x0d2a98,1,
-0x0d2a94,1,
-0x0d2a90,1,
-0x0d2a8c,1,
-0x0d2a88,1,
-0x0d2a84,1,
-0x0d2a80,1,
-0x0d2a74,1,
-0x0d2a70,1,
-0x0d2a6c,1,
-0x0d2a68,1,
-0x0d2a64,1,
-0x0d2a60,1,
-0x0d2a5c,1,
-0x0d2a58,1,
-0x0d2a54,1,
-0x0d2a50,1,
-0x0d2a40,1,
-0x0d2a30,1,
-0x0d2a28,1,
-0x0d2a24,1,
-0x0d2a20,1,
-0x0d2a1c,1,
-0x0d2a18,1,
-0x0d2a14,1,
-0x0d2a10,1,
-0x0d2a0c,1,
-0x0d2a08,1,
-0x0d2a04,1,
-0x0d2a00,1,
-0x0d2954,1,
-0x0d2950,1,
-0x0d2940,1,
-0x0d292c,1,
-0x0d2928,1,
-0x0d2924,1,
-0x0d2920,1,
-0x0d291c,1,
-0x0d2918,1,
-0x0d2914,1,
-0x0d2910,1,
-0x0d290c,1,
-0x0d2908,1,
-0x0d2904,1,
-0x0d2900,1,
-0x0d28fc,1,
-0x0d28f8,1,
-0x0d28f4,1,
-0x0d28f0,1,
-0x0d28c8,1,
-0x0d28c4,1,
-0x0d28c0,1,
-0x0d28b8,1,
-0x0d28b4,1,
-0x0d28b0,1,
-0x0d28ac,1,
-0x0d28a8,1,
-0x0d289c,1,
-0x0d2898,1,
-0x0d2894,1,
-0x0d2890,1,
-0x0d288c,1,
-0x0d2888,1,
-0x0d2884,1,
-0x0d2880,1,
-0x0d2874,1,
-0x0d2870,1,
-0x0d286c,1,
-0x0d2868,1,
-0x0d2864,1,
-0x0d2860,1,
-0x0d285c,1,
-0x0d2858,1,
-0x0d2854,1,
-0x0d2850,1,
-0x0d2840,1,
-0x0d2830,1,
-0x0d2828,1,
-0x0d2824,1,
-0x0d2820,1,
-0x0d281c,1,
-0x0d2818,1,
-0x0d2814,1,
-0x0d2810,1,
-0x0d280c,1,
-0x0d2808,1,
-0x0d2804,1,
-0x0d2800,1,
-0x0d2624,1,
-0x0d2620,1,
-0x0d2554,1,
-0x0d2550,1,
-0x0d2540,1,
-0x0d252c,1,
-0x0d2528,1,
-0x0d2524,1,
-0x0d2520,1,
-0x0d251c,1,
-0x0d2518,1,
-0x0d2514,1,
-0x0d2510,1,
-0x0d250c,1,
-0x0d2508,1,
-0x0d2504,1,
-0x0d2500,1,
-0x0d24fc,1,
-0x0d24f8,1,
-0x0d24f4,1,
-0x0d24f0,1,
-0x0d24c8,1,
-0x0d24c4,1,
-0x0d24c0,1,
-0x0d24b8,1,
-0x0d24b4,1,
-0x0d24b0,1,
-0x0d24ac,1,
-0x0d24a8,1,
-0x0d249c,1,
-0x0d2498,1,
-0x0d2494,1,
-0x0d2490,1,
-0x0d248c,1,
-0x0d2488,1,
-0x0d2484,1,
-0x0d2480,1,
-0x0d2474,1,
-0x0d2470,1,
-0x0d246c,1,
-0x0d2468,1,
-0x0d2464,1,
-0x0d2460,1,
-0x0d245c,1,
-0x0d2458,1,
-0x0d2454,1,
-0x0d2450,1,
-0x0d2440,1,
-0x0d2430,1,
-0x0d2428,1,
-0x0d2424,1,
-0x0d2420,1,
-0x0d241c,1,
-0x0d2418,1,
-0x0d2414,1,
-0x0d2410,1,
-0x0d240c,1,
-0x0d2408,1,
-0x0d2404,1,
-0x0d2400,1,
-0x0d2354,1,
-0x0d2350,1,
-0x0d2340,1,
-0x0d232c,1,
-0x0d2328,1,
-0x0d2324,1,
-0x0d2320,1,
-0x0d231c,1,
-0x0d2318,1,
-0x0d2314,1,
-0x0d2310,1,
-0x0d230c,1,
-0x0d2308,1,
-0x0d2304,1,
-0x0d2300,1,
-0x0d22fc,1,
-0x0d22f8,1,
-0x0d22f4,1,
-0x0d22f0,1,
-0x0d22c8,1,
-0x0d22c4,1,
-0x0d22c0,1,
-0x0d22b8,1,
-0x0d22b4,1,
-0x0d22b0,1,
-0x0d22ac,1,
-0x0d22a8,1,
-0x0d229c,1,
-0x0d2298,1,
-0x0d2294,1,
-0x0d2290,1,
-0x0d228c,1,
-0x0d2288,1,
-0x0d2284,1,
-0x0d2280,1,
-0x0d2274,1,
-0x0d2270,1,
-0x0d226c,1,
-0x0d2268,1,
-0x0d2264,1,
-0x0d2260,1,
-0x0d225c,1,
-0x0d2258,1,
-0x0d2254,1,
-0x0d2250,1,
-0x0d2240,1,
-0x0d2230,1,
-0x0d2228,1,
-0x0d2224,1,
-0x0d2220,1,
-0x0d221c,1,
-0x0d2218,1,
-0x0d2214,1,
-0x0d2210,1,
-0x0d220c,1,
-0x0d2208,1,
-0x0d2204,1,
-0x0d2200,1,
-0x0d2154,1,
-0x0d2150,1,
-0x0d2140,1,
-0x0d212c,1,
-0x0d2128,1,
-0x0d2124,1,
-0x0d2120,1,
-0x0d211c,1,
-0x0d2118,1,
-0x0d2114,1,
-0x0d2110,1,
-0x0d210c,1,
-0x0d2108,1,
-0x0d2104,1,
-0x0d2100,1,
-0x0d20fc,1,
-0x0d20f8,1,
-0x0d20f4,1,
-0x0d20f0,1,
-0x0d20c8,1,
-0x0d20c4,1,
-0x0d20c0,1,
-0x0d20b8,1,
-0x0d20b4,1,
-0x0d20b0,1,
-0x0d20ac,1,
-0x0d20a8,1,
-0x0d209c,1,
-0x0d2098,1,
-0x0d2094,1,
-0x0d2090,1,
-0x0d208c,1,
-0x0d2088,1,
-0x0d2084,1,
-0x0d2080,1,
-0x0d2074,1,
-0x0d2070,1,
-0x0d206c,1,
-0x0d2068,1,
-0x0d2064,1,
-0x0d2060,1,
-0x0d205c,1,
-0x0d2058,1,
-0x0d2054,1,
-0x0d2050,1,
-0x0d2040,1,
-0x0d2030,1,
-0x0d2028,1,
-0x0d2024,1,
-0x0d2020,1,
-0x0d201c,1,
-0x0d2018,1,
-0x0d2014,1,
-0x0d2010,1,
-0x0d200c,1,
-0x0d2008,1,
-0x0d2004,1,
-0x0d2000,1,
-0x0d1e24,1,
-0x0d1e20,1,
-0x0d1d54,1,
-0x0d1d50,1,
-0x0d1d40,1,
-0x0d1d2c,1,
-0x0d1d28,1,
-0x0d1d24,1,
-0x0d1d20,1,
-0x0d1d1c,1,
-0x0d1d18,1,
-0x0d1d14,1,
-0x0d1d10,1,
-0x0d1d0c,1,
-0x0d1d08,1,
-0x0d1d04,1,
-0x0d1d00,1,
-0x0d1cfc,1,
-0x0d1cf8,1,
-0x0d1cf4,1,
-0x0d1cf0,1,
-0x0d1cc8,1,
-0x0d1cc4,1,
-0x0d1cc0,1,
-0x0d1cb8,1,
-0x0d1cb4,1,
-0x0d1cb0,1,
-0x0d1cac,1,
-0x0d1ca8,1,
-0x0d1c9c,1,
-0x0d1c98,1,
-0x0d1c94,1,
-0x0d1c90,1,
-0x0d1c8c,1,
-0x0d1c88,1,
-0x0d1c84,1,
-0x0d1c80,1,
-0x0d1c74,1,
-0x0d1c70,1,
-0x0d1c6c,1,
-0x0d1c68,1,
-0x0d1c64,1,
-0x0d1c60,1,
-0x0d1c5c,1,
-0x0d1c58,1,
-0x0d1c54,1,
-0x0d1c50,1,
-0x0d1c40,1,
-0x0d1c30,1,
-0x0d1c28,1,
-0x0d1c24,1,
-0x0d1c20,1,
-0x0d1c1c,1,
-0x0d1c18,1,
-0x0d1c14,1,
-0x0d1c10,1,
-0x0d1c0c,1,
-0x0d1c08,1,
-0x0d1c04,1,
-0x0d1c00,1,
-0x0d1b54,1,
-0x0d1b50,1,
-0x0d1b40,1,
-0x0d1b2c,1,
-0x0d1b28,1,
-0x0d1b24,1,
-0x0d1b20,1,
-0x0d1b1c,1,
-0x0d1b18,1,
-0x0d1b14,1,
-0x0d1b10,1,
-0x0d1b0c,1,
-0x0d1b08,1,
-0x0d1b04,1,
-0x0d1b00,1,
-0x0d1afc,1,
-0x0d1af8,1,
-0x0d1af4,1,
-0x0d1af0,1,
-0x0d1ac8,1,
-0x0d1ac4,1,
-0x0d1ac0,1,
-0x0d1ab8,1,
-0x0d1ab4,1,
-0x0d1ab0,1,
-0x0d1aac,1,
-0x0d1aa8,1,
-0x0d1a9c,1,
-0x0d1a98,1,
-0x0d1a94,1,
-0x0d1a90,1,
-0x0d1a8c,1,
-0x0d1a88,1,
-0x0d1a84,1,
-0x0d1a80,1,
-0x0d1a74,1,
-0x0d1a70,1,
-0x0d1a6c,1,
-0x0d1a68,1,
-0x0d1a64,1,
-0x0d1a60,1,
-0x0d1a5c,1,
-0x0d1a58,1,
-0x0d1a54,1,
-0x0d1a50,1,
-0x0d1a40,1,
-0x0d1a30,1,
-0x0d1a28,1,
-0x0d1a24,1,
-0x0d1a20,1,
-0x0d1a1c,1,UNKNOWN
-0x0d1a18,1,
-0x0d1a14,1,
-0x0d1a10,1,
-0x0d1a0c,1,
-0x0d1a08,1,
-0x0d1a04,1,
-0x0d1a00,1,
-0x0d1954,1,
-0x0d1950,1,
-0x0d1940,1,
-0x0d192c,1,
-0x0d1928,1,
-0x0d1924,1,
-0x0d1920,1,
-0x0d191c,1,
-0x0d1918,1,
-0x0d1914,1,
-0x0d1910,1,
-0x0d190c,1,
-0x0d1908,1,
-0x0d1904,1,
-0x0d1900,1,
-0x0d18fc,1,
-0x0d18f8,1,
-0x0d18f4,1,
-0x0d18f0,1,
-0x0d18c8,1,
-0x0d18c4,1,
-0x0d18c0,1,
-0x0d18b8,1,
-0x0d18b4,1,
-0x0d18b0,1,
-0x0d18ac,1,
-0x0d18a8,1,
-0x0d189c,1,
-0x0d1898,1,
-0x0d1894,1,
-0x0d1890,1,
-0x0d188c,1,
-0x0d1888,1,
-0x0d1884,1,
-0x0d1880,1,
-0x0d1874,1,
-0x0d1870,1,
-0x0d186c,1,
-0x0d1868,1,
-0x0d1864,1,
-0x0d1860,1,
-0x0d185c,1,
-0x0d1858,1,
-0x0d1854,1,
-0x0d1850,1,
-0x0d1840,1,
-0x0d1830,1,
-0x0d1828,1,
-0x0d1824,1,
-0x0d1820,1,
-0x0d181c,1,
-0x0d1818,1,
-0x0d1814,1,
-0x0d1810,1,
-0x0d180c,1,
-0x0d1808,1,
-0x0d1804,1,
-0x0d1800,1,
-0x0d1624,1,
-0x0d1620,1,
-0x0d1554,1,
-0x0d1550,1,
-0x0d1540,1,
-0x0d152c,1,
-0x0d1528,1,
-0x0d1524,1,
-0x0d1520,1,
-0x0d151c,1,
-0x0d1518,1,
-0x0d1514,1,
-0x0d1510,1,
-0x0d150c,1,
-0x0d1508,1,
-0x0d1504,1,
-0x0d1500,1,
-0x0d14fc,1,
-0x0d14f8,1,
-0x0d14f4,1,
-0x0d14f0,1,
-0x0d14c8,1,
-0x0d14c4,1,
-0x0d14c0,1,
-0x0d14b8,1,
-0x0d14b4,1,
-0x0d14b0,1,
-0x0d14ac,1,
-0x0d14a8,1,
-0x0d149c,1,
-0x0d1498,1,
-0x0d1494,1,
-0x0d1490,1,
-0x0d148c,1,
-0x0d1488,1,
-0x0d1484,1,
-0x0d1480,1,
-0x0d1474,1,
-0x0d1470,1,
-0x0d146c,1,
-0x0d1468,1,
-0x0d1464,1,
-0x0d1460,1,
-0x0d145c,1,
-0x0d1458,1,
-0x0d1454,1,
-0x0d1450,1,
-0x0d1440,1,
-0x0d1430,1,
-0x0d1428,1,
-0x0d1424,1,
-0x0d1420,1,
-0x0d141c,1,
-0x0d1418,1,
-0x0d1414,1,
-0x0d1410,1,
-0x0d140c,1,
-0x0d1408,1,
-0x0d1404,1,
-0x0d1400,1,
-0x0d1354,1,
-0x0d1350,1,
-0x0d1340,1,
-0x0d132c,1,
-0x0d1328,1,
-0x0d1324,1,
-0x0d1320,1,
-0x0d131c,1,
-0x0d1318,1,
-0x0d1314,1,
-0x0d1310,1,
-0x0d130c,1,
-0x0d1308,1,
-0x0d1304,1,
-0x0d1300,1,
-0x0d12fc,1,
-0x0d12f8,1,
-0x0d12f4,1,
-0x0d12f0,1,
-0x0d12c8,1,
-0x0d12c4,1,
-0x0d12c0,1,
-0x0d12b8,1,
-0x0d12b4,1,
-0x0d12b0,1,
-0x0d12ac,1,
-0x0d12a8,1,
-0x0d129c,1,
-0x0d1298,1,
-0x0d1294,1,
-0x0d1290,1,
-0x0d128c,1,
-0x0d1288,1,
-0x0d1284,1,
-0x0d1280,1,
-0x0d1274,1,
-0x0d1270,1,
-0x0d126c,1,
-0x0d1268,1,
-0x0d1264,1,
-0x0d1260,1,
-0x0d125c,1,
-0x0d1258,1,
-0x0d1254,1,
-0x0d1250,1,
-0x0d1240,1,
-0x0d1230,1,
-0x0d1228,1,
-0x0d1224,1,
-0x0d1220,1,
-0x0d121c,1,
-0x0d1218,1,
-0x0d1214,1,
-0x0d1210,1,
-0x0d120c,1,
-0x0d1208,1,
-0x0d1204,1,
-0x0d1200,1,
-0x0d1154,1,
-0x0d1150,1,
-0x0d1140,1,
-0x0d112c,1,
-0x0d1128,1,
-0x0d1124,1,
-0x0d1120,1,
-0x0d111c,1,
-0x0d1118,1,
-0x0d1114,1,
-0x0d1110,1,
-0x0d110c,1,
-0x0d1108,1,
-0x0d1104,1,
-0x0d1100,1,
-0x0d10fc,1,
-0x0d10f8,1,
-0x0d10f4,1,
-0x0d10f0,1,
-0x0d10c8,1,
-0x0d10c4,1,
-0x0d10c0,1,
-0x0d10b8,1,
-0x0d10b4,1,
-0x0d10b0,1,
-0x0d10ac,1,
-0x0d10a8,1,
-0x0d109c,1,
-0x0d1098,1,
-0x0d1094,1,
-0x0d1090,1,
-0x0d108c,1,
-0x0d1088,1,
-0x0d1084,1,
-0x0d1080,1,
-0x0d1074,1,
-0x0d1070,1,
-0x0d106c,1,
-0x0d1068,1,
-0x0d1064,1,
-0x0d1060,1,
-0x0d105c,1,
-0x0d1058,1,
-0x0d1054,1,
-0x0d1050,1,
-0x0d1040,1,
-0x0d1030,1,
-0x0d1028,1,
-0x0d1024,1,
-0x0d1020,1,
-0x0d101c,1,
-0x0d1018,1,
-0x0d1014,1,
-0x0d1010,1,
-0x0d100c,1,
-0x0d1008,1,
-0x0d1004,1,
-0x0d1000,1,
-0x0d0e24,1,
-0x0d0e20,1,
-0x0d0d54,1,
-0x0d0d50,1,
-0x0d0d40,1,
-0x0d0d2c,1,
-0x0d0d28,1,
-0x0d0d24,1,
-0x0d0d20,1,
-0x0d0d1c,1,
-0x0d0d18,1,
-0x0d0d14,1,
-0x0d0d10,1,
-0x0d0d0c,1,
-0x0d0d08,1,
-0x0d0d04,1,
-0x0d0d00,1,
-0x0d0cfc,1,
-0x0d0cf8,1,
-0x0d0cf4,1,
-0x0d0cf0,1,
-0x0d0cc8,1,
-0x0d0cc4,1,
-0x0d0cc0,1,
-0x0d0cb8,1,
-0x0d0cb4,1,
-0x0d0cb0,1,
-0x0d0cac,1,
-0x0d0ca8,1,
-0x0d0c9c,1,
-0x0d0c98,1,
-0x0d0c94,1,
-0x0d0c90,1,
-0x0d0c8c,1,
-0x0d0c88,1,
-0x0d0c84,1,
-0x0d0c80,1,
-0x0d0c74,1,
-0x0d0c70,1,
-0x0d0c6c,1,
-0x0d0c68,1,
-0x0d0c64,1,
-0x0d0c60,1,
-0x0d0c5c,1,
-0x0d0c58,1,
-0x0d0c54,1,
-0x0d0c50,1,
-0x0d0c40,1,
-0x0d0c30,1,
-0x0d0c28,1,
-0x0d0c24,1,
-0x0d0c20,1,
-0x0d0c1c,1,
-0x0d0c18,1,
-0x0d0c14,1,
-0x0d0c10,1,
-0x0d0c0c,1,
-0x0d0c08,1,
-0x0d0c04,1,
-0x0d0c00,1,
-0x0d0b54,1,
-0x0d0b50,1,
-0x0d0b40,1,
-0x0d0b2c,1,
-0x0d0b28,1,
-0x0d0b24,1,
-0x0d0b20,1,
-0x0d0b1c,1,
-0x0d0b18,1,
-0x0d0b14,1,
-0x0d0b10,1,
-0x0d0b0c,1,
-0x0d0b08,1,
-0x0d0b04,1,
-0x0d0b00,1,
-0x0d0afc,1,
-0x0d0af8,1,
-0x0d0af4,1,
-0x0d0af0,1,
-0x0d0ac8,1,
-0x0d0ac4,1,
-0x0d0ac0,1,
-0x0d0ab8,1,
-0x0d0ab4,1,
-0x0d0ab0,1,
-0x0d0aac,1,
-0x0d0aa8,1,
-0x0d0a9c,1,
-0x0d0a98,1,
-0x0d0a94,1,
-0x0d0a90,1,
-0x0d0a8c,1,
-0x0d0a88,1,
-0x0d0a84,1,
-0x0d0a80,1,
-0x0d0a74,1,
-0x0d0a70,1,
-0x0d0a6c,1,
-0x0d0a68,1,
-0x0d0a64,1,
-0x0d0a60,1,
-0x0d0a5c,1,
-0x0d0a58,1,
-0x0d0a54,1,
-0x0d0a50,1,UNKNOWN
-0x0d0a40,1,
-0x0d0a30,1,
-0x0d0a28,1,
-0x0d0a24,1,
-0x0d0a20,1,
-0x0d0a1c,1,
-0x0d0a18,1,
-0x0d0a14,1,
-0x0d0a10,1,
-0x0d0a0c,1,
-0x0d0a08,1,
-0x0d0a04,1,
-0x0d0a00,1,
-0x0d0954,1,
-0x0d0950,1,
-0x0d0940,1,
-0x0d092c,1,
-0x0d0928,1,
-0x0d0924,1,
-0x0d0920,1,
-0x0d091c,1,
-0x0d0918,1,
-0x0d0914,1,
-0x0d0910,1,
-0x0d090c,1,
-0x0d0908,1,
-0x0d0904,1,
-0x0d0900,1,
-0x0d08fc,1,
-0x0d08f8,1,
-0x0d08f4,1,
-0x0d08f0,1,
-0x0d08c8,1,
-0x0d08c4,1,
-0x0d08c0,1,
-0x0d08b8,1,
-0x0d08b4,1,
-0x0d08b0,1,
-0x0d08ac,1,
-0x0d08a8,1,
-0x0d089c,1,
-0x0d0898,1,
-0x0d0894,1,
-0x0d0890,1,
-0x0d088c,1,
-0x0d0888,1,
-0x0d0884,1,
-0x0d0880,1,
-0x0d0874,1,
-0x0d0870,1,
-0x0d086c,1,
-0x0d0868,1,
-0x0d0864,1,
-0x0d0860,1,
-0x0d085c,1,
-0x0d0858,1,
-0x0d0854,1,
-0x0d0850,1,
-0x0d0840,1,
-0x0d0830,1,
-0x0d0828,1,
-0x0d0824,1,
-0x0d0820,1,
-0x0d081c,1,
-0x0d0818,1,
-0x0d0814,1,
-0x0d0810,1,
-0x0d080c,1,
-0x0d0808,1,
-0x0d0804,1,
-0x0d0800,1,
-0x0d0624,1,
-0x0d0620,1,
-0x0d0554,1,
-0x0d0550,1,
-0x0d0540,1,
-0x0d052c,1,
-0x0d0528,1,
-0x0d0524,1,
-0x0d0520,1,
-0x0d051c,1,
-0x0d0518,1,
-0x0d0514,1,
-0x0d0510,1,
-0x0d050c,1,
-0x0d0508,1,
-0x0d0504,1,
-0x0d0500,1,
-0x0d04fc,1,
-0x0d04f8,1,
-0x0d04f4,1,
-0x0d04f0,1,
-0x0d04c8,1,
-0x0d04c4,1,
-0x0d04c0,1,
-0x0d04b8,1,
-0x0d04b4,1,
-0x0d04b0,1,
-0x0d04ac,1,
-0x0d04a8,1,
-0x0d049c,1,
-0x0d0498,1,
-0x0d0494,1,
-0x0d0490,1,
-0x0d048c,1,
-0x0d0488,1,
-0x0d0484,1,
-0x0d0480,1,
-0x0d0474,1,
-0x0d0470,1,
-0x0d046c,1,
-0x0d0468,1,
-0x0d0464,1,
-0x0d0460,1,
-0x0d045c,1,
-0x0d0458,1,
-0x0d0454,1,
-0x0d0450,1,
-0x0d0440,1,
-0x0d0430,1,
-0x0d0428,1,
-0x0d0424,1,
-0x0d0420,1,
-0x0d041c,1,
-0x0d0418,1,
-0x0d0414,1,
-0x0d0410,1,
-0x0d040c,1,
-0x0d0408,1,
-0x0d0404,1,
-0x0d0400,1,
-0x0d0354,1,
-0x0d0350,1,
-0x0d0340,1,
-0x0d032c,1,
-0x0d0328,1,
-0x0d0324,1,
-0x0d0320,1,
-0x0d031c,1,
-0x0d0318,1,
-0x0d0314,1,
-0x0d0310,1,
-0x0d030c,1,
-0x0d0308,1,
-0x0d0304,1,
-0x0d0300,1,
-0x0d02fc,1,
-0x0d02f8,1,
-0x0d02f4,1,
-0x0d02f0,1,
-0x0d02c8,1,
-0x0d02c4,1,
-0x0d02c0,1,
-0x0d02b8,1,
-0x0d02b4,1,
-0x0d02b0,1,
-0x0d02ac,1,
-0x0d02a8,1,
-0x0d029c,1,
-0x0d0298,1,
-0x0d0294,1,
-0x0d0290,1,
-0x0d028c,1,
-0x0d0288,1,
-0x0d0284,1,
-0x0d0280,1,
-0x0d0274,1,
-0x0d0270,1,
-0x0d026c,1,
-0x0d0268,1,
-0x0d0264,1,
-0x0d0260,1,
-0x0d025c,1,
-0x0d0258,1,
-0x0d0254,1,
-0x0d0250,1,
-0x0d0240,1,
-0x0d0230,1,
-0x0d0228,1,
-0x0d0224,1,
-0x0d0220,1,
-0x0d021c,1,
-0x0d0218,1,
-0x0d0214,1,
-0x0d0210,1,
-0x0d020c,1,
-0x0d0208,1,
-0x0d0204,1,
-0x0d0200,1,
-0x0d0154,1,
-0x0d0150,1,
-0x0d0140,1,
-0x0d012c,1,
-0x0d0128,1,
-0x0d0124,1,
-0x0d0120,1,
-0x0d011c,1,
-0x0d0118,1,
-0x0d0114,1,
-0x0d0110,1,
-0x0d010c,1,
-0x0d0108,1,
-0x0d0104,1,
-0x0d0100,1,
-0x0d00fc,1,
-0x0d00f8,1,
-0x0d00f4,1,
-0x0d00f0,1,
-0x0d00c8,1,
-0x0d00c4,1,
-0x0d00c0,1,
-0x0d00b8,1,
-0x0d00b4,1,
-0x0d00b0,1,
-0x0d00ac,1,
-0x0d00a8,1,
-0x0d009c,1,
-0x0d0098,1,
-0x0d0094,1,
-0x0d0090,1,
-0x0d008c,1,
-0x0d0088,1,
-0x0d0084,1,
-0x0d0080,1,
-0x0d0074,1,
-0x0d0070,1,
-0x0d006c,1,
-0x0d0068,1,
-0x0d0064,1,
-0x0d0060,1,
-0x0d005c,1,
-0x0d0058,1,
-0x0d0054,1,
-0x0d0050,1,
-0x0d0040,1,
-0x0d0030,1,
-0x0d0028,1,
-0x0d0024,1,
-0x0d0020,1,
-0x0d001c,1,
-0x0d0018,1,
-0x0d0014,1,
-0x0d0010,1,
-0x0d000c,1,
-0x0d0008,1,
-0x0d0004,1,
-0x0d0000,1,
-0x0c2514,1,
-0x0c2510,1,
-0x0c2500,1,
-0x0c2400,1,
-0x0c2208,1,
-0x0c2204,1,
-0x0c2124,1,
-0x0c2120,1,
-0x0c211c,1,
-0x0c2118,1,
-0x0c2114,1,
-0x0c2110,1,
-0x0c210c,1,
-0x0c2108,1,
-0x0c2104,1,
-0x0c2100,1,
-0x0c2000,1,
-0x0c1ff4,1,
-0x0c1ff0,1,
-0x0c1fb4,1,
-0x0c1fb0,1,
-0x0c1fa0,1,
-0x0c1f94,1,
-0x0c1f90,1,
-0x0c1f80,1,
-0x0c1f74,1,
-0x0c1f70,1,
-0x0c1f60,1,
-0x0c1f54,1,
-0x0c1f50,1,
-0x0c1f40,1,
-0x0c1f28,1,
-0x0c1f20,1,
-0x0c1f1c,1,
-0x0c1f18,1,
-0x0c1f10,1,
-0x0c1f0c,1,
-0x0c1f04,1,
-0x0c1f00,1,
-0x0c180c,1,
-0x0c1808,1,
-0x0c1804,1,
-0x0c1800,1,
-0x0c1754,1,
-0x0c1750,1,
-0x0c1740,1,
-0x0c1734,1,
-0x0c1730,1,
-0x0c1720,1,
-0x0c1714,1,
-0x0c1710,1,
-0x0c1700,1,
-0x0c1694,1,
-0x0c1690,1,
-0x0c1680,1,
-0x0c1674,1,
-0x0c1670,1,
-0x0c1660,1,
-0x0c164c,1,
-0x0c1648,1,
-0x0c1644,1,
-0x0c1640,1,
-0x0c1600,1,
-0x0c146c,1,
-0x0c1468,1,
-0x0c145c,1,
-0x0c1458,1,
-0x0c144c,1,
-0x0c1448,1,
-0x0c143c,1,
-0x0c1438,1,
-0x0c142c,1,
-0x0c1428,1,
-0x0c141c,1,
-0x0c1418,1,
-0x0c140c,1,
-0x0c1408,1,
-0x0c130c,1,
-0x0c1308,1,
-0x0c1304,1,
-0x0c1300,1,
-0x0c12ec,1,
-0x0c12e8,1,
-0x0c12e4,1,
-0x0c12e0,1,
-0x0c12dc,1,
-0x0c12d8,1,
-0x0c12d4,1,
-0x0c12d0,1,
-0x0c12cc,1,
-0x0c12c8,1,
-0x0c12c4,1,
-0x0c12c0,1,
-0x0c12bc,1,
-0x0c12b8,1,
-0x0c12b4,1,
-0x0c12b0,1,
-0x0c12ac,1,
-0x0c12a8,1,
-0x0c12a4,1,
-0x0c12a0,1,
-0x0c129c,1,
-0x0c1298,1,
-0x0c1294,1,
-0x0c1290,1,
-0x0c128c,1,
-0x0c1288,1,
-0x0c1284,1,
-0x0c1280,1,
-0x0c127c,1,
-0x0c1278,1,
-0x0c1270,1,
-0x0c1268,1,
-0x0c1264,1,
-0x0c1260,1,
-0x0c125c,1,
-0x0c1258,1,
-0x0c1254,1,
-0x0c1250,1,
-0x0c124c,1,
-0x0c1248,1,
-0x0c1244,1,
-0x0c1240,1,
-0x0c123c,1,
-0x0c1238,1,
-0x0c1234,1,
-0x0c1230,1,
-0x0c122c,1,
-0x0c1228,1,
-0x0c1224,1,
-0x0c1220,1,
-0x0c1218,1,
-0x0c1214,1,
-0x0c1210,1,
-0x0c120c,1,
-0x0c1208,1,
-0x0c1204,1,
-0x0c1200,1,
-0x0c11fc,1,
-0x0c11f8,1,
-0x0c11f4,1,
-0x0c11f0,1,
-0x0c11ec,1,
-0x0c11e8,1,
-0x0c11e4,1,
-0x0c11e0,1,
-0x0c11dc,1,
-0x0c11d8,1,
-0x0c11d0,1,
-0x0c11cc,1,
-0x0c11c8,1,
-0x0c11c4,1,
-0x0c11c0,1,
-0x0c11bc,1,
-0x0c11b8,1,
-0x0c11b4,1,
-0x0c11b0,1,
-0x0c11ac,1,
-0x0c11a8,1,
-0x0c11a4,1,
-0x0c11a0,1,
-0x0c119c,1,
-0x0c1198,1,
-0x0c1194,1,
-0x0c1190,1,
-0x0c118c,1,
-0x0c1188,1,
-0x0c1184,1,
-0x0c1180,1,
-0x0c117c,1,
-0x0c1178,1,
-0x0c1174,1,
-0x0c1170,1,
-0x0c116c,1,
-0x0c1168,1,
-0x0c1164,1,
-0x0c1160,1,
-0x0c115c,1,
-0x0c1158,1,
-0x0c1154,1,
-0x0c1150,1,
-0x0c114c,1,
-0x0c1148,1,
-0x0c1144,1,
-0x0c1140,1,
-0x0c113c,1,
-0x0c1138,1,
-0x0c1134,1,
-0x0c1130,1,
-0x0c112c,1,
-0x0c1128,1,
-0x0c1124,1,
-0x0c1120,1,
-0x0c111c,1,
-0x0c1118,1,
-0x0c1114,1,
-0x0c1110,1,
-0x0c110c,1,
-0x0c1108,1,
-0x0c1104,1,
-0x0c1100,1,
-0x0c1064,1,
-0x0c1060,1,
-0x0c105c,1,
-0x0c1058,1,
-0x0c1054,1,
-0x0c1050,1,
-0x0c104c,1,
-0x0c1048,1,
-0x0c1044,1,
-0x0c1040,1,
-0x0c103c,1,
-0x0c1038,1,
-0x0c1034,1,
-0x0c1030,1,
-0x0c102c,1,
-0x0c1028,1,
-0x0c1024,1,
-0x0c1020,1,
-0x0c101c,1,
-0x0c1018,1,
-0x0c1014,1,
-0x0c1010,1,
-0x0c100c,1,
-0x0c1008,1,
-0x0c1004,1,
-0x0c1000,1,
-0x0c0ff4,1,
-0x0c0ff0,1,
-0x0c0fb4,1,
-0x0c0fb0,1,
-0x0c0fa0,1,
-0x0c0f94,1,
-0x0c0f90,1,
-0x0c0f80,1,
-0x0c0f74,1,
-0x0c0f70,1,
-0x0c0f60,1,
-0x0c0f54,1,
-0x0c0f50,1,
-0x0c0f40,1,
-0x0c0f28,1,
-0x0c0f20,1,
-0x0c0f1c,1,
-0x0c0f18,1,
-0x0c0f10,1,
-0x0c0f0c,1,
-0x0c0f04,1,
-0x0c0f00,1,
-0x0c080c,1,
-0x0c0808,1,
-0x0c0804,1,
-0x0c0800,1,
-0x0c0754,1,
-0x0c0750,1,
-0x0c0740,1,
-0x0c0734,1,
-0x0c0730,1,
-0x0c0720,1,
-0x0c0714,1,
-0x0c0710,1,
-0x0c0700,1,
-0x0c0694,1,
-0x0c0690,1,
-0x0c0680,1,
-0x0c0674,1,
-0x0c0670,1,
-0x0c0660,1,
-0x0c064c,1,
-0x0c0648,1,
-0x0c0644,1,
-0x0c0640,1,
-0x0c0600,1,
-0x0c046c,1,
-0x0c0468,1,
-0x0c045c,1,
-0x0c0458,1,
-0x0c044c,1,
-0x0c0448,1,
-0x0c043c,1,
-0x0c0438,1,
-0x0c042c,1,
-0x0c0428,1,
-0x0c041c,1,
-0x0c0418,1,
-0x0c040c,1,
-0x0c0408,1,
-0x0c030c,1,
-0x0c0308,1,
-0x0c0304,1,
-0x0c0300,1,
-0x0c02ec,1,
-0x0c02e8,1,
-0x0c02e4,1,
-0x0c02e0,1,
-0x0c02dc,1,
-0x0c02d8,1,
-0x0c02d4,1,
-0x0c02d0,1,
-0x0c02cc,1,
-0x0c02c8,1,
-0x0c02c4,1,
-0x0c02c0,1,
-0x0c02bc,1,
-0x0c02b8,1,
-0x0c02b4,1,
-0x0c02b0,1,
-0x0c02ac,1,
-0x0c02a8,1,
-0x0c02a4,1,
-0x0c02a0,1,
-0x0c029c,1,
-0x0c0298,1,
-0x0c0294,1,
-0x0c0290,1,
-0x0c028c,1,
-0x0c0288,1,
-0x0c0284,1,
-0x0c0280,1,
-0x0c027c,1,
-0x0c0278,1,
-0x0c0270,1,
-0x0c0268,1,
-0x0c0264,1,
-0x0c0260,1,
-0x0c025c,1,
-0x0c0258,1,
-0x0c0254,1,
-0x0c0250,1,
-0x0c024c,1,
-0x0c0248,1,
-0x0c0244,1,
-0x0c0240,1,
-0x0c023c,1,
-0x0c0238,1,
-0x0c0234,1,
-0x0c0230,1,
-0x0c022c,1,
-0x0c0228,1,
-0x0c0224,1,
-0x0c0220,1,
-0x0c0218,1,
-0x0c0214,1,
-0x0c0210,1,
-0x0c020c,1,
-0x0c0208,1,
-0x0c0204,1,
-0x0c0200,1,
-0x0c01fc,1,
-0x0c01f8,1,
-0x0c01f4,1,
-0x0c01f0,1,
-0x0c01ec,1,
-0x0c01e8,1,
-0x0c01e4,1,
-0x0c01e0,1,
-0x0c01dc,1,
-0x0c01d8,1,
-0x0c01d0,1,
-0x0c01cc,1,
-0x0c01c8,1,
-0x0c01c4,1,
-0x0c01c0,1,
-0x0c01bc,1,
-0x0c01b8,1,
-0x0c01b4,1,
-0x0c01b0,1,
-0x0c01ac,1,
-0x0c01a8,1,
-0x0c01a4,1,
-0x0c01a0,1,
-0x0c019c,1,
-0x0c0198,1,
-0x0c0194,1,
-0x0c0190,1,
-0x0c018c,1,
-0x0c0188,1,
-0x0c0184,1,
-0x0c0180,1,
-0x0c017c,1,
-0x0c0178,1,
-0x0c0174,1,
-0x0c0170,1,
-0x0c016c,1,
-0x0c0168,1,
-0x0c0164,1,
-0x0c0160,1,
-0x0c015c,1,
-0x0c0158,1,
-0x0c0154,1,
-0x0c0150,1,
-0x0c014c,1,
-0x0c0148,1,
-0x0c0144,1,
-0x0c0140,1,
-0x0c013c,1,
-0x0c0138,1,
-0x0c0134,1,
-0x0c0130,1,
-0x0c012c,1,
-0x0c0128,1,
-0x0c0124,1,
-0x0c0120,1,
-0x0c011c,1,
-0x0c0118,1,
-0x0c0114,1,
-0x0c0110,1,
-0x0c010c,1,
-0x0c0108,1,
-0x0c0104,1,
-0x0c0100,1,
-0x0c0064,1,
-0x0c0060,1,
-0x0c005c,1,
-0x0c0058,1,
-0x0c0054,1,
-0x0c0050,1,
-0x0c004c,1,
-0x0c0048,1,
-0x0c0044,1,
-0x0c0040,1,
-0x0c003c,1,
-0x0c0038,1,
-0x0c0034,1,
-0x0c0030,1,
-0x0c002c,1,
-0x0c0028,1,
-0x0c0024,1,
-0x0c0020,1,
-0x0c001c,1,
-0x0c0018,1,
-0x0c0014,1,
-0x0c0010,1,
-0x0c000c,1,
-0x0c0008,1,
-0x0c0004,1,
-0x0c0000,1,
-0x0b0f5c,1,
-0x0b0f58,1,
-0x0b0f4c,1,
-0x0b0f48,1,
-0x0b0f3c,1,
-0x0b0f38,1,
-0x0b0f2c,1,
-0x0b0f28,1,
-0x0b0f1c,1,
-0x0b0f18,1,
-0x0b0f0c,1,
-0x0b0f08,1,
-0x0b0efc,1,
-0x0b0ef8,1,
-0x0b0ef4,1,
-0x0b0ef0,1,
-0x0b0eec,1,
-0x0b0ee8,1,
-0x0b0ee4,1,
-0x0b0ee0,1,
-0x0b0edc,1,
-0x0b0ed8,1,
-0x0b0ed4,1,
-0x0b0ed0,1,
-0x0b0ebc,1,
-0x0b0eb8,1,
-0x0b0eb4,1,
-0x0b0eb0,1,
-0x0b0eac,1,
-0x0b0ea8,1,
-0x0b0ea4,1,
-0x0b0ea0,1,
-0x0b0e9c,1,
-0x0b0e98,1,
-0x0b0e94,1,
-0x0b0e90,1,
-0x0b0e7c,1,
-0x0b0e78,1,
-0x0b0e74,1,
-0x0b0e70,1,
-0x0b0e6c,1,
-0x0b0e68,1,
-0x0b0e64,1,
-0x0b0e60,1,
-0x0b0e5c,1,
-0x0b0e58,1,
-0x0b0e54,1,
-0x0b0e50,1,
-0x0b0e3c,1,
-0x0b0e38,1,
-0x0b0e34,1,
-0x0b0e30,1,
-0x0b0e2c,1,
-0x0b0e28,1,
-0x0b0e24,1,
-0x0b0e20,1,
-0x0b0e1c,1,
-0x0b0e18,1,
-0x0b0e14,1,
-0x0b0e10,1,
-0x0b0dfc,1,
-0x0b0df8,1,
-0x0b0df4,1,
-0x0b0df0,1,
-0x0b0dec,1,
-0x0b0de8,1,
-0x0b0de4,1,
-0x0b0de0,1,
-0x0b0ddc,1,
-0x0b0dd8,1,
-0x0b0dd4,1,
-0x0b0dd0,1,
-0x0b0dbc,1,
-0x0b0db8,1,
-0x0b0db4,1,
-0x0b0db0,1,
-0x0b0dac,1,
-0x0b0da8,1,
-0x0b0da4,1,
-0x0b0da0,1,
-0x0b0d9c,1,
-0x0b0d98,1,
-0x0b0d94,1,
-0x0b0d90,1,
-0x0b0d7c,1,
-0x0b0d78,1,
-0x0b0d6c,1,
-0x0b0d68,1,
-0x0b0d5c,1,
-0x0b0d58,1,
-0x0b0d4c,1,
-0x0b0d48,1,
-0x0b0d3c,1,
-0x0b0d38,1,
-0x0b0d2c,1,
-0x0b0d28,1,
-0x0b0cfc,1,
-0x0b0cf8,1,
-0x0b0cec,1,
-0x0b0ce8,1,
-0x0b0cdc,1,
-0x0b0cd8,1,
-0x0b0ccc,1,
-0x0b0cc8,1,
-0x0b0cbc,1,
-0x0b0cb8,1,
-0x0b0cac,1,
-0x0b0ca8,1,
-0x0b0bdc,1,
-0x0b0bd8,1,
-0x0b0bd4,1,
-0x0b0bd0,1,
-0x0b0bcc,1,
-0x0b0bbc,1,
-0x0b0bb8,1,
-0x0b0bb4,1,
-0x0b0bb0,1,
-0x0b0bac,1,
-0x0b0b9c,1,
-0x0b0b98,1,
-0x0b0b94,1,
-0x0b0b90,1,
-0x0b0b8c,1,
-0x0b0b7c,1,
-0x0b0b78,1,
-0x0b0b74,1,
-0x0b0b70,1,
-0x0b0b6c,1,
-0x0b0b5c,1,
-0x0b0b58,1,
-0x0b0b54,1,
-0x0b0b50,1,
-0x0b0b4c,1,
-0x0b0b3c,1,
-0x0b0b38,1,
-0x0b0b34,1,
-0x0b0b30,1,
-0x0b0b2c,1,
-0x0b0b1c,1,
-0x0b0b18,1,
-0x0b0b14,1,
-0x0b0b10,1,
-0x0b0b0c,1,
-0x0b0aa4,1,
-0x0b0aa0,1,
-0x0b0a9c,1,
-0x0b0a98,1,
-0x0b0a90,1,
-0x0b0a8c,1,
-0x0b0a88,1,
-0x0b0a74,1,
-0x0b0a6c,1,
-0x0b0a68,1,
-0x0b0a64,1,
-0x0b0a60,1,
-0x0b0a5c,1,
-0x0b0a58,1,
-0x0b0a54,1,
-0x0b0a50,1,
-0x0b0a4c,1,
-0x0b0a48,1,
-0x0b0a44,1,
-0x0b0a40,1,
-0x0b0a3c,1,
-0x0b0a38,1,
-0x0b0a34,1,
-0x0b0a30,1,
-0x0b0a2c,1,
-0x0b0a28,1,
-0x0b0a24,1,
-0x0b0a20,1,
-0x0b0a1c,1,
-0x0b0a18,1,
-0x0b0a14,1,
-0x0b0a10,1,
-0x0b0a0c,1,
-0x0b0a08,1,
-0x0b0a04,1,
-0x0b0a00,1,
-0x0b09fc,1,
-0x0b09f8,1,
-0x0b09f4,1,
-0x0b09f0,1,
-0x0b09ec,1,
-0x0b09e8,1,
-0x0b09e4,1,
-0x0b09e0,1,
-0x0b09dc,1,
-0x0b09d8,1,
-0x0b09d4,1,
-0x0b09d0,1,
-0x0b09cc,1,
-0x0b09c8,1,
-0x0b09c4,1,
-0x0b09c0,1,
-0x0b09bc,1,
-0x0b09b8,1,
-0x0b09b4,1,
-0x0b09b0,1,
-0x0b09a8,1,
-0x0b09a4,1,
-0x0b09a0,1,
-0x0b095c,1,
-0x0b0958,1,
-0x0b0954,1,
-0x0b0950,1,
-0x0b0914,1,
-0x0b0910,1,
-0x0b0900,1,
-0x0b08f4,1,
-0x0b08f0,1,
-0x0b08b4,1,
-0x0b08b0,1,
-0x0b08a0,1,
-0x0b0894,1,
-0x0b0890,1,
-0x0b0880,1,
-0x0b0874,1,
-0x0b0870,1,
-0x0b0860,1,
-0x0b0854,1,
-0x0b0850,1,
-0x0b0840,1,
-0x0b0828,1,
-0x0b0820,1,
-0x0b081c,1,
-0x0b0818,1,
-0x0b0810,1,
-0x0b080c,1,
-0x0b0804,1,
-0x0b0800,1,
-0x0b07fc,1,
-0x0b07f8,1,
-0x0b07f4,1,
-0x0b07f0,1,
-0x0b07ec,1,
-0x0b07e8,1,
-0x0b07e4,1,
-0x0b07e0,1,
-0x0b07dc,1,
-0x0b07c4,1,
-0x0b07c0,1,
-0x0b07bc,1,
-0x0b07b8,1,
-0x0b07b4,1,
-0x0b07b0,1,
-0x0b07ac,1,
-0x0b07a8,1,
-0x0b07a4,1,
-0x0b07a0,1,
-0x0b079c,1,
-0x0b0784,1,
-0x0b0780,1,
-0x0b0768,1,
-0x0b0764,1,
-0x0b0760,1,
-0x0b0754,1,
-0x0b0750,1,
-0x0b0534,1,
-0x0b0530,1,
-0x0b052c,1,
-0x0b0528,1,
-0x0b0524,1,
-0x0b0520,1,
-0x0b051c,1,
-0x0b0518,1,
-0x0b0514,1,
-0x0b0510,1,
-0x0b050c,1,
-0x0b0508,1,
-0x0b0504,1,
-0x0b0500,1,
-0x0b0408,1,
-0x0b0404,1,
-0x0b0400,1,
-0x0b03fc,1,
-0x0b03f8,1,
-0x0b03f4,1,
-0x0b03f0,1,
-0x0b03ec,1,
-0x0b03e8,1,
-0x0b03e4,1,
-0x0b03e0,1,
-0x0b03dc,1,
-0x0b03d8,1,
-0x0b03d4,1,
-0x0b03d0,1,
-0x0b03cc,1,
-0x0b03c8,1,
-0x0b03c4,1,
-0x0b03c0,1,
-0x0b03bc,1,
-0x0b03b8,1,
-0x0b03b4,1,
-0x0b03b0,1,
-0x0b03ac,1,
-0x0b03a8,1,
-0x0b03a4,1,
-0x0b03a0,1,
-0x0b039c,1,
-0x0b0398,1,
-0x0b0394,1,
-0x0b0390,1,
-0x0b038c,1,
-0x0b0388,1,
-0x0b0384,1,
-0x0b0380,1,
-0x0b037c,1,
-0x0b0378,1,
-0x0b0374,1,
-0x0b0370,1,
-0x0b036c,1,
-0x0b0368,1,
-0x0b0364,1,
-0x0b0360,1,
-0x0b035c,1,
-0x0b0358,1,
-0x0b0354,1,
-0x0b0350,1,
-0x0b034c,1,
-0x0b0348,1,
-0x0b0344,1,
-0x0b0340,1,
-0x0b033c,1,
-0x0b0338,1,
-0x0b0334,1,
-0x0b0330,1,
-0x0b032c,1,
-0x0b0328,1,
-0x0b0324,1,
-0x0b0320,1,
-0x0b031c,1,
-0x0b0318,1,
-0x0b0314,1,
-0x0b0310,1,
-0x0b030c,1,
-0x0b0308,1,
-0x0b0304,1,
-0x0b0300,1,
-0x0b02fc,1,
-0x0b02f8,1,
-0x0b02f4,1,
-0x0b02f0,1,
-0x0b02ec,1,
-0x0b02e8,1,
-0x0b02e4,1,
-0x0b02e0,1,
-0x0b02dc,1,
-0x0b02d8,1,
-0x0b02d4,1,
-0x0b02d0,1,
-0x0b02cc,1,
-0x0b02c8,1,
-0x0b02c4,1,
-0x0b02c0,1,
-0x0b02bc,1,
-0x0b02b8,1,
-0x0b02b4,1,
-0x0b02b0,1,
-0x0b02ac,1,
-0x0b02a8,1,
-0x0b02a4,1,
-0x0b02a0,1,
-0x0b029c,1,
-0x0b0298,1,
-0x0b0294,1,
-0x0b0290,1,
-0x0b028c,1,
-0x0b0288,1,
-0x0b0284,1,
-0x0b0280,1,
-0x0b027c,1,
-0x0b0278,1,
-0x0b0274,1,
-0x0b0270,1,
-0x0b026c,1,
-0x0b0268,1,
-0x0b0264,1,
-0x0b0260,1,
-0x0b025c,1,
-0x0b0258,1,
-0x0b0254,1,
-0x0b0250,1,
-0x0b01f8,1,
-0x0b01f4,1,
-0x0b01f0,1,
-0x0b01ec,1,
-0x0b01e8,1,
-0x0b01e4,1,
-0x0b01e0,1,
-0x0b01dc,1,
-0x0b01d8,1,
-0x0b01d4,1,
-0x0b01cc,1,
-0x0b01c8,1,
-0x0b01c4,1,
-0x0b01c0,1,
-0x0b01ac,1,
-0x0b01a8,1,
-0x0b01a4,1,
-0x0b01a0,1,
-0x0b0180,1,
-0x0b017c,1,
-0x0b0178,1,
-0x0b0174,1,
-0x0b0170,1,
-0x0b016c,1,
-0x0b0168,1,
-0x0b0164,1,
-0x0b0160,1,
-0x0b015c,1,
-0x0b0158,1,
-0x0b0154,1,
-0x0b0150,1,
-0x0b014c,1,
-0x0b0148,1,
-0x0b0144,1,
-0x0b0140,1,
-0x0b013c,1,
-0x0b0138,1,
-0x0b0134,1,
-0x0b0130,1,
-0x0b012c,1,
-0x0b0128,1,
-0x0b011c,1,
-0x0b0118,1,
-0x0b0110,1,
-0x0b010c,1,
-0x0b0108,1,
-0x0b0104,1,
-0x0b0100,1,
-0x0b00fc,1,
-0x0b00f8,1,
-0x0b00f4,1,
-0x0b00f0,1,
-0x0b00e4,1,
-0x0b00e0,1,
-0x0b00dc,1,
-0x0b00d8,1,
-0x0b00d4,1,
-0x0b00d0,1,
-0x0b00cc,1,
-0x0b00c8,1,
-0x0b00c4,1,
-0x0b00c0,1,
-0x0b00bc,1,
-0x0b00b8,1,
-0x0b00b4,1,
-0x0b00b0,1,
-0x0b00ac,1,
-0x0b00a8,1,
-0x0b00a4,1,
-0x0b00a0,1,
-0x0b009c,1,
-0x0b0098,1,
-0x0b0094,1,
-0x0b0090,1,
-0x0b008c,1,
-0x0b0088,1,
-0x0b0084,1,
-0x0b0080,1,
-0x0b007c,1,
-0x0b0078,1,
-0x0b0074,1,
-0x0b0070,1,
-0x0b006c,1,
-0x0b0068,1,
-0x0b0064,1,
-0x0b0060,1,
-0x0b005c,1,
-0x0b0058,1,
-0x0b0054,1,
-0x0b0050,1,
-0x0b004c,1,
-0x0b0048,1,
-0x0b0044,1,
-0x0b0040,1,
-0x0b0038,1,
-0x0b0030,1,
-0x0b002c,1,
-0x0b0028,1,
-0x0b0024,1,
-0x0b0020,1,
-0x0b001c,1,
-0x0b0018,1,
-0x0b0014,1,
-0x0b0010,1,
-0x0b000c,1,
-0x0b0008,1,
-0x0b0004,1,
-0x0b0000,1,
-0x074550,1,
-0x07454c,1,
-0x074548,1,
-0x074544,1,
-0x074540,1,
-0x074504,1,
-0x074500,1,
-0x0744f8,1,
-0x0744ac,1,
-0x0744a8,1,
-0x0744a4,1,
-0x0744a0,1,
-0x07449c,1,
-0x074498,1,
-0x074494,1,
-0x074490,1,
-0x07448c,1,
-0x074488,1,
-0x074484,1,
-0x074480,1,
-0x0743d4,1,
-0x0743d0,1,
-0x0743c0,1,
-0x0743b4,1,
-0x0743b0,1,
-0x0743a0,1,
-0x074394,1,
-0x074390,1,
-0x074380,1,
-0x074374,1,
-0x074370,1,
-0x074360,1,
-0x074354,1,
-0x074350,1,
-0x074340,1,
-0x074334,1,
-0x074330,1,
-0x074320,1,
-0x074314,1,
-0x074310,1,
-0x074300,1,
-0x0742f4,1,
-0x0742f0,1,
-0x0742e0,1,
-0x0742d4,1,
-0x0742d0,1,
-0x0742c0,1,
-0x0742b4,1,
-0x0742b0,1,
-0x0742a0,1,
-0x074294,1,
-0x074290,1,
-0x074280,1,
-0x074274,1,
-0x074270,1,
-0x074260,1,
-0x074254,1,
-0x074250,1,
-0x074240,1,
-0x074234,1,
-0x074230,1,
-0x074220,1,
-0x074214,1,
-0x074210,1,
-0x074200,1,
-0x073d0c,1,
-0x073d08,1,
-0x073d04,1,
-0x073d00,1,
-0x073cfc,1,
-0x073cf8,1,
-0x073cf4,1,
-0x073cf0,1,
-0x073cec,1,
-0x073ce8,1,
-0x073ce4,1,
-0x073ce0,1,
-0x073cdc,1,
-0x073cd8,1,
-0x073cd4,1,
-0x073cd0,1,
-0x073ccc,1,
-0x073cc8,1,
-0x073cc4,1,
-0x073cc0,1,
-0x073cbc,1,
-0x073cb8,1,
-0x073cb4,1,
-0x073cb0,1,
-0x073cac,1,
-0x073ca8,1,
-0x073ca4,1,
-0x073ca0,1,
-0x073c9c,1,
-0x073c98,1,
-0x073c94,1,
-0x073c90,1,
-0x073c8c,1,
-0x073c88,1,
-0x073c84,1,
-0x073c80,1,
-0x073c7c,1,
-0x073c78,1,
-0x073c74,1,
-0x073c70,1,
-0x073c6c,1,
-0x073c68,1,
-0x073c64,1,
-0x073c60,1,
-0x073c5c,1,
-0x073c58,1,
-0x073c54,1,
-0x073c50,1,
-0x073c4c,1,
-0x073c48,1,
-0x073c44,1,
-0x073c40,1,
-0x073c3c,1,
-0x073c38,1,
-0x073c34,1,
-0x073c30,1,
-0x073c2c,1,
-0x073c28,1,
-0x073c24,1,
-0x073c20,1,
-0x073c1c,1,
-0x073c18,1,
-0x073c14,1,
-0x073c10,1,
-0x073c0c,1,
-0x073c08,1,
-0x073c04,1,
-0x073c00,1,
-0x073bfc,1,
-0x073bf8,1,
-0x073bf4,1,
-0x073bf0,1,
-0x073bec,1,
-0x073be8,1,
-0x073be4,1,
-0x073be0,1,
-0x073bdc,1,
-0x073bd8,1,
-0x073bd4,1,
-0x073bd0,1,
-0x073bcc,1,
-0x073bc8,1,
-0x073bc4,1,
-0x073bc0,1,
-0x073bbc,1,
-0x073bb8,1,
-0x073bb4,1,
-0x073bb0,1,
-0x073bac,1,
-0x073ba8,1,
-0x073ba4,1,
-0x073ba0,1,
-0x073b9c,1,
-0x073b98,1,
-0x073b94,1,
-0x073b90,1,
-0x073b8c,1,
-0x073b88,1,
-0x073b84,1,
-0x073b80,1,
-0x073b7c,1,
-0x073b78,1,
-0x073b74,1,
-0x073b70,1,
-0x073b6c,1,
-0x073b68,1,
-0x073b64,1,
-0x073b60,1,
-0x073b5c,1,
-0x073b58,1,
-0x073b54,1,
-0x073b50,1,
-0x073b4c,1,
-0x073b48,1,
-0x073b44,1,
-0x073b40,1,
-0x073b3c,1,
-0x073b38,1,
-0x073b34,1,
-0x073b30,1,
-0x073b2c,1,
-0x073b28,1,
-0x073b24,1,
-0x073b20,1,
-0x073b1c,1,
-0x073b18,1,
-0x073b14,1,
-0x073b10,1,
-0x073b0c,1,
-0x073b08,1,
-0x073b04,1,
-0x073b00,1,
-0x073afc,1,
-0x073af8,1,
-0x073af4,1,
-0x073af0,1,
-0x073aec,1,
-0x073ae8,1,
-0x073ae4,1,
-0x073ae0,1,
-0x073adc,1,
-0x073ad8,1,
-0x073ad4,1,
-0x073ad0,1,
-0x073acc,1,
-0x073ac8,1,
-0x073ac4,1,
-0x073ac0,1,
-0x073abc,1,
-0x073ab8,1,
-0x073ab4,1,
-0x073ab0,1,
-0x073aac,1,
-0x073aa8,1,
-0x073aa4,1,
-0x073aa0,1,
-0x073a9c,1,
-0x073a98,1,
-0x073a94,1,
-0x073a90,1,
-0x073a8c,1,
-0x073a88,1,
-0x073a84,1,
-0x073a80,1,
-0x073a7c,1,
-0x073a78,1,
-0x073a74,1,
-0x073a70,1,
-0x073a6c,1,
-0x073a68,1,
-0x073a64,1,
-0x073a60,1,
-0x073a5c,1,
-0x073a58,1,
-0x073a54,1,
-0x073a50,1,
-0x073a4c,1,
-0x073a48,1,
-0x073a44,1,
-0x073a40,1,
-0x073a3c,1,
-0x073a38,1,
-0x073a34,1,
-0x073a30,1,
-0x073a2c,1,
-0x073a28,1,
-0x073a24,1,
-0x073a20,1,
-0x073a1c,1,
-0x073a18,1,
-0x073a14,1,
-0x073a10,1,
-0x073a0c,1,
-0x073a08,1,
-0x073a04,1,
-0x073a00,1,
-0x0739fc,1,
-0x0739f8,1,
-0x0739f4,1,
-0x0739f0,1,
-0x0739ec,1,
-0x0739e8,1,
-0x0739e4,1,
-0x0739e0,1,
-0x0739dc,1,
-0x0739d8,1,
-0x0739d4,1,
-0x0739d0,1,
-0x0739cc,1,
-0x0739c8,1,
-0x0739c4,1,
-0x0739c0,1,
-0x0739bc,1,
-0x0739b8,1,
-0x0739b4,1,
-0x0739b0,1,
-0x0739ac,1,
-0x0739a8,1,
-0x0739a4,1,
-0x0739a0,1,
-0x07399c,1,
-0x073998,1,
-0x073994,1,
-0x073990,1,
-0x07398c,1,
-0x073988,1,
-0x073984,1,
-0x073980,1,
-0x07397c,1,
-0x073978,1,
-0x073974,1,
-0x073970,1,
-0x07396c,1,
-0x073968,1,
-0x073964,1,
-0x073960,1,
-0x07395c,1,
-0x073958,1,
-0x073954,1,
-0x073950,1,
-0x07394c,1,
-0x073948,1,
-0x073944,1,
-0x073940,1,
-0x07393c,1,
-0x073938,1,
-0x073934,1,
-0x073930,1,
-0x07392c,1,
-0x073928,1,
-0x073924,1,
-0x073920,1,
-0x07391c,1,
-0x073918,1,
-0x073914,1,
-0x073910,1,
-0x07390c,1,
-0x073908,1,
-0x073904,1,
-0x073900,1,
-0x0738fc,1,
-0x0738f8,1,
-0x0738f4,1,
-0x0738f0,1,
-0x0738ec,1,
-0x0738e8,1,
-0x0738e4,1,
-0x0738e0,1,
-0x0738dc,1,
-0x0738d8,1,
-0x0738d4,1,
-0x0738d0,1,
-0x0738cc,1,
-0x0738c8,1,
-0x0738c4,1,
-0x0738c0,1,
-0x0738bc,1,
-0x0738b8,1,
-0x0738b4,1,
-0x0738b0,1,
-0x0738ac,1,
-0x0738a8,1,
-0x0738a4,1,
-0x0738a0,1,
-0x07389c,1,
-0x073898,1,
-0x073894,1,
-0x073890,1,
-0x07388c,1,
-0x073888,1,
-0x073884,1,
-0x073880,1,
-0x07387c,1,
-0x073878,1,
-0x073874,1,
-0x073870,1,
-0x07386c,1,
-0x073868,1,
-0x073864,1,
-0x073860,1,
-0x07385c,1,
-0x073858,1,
-0x073854,1,
-0x073850,1,
-0x07384c,1,
-0x073848,1,
-0x073844,1,
-0x073840,1,
-0x07383c,1,
-0x073838,1,
-0x073834,1,
-0x073830,1,
-0x07382c,1,
-0x073828,1,
-0x073824,1,
-0x073820,1,
-0x07381c,1,
-0x073818,1,
-0x073814,1,
-0x073810,1,
-0x07380c,1,
-0x073808,1,
-0x073804,1,
-0x073800,1,
-0x07350c,1,
-0x073508,1,
-0x073504,1,
-0x073500,1,
-0x0734fc,1,
-0x0734f8,1,
-0x0734f4,1,
-0x0734f0,1,
-0x0734ec,1,
-0x0734e8,1,
-0x0734e4,1,
-0x0734e0,1,
-0x0734dc,1,
-0x0734d8,1,
-0x0734d4,1,
-0x0734d0,1,
-0x0734cc,1,
-0x0734c8,1,
-0x0734c4,1,
-0x0734c0,1,
-0x0734bc,1,
-0x0734b8,1,
-0x0734b4,1,
-0x0734b0,1,
-0x0734ac,1,
-0x0734a8,1,
-0x0734a4,1,
-0x0734a0,1,
-0x07349c,1,
-0x073498,1,
-0x073494,1,
-0x073490,1,
-0x07348c,1,
-0x073488,1,
-0x073484,1,
-0x073480,1,
-0x07347c,1,
-0x073478,1,
-0x073474,1,
-0x073470,1,
-0x07346c,1,
-0x073468,1,
-0x073464,1,
-0x073460,1,
-0x07345c,1,
-0x073458,1,
-0x073454,1,
-0x073450,1,
-0x07344c,1,
-0x073448,1,
-0x073444,1,
-0x073440,1,
-0x07343c,1,
-0x073438,1,
-0x073434,1,
-0x073430,1,
-0x07342c,1,
-0x073428,1,
-0x073424,1,
-0x073420,1,
-0x07341c,1,
-0x073418,1,
-0x073414,1,
-0x073410,1,
-0x07340c,1,
-0x073408,1,
-0x073404,1,
-0x073400,1,
-0x0733fc,1,
-0x0733f8,1,
-0x0733f4,1,
-0x0733f0,1,
-0x0733ec,1,
-0x0733e8,1,
-0x0733e4,1,
-0x0733e0,1,
-0x0733dc,1,
-0x0733d8,1,
-0x0733d4,1,
-0x0733d0,1,
-0x0733cc,1,
-0x0733c8,1,
-0x0733c4,1,
-0x0733c0,1,
-0x0733bc,1,
-0x0733b8,1,
-0x0733b4,1,
-0x0733b0,1,
-0x0733ac,1,
-0x0733a8,1,
-0x0733a4,1,
-0x0733a0,1,
-0x07339c,1,
-0x073398,1,
-0x073394,1,
-0x073390,1,
-0x07338c,1,
-0x073388,1,
-0x073384,1,
-0x073380,1,
-0x07337c,1,
-0x073378,1,
-0x073374,1,
-0x073370,1,
-0x07336c,1,
-0x073368,1,
-0x073364,1,
-0x073360,1,
-0x07335c,1,
-0x073358,1,
-0x073354,1,
-0x073350,1,
-0x07334c,1,
-0x073348,1,
-0x073344,1,
-0x073340,1,
-0x07333c,1,
-0x073338,1,
-0x073334,1,
-0x073330,1,
-0x07332c,1,
-0x073328,1,
-0x073324,1,
-0x073320,1,
-0x07331c,1,
-0x073318,1,
-0x073314,1,
-0x073310,1,
-0x07330c,1,
-0x073308,1,
-0x073304,1,
-0x073300,1,
-0x0732fc,1,
-0x0732f8,1,
-0x0732f4,1,
-0x0732f0,1,
-0x0732ec,1,
-0x0732e8,1,
-0x0732e4,1,
-0x0732e0,1,
-0x0732dc,1,
-0x0732d8,1,
-0x0732d4,1,
-0x0732d0,1,
-0x0732cc,1,
-0x0732c8,1,
-0x0732c4,1,
-0x0732c0,1,
-0x0732bc,1,
-0x0732b8,1,
-0x0732b4,1,
-0x0732b0,1,
-0x0732ac,1,
-0x0732a8,1,
-0x0732a4,1,
-0x0732a0,1,
-0x07329c,1,
-0x073298,1,
-0x073294,1,
-0x073290,1,
-0x07328c,1,
-0x073288,1,
-0x073284,1,
-0x073280,1,
-0x07327c,1,
-0x073278,1,
-0x073274,1,
-0x073270,1,
-0x07326c,1,
-0x073268,1,
-0x073264,1,
-0x073260,1,
-0x07325c,1,
-0x073258,1,
-0x073254,1,
-0x073250,1,
-0x07324c,1,
-0x073248,1,
-0x073244,1,
-0x073240,1,
-0x07323c,1,
-0x073238,1,
-0x073234,1,
-0x073230,1,
-0x07322c,1,
-0x073228,1,
-0x073224,1,
-0x073220,1,
-0x07321c,1,
-0x073218,1,
-0x073214,1,
-0x073210,1,
-0x07320c,1,
-0x073208,1,
-0x073204,1,
-0x073200,1,
-0x0731fc,1,
-0x0731f8,1,
-0x0731f4,1,
-0x0731f0,1,
-0x0731ec,1,
-0x0731e8,1,
-0x0731e4,1,
-0x0731e0,1,
-0x0731dc,1,
-0x0731d8,1,
-0x0731d4,1,
-0x0731d0,1,
-0x0731cc,1,
-0x0731c8,1,
-0x0731c4,1,
-0x0731c0,1,
-0x0731bc,1,
-0x0731b8,1,
-0x0731b4,1,
-0x0731b0,1,
-0x0731ac,1,
-0x0731a8,1,
-0x0731a4,1,
-0x0731a0,1,
-0x07319c,1,
-0x073198,1,
-0x073194,1,
-0x073190,1,
-0x07318c,1,
-0x073188,1,
-0x073184,1,
-0x073180,1,
-0x07317c,1,
-0x073178,1,
-0x073174,1,
-0x073170,1,
-0x07316c,1,
-0x073168,1,
-0x073164,1,
-0x073160,1,
-0x07315c,1,
-0x073158,1,
-0x073154,1,
-0x073150,1,
-0x07314c,1,
-0x073148,1,
-0x073144,1,
-0x073140,1,
-0x07313c,1,
-0x073138,1,
-0x073134,1,
-0x073130,1,
-0x07312c,1,
-0x073128,1,
-0x073124,1,
-0x073120,1,
-0x07311c,1,
-0x073118,1,
-0x073114,1,
-0x073110,1,
-0x07310c,1,
-0x073108,1,
-0x073104,1,
-0x073100,1,
-0x0730fc,1,
-0x0730f8,1,
-0x0730f4,1,
-0x0730f0,1,
-0x0730ec,1,
-0x0730e8,1,
-0x0730e4,1,
-0x0730e0,1,
-0x0730dc,1,
-0x0730d8,1,
-0x0730d4,1,
-0x0730d0,1,
-0x0730cc,1,
-0x0730c8,1,
-0x0730c4,1,
-0x0730c0,1,
-0x0730bc,1,
-0x0730b8,1,
-0x0730b4,1,
-0x0730b0,1,
-0x0730ac,1,
-0x0730a8,1,
-0x0730a4,1,
-0x0730a0,1,
-0x07309c,1,
-0x073098,1,
-0x073094,1,
-0x073090,1,
-0x07308c,1,
-0x073088,1,
-0x073084,1,
-0x073080,1,
-0x07307c,1,
-0x073078,1,
-0x073074,1,
-0x073070,1,
-0x07306c,1,
-0x073068,1,
-0x073064,1,
-0x073060,1,
-0x07305c,1,
-0x073058,1,
-0x073054,1,
-0x073050,1,
-0x07304c,1,
-0x073048,1,
-0x073044,1,
-0x073040,1,
-0x07303c,1,
-0x073038,1,
-0x073034,1,
-0x073030,1,
-0x07302c,1,
-0x073028,1,
-0x073024,1,
-0x073020,1,
-0x07301c,1,
-0x073018,1,
-0x073014,1,
-0x073010,1,
-0x07300c,1,
-0x073008,1,
-0x073004,1,
-0x073000,1,
-0x072018,1,
-0x072014,1,
-0x072010,1,
-0x07200c,1,
-0x072008,1,
-0x072004,1,
-0x072000,1,
-0x071018,1,
-0x071014,1,
-0x071010,1,
-0x07100c,1,
-0x071008,1,
-0x071004,1,
-0x071000,1,
-0x070e18,1,
-0x070e14,1,
-0x070e10,1,
-0x070e0c,1,
-0x070e08,1,
-0x070e04,1,
-0x070e00,1,
-0x070db4,1,
-0x070db0,1,
-0x070da0,1,
-0x070d94,1,
-0x070d90,1,
-0x070d80,1,
-0x070d74,1,
-0x070d70,1,
-0x070d60,1,
-0x070d54,1,
-0x070d50,1,
-0x070d40,1,
-0x070d30,1,
-0x070d2c,1,
-0x070d28,1,
-0x070d1c,1,
-0x070d18,1,
-0x070d14,1,
-0x070d10,1,
-0x070d0c,1,
-0x070c44,1,
-0x070c40,1,
-0x0702f4,1,
-0x0702f0,1,
-0x0702ec,1,
-0x0702e8,1,
-0x0702e4,1,
-0x0702e0,1,
-0x0702dc,1,
-0x0702d8,1,
-0x0702d4,1,
-0x0702d0,1,
-0x0702cc,1,
-0x0702c8,1,
-0x0702c4,1,
-0x0702c0,1,
-0x0702b4,1,
-0x0702b0,1,
-0x0702a0,1,
-0x070290,1,
-0x07028c,1,
-0x070288,1,
-0x070284,1,
-0x070280,1,
-0x07027c,1,
-0x070278,1,
-0x070274,1,
-0x070270,1,
-0x07026c,1,
-0x070268,1,
-0x070264,1,
-0x070260,1,
-0x07025c,1,
-0x070258,1,
-0x070254,1,
-0x070250,1,
-0x07023c,1,
-0x070238,1,
-0x070234,1,
-0x070230,1,
-0x07022c,1,
-0x070224,1,
-0x070220,1,
-0x07021c,1,
-0x070210,1,
-0x070208,1,
-0x070204,1,
-0x070200,1,
-0x0701b4,1,
-0x0701b0,1,
-0x0701a0,1,
-0x07018c,1,
-0x070188,1,
-0x070184,1,
-0x070180,1,
-0x070150,1,
-0x07014c,1,
-0x070148,1,
-0x070144,1,
-0x070140,1,
-0x070130,1,
-0x07012c,1,
-0x070128,1,
-0x070120,1,
-0x07011c,1,
-0x070118,1,
-0x070114,1,
-0x070110,1,
-0x07010c,1,
-0x070104,1,
-0x0700fc,1,
-0x0700f8,1,
-0x0700f4,1,
-0x0700f0,1,
-0x070094,1,
-0x070090,1,
-0x070080,1,
-0x070074,1,
-0x070070,1,
-0x070060,1,
-0x070054,1,
-0x070050,1,
-0x070040,1,
-0x070028,1,
-0x070020,1,
-0x07001c,1,
-0x070018,1,
-0x070010,1,
-0x07000c,1,
-0x070004,1,
-0x070000,1,
-0x060000,0,
-0x0577fc,1,UNKNOWN
-0x0577f8,1,UNKNOWN
-0x057208,1,UNKNOWN
-0x057204,1,UNKNOWN
-0x057200,1,UNKNOWN
-0x057100,1,UNKNOWN
-0x057020,1,UNKNOWN
-0x057000,1,UNKNOWN
-0x056ff0,1,UNKNOWN
-0x056fe0,1,UNKNOWN
-0x056fd0,1,UNKNOWN
-0x056fc0,1,UNKNOWN
-0x056fb0,1,UNKNOWN
-0x056fa0,1,UNKNOWN
-0x056f90,1,UNKNOWN
-0x056f80,1,UNKNOWN
-0x056f70,1,UNKNOWN
-0x056f60,1,UNKNOWN
-0x056f50,1,UNKNOWN
-0x056f40,1,UNKNOWN
-0x056f30,1,UNKNOWN
-0x056f20,1,UNKNOWN
-0x056f10,1,UNKNOWN
-0x056f00,1,UNKNOWN
-0x056ef0,1,UNKNOWN
-0x056ee0,1,UNKNOWN
-0x056ed0,1,UNKNOWN
-0x056ec0,1,UNKNOWN
-0x056eb0,1,UNKNOWN
-0x056ea0,1,UNKNOWN
-0x056e90,1,UNKNOWN
-0x056e80,1,UNKNOWN
-0x056e70,1,UNKNOWN
-0x056e60,1,UNKNOWN
-0x056e50,1,UNKNOWN
-0x056e40,1,UNKNOWN
-0x056e30,1,UNKNOWN
-0x056e20,1,UNKNOWN
-0x056e10,1,UNKNOWN
-0x056e00,1,UNKNOWN
-0x056df0,1,UNKNOWN
-0x056de0,1,UNKNOWN
-0x056dd0,1,UNKNOWN
-0x056dc0,1,UNKNOWN
-0x056db0,1,UNKNOWN
-0x056da0,1,UNKNOWN
-0x056d90,1,UNKNOWN
-0x056d80,1,UNKNOWN
-0x056d70,1,UNKNOWN
-0x056d60,1,UNKNOWN
-0x056d50,1,UNKNOWN
-0x056d40,1,UNKNOWN
-0x056d30,1,UNKNOWN
-0x056d20,1,UNKNOWN
-0x056d10,1,UNKNOWN
-0x056d00,1,UNKNOWN
-0x056cf0,1,UNKNOWN
-0x056ce0,1,UNKNOWN
-0x056cd0,1,UNKNOWN
-0x056cc0,1,UNKNOWN
-0x056cb0,1,UNKNOWN
-0x056ca0,1,UNKNOWN
-0x056c90,1,UNKNOWN
-0x056c80,1,UNKNOWN
-0x056c70,1,UNKNOWN
-0x056c60,1,UNKNOWN
-0x056c50,1,UNKNOWN
-0x056c40,1,UNKNOWN
-0x056c30,1,UNKNOWN
-0x056c20,1,UNKNOWN
-0x056c10,1,UNKNOWN
-0x056c00,1,UNKNOWN
-0x056bf0,1,UNKNOWN
-0x056be0,1,UNKNOWN
-0x056bd0,1,UNKNOWN
-0x056bc0,1,UNKNOWN
-0x056bb0,1,UNKNOWN
-0x056ba0,1,UNKNOWN
-0x056b90,1,UNKNOWN
-0x056b80,1,UNKNOWN
-0x056b70,1,UNKNOWN
-0x056b60,1,UNKNOWN
-0x056b50,1,UNKNOWN
-0x056b40,1,UNKNOWN
-0x056b30,1,UNKNOWN
-0x056b20,1,UNKNOWN
-0x056b10,1,UNKNOWN
-0x056b00,1,UNKNOWN
-0x056af0,1,UNKNOWN
-0x056ae0,1,UNKNOWN
-0x056ad0,1,UNKNOWN
-0x056ac0,1,UNKNOWN
-0x056ab0,1,UNKNOWN
-0x056aa0,1,UNKNOWN
-0x056a90,1,UNKNOWN
-0x056a80,1,UNKNOWN
-0x056a70,1,UNKNOWN
-0x056a60,1,UNKNOWN
-0x056a50,1,UNKNOWN
-0x056a40,1,UNKNOWN
-0x056a30,1,UNKNOWN
-0x056a20,1,UNKNOWN
-0x056a10,1,UNKNOWN
-0x056a00,1,UNKNOWN
-0x0569f0,1,UNKNOWN
-0x0569e0,1,UNKNOWN
-0x0569d0,1,UNKNOWN
-0x0569c0,1,UNKNOWN
-0x0569b0,1,UNKNOWN
-0x0569a0,1,UNKNOWN
-0x056990,1,UNKNOWN
-0x056980,1,UNKNOWN
-0x056970,1,UNKNOWN
-0x056960,1,UNKNOWN
-0x056950,1,UNKNOWN
-0x056940,1,UNKNOWN
-0x056930,1,UNKNOWN
-0x056920,1,UNKNOWN
-0x056910,1,UNKNOWN
-0x056900,1,UNKNOWN
-0x0568f0,1,UNKNOWN
-0x0568e0,1,UNKNOWN
-0x0568d0,1,UNKNOWN
-0x0568c0,1,UNKNOWN
-0x0568b0,1,UNKNOWN
-0x0568a0,1,UNKNOWN
-0x056890,1,UNKNOWN
-0x056880,1,UNKNOWN
-0x056870,1,UNKNOWN
-0x056860,1,UNKNOWN
-0x056850,1,UNKNOWN
-0x056840,1,UNKNOWN
-0x056830,1,UNKNOWN
-0x056820,1,UNKNOWN
-0x056810,1,UNKNOWN
-0x056800,1,UNKNOWN
-0x0567f0,1,UNKNOWN
-0x0567e0,1,UNKNOWN
-0x0567d0,1,UNKNOWN
-0x0567c0,1,UNKNOWN
-0x0567b0,1,UNKNOWN
-0x0567a0,1,UNKNOWN
-0x056790,1,UNKNOWN
-0x056780,1,UNKNOWN
-0x056770,1,UNKNOWN
-0x056760,1,UNKNOWN
-0x056750,1,UNKNOWN
-0x056740,1,UNKNOWN
-0x056730,1,UNKNOWN
-0x056720,1,UNKNOWN
-0x056710,1,UNKNOWN
-0x056700,1,UNKNOWN
-0x0566f0,1,UNKNOWN
-0x0566e0,1,UNKNOWN
-0x0566d0,1,UNKNOWN
-0x0566c0,1,UNKNOWN
-0x0566b0,1,UNKNOWN
-0x0566a0,1,UNKNOWN
-0x056690,1,UNKNOWN
-0x056680,1,UNKNOWN
-0x056670,1,UNKNOWN
-0x056660,1,UNKNOWN
-0x056650,1,UNKNOWN
-0x056640,1,UNKNOWN
-0x056630,1,UNKNOWN
-0x056620,1,UNKNOWN
-0x056610,1,UNKNOWN
-0x056600,1,UNKNOWN
-0x0565f0,1,UNKNOWN
-0x0565e0,1,UNKNOWN
-0x0565d0,1,UNKNOWN
-0x0565c0,1,UNKNOWN
-0x0565b0,1,UNKNOWN
-0x0565a0,1,UNKNOWN
-0x056590,1,UNKNOWN
-0x056580,1,UNKNOWN
-0x056570,1,UNKNOWN
-0x056560,1,UNKNOWN
-0x056550,1,UNKNOWN
-0x056540,1,UNKNOWN
-0x056530,1,UNKNOWN
-0x056520,1,UNKNOWN
-0x056510,1,UNKNOWN
-0x056500,1,UNKNOWN
-0x0564f0,1,UNKNOWN
-0x0564e0,1,UNKNOWN
-0x0564d0,1,UNKNOWN
-0x0564c0,1,UNKNOWN
-0x0564b0,1,UNKNOWN
-0x0564a0,1,UNKNOWN
-0x056490,1,UNKNOWN
-0x056480,1,UNKNOWN
-0x056470,1,UNKNOWN
-0x056460,1,UNKNOWN
-0x056450,1,UNKNOWN
-0x056440,1,UNKNOWN
-0x056430,1,UNKNOWN
-0x056420,1,UNKNOWN
-0x056410,1,UNKNOWN
-0x056400,1,UNKNOWN
-0x0563f0,1,UNKNOWN
-0x0563e0,1,UNKNOWN
-0x0563d0,1,UNKNOWN
-0x0563c0,1,UNKNOWN
-0x0563b0,1,UNKNOWN
-0x0563a0,1,UNKNOWN
-0x056390,1,UNKNOWN
-0x056380,1,UNKNOWN
-0x056370,1,UNKNOWN
-0x056360,1,UNKNOWN
-0x056350,1,UNKNOWN
-0x056340,1,UNKNOWN
-0x056330,1,UNKNOWN
-0x056320,1,UNKNOWN
-0x056310,1,UNKNOWN
-0x056300,1,UNKNOWN
-0x0562f0,1,UNKNOWN
-0x0562e0,1,UNKNOWN
-0x0562d0,1,UNKNOWN
-0x0562c0,1,UNKNOWN
-0x0562b0,1,UNKNOWN
-0x0562a0,1,UNKNOWN
-0x056290,1,UNKNOWN
-0x056280,1,UNKNOWN
-0x056270,1,UNKNOWN
-0x056260,1,UNKNOWN
-0x056250,1,UNKNOWN
-0x056240,1,UNKNOWN
-0x056230,1,UNKNOWN
-0x056220,1,UNKNOWN
-0x056210,1,UNKNOWN
-0x056200,1,UNKNOWN
-0x0561f0,1,UNKNOWN
-0x0561e0,1,UNKNOWN
-0x0561d0,1,UNKNOWN
-0x0561c0,1,UNKNOWN
-0x0561b0,1,UNKNOWN
-0x0561a0,1,UNKNOWN
-0x056190,1,UNKNOWN
-0x056180,1,UNKNOWN
-0x056170,1,UNKNOWN
-0x056160,1,UNKNOWN
-0x056150,1,UNKNOWN
-0x056140,1,UNKNOWN
-0x056130,1,UNKNOWN
-0x056120,1,UNKNOWN
-0x056110,1,UNKNOWN
-0x056100,1,UNKNOWN
-0x0560f0,1,UNKNOWN
-0x0560e0,1,UNKNOWN
-0x0560d0,1,UNKNOWN
-0x0560c0,1,UNKNOWN
-0x0560b0,1,UNKNOWN
-0x0560a0,1,UNKNOWN
-0x056090,1,UNKNOWN
-0x056080,1,UNKNOWN
-0x056070,1,UNKNOWN
-0x056060,1,UNKNOWN
-0x056050,1,UNKNOWN
-0x056040,1,UNKNOWN
-0x056030,1,UNKNOWN
-0x056020,1,UNKNOWN
-0x056010,1,UNKNOWN
-0x05600c,1,UNKNOWN
-0x056008,1,UNKNOWN
-0x056004,1,UNKNOWN
-0x056000,1,UNKNOWN
-0x055000,1,UNKNOWN
-0x054ff0,1,UNKNOWN
-0x054fe0,1,UNKNOWN
-0x054fd0,1,UNKNOWN
-0x054fc0,1,UNKNOWN
-0x054fb0,1,UNKNOWN
-0x054fa0,1,UNKNOWN
-0x054f90,1,UNKNOWN
-0x054f80,1,UNKNOWN
-0x054f70,1,UNKNOWN
-0x054f60,1,UNKNOWN
-0x054f50,1,UNKNOWN
-0x054f40,1,UNKNOWN
-0x054f30,1,UNKNOWN
-0x054f20,1,UNKNOWN
-0x054f10,1,UNKNOWN
-0x054f00,1,UNKNOWN
-0x054ef0,1,UNKNOWN
-0x054ee0,1,UNKNOWN
-0x054ed0,1,UNKNOWN
-0x054ec0,1,UNKNOWN
-0x054eb0,1,UNKNOWN
-0x054ea0,1,UNKNOWN
-0x054e90,1,UNKNOWN
-0x054e80,1,UNKNOWN
-0x054e70,1,UNKNOWN
-0x054e60,1,UNKNOWN
-0x054e50,1,UNKNOWN
-0x054e40,1,UNKNOWN
-0x054e30,1,UNKNOWN
-0x054e20,1,UNKNOWN
-0x054e10,1,UNKNOWN
-0x054e00,1,UNKNOWN
-0x054df0,1,UNKNOWN
-0x054de0,1,UNKNOWN
-0x054dd0,1,UNKNOWN
-0x054dc0,1,UNKNOWN
-0x054db0,1,UNKNOWN
-0x054da0,1,UNKNOWN
-0x054d90,1,UNKNOWN
-0x054d80,1,UNKNOWN
-0x054d70,1,UNKNOWN
-0x054d60,1,UNKNOWN
-0x054d50,1,UNKNOWN
-0x054d40,1,UNKNOWN
-0x054d30,1,UNKNOWN
-0x054d20,1,UNKNOWN
-0x054d10,1,UNKNOWN
-0x054d00,1,UNKNOWN
-0x054cf0,1,UNKNOWN
-0x054ce0,1,UNKNOWN
-0x054cd0,1,UNKNOWN
-0x054cc0,1,UNKNOWN
-0x054cb0,1,UNKNOWN
-0x054ca0,1,UNKNOWN
-0x054c90,1,UNKNOWN
-0x054c80,1,UNKNOWN
-0x054c70,1,UNKNOWN
-0x054c60,1,UNKNOWN
-0x054c50,1,UNKNOWN
-0x054c40,1,UNKNOWN
-0x054c30,1,UNKNOWN
-0x054c20,1,UNKNOWN
-0x054c10,1,UNKNOWN
-0x054c00,1,UNKNOWN
-0x054bf0,1,UNKNOWN
-0x054be0,1,UNKNOWN
-0x054bd0,1,UNKNOWN
-0x054bc0,1,UNKNOWN
-0x054bb0,1,UNKNOWN
-0x054ba0,1,UNKNOWN
-0x054b90,1,UNKNOWN
-0x054b80,1,UNKNOWN
-0x054b70,1,UNKNOWN
-0x054b60,1,UNKNOWN
-0x054b50,1,UNKNOWN
-0x054b40,1,UNKNOWN
-0x054b30,1,UNKNOWN
-0x054b20,1,UNKNOWN
-0x054b10,1,UNKNOWN
-0x054b00,1,UNKNOWN
-0x054af0,1,UNKNOWN
-0x054ae0,1,UNKNOWN
-0x054ad0,1,UNKNOWN
-0x054ac0,1,UNKNOWN
-0x054ab0,1,UNKNOWN
-0x054aa0,1,UNKNOWN
-0x054a90,1,UNKNOWN
-0x054a80,1,UNKNOWN
-0x054a70,1,UNKNOWN
-0x054a60,1,UNKNOWN
-0x054a50,1,UNKNOWN
-0x054a40,1,UNKNOWN
-0x054a30,1,UNKNOWN
-0x054a20,1,UNKNOWN
-0x054a10,1,UNKNOWN
-0x054a00,1,UNKNOWN
-0x0549f0,1,UNKNOWN
-0x0549e0,1,UNKNOWN
-0x0549d0,1,UNKNOWN
-0x0549c0,1,UNKNOWN
-0x0549b0,1,UNKNOWN
-0x0549a0,1,UNKNOWN
-0x054990,1,UNKNOWN
-0x054980,1,UNKNOWN
-0x054970,1,UNKNOWN
-0x054960,1,UNKNOWN
-0x054950,1,UNKNOWN
-0x054940,1,UNKNOWN
-0x054930,1,UNKNOWN
-0x054920,1,UNKNOWN
-0x054910,1,UNKNOWN
-0x054900,1,UNKNOWN
-0x0548f0,1,UNKNOWN
-0x0548e0,1,UNKNOWN
-0x0548d0,1,UNKNOWN
-0x0548c0,1,UNKNOWN
-0x0548b0,1,UNKNOWN
-0x0548a0,1,UNKNOWN
-0x054890,1,UNKNOWN
-0x054880,1,UNKNOWN
-0x054870,1,UNKNOWN
-0x054860,1,UNKNOWN
-0x054850,1,UNKNOWN
-0x054840,1,UNKNOWN
-0x054830,1,UNKNOWN
-0x054820,1,UNKNOWN
-0x054810,1,UNKNOWN
-0x054800,1,UNKNOWN
-0x0547f0,1,UNKNOWN
-0x0547e0,1,UNKNOWN
-0x0547d0,1,UNKNOWN
-0x0547c0,1,UNKNOWN
-0x0547b0,1,UNKNOWN
-0x0547a0,1,UNKNOWN
-0x054790,1,UNKNOWN
-0x054780,1,UNKNOWN
-0x054770,1,UNKNOWN
-0x054760,1,UNKNOWN
-0x054750,1,UNKNOWN
-0x054740,1,UNKNOWN
-0x054730,1,UNKNOWN
-0x054720,1,UNKNOWN
-0x054710,1,UNKNOWN
-0x054700,1,UNKNOWN
-0x0546f0,1,UNKNOWN
-0x0546e0,1,UNKNOWN
-0x0546d0,1,UNKNOWN
-0x0546c0,1,UNKNOWN
-0x0546b0,1,UNKNOWN
-0x0546a0,1,UNKNOWN
-0x054690,1,UNKNOWN
-0x054680,1,UNKNOWN
-0x054670,1,UNKNOWN
-0x054660,1,UNKNOWN
-0x054650,1,UNKNOWN
-0x054640,1,UNKNOWN
-0x054630,1,UNKNOWN
-0x054620,1,UNKNOWN
-0x054610,1,UNKNOWN
-0x054600,1,UNKNOWN
-0x0545f0,1,UNKNOWN
-0x0545e0,1,UNKNOWN
-0x0545d0,1,UNKNOWN
-0x0545c0,1,UNKNOWN
-0x0545b0,1,UNKNOWN
-0x0545a0,1,UNKNOWN
-0x054590,1,UNKNOWN
-0x054580,1,UNKNOWN
-0x054570,1,UNKNOWN
-0x054560,1,UNKNOWN
-0x054550,1,UNKNOWN
-0x054540,1,UNKNOWN
-0x054530,1,UNKNOWN
-0x054520,1,UNKNOWN
-0x054510,1,UNKNOWN
-0x054500,1,UNKNOWN
-0x0544f0,1,UNKNOWN
-0x0544e0,1,UNKNOWN
-0x0544d0,1,UNKNOWN
-0x0544c0,1,UNKNOWN
-0x0544b0,1,UNKNOWN
-0x0544a0,1,UNKNOWN
-0x054490,1,UNKNOWN
-0x054480,1,UNKNOWN
-0x054470,1,UNKNOWN
-0x054460,1,UNKNOWN
-0x054450,1,UNKNOWN
-0x054440,1,UNKNOWN
-0x054430,1,UNKNOWN
-0x054420,1,UNKNOWN
-0x054410,1,UNKNOWN
-0x054400,1,UNKNOWN
-0x0543f0,1,UNKNOWN
-0x0543e0,1,UNKNOWN
-0x0543d0,1,UNKNOWN
-0x0543c0,1,UNKNOWN
-0x0543b0,1,UNKNOWN
-0x0543a0,1,UNKNOWN
-0x054390,1,UNKNOWN
-0x054380,1,UNKNOWN
-0x054370,1,UNKNOWN
-0x054360,1,UNKNOWN
-0x054350,1,UNKNOWN
-0x054340,1,UNKNOWN
-0x054330,1,UNKNOWN
-0x054320,1,UNKNOWN
-0x054310,1,UNKNOWN
-0x054300,1,UNKNOWN
-0x0542f0,1,UNKNOWN
-0x0542e0,1,UNKNOWN
-0x0542d0,1,UNKNOWN
-0x0542c0,1,UNKNOWN
-0x0542b0,1,UNKNOWN
-0x0542a0,1,UNKNOWN
-0x054290,1,UNKNOWN
-0x054280,1,UNKNOWN
-0x054270,1,UNKNOWN
-0x054260,1,UNKNOWN
-0x054250,1,UNKNOWN
-0x054240,1,UNKNOWN
-0x054230,1,UNKNOWN
-0x054220,1,UNKNOWN
-0x054210,1,UNKNOWN
-0x054200,1,UNKNOWN
-0x0541f0,1,UNKNOWN
-0x0541e0,1,UNKNOWN
-0x0541d0,1,UNKNOWN
-0x0541c0,1,UNKNOWN
-0x0541b0,1,UNKNOWN
-0x0541a0,1,UNKNOWN
-0x054190,1,UNKNOWN
-0x054180,1,UNKNOWN
-0x054170,1,UNKNOWN
-0x054160,1,UNKNOWN
-0x054150,1,UNKNOWN
-0x054140,1,UNKNOWN
-0x054130,1,UNKNOWN
-0x054120,1,UNKNOWN
-0x054110,1,UNKNOWN
-0x054100,1,UNKNOWN
-0x0540f0,1,UNKNOWN
-0x0540e0,1,UNKNOWN
-0x0540d0,1,UNKNOWN
-0x0540c0,1,UNKNOWN
-0x0540b0,1,UNKNOWN
-0x0540a0,1,UNKNOWN
-0x054090,1,UNKNOWN
-0x054080,1,UNKNOWN
-0x054070,1,UNKNOWN
-0x054060,1,UNKNOWN
-0x054050,1,UNKNOWN
-0x054040,1,UNKNOWN
-0x054030,1,UNKNOWN
-0x054020,1,UNKNOWN
-0x054010,1,UNKNOWN
-0x05400c,1,UNKNOWN
-0x054008,1,UNKNOWN
-0x054004,1,UNKNOWN
-0x054000,1,UNKNOWN
-0x053ffc,1,
-0x053f20,1,
-0x053f1c,1,
-0x053f18,1,
-0x053f14,1,
-0x053f10,1,
-0x053f0c,1,
-0x053f08,1,
-0x053f04,1,
-0x053ea8,1,
-0x053ea4,1,
-0x053ea0,1,
-0x053e9c,1,
-0x053e94,1,
-0x053e90,1,
-0x053e8c,1,
-0x053e70,1,
-0x053e6c,1,
-0x053e64,1,
-0x053e60,1,
-0x053e3c,1,
-0x053e38,1,
-0x053e34,1,
-0x053e30,1,
-0x053e2c,1,
-0x053e28,1,
-0x053e24,1,
-0x053e1c,1,
-0x053e18,1,
-0x053e14,1,
-0x053e10,1,
-0x053e0c,1,
-0x053e08,1,
-0x053e04,1,
-0x053e00,1,
-0x053d00,1,
-0x053ca8,1,
-0x053ca4,1,
-0x053ca0,1,
-0x053c9c,1,
-0x053c94,1,
-0x053c90,1,
-0x053c8c,1,
-0x053c70,1,
-0x053c6c,1,
-0x053c64,1,
-0x053c60,1,
-0x053c44,1,
-0x053c40,1,
-0x053c3c,1,
-0x053c38,1,
-0x053c34,1,
-0x053c30,1,
-0x053c2c,1,
-0x053c28,1,
-0x053c24,1,
-0x053c1c,1,
-0x053c18,1,
-0x053c14,1,
-0x053c10,1,
-0x053c0c,1,
-0x053c08,1,
-0x053c04,1,
-0x053c00,1,
-0x051934,1,
-0x051930,1,
-0x05192c,1,
-0x051928,1,
-0x051924,1,
-0x051920,1,
-0x05191c,1,
-0x051918,1,
-0x051914,1,
-0x051910,1,
-0x05190c,1,
-0x051908,1,
-0x051904,1,
-0x051900,1,
-0x0518f4,1,
-0x0518f0,1,
-0x0518ec,1,
-0x0518e8,1,
-0x0518e4,1,
-0x0518e0,1,
-0x0518dc,1,
-0x0518d8,1,
-0x0518d4,1,
-0x0518d0,1,
-0x0518cc,1,
-0x0518c8,1,
-0x0518c4,1,
-0x0518c0,1,
-0x0518bc,1,
-0x0518b8,1,
-0x0518a0,1,
-0x05189c,1,
-0x051898,1,
-0x051894,1,
-0x051890,1,
-0x05188c,1,
-0x051888,1,
-0x051884,1,
-0x051844,1,
-0x051840,1,
-0x051834,1,
-0x051830,1,
-0x05182c,1,
-0x051828,1,
-0x051824,1,
-0x051820,1,
-0x051814,1,
-0x051810,1,
-0x05180c,1,
-0x051808,1,
-0x051804,1,
-0x051800,1,
-0x0517fc,1,
-0x051170,1,
-0x051168,1,
-0x051164,1,
-0x051160,1,
-0x05114c,1,
-0x051148,1,
-0x051144,1,
-0x051140,1,
-0x05113c,1,
-0x051134,1,
-0x05112c,1,
-0x051128,1,
-0x051124,1,
-0x051120,1,
-0x05111c,1,
-0x051118,1,
-0x051114,1,
-0x051110,1,
-0x05110c,1,
-0x051108,1,
-0x051104,1,
-0x051100,1,
-0x050280,1,
-0x05023c,1,
-0x050238,1,
-0x050234,1,
-0x050230,1,
-0x05022c,1,
-0x050228,1,
-0x050224,1,
-0x050220,1,
-0x05021c,1,
-0x050218,1,
-0x050214,1,
-0x050210,1,
-0x05020c,1,
-0x050208,1,
-0x050204,1,
-0x050200,1,
-0x0501d0,1,
-0x0501cc,1,
-0x0501c8,1,
-0x0501c4,1,
-0x0501c0,1,
-0x0501bc,1,
-0x0501b8,1,
-0x050188,1,
-0x050184,1,
-0x050180,1,
-0x05017c,1,
-0x050178,1,
-0x050174,1,
-0x050170,1,
-0x05016c,1,
-0x050168,1,
-0x050164,1,
-0x050160,1,
-0x05015c,1,
-0x050158,1,
-0x050148,1,
-0x050144,1,
-0x050140,1,
-0x05013c,1,
-0x050138,1,
-0x050134,1,
-0x050130,1,
-0x050128,1,
-0x050124,1,
-0x050120,1,
-0x05010c,1,
-0x050108,1,
-0x050104,1,
-0x050100,1,
-0x0500fc,1,
-0x0500f8,1,
-0x0500f4,1,
-0x0500f0,1,
-0x0500ec,1,
-0x0500e8,1,
-0x0500e4,1,
-0x0500e0,1,
-0x0500dc,1,
-0x0500d8,1,
-0x0500d4,1,
-0x0500c4,1,
-0x0500c0,1,
-0x0500bc,1,
-0x0500b8,1,
-0x0500b4,1,
-0x0500b0,1,
-0x0500ac,1,
-0x050068,1,
-0x050064,1,
-0x050060,1,
-0x05004c,1,
-0x050048,1,
-0x050044,1,
-0x050040,1,
-0x04314c,1,
-0x043148,1,
-0x043144,1,
-0x043140,1,
-0x043118,1,
-0x043114,1,
-0x043110,1,
-0x043104,1,
-0x043100,1,
-0x043048,1,
-0x043044,1,
-0x043040,1,
-0x04303c,1,
-0x043038,1,
-0x043034,1,
-0x043030,1,
-0x04301c,1,
-0x043018,1,
-0x043014,1,
-0x043010,1,
-0x042ffc,1,
-0x042ff8,1,
-0x042ff4,1,
-0x042fec,1,
-0x042a04,1,UNKNOWN
-0x042a00,1,UNKNOWN
-0x0428a4,1,UNKNOWN
-0x0428a0,1,UNKNOWN
-0x04289c,1,UNKNOWN
-0x042898,1,UNKNOWN
-0x042894,1,UNKNOWN
-0x042890,1,UNKNOWN
-0x04288c,1,UNKNOWN
-0x042888,1,UNKNOWN
-0x042884,1,UNKNOWN
-0x042880,1,UNKNOWN
-0x04287c,1,UNKNOWN
-0x042878,1,UNKNOWN
-0x042874,1,UNKNOWN
-0x042870,1,UNKNOWN
-0x04286c,1,UNKNOWN
-0x042868,1,UNKNOWN
-0x042864,1,UNKNOWN
-0x042860,1,UNKNOWN
-0x04285c,1,UNKNOWN
-0x042858,1,UNKNOWN
-0x042854,1,UNKNOWN
-0x042850,1,UNKNOWN
-0x04284c,1,UNKNOWN
-0x042848,1,UNKNOWN
-0x042844,1,UNKNOWN
-0x042840,1,UNKNOWN
-0x04283c,1,UNKNOWN
-0x042838,1,UNKNOWN
-0x042834,1,UNKNOWN
-0x042830,1,UNKNOWN
-0x04282c,1,UNKNOWN
-0x042828,1,UNKNOWN
-0x042824,1,UNKNOWN
-0x042820,1,UNKNOWN
-0x04281c,1,UNKNOWN
-0x042818,1,UNKNOWN
-0x042814,1,UNKNOWN
-0x042810,1,UNKNOWN
-0x04280c,1,UNKNOWN
-0x042808,1,UNKNOWN
-0x042804,1,UNKNOWN
-0x042800,1,UNKNOWN
-0x042604,1,UNKNOWN
-0x042600,1,UNKNOWN
-0x0424a4,1,UNKNOWN
-0x0424a0,1,UNKNOWN
-0x04249c,1,UNKNOWN
-0x042498,1,UNKNOWN
-0x042494,1,UNKNOWN
-0x042490,1,UNKNOWN
-0x04248c,1,UNKNOWN
-0x042488,1,UNKNOWN
-0x042484,1,UNKNOWN
-0x042480,1,UNKNOWN
-0x04247c,1,UNKNOWN
-0x042478,1,UNKNOWN
-0x042474,1,UNKNOWN
-0x042470,1,UNKNOWN
-0x04246c,1,UNKNOWN
-0x042468,1,UNKNOWN
-0x042464,1,UNKNOWN
-0x042460,1,UNKNOWN
-0x04245c,1,UNKNOWN
-0x042458,1,UNKNOWN
-0x042454,1,UNKNOWN
-0x042450,1,UNKNOWN
-0x04244c,1,UNKNOWN
-0x042448,1,UNKNOWN
-0x042444,1,UNKNOWN
-0x042440,1,UNKNOWN
-0x04243c,1,UNKNOWN
-0x042438,1,UNKNOWN
-0x042434,1,UNKNOWN
-0x042430,1,UNKNOWN
-0x04242c,1,UNKNOWN
-0x042428,1,UNKNOWN
-0x042424,1,UNKNOWN
-0x042420,1,UNKNOWN
-0x04241c,1,UNKNOWN
-0x042418,1,UNKNOWN
-0x042414,1,UNKNOWN
-0x042410,1,UNKNOWN
-0x04240c,1,UNKNOWN
-0x042408,1,UNKNOWN
-0x042404,1,UNKNOWN
-0x042400,1,UNKNOWN
-0x042244,1,UNKNOWN
-0x042240,1,UNKNOWN
-0x04223c,1,UNKNOWN
-0x042238,1,UNKNOWN
-0x042234,1,UNKNOWN
-0x042230,1,UNKNOWN
-0x04222c,1,UNKNOWN
-0x042228,1,UNKNOWN
-0x042224,1,UNKNOWN
-0x042220,1,UNKNOWN
-0x04221c,1,UNKNOWN
-0x042218,1,UNKNOWN
-0x042214,1,UNKNOWN
-0x042210,1,UNKNOWN
-0x04220c,1,UNKNOWN
-0x042208,1,UNKNOWN
-0x042204,1,UNKNOWN
-0x042200,1,UNKNOWN
-0x04205c,1,UNKNOWN
-0x042058,1,UNKNOWN
-0x042054,1,UNKNOWN
-0x042050,1,UNKNOWN
-0x04204c,1,UNKNOWN
-0x042048,1,UNKNOWN
-0x042044,1,UNKNOWN
-0x042040,1,UNKNOWN
-0x04203c,1,UNKNOWN
-0x042038,1,UNKNOWN
-0x042034,1,UNKNOWN
-0x042030,1,UNKNOWN
-0x04202c,1,UNKNOWN
-0x042028,1,UNKNOWN
-0x042024,1,UNKNOWN
-0x042020,1,UNKNOWN
-0x04201c,1,UNKNOWN
-0x042018,1,UNKNOWN
-0x042014,1,UNKNOWN
-0x042010,1,UNKNOWN
-0x04200c,1,UNKNOWN
-0x042008,1,UNKNOWN
-0x042004,1,UNKNOWN
-0x042000,1,UNKNOWN
-0x0418c4,1,
-0x0418c0,1,
-0x0418bc,1,
-0x0418b8,1,
-0x0418b4,1,
-0x0418b0,1,
-0x0418ac,1,
-0x0418a8,1,
-0x0418a4,1,
-0x0418a0,1,
-0x04189c,1,
-0x041898,1,
-0x041894,1,
-0x041890,1,
-0x04188c,1,
-0x041888,1,
-0x041884,1,
-0x041880,1,
-0x041808,1,
-0x041804,1,
-0x041800,1,
-0x040a9c,1,
-0x040a80,1,
-0x040a6c,1,
-0x040a68,1,
-0x040a64,1,
-0x040a60,1,
-0x040a5c,1,
-0x040a40,1,
-0x040a2c,1,
-0x040a28,1,
-0x040a24,1,
-0x040a20,1,
-0x040a1c,1,
-0x040a00,1,
-0x0409ec,1,
-0x0409e8,1,
-0x0409e4,1,
-0x0409e0,1,
-0x0409dc,1,
-0x0409c0,1,
-0x0409ac,1,
-0x0409a8,1,
-0x0409a4,1,
-0x0409a0,1,
-0x04099c,1,
-0x040980,1,
-0x04096c,1,
-0x040968,1,
-0x040964,1,
-0x040960,1,
-0x04095c,1,
-0x040940,1,
-0x04092c,1,
-0x040928,1,
-0x040924,1,
-0x040920,1,
-0x040914,1,
-0x040910,1,
-0x040900,1,
-0x0408f4,1,
-0x0408f0,1,
-0x0408e0,1,
-0x0408d4,1,
-0x0408d0,1,
-0x0408c0,1,
-0x0408bc,1,
-0x0408b8,1,
-0x0408b4,1,
-0x0408b0,1,
-0x04088c,1,
-0x040888,1,
-0x040884,1,
-0x04087c,1,
-0x040874,1,
-0x040870,1,
-0x04086c,1,
-0x040868,1,
-0x040864,1,
-0x040860,1,
-0x04085c,1,
-0x040858,1,
-0x040854,1,
-0x040850,1,
-0x040844,1,
-0x040824,1,
-0x040820,1,
-0x04081c,1,
-0x040818,1,
-0x040814,1,
-0x040810,1,
-0x04080c,1,
-0x040808,1,
-0x040804,1,
-0x04061c,1,
-0x040618,1,
-0x040604,1,
-0x0405fc,1,
-0x0405f8,1,
-0x0405f4,1,
-0x0405f0,1,
-0x0405ec,1,
-0x0405e8,1,
-0x0405e4,1,
-0x0405e0,1,
-0x0405dc,1,
-0x0405d8,1,
-0x0405d4,1,
-0x0405d0,1,
-0x0405cc,1,
-0x0405c8,1,
-0x0405c4,1,
-0x0405c0,1,
-0x0405bc,1,
-0x0405b8,1,
-0x0405b4,1,
-0x0405b0,1,
-0x0405ac,1,
-0x0405a8,1,
-0x0405a4,1,
-0x0405a0,1,
-0x04059c,1,
-0x040598,1,
-0x040594,1,
-0x040590,1,
-0x04058c,1,
-0x040588,1,
-0x040584,1,
-0x040580,1,
-0x04057c,1,
-0x040578,1,
-0x040574,1,
-0x040570,1,
-0x04056c,1,
-0x040568,1,
-0x040564,1,
-0x040560,1,
-0x04055c,1,
-0x040558,1,
-0x040554,1,
-0x040550,1,
-0x04054c,1,
-0x040548,1,
-0x040544,1,
-0x040540,1,
-0x04053c,1,
-0x040538,1,
-0x040534,1,
-0x040530,1,
-0x04052c,1,
-0x040528,1,
-0x040524,1,
-0x040520,1,
-0x04051c,1,
-0x040518,1,
-0x040514,1,
-0x040510,1,
-0x04050c,1,
-0x040508,1,
-0x040504,1,
-0x040500,1,
-0x0404fc,1,
-0x0404f8,1,
-0x0404f4,1,
-0x0404f0,1,
-0x0404ec,1,
-0x0404e8,1,
-0x0404e4,1,
-0x0404e0,1,
-0x0404dc,1,
-0x0404d8,1,
-0x0404d4,1,
-0x0404d0,1,
-0x0404cc,1,
-0x0404c8,1,
-0x0404c4,1,
-0x0404c0,1,
-0x0404bc,1,
-0x0404b8,1,
-0x0404b4,1,
-0x0404b0,1,
-0x0404ac,1,
-0x0404a8,1,
-0x0404a4,1,
-0x0404a0,1,
-0x04049c,1,
-0x040498,1,
-0x040494,1,
-0x040490,1,
-0x04048c,1,
-0x040488,1,
-0x040484,1,
-0x040480,1,
-0x04047c,1,
-0x040478,1,
-0x040474,1,
-0x040470,1,
-0x04046c,1,
-0x040468,1,
-0x040464,1,
-0x040460,1,
-0x04045c,1,
-0x040458,1,
-0x040454,1,
-0x040450,1,
-0x04044c,1,
-0x040448,1,
-0x040444,1,
-0x040440,1,
-0x04043c,1,
-0x040438,1,
-0x040434,1,
-0x040430,1,
-0x04042c,1,
-0x040428,1,
-0x040424,1,
-0x040420,1,
-0x04041c,1,
-0x040418,1,
-0x040414,1,
-0x040410,1,
-0x04040c,1,
-0x040408,1,
-0x040404,1,
-0x040400,1,
-0x0403f8,1,
-0x0403f0,1,
-0x0403ec,1,
-0x0403e0,1,
-0x040380,1,
-0x0402dc,1,
-0x0402d8,1,
-0x0402d4,1,
-0x0402d0,1,
-0x0402cc,1,
-0x0402c8,1,
-0x0402c4,1,
-0x0402c0,1,
-0x0402bc,1,
-0x0402b8,1,
-0x0402b4,1,
-0x0402b0,1,
-0x0402ac,1,
-0x0402a0,1,
-0x04029c,1,
-0x040290,1,
-0x04028c,1,
-0x040288,1,
-0x040284,1,
-0x040280,1,
-0x04027c,1,
-0x040278,1,
-0x040274,1,
-0x040270,1,
-0x04026c,1,
-0x040268,1,
-0x040230,1,
-0x04021c,1,
-0x040204,1,
-0x040200,1,
-0x0401f8,1,
-0x0401f0,1,
-0x0401ec,1,
-0x0401e0,1,
-0x040180,1,
-0x0400dc,1,
-0x0400d8,1,
-0x0400d4,1,
-0x0400d0,1,
-0x0400cc,1,
-0x0400c8,1,
-0x0400c4,1,
-0x0400c0,1,
-0x0400bc,1,
-0x0400b8,1,
-0x0400b4,1,
-0x0400b0,1,
-0x0400ac,1,
-0x0400a0,1,
-0x04009c,1,
-0x040090,1,
-0x04008c,1,
-0x040088,1,
-0x040084,1,
-0x040080,1,
-0x04007c,1,
-0x040078,1,
-0x040074,1,
-0x040070,1,
-0x04006c,1,
-0x040068,1,
-0x040030,1,
-0x04001c,1,
-0x040004,1,
-0x040000,1,
-0x02d9f4,1,
-0x02d9f0,1,
-0x02d9d4,1,
-0x02d9d0,1,
-0x02d9c0,1,
-0x02d9b4,1,
-0x02d9b0,1,
-0x02d9a0,1,
-0x02d994,1,
-0x02d990,1,
-0x02d980,1,
-0x02d974,1,
-0x02d970,1,
-0x02d960,1,
-0x02d954,1,
-0x02d950,1,
-0x02d940,1,
-0x02d928,1,
-0x02d924,1,
-0x02d920,1,
-0x02d91c,1,
-0x02d918,1,
-0x02d914,1,
-0x02d910,1,
-0x02d90c,1,
-0x02d908,1,
-0x02d904,1,
-0x02d900,1,
-0x02d8d4,1,
-0x02d8d0,1,
-0x02d8cc,1,
-0x02d8c8,1,
-0x02d8c4,1,
-0x02d8c0,1,
-0x02d8ac,1,
-0x02d870,1,
-0x02d86c,1,
-0x02d868,1,
-0x02d864,1,
-0x02d860,1,
-0x02d85c,1,
-0x02d858,1,
-0x02d854,1,
-0x02d850,1,
-0x02d84c,1,
-0x02d848,1,
-0x02d844,1,
-0x02d840,1,
-0x02d83c,1,
-0x02d838,1,
-0x02d834,1,
-0x02d830,1,
-0x02d82c,1,
-0x02d828,1,
-0x02d824,1,
-0x02d820,1,
-0x02d814,1,
-0x02d810,1,
-0x02d800,1,
-0x02bb0c,1,
-0x02bb08,1,
-0x02bb04,1,
-0x02bb00,1,
-0x02baf4,1,
-0x02baf0,1,
-0x02ba74,1,
-0x02ba70,1,
-0x02ba60,1,
-0x02ba54,1,
-0x02ba50,1,
-0x02ba40,1,
-0x02ba28,1,
-0x02ba1c,1,
-0x02ba18,1,
-0x02ba0c,1,
-0x02ba00,1,
-0x02b934,1,
-0x02b930,1,
-0x02b924,1,
-0x02b920,1,
-0x02b914,1,
-0x02b910,1,
-0x02b904,1,
-0x02b900,1,
-0x02b8f4,1,
-0x02b8f0,1,
-0x02b8e4,1,
-0x02b8e0,1,
-0x02b8b4,1,
-0x02b8b0,1,
-0x02b8ac,1,
-0x02b8a8,1,
-0x02b8a4,1,
-0x02b8a0,1,
-0x02b894,1,
-0x02b890,1,
-0x02b88c,1,
-0x02b888,1,
-0x02b884,1,
-0x02b880,1,
-0x02b870,1,
-0x02b83c,1,
-0x02b838,1,
-0x02b834,1,
-0x02b830,1,
-0x02b82c,1,
-0x02b828,1,
-0x02b824,1,
-0x02b820,1,
-0x02b814,1,
-0x02b810,1,
-0x02b800,1,
-0x02b7bc,1,UNKNOWN
-0x02b7b8,1,
-0x02b7b4,1,
-0x02b67c,1,
-0x02b678,1,
-0x02b674,1,
-0x02b670,1,
-0x02b66c,1,
-0x02b668,1,
-0x02b664,1,
-0x02b660,1,
-0x02b65c,1,
-0x02b658,1,
-0x02b654,1,
-0x02b64c,1,
-0x02b648,1,
-0x02b644,1,
-0x02b640,1,
-0x02b62c,1,
-0x02b628,1,
-0x02b624,1,
-0x02b620,1,
-0x02b61c,1,
-0x02b618,1,
-0x02b614,1,
-0x02b610,1,
-0x02b60c,1,
-0x02b608,1,
-0x02b604,1,
-0x02b600,1,
-0x02b4a0,1,
-0x02b49c,1,
-0x02b498,1,
-0x02b494,1,
-0x02b490,1,
-0x02b48c,1,
-0x02b488,1,
-0x02b484,1,
-0x02b480,1,
-0x02b47c,1,
-0x02b478,1,
-0x02b474,1,
-0x02b470,1,
-0x02b46c,1,
-0x02b464,1,
-0x02b45c,1,
-0x02b458,1,
-0x02b454,1,
-0x02b450,1,
-0x02b44c,1,
-0x02b448,1,
-0x02b444,1,
-0x02b440,1,
-0x02b43c,1,
-0x02b438,1,
-0x02b424,1,
-0x02b420,1,
-0x02b41c,1,
-0x02b418,1,
-0x02b414,1,
-0x02b410,1,
-0x02b40c,1,
-0x02b408,1,
-0x02b404,1,
-0x02b400,1,
-0x02b040,1,
-0x02b000,1,
-0x02affc,1,
-0x02aff8,1,
-0x02aff4,1,
-0x02afdc,1,
-0x02afd4,1,
-0x02afd0,1,
-0x02afcc,1,
-0x02afc8,1,
-0x02afc4,1,
-0x02afc0,1,
-0x02afbc,1,
-0x02afb8,1,
-0x02afb4,1,
-0x02afb0,1,
-0x02afac,1,
-0x02afa8,1,
-0x02afa0,1,
-0x02af9c,1,
-0x02af98,1,
-0x02af94,1,
-0x02af90,1,
-0x02af8c,1,
-0x02af88,1,
-0x02af84,1,
-0x02af80,1,
-0x02ae94,1,
-0x02ae90,1,
-0x02ae80,1,
-0x02ae30,1,
-0x02ae2c,1,
-0x02ae28,1,
-0x02ae24,1,
-0x02ae20,1,
-0x02ae1c,1,
-0x02ae18,1,
-0x02ae14,1,
-0x02ae10,1,
-0x02ae0c,1,
-0x02ae04,1,
-0x02ae00,1,
-0x02adfc,1,
-0x02adf8,1,
-0x02adf4,1,
-0x02adec,1,
-0x02ade4,1,
-0x02ade0,1,
-0x02addc,1,
-0x02add8,1,
-0x02add4,1,
-0x02adcc,1,
-0x02adc8,1,
-0x02adc0,1,
-0x02adb8,1,
-0x02adb4,1,
-0x02adb0,1,
-0x02ada8,1,
-0x02ada4,1,
-0x02ada0,1,
-0x02ad80,1,
-0x02ad7c,1,
-0x02ad78,1,
-0x02ad74,1,
-0x02ad70,1,
-0x02ad6c,1,
-0x02ad68,1,
-0x02ad64,1,
-0x02ad60,1,
-0x02ad5c,1,
-0x02ad58,1,
-0x02ad54,1,
-0x02ad50,1,
-0x02ad4c,1,
-0x02ad48,1,
-0x02ad44,1,
-0x02ad40,1,
-0x02ad34,1,
-0x02ad30,1,
-0x02ad20,1,
-0x02ad14,1,
-0x02ad10,1,
-0x02ad00,1,
-0x02acec,1,
-0x02ace8,1,
-0x02ace4,1,
-0x02ace0,1,
-0x02acdc,1,
-0x02acd8,1,
-0x02acd4,1,
-0x02acd0,1,
-0x02accc,1,
-0x02acc8,1,
-0x02ac90,1,
-0x02ac8c,1,
-0x02ac88,1,
-0x02ac84,1,
-0x02ac80,1,
-0x02ac68,1,
-0x02ac50,1,
-0x02ac4c,1,
-0x02ac24,1,
-0x02ac20,1,
-0x02ac1c,1,
-0x02ac18,1,
-0x02ac14,1,
-0x02ac10,1,
-0x02ac0c,1,
-0x02ac08,1,
-0x02ac04,1,
-0x02ac00,1,
-0x02ab34,1,
-0x02ab30,1,
-0x02ab20,1,
-0x02ab14,1,
-0x02ab10,1,
-0x02ab00,1,
-0x02a978,1,
-0x02a974,1,
-0x02a970,1,
-0x02a96c,1,
-0x02a968,1,
-0x02a964,1,
-0x02a960,1,
-0x02a95c,1,
-0x02a958,1,
-0x02a954,1,
-0x02a950,1,
-0x02a94c,1,
-0x02a948,1,
-0x02a944,1,
-0x02a940,1,
-0x02a93c,1,
-0x02a938,1,
-0x02a934,1,
-0x02a930,1,
-0x02a92c,1,
-0x02a928,1,
-0x02a924,1,
-0x02a920,1,
-0x02a91c,1,
-0x02a918,1,
-0x02a914,1,
-0x02a910,1,
-0x02a90c,1,
-0x02a908,1,
-0x02a904,1,
-0x02a900,1,
-0x02a8fc,1,
-0x02a8f8,1,
-0x02a8f4,1,
-0x02a8f0,1,
-0x02a8ec,1,
-0x02a8e8,1,
-0x02a8e4,1,
-0x02a8e0,1,
-0x02a8dc,1,
-0x02a8d8,1,
-0x02a8d4,1,
-0x02a8d0,1,
-0x02a8cc,1,
-0x02a8c8,1,
-0x02a8c4,1,
-0x02a8c0,1,
-0x02a8bc,1,
-0x02a8b8,1,
-0x02a8b4,1,
-0x02a8b0,1,
-0x02a8ac,1,
-0x02a8a8,1,
-0x02a8a4,1,
-0x02a8a0,1,
-0x02a89c,1,
-0x02a898,1,
-0x02a894,1,
-0x02a890,1,
-0x02a88c,1,
-0x02a888,1,
-0x02a884,1,
-0x02a880,1,
-0x02a87c,1,
-0x02a878,1,
-0x02a874,1,
-0x02a870,1,
-0x02a86c,1,
-0x02a868,1,
-0x02a864,1,
-0x02a860,1,
-0x02a85c,1,
-0x02a858,1,
-0x02a854,1,
-0x02a850,1,
-0x02a84c,1,
-0x02a848,1,
-0x02a844,1,
-0x02a840,1,
-0x02a83c,1,
-0x02a838,1,
-0x02a834,1,
-0x02a830,1,
-0x02a82c,1,
-0x02a828,1,
-0x02a824,1,
-0x02a820,1,
-0x02a81c,1,
-0x02a818,1,
-0x02a814,1,
-0x02a810,1,
-0x02a80c,1,
-0x02a808,1,
-0x02a804,1,
-0x02a800,1,
-0x02a7fc,1,
-0x02a7f8,1,
-0x02a7f4,1,
-0x02a7dc,1,
-0x02a7d4,1,
-0x02a7d0,1,
-0x02a7cc,1,
-0x02a7c8,1,
-0x02a7c4,1,
-0x02a7c0,1,
-0x02a7bc,1,
-0x02a7b8,1,
-0x02a7b4,1,
-0x02a7b0,1,
-0x02a7ac,1,
-0x02a7a8,1,
-0x02a7a0,1,
-0x02a79c,1,
-0x02a798,1,
-0x02a794,1,
-0x02a790,1,
-0x02a78c,1,
-0x02a788,1,
-0x02a784,1,
-0x02a780,1,
-0x02a694,1,
-0x02a690,1,
-0x02a680,1,
-0x02a630,1,
-0x02a62c,1,
-0x02a628,1,
-0x02a624,1,
-0x02a620,1,
-0x02a61c,1,
-0x02a618,1,
-0x02a614,1,
-0x02a610,1,
-0x02a60c,1,
-0x02a604,1,
-0x02a600,1,
-0x02a5fc,1,
-0x02a5f8,1,
-0x02a5f4,1,
-0x02a5ec,1,
-0x02a5e4,1,
-0x02a5e0,1,
-0x02a5dc,1,
-0x02a5d8,1,
-0x02a5d4,1,
-0x02a5cc,1,
-0x02a5c8,1,
-0x02a5c0,1,
-0x02a5b8,1,
-0x02a5b4,1,
-0x02a5b0,1,
-0x02a5a8,1,
-0x02a5a4,1,
-0x02a5a0,1,
-0x02a580,1,
-0x02a57c,1,
-0x02a578,1,
-0x02a574,1,
-0x02a570,1,
-0x02a56c,1,
-0x02a568,1,
-0x02a564,1,
-0x02a560,1,
-0x02a55c,1,
-0x02a558,1,
-0x02a554,1,
-0x02a550,1,
-0x02a54c,1,
-0x02a548,1,
-0x02a544,1,
-0x02a540,1,
-0x02a534,1,
-0x02a530,1,
-0x02a520,1,
-0x02a514,1,
-0x02a510,1,
-0x02a500,1,
-0x02a4ec,1,
-0x02a4e8,1,
-0x02a4e4,1,
-0x02a4e0,1,
-0x02a4dc,1,
-0x02a4d8,1,
-0x02a4d4,1,
-0x02a4d0,1,
-0x02a4cc,1,
-0x02a4c8,1,
-0x02a490,1,
-0x02a48c,1,
-0x02a488,1,
-0x02a484,1,
-0x02a480,1,
-0x02a468,1,
-0x02a450,1,
-0x02a44c,1,
-0x02a424,1,
-0x02a420,1,
-0x02a41c,1,
-0x02a418,1,
-0x02a414,1,
-0x02a410,1,
-0x02a40c,1,
-0x02a408,1,
-0x02a404,1,
-0x02a400,1,
-0x02a334,1,
-0x02a330,1,
-0x02a320,1,
-0x02a314,1,
-0x02a310,1,
-0x02a300,1,
-0x02a178,1,
-0x02a174,1,
-0x02a170,1,
-0x02a16c,1,
-0x02a168,1,
-0x02a164,1,
-0x02a160,1,
-0x02a15c,1,
-0x02a158,1,
-0x02a154,1,
-0x02a150,1,
-0x02a14c,1,
-0x02a148,1,
-0x02a144,1,
-0x02a140,1,
-0x02a13c,1,
-0x02a138,1,
-0x02a134,1,
-0x02a130,1,
-0x02a12c,1,
-0x02a128,1,
-0x02a124,1,
-0x02a120,1,
-0x02a11c,1,
-0x02a118,1,
-0x02a114,1,
-0x02a110,1,
-0x02a10c,1,
-0x02a108,1,
-0x02a104,1,
-0x02a100,1,
-0x02a0fc,1,
-0x02a0f8,1,
-0x02a0f4,1,
-0x02a0f0,1,
-0x02a0ec,1,
-0x02a0e8,1,
-0x02a0e4,1,
-0x02a0e0,1,
-0x02a0dc,1,
-0x02a0d8,1,
-0x02a0d4,1,
-0x02a0d0,1,
-0x02a0cc,1,
-0x02a0c8,1,
-0x02a0c4,1,
-0x02a0c0,1,
-0x02a0bc,1,
-0x02a0b8,1,
-0x02a0b4,1,
-0x02a0b0,1,
-0x02a0ac,1,
-0x02a0a8,1,
-0x02a0a4,1,
-0x02a0a0,1,
-0x02a09c,1,
-0x02a098,1,
-0x02a094,1,
-0x02a090,1,
-0x02a08c,1,
-0x02a088,1,
-0x02a084,1,
-0x02a080,1,
-0x02a07c,1,
-0x02a078,1,
-0x02a074,1,
-0x02a070,1,
-0x02a06c,1,
-0x02a068,1,
-0x02a064,1,
-0x02a060,1,
-0x02a05c,1,
-0x02a058,1,
-0x02a054,1,
-0x02a050,1,
-0x02a04c,1,
-0x02a048,1,
-0x02a044,1,
-0x02a040,1,
-0x02a03c,1,
-0x02a038,1,
-0x02a034,1,
-0x02a030,1,
-0x02a02c,1,
-0x02a028,1,
-0x02a024,1,
-0x02a020,1,
-0x02a01c,1,
-0x02a018,1,
-0x02a014,1,
-0x02a010,1,
-0x02a00c,1,
-0x02a008,1,
-0x02a004,1,
-0x02a000,1,
-0x029ffc,1,
-0x029ff8,1,
-0x029ff4,1,
-0x029fdc,1,
-0x029fd4,1,
-0x029fd0,1,
-0x029fcc,1,
-0x029fc8,1,
-0x029fc4,1,
-0x029fc0,1,
-0x029fbc,1,
-0x029fb8,1,
-0x029fb4,1,
-0x029fb0,1,
-0x029fac,1,
-0x029fa8,1,
-0x029fa0,1,
-0x029f9c,1,
-0x029f98,1,
-0x029f94,1,
-0x029f90,1,
-0x029f8c,1,
-0x029f88,1,
-0x029f84,1,
-0x029f80,1,
-0x029e94,1,
-0x029e90,1,
-0x029e80,1,
-0x029e30,1,
-0x029e2c,1,
-0x029e28,1,
-0x029e24,1,
-0x029e20,1,
-0x029e1c,1,
-0x029e18,1,
-0x029e14,1,
-0x029e10,1,
-0x029e0c,1,
-0x029e04,1,
-0x029e00,1,
-0x029dfc,1,
-0x029df8,1,
-0x029df4,1,
-0x029dec,1,
-0x029de4,1,
-0x029de0,1,
-0x029ddc,1,
-0x029dd8,1,
-0x029dd4,1,
-0x029dcc,1,
-0x029dc8,1,
-0x029dc0,1,
-0x029db8,1,
-0x029db4,1,
-0x029db0,1,
-0x029da8,1,
-0x029da4,1,
-0x029da0,1,
-0x029d80,1,
-0x029d7c,1,
-0x029d78,1,
-0x029d74,1,
-0x029d70,1,
-0x029d6c,1,
-0x029d68,1,
-0x029d64,1,
-0x029d60,1,
-0x029d5c,1,
-0x029d58,1,
-0x029d54,1,
-0x029d50,1,
-0x029d4c,1,
-0x029d48,1,
-0x029d44,1,
-0x029d40,1,
-0x029d34,1,
-0x029d30,1,
-0x029d20,1,
-0x029d14,1,
-0x029d10,1,
-0x029d00,1,
-0x029cec,1,
-0x029ce8,1,
-0x029ce4,1,
-0x029ce0,1,
-0x029cdc,1,
-0x029cd8,1,
-0x029cd4,1,
-0x029cd0,1,
-0x029ccc,1,
-0x029cc8,1,
-0x029c90,1,
-0x029c8c,1,
-0x029c88,1,
-0x029c84,1,
-0x029c80,1,
-0x029c68,1,
-0x029c50,1,
-0x029c4c,1,
-0x029c24,1,
-0x029c20,1,
-0x029c1c,1,
-0x029c18,1,
-0x029c14,1,
-0x029c10,1,
-0x029c0c,1,
-0x029c08,1,
-0x029c04,1,
-0x029c00,1,
-0x029b34,1,
-0x029b30,1,
-0x029b20,1,
-0x029b14,1,
-0x029b10,1,
-0x029b00,1,
-0x029978,1,
-0x029974,1,
-0x029970,1,
-0x02996c,1,
-0x029968,1,
-0x029964,1,
-0x029960,1,
-0x02995c,1,
-0x029958,1,
-0x029954,1,
-0x029950,1,
-0x02994c,1,
-0x029948,1,
-0x029944,1,
-0x029940,1,
-0x02993c,1,
-0x029938,1,
-0x029934,1,
-0x029930,1,
-0x02992c,1,
-0x029928,1,
-0x029924,1,
-0x029920,1,
-0x02991c,1,
-0x029918,1,
-0x029914,1,
-0x029910,1,
-0x02990c,1,
-0x029908,1,
-0x029904,1,
-0x029900,1,
-0x0298fc,1,
-0x0298f8,1,
-0x0298f4,1,
-0x0298f0,1,
-0x0298ec,1,
-0x0298e8,1,
-0x0298e4,1,
-0x0298e0,1,
-0x0298dc,1,
-0x0298d8,1,
-0x0298d4,1,
-0x0298d0,1,
-0x0298cc,1,
-0x0298c8,1,
-0x0298c4,1,
-0x0298c0,1,
-0x0298bc,1,
-0x0298b8,1,
-0x0298b4,1,
-0x0298b0,1,
-0x0298ac,1,
-0x0298a8,1,
-0x0298a4,1,
-0x0298a0,1,
-0x02989c,1,
-0x029898,1,
-0x029894,1,
-0x029890,1,
-0x02988c,1,
-0x029888,1,
-0x029884,1,
-0x029880,1,
-0x02987c,1,
-0x029878,1,
-0x029874,1,
-0x029870,1,
-0x02986c,1,
-0x029868,1,
-0x029864,1,
-0x029860,1,
-0x02985c,1,
-0x029858,1,
-0x029854,1,
-0x029850,1,
-0x02984c,1,
-0x029848,1,
-0x029844,1,
-0x029840,1,
-0x02983c,1,
-0x029838,1,
-0x029834,1,
-0x029830,1,
-0x02982c,1,
-0x029828,1,
-0x029824,1,
-0x029820,1,
-0x02981c,1,
-0x029818,1,
-0x029814,1,
-0x029810,1,
-0x02980c,1,
-0x029808,1,
-0x029804,1,
-0x029800,1,
-0x0297fc,1,
-0x0297f8,1,
-0x0297f4,1,
-0x0297dc,1,
-0x0297d4,1,
-0x0297d0,1,
-0x0297cc,1,
-0x0297c8,1,
-0x0297c4,1,
-0x0297c0,1,
-0x0297bc,1,
-0x0297b8,1,
-0x0297b4,1,
-0x0297b0,1,
-0x0297ac,1,
-0x0297a8,1,
-0x0297a0,1,
-0x02979c,1,
-0x029798,1,
-0x029794,1,
-0x029790,1,
-0x02978c,1,
-0x029788,1,
-0x029784,1,
-0x029780,1,
-0x029694,1,
-0x029690,1,
-0x029680,1,
-0x029630,1,
-0x02962c,1,
-0x029628,1,
-0x029624,1,
-0x029620,1,
-0x02961c,1,
-0x029618,1,
-0x029614,1,
-0x029610,1,
-0x02960c,1,
-0x029604,1,
-0x029600,1,
-0x0295fc,1,
-0x0295f8,1,
-0x0295f4,1,
-0x0295ec,1,
-0x0295e4,1,
-0x0295e0,1,
-0x0295dc,1,
-0x0295d8,1,
-0x0295d4,1,
-0x0295cc,1,
-0x0295c8,1,
-0x0295c0,1,
-0x0295b8,1,
-0x0295b4,1,
-0x0295b0,1,
-0x0295a8,1,
-0x0295a4,1,
-0x0295a0,1,
-0x029580,1,
-0x02957c,1,
-0x029578,1,
-0x029574,1,
-0x029570,1,
-0x02956c,1,
-0x029568,1,
-0x029564,1,
-0x029560,1,
-0x02955c,1,
-0x029558,1,
-0x029554,1,
-0x029550,1,
-0x02954c,1,
-0x029548,1,
-0x029544,1,
-0x029540,1,
-0x029534,1,
-0x029530,1,
-0x029520,1,
-0x029514,1,
-0x029510,1,
-0x029500,1,
-0x0294ec,1,
-0x0294e8,1,
-0x0294e4,1,
-0x0294e0,1,
-0x0294dc,1,
-0x0294d8,1,
-0x0294d4,1,
-0x0294d0,1,
-0x0294cc,1,
-0x0294c8,1,
-0x029490,1,
-0x02948c,1,
-0x029488,1,
-0x029484,1,
-0x029480,1,
-0x029468,1,
-0x029450,1,
-0x02944c,1,
-0x029424,1,
-0x029420,1,
-0x02941c,1,
-0x029418,1,
-0x029414,1,
-0x029410,1,
-0x02940c,1,
-0x029408,1,
-0x029404,1,
-0x029400,1,
-0x029334,1,
-0x029330,1,
-0x029320,1,
-0x029314,1,
-0x029310,1,
-0x029300,1,
-0x029178,1,
-0x029174,1,
-0x029170,1,
-0x02916c,1,
-0x029168,1,
-0x029164,1,
-0x029160,1,
-0x02915c,1,
-0x029158,1,
-0x029154,1,
-0x029150,1,
-0x02914c,1,
-0x029148,1,
-0x029144,1,
-0x029140,1,
-0x02913c,1,
-0x029138,1,
-0x029134,1,
-0x029130,1,
-0x02912c,1,
-0x029128,1,
-0x029124,1,
-0x029120,1,
-0x02911c,1,
-0x029118,1,
-0x029114,1,
-0x029110,1,
-0x02910c,1,
-0x029108,1,
-0x029104,1,
-0x029100,1,
-0x0290fc,1,
-0x0290f8,1,
-0x0290f4,1,
-0x0290f0,1,
-0x0290ec,1,
-0x0290e8,1,
-0x0290e4,1,
-0x0290e0,1,
-0x0290dc,1,
-0x0290d8,1,
-0x0290d4,1,
-0x0290d0,1,
-0x0290cc,1,
-0x0290c8,1,
-0x0290c4,1,
-0x0290c0,1,
-0x0290bc,1,
-0x0290b8,1,
-0x0290b4,1,
-0x0290b0,1,
-0x0290ac,1,
-0x0290a8,1,
-0x0290a4,1,
-0x0290a0,1,
-0x02909c,1,
-0x029098,1,
-0x029094,1,
-0x029090,1,
-0x02908c,1,
-0x029088,1,
-0x029084,1,
-0x029080,1,
-0x02907c,1,
-0x029078,1,
-0x029074,1,
-0x029070,1,
-0x02906c,1,
-0x029068,1,
-0x029064,1,
-0x029060,1,
-0x02905c,1,
-0x029058,1,
-0x029054,1,
-0x029050,1,
-0x02904c,1,
-0x029048,1,
-0x029044,1,
-0x029040,1,
-0x02903c,1,
-0x029038,1,
-0x029034,1,
-0x029030,1,
-0x02902c,1,
-0x029028,1,
-0x029024,1,
-0x029020,1,
-0x02901c,1,
-0x029018,1,
-0x029014,1,
-0x029010,1,
-0x02900c,1,
-0x029008,1,
-0x029004,1,
-0x029000,1,
-0x028ffc,1,
-0x028ff8,1,
-0x028ff4,1,
-0x028fdc,1,
-0x028fd4,1,
-0x028fd0,1,
-0x028fcc,1,
-0x028fc8,1,
-0x028fc4,1,
-0x028fc0,1,
-0x028fbc,1,
-0x028fb8,1,
-0x028fb4,1,
-0x028fb0,1,
-0x028fac,1,
-0x028fa8,1,
-0x028fa0,1,
-0x028f9c,1,
-0x028f98,1,
-0x028f94,1,
-0x028f90,1,
-0x028f8c,1,
-0x028f88,1,
-0x028f84,1,
-0x028f80,1,
-0x028e94,1,
-0x028e90,1,
-0x028e80,1,
-0x028e30,1,
-0x028e2c,1,
-0x028e28,1,
-0x028e24,1,
-0x028e20,1,
-0x028e1c,1,
-0x028e18,1,
-0x028e14,1,
-0x028e10,1,
-0x028e0c,1,
-0x028e04,1,
-0x028e00,1,
-0x028dfc,1,
-0x028df8,1,
-0x028df4,1,
-0x028dec,1,
-0x028de4,1,
-0x028de0,1,
-0x028ddc,1,
-0x028dd8,1,
-0x028dd4,1,
-0x028dcc,1,
-0x028dc8,1,
-0x028dc0,1,
-0x028db8,1,
-0x028db4,1,
-0x028db0,1,
-0x028da8,1,
-0x028da4,1,
-0x028da0,1,
-0x028d80,1,
-0x028d7c,1,
-0x028d78,1,
-0x028d74,1,
-0x028d70,1,
-0x028d6c,1,
-0x028d68,1,
-0x028d64,1,
-0x028d60,1,
-0x028d5c,1,
-0x028d58,1,
-0x028d54,1,
-0x028d50,1,
-0x028d4c,1,
-0x028d48,1,
-0x028d44,1,
-0x028d40,1,
-0x028d34,1,
-0x028d30,1,
-0x028d20,1,
-0x028d14,1,
-0x028d10,1,
-0x028d00,1,
-0x028cec,1,
-0x028ce8,1,
-0x028ce4,1,
-0x028ce0,1,
-0x028cdc,1,
-0x028cd8,1,
-0x028cd4,1,
-0x028cd0,1,
-0x028ccc,1,
-0x028cc8,1,
-0x028c90,1,
-0x028c8c,1,
-0x028c88,1,
-0x028c84,1,
-0x028c80,1,
-0x028c68,1,
-0x028c50,1,
-0x028c4c,1,
-0x028c24,1,
-0x028c20,1,
-0x028c1c,1,
-0x028c18,1,
-0x028c14,1,
-0x028c10,1,
-0x028c0c,1,
-0x028c08,1,
-0x028c04,1,
-0x028c00,1,
-0x028b34,1,
-0x028b30,1,
-0x028b20,1,
-0x028b14,1,
-0x028b10,1,
-0x028b00,1,
-0x028978,1,
-0x028974,1,
-0x028970,1,
-0x02896c,1,
-0x028968,1,
-0x028964,1,
-0x028960,1,
-0x02895c,1,
-0x028958,1,
-0x028954,1,
-0x028950,1,
-0x02894c,1,
-0x028948,1,
-0x028944,1,
-0x028940,1,
-0x02893c,1,
-0x028938,1,
-0x028934,1,
-0x028930,1,
-0x02892c,1,
-0x028928,1,
-0x028924,1,
-0x028920,1,
-0x02891c,1,
-0x028918,1,
-0x028914,1,
-0x028910,1,
-0x02890c,1,
-0x028908,1,
-0x028904,1,
-0x028900,1,
-0x0288fc,1,
-0x0288f8,1,
-0x0288f4,1,
-0x0288f0,1,
-0x0288ec,1,
-0x0288e8,1,
-0x0288e4,1,
-0x0288e0,1,
-0x0288dc,1,
-0x0288d8,1,
-0x0288d4,1,
-0x0288d0,1,
-0x0288cc,1,
-0x0288c8,1,
-0x0288c4,1,
-0x0288c0,1,
-0x0288bc,1,
-0x0288b8,1,
-0x0288b4,1,
-0x0288b0,1,
-0x0288ac,1,
-0x0288a8,1,
-0x0288a4,1,
-0x0288a0,1,
-0x02889c,1,
-0x028898,1,
-0x028894,1,
-0x028890,1,
-0x02888c,1,
-0x028888,1,
-0x028884,1,
-0x028880,1,
-0x02887c,1,
-0x028878,1,
-0x028874,1,
-0x028870,1,
-0x02886c,1,
-0x028868,1,
-0x028864,1,
-0x028860,1,
-0x02885c,1,
-0x028858,1,
-0x028854,1,
-0x028850,1,
-0x02884c,1,
-0x028848,1,
-0x028844,1,
-0x028840,1,
-0x02883c,1,
-0x028838,1,
-0x028834,1,
-0x028830,1,
-0x02882c,1,
-0x028828,1,
-0x028824,1,
-0x028820,1,
-0x02881c,1,
-0x028818,1,
-0x028814,1,
-0x028810,1,
-0x02880c,1,
-0x028808,1,
-0x028804,1,
-0x028800,1,
-0x0287fc,1,
-0x0287f8,1,
-0x0287f4,1,
-0x0287dc,1,
-0x0287d4,1,
-0x0287d0,1,
-0x0287cc,1,
-0x0287c8,1,
-0x0287c4,1,
-0x0287c0,1,
-0x0287bc,1,
-0x0287b8,1,
-0x0287b4,1,
-0x0287b0,1,
-0x0287ac,1,
-0x0287a8,1,
-0x0287a0,1,
-0x02879c,1,
-0x028798,1,
-0x028794,1,
-0x028790,1,
-0x02878c,1,
-0x028788,1,
-0x028784,1,
-0x028780,1,
-0x028694,1,
-0x028690,1,
-0x028680,1,
-0x028630,1,
-0x02862c,1,
-0x028628,1,
-0x028624,1,
-0x028620,1,
-0x02861c,1,
-0x028618,1,
-0x028614,1,
-0x028610,1,
-0x02860c,1,
-0x028604,1,
-0x028600,1,
-0x0285fc,1,
-0x0285f8,1,
-0x0285f4,1,
-0x0285ec,1,
-0x0285e4,1,
-0x0285e0,1,
-0x0285dc,1,
-0x0285d8,1,
-0x0285d4,1,
-0x0285cc,1,
-0x0285c8,1,
-0x0285c0,1,
-0x0285b8,1,
-0x0285b4,1,
-0x0285b0,1,
-0x0285a8,1,
-0x0285a4,1,
-0x0285a0,1,
-0x028580,1,
-0x02857c,1,
-0x028578,1,
-0x028574,1,
-0x028570,1,
-0x02856c,1,
-0x028568,1,
-0x028564,1,
-0x028560,1,
-0x02855c,1,
-0x028558,1,
-0x028554,1,
-0x028550,1,
-0x02854c,1,
-0x028548,1,
-0x028544,1,
-0x028540,1,
-0x028534,1,
-0x028530,1,
-0x028520,1,
-0x028514,1,
-0x028510,1,
-0x028500,1,
-0x0284ec,1,
-0x0284e8,1,
-0x0284e4,1,
-0x0284e0,1,
-0x0284dc,1,
-0x0284d8,1,
-0x0284d4,1,
-0x0284d0,1,
-0x0284cc,1,
-0x0284c8,1,
-0x028490,1,
-0x02848c,1,
-0x028488,1,
-0x028484,1,
-0x028480,1,
-0x028468,1,
-0x028450,1,
-0x02844c,1,
-0x028424,1,
-0x028420,1,
-0x02841c,1,
-0x028418,1,
-0x028414,1,
-0x028410,1,
-0x02840c,1,
-0x028408,1,
-0x028404,1,
-0x028400,1,
-0x028334,1,
-0x028330,1,
-0x028320,1,
-0x028314,1,
-0x028310,1,
-0x028300,1,
-0x028178,1,
-0x028174,1,
-0x028170,1,
-0x02816c,1,
-0x028168,1,
-0x028164,1,
-0x028160,1,
-0x02815c,1,
-0x028158,1,
-0x028154,1,
-0x028150,1,
-0x02814c,1,
-0x028148,1,
-0x028144,1,
-0x028140,1,
-0x02813c,1,
-0x028138,1,
-0x028134,1,
-0x028130,1,
-0x02812c,1,
-0x028128,1,
-0x028124,1,
-0x028120,1,
-0x02811c,1,
-0x028118,1,
-0x028114,1,
-0x028110,1,
-0x02810c,1,
-0x028108,1,
-0x028104,1,
-0x028100,1,
-0x0280fc,1,
-0x0280f8,1,
-0x0280f4,1,
-0x0280f0,1,
-0x0280ec,1,
-0x0280e8,1,
-0x0280e4,1,
-0x0280e0,1,
-0x0280dc,1,
-0x0280d8,1,
-0x0280d4,1,
-0x0280d0,1,
-0x0280cc,1,
-0x0280c8,1,
-0x0280c4,1,
-0x0280c0,1,
-0x0280bc,1,
-0x0280b8,1,
-0x0280b4,1,
-0x0280b0,1,
-0x0280ac,1,
-0x0280a8,1,
-0x0280a4,1,
-0x0280a0,1,
-0x02809c,1,
-0x028098,1,
-0x028094,1,
-0x028090,1,
-0x02808c,1,
-0x028088,1,
-0x028084,1,
-0x028080,1,
-0x02807c,1,
-0x028078,1,
-0x028074,1,
-0x028070,1,
-0x02806c,1,
-0x028068,1,
-0x028064,1,
-0x028060,1,
-0x02805c,1,
-0x028058,1,
-0x028054,1,
-0x028050,1,
-0x02804c,1,
-0x028048,1,
-0x028044,1,
-0x028040,1,
-0x02803c,1,
-0x028038,1,
-0x028034,1,
-0x028030,1,
-0x02802c,1,
-0x028028,1,
-0x028024,1,
-0x028020,1,
-0x02801c,1,
-0x028018,1,
-0x028014,1,
-0x028010,1,
-0x02800c,1,
-0x028008,1,
-0x028004,1,
-0x028000,1,
-0x0259f4,1,
-0x0259f0,1,
-0x0259d4,1,
-0x0259d0,1,
-0x0259c0,1,
-0x0259b4,1,
-0x0259b0,1,
-0x0259a0,1,
-0x025994,1,
-0x025990,1,
-0x025980,1,
-0x025974,1,
-0x025970,1,
-0x025960,1,
-0x025954,1,
-0x025950,1,
-0x025940,1,
-0x025928,1,
-0x025924,1,
-0x025920,1,
-0x02591c,1,
-0x025918,1,
-0x025914,1,
-0x025910,1,
-0x02590c,1,
-0x025908,1,
-0x025904,1,
-0x025900,1,
-0x0258d4,1,
-0x0258d0,1,
-0x0258cc,1,
-0x0258c8,1,
-0x0258c4,1,
-0x0258c0,1,
-0x0258ac,1,
-0x025870,1,
-0x02586c,1,
-0x025868,1,
-0x025864,1,
-0x025860,1,
-0x02585c,1,
-0x025858,1,
-0x025854,1,
-0x025850,1,
-0x02584c,1,
-0x025848,1,
-0x025844,1,
-0x025840,1,
-0x02583c,1,
-0x025838,1,
-0x025834,1,
-0x025830,1,
-0x02582c,1,
-0x025828,1,
-0x025824,1,
-0x025820,1,
-0x025814,1,
-0x025810,1,
-0x025800,1,
-0x023b0c,1,
-0x023b08,1,
-0x023b04,1,
-0x023b00,1,
-0x023af4,1,
-0x023af0,1,
-0x023a74,1,
-0x023a70,1,
-0x023a60,1,
-0x023a54,1,
-0x023a50,1,
-0x023a40,1,
-0x023a28,1,
-0x023a1c,1,
-0x023a18,1,
-0x023a0c,1,
-0x023a00,1,
-0x023934,1,
-0x023930,1,
-0x023924,1,
-0x023920,1,
-0x023914,1,
-0x023910,1,
-0x023904,1,
-0x023900,1,
-0x0238f4,1,
-0x0238f0,1,
-0x0238e4,1,
-0x0238e0,1,
-0x0238b4,1,
-0x0238b0,1,
-0x0238ac,1,
-0x0238a8,1,
-0x0238a4,1,
-0x0238a0,1,
-0x023894,1,
-0x023890,1,
-0x02388c,1,
-0x023888,1,
-0x023884,1,
-0x023880,1,
-0x023870,1,
-0x02383c,1,
-0x023838,1,
-0x023834,1,
-0x023830,1,
-0x02382c,1,
-0x023828,1,
-0x023824,1,
-0x023820,1,
-0x023814,1,
-0x023810,1,
-0x023800,1,
-0x0237bc,1,
-0x0237b8,1,
-0x0237b4,1,
-0x0237b0,1,
-0x0237a0,1,
-0x02379c,1,
-0x023798,1,
-0x023790,1,
-0x02378c,1,
-0x023788,1,
-0x023784,1,
-0x023780,1,
-0x02367c,1,
-0x023678,1,
-0x023674,1,
-0x023670,1,
-0x02366c,1,
-0x023668,1,
-0x023664,1,
-0x023660,1,
-0x02365c,1,
-0x023658,1,
-0x023654,1,
-0x02364c,1,
-0x023648,1,
-0x023644,1,
-0x023640,1,
-0x02362c,1,
-0x023628,1,
-0x023624,1,
-0x023620,1,
-0x02361c,1,
-0x023618,1,
-0x023614,1,
-0x023610,1,
-0x02360c,1,
-0x023608,1,
-0x023604,1,
-0x023600,1,
-0x0234a0,1,
-0x02349c,1,
-0x023498,1,
-0x023494,1,
-0x023490,1,
-0x02348c,1,
-0x023488,1,
-0x023484,1,
-0x023480,1,
-0x02347c,1,
-0x023478,1,
-0x023474,1,
-0x023470,1,
-0x02346c,1,
-0x023464,1,
-0x02345c,1,
-0x023458,1,
-0x023454,1,
-0x023450,1,
-0x02344c,1,
-0x023448,1,
-0x023444,1,
-0x023440,1,
-0x02343c,1,
-0x023438,1,
-0x023424,1,
-0x023420,1,
-0x02341c,1,
-0x023418,1,
-0x023414,1,
-0x023410,1,
-0x02340c,1,
-0x023408,1,
-0x023404,1,
-0x023400,1,
-0x023040,1,
-0x023000,1,
-0x022ffc,1,
-0x022ff8,1,
-0x022ff4,1,
-0x022fdc,1,
-0x022fd4,1,
-0x022fd0,1,
-0x022fcc,1,
-0x022fc8,1,
-0x022fc4,1,
-0x022fc0,1,
-0x022fbc,1,
-0x022fb8,1,
-0x022fb4,1,
-0x022fb0,1,
-0x022fac,1,
-0x022fa8,1,
-0x022fa0,1,
-0x022f9c,1,
-0x022f98,1,
-0x022f94,1,
-0x022f90,1,
-0x022f8c,1,
-0x022f88,1,
-0x022f84,1,
-0x022f80,1,
-0x022e94,1,
-0x022e90,1,
-0x022e80,1,
-0x022e30,1,
-0x022e2c,1,
-0x022e28,1,
-0x022e24,1,
-0x022e20,1,
-0x022e1c,1,
-0x022e18,1,
-0x022e14,1,
-0x022e10,1,
-0x022e0c,1,
-0x022e04,1,
-0x022e00,1,
-0x022dfc,1,
-0x022df8,1,
-0x022df4,1,
-0x022dec,1,
-0x022de4,1,
-0x022de0,1,
-0x022ddc,1,
-0x022dd8,1,
-0x022dd4,1,
-0x022dcc,1,
-0x022dc8,1,
-0x022dc0,1,
-0x022db8,1,
-0x022db4,1,
-0x022db0,1,
-0x022da8,1,
-0x022da4,1,
-0x022da0,1,
-0x022d80,1,
-0x022d7c,1,
-0x022d78,1,
-0x022d74,1,
-0x022d70,1,
-0x022d6c,1,
-0x022d68,1,
-0x022d64,1,
-0x022d60,1,
-0x022d5c,1,
-0x022d58,1,
-0x022d54,1,
-0x022d50,1,
-0x022d4c,1,
-0x022d48,1,
-0x022d44,1,
-0x022d40,1,
-0x022d34,1,
-0x022d30,1,
-0x022d20,1,
-0x022d14,1,
-0x022d10,1,
-0x022d00,1,
-0x022cec,1,
-0x022ce8,1,
-0x022ce4,1,
-0x022ce0,1,
-0x022cdc,1,
-0x022cd8,1,
-0x022cd4,1,
-0x022cd0,1,
-0x022ccc,1,
-0x022cc8,1,
-0x022c90,1,
-0x022c8c,1,
-0x022c88,1,
-0x022c84,1,
-0x022c80,1,
-0x022c68,1,
-0x022c50,1,
-0x022c4c,1,
-0x022c24,1,
-0x022c20,1,
-0x022c1c,1,
-0x022c18,1,
-0x022c14,1,
-0x022c10,1,
-0x022c0c,1,
-0x022c08,1,
-0x022c04,1,
-0x022c00,1,
-0x022b34,1,
-0x022b30,1,
-0x022b20,1,
-0x022b14,1,
-0x022b10,1,
-0x022b00,1,
-0x022978,1,
-0x022974,1,
-0x022970,1,
-0x02296c,1,
-0x022968,1,
-0x022964,1,
-0x022960,1,
-0x02295c,1,
-0x022958,1,
-0x022954,1,
-0x022950,1,
-0x02294c,1,
-0x022948,1,
-0x022944,1,
-0x022940,1,
-0x02293c,1,
-0x022938,1,
-0x022934,1,
-0x022930,1,
-0x02292c,1,
-0x022928,1,
-0x022924,1,
-0x022920,1,
-0x02291c,1,
-0x022918,1,
-0x022914,1,
-0x022910,1,
-0x02290c,1,
-0x022908,1,
-0x022904,1,
-0x022900,1,
-0x0228fc,1,
-0x0228f8,1,
-0x0228f4,1,
-0x0228f0,1,
-0x0228ec,1,
-0x0228e8,1,
-0x0228e4,1,
-0x0228e0,1,
-0x0228dc,1,
-0x0228d8,1,
-0x0228d4,1,
-0x0228d0,1,
-0x0228cc,1,
-0x0228c8,1,
-0x0228c4,1,
-0x0228c0,1,
-0x0228bc,1,
-0x0228b8,1,
-0x0228b4,1,
-0x0228b0,1,
-0x0228ac,1,
-0x0228a8,1,
-0x0228a4,1,
-0x0228a0,1,
-0x02289c,1,
-0x022898,1,
-0x022894,1,
-0x022890,1,
-0x02288c,1,
-0x022888,1,
-0x022884,1,
-0x022880,1,
-0x02287c,1,
-0x022878,1,
-0x022874,1,
-0x022870,1,
-0x02286c,1,
-0x022868,1,
-0x022864,1,
-0x022860,1,
-0x02285c,1,
-0x022858,1,
-0x022854,1,
-0x022850,1,
-0x02284c,1,
-0x022848,1,
-0x022844,1,
-0x022840,1,
-0x02283c,1,
-0x022838,1,
-0x022834,1,
-0x022830,1,
-0x02282c,1,
-0x022828,1,
-0x022824,1,
-0x022820,1,
-0x02281c,1,
-0x022818,1,
-0x022814,1,
-0x022810,1,
-0x02280c,1,
-0x022808,1,
-0x022804,1,
-0x022800,1,
-0x0227fc,1,
-0x0227f8,1,
-0x0227f4,1,
-0x0227dc,1,
-0x0227d4,1,
-0x0227d0,1,
-0x0227cc,1,
-0x0227c8,1,
-0x0227c4,1,
-0x0227c0,1,
-0x0227bc,1,
-0x0227b8,1,
-0x0227b4,1,
-0x0227b0,1,
-0x0227ac,1,
-0x0227a8,1,
-0x0227a0,1,
-0x02279c,1,
-0x022798,1,
-0x022794,1,
-0x022790,1,
-0x02278c,1,
-0x022788,1,
-0x022784,1,
-0x022780,1,
-0x022694,1,
-0x022690,1,
-0x022680,1,
-0x022630,1,
-0x02262c,1,
-0x022628,1,
-0x022624,1,
-0x022620,1,
-0x02261c,1,
-0x022618,1,
-0x022614,1,
-0x022610,1,
-0x02260c,1,
-0x022604,1,
-0x022600,1,
-0x0225fc,1,
-0x0225f8,1,
-0x0225f4,1,
-0x0225ec,1,
-0x0225e4,1,
-0x0225e0,1,
-0x0225dc,1,
-0x0225d8,1,
-0x0225d4,1,
-0x0225cc,1,
-0x0225c8,1,
-0x0225c0,1,
-0x0225b8,1,
-0x0225b4,1,
-0x0225b0,1,
-0x0225a8,1,
-0x0225a4,1,
-0x0225a0,1,
-0x022580,1,
-0x02257c,1,
-0x022578,1,
-0x022574,1,
-0x022570,1,
-0x02256c,1,
-0x022568,1,
-0x022564,1,
-0x022560,1,
-0x02255c,1,
-0x022558,1,
-0x022554,1,
-0x022550,1,
-0x02254c,1,
-0x022548,1,
-0x022544,1,
-0x022540,1,
-0x022534,1,
-0x022530,1,
-0x022520,1,
-0x022514,1,
-0x022510,1,
-0x022500,1,
-0x0224ec,1,
-0x0224e8,1,
-0x0224e4,1,
-0x0224e0,1,
-0x0224dc,1,
-0x0224d8,1,
-0x0224d4,1,
-0x0224d0,1,
-0x0224cc,1,
-0x0224c8,1,
-0x022490,1,
-0x02248c,1,
-0x022488,1,
-0x022484,1,
-0x022480,1,
-0x022468,1,
-0x022450,1,
-0x02244c,1,
-0x022424,1,
-0x022420,1,
-0x02241c,1,
-0x022418,1,
-0x022414,1,
-0x022410,1,
-0x02240c,1,
-0x022408,1,
-0x022404,1,
-0x022400,1,
-0x022334,1,
-0x022330,1,
-0x022320,1,
-0x022314,1,
-0x022310,1,
-0x022300,1,
-0x022178,1,
-0x022174,1,
-0x022170,1,
-0x02216c,1,
-0x022168,1,
-0x022164,1,
-0x022160,1,
-0x02215c,1,
-0x022158,1,
-0x022154,1,
-0x022150,1,
-0x02214c,1,
-0x022148,1,
-0x022144,1,
-0x022140,1,
-0x02213c,1,
-0x022138,1,
-0x022134,1,
-0x022130,1,
-0x02212c,1,
-0x022128,1,
-0x022124,1,
-0x022120,1,
-0x02211c,1,
-0x022118,1,
-0x022114,1,
-0x022110,1,
-0x02210c,1,
-0x022108,1,
-0x022104,1,
-0x022100,1,
-0x0220fc,1,
-0x0220f8,1,
-0x0220f4,1,
-0x0220f0,1,
-0x0220ec,1,
-0x0220e8,1,
-0x0220e4,1,
-0x0220e0,1,
-0x0220dc,1,
-0x0220d8,1,
-0x0220d4,1,
-0x0220d0,1,
-0x0220cc,1,
-0x0220c8,1,
-0x0220c4,1,
-0x0220c0,1,
-0x0220bc,1,
-0x0220b8,1,
-0x0220b4,1,
-0x0220b0,1,
-0x0220ac,1,
-0x0220a8,1,
-0x0220a4,1,
-0x0220a0,1,
-0x02209c,1,
-0x022098,1,
-0x022094,1,
-0x022090,1,
-0x02208c,1,
-0x022088,1,
-0x022084,1,
-0x022080,1,
-0x02207c,1,
-0x022078,1,
-0x022074,1,
-0x022070,1,
-0x02206c,1,
-0x022068,1,
-0x022064,1,
-0x022060,1,
-0x02205c,1,
-0x022058,1,
-0x022054,1,
-0x022050,1,
-0x02204c,1,
-0x022048,1,
-0x022044,1,
-0x022040,1,
-0x02203c,1,
-0x022038,1,
-0x022034,1,
-0x022030,1,
-0x02202c,1,
-0x022028,1,
-0x022024,1,
-0x022020,1,
-0x02201c,1,
-0x022018,1,
-0x022014,1,
-0x022010,1,
-0x02200c,1,
-0x022008,1,
-0x022004,1,
-0x022000,1,
-0x021ffc,1,
-0x021ff8,1,
-0x021ff4,1,
-0x021fdc,1,
-0x021fd4,1,
-0x021fd0,1,
-0x021fcc,1,
-0x021fc8,1,
-0x021fc4,1,
-0x021fc0,1,
-0x021fbc,1,
-0x021fb8,1,
-0x021fb4,1,
-0x021fb0,1,
-0x021fac,1,
-0x021fa8,1,
-0x021fa0,1,
-0x021f9c,1,
-0x021f98,1,
-0x021f94,1,
-0x021f90,1,
-0x021f8c,1,
-0x021f88,1,
-0x021f84,1,
-0x021f80,1,
-0x021e94,1,
-0x021e90,1,
-0x021e80,1,
-0x021e30,1,
-0x021e2c,1,
-0x021e28,1,
-0x021e24,1,
-0x021e20,1,
-0x021e1c,1,
-0x021e18,1,
-0x021e14,1,
-0x021e10,1,
-0x021e0c,1,
-0x021e04,1,
-0x021e00,1,
-0x021dfc,1,
-0x021df8,1,
-0x021df4,1,
-0x021dec,1,
-0x021de4,1,
-0x021de0,1,
-0x021ddc,1,
-0x021dd8,1,
-0x021dd4,1,
-0x021dcc,1,
-0x021dc8,1,
-0x021dc0,1,
-0x021db8,1,
-0x021db4,1,
-0x021db0,1,
-0x021da8,1,
-0x021da4,1,
-0x021da0,1,
-0x021d80,1,
-0x021d7c,1,
-0x021d78,1,
-0x021d74,1,
-0x021d70,1,
-0x021d6c,1,
-0x021d68,1,
-0x021d64,1,
-0x021d60,1,
-0x021d5c,1,
-0x021d58,1,
-0x021d54,1,
-0x021d50,1,
-0x021d4c,1,
-0x021d48,1,
-0x021d44,1,
-0x021d40,1,
-0x021d34,1,
-0x021d30,1,
-0x021d20,1,
-0x021d14,1,
-0x021d10,1,
-0x021d00,1,
-0x021cec,1,
-0x021ce8,1,
-0x021ce4,1,
-0x021ce0,1,
-0x021cdc,1,
-0x021cd8,1,
-0x021cd4,1,
-0x021cd0,1,
-0x021ccc,1,
-0x021cc8,1,
-0x021c90,1,
-0x021c8c,1,
-0x021c88,1,
-0x021c84,1,
-0x021c80,1,
-0x021c68,1,
-0x021c50,1,
-0x021c4c,1,
-0x021c24,1,
-0x021c20,1,
-0x021c1c,1,
-0x021c18,1,
-0x021c14,1,
-0x021c10,1,
-0x021c0c,1,
-0x021c08,1,
-0x021c04,1,
-0x021c00,1,
-0x021b34,1,
-0x021b30,1,
-0x021b20,1,
-0x021b14,1,
-0x021b10,1,
-0x021b00,1,
-0x021978,1,
-0x021974,1,
-0x021970,1,
-0x02196c,1,
-0x021968,1,
-0x021964,1,
-0x021960,1,
-0x02195c,1,
-0x021958,1,
-0x021954,1,
-0x021950,1,
-0x02194c,1,
-0x021948,1,
-0x021944,1,
-0x021940,1,
-0x02193c,1,
-0x021938,1,
-0x021934,1,
-0x021930,1,
-0x02192c,1,
-0x021928,1,
-0x021924,1,
-0x021920,1,
-0x02191c,1,
-0x021918,1,
-0x021914,1,
-0x021910,1,
-0x02190c,1,
-0x021908,1,
-0x021904,1,
-0x021900,1,
-0x0218fc,1,
-0x0218f8,1,
-0x0218f4,1,
-0x0218f0,1,
-0x0218ec,1,
-0x0218e8,1,
-0x0218e4,1,
-0x0218e0,1,
-0x0218dc,1,
-0x0218d8,1,
-0x0218d4,1,
-0x0218d0,1,
-0x0218cc,1,
-0x0218c8,1,
-0x0218c4,1,
-0x0218c0,1,
-0x0218bc,1,
-0x0218b8,1,
-0x0218b4,1,
-0x0218b0,1,
-0x0218ac,1,
-0x0218a8,1,
-0x0218a4,1,
-0x0218a0,1,
-0x02189c,1,
-0x021898,1,
-0x021894,1,
-0x021890,1,
-0x02188c,1,
-0x021888,1,
-0x021884,1,
-0x021880,1,
-0x02187c,1,
-0x021878,1,
-0x021874,1,
-0x021870,1,
-0x02186c,1,
-0x021868,1,
-0x021864,1,
-0x021860,1,
-0x02185c,1,
-0x021858,1,
-0x021854,1,
-0x021850,1,
-0x02184c,1,
-0x021848,1,
-0x021844,1,
-0x021840,1,
-0x02183c,1,
-0x021838,1,
-0x021834,1,
-0x021830,1,
-0x02182c,1,
-0x021828,1,
-0x021824,1,
-0x021820,1,
-0x02181c,1,
-0x021818,1,
-0x021814,1,
-0x021810,1,
-0x02180c,1,
-0x021808,1,
-0x021804,1,
-0x021800,1,
-0x0217fc,1,
-0x0217f8,1,
-0x0217f4,1,
-0x0217dc,1,
-0x0217d4,1,
-0x0217d0,1,
-0x0217cc,1,
-0x0217c8,1,
-0x0217c4,1,
-0x0217c0,1,
-0x0217bc,1,
-0x0217b8,1,
-0x0217b4,1,
-0x0217b0,1,
-0x0217ac,1,
-0x0217a8,1,
-0x0217a0,1,
-0x02179c,1,
-0x021798,1,
-0x021794,1,
-0x021790,1,
-0x02178c,1,
-0x021788,1,
-0x021784,1,
-0x021780,1,
-0x021694,1,
-0x021690,1,
-0x021680,1,
-0x021630,1,
-0x02162c,1,
-0x021628,1,
-0x021624,1,
-0x021620,1,
-0x02161c,1,
-0x021618,1,
-0x021614,1,
-0x021610,1,
-0x02160c,1,
-0x021604,1,
-0x021600,1,
-0x0215fc,1,
-0x0215f8,1,
-0x0215f4,1,
-0x0215ec,1,
-0x0215e4,1,
-0x0215e0,1,
-0x0215dc,1,
-0x0215d8,1,
-0x0215d4,1,
-0x0215cc,1,
-0x0215c8,1,
-0x0215c0,1,
-0x0215b8,1,
-0x0215b4,1,
-0x0215b0,1,
-0x0215a8,1,
-0x0215a4,1,
-0x0215a0,1,
-0x021580,1,
-0x02157c,1,
-0x021578,1,
-0x021574,1,
-0x021570,1,
-0x02156c,1,
-0x021568,1,
-0x021564,1,
-0x021560,1,
-0x02155c,1,
-0x021558,1,
-0x021554,1,
-0x021550,1,
-0x02154c,1,
-0x021548,1,
-0x021544,1,
-0x021540,1,
-0x021534,1,
-0x021530,1,
-0x021520,1,
-0x021514,1,
-0x021510,1,
-0x021500,1,
-0x0214ec,1,
-0x0214e8,1,
-0x0214e4,1,
-0x0214e0,1,
-0x0214dc,1,
-0x0214d8,1,
-0x0214d4,1,
-0x0214d0,1,
-0x0214cc,1,
-0x0214c8,1,
-0x021490,1,
-0x02148c,1,
-0x021488,1,
-0x021484,1,
-0x021480,1,
-0x021468,1,
-0x021450,1,
-0x02144c,1,
-0x021424,1,
-0x021420,1,
-0x02141c,1,
-0x021418,1,
-0x021414,1,
-0x021410,1,
-0x02140c,1,
-0x021408,1,
-0x021404,1,
-0x021400,1,
-0x021334,1,
-0x021330,1,
-0x021320,1,
-0x021314,1,
-0x021310,1,
-0x021300,1,
-0x021178,1,
-0x021174,1,
-0x021170,1,
-0x02116c,1,
-0x021168,1,
-0x021164,1,
-0x021160,1,
-0x02115c,1,
-0x021158,1,
-0x021154,1,
-0x021150,1,
-0x02114c,1,
-0x021148,1,
-0x021144,1,
-0x021140,1,
-0x02113c,1,
-0x021138,1,
-0x021134,1,
-0x021130,1,
-0x02112c,1,
-0x021128,1,
-0x021124,1,
-0x021120,1,
-0x02111c,1,
-0x021118,1,
-0x021114,1,
-0x021110,1,
-0x02110c,1,
-0x021108,1,
-0x021104,1,
-0x021100,1,
-0x0210fc,1,
-0x0210f8,1,
-0x0210f4,1,
-0x0210f0,1,
-0x0210ec,1,
-0x0210e8,1,
-0x0210e4,1,
-0x0210e0,1,
-0x0210dc,1,
-0x0210d8,1,
-0x0210d4,1,
-0x0210d0,1,
-0x0210cc,1,
-0x0210c8,1,
-0x0210c4,1,
-0x0210c0,1,
-0x0210bc,1,
-0x0210b8,1,
-0x0210b4,1,
-0x0210b0,1,
-0x0210ac,1,
-0x0210a8,1,
-0x0210a4,1,
-0x0210a0,1,
-0x02109c,1,
-0x021098,1,
-0x021094,1,
-0x021090,1,
-0x02108c,1,
-0x021088,1,
-0x021084,1,
-0x021080,1,
-0x02107c,1,
-0x021078,1,
-0x021074,1,
-0x021070,1,
-0x02106c,1,
-0x021068,1,
-0x021064,1,
-0x021060,1,
-0x02105c,1,
-0x021058,1,
-0x021054,1,
-0x021050,1,
-0x02104c,1,
-0x021048,1,
-0x021044,1,
-0x021040,1,
-0x02103c,1,
-0x021038,1,
-0x021034,1,
-0x021030,1,
-0x02102c,1,
-0x021028,1,
-0x021024,1,
-0x021020,1,
-0x02101c,1,
-0x021018,1,
-0x021014,1,
-0x021010,1,
-0x02100c,1,
-0x021008,1,
-0x021004,1,
-0x021000,1,
-0x020ffc,1,
-0x020ff8,1,
-0x020ff4,1,
-0x020fdc,1,
-0x020fd4,1,
-0x020fd0,1,
-0x020fcc,1,
-0x020fc8,1,
-0x020fc4,1,
-0x020fc0,1,
-0x020fbc,1,
-0x020fb8,1,
-0x020fb4,1,
-0x020fb0,1,
-0x020fac,1,
-0x020fa8,1,
-0x020fa0,1,
-0x020f9c,1,
-0x020f98,1,
-0x020f94,1,
-0x020f90,1,
-0x020f8c,1,
-0x020f88,1,
-0x020f84,1,
-0x020f80,1,
-0x020e94,1,
-0x020e90,1,
-0x020e80,1,
-0x020e30,1,
-0x020e2c,1,
-0x020e28,1,
-0x020e24,1,
-0x020e20,1,
-0x020e1c,1,
-0x020e18,1,
-0x020e14,1,
-0x020e10,1,
-0x020e0c,1,
-0x020e04,1,
-0x020e00,1,
-0x020dfc,1,
-0x020df8,1,
-0x020df4,1,
-0x020dec,1,
-0x020de4,1,
-0x020de0,1,
-0x020ddc,1,
-0x020dd8,1,
-0x020dd4,1,
-0x020dcc,1,
-0x020dc8,1,
-0x020dc0,1,
-0x020db8,1,
-0x020db4,1,
-0x020db0,1,
-0x020da8,1,
-0x020da4,1,
-0x020da0,1,
-0x020d80,1,
-0x020d7c,1,
-0x020d78,1,
-0x020d74,1,
-0x020d70,1,
-0x020d6c,1,
-0x020d68,1,
-0x020d64,1,
-0x020d60,1,
-0x020d5c,1,
-0x020d58,1,
-0x020d54,1,
-0x020d50,1,
-0x020d4c,1,
-0x020d48,1,
-0x020d44,1,
-0x020d40,1,
-0x020d34,1,
-0x020d30,1,
-0x020d20,1,
-0x020d14,1,
-0x020d10,1,
-0x020d00,1,
-0x020cec,1,
-0x020ce8,1,
-0x020ce4,1,
-0x020ce0,1,
-0x020cdc,1,
-0x020cd8,1,
-0x020cd4,1,
-0x020cd0,1,
-0x020ccc,1,
-0x020cc8,1,
-0x020c90,1,
-0x020c8c,1,
-0x020c88,1,
-0x020c84,1,
-0x020c80,1,
-0x020c68,1,
-0x020c50,1,
-0x020c4c,1,
-0x020c24,1,
-0x020c20,1,
-0x020c1c,1,
-0x020c18,1,
-0x020c14,1,
-0x020c10,1,
-0x020c0c,1,
-0x020c08,1,
-0x020c04,1,
-0x020c00,1,
-0x020b34,1,
-0x020b30,1,
-0x020b20,1,
-0x020b14,1,
-0x020b10,1,
-0x020b00,1,
-0x020978,1,
-0x020974,1,
-0x020970,1,
-0x02096c,1,
-0x020968,1,
-0x020964,1,
-0x020960,1,
-0x02095c,1,
-0x020958,1,
-0x020954,1,
-0x020950,1,
-0x02094c,1,
-0x020948,1,
-0x020944,1,
-0x020940,1,
-0x02093c,1,
-0x020938,1,
-0x020934,1,
-0x020930,1,
-0x02092c,1,
-0x020928,1,
-0x020924,1,
-0x020920,1,
-0x02091c,1,
-0x020918,1,
-0x020914,1,
-0x020910,1,
-0x02090c,1,
-0x020908,1,
-0x020904,1,
-0x020900,1,
-0x0208fc,1,
-0x0208f8,1,
-0x0208f4,1,
-0x0208f0,1,
-0x0208ec,1,
-0x0208e8,1,
-0x0208e4,1,
-0x0208e0,1,
-0x0208dc,1,
-0x0208d8,1,
-0x0208d4,1,
-0x0208d0,1,
-0x0208cc,1,
-0x0208c8,1,
-0x0208c4,1,
-0x0208c0,1,
-0x0208bc,1,
-0x0208b8,1,
-0x0208b4,1,
-0x0208b0,1,
-0x0208ac,1,
-0x0208a8,1,
-0x0208a4,1,
-0x0208a0,1,
-0x02089c,1,
-0x020898,1,
-0x020894,1,
-0x020890,1,
-0x02088c,1,
-0x020888,1,
-0x020884,1,
-0x020880,1,
-0x02087c,1,
-0x020878,1,
-0x020874,1,
-0x020870,1,
-0x02086c,1,
-0x020868,1,
-0x020864,1,
-0x020860,1,
-0x02085c,1,
-0x020858,1,
-0x020854,1,
-0x020850,1,
-0x02084c,1,
-0x020848,1,
-0x020844,1,
-0x020840,1,
-0x02083c,1,
-0x020838,1,
-0x020834,1,
-0x020830,1,
-0x02082c,1,
-0x020828,1,
-0x020824,1,
-0x020820,1,
-0x02081c,1,
-0x020818,1,
-0x020814,1,
-0x020810,1,
-0x02080c,1,
-0x020808,1,
-0x020804,1,
-0x020800,1,
-0x0207fc,1,
-0x0207f8,1,
-0x0207f4,1,
-0x0207dc,1,
-0x0207d4,1,
-0x0207d0,1,
-0x0207cc,1,
-0x0207c8,1,
-0x0207c4,1,
-0x0207c0,1,
-0x0207bc,1,
-0x0207b8,1,
-0x0207b4,1,
-0x0207b0,1,
-0x0207ac,1,
-0x0207a8,1,
-0x0207a0,1,
-0x02079c,1,
-0x020798,1,
-0x020794,1,
-0x020790,1,
-0x02078c,1,
-0x020788,1,
-0x020784,1,
-0x020780,1,
-0x020694,1,
-0x020690,1,
-0x020680,1,
-0x020630,1,
-0x02062c,1,
-0x020628,1,
-0x020624,1,
-0x020620,1,
-0x02061c,1,
-0x020618,1,
-0x020614,1,
-0x020610,1,
-0x02060c,1,
-0x020604,1,
-0x020600,1,
-0x0205fc,1,
-0x0205f8,1,
-0x0205f4,1,
-0x0205ec,1,
-0x0205e4,1,
-0x0205e0,1,
-0x0205dc,1,
-0x0205d8,1,
-0x0205d4,1,
-0x0205cc,1,
-0x0205c8,1,
-0x0205c0,1,
-0x0205b8,1,
-0x0205b4,1,
-0x0205b0,1,
-0x0205a8,1,
-0x0205a4,1,
-0x0205a0,1,
-0x020580,1,
-0x02057c,1,
-0x020578,1,
-0x020574,1,
-0x020570,1,
-0x02056c,1,
-0x020568,1,
-0x020564,1,
-0x020560,1,
-0x02055c,1,
-0x020558,1,
-0x020554,1,
-0x020550,1,
-0x02054c,1,
-0x020548,1,
-0x020544,1,
-0x020540,1,
-0x020534,1,
-0x020530,1,
-0x020520,1,
-0x020514,1,
-0x020510,1,
-0x020500,1,
-0x0204ec,1,
-0x0204e8,1,
-0x0204e4,1,
-0x0204e0,1,
-0x0204dc,1,
-0x0204d8,1,
-0x0204d4,1,
-0x0204d0,1,
-0x0204cc,1,
-0x0204c8,1,
-0x020490,1,
-0x02048c,1,
-0x020488,1,
-0x020484,1,
-0x020480,1,
-0x020468,1,
-0x020450,1,
-0x02044c,1,
-0x020424,1,
-0x020420,1,
-0x02041c,1,
-0x020418,1,
-0x020414,1,
-0x020410,1,
-0x02040c,1,
-0x020408,1,
-0x020404,1,
-0x020400,1,
-0x020334,1,
-0x020330,1,
-0x020320,1,
-0x020314,1,
-0x020310,1,
-0x020300,1,
-0x020178,1,
-0x020174,1,
-0x020170,1,
-0x02016c,1,
-0x020168,1,
-0x020164,1,
-0x020160,1,
-0x02015c,1,
-0x020158,1,
-0x020154,1,
-0x020150,1,
-0x02014c,1,
-0x020148,1,
-0x020144,1,
-0x020140,1,
-0x02013c,1,
-0x020138,1,
-0x020134,1,
-0x020130,1,
-0x02012c,1,
-0x020128,1,
-0x020124,1,
-0x020120,1,
-0x02011c,1,
-0x020118,1,
-0x020114,1,
-0x020110,1,
-0x02010c,1,
-0x020108,1,
-0x020104,1,
-0x020100,1,
-0x0200fc,1,
-0x0200f8,1,
-0x0200f4,1,
-0x0200f0,1,
-0x0200ec,1,
-0x0200e8,1,
-0x0200e4,1,
-0x0200e0,1,
-0x0200dc,1,
-0x0200d8,1,
-0x0200d4,1,
-0x0200d0,1,
-0x0200cc,1,
-0x0200c8,1,
-0x0200c4,1,
-0x0200c0,1,
-0x0200bc,1,
-0x0200b8,1,
-0x0200b4,1,
-0x0200b0,1,
-0x0200ac,1,
-0x0200a8,1,
-0x0200a4,1,
-0x0200a0,1,
-0x02009c,1,
-0x020098,1,
-0x020094,1,
-0x020090,1,
-0x02008c,1,
-0x020088,1,
-0x020084,1,
-0x020080,1,
-0x02007c,1,
-0x020078,1,
-0x020074,1,
-0x020070,1,
-0x02006c,1,
-0x020068,1,
-0x020064,1,
-0x020060,1,
-0x02005c,1,
-0x020058,1,
-0x020054,1,
-0x020050,1,
-0x02004c,1,
-0x020048,1,
-0x020044,1,
-0x020040,1,
-0x02003c,1,
-0x020038,1,
-0x020034,1,
-0x020030,1,
-0x02002c,1,
-0x020028,1,
-0x020024,1,
-0x020020,1,
-0x02001c,1,
-0x020018,1,
-0x020014,1,
-0x020010,1,
-0x02000c,1,
-0x020008,1,
-0x020004,1,
-0x020000,1,
-0x01d9f4,1,
-0x01d9f0,1,
-0x01d9d4,1,
-0x01d9d0,1,
-0x01d9c0,1,
-0x01d9b4,1,
-0x01d9b0,1,
-0x01d9a0,1,
-0x01d994,1,
-0x01d990,1,
-0x01d980,1,
-0x01d974,1,
-0x01d970,1,
-0x01d960,1,
-0x01d954,1,
-0x01d950,1,
-0x01d940,1,
-0x01d928,1,
-0x01d924,1,
-0x01d920,1,
-0x01d91c,1,
-0x01d918,1,
-0x01d914,1,
-0x01d910,1,
-0x01d90c,1,
-0x01d908,1,
-0x01d904,1,
-0x01d900,1,
-0x01d8d4,1,
-0x01d8d0,1,
-0x01d8cc,1,
-0x01d8c8,1,
-0x01d8c4,1,
-0x01d8c0,1,
-0x01d8ac,1,
-0x01d870,1,
-0x01d86c,1,
-0x01d868,1,
-0x01d864,1,
-0x01d860,1,
-0x01d85c,1,
-0x01d858,1,
-0x01d854,1,
-0x01d850,1,
-0x01d84c,1,
-0x01d848,1,
-0x01d844,1,
-0x01d840,1,
-0x01d83c,1,
-0x01d838,1,
-0x01d834,1,
-0x01d830,1,
-0x01d82c,1,
-0x01d828,1,
-0x01d824,1,
-0x01d820,1,
-0x01d814,1,
-0x01d810,1,
-0x01d800,1,
-0x01bb0c,1,
-0x01bb08,1,
-0x01bb04,1,
-0x01bb00,1,
-0x01baf4,1,
-0x01baf0,1,
-0x01ba74,1,
-0x01ba70,1,
-0x01ba60,1,
-0x01ba54,1,
-0x01ba50,1,
-0x01ba40,1,
-0x01ba28,1,
-0x01ba1c,1,
-0x01ba18,1,
-0x01ba0c,1,
-0x01ba00,1,
-0x01b934,1,
-0x01b930,1,
-0x01b924,1,
-0x01b920,1,
-0x01b914,1,
-0x01b910,1,
-0x01b904,1,
-0x01b900,1,
-0x01b8f4,1,
-0x01b8f0,1,
-0x01b8e4,1,
-0x01b8e0,1,
-0x01b8b4,1,
-0x01b8b0,1,
-0x01b8ac,1,
-0x01b8a8,1,
-0x01b8a4,1,
-0x01b8a0,1,
-0x01b894,1,
-0x01b890,1,
-0x01b88c,1,
-0x01b888,1,
-0x01b884,1,
-0x01b880,1,
-0x01b870,1,
-0x01b83c,1,
-0x01b838,1,
-0x01b834,1,
-0x01b830,1,
-0x01b82c,1,
-0x01b828,1,
-0x01b824,1,
-0x01b820,1,
-0x01b814,1,
-0x01b810,1,
-0x01b800,1,
-0x01b7bc,1,
-0x01b7b8,1,
-0x01b7b4,1,
-0x01b67c,1,
-0x01b678,1,
-0x01b674,1,
-0x01b670,1,
-0x01b66c,1,
-0x01b668,1,
-0x01b664,1,
-0x01b660,1,
-0x01b65c,1,
-0x01b658,1,
-0x01b654,1,
-0x01b64c,1,
-0x01b648,1,
-0x01b644,1,
-0x01b640,1,
-0x01b62c,1,
-0x01b628,1,
-0x01b624,1,
-0x01b620,1,
-0x01b61c,1,
-0x01b618,1,
-0x01b614,1,
-0x01b610,1,
-0x01b60c,1,
-0x01b608,1,
-0x01b604,1,
-0x01b600,1,
-0x01b4a0,1,
-0x01b49c,1,
-0x01b498,1,
-0x01b494,1,
-0x01b490,1,
-0x01b48c,1,
-0x01b488,1,
-0x01b484,1,
-0x01b480,1,
-0x01b47c,1,
-0x01b478,1,
-0x01b474,1,
-0x01b470,1,
-0x01b46c,1,
-0x01b464,1,
-0x01b45c,1,
-0x01b458,1,
-0x01b454,1,
-0x01b450,1,
-0x01b44c,1,
-0x01b448,1,
-0x01b444,1,
-0x01b440,1,
-0x01b43c,1,
-0x01b438,1,
-0x01b424,1,
-0x01b420,1,
-0x01b41c,1,
-0x01b418,1,
-0x01b414,1,
-0x01b410,1,
-0x01b40c,1,
-0x01b408,1,
-0x01b404,1,
-0x01b400,1,
-0x01b040,1,
-0x01b000,1,
-0x01affc,1,
-0x01aff8,1,
-0x01aff4,1,
-0x01afdc,1,
-0x01afd4,1,
-0x01afd0,1,
-0x01afcc,1,
-0x01afc8,1,
-0x01afc4,1,
-0x01afc0,1,
-0x01afbc,1,
-0x01afb8,1,
-0x01afb4,1,
-0x01afb0,1,
-0x01afac,1,
-0x01afa8,1,
-0x01afa0,1,
-0x01af9c,1,
-0x01af98,1,
-0x01af94,1,
-0x01af90,1,
-0x01af8c,1,
-0x01af88,1,
-0x01af84,1,
-0x01af80,1,
-0x01ae94,1,
-0x01ae90,1,
-0x01ae80,1,
-0x01ae30,1,
-0x01ae2c,1,
-0x01ae28,1,
-0x01ae24,1,
-0x01ae20,1,
-0x01ae1c,1,
-0x01ae18,1,
-0x01ae14,1,
-0x01ae10,1,
-0x01ae0c,1,
-0x01ae04,1,
-0x01ae00,1,
-0x01adfc,1,
-0x01adf8,1,
-0x01adf4,1,
-0x01adec,1,
-0x01ade4,1,
-0x01ade0,1,
-0x01addc,1,
-0x01add8,1,
-0x01add4,1,
-0x01adcc,1,
-0x01adc8,1,
-0x01adc0,1,
-0x01adb8,1,
-0x01adb4,1,
-0x01adb0,1,
-0x01ada8,1,
-0x01ada4,1,
-0x01ada0,1,
-0x01ad80,1,
-0x01ad7c,1,
-0x01ad78,1,
-0x01ad74,1,
-0x01ad70,1,
-0x01ad6c,1,
-0x01ad68,1,
-0x01ad64,1,
-0x01ad60,1,
-0x01ad5c,1,
-0x01ad58,1,
-0x01ad54,1,
-0x01ad50,1,
-0x01ad4c,1,
-0x01ad48,1,
-0x01ad44,1,
-0x01ad40,1,
-0x01ad34,1,
-0x01ad30,1,
-0x01ad20,1,
-0x01ad14,1,
-0x01ad10,1,
-0x01ad00,1,
-0x01acec,1,
-0x01ace8,1,
-0x01ace4,1,
-0x01ace0,1,
-0x01acdc,1,
-0x01acd8,1,
-0x01acd4,1,
-0x01acd0,1,
-0x01accc,1,
-0x01acc8,1,
-0x01ac90,1,
-0x01ac8c,1,
-0x01ac88,1,
-0x01ac84,1,
-0x01ac80,1,
-0x01ac68,1,
-0x01ac50,1,
-0x01ac4c,1,
-0x01ac24,1,
-0x01ac20,1,
-0x01ac1c,1,
-0x01ac18,1,
-0x01ac14,1,
-0x01ac10,1,
-0x01ac0c,1,
-0x01ac08,1,
-0x01ac04,1,
-0x01ac00,1,
-0x01ab34,1,
-0x01ab30,1,
-0x01ab20,1,
-0x01ab14,1,
-0x01ab10,1,
-0x01ab00,1,
-0x01a978,1,
-0x01a974,1,
-0x01a970,1,
-0x01a96c,1,
-0x01a968,1,
-0x01a964,1,
-0x01a960,1,
-0x01a95c,1,
-0x01a958,1,
-0x01a954,1,
-0x01a950,1,
-0x01a94c,1,
-0x01a948,1,
-0x01a944,1,
-0x01a940,1,
-0x01a93c,1,
-0x01a938,1,
-0x01a934,1,
-0x01a930,1,
-0x01a92c,1,
-0x01a928,1,
-0x01a924,1,
-0x01a920,1,
-0x01a91c,1,
-0x01a918,1,
-0x01a914,1,
-0x01a910,1,
-0x01a90c,1,
-0x01a908,1,
-0x01a904,1,
-0x01a900,1,
-0x01a8fc,1,
-0x01a8f8,1,
-0x01a8f4,1,
-0x01a8f0,1,
-0x01a8ec,1,
-0x01a8e8,1,
-0x01a8e4,1,
-0x01a8e0,1,
-0x01a8dc,1,
-0x01a8d8,1,
-0x01a8d4,1,
-0x01a8d0,1,
-0x01a8cc,1,
-0x01a8c8,1,
-0x01a8c4,1,
-0x01a8c0,1,
-0x01a8bc,1,
-0x01a8b8,1,
-0x01a8b4,1,
-0x01a8b0,1,
-0x01a8ac,1,
-0x01a8a8,1,
-0x01a8a4,1,
-0x01a8a0,1,
-0x01a89c,1,
-0x01a898,1,
-0x01a894,1,
-0x01a890,1,
-0x01a88c,1,
-0x01a888,1,
-0x01a884,1,
-0x01a880,1,
-0x01a87c,1,
-0x01a878,1,
-0x01a874,1,
-0x01a870,1,
-0x01a86c,1,
-0x01a868,1,
-0x01a864,1,
-0x01a860,1,
-0x01a85c,1,
-0x01a858,1,
-0x01a854,1,
-0x01a850,1,
-0x01a84c,1,
-0x01a848,1,
-0x01a844,1,
-0x01a840,1,
-0x01a83c,1,
-0x01a838,1,
-0x01a834,1,
-0x01a830,1,
-0x01a82c,1,
-0x01a828,1,
-0x01a824,1,
-0x01a820,1,
-0x01a81c,1,
-0x01a818,1,
-0x01a814,1,
-0x01a810,1,
-0x01a80c,1,
-0x01a808,1,
-0x01a804,1,
-0x01a800,1,
-0x01a7fc,1,
-0x01a7f8,1,
-0x01a7f4,1,
-0x01a7dc,1,
-0x01a7d4,1,
-0x01a7d0,1,
-0x01a7cc,1,
-0x01a7c8,1,
-0x01a7c4,1,
-0x01a7c0,1,
-0x01a7bc,1,
-0x01a7b8,1,
-0x01a7b4,1,
-0x01a7b0,1,
-0x01a7ac,1,
-0x01a7a8,1,
-0x01a7a0,1,
-0x01a79c,1,
-0x01a798,1,
-0x01a794,1,
-0x01a790,1,
-0x01a78c,1,
-0x01a788,1,
-0x01a784,1,
-0x01a780,1,
-0x01a694,1,
-0x01a690,1,
-0x01a680,1,
-0x01a630,1,
-0x01a62c,1,
-0x01a628,1,
-0x01a624,1,
-0x01a620,1,
-0x01a61c,1,
-0x01a618,1,
-0x01a614,1,
-0x01a610,1,
-0x01a60c,1,
-0x01a604,1,
-0x01a600,1,
-0x01a5fc,1,
-0x01a5f8,1,
-0x01a5f4,1,
-0x01a5ec,1,
-0x01a5e4,1,
-0x01a5e0,1,
-0x01a5dc,1,
-0x01a5d8,1,
-0x01a5d4,1,
-0x01a5cc,1,
-0x01a5c8,1,
-0x01a5c0,1,
-0x01a5b8,1,
-0x01a5b4,1,
-0x01a5b0,1,
-0x01a5a8,1,
-0x01a5a4,1,
-0x01a5a0,1,
-0x01a580,1,
-0x01a57c,1,
-0x01a578,1,
-0x01a574,1,
-0x01a570,1,
-0x01a56c,1,
-0x01a568,1,
-0x01a564,1,
-0x01a560,1,
-0x01a55c,1,
-0x01a558,1,
-0x01a554,1,
-0x01a550,1,
-0x01a54c,1,
-0x01a548,1,
-0x01a544,1,
-0x01a540,1,
-0x01a534,1,
-0x01a530,1,
-0x01a520,1,
-0x01a514,1,
-0x01a510,1,
-0x01a500,1,
-0x01a4ec,1,
-0x01a4e8,1,
-0x01a4e4,1,
-0x01a4e0,1,
-0x01a4dc,1,
-0x01a4d8,1,
-0x01a4d4,1,
-0x01a4d0,1,
-0x01a4cc,1,
-0x01a4c8,1,
-0x01a490,1,
-0x01a48c,1,
-0x01a488,1,
-0x01a484,1,
-0x01a480,1,
-0x01a468,1,
-0x01a450,1,
-0x01a44c,1,
-0x01a424,1,
-0x01a420,1,
-0x01a41c,1,
-0x01a418,1,
-0x01a414,1,
-0x01a410,1,
-0x01a40c,1,
-0x01a408,1,
-0x01a404,1,
-0x01a400,1,
-0x01a334,1,
-0x01a330,1,
-0x01a320,1,
-0x01a314,1,
-0x01a310,1,
-0x01a300,1,
-0x01a178,1,
-0x01a174,1,
-0x01a170,1,
-0x01a16c,1,
-0x01a168,1,
-0x01a164,1,
-0x01a160,1,
-0x01a15c,1,
-0x01a158,1,
-0x01a154,1,
-0x01a150,1,
-0x01a14c,1,
-0x01a148,1,
-0x01a144,1,
-0x01a140,1,
-0x01a13c,1,
-0x01a138,1,
-0x01a134,1,
-0x01a130,1,
-0x01a12c,1,
-0x01a128,1,
-0x01a124,1,
-0x01a120,1,
-0x01a11c,1,
-0x01a118,1,
-0x01a114,1,
-0x01a110,1,
-0x01a10c,1,
-0x01a108,1,
-0x01a104,1,
-0x01a100,1,
-0x01a0fc,1,
-0x01a0f8,1,
-0x01a0f4,1,
-0x01a0f0,1,
-0x01a0ec,1,
-0x01a0e8,1,
-0x01a0e4,1,
-0x01a0e0,1,
-0x01a0dc,1,
-0x01a0d8,1,
-0x01a0d4,1,
-0x01a0d0,1,
-0x01a0cc,1,
-0x01a0c8,1,
-0x01a0c4,1,
-0x01a0c0,1,
-0x01a0bc,1,
-0x01a0b8,1,
-0x01a0b4,1,
-0x01a0b0,1,
-0x01a0ac,1,
-0x01a0a8,1,
-0x01a0a4,1,
-0x01a0a0,1,
-0x01a09c,1,
-0x01a098,1,
-0x01a094,1,
-0x01a090,1,
-0x01a08c,1,
-0x01a088,1,
-0x01a084,1,
-0x01a080,1,
-0x01a07c,1,
-0x01a078,1,
-0x01a074,1,
-0x01a070,1,
-0x01a06c,1,
-0x01a068,1,
-0x01a064,1,
-0x01a060,1,
-0x01a05c,1,
-0x01a058,1,
-0x01a054,1,
-0x01a050,1,
-0x01a04c,1,
-0x01a048,1,
-0x01a044,1,
-0x01a040,1,
-0x01a03c,1,
-0x01a038,1,
-0x01a034,1,
-0x01a030,1,
-0x01a02c,1,
-0x01a028,1,
-0x01a024,1,
-0x01a020,1,
-0x01a01c,1,
-0x01a018,1,
-0x01a014,1,
-0x01a010,1,
-0x01a00c,1,
-0x01a008,1,
-0x01a004,1,
-0x01a000,1,
-0x019ffc,1,
-0x019ff8,1,
-0x019ff4,1,
-0x019fdc,1,
-0x019fd4,1,
-0x019fd0,1,
-0x019fcc,1,
-0x019fc8,1,
-0x019fc4,1,
-0x019fc0,1,
-0x019fbc,1,
-0x019fb8,1,
-0x019fb4,1,
-0x019fb0,1,
-0x019fac,1,
-0x019fa8,1,
-0x019fa0,1,
-0x019f9c,1,
-0x019f98,1,
-0x019f94,1,
-0x019f90,1,
-0x019f8c,1,
-0x019f88,1,
-0x019f84,1,
-0x019f80,1,
-0x019e94,1,
-0x019e90,1,
-0x019e80,1,
-0x019e30,1,
-0x019e2c,1,
-0x019e28,1,
-0x019e24,1,
-0x019e20,1,
-0x019e1c,1,
-0x019e18,1,
-0x019e14,1,
-0x019e10,1,
-0x019e0c,1,
-0x019e04,1,
-0x019e00,1,
-0x019dfc,1,
-0x019df8,1,
-0x019df4,1,
-0x019dec,1,
-0x019de4,1,
-0x019de0,1,
-0x019ddc,1,
-0x019dd8,1,
-0x019dd4,1,
-0x019dcc,1,
-0x019dc8,1,
-0x019dc0,1,
-0x019db8,1,
-0x019db4,1,
-0x019db0,1,
-0x019da8,1,
-0x019da4,1,
-0x019da0,1,
-0x019d80,1,
-0x019d7c,1,
-0x019d78,1,
-0x019d74,1,
-0x019d70,1,
-0x019d6c,1,
-0x019d68,1,
-0x019d64,1,
-0x019d60,1,
-0x019d5c,1,
-0x019d58,1,
-0x019d54,1,
-0x019d50,1,
-0x019d4c,1,
-0x019d48,1,
-0x019d44,1,
-0x019d40,1,
-0x019d34,1,
-0x019d30,1,
-0x019d20,1,
-0x019d14,1,
-0x019d10,1,
-0x019d00,1,
-0x019cec,1,
-0x019ce8,1,
-0x019ce4,1,
-0x019ce0,1,
-0x019cdc,1,
-0x019cd8,1,
-0x019cd4,1,
-0x019cd0,1,
-0x019ccc,1,
-0x019cc8,1,
-0x019c90,1,
-0x019c8c,1,
-0x019c88,1,
-0x019c84,1,
-0x019c80,1,
-0x019c68,1,
-0x019c50,1,
-0x019c4c,1,
-0x019c24,1,
-0x019c20,1,
-0x019c1c,1,
-0x019c18,1,
-0x019c14,1,
-0x019c10,1,
-0x019c0c,1,
-0x019c08,1,
-0x019c04,1,
-0x019c00,1,
-0x019b34,1,
-0x019b30,1,
-0x019b20,1,
-0x019b14,1,
-0x019b10,1,
-0x019b00,1,
-0x019978,1,
-0x019974,1,
-0x019970,1,
-0x01996c,1,
-0x019968,1,
-0x019964,1,
-0x019960,1,
-0x01995c,1,
-0x019958,1,
-0x019954,1,
-0x019950,1,
-0x01994c,1,
-0x019948,1,
-0x019944,1,
-0x019940,1,
-0x01993c,1,
-0x019938,1,
-0x019934,1,
-0x019930,1,
-0x01992c,1,
-0x019928,1,
-0x019924,1,
-0x019920,1,
-0x01991c,1,
-0x019918,1,
-0x019914,1,
-0x019910,1,
-0x01990c,1,
-0x019908,1,
-0x019904,1,
-0x019900,1,
-0x0198fc,1,
-0x0198f8,1,
-0x0198f4,1,
-0x0198f0,1,
-0x0198ec,1,
-0x0198e8,1,
-0x0198e4,1,
-0x0198e0,1,
-0x0198dc,1,
-0x0198d8,1,
-0x0198d4,1,
-0x0198d0,1,
-0x0198cc,1,
-0x0198c8,1,
-0x0198c4,1,
-0x0198c0,1,
-0x0198bc,1,
-0x0198b8,1,
-0x0198b4,1,
-0x0198b0,1,
-0x0198ac,1,
-0x0198a8,1,
-0x0198a4,1,
-0x0198a0,1,
-0x01989c,1,
-0x019898,1,
-0x019894,1,
-0x019890,1,
-0x01988c,1,
-0x019888,1,
-0x019884,1,
-0x019880,1,
-0x01987c,1,
-0x019878,1,
-0x019874,1,
-0x019870,1,
-0x01986c,1,
-0x019868,1,
-0x019864,1,
-0x019860,1,
-0x01985c,1,
-0x019858,1,
-0x019854,1,
-0x019850,1,
-0x01984c,1,
-0x019848,1,
-0x019844,1,
-0x019840,1,
-0x01983c,1,
-0x019838,1,
-0x019834,1,
-0x019830,1,
-0x01982c,1,
-0x019828,1,
-0x019824,1,
-0x019820,1,
-0x01981c,1,
-0x019818,1,
-0x019814,1,
-0x019810,1,
-0x01980c,1,
-0x019808,1,
-0x019804,1,
-0x019800,1,
-0x0197fc,1,
-0x0197f8,1,
-0x0197f4,1,
-0x0197dc,1,
-0x0197d4,1,
-0x0197d0,1,
-0x0197cc,1,
-0x0197c8,1,
-0x0197c4,1,
-0x0197c0,1,
-0x0197bc,1,
-0x0197b8,1,
-0x0197b4,1,
-0x0197b0,1,
-0x0197ac,1,
-0x0197a8,1,
-0x0197a0,1,
-0x01979c,1,
-0x019798,1,
-0x019794,1,
-0x019790,1,
-0x01978c,1,
-0x019788,1,
-0x019784,1,
-0x019780,1,
-0x019694,1,
-0x019690,1,
-0x019680,1,
-0x019630,1,
-0x01962c,1,
-0x019628,1,
-0x019624,1,
-0x019620,1,
-0x01961c,1,
-0x019618,1,
-0x019614,1,
-0x019610,1,
-0x01960c,1,
-0x019604,1,
-0x019600,1,
-0x0195fc,1,
-0x0195f8,1,
-0x0195f4,1,
-0x0195ec,1,
-0x0195e4,1,
-0x0195e0,1,
-0x0195dc,1,
-0x0195d8,1,
-0x0195d4,1,
-0x0195cc,1,
-0x0195c8,1,
-0x0195c0,1,
-0x0195b8,1,
-0x0195b4,1,
-0x0195b0,1,
-0x0195a8,1,
-0x0195a4,1,
-0x0195a0,1,
-0x019580,1,
-0x01957c,1,
-0x019578,1,
-0x019574,1,
-0x019570,1,
-0x01956c,1,
-0x019568,1,
-0x019564,1,
-0x019560,1,
-0x01955c,1,
-0x019558,1,
-0x019554,1,
-0x019550,1,
-0x01954c,1,
-0x019548,1,
-0x019544,1,
-0x019540,1,
-0x019534,1,
-0x019530,1,
-0x019520,1,
-0x019514,1,
-0x019510,1,
-0x019500,1,
-0x0194ec,1,
-0x0194e8,1,
-0x0194e4,1,
-0x0194e0,1,
-0x0194dc,1,
-0x0194d8,1,
-0x0194d4,1,
-0x0194d0,1,
-0x0194cc,1,
-0x0194c8,1,
-0x019490,1,
-0x01948c,1,
-0x019488,1,
-0x019484,1,
-0x019480,1,
-0x019468,1,
-0x019450,1,
-0x01944c,1,
-0x019424,1,
-0x019420,1,
-0x01941c,1,
-0x019418,1,
-0x019414,1,
-0x019410,1,
-0x01940c,1,
-0x019408,1,
-0x019404,1,
-0x019400,1,
-0x019334,1,
-0x019330,1,
-0x019320,1,
-0x019314,1,
-0x019310,1,
-0x019300,1,
-0x019178,1,
-0x019174,1,
-0x019170,1,
-0x01916c,1,
-0x019168,1,
-0x019164,1,
-0x019160,1,
-0x01915c,1,
-0x019158,1,
-0x019154,1,
-0x019150,1,
-0x01914c,1,
-0x019148,1,
-0x019144,1,
-0x019140,1,
-0x01913c,1,
-0x019138,1,
-0x019134,1,
-0x019130,1,
-0x01912c,1,
-0x019128,1,
-0x019124,1,
-0x019120,1,
-0x01911c,1,
-0x019118,1,
-0x019114,1,
-0x019110,1,
-0x01910c,1,
-0x019108,1,
-0x019104,1,
-0x019100,1,
-0x0190fc,1,
-0x0190f8,1,
-0x0190f4,1,
-0x0190f0,1,
-0x0190ec,1,
-0x0190e8,1,
-0x0190e4,1,
-0x0190e0,1,
-0x0190dc,1,
-0x0190d8,1,
-0x0190d4,1,
-0x0190d0,1,
-0x0190cc,1,
-0x0190c8,1,
-0x0190c4,1,
-0x0190c0,1,
-0x0190bc,1,
-0x0190b8,1,
-0x0190b4,1,
-0x0190b0,1,
-0x0190ac,1,
-0x0190a8,1,
-0x0190a4,1,
-0x0190a0,1,
-0x01909c,1,
-0x019098,1,
-0x019094,1,
-0x019090,1,
-0x01908c,1,
-0x019088,1,
-0x019084,1,
-0x019080,1,
-0x01907c,1,
-0x019078,1,
-0x019074,1,
-0x019070,1,
-0x01906c,1,
-0x019068,1,
-0x019064,1,
-0x019060,1,
-0x01905c,1,
-0x019058,1,
-0x019054,1,
-0x019050,1,
-0x01904c,1,
-0x019048,1,
-0x019044,1,
-0x019040,1,
-0x01903c,1,
-0x019038,1,
-0x019034,1,
-0x019030,1,
-0x01902c,1,
-0x019028,1,
-0x019024,1,
-0x019020,1,
-0x01901c,1,
-0x019018,1,
-0x019014,1,
-0x019010,1,
-0x01900c,1,
-0x019008,1,
-0x019004,1,
-0x019000,1,
-0x018ffc,1,
-0x018ff8,1,
-0x018ff4,1,
-0x018fdc,1,
-0x018fd4,1,
-0x018fd0,1,
-0x018fcc,1,
-0x018fc8,1,
-0x018fc4,1,
-0x018fc0,1,
-0x018fbc,1,
-0x018fb8,1,
-0x018fb4,1,
-0x018fb0,1,
-0x018fac,1,
-0x018fa8,1,
-0x018fa0,1,
-0x018f9c,1,
-0x018f98,1,
-0x018f94,1,
-0x018f90,1,
-0x018f8c,1,
-0x018f88,1,
-0x018f84,1,
-0x018f80,1,
-0x018e94,1,
-0x018e90,1,
-0x018e80,1,
-0x018e30,1,
-0x018e2c,1,
-0x018e28,1,
-0x018e24,1,
-0x018e20,1,
-0x018e1c,1,
-0x018e18,1,
-0x018e14,1,
-0x018e10,1,
-0x018e0c,1,
-0x018e04,1,
-0x018e00,1,
-0x018dfc,1,
-0x018df8,1,
-0x018df4,1,
-0x018dec,1,
-0x018de4,1,
-0x018de0,1,
-0x018ddc,1,
-0x018dd8,1,
-0x018dd4,1,
-0x018dcc,1,
-0x018dc8,1,
-0x018dc0,1,
-0x018db8,1,
-0x018db4,1,
-0x018db0,1,
-0x018da8,1,
-0x018da4,1,
-0x018da0,1,
-0x018d80,1,
-0x018d7c,1,
-0x018d78,1,
-0x018d74,1,
-0x018d70,1,
-0x018d6c,1,
-0x018d68,1,
-0x018d64,1,
-0x018d60,1,
-0x018d5c,1,
-0x018d58,1,
-0x018d54,1,
-0x018d50,1,
-0x018d4c,1,
-0x018d48,1,
-0x018d44,1,
-0x018d40,1,
-0x018d34,1,
-0x018d30,1,
-0x018d20,1,
-0x018d14,1,
-0x018d10,1,
-0x018d00,1,
-0x018cec,1,
-0x018ce8,1,
-0x018ce4,1,
-0x018ce0,1,
-0x018cdc,1,
-0x018cd8,1,
-0x018cd4,1,
-0x018cd0,1,
-0x018ccc,1,
-0x018cc8,1,
-0x018c90,1,
-0x018c8c,1,
-0x018c88,1,
-0x018c84,1,
-0x018c80,1,
-0x018c68,1,
-0x018c50,1,
-0x018c4c,1,
-0x018c24,1,
-0x018c20,1,
-0x018c1c,1,
-0x018c18,1,
-0x018c14,1,
-0x018c10,1,
-0x018c0c,1,
-0x018c08,1,
-0x018c04,1,
-0x018c00,1,
-0x018b34,1,
-0x018b30,1,
-0x018b20,1,
-0x018b14,1,
-0x018b10,1,
-0x018b00,1,
-0x018978,1,
-0x018974,1,
-0x018970,1,
-0x01896c,1,
-0x018968,1,
-0x018964,1,
-0x018960,1,
-0x01895c,1,
-0x018958,1,
-0x018954,1,
-0x018950,1,
-0x01894c,1,
-0x018948,1,
-0x018944,1,
-0x018940,1,
-0x01893c,1,
-0x018938,1,
-0x018934,1,
-0x018930,1,
-0x01892c,1,
-0x018928,1,
-0x018924,1,
-0x018920,1,
-0x01891c,1,
-0x018918,1,
-0x018914,1,
-0x018910,1,
-0x01890c,1,
-0x018908,1,
-0x018904,1,
-0x018900,1,
-0x0188fc,1,
-0x0188f8,1,
-0x0188f4,1,
-0x0188f0,1,
-0x0188ec,1,
-0x0188e8,1,
-0x0188e4,1,
-0x0188e0,1,
-0x0188dc,1,
-0x0188d8,1,
-0x0188d4,1,
-0x0188d0,1,
-0x0188cc,1,
-0x0188c8,1,
-0x0188c4,1,
-0x0188c0,1,
-0x0188bc,1,
-0x0188b8,1,
-0x0188b4,1,
-0x0188b0,1,
-0x0188ac,1,
-0x0188a8,1,
-0x0188a4,1,
-0x0188a0,1,
-0x01889c,1,
-0x018898,1,
-0x018894,1,
-0x018890,1,
-0x01888c,1,
-0x018888,1,
-0x018884,1,
-0x018880,1,
-0x01887c,1,
-0x018878,1,
-0x018874,1,
-0x018870,1,
-0x01886c,1,
-0x018868,1,
-0x018864,1,
-0x018860,1,
-0x01885c,1,
-0x018858,1,
-0x018854,1,
-0x018850,1,
-0x01884c,1,
-0x018848,1,
-0x018844,1,
-0x018840,1,
-0x01883c,1,
-0x018838,1,
-0x018834,1,
-0x018830,1,
-0x01882c,1,
-0x018828,1,
-0x018824,1,
-0x018820,1,
-0x01881c,1,
-0x018818,1,
-0x018814,1,
-0x018810,1,
-0x01880c,1,
-0x018808,1,
-0x018804,1,
-0x018800,1,
-0x0187fc,1,
-0x0187f8,1,
-0x0187f4,1,
-0x0187dc,1,
-0x0187d4,1,
-0x0187d0,1,
-0x0187cc,1,
-0x0187c8,1,
-0x0187c4,1,
-0x0187c0,1,
-0x0187bc,1,
-0x0187b8,1,
-0x0187b4,1,
-0x0187b0,1,
-0x0187ac,1,
-0x0187a8,1,
-0x0187a0,1,
-0x01879c,1,
-0x018798,1,
-0x018794,1,
-0x018790,1,
-0x01878c,1,
-0x018788,1,
-0x018784,1,
-0x018780,1,
-0x018694,1,
-0x018690,1,
-0x018680,1,
-0x018630,1,
-0x01862c,1,
-0x018628,1,
-0x018624,1,
-0x018620,1,
-0x01861c,1,
-0x018618,1,
-0x018614,1,
-0x018610,1,
-0x01860c,1,
-0x018604,1,
-0x018600,1,
-0x0185fc,1,
-0x0185f8,1,
-0x0185f4,1,
-0x0185ec,1,
-0x0185e4,1,
-0x0185e0,1,
-0x0185dc,1,
-0x0185d8,1,
-0x0185d4,1,
-0x0185cc,1,
-0x0185c8,1,
-0x0185c0,1,
-0x0185b8,1,
-0x0185b4,1,
-0x0185b0,1,
-0x0185a8,1,
-0x0185a4,1,
-0x0185a0,1,
-0x018580,1,
-0x01857c,1,
-0x018578,1,
-0x018574,1,
-0x018570,1,
-0x01856c,1,
-0x018568,1,
-0x018564,1,
-0x018560,1,
-0x01855c,1,
-0x018558,1,
-0x018554,1,
-0x018550,1,
-0x01854c,1,
-0x018548,1,
-0x018544,1,
-0x018540,1,
-0x018534,1,
-0x018530,1,
-0x018520,1,
-0x018514,1,
-0x018510,1,
-0x018500,1,
-0x0184ec,1,
-0x0184e8,1,
-0x0184e4,1,
-0x0184e0,1,
-0x0184dc,1,
-0x0184d8,1,
-0x0184d4,1,
-0x0184d0,1,
-0x0184cc,1,
-0x0184c8,1,
-0x018490,1,
-0x01848c,1,
-0x018488,1,
-0x018484,1,
-0x018480,1,
-0x018468,1,
-0x018450,1,
-0x01844c,1,
-0x018424,1,
-0x018420,1,
-0x01841c,1,
-0x018418,1,
-0x018414,1,
-0x018410,1,
-0x01840c,1,
-0x018408,1,
-0x018404,1,
-0x018400,1,
-0x018334,1,
-0x018330,1,
-0x018320,1,
-0x018314,1,
-0x018310,1,
-0x018300,1,
-0x018178,1,
-0x018174,1,
-0x018170,1,
-0x01816c,1,
-0x018168,1,
-0x018164,1,
-0x018160,1,
-0x01815c,1,
-0x018158,1,
-0x018154,1,
-0x018150,1,
-0x01814c,1,
-0x018148,1,
-0x018144,1,
-0x018140,1,
-0x01813c,1,
-0x018138,1,
-0x018134,1,
-0x018130,1,
-0x01812c,1,
-0x018128,1,
-0x018124,1,
-0x018120,1,
-0x01811c,1,
-0x018118,1,
-0x018114,1,
-0x018110,1,
-0x01810c,1,
-0x018108,1,
-0x018104,1,
-0x018100,1,
-0x0180fc,1,
-0x0180f8,1,
-0x0180f4,1,
-0x0180f0,1,
-0x0180ec,1,
-0x0180e8,1,
-0x0180e4,1,
-0x0180e0,1,
-0x0180dc,1,
-0x0180d8,1,
-0x0180d4,1,
-0x0180d0,1,
-0x0180cc,1,
-0x0180c8,1,
-0x0180c4,1,
-0x0180c0,1,
-0x0180bc,1,
-0x0180b8,1,
-0x0180b4,1,
-0x0180b0,1,
-0x0180ac,1,
-0x0180a8,1,
-0x0180a4,1,
-0x0180a0,1,
-0x01809c,1,
-0x018098,1,
-0x018094,1,
-0x018090,1,
-0x01808c,1,
-0x018088,1,
-0x018084,1,
-0x018080,1,
-0x01807c,1,
-0x018078,1,
-0x018074,1,
-0x018070,1,
-0x01806c,1,
-0x018068,1,
-0x018064,1,
-0x018060,1,
-0x01805c,1,
-0x018058,1,
-0x018054,1,
-0x018050,1,
-0x01804c,1,
-0x018048,1,
-0x018044,1,
-0x018040,1,
-0x01803c,1,
-0x018038,1,
-0x018034,1,
-0x018030,1,
-0x01802c,1,
-0x018028,1,
-0x018024,1,
-0x018020,1,
-0x01801c,1,
-0x018018,1,
-0x018014,1,
-0x018010,1,
-0x01800c,1,
-0x018008,1,
-0x018004,1,
-0x018000,1,
-0x0159f4,1,
-0x0159f0,1,
-0x0159d4,1,
-0x0159d0,1,
-0x0159c0,1,
-0x0159b4,1,
-0x0159b0,1,
-0x0159a0,1,
-0x015994,1,
-0x015990,1,
-0x015980,1,
-0x015974,1,
-0x015970,1,
-0x015960,1,
-0x015954,1,
-0x015950,1,
-0x015940,1,
-0x015928,1,
-0x015924,1,
-0x015920,1,
-0x01591c,1,
-0x015918,1,
-0x015914,1,
-0x015910,1,
-0x01590c,1,
-0x015908,1,
-0x015904,1,
-0x015900,1,
-0x0158d4,1,
-0x0158d0,1,
-0x0158cc,1,
-0x0158c8,1,
-0x0158c4,1,
-0x0158c0,1,
-0x0158ac,1,
-0x015870,1,
-0x01586c,1,
-0x015868,1,
-0x015864,1,
-0x015860,1,
-0x01585c,1,
-0x015858,1,
-0x015854,1,
-0x015850,1,
-0x01584c,1,
-0x015848,1,
-0x015844,1,
-0x015840,1,
-0x01583c,1,
-0x015838,1,
-0x015834,1,
-0x015830,1,
-0x01582c,1,
-0x015828,1,
-0x015824,1,
-0x015820,1,
-0x015814,1,
-0x015810,1,
-0x015800,1,
-0x013b0c,1,
-0x013b08,1,
-0x013b04,1,
-0x013b00,1,
-0x013af4,1,
-0x013af0,1,
-0x013a74,1,
-0x013a70,1,
-0x013a60,1,
-0x013a54,1,
-0x013a50,1,
-0x013a40,1,
-0x013a28,1,
-0x013a1c,1,
-0x013a18,1,
-0x013a0c,1,
-0x013a00,1,
-0x013934,1,
-0x013930,1,
-0x013924,1,
-0x013920,1,
-0x013914,1,
-0x013910,1,
-0x013904,1,
-0x013900,1,
-0x0138f4,1,
-0x0138f0,1,
-0x0138e4,1,
-0x0138e0,1,
-0x0138b4,1,
-0x0138b0,1,
-0x0138ac,1,
-0x0138a8,1,
-0x0138a4,1,
-0x0138a0,1,
-0x013894,1,
-0x013890,1,
-0x01388c,1,
-0x013888,1,
-0x013884,1,
-0x013880,1,
-0x013870,1,
-0x01383c,1,
-0x013838,1,
-0x013834,1,
-0x013830,1,
-0x01382c,1,
-0x013828,1,
-0x013824,1,
-0x013820,1,
-0x013814,1,
-0x013810,1,
-0x013800,1,
-0x0137bc,1,
-0x0137b8,1,
-0x0137b4,1,
-0x01367c,1,
-0x013678,1,
-0x013674,1,
-0x013670,1,
-0x01366c,1,
-0x013668,1,
-0x013664,1,
-0x013660,1,
-0x01365c,1,
-0x013658,1,
-0x013654,1,
-0x01364c,1,
-0x013648,1,
-0x013644,1,
-0x013640,1,
-0x01362c,1,
-0x013628,1,
-0x013624,1,
-0x013620,1,
-0x01361c,1,
-0x013618,1,
-0x013614,1,
-0x013610,1,
-0x01360c,1,
-0x013608,1,
-0x013604,1,
-0x013600,1,
-0x0134a0,1,
-0x01349c,1,
-0x013498,1,
-0x013494,1,
-0x013490,1,
-0x01348c,1,
-0x013488,1,
-0x013484,1,
-0x013480,1,
-0x01347c,1,
-0x013478,1,
-0x013474,1,
-0x013470,1,
-0x01346c,1,
-0x013464,1,
-0x01345c,1,
-0x013458,1,
-0x013454,1,
-0x013450,1,
-0x01344c,1,
-0x013448,1,
-0x013444,1,
-0x013440,1,
-0x01343c,1,
-0x013438,1,
-0x013424,1,
-0x013420,1,
-0x01341c,1,
-0x013418,1,
-0x013414,1,
-0x013410,1,
-0x01340c,1,
-0x013408,1,
-0x013404,1,
-0x013400,1,
-0x013040,1,
-0x013000,1,
-0x012ffc,1,
-0x012ff8,1,
-0x012ff4,1,
-0x012fdc,1,
-0x012fd4,1,
-0x012fd0,1,
-0x012fcc,1,
-0x012fc8,1,
-0x012fc4,1,
-0x012fc0,1,
-0x012fbc,1,
-0x012fb8,1,
-0x012fb4,1,
-0x012fb0,1,
-0x012fac,1,
-0x012fa8,1,
-0x012fa0,1,
-0x012f9c,1,
-0x012f98,1,
-0x012f94,1,
-0x012f90,1,
-0x012f8c,1,
-0x012f88,1,
-0x012f84,1,
-0x012f80,1,
-0x012e94,1,
-0x012e90,1,
-0x012e80,1,
-0x012e30,1,
-0x012e2c,1,
-0x012e28,1,
-0x012e24,1,
-0x012e20,1,
-0x012e1c,1,
-0x012e18,1,
-0x012e14,1,
-0x012e10,1,
-0x012e0c,1,
-0x012e04,1,
-0x012e00,1,
-0x012dfc,1,
-0x012df8,1,
-0x012df4,1,
-0x012dec,1,
-0x012de4,1,
-0x012de0,1,
-0x012ddc,1,
-0x012dd8,1,
-0x012dd4,1,
-0x012dcc,1,
-0x012dc8,1,
-0x012dc0,1,
-0x012db8,1,
-0x012db4,1,
-0x012db0,1,
-0x012da8,1,
-0x012da4,1,
-0x012da0,1,
-0x012d80,1,
-0x012d7c,1,
-0x012d78,1,
-0x012d74,1,
-0x012d70,1,
-0x012d6c,1,
-0x012d68,1,
-0x012d64,1,
-0x012d60,1,
-0x012d5c,1,
-0x012d58,1,
-0x012d54,1,
-0x012d50,1,
-0x012d4c,1,
-0x012d48,1,
-0x012d44,1,
-0x012d40,1,
-0x012d34,1,
-0x012d30,1,
-0x012d20,1,
-0x012d14,1,
-0x012d10,1,
-0x012d00,1,
-0x012cec,1,
-0x012ce8,1,
-0x012ce4,1,
-0x012ce0,1,
-0x012cdc,1,
-0x012cd8,1,
-0x012cd4,1,
-0x012cd0,1,
-0x012ccc,1,
-0x012cc8,1,
-0x012c90,1,
-0x012c8c,1,
-0x012c88,1,
-0x012c84,1,
-0x012c80,1,
-0x012c68,1,
-0x012c50,1,
-0x012c4c,1,
-0x012c24,1,
-0x012c20,1,
-0x012c1c,1,
-0x012c18,1,
-0x012c14,1,
-0x012c10,1,
-0x012c0c,1,
-0x012c08,1,
-0x012c04,1,
-0x012c00,1,
-0x012b34,1,
-0x012b30,1,
-0x012b20,1,
-0x012b14,1,
-0x012b10,1,
-0x012b00,1,
-0x012978,1,
-0x012974,1,
-0x012970,1,
-0x01296c,1,
-0x012968,1,
-0x012964,1,
-0x012960,1,
-0x01295c,1,
-0x012958,1,
-0x012954,1,
-0x012950,1,
-0x01294c,1,
-0x012948,1,
-0x012944,1,
-0x012940,1,
-0x01293c,1,
-0x012938,1,
-0x012934,1,
-0x012930,1,
-0x01292c,1,
-0x012928,1,
-0x012924,1,
-0x012920,1,
-0x01291c,1,
-0x012918,1,
-0x012914,1,
-0x012910,1,
-0x01290c,1,
-0x012908,1,
-0x012904,1,
-0x012900,1,
-0x0128fc,1,
-0x0128f8,1,
-0x0128f4,1,
-0x0128f0,1,
-0x0128ec,1,
-0x0128e8,1,
-0x0128e4,1,
-0x0128e0,1,
-0x0128dc,1,
-0x0128d8,1,
-0x0128d4,1,
-0x0128d0,1,
-0x0128cc,1,
-0x0128c8,1,
-0x0128c4,1,
-0x0128c0,1,
-0x0128bc,1,
-0x0128b8,1,
-0x0128b4,1,
-0x0128b0,1,
-0x0128ac,1,
-0x0128a8,1,
-0x0128a4,1,
-0x0128a0,1,
-0x01289c,1,
-0x012898,1,
-0x012894,1,
-0x012890,1,
-0x01288c,1,
-0x012888,1,
-0x012884,1,
-0x012880,1,
-0x01287c,1,
-0x012878,1,
-0x012874,1,
-0x012870,1,
-0x01286c,1,
-0x012868,1,
-0x012864,1,
-0x012860,1,
-0x01285c,1,
-0x012858,1,
-0x012854,1,
-0x012850,1,
-0x01284c,1,
-0x012848,1,
-0x012844,1,
-0x012840,1,
-0x01283c,1,
-0x012838,1,
-0x012834,1,
-0x012830,1,
-0x01282c,1,
-0x012828,1,
-0x012824,1,
-0x012820,1,
-0x01281c,1,
-0x012818,1,
-0x012814,1,
-0x012810,1,
-0x01280c,1,
-0x012808,1,
-0x012804,1,
-0x012800,1,
-0x0127fc,1,
-0x0127f8,1,
-0x0127f4,1,
-0x0127dc,1,
-0x0127d4,1,
-0x0127d0,1,
-0x0127cc,1,
-0x0127c8,1,
-0x0127c4,1,
-0x0127c0,1,
-0x0127bc,1,
-0x0127b8,1,
-0x0127b4,1,
-0x0127b0,1,
-0x0127ac,1,
-0x0127a8,1,
-0x0127a0,1,
-0x01279c,1,
-0x012798,1,
-0x012794,1,
-0x012790,1,
-0x01278c,1,
-0x012788,1,
-0x012784,1,
-0x012780,1,
-0x012694,1,
-0x012690,1,
-0x012680,1,
-0x012630,1,
-0x01262c,1,
-0x012628,1,
-0x012624,1,
-0x012620,1,
-0x01261c,1,
-0x012618,1,
-0x012614,1,
-0x012610,1,
-0x01260c,1,
-0x012604,1,
-0x012600,1,
-0x0125fc,1,
-0x0125f8,1,
-0x0125f4,1,
-0x0125ec,1,
-0x0125e4,1,
-0x0125e0,1,
-0x0125dc,1,
-0x0125d8,1,
-0x0125d4,1,
-0x0125cc,1,
-0x0125c8,1,
-0x0125c0,1,
-0x0125b8,1,
-0x0125b4,1,
-0x0125b0,1,
-0x0125a8,1,
-0x0125a4,1,
-0x0125a0,1,
-0x012580,1,
-0x01257c,1,
-0x012578,1,
-0x012574,1,
-0x012570,1,
-0x01256c,1,
-0x012568,1,
-0x012564,1,
-0x012560,1,
-0x01255c,1,
-0x012558,1,
-0x012554,1,
-0x012550,1,
-0x01254c,1,
-0x012548,1,
-0x012544,1,
-0x012540,1,
-0x012534,1,
-0x012530,1,
-0x012520,1,
-0x012514,1,
-0x012510,1,
-0x012500,1,
-0x0124ec,1,
-0x0124e8,1,
-0x0124e4,1,
-0x0124e0,1,
-0x0124dc,1,
-0x0124d8,1,
-0x0124d4,1,
-0x0124d0,1,
-0x0124cc,1,
-0x0124c8,1,
-0x012490,1,
-0x01248c,1,
-0x012488,1,
-0x012484,1,
-0x012480,1,
-0x012468,1,
-0x012450,1,
-0x01244c,1,
-0x012424,1,
-0x012420,1,
-0x01241c,1,
-0x012418,1,
-0x012414,1,
-0x012410,1,
-0x01240c,1,
-0x012408,1,
-0x012404,1,
-0x012400,1,
-0x012334,1,
-0x012330,1,
-0x012320,1,
-0x012314,1,
-0x012310,1,
-0x012300,1,
-0x012178,1,
-0x012174,1,
-0x012170,1,
-0x01216c,1,
-0x012168,1,
-0x012164,1,
-0x012160,1,
-0x01215c,1,
-0x012158,1,
-0x012154,1,
-0x012150,1,
-0x01214c,1,
-0x012148,1,
-0x012144,1,
-0x012140,1,
-0x01213c,1,
-0x012138,1,
-0x012134,1,
-0x012130,1,
-0x01212c,1,
-0x012128,1,
-0x012124,1,
-0x012120,1,
-0x01211c,1,
-0x012118,1,
-0x012114,1,
-0x012110,1,
-0x01210c,1,
-0x012108,1,
-0x012104,1,
-0x012100,1,
-0x0120fc,1,
-0x0120f8,1,
-0x0120f4,1,
-0x0120f0,1,
-0x0120ec,1,
-0x0120e8,1,
-0x0120e4,1,
-0x0120e0,1,
-0x0120dc,1,
-0x0120d8,1,
-0x0120d4,1,
-0x0120d0,1,
-0x0120cc,1,
-0x0120c8,1,
-0x0120c4,1,
-0x0120c0,1,
-0x0120bc,1,
-0x0120b8,1,
-0x0120b4,1,
-0x0120b0,1,
-0x0120ac,1,
-0x0120a8,1,
-0x0120a4,1,
-0x0120a0,1,
-0x01209c,1,
-0x012098,1,
-0x012094,1,
-0x012090,1,
-0x01208c,1,
-0x012088,1,
-0x012084,1,
-0x012080,1,
-0x01207c,1,
-0x012078,1,
-0x012074,1,
-0x012070,1,
-0x01206c,1,
-0x012068,1,
-0x012064,1,
-0x012060,1,
-0x01205c,1,
-0x012058,1,
-0x012054,1,
-0x012050,1,
-0x01204c,1,
-0x012048,1,
-0x012044,1,
-0x012040,1,
-0x01203c,1,
-0x012038,1,
-0x012034,1,
-0x012030,1,
-0x01202c,1,
-0x012028,1,
-0x012024,1,
-0x012020,1,
-0x01201c,1,
-0x012018,1,
-0x012014,1,
-0x012010,1,
-0x01200c,1,
-0x012008,1,
-0x012004,1,
-0x012000,1,
-0x011ffc,1,
-0x011ff8,1,
-0x011ff4,1,
-0x011fdc,1,
-0x011fd4,1,
-0x011fd0,1,
-0x011fcc,1,
-0x011fc8,1,
-0x011fc4,1,
-0x011fc0,1,
-0x011fbc,1,
-0x011fb8,1,
-0x011fb4,1,
-0x011fb0,1,
-0x011fac,1,
-0x011fa8,1,
-0x011fa0,1,
-0x011f9c,1,
-0x011f98,1,
-0x011f94,1,
-0x011f90,1,
-0x011f8c,1,
-0x011f88,1,
-0x011f84,1,
-0x011f80,1,
-0x011e94,1,
-0x011e90,1,
-0x011e80,1,
-0x011e30,1,
-0x011e2c,1,
-0x011e28,1,
-0x011e24,1,
-0x011e20,1,
-0x011e1c,1,
-0x011e18,1,
-0x011e14,1,
-0x011e10,1,
-0x011e0c,1,
-0x011e04,1,
-0x011e00,1,
-0x011dfc,1,
-0x011df8,1,
-0x011df4,1,
-0x011dec,1,
-0x011de4,1,
-0x011de0,1,
-0x011ddc,1,
-0x011dd8,1,
-0x011dd4,1,
-0x011dcc,1,
-0x011dc8,1,
-0x011dc0,1,
-0x011db8,1,
-0x011db4,1,
-0x011db0,1,
-0x011da8,1,
-0x011da4,1,
-0x011da0,1,
-0x011d80,1,
-0x011d7c,1,
-0x011d78,1,
-0x011d74,1,
-0x011d70,1,
-0x011d6c,1,
-0x011d68,1,
-0x011d64,1,
-0x011d60,1,
-0x011d5c,1,
-0x011d58,1,
-0x011d54,1,
-0x011d50,1,
-0x011d4c,1,
-0x011d48,1,
-0x011d44,1,
-0x011d40,1,
-0x011d34,1,
-0x011d30,1,
-0x011d20,1,
-0x011d14,1,
-0x011d10,1,
-0x011d00,1,
-0x011cec,1,
-0x011ce8,1,
-0x011ce4,1,
-0x011ce0,1,
-0x011cdc,1,
-0x011cd8,1,
-0x011cd4,1,
-0x011cd0,1,
-0x011ccc,1,
-0x011cc8,1,
-0x011c90,1,
-0x011c8c,1,
-0x011c88,1,
-0x011c84,1,
-0x011c80,1,
-0x011c68,1,
-0x011c50,1,
-0x011c4c,1,
-0x011c24,1,
-0x011c20,1,
-0x011c1c,1,
-0x011c18,1,
-0x011c14,1,
-0x011c10,1,
-0x011c0c,1,
-0x011c08,1,
-0x011c04,1,
-0x011c00,1,
-0x011b34,1,
-0x011b30,1,
-0x011b20,1,
-0x011b14,1,
-0x011b10,1,
-0x011b00,1,
-0x011978,1,
-0x011974,1,
-0x011970,1,
-0x01196c,1,
-0x011968,1,
-0x011964,1,
-0x011960,1,
-0x01195c,1,
-0x011958,1,
-0x011954,1,
-0x011950,1,
-0x01194c,1,
-0x011948,1,
-0x011944,1,
-0x011940,1,
-0x01193c,1,
-0x011938,1,
-0x011934,1,
-0x011930,1,
-0x01192c,1,
-0x011928,1,
-0x011924,1,
-0x011920,1,
-0x01191c,1,
-0x011918,1,
-0x011914,1,
-0x011910,1,
-0x01190c,1,
-0x011908,1,
-0x011904,1,
-0x011900,1,
-0x0118fc,1,
-0x0118f8,1,
-0x0118f4,1,
-0x0118f0,1,
-0x0118ec,1,
-0x0118e8,1,
-0x0118e4,1,
-0x0118e0,1,
-0x0118dc,1,
-0x0118d8,1,
-0x0118d4,1,
-0x0118d0,1,
-0x0118cc,1,
-0x0118c8,1,
-0x0118c4,1,
-0x0118c0,1,
-0x0118bc,1,
-0x0118b8,1,
-0x0118b4,1,
-0x0118b0,1,
-0x0118ac,1,
-0x0118a8,1,
-0x0118a4,1,
-0x0118a0,1,
-0x01189c,1,
-0x011898,1,
-0x011894,1,
-0x011890,1,
-0x01188c,1,
-0x011888,1,
-0x011884,1,
-0x011880,1,
-0x01187c,1,
-0x011878,1,
-0x011874,1,
-0x011870,1,
-0x01186c,1,
-0x011868,1,
-0x011864,1,
-0x011860,1,
-0x01185c,1,
-0x011858,1,
-0x011854,1,
-0x011850,1,
-0x01184c,1,
-0x011848,1,
-0x011844,1,
-0x011840,1,
-0x01183c,1,
-0x011838,1,
-0x011834,1,
-0x011830,1,
-0x01182c,1,
-0x011828,1,
-0x011824,1,
-0x011820,1,
-0x01181c,1,
-0x011818,1,
-0x011814,1,
-0x011810,1,
-0x01180c,1,
-0x011808,1,
-0x011804,1,
-0x011800,1,
-0x0117fc,1,
-0x0117f8,1,
-0x0117f4,1,
-0x0117dc,1,
-0x0117d4,1,
-0x0117d0,1,
-0x0117cc,1,
-0x0117c8,1,
-0x0117c4,1,
-0x0117c0,1,
-0x0117bc,1,
-0x0117b8,1,
-0x0117b4,1,
-0x0117b0,1,
-0x0117ac,1,
-0x0117a8,1,
-0x0117a0,1,
-0x01179c,1,
-0x011798,1,
-0x011794,1,
-0x011790,1,
-0x01178c,1,
-0x011788,1,
-0x011784,1,
-0x011780,1,
-0x011694,1,
-0x011690,1,
-0x011680,1,
-0x011630,1,
-0x01162c,1,
-0x011628,1,
-0x011624,1,
-0x011620,1,
-0x01161c,1,
-0x011618,1,
-0x011614,1,
-0x011610,1,
-0x01160c,1,
-0x011604,1,
-0x011600,1,
-0x0115fc,1,
-0x0115f8,1,
-0x0115f4,1,
-0x0115ec,1,
-0x0115e4,1,
-0x0115e0,1,
-0x0115dc,1,
-0x0115d8,1,
-0x0115d4,1,
-0x0115cc,1,
-0x0115c8,1,
-0x0115c0,1,
-0x0115b8,1,
-0x0115b4,1,
-0x0115b0,1,
-0x0115a8,1,
-0x0115a4,1,
-0x0115a0,1,
-0x011580,1,
-0x01157c,1,
-0x011578,1,
-0x011574,1,
-0x011570,1,
-0x01156c,1,
-0x011568,1,
-0x011564,1,
-0x011560,1,
-0x01155c,1,
-0x011558,1,
-0x011554,1,
-0x011550,1,
-0x01154c,1,
-0x011548,1,
-0x011544,1,
-0x011540,1,
-0x011534,1,
-0x011530,1,
-0x011520,1,
-0x011514,1,
-0x011510,1,
-0x011500,1,
-0x0114ec,1,
-0x0114e8,1,
-0x0114e4,1,
-0x0114e0,1,
-0x0114dc,1,
-0x0114d8,1,
-0x0114d4,1,
-0x0114d0,1,
-0x0114cc,1,
-0x0114c8,1,
-0x011490,1,
-0x01148c,1,
-0x011488,1,
-0x011484,1,
-0x011480,1,
-0x011468,1,
-0x011450,1,
-0x01144c,1,
-0x011424,1,
-0x011420,1,
-0x01141c,1,
-0x011418,1,
-0x011414,1,
-0x011410,1,
-0x01140c,1,
-0x011408,1,
-0x011404,1,
-0x011400,1,
-0x011334,1,
-0x011330,1,
-0x011320,1,
-0x011314,1,
-0x011310,1,
-0x011300,1,
-0x011178,1,
-0x011174,1,
-0x011170,1,
-0x01116c,1,
-0x011168,1,
-0x011164,1,
-0x011160,1,
-0x01115c,1,
-0x011158,1,
-0x011154,1,
-0x011150,1,
-0x01114c,1,
-0x011148,1,
-0x011144,1,
-0x011140,1,
-0x01113c,1,
-0x011138,1,
-0x011134,1,
-0x011130,1,
-0x01112c,1,
-0x011128,1,
-0x011124,1,
-0x011120,1,
-0x01111c,1,
-0x011118,1,
-0x011114,1,
-0x011110,1,
-0x01110c,1,
-0x011108,1,
-0x011104,1,
-0x011100,1,
-0x0110fc,1,
-0x0110f8,1,
-0x0110f4,1,
-0x0110f0,1,
-0x0110ec,1,
-0x0110e8,1,
-0x0110e4,1,
-0x0110e0,1,
-0x0110dc,1,
-0x0110d8,1,
-0x0110d4,1,
-0x0110d0,1,
-0x0110cc,1,
-0x0110c8,1,
-0x0110c4,1,
-0x0110c0,1,
-0x0110bc,1,
-0x0110b8,1,
-0x0110b4,1,
-0x0110b0,1,
-0x0110ac,1,
-0x0110a8,1,
-0x0110a4,1,
-0x0110a0,1,
-0x01109c,1,
-0x011098,1,
-0x011094,1,
-0x011090,1,
-0x01108c,1,
-0x011088,1,
-0x011084,1,
-0x011080,1,
-0x01107c,1,
-0x011078,1,
-0x011074,1,
-0x011070,1,
-0x01106c,1,
-0x011068,1,
-0x011064,1,
-0x011060,1,
-0x01105c,1,
-0x011058,1,
-0x011054,1,
-0x011050,1,
-0x01104c,1,
-0x011048,1,
-0x011044,1,
-0x011040,1,
-0x01103c,1,
-0x011038,1,
-0x011034,1,
-0x011030,1,
-0x01102c,1,
-0x011028,1,
-0x011024,1,
-0x011020,1,
-0x01101c,1,
-0x011018,1,
-0x011014,1,
-0x011010,1,
-0x01100c,1,
-0x011008,1,
-0x011004,1,
-0x011000,1,
-0x010ffc,1,
-0x010ff8,1,
-0x010ff4,1,
-0x010fdc,1,
-0x010fd4,1,
-0x010fd0,1,
-0x010fcc,1,
-0x010fc8,1,
-0x010fc4,1,
-0x010fc0,1,
-0x010fbc,1,
-0x010fb8,1,
-0x010fb4,1,
-0x010fb0,1,
-0x010fac,1,
-0x010fa8,1,
-0x010fa0,1,
-0x010f9c,1,
-0x010f98,1,
-0x010f94,1,
-0x010f90,1,
-0x010f8c,1,
-0x010f88,1,
-0x010f84,1,
-0x010f80,1,
-0x010e94,1,
-0x010e90,1,
-0x010e80,1,
-0x010e30,1,
-0x010e2c,1,
-0x010e28,1,
-0x010e24,1,
-0x010e20,1,
-0x010e1c,1,
-0x010e18,1,
-0x010e14,1,
-0x010e10,1,
-0x010e0c,1,
-0x010e04,1,
-0x010e00,1,
-0x010dfc,1,
-0x010df8,1,
-0x010df4,1,
-0x010dec,1,
-0x010de4,1,
-0x010de0,1,
-0x010ddc,1,
-0x010dd8,1,
-0x010dd4,1,
-0x010dcc,1,
-0x010dc8,1,
-0x010dc0,1,
-0x010db8,1,
-0x010db4,1,
-0x010db0,1,
-0x010da8,1,
-0x010da4,1,
-0x010da0,1,
-0x010d80,1,
-0x010d7c,1,
-0x010d78,1,
-0x010d74,1,
-0x010d70,1,
-0x010d6c,1,
-0x010d68,1,
-0x010d64,1,
-0x010d60,1,
-0x010d5c,1,
-0x010d58,1,
-0x010d54,1,
-0x010d50,1,
-0x010d4c,1,
-0x010d48,1,
-0x010d44,1,
-0x010d40,1,
-0x010d34,1,
-0x010d30,1,
-0x010d20,1,
-0x010d14,1,
-0x010d10,1,
-0x010d00,1,
-0x010cec,1,
-0x010ce8,1,
-0x010ce4,1,
-0x010ce0,1,
-0x010cdc,1,
-0x010cd8,1,
-0x010cd4,1,
-0x010cd0,1,
-0x010ccc,1,
-0x010cc8,1,
-0x010c90,1,
-0x010c8c,1,
-0x010c88,1,
-0x010c84,1,
-0x010c80,1,
-0x010c68,1,
-0x010c50,1,
-0x010c4c,1,
-0x010c24,1,
-0x010c20,1,
-0x010c1c,1,
-0x010c18,1,
-0x010c14,1,
-0x010c10,1,
-0x010c0c,1,
-0x010c08,1,
-0x010c04,1,
-0x010c00,1,
-0x010b34,1,
-0x010b30,1,
-0x010b20,1,
-0x010b14,1,
-0x010b10,1,
-0x010b00,1,
-0x010978,1,
-0x010974,1,
-0x010970,1,
-0x01096c,1,
-0x010968,1,
-0x010964,1,
-0x010960,1,
-0x01095c,1,
-0x010958,1,
-0x010954,1,
-0x010950,1,
-0x01094c,1,
-0x010948,1,
-0x010944,1,
-0x010940,1,
-0x01093c,1,
-0x010938,1,
-0x010934,1,
-0x010930,1,
-0x01092c,1,
-0x010928,1,
-0x010924,1,
-0x010920,1,
-0x01091c,1,
-0x010918,1,
-0x010914,1,
-0x010910,1,
-0x01090c,1,
-0x010908,1,
-0x010904,1,
-0x010900,1,
-0x0108fc,1,
-0x0108f8,1,
-0x0108f4,1,
-0x0108f0,1,
-0x0108ec,1,
-0x0108e8,1,
-0x0108e4,1,
-0x0108e0,1,
-0x0108dc,1,
-0x0108d8,1,
-0x0108d4,1,
-0x0108d0,1,
-0x0108cc,1,
-0x0108c8,1,
-0x0108c4,1,
-0x0108c0,1,
-0x0108bc,1,
-0x0108b8,1,
-0x0108b4,1,
-0x0108b0,1,
-0x0108ac,1,
-0x0108a8,1,
-0x0108a4,1,
-0x0108a0,1,
-0x01089c,1,
-0x010898,1,
-0x010894,1,
-0x010890,1,
-0x01088c,1,
-0x010888,1,
-0x010884,1,
-0x010880,1,
-0x01087c,1,
-0x010878,1,
-0x010874,1,
-0x010870,1,
-0x01086c,1,
-0x010868,1,
-0x010864,1,
-0x010860,1,
-0x01085c,1,
-0x010858,1,
-0x010854,1,
-0x010850,1,
-0x01084c,1,
-0x010848,1,
-0x010844,1,
-0x010840,1,
-0x01083c,1,
-0x010838,1,
-0x010834,1,
-0x010830,1,
-0x01082c,1,
-0x010828,1,
-0x010824,1,
-0x010820,1,
-0x01081c,1,
-0x010818,1,
-0x010814,1,
-0x010810,1,
-0x01080c,1,
-0x010808,1,
-0x010804,1,
-0x010800,1,
-0x0107fc,1,
-0x0107f8,1,
-0x0107f4,1,
-0x0107dc,1,
-0x0107d4,1,
-0x0107d0,1,
-0x0107cc,1,
-0x0107c8,1,
-0x0107c4,1,
-0x0107c0,1,
-0x0107bc,1,
-0x0107b8,1,
-0x0107b4,1,
-0x0107b0,1,
-0x0107ac,1,
-0x0107a8,1,
-0x0107a0,1,
-0x01079c,1,
-0x010798,1,
-0x010794,1,
-0x010790,1,
-0x01078c,1,
-0x010788,1,
-0x010784,1,
-0x010780,1,
-0x010694,1,
-0x010690,1,
-0x010680,1,
-0x010630,1,
-0x01062c,1,
-0x010628,1,
-0x010624,1,
-0x010620,1,
-0x01061c,1,
-0x010618,1,
-0x010614,1,
-0x010610,1,
-0x01060c,1,
-0x010604,1,
-0x010600,1,
-0x0105fc,1,
-0x0105f8,1,
-0x0105f4,1,
-0x0105ec,1,
-0x0105e4,1,
-0x0105e0,1,
-0x0105dc,1,
-0x0105d8,1,
-0x0105d4,1,
-0x0105cc,1,
-0x0105c8,1,
-0x0105c0,1,
-0x0105b8,1,
-0x0105b4,1,
-0x0105b0,1,
-0x0105a8,1,
-0x0105a4,1,
-0x0105a0,1,
-0x010580,1,
-0x01057c,1,
-0x010578,1,
-0x010574,1,
-0x010570,1,
-0x01056c,1,
-0x010568,1,
-0x010564,1,
-0x010560,1,
-0x01055c,1,
-0x010558,1,
-0x010554,1,
-0x010550,1,
-0x01054c,1,
-0x010548,1,
-0x010544,1,
-0x010540,1,
-0x010534,1,
-0x010530,1,
-0x010520,1,
-0x010514,1,
-0x010510,1,
-0x010500,1,
-0x0104ec,1,
-0x0104e8,1,
-0x0104e4,1,
-0x0104e0,1,
-0x0104dc,1,
-0x0104d8,1,
-0x0104d4,1,
-0x0104d0,1,
-0x0104cc,1,
-0x0104c8,1,
-0x010490,1,
-0x01048c,1,
-0x010488,1,
-0x010484,1,
-0x010480,1,
-0x010468,1,
-0x010450,1,
-0x01044c,1,
-0x010424,1,
-0x010420,1,
-0x01041c,1,
-0x010418,1,
-0x010414,1,
-0x010410,1,
-0x01040c,1,
-0x010408,1,
-0x010404,1,
-0x010400,1,
-0x010334,1,
-0x010330,1,
-0x010320,1,
-0x010314,1,
-0x010310,1,
-0x010300,1,
-0x010178,1,
-0x010174,1,
-0x010170,1,
-0x01016c,1,
-0x010168,1,
-0x010164,1,
-0x010160,1,
-0x01015c,1,
-0x010158,1,
-0x010154,1,
-0x010150,1,
-0x01014c,1,
-0x010148,1,
-0x010144,1,
-0x010140,1,
-0x01013c,1,
-0x010138,1,
-0x010134,1,
-0x010130,1,
-0x01012c,1,
-0x010128,1,
-0x010124,1,
-0x010120,1,
-0x01011c,1,
-0x010118,1,
-0x010114,1,
-0x010110,1,
-0x01010c,1,
-0x010108,1,
-0x010104,1,
-0x010100,1,
-0x0100fc,1,
-0x0100f8,1,
-0x0100f4,1,
-0x0100f0,1,
-0x0100ec,1,
-0x0100e8,1,
-0x0100e4,1,
-0x0100e0,1,
-0x0100dc,1,
-0x0100d8,1,
-0x0100d4,1,
-0x0100d0,1,
-0x0100cc,1,
-0x0100c8,1,
-0x0100c4,1,
-0x0100c0,1,
-0x0100bc,1,
-0x0100b8,1,
-0x0100b4,1,
-0x0100b0,1,
-0x0100ac,1,
-0x0100a8,1,
-0x0100a4,1,
-0x0100a0,1,
-0x01009c,1,
-0x010098,1,
-0x010094,1,
-0x010090,1,
-0x01008c,1,
-0x010088,1,
-0x010084,1,
-0x010080,1,
-0x01007c,1,
-0x010078,1,
-0x010074,1,
-0x010070,1,
-0x01006c,1,
-0x010068,1,
-0x010064,1,
-0x010060,1,
-0x01005c,1,
-0x010058,1,
-0x010054,1,
-0x010050,1,
-0x01004c,1,
-0x010048,1,
-0x010044,1,
-0x010040,1,
-0x01003c,1,
-0x010038,1,
-0x010034,1,
-0x010030,1,
-0x01002c,1,
-0x010028,1,
-0x010024,1,
-0x010020,1,
-0x01001c,1,
-0x010018,1,
-0x010014,1,
-0x010010,1,
-0x01000c,1,
-0x010008,1,
-0x010004,1,
-0x010000,1,
-0x00d9f4,1,
-0x00d9f0,1,
-0x00d9d4,1,
-0x00d9d0,1,
-0x00d9c0,1,
-0x00d9b4,1,
-0x00d9b0,1,
-0x00d9a0,1,
-0x00d994,1,
-0x00d990,1,
-0x00d980,1,
-0x00d974,1,
-0x00d970,1,
-0x00d960,1,
-0x00d954,1,
-0x00d950,1,
-0x00d940,1,
-0x00d928,1,
-0x00d924,1,
-0x00d920,1,
-0x00d91c,1,
-0x00d918,1,
-0x00d914,1,
-0x00d910,1,
-0x00d90c,1,
-0x00d908,1,
-0x00d904,1,
-0x00d900,1,
-0x00d8d4,1,
-0x00d8d0,1,
-0x00d8cc,1,
-0x00d8c8,1,
-0x00d8c4,1,
-0x00d8c0,1,
-0x00d8ac,1,
-0x00d870,1,
-0x00d86c,1,
-0x00d868,1,
-0x00d864,1,
-0x00d860,1,
-0x00d85c,1,
-0x00d858,1,
-0x00d854,1,
-0x00d850,1,
-0x00d84c,1,
-0x00d848,1,
-0x00d844,1,
-0x00d840,1,
-0x00d83c,1,
-0x00d838,1,
-0x00d834,1,
-0x00d830,1,
-0x00d82c,1,
-0x00d828,1,
-0x00d824,1,
-0x00d820,1,
-0x00d814,1,
-0x00d810,1,
-0x00d800,1,
-0x00bb0c,1,
-0x00bb08,1,
-0x00bb04,1,
-0x00bb00,1,
-0x00baf4,1,
-0x00baf0,1,
-0x00ba74,1,
-0x00ba70,1,
-0x00ba60,1,
-0x00ba54,1,
-0x00ba50,1,
-0x00ba40,1,
-0x00ba28,1,
-0x00ba1c,1,
-0x00ba18,1,
-0x00ba0c,1,
-0x00ba00,1,
-0x00b934,1,
-0x00b930,1,
-0x00b924,1,
-0x00b920,1,
-0x00b914,1,
-0x00b910,1,
-0x00b904,1,
-0x00b900,1,
-0x00b8f4,1,
-0x00b8f0,1,
-0x00b8e4,1,
-0x00b8e0,1,
-0x00b8b4,1,
-0x00b8b0,1,
-0x00b8ac,1,
-0x00b8a8,1,
-0x00b8a4,1,
-0x00b8a0,1,
-0x00b894,1,
-0x00b890,1,
-0x00b88c,1,
-0x00b888,1,
-0x00b884,1,
-0x00b880,1,
-0x00b870,1,
-0x00b83c,1,
-0x00b838,1,
-0x00b834,1,
-0x00b830,1,
-0x00b82c,1,
-0x00b828,1,
-0x00b824,1,
-0x00b820,1,
-0x00b814,1,
-0x00b810,1,
-0x00b800,1,
-0x00b7bc,1,
-0x00b7b8,1,
-0x00b7b4,1,
-0x00b7b0,1,
-0x00b7a0,1,
-0x00b79c,1,
-0x00b798,1,
-0x00b790,1,
-0x00b78c,1,
-0x00b788,1,
-0x00b784,1,
-0x00b780,1,
-0x00b67c,1,
-0x00b678,1,
-0x00b674,1,
-0x00b670,1,
-0x00b66c,1,
-0x00b668,1,
-0x00b664,1,
-0x00b660,1,
-0x00b65c,1,
-0x00b658,1,
-0x00b654,1,
-0x00b64c,1,
-0x00b648,1,
-0x00b644,1,
-0x00b640,1,
-0x00b62c,1,
-0x00b628,1,
-0x00b624,1,
-0x00b620,1,
-0x00b61c,1,
-0x00b618,1,
-0x00b614,1,
-0x00b610,1,
-0x00b60c,1,
-0x00b608,1,
-0x00b604,1,
-0x00b600,1,
-0x00b4a0,1,
-0x00b49c,1,
-0x00b498,1,
-0x00b494,1,
-0x00b490,1,
-0x00b48c,1,
-0x00b488,1,
-0x00b484,1,
-0x00b480,1,
-0x00b47c,1,
-0x00b478,1,
-0x00b474,1,
-0x00b470,1,
-0x00b46c,1,
-0x00b464,1,
-0x00b45c,1,
-0x00b458,1,
-0x00b454,1,
-0x00b450,1,
-0x00b44c,1,
-0x00b448,1,
-0x00b444,1,
-0x00b440,1,
-0x00b43c,1,
-0x00b438,1,
-0x00b424,1,
-0x00b420,1,
-0x00b41c,1,
-0x00b418,1,
-0x00b414,1,
-0x00b410,1,
-0x00b40c,1,
-0x00b408,1,
-0x00b404,1,
-0x00b400,1,
-0x00b040,1,
-0x00b000,1,
-0x00affc,1,
-0x00aff8,1,
-0x00aff4,1,
-0x00afdc,1,
-0x00afd4,1,
-0x00afd0,1,
-0x00afcc,1,
-0x00afc8,1,
-0x00afc4,1,
-0x00afc0,1,
-0x00afbc,1,
-0x00afb8,1,
-0x00afb4,1,
-0x00afb0,1,
-0x00afac,1,
-0x00afa8,1,
-0x00afa0,1,
-0x00af9c,1,
-0x00af98,1,
-0x00af94,1,
-0x00af90,1,
-0x00af8c,1,
-0x00af88,1,
-0x00af84,1,
-0x00af80,1,
-0x00ae94,1,
-0x00ae90,1,
-0x00ae80,1,
-0x00ae30,1,
-0x00ae2c,1,
-0x00ae28,1,
-0x00ae24,1,
-0x00ae20,1,
-0x00ae1c,1,
-0x00ae18,1,
-0x00ae14,1,
-0x00ae10,1,
-0x00ae0c,1,
-0x00ae04,1,
-0x00ae00,1,
-0x00adfc,1,
-0x00adf8,1,
-0x00adf4,1,
-0x00adec,1,
-0x00ade4,1,
-0x00ade0,1,
-0x00addc,1,
-0x00add8,1,
-0x00add4,1,
-0x00adcc,1,
-0x00adc8,1,
-0x00adc0,1,
-0x00adb8,1,
-0x00adb4,1,
-0x00adb0,1,
-0x00ada8,1,
-0x00ada4,1,
-0x00ada0,1,
-0x00ad80,1,
-0x00ad7c,1,
-0x00ad78,1,
-0x00ad74,1,
-0x00ad70,1,
-0x00ad6c,1,
-0x00ad68,1,
-0x00ad64,1,
-0x00ad60,1,
-0x00ad5c,1,
-0x00ad58,1,
-0x00ad54,1,
-0x00ad50,1,
-0x00ad4c,1,
-0x00ad48,1,
-0x00ad44,1,
-0x00ad40,1,
-0x00ad34,1,
-0x00ad30,1,
-0x00ad20,1,
-0x00ad14,1,
-0x00ad10,1,
-0x00ad00,1,
-0x00acec,1,
-0x00ace8,1,
-0x00ace4,1,
-0x00ace0,1,
-0x00acdc,1,
-0x00acd8,1,
-0x00acd4,1,
-0x00acd0,1,
-0x00accc,1,
-0x00acc8,1,
-0x00ac90,1,
-0x00ac8c,1,
-0x00ac88,1,
-0x00ac84,1,
-0x00ac80,1,
-0x00ac68,1,
-0x00ac50,1,
-0x00ac4c,1,
-0x00ac24,1,
-0x00ac20,1,
-0x00ac1c,1,
-0x00ac18,1,
-0x00ac14,1,
-0x00ac10,1,
-0x00ac0c,1,
-0x00ac08,1,
-0x00ac04,1,
-0x00ac00,1,
-0x00ab34,1,
-0x00ab30,1,
-0x00ab20,1,
-0x00ab14,1,
-0x00ab10,1,
-0x00ab00,1,
-0x00a978,1,
-0x00a974,1,
-0x00a970,1,
-0x00a96c,1,
-0x00a968,1,
-0x00a964,1,
-0x00a960,1,
-0x00a95c,1,
-0x00a958,1,
-0x00a954,1,
-0x00a950,1,
-0x00a94c,1,
-0x00a948,1,
-0x00a944,1,
-0x00a940,1,
-0x00a93c,1,
-0x00a938,1,
-0x00a934,1,
-0x00a930,1,
-0x00a92c,1,
-0x00a928,1,
-0x00a924,1,
-0x00a920,1,
-0x00a91c,1,
-0x00a918,1,
-0x00a914,1,
-0x00a910,1,
-0x00a90c,1,
-0x00a908,1,
-0x00a904,1,
-0x00a900,1,
-0x00a8fc,1,
-0x00a8f8,1,
-0x00a8f4,1,
-0x00a8f0,1,
-0x00a8ec,1,
-0x00a8e8,1,
-0x00a8e4,1,
-0x00a8e0,1,
-0x00a8dc,1,
-0x00a8d8,1,
-0x00a8d4,1,
-0x00a8d0,1,
-0x00a8cc,1,
-0x00a8c8,1,
-0x00a8c4,1,
-0x00a8c0,1,
-0x00a8bc,1,
-0x00a8b8,1,
-0x00a8b4,1,
-0x00a8b0,1,
-0x00a8ac,1,
-0x00a8a8,1,
-0x00a8a4,1,
-0x00a8a0,1,
-0x00a89c,1,
-0x00a898,1,
-0x00a894,1,
-0x00a890,1,
-0x00a88c,1,
-0x00a888,1,
-0x00a884,1,
-0x00a880,1,
-0x00a87c,1,
-0x00a878,1,
-0x00a874,1,
-0x00a870,1,
-0x00a86c,1,
-0x00a868,1,
-0x00a864,1,
-0x00a860,1,
-0x00a85c,1,
-0x00a858,1,
-0x00a854,1,
-0x00a850,1,
-0x00a84c,1,
-0x00a848,1,
-0x00a844,1,
-0x00a840,1,
-0x00a83c,1,
-0x00a838,1,
-0x00a834,1,
-0x00a830,1,
-0x00a82c,1,
-0x00a828,1,
-0x00a824,1,
-0x00a820,1,
-0x00a81c,1,
-0x00a818,1,
-0x00a814,1,
-0x00a810,1,
-0x00a80c,1,
-0x00a808,1,
-0x00a804,1,
-0x00a800,1,
-0x00a7fc,1,
-0x00a7f8,1,
-0x00a7f4,1,
-0x00a7dc,1,
-0x00a7d4,1,
-0x00a7d0,1,
-0x00a7cc,1,
-0x00a7c8,1,
-0x00a7c4,1,
-0x00a7c0,1,
-0x00a7bc,1,
-0x00a7b8,1,
-0x00a7b4,1,
-0x00a7b0,1,
-0x00a7ac,1,
-0x00a7a8,1,
-0x00a7a0,1,
-0x00a79c,1,
-0x00a798,1,
-0x00a794,1,
-0x00a790,1,
-0x00a78c,1,
-0x00a788,1,
-0x00a784,1,
-0x00a780,1,
-0x00a694,1,
-0x00a690,1,
-0x00a680,1,
-0x00a630,1,
-0x00a62c,1,
-0x00a628,1,
-0x00a624,1,
-0x00a620,1,
-0x00a61c,1,
-0x00a618,1,
-0x00a614,1,
-0x00a610,1,
-0x00a60c,1,
-0x00a604,1,
-0x00a600,1,
-0x00a5fc,1,
-0x00a5f8,1,
-0x00a5f4,1,
-0x00a5ec,1,
-0x00a5e4,1,
-0x00a5e0,1,
-0x00a5dc,1,
-0x00a5d8,1,
-0x00a5d4,1,
-0x00a5cc,1,
-0x00a5c8,1,
-0x00a5c0,1,
-0x00a5b8,1,
-0x00a5b4,1,
-0x00a5b0,1,
-0x00a5a8,1,
-0x00a5a4,1,
-0x00a5a0,1,
-0x00a580,1,
-0x00a57c,1,
-0x00a578,1,
-0x00a574,1,
-0x00a570,1,
-0x00a56c,1,
-0x00a568,1,
-0x00a564,1,
-0x00a560,1,
-0x00a55c,1,
-0x00a558,1,
-0x00a554,1,
-0x00a550,1,
-0x00a54c,1,
-0x00a548,1,
-0x00a544,1,
-0x00a540,1,
-0x00a534,1,
-0x00a530,1,
-0x00a520,1,
-0x00a514,1,
-0x00a510,1,
-0x00a500,1,
-0x00a4ec,1,
-0x00a4e8,1,
-0x00a4e4,1,
-0x00a4e0,1,
-0x00a4dc,1,
-0x00a4d8,1,
-0x00a4d4,1,
-0x00a4d0,1,
-0x00a4cc,1,
-0x00a4c8,1,
-0x00a490,1,
-0x00a48c,1,
-0x00a488,1,
-0x00a484,1,
-0x00a480,1,
-0x00a468,1,
-0x00a450,1,
-0x00a44c,1,
-0x00a424,1,
-0x00a420,1,
-0x00a41c,1,
-0x00a418,1,
-0x00a414,1,
-0x00a410,1,
-0x00a40c,1,
-0x00a408,1,
-0x00a404,1,
-0x00a400,1,
-0x00a334,1,
-0x00a330,1,
-0x00a320,1,
-0x00a314,1,
-0x00a310,1,
-0x00a300,1,
-0x00a178,1,
-0x00a174,1,
-0x00a170,1,
-0x00a16c,1,
-0x00a168,1,
-0x00a164,1,
-0x00a160,1,
-0x00a15c,1,
-0x00a158,1,
-0x00a154,1,
-0x00a150,1,
-0x00a14c,1,
-0x00a148,1,
-0x00a144,1,
-0x00a140,1,
-0x00a13c,1,
-0x00a138,1,
-0x00a134,1,
-0x00a130,1,
-0x00a12c,1,
-0x00a128,1,
-0x00a124,1,
-0x00a120,1,
-0x00a11c,1,
-0x00a118,1,
-0x00a114,1,
-0x00a110,1,
-0x00a10c,1,
-0x00a108,1,
-0x00a104,1,
-0x00a100,1,
-0x00a0fc,1,
-0x00a0f8,1,
-0x00a0f4,1,
-0x00a0f0,1,
-0x00a0ec,1,
-0x00a0e8,1,
-0x00a0e4,1,
-0x00a0e0,1,
-0x00a0dc,1,
-0x00a0d8,1,
-0x00a0d4,1,
-0x00a0d0,1,
-0x00a0cc,1,
-0x00a0c8,1,
-0x00a0c4,1,
-0x00a0c0,1,
-0x00a0bc,1,
-0x00a0b8,1,
-0x00a0b4,1,
-0x00a0b0,1,
-0x00a0ac,1,
-0x00a0a8,1,
-0x00a0a4,1,
-0x00a0a0,1,
-0x00a09c,1,
-0x00a098,1,
-0x00a094,1,
-0x00a090,1,
-0x00a08c,1,
-0x00a088,1,
-0x00a084,1,
-0x00a080,1,
-0x00a07c,1,
-0x00a078,1,
-0x00a074,1,
-0x00a070,1,
-0x00a06c,1,
-0x00a068,1,
-0x00a064,1,
-0x00a060,1,
-0x00a05c,1,
-0x00a058,1,
-0x00a054,1,
-0x00a050,1,
-0x00a04c,1,
-0x00a048,1,
-0x00a044,1,
-0x00a040,1,
-0x00a03c,1,
-0x00a038,1,
-0x00a034,1,
-0x00a030,1,
-0x00a02c,1,
-0x00a028,1,
-0x00a024,1,
-0x00a020,1,
-0x00a01c,1,
-0x00a018,1,
-0x00a014,1,
-0x00a010,1,
-0x00a00c,1,
-0x00a008,1,
-0x00a004,1,
-0x00a000,1,
-0x009ffc,1,
-0x009ff8,1,
-0x009ff4,1,
-0x009fdc,1,
-0x009fd4,1,
-0x009fd0,1,
-0x009fcc,1,
-0x009fc8,1,
-0x009fc4,1,
-0x009fc0,1,
-0x009fbc,1,
-0x009fb8,1,
-0x009fb4,1,
-0x009fb0,1,
-0x009fac,1,
-0x009fa8,1,
-0x009fa0,1,
-0x009f9c,1,
-0x009f98,1,
-0x009f94,1,
-0x009f90,1,
-0x009f8c,1,
-0x009f88,1,
-0x009f84,1,
-0x009f80,1,
-0x009e94,1,
-0x009e90,1,
-0x009e80,1,
-0x009e30,1,
-0x009e2c,1,
-0x009e28,1,
-0x009e24,1,
-0x009e20,1,
-0x009e1c,1,
-0x009e18,1,
-0x009e14,1,
-0x009e10,1,
-0x009e0c,1,
-0x009e04,1,
-0x009e00,1,
-0x009dfc,1,
-0x009df8,1,
-0x009df4,1,
-0x009dec,1,
-0x009de4,1,
-0x009de0,1,
-0x009ddc,1,
-0x009dd8,1,
-0x009dd4,1,
-0x009dcc,1,
-0x009dc8,1,
-0x009dc0,1,
-0x009db8,1,
-0x009db4,1,
-0x009db0,1,
-0x009da8,1,
-0x009da4,1,
-0x009da0,1,
-0x009d80,1,
-0x009d7c,1,
-0x009d78,1,
-0x009d74,1,
-0x009d70,1,
-0x009d6c,1,
-0x009d68,1,
-0x009d64,1,
-0x009d60,1,
-0x009d5c,1,
-0x009d58,1,
-0x009d54,1,
-0x009d50,1,
-0x009d4c,1,
-0x009d48,1,
-0x009d44,1,
-0x009d40,1,
-0x009d34,1,
-0x009d30,1,
-0x009d20,1,
-0x009d14,1,
-0x009d10,1,
-0x009d00,1,
-0x009cec,1,
-0x009ce8,1,
-0x009ce4,1,
-0x009ce0,1,
-0x009cdc,1,
-0x009cd8,1,
-0x009cd4,1,
-0x009cd0,1,
-0x009ccc,1,
-0x009cc8,1,
-0x009c90,1,
-0x009c8c,1,
-0x009c88,1,
-0x009c84,1,
-0x009c80,1,
-0x009c68,1,
-0x009c50,1,
-0x009c4c,1,
-0x009c24,1,
-0x009c20,1,
-0x009c1c,1,
-0x009c18,1,
-0x009c14,1,
-0x009c10,1,
-0x009c0c,1,
-0x009c08,1,
-0x009c04,1,
-0x009c00,1,
-0x009b34,1,
-0x009b30,1,
-0x009b20,1,
-0x009b14,1,
-0x009b10,1,
-0x009b00,1,
-0x009978,1,
-0x009974,1,
-0x009970,1,
-0x00996c,1,
-0x009968,1,
-0x009964,1,
-0x009960,1,
-0x00995c,1,
-0x009958,1,
-0x009954,1,
-0x009950,1,
-0x00994c,1,
-0x009948,1,
-0x009944,1,
-0x009940,1,
-0x00993c,1,
-0x009938,1,
-0x009934,1,
-0x009930,1,
-0x00992c,1,
-0x009928,1,
-0x009924,1,
-0x009920,1,
-0x00991c,1,
-0x009918,1,
-0x009914,1,
-0x009910,1,
-0x00990c,1,
-0x009908,1,
-0x009904,1,
-0x009900,1,
-0x0098fc,1,
-0x0098f8,1,
-0x0098f4,1,
-0x0098f0,1,
-0x0098ec,1,
-0x0098e8,1,
-0x0098e4,1,
-0x0098e0,1,
-0x0098dc,1,
-0x0098d8,1,
-0x0098d4,1,
-0x0098d0,1,
-0x0098cc,1,
-0x0098c8,1,
-0x0098c4,1,
-0x0098c0,1,
-0x0098bc,1,
-0x0098b8,1,
-0x0098b4,1,
-0x0098b0,1,
-0x0098ac,1,
-0x0098a8,1,
-0x0098a4,1,
-0x0098a0,1,
-0x00989c,1,
-0x009898,1,
-0x009894,1,
-0x009890,1,
-0x00988c,1,
-0x009888,1,
-0x009884,1,
-0x009880,1,
-0x00987c,1,
-0x009878,1,
-0x009874,1,
-0x009870,1,
-0x00986c,1,
-0x009868,1,
-0x009864,1,
-0x009860,1,
-0x00985c,1,
-0x009858,1,
-0x009854,1,
-0x009850,1,
-0x00984c,1,
-0x009848,1,
-0x009844,1,
-0x009840,1,
-0x00983c,1,
-0x009838,1,
-0x009834,1,
-0x009830,1,
-0x00982c,1,
-0x009828,1,
-0x009824,1,
-0x009820,1,
-0x00981c,1,
-0x009818,1,
-0x009814,1,
-0x009810,1,
-0x00980c,1,
-0x009808,1,
-0x009804,1,
-0x009800,1,
-0x0097fc,1,
-0x0097f8,1,
-0x0097f4,1,
-0x0097dc,1,
-0x0097d4,1,
-0x0097d0,1,
-0x0097cc,1,
-0x0097c8,1,
-0x0097c4,1,
-0x0097c0,1,
-0x0097bc,1,
-0x0097b8,1,
-0x0097b4,1,
-0x0097b0,1,
-0x0097ac,1,
-0x0097a8,1,
-0x0097a0,1,
-0x00979c,1,
-0x009798,1,
-0x009794,1,
-0x009790,1,
-0x00978c,1,
-0x009788,1,
-0x009784,1,
-0x009780,1,
-0x009694,1,
-0x009690,1,
-0x009680,1,
-0x009630,1,
-0x00962c,1,
-0x009628,1,
-0x009624,1,
-0x009620,1,
-0x00961c,1,
-0x009618,1,
-0x009614,1,
-0x009610,1,
-0x00960c,1,
-0x009604,1,
-0x009600,1,
-0x0095fc,1,
-0x0095f8,1,
-0x0095f4,1,
-0x0095ec,1,
-0x0095e4,1,
-0x0095e0,1,
-0x0095dc,1,
-0x0095d8,1,
-0x0095d4,1,
-0x0095cc,1,
-0x0095c8,1,
-0x0095c0,1,
-0x0095b8,1,
-0x0095b4,1,
-0x0095b0,1,
-0x0095a8,1,
-0x0095a4,1,
-0x0095a0,1,
-0x009580,1,
-0x00957c,1,
-0x009578,1,
-0x009574,1,
-0x009570,1,
-0x00956c,1,
-0x009568,1,
-0x009564,1,
-0x009560,1,
-0x00955c,1,
-0x009558,1,
-0x009554,1,
-0x009550,1,
-0x00954c,1,
-0x009548,1,
-0x009544,1,
-0x009540,1,
-0x009534,1,
-0x009530,1,
-0x009520,1,
-0x009514,1,
-0x009510,1,
-0x009500,1,
-0x0094ec,1,
-0x0094e8,1,
-0x0094e4,1,
-0x0094e0,1,
-0x0094dc,1,
-0x0094d8,1,
-0x0094d4,1,
-0x0094d0,1,
-0x0094cc,1,
-0x0094c8,1,
-0x009490,1,
-0x00948c,1,
-0x009488,1,
-0x009484,1,
-0x009480,1,
-0x009468,1,
-0x009450,1,
-0x00944c,1,
-0x009424,1,
-0x009420,1,
-0x00941c,1,
-0x009418,1,
-0x009414,1,
-0x009410,1,
-0x00940c,1,
-0x009408,1,
-0x009404,1,
-0x009400,1,
-0x009334,1,
-0x009330,1,
-0x009320,1,
-0x009314,1,
-0x009310,1,
-0x009300,1,
-0x009178,1,
-0x009174,1,
-0x009170,1,
-0x00916c,1,
-0x009168,1,
-0x009164,1,
-0x009160,1,
-0x00915c,1,
-0x009158,1,
-0x009154,1,
-0x009150,1,
-0x00914c,1,
-0x009148,1,
-0x009144,1,
-0x009140,1,
-0x00913c,1,
-0x009138,1,
-0x009134,1,
-0x009130,1,
-0x00912c,1,
-0x009128,1,
-0x009124,1,
-0x009120,1,
-0x00911c,1,
-0x009118,1,
-0x009114,1,
-0x009110,1,
-0x00910c,1,
-0x009108,1,
-0x009104,1,
-0x009100,1,
-0x0090fc,1,
-0x0090f8,1,
-0x0090f4,1,
-0x0090f0,1,
-0x0090ec,1,
-0x0090e8,1,
-0x0090e4,1,
-0x0090e0,1,
-0x0090dc,1,
-0x0090d8,1,
-0x0090d4,1,
-0x0090d0,1,
-0x0090cc,1,
-0x0090c8,1,
-0x0090c4,1,
-0x0090c0,1,
-0x0090bc,1,
-0x0090b8,1,
-0x0090b4,1,
-0x0090b0,1,
-0x0090ac,1,
-0x0090a8,1,
-0x0090a4,1,
-0x0090a0,1,
-0x00909c,1,
-0x009098,1,
-0x009094,1,
-0x009090,1,
-0x00908c,1,
-0x009088,1,
-0x009084,1,
-0x009080,1,
-0x00907c,1,
-0x009078,1,
-0x009074,1,
-0x009070,1,
-0x00906c,1,
-0x009068,1,
-0x009064,1,
-0x009060,1,
-0x00905c,1,
-0x009058,1,
-0x009054,1,
-0x009050,1,
-0x00904c,1,
-0x009048,1,
-0x009044,1,
-0x009040,1,
-0x00903c,1,
-0x009038,1,
-0x009034,1,
-0x009030,1,
-0x00902c,1,
-0x009028,1,
-0x009024,1,
-0x009020,1,
-0x00901c,1,
-0x009018,1,
-0x009014,1,
-0x009010,1,
-0x00900c,1,
-0x009008,1,
-0x009004,1,
-0x009000,1,
-0x008ffc,1,
-0x008ff8,1,
-0x008ff4,1,
-0x008fdc,1,
-0x008fd4,1,
-0x008fd0,1,
-0x008fcc,1,
-0x008fc8,1,
-0x008fc4,1,
-0x008fc0,1,
-0x008fbc,1,
-0x008fb8,1,
-0x008fb4,1,
-0x008fb0,1,
-0x008fac,1,
-0x008fa8,1,
-0x008fa0,1,
-0x008f9c,1,
-0x008f98,1,
-0x008f94,1,
-0x008f90,1,
-0x008f8c,1,
-0x008f88,1,
-0x008f84,1,
-0x008f80,1,
-0x008e94,1,
-0x008e90,1,
-0x008e80,1,
-0x008e30,1,
-0x008e2c,1,
-0x008e28,1,
-0x008e24,1,
-0x008e20,1,
-0x008e1c,1,
-0x008e18,1,
-0x008e14,1,
-0x008e10,1,
-0x008e0c,1,
-0x008e04,1,
-0x008e00,1,
-0x008dfc,1,
-0x008df8,1,
-0x008df4,1,
-0x008dec,1,
-0x008de4,1,
-0x008de0,1,
-0x008ddc,1,
-0x008dd8,1,
-0x008dd4,1,
-0x008dcc,1,
-0x008dc8,1,
-0x008dc0,1,
-0x008db8,1,
-0x008db4,1,
-0x008db0,1,
-0x008da8,1,
-0x008da4,1,
-0x008da0,1,
-0x008d80,1,
-0x008d7c,1,
-0x008d78,1,
-0x008d74,1,
-0x008d70,1,
-0x008d6c,1,
-0x008d68,1,
-0x008d64,1,
-0x008d60,1,
-0x008d5c,1,
-0x008d58,1,
-0x008d54,1,
-0x008d50,1,
-0x008d4c,1,
-0x008d48,1,
-0x008d44,1,
-0x008d40,1,
-0x008d34,1,
-0x008d30,1,
-0x008d20,1,
-0x008d14,1,
-0x008d10,1,
-0x008d00,1,
-0x008cec,1,
-0x008ce8,1,
-0x008ce4,1,
-0x008ce0,1,
-0x008cdc,1,
-0x008cd8,1,
-0x008cd4,1,
-0x008cd0,1,
-0x008ccc,1,
-0x008cc8,1,
-0x008c90,1,
-0x008c8c,1,
-0x008c88,1,
-0x008c84,1,
-0x008c80,1,
-0x008c68,1,
-0x008c50,1,
-0x008c4c,1,
-0x008c24,1,
-0x008c20,1,
-0x008c1c,1,
-0x008c18,1,
-0x008c14,1,
-0x008c10,1,
-0x008c0c,1,
-0x008c08,1,
-0x008c04,1,
-0x008c00,1,
-0x008b34,1,
-0x008b30,1,
-0x008b20,1,
-0x008b14,1,
-0x008b10,1,
-0x008b00,1,
-0x008978,1,
-0x008974,1,
-0x008970,1,
-0x00896c,1,
-0x008968,1,
-0x008964,1,
-0x008960,1,
-0x00895c,1,
-0x008958,1,
-0x008954,1,
-0x008950,1,
-0x00894c,1,
-0x008948,1,
-0x008944,1,
-0x008940,1,
-0x00893c,1,
-0x008938,1,
-0x008934,1,
-0x008930,1,
-0x00892c,1,
-0x008928,1,
-0x008924,1,
-0x008920,1,
-0x00891c,1,
-0x008918,1,
-0x008914,1,
-0x008910,1,
-0x00890c,1,
-0x008908,1,
-0x008904,1,
-0x008900,1,
-0x0088fc,1,
-0x0088f8,1,
-0x0088f4,1,
-0x0088f0,1,
-0x0088ec,1,
-0x0088e8,1,
-0x0088e4,1,
-0x0088e0,1,
-0x0088dc,1,
-0x0088d8,1,
-0x0088d4,1,
-0x0088d0,1,
-0x0088cc,1,
-0x0088c8,1,
-0x0088c4,1,
-0x0088c0,1,
-0x0088bc,1,
-0x0088b8,1,
-0x0088b4,1,
-0x0088b0,1,
-0x0088ac,1,
-0x0088a8,1,
-0x0088a4,1,
-0x0088a0,1,
-0x00889c,1,
-0x008898,1,
-0x008894,1,
-0x008890,1,
-0x00888c,1,
-0x008888,1,
-0x008884,1,
-0x008880,1,
-0x00887c,1,
-0x008878,1,
-0x008874,1,
-0x008870,1,
-0x00886c,1,
-0x008868,1,
-0x008864,1,
-0x008860,1,
-0x00885c,1,
-0x008858,1,
-0x008854,1,
-0x008850,1,
-0x00884c,1,
-0x008848,1,
-0x008844,1,
-0x008840,1,
-0x00883c,1,
-0x008838,1,
-0x008834,1,
-0x008830,1,
-0x00882c,1,
-0x008828,1,
-0x008824,1,
-0x008820,1,
-0x00881c,1,
-0x008818,1,
-0x008814,1,
-0x008810,1,
-0x00880c,1,
-0x008808,1,
-0x008804,1,
-0x008800,1,
-0x0087fc,1,
-0x0087f8,1,
-0x0087f4,1,
-0x0087dc,1,
-0x0087d4,1,
-0x0087d0,1,
-0x0087cc,1,
-0x0087c8,1,
-0x0087c4,1,
-0x0087c0,1,
-0x0087bc,1,
-0x0087b8,1,
-0x0087b4,1,
-0x0087b0,1,
-0x0087ac,1,
-0x0087a8,1,
-0x0087a0,1,
-0x00879c,1,
-0x008798,1,
-0x008794,1,
-0x008790,1,
-0x00878c,1,
-0x008788,1,
-0x008784,1,
-0x008780,1,
-0x008694,1,
-0x008690,1,
-0x008680,1,
-0x008630,1,
-0x00862c,1,
-0x008628,1,
-0x008624,1,
-0x008620,1,
-0x00861c,1,
-0x008618,1,
-0x008614,1,
-0x008610,1,
-0x00860c,1,
-0x008604,1,
-0x008600,1,
-0x0085fc,1,
-0x0085f8,1,
-0x0085f4,1,
-0x0085ec,1,
-0x0085e4,1,
-0x0085e0,1,
-0x0085dc,1,
-0x0085d8,1,
-0x0085d4,1,
-0x0085cc,1,
-0x0085c8,1,
-0x0085c0,1,
-0x0085b8,1,
-0x0085b4,1,
-0x0085b0,1,
-0x0085a8,1,
-0x0085a4,1,
-0x0085a0,1,
-0x008580,1,
-0x00857c,1,
-0x008578,1,
-0x008574,1,
-0x008570,1,
-0x00856c,1,
-0x008568,1,
-0x008564,1,
-0x008560,1,
-0x00855c,1,
-0x008558,1,
-0x008554,1,
-0x008550,1,
-0x00854c,1,
-0x008548,1,
-0x008544,1,
-0x008540,1,
-0x008534,1,
-0x008530,1,
-0x008520,1,
-0x008514,1,
-0x008510,1,
-0x008500,1,
-0x0084ec,1,
-0x0084e8,1,
-0x0084e4,1,
-0x0084e0,1,
-0x0084dc,1,
-0x0084d8,1,
-0x0084d4,1,
-0x0084d0,1,
-0x0084cc,1,
-0x0084c8,1,
-0x008490,1,
-0x00848c,1,
-0x008488,1,
-0x008484,1,
-0x008480,1,
-0x008468,1,
-0x008450,1,
-0x00844c,1,
-0x008424,1,
-0x008420,1,
-0x00841c,1,
-0x008418,1,
-0x008414,1,
-0x008410,1,
-0x00840c,1,
-0x008408,1,
-0x008404,1,
-0x008400,1,
-0x008334,1,
-0x008330,1,
-0x008320,1,
-0x008314,1,
-0x008310,1,
-0x008300,1,
-0x008178,1,
-0x008174,1,
-0x008170,1,
-0x00816c,1,
-0x008168,1,
-0x008164,1,
-0x008160,1,
-0x00815c,1,
-0x008158,1,
-0x008154,1,
-0x008150,1,
-0x00814c,1,
-0x008148,1,
-0x008144,1,
-0x008140,1,
-0x00813c,1,
-0x008138,1,
-0x008134,1,
-0x008130,1,
-0x00812c,1,
-0x008128,1,
-0x008124,1,
-0x008120,1,
-0x00811c,1,
-0x008118,1,
-0x008114,1,
-0x008110,1,
-0x00810c,1,
-0x008108,1,
-0x008104,1,
-0x008100,1,
-0x0080fc,1,
-0x0080f8,1,
-0x0080f4,1,
-0x0080f0,1,
-0x0080ec,1,
-0x0080e8,1,
-0x0080e4,1,
-0x0080e0,1,
-0x0080dc,1,
-0x0080d8,1,
-0x0080d4,1,
-0x0080d0,1,
-0x0080cc,1,
-0x0080c8,1,
-0x0080c4,1,
-0x0080c0,1,
-0x0080bc,1,
-0x0080b8,1,
-0x0080b4,1,
-0x0080b0,1,
-0x0080ac,1,
-0x0080a8,1,
-0x0080a4,1,
-0x0080a0,1,
-0x00809c,1,
-0x008098,1,
-0x008094,1,
-0x008090,1,
-0x00808c,1,
-0x008088,1,
-0x008084,1,
-0x008080,1,
-0x00807c,1,
-0x008078,1,
-0x008074,1,
-0x008070,1,
-0x00806c,1,
-0x008068,1,
-0x008064,1,
-0x008060,1,
-0x00805c,1,
-0x008058,1,
-0x008054,1,
-0x008050,1,
-0x00804c,1,
-0x008048,1,
-0x008044,1,
-0x008040,1,
-0x00803c,1,
-0x008038,1,
-0x008034,1,
-0x008030,1,
-0x00802c,1,
-0x008028,1,
-0x008024,1,
-0x008020,1,
-0x00801c,1,
-0x008018,1,
-0x008014,1,
-0x008010,1,
-0x00800c,1,
-0x008008,1,
-0x008004,1,
-0x008000,1,
-0x0059f4,1,
-0x0059f0,1,
-0x0059d4,1,
-0x0059d0,1,
-0x0059c0,1,
-0x0059b4,1,
-0x0059b0,1,
-0x0059a0,1,
-0x005994,1,
-0x005990,1,
-0x005980,1,
-0x005974,1,
-0x005970,1,
-0x005960,1,
-0x005954,1,
-0x005950,1,
-0x005940,1,
-0x005928,1,
-0x005924,1,
-0x005920,1,
-0x00591c,1,
-0x005918,1,
-0x005914,1,
-0x005910,1,
-0x00590c,1,
-0x005908,1,
-0x005904,1,
-0x005900,1,
-0x0058d4,1,
-0x0058d0,1,
-0x0058cc,1,
-0x0058c8,1,
-0x0058c4,1,
-0x0058c0,1,
-0x0058ac,1,
-0x005870,1,
-0x00586c,1,
-0x005868,1,
-0x005864,1,
-0x005860,1,
-0x00585c,1,
-0x005858,1,
-0x005854,1,
-0x005850,1,
-0x00584c,1,
-0x005848,1,
-0x005844,1,
-0x005840,1,
-0x00583c,1,
-0x005838,1,
-0x005834,1,
-0x005830,1,
-0x00582c,1,
-0x005828,1,
-0x005824,1,
-0x005820,1,
-0x005814,1,
-0x005810,1,
-0x005800,1,
-0x003b0c,1,
-0x003b08,1,
-0x003b04,1,
-0x003b00,1,
-0x003af4,1,
-0x003af0,1,
-0x003a74,1,
-0x003a70,1,
-0x003a60,1,
-0x003a54,1,
-0x003a50,1,
-0x003a40,1,
-0x003a28,1,
-0x003a1c,1,
-0x003a18,1,
-0x003a0c,1,
-0x003a00,1,
-0x003934,1,
-0x003930,1,
-0x003924,1,
-0x003920,1,
-0x003914,1,
-0x003910,1,
-0x003904,1,
-0x003900,1,
-0x0038f4,1,
-0x0038f0,1,
-0x0038e4,1,
-0x0038e0,1,
-0x0038b4,1,
-0x0038b0,1,
-0x0038ac,1,
-0x0038a8,1,
-0x0038a4,1,
-0x0038a0,1,
-0x003894,1,
-0x003890,1,
-0x00388c,1,
-0x003888,1,
-0x003884,1,
-0x003880,1,
-0x003870,1,
-0x00383c,1,
-0x003838,1,
-0x003834,1,
-0x003830,1,
-0x00382c,1,
-0x003828,1,
-0x003824,1,
-0x003820,1,
-0x003814,1,
-0x003810,1,
-0x003800,1,
-0x0037bc,1,
-0x0037b8,1,
-0x0037b4,1,
-0x00367c,1,
-0x003678,1,
-0x003674,1,
-0x003670,1,
-0x00366c,1,
-0x003668,1,
-0x003664,1,
-0x003660,1,
-0x00365c,1,
-0x003658,1,
-0x003654,1,
-0x00364c,1,
-0x003648,1,
-0x003644,1,
-0x003640,1,
-0x00362c,1,
-0x003628,1,
-0x003624,1,
-0x003620,1,
-0x00361c,1,
-0x003618,1,
-0x003614,1,
-0x003610,1,
-0x00360c,1,
-0x003608,1,
-0x003604,1,
-0x003600,1,
-0x0034a0,1,
-0x00349c,1,
-0x003498,1,
-0x003494,1,
-0x003490,1,
-0x00348c,1,
-0x003488,1,
-0x003484,1,
-0x003480,1,
-0x00347c,1,
-0x003478,1,
-0x003474,1,
-0x003470,1,
-0x00346c,1,
-0x003464,1,
-0x00345c,1,
-0x003458,1,
-0x003454,1,
-0x003450,1,
-0x00344c,1,
-0x003448,1,
-0x003444,1,
-0x003440,1,
-0x00343c,1,
-0x003438,1,
-0x003424,1,
-0x003420,1,
-0x00341c,1,
-0x003418,1,
-0x003414,1,
-0x003410,1,
-0x00340c,1,
-0x003408,1,
-0x003404,1,
-0x003400,1,
-0x003040,1,
-0x003000,1,
-0x002ffc,1,
-0x002ff8,1,
-0x002ff4,1,
-0x002fdc,1,
-0x002fd4,1,
-0x002fd0,1,
-0x002fcc,1,
-0x002fc8,1,
-0x002fc4,1,
-0x002fc0,1,
-0x002fbc,1,
-0x002fb8,1,
-0x002fb4,1,
-0x002fb0,1,
-0x002fac,1,
-0x002fa8,1,
-0x002fa0,1,
-0x002f9c,1,
-0x002f98,1,
-0x002f94,1,
-0x002f90,1,
-0x002f8c,1,
-0x002f88,1,
-0x002f84,1,
-0x002f80,1,
-0x002e94,1,
-0x002e90,1,
-0x002e80,1,
-0x002e30,1,
-0x002e2c,1,
-0x002e28,1,
-0x002e24,1,
-0x002e20,1,
-0x002e1c,1,
-0x002e18,1,
-0x002e14,1,
-0x002e10,1,
-0x002e0c,1,
-0x002e04,1,
-0x002e00,1,
-0x002dfc,1,
-0x002df8,1,
-0x002df4,1,
-0x002dec,1,
-0x002de4,1,
-0x002de0,1,
-0x002ddc,1,
-0x002dd8,1,
-0x002dd4,1,
-0x002dcc,1,
-0x002dc8,1,
-0x002dc0,1,
-0x002db8,1,
-0x002db4,1,
-0x002db0,1,
-0x002da8,1,
-0x002da4,1,
-0x002da0,1,
-0x002d80,1,
-0x002d7c,1,
-0x002d78,1,
-0x002d74,1,
-0x002d70,1,
-0x002d6c,1,
-0x002d68,1,
-0x002d64,1,
-0x002d60,1,
-0x002d5c,1,
-0x002d58,1,
-0x002d54,1,
-0x002d50,1,
-0x002d4c,1,
-0x002d48,1,
-0x002d44,1,
-0x002d40,1,
-0x002d34,1,
-0x002d30,1,
-0x002d20,1,
-0x002d14,1,
-0x002d10,1,
-0x002d00,1,
-0x002cec,1,
-0x002ce8,1,
-0x002ce4,1,
-0x002ce0,1,
-0x002cdc,1,
-0x002cd8,1,
-0x002cd4,1,
-0x002cd0,1,
-0x002ccc,1,
-0x002cc8,1,
-0x002c90,1,
-0x002c8c,1,
-0x002c88,1,
-0x002c84,1,
-0x002c80,1,
-0x002c68,1,
-0x002c50,1,
-0x002c4c,1,
-0x002c24,1,
-0x002c20,1,
-0x002c1c,1,
-0x002c18,1,
-0x002c14,1,
-0x002c10,1,
-0x002c0c,1,
-0x002c08,1,
-0x002c04,1,
-0x002c00,1,
-0x002b34,1,
-0x002b30,1,
-0x002b20,1,
-0x002b14,1,
-0x002b10,1,
-0x002b00,1,
-0x002978,1,
-0x002974,1,
-0x002970,1,
-0x00296c,1,
-0x002968,1,
-0x002964,1,
-0x002960,1,
-0x00295c,1,
-0x002958,1,
-0x002954,1,
-0x002950,1,
-0x00294c,1,
-0x002948,1,
-0x002944,1,
-0x002940,1,
-0x00293c,1,
-0x002938,1,
-0x002934,1,
-0x002930,1,
-0x00292c,1,
-0x002928,1,
-0x002924,1,
-0x002920,1,
-0x00291c,1,
-0x002918,1,
-0x002914,1,
-0x002910,1,
-0x00290c,1,
-0x002908,1,
-0x002904,1,
-0x002900,1,
-0x0028fc,1,
-0x0028f8,1,
-0x0028f4,1,
-0x0028f0,1,
-0x0028ec,1,
-0x0028e8,1,
-0x0028e4,1,
-0x0028e0,1,
-0x0028dc,1,
-0x0028d8,1,
-0x0028d4,1,
-0x0028d0,1,
-0x0028cc,1,
-0x0028c8,1,
-0x0028c4,1,
-0x0028c0,1,
-0x0028bc,1,
-0x0028b8,1,
-0x0028b4,1,
-0x0028b0,1,
-0x0028ac,1,
-0x0028a8,1,
-0x0028a4,1,
-0x0028a0,1,
-0x00289c,1,
-0x002898,1,
-0x002894,1,
-0x002890,1,
-0x00288c,1,
-0x002888,1,
-0x002884,1,
-0x002880,1,
-0x00287c,1,
-0x002878,1,
-0x002874,1,
-0x002870,1,
-0x00286c,1,
-0x002868,1,
-0x002864,1,
-0x002860,1,
-0x00285c,1,
-0x002858,1,
-0x002854,1,
-0x002850,1,
-0x00284c,1,
-0x002848,1,
-0x002844,1,
-0x002840,1,
-0x00283c,1,
-0x002838,1,
-0x002834,1,
-0x002830,1,
-0x00282c,1,
-0x002828,1,
-0x002824,1,
-0x002820,1,
-0x00281c,1,
-0x002818,1,
-0x002814,1,
-0x002810,1,
-0x00280c,1,
-0x002808,1,
-0x002804,1,
-0x002800,1,
-0x0027fc,1,
-0x0027f8,1,
-0x0027f4,1,
-0x0027dc,1,
-0x0027d4,1,
-0x0027d0,1,
-0x0027cc,1,
-0x0027c8,1,
-0x0027c4,1,
-0x0027c0,1,
-0x0027bc,1,
-0x0027b8,1,
-0x0027b4,1,
-0x0027b0,1,
-0x0027ac,1,
-0x0027a8,1,
-0x0027a0,1,
-0x00279c,1,
-0x002798,1,
-0x002794,1,
-0x002790,1,
-0x00278c,1,
-0x002788,1,
-0x002784,1,
-0x002780,1,
-0x002694,1,
-0x002690,1,
-0x002680,1,
-0x002630,1,
-0x00262c,1,
-0x002628,1,
-0x002624,1,
-0x002620,1,
-0x00261c,1,
-0x002618,1,
-0x002614,1,
-0x002610,1,
-0x00260c,1,
-0x002604,1,
-0x002600,1,
-0x0025fc,1,
-0x0025f8,1,
-0x0025f4,1,
-0x0025ec,1,
-0x0025e4,1,
-0x0025e0,1,
-0x0025dc,1,
-0x0025d8,1,
-0x0025d4,1,
-0x0025cc,1,
-0x0025c8,1,
-0x0025c0,1,
-0x0025b8,1,
-0x0025b4,1,
-0x0025b0,1,
-0x0025a8,1,
-0x0025a4,1,
-0x0025a0,1,
-0x002580,1,
-0x00257c,1,
-0x002578,1,
-0x002574,1,
-0x002570,1,
-0x00256c,1,
-0x002568,1,
-0x002564,1,
-0x002560,1,
-0x00255c,1,
-0x002558,1,
-0x002554,1,
-0x002550,1,
-0x00254c,1,
-0x002548,1,
-0x002544,1,
-0x002540,1,
-0x002534,1,
-0x002530,1,
-0x002520,1,
-0x002514,1,
-0x002510,1,
-0x002500,1,
-0x0024ec,1,
-0x0024e8,1,
-0x0024e4,1,
-0x0024e0,1,
-0x0024dc,1,
-0x0024d8,1,
-0x0024d4,1,
-0x0024d0,1,
-0x0024cc,1,
-0x0024c8,1,
-0x002490,1,
-0x00248c,1,
-0x002488,1,
-0x002484,1,
-0x002480,1,
-0x002468,1,
-0x002450,1,
-0x00244c,1,
-0x002424,1,
-0x002420,1,
-0x00241c,1,
-0x002418,1,
-0x002414,1,
-0x002410,1,
-0x00240c,1,
-0x002408,1,
-0x002404,1,
-0x002400,1,
-0x002334,1,
-0x002330,1,
-0x002320,1,
-0x002314,1,
-0x002310,1,
-0x002300,1,
-0x002178,1,
-0x002174,1,
-0x002170,1,
-0x00216c,1,
-0x002168,1,
-0x002164,1,
-0x002160,1,
-0x00215c,1,
-0x002158,1,
-0x002154,1,
-0x002150,1,
-0x00214c,1,
-0x002148,1,
-0x002144,1,
-0x002140,1,
-0x00213c,1,
-0x002138,1,
-0x002134,1,
-0x002130,1,
-0x00212c,1,
-0x002128,1,
-0x002124,1,
-0x002120,1,
-0x00211c,1,
-0x002118,1,
-0x002114,1,
-0x002110,1,
-0x00210c,1,
-0x002108,1,
-0x002104,1,
-0x002100,1,
-0x0020fc,1,
-0x0020f8,1,
-0x0020f4,1,
-0x0020f0,1,
-0x0020ec,1,
-0x0020e8,1,
-0x0020e4,1,
-0x0020e0,1,
-0x0020dc,1,
-0x0020d8,1,
-0x0020d4,1,
-0x0020d0,1,
-0x0020cc,1,
-0x0020c8,1,
-0x0020c4,1,
-0x0020c0,1,
-0x0020bc,1,
-0x0020b8,1,
-0x0020b4,1,
-0x0020b0,1,
-0x0020ac,1,
-0x0020a8,1,
-0x0020a4,1,
-0x0020a0,1,
-0x00209c,1,
-0x002098,1,
-0x002094,1,
-0x002090,1,
-0x00208c,1,
-0x002088,1,
-0x002084,1,
-0x002080,1,
-0x00207c,1,
-0x002078,1,
-0x002074,1,
-0x002070,1,
-0x00206c,1,
-0x002068,1,
-0x002064,1,
-0x002060,1,
-0x00205c,1,
-0x002058,1,
-0x002054,1,
-0x002050,1,
-0x00204c,1,
-0x002048,1,
-0x002044,1,
-0x002040,1,
-0x00203c,1,
-0x002038,1,
-0x002034,1,
-0x002030,1,
-0x00202c,1,
-0x002028,1,
-0x002024,1,
-0x002020,1,
-0x00201c,1,
-0x002018,1,
-0x002014,1,
-0x002010,1,
-0x00200c,1,
-0x002008,1,
-0x002004,1,
-0x002000,1,
-0x001ffc,1,
-0x001ff8,1,
-0x001ff4,1,
-0x001fdc,1,
-0x001fd4,1,
-0x001fd0,1,
-0x001fcc,1,
-0x001fc8,1,
-0x001fc4,1,
-0x001fc0,1,
-0x001fbc,1,
-0x001fb8,1,
-0x001fb4,1,
-0x001fb0,1,
-0x001fac,1,
-0x001fa8,1,
-0x001fa0,1,
-0x001f9c,1,
-0x001f98,1,
-0x001f94,1,
-0x001f90,1,
-0x001f8c,1,
-0x001f88,1,
-0x001f84,1,
-0x001f80,1,
-0x001e94,1,
-0x001e90,1,
-0x001e80,1,
-0x001e30,1,
-0x001e2c,1,
-0x001e28,1,
-0x001e24,1,
-0x001e20,1,
-0x001e1c,1,
-0x001e18,1,
-0x001e14,1,
-0x001e10,1,
-0x001e0c,1,
-0x001e04,1,
-0x001e00,1,
-0x001dfc,1,
-0x001df8,1,
-0x001df4,1,
-0x001dec,1,
-0x001de4,1,
-0x001de0,1,
-0x001ddc,1,
-0x001dd8,1,
-0x001dd4,1,
-0x001dcc,1,
-0x001dc8,1,
-0x001dc0,1,
-0x001db8,1,
-0x001db4,1,
-0x001db0,1,
-0x001da8,1,
-0x001da4,1,
-0x001da0,1,
-0x001d80,1,
-0x001d7c,1,
-0x001d78,1,
-0x001d74,1,
-0x001d70,1,
-0x001d6c,1,
-0x001d68,1,
-0x001d64,1,
-0x001d60,1,
-0x001d5c,1,
-0x001d58,1,
-0x001d54,1,
-0x001d50,1,
-0x001d4c,1,
-0x001d48,1,
-0x001d44,1,
-0x001d40,1,
-0x001d34,1,
-0x001d30,1,
-0x001d20,1,
-0x001d14,1,
-0x001d10,1,
-0x001d00,1,
-0x001cec,1,
-0x001ce8,1,
-0x001ce4,1,
-0x001ce0,1,
-0x001cdc,1,
-0x001cd8,1,
-0x001cd4,1,
-0x001cd0,1,
-0x001ccc,1,
-0x001cc8,1,
-0x001c90,1,
-0x001c8c,1,
-0x001c88,1,
-0x001c84,1,
-0x001c80,1,
-0x001c68,1,
-0x001c50,1,
-0x001c4c,1,
-0x001c24,1,
-0x001c20,1,
-0x001c1c,1,
-0x001c18,1,
-0x001c14,1,
-0x001c10,1,
-0x001c0c,1,
-0x001c08,1,
-0x001c04,1,
-0x001c00,1,
-0x001b34,1,
-0x001b30,1,
-0x001b20,1,
-0x001b14,1,
-0x001b10,1,
-0x001b00,1,
-0x001978,1,
-0x001974,1,
-0x001970,1,
-0x00196c,1,
-0x001968,1,
-0x001964,1,
-0x001960,1,
-0x00195c,1,
-0x001958,1,
-0x001954,1,
-0x001950,1,
-0x00194c,1,
-0x001948,1,
-0x001944,1,
-0x001940,1,
-0x00193c,1,
-0x001938,1,
-0x001934,1,
-0x001930,1,
-0x00192c,1,
-0x001928,1,
-0x001924,1,
-0x001920,1,
-0x00191c,1,
-0x001918,1,
-0x001914,1,
-0x001910,1,
-0x00190c,1,
-0x001908,1,
-0x001904,1,
-0x001900,1,
-0x0018fc,1,
-0x0018f8,1,
-0x0018f4,1,
-0x0018f0,1,
-0x0018ec,1,
-0x0018e8,1,
-0x0018e4,1,
-0x0018e0,1,
-0x0018dc,1,
-0x0018d8,1,
-0x0018d4,1,
-0x0018d0,1,
-0x0018cc,1,
-0x0018c8,1,
-0x0018c4,1,
-0x0018c0,1,
-0x0018bc,1,
-0x0018b8,1,
-0x0018b4,1,
-0x0018b0,1,
-0x0018ac,1,
-0x0018a8,1,
-0x0018a4,1,
-0x0018a0,1,
-0x00189c,1,
-0x001898,1,
-0x001894,1,
-0x001890,1,
-0x00188c,1,
-0x001888,1,
-0x001884,1,
-0x001880,1,
-0x00187c,1,
-0x001878,1,
-0x001874,1,
-0x001870,1,
-0x00186c,1,
-0x001868,1,
-0x001864,1,
-0x001860,1,
-0x00185c,1,
-0x001858,1,
-0x001854,1,
-0x001850,1,
-0x00184c,1,
-0x001848,1,
-0x001844,1,
-0x001840,1,
-0x00183c,1,
-0x001838,1,
-0x001834,1,
-0x001830,1,
-0x00182c,1,
-0x001828,1,
-0x001824,1,
-0x001820,1,
-0x00181c,1,
-0x001818,1,
-0x001814,1,
-0x001810,1,
-0x00180c,1,
-0x001808,1,
-0x001804,1,
-0x001800,1,
-0x0017fc,1,
-0x0017f8,1,
-0x0017f4,1,
-0x0017dc,1,
-0x0017d4,1,
-0x0017d0,1,
-0x0017cc,1,
-0x0017c8,1,
-0x0017c4,1,
-0x0017c0,1,
-0x0017bc,1,
-0x0017b8,1,
-0x0017b4,1,
-0x0017b0,1,
-0x0017ac,1,
-0x0017a8,1,
-0x0017a0,1,
-0x00179c,1,
-0x001798,1,
-0x001794,1,
-0x001790,1,
-0x00178c,1,
-0x001788,1,
-0x001784,1,
-0x001780,1,
-0x001694,1,
-0x001690,1,
-0x001680,1,
-0x001630,1,
-0x00162c,1,
-0x001628,1,
-0x001624,1,
-0x001620,1,
-0x00161c,1,
-0x001618,1,
-0x001614,1,
-0x001610,1,
-0x00160c,1,
-0x001604,1,
-0x001600,1,
-0x0015fc,1,
-0x0015f8,1,
-0x0015f4,1,
-0x0015ec,1,
-0x0015e4,1,
-0x0015e0,1,
-0x0015dc,1,
-0x0015d8,1,
-0x0015d4,1,
-0x0015cc,1,
-0x0015c8,1,
-0x0015c0,1,
-0x0015b8,1,
-0x0015b4,1,
-0x0015b0,1,
-0x0015a8,1,
-0x0015a4,1,
-0x0015a0,1,
-0x001580,1,
-0x00157c,1,
-0x001578,1,
-0x001574,1,
-0x001570,1,
-0x00156c,1,
-0x001568,1,
-0x001564,1,
-0x001560,1,
-0x00155c,1,
-0x001558,1,
-0x001554,1,
-0x001550,1,
-0x00154c,1,
-0x001548,1,
-0x001544,1,
-0x001540,1,
-0x001534,1,
-0x001530,1,
-0x001520,1,
-0x001514,1,
-0x001510,1,
-0x001500,1,
-0x0014ec,1,
-0x0014e8,1,
-0x0014e4,1,
-0x0014e0,1,
-0x0014dc,1,
-0x0014d8,1,
-0x0014d4,1,
-0x0014d0,1,
-0x0014cc,1,
-0x0014c8,1,
-0x001490,1,
-0x00148c,1,
-0x001488,1,
-0x001484,1,
-0x001480,1,
-0x001468,1,
-0x001450,1,
-0x00144c,1,
-0x001424,1,
-0x001420,1,
-0x00141c,1,
-0x001418,1,
-0x001414,1,
-0x001410,1,
-0x00140c,1,
-0x001408,1,
-0x001404,1,
-0x001400,1,
-0x001334,1,
-0x001330,1,
-0x001320,1,
-0x001314,1,
-0x001310,1,
-0x001300,1,
-0x001178,1,
-0x001174,1,
-0x001170,1,
-0x00116c,1,
-0x001168,1,
-0x001164,1,
-0x001160,1,
-0x00115c,1,
-0x001158,1,
-0x001154,1,
-0x001150,1,
-0x00114c,1,
-0x001148,1,
-0x001144,1,
-0x001140,1,
-0x00113c,1,
-0x001138,1,
-0x001134,1,
-0x001130,1,
-0x00112c,1,
-0x001128,1,
-0x001124,1,
-0x001120,1,
-0x00111c,1,
-0x001118,1,
-0x001114,1,
-0x001110,1,
-0x00110c,1,
-0x001108,1,
-0x001104,1,
-0x001100,1,
-0x0010fc,1,
-0x0010f8,1,
-0x0010f4,1,
-0x0010f0,1,
-0x0010ec,1,
-0x0010e8,1,
-0x0010e4,1,
-0x0010e0,1,
-0x0010dc,1,
-0x0010d8,1,
-0x0010d4,1,
-0x0010d0,1,
-0x0010cc,1,
-0x0010c8,1,
-0x0010c4,1,
-0x0010c0,1,
-0x0010bc,1,
-0x0010b8,1,
-0x0010b4,1,
-0x0010b0,1,
-0x0010ac,1,
-0x0010a8,1,
-0x0010a4,1,
-0x0010a0,1,
-0x00109c,1,
-0x001098,1,
-0x001094,1,
-0x001090,1,
-0x00108c,1,
-0x001088,1,
-0x001084,1,
-0x001080,1,
-0x00107c,1,
-0x001078,1,
-0x001074,1,
-0x001070,1,
-0x00106c,1,
-0x001068,1,
-0x001064,1,
-0x001060,1,
-0x00105c,1,
-0x001058,1,
-0x001054,1,
-0x001050,1,
-0x00104c,1,
-0x001048,1,
-0x001044,1,
-0x001040,1,
-0x00103c,1,
-0x001038,1,
-0x001034,1,
-0x001030,1,
-0x00102c,1,
-0x001028,1,
-0x001024,1,
-0x001020,1,
-0x00101c,1,
-0x001018,1,
-0x001014,1,
-0x001010,1,
-0x00100c,1,
-0x001008,1,
-0x001004,1,
-0x001000,1,
-0x000ffc,1,
-0x000ff8,1,
-0x000ff4,1,
-0x000fdc,1,
-0x000fd4,1,
-0x000fd0,1,
-0x000fcc,1,
-0x000fc8,1,
-0x000fc4,1,
-0x000fc0,1,
-0x000fbc,1,
-0x000fb8,1,
-0x000fb4,1,
-0x000fb0,1,
-0x000fac,1,
-0x000fa8,1,
-0x000fa0,1,
-0x000f9c,1,
-0x000f98,1,
-0x000f94,1,
-0x000f90,1,
-0x000f8c,1,
-0x000f88,1,
-0x000f84,1,
-0x000f80,1,
-0x000e94,1,
-0x000e90,1,
-0x000e80,1,
-0x000e30,1,
-0x000e2c,1,
-0x000e28,1,
-0x000e24,1,
-0x000e20,1,
-0x000e1c,1,
-0x000e18,1,
-0x000e14,1,
-0x000e10,1,
-0x000e0c,1,
-0x000e04,1,
-0x000e00,1,
-0x000dfc,1,
-0x000df8,1,
-0x000df4,1,
-0x000dec,1,
-0x000de4,1,
-0x000de0,1,
-0x000ddc,1,
-0x000dd8,1,
-0x000dd4,1,
-0x000dcc,1,
-0x000dc8,1,
-0x000dc0,1,
-0x000db8,1,
-0x000db4,1,
-0x000db0,1,
-0x000da8,1,
-0x000da4,1,
-0x000da0,1,
-0x000d80,1,
-0x000d7c,1,
-0x000d78,1,
-0x000d74,1,
-0x000d70,1,
-0x000d6c,1,
-0x000d68,1,
-0x000d64,1,
-0x000d60,1,
-0x000d5c,1,
-0x000d58,1,
-0x000d54,1,
-0x000d50,1,
-0x000d4c,1,
-0x000d48,1,
-0x000d44,1,
-0x000d40,1,
-0x000d34,1,
-0x000d30,1,
-0x000d20,1,
-0x000d14,1,
-0x000d10,1,
-0x000d00,1,
-0x000cec,1,
-0x000ce8,1,
-0x000ce4,1,
-0x000ce0,1,
-0x000cdc,1,
-0x000cd8,1,
-0x000cd4,1,
-0x000cd0,1,
-0x000ccc,1,
-0x000cc8,1,
-0x000c90,1,
-0x000c8c,1,
-0x000c88,1,
-0x000c84,1,
-0x000c80,1,
-0x000c68,1,
-0x000c50,1,
-0x000c4c,1,
-0x000c24,1,
-0x000c20,1,
-0x000c1c,1,
-0x000c18,1,
-0x000c14,1,
-0x000c10,1,
-0x000c0c,1,
-0x000c08,1,
-0x000c04,1,
-0x000c00,1,
-0x000b34,1,
-0x000b30,1,
-0x000b20,1,
-0x000b14,1,
-0x000b10,1,
-0x000b00,1,
-0x000978,1,
-0x000974,1,
-0x000970,1,
-0x00096c,1,
-0x000968,1,
-0x000964,1,
-0x000960,1,
-0x00095c,1,
-0x000958,1,
-0x000954,1,
-0x000950,1,
-0x00094c,1,
-0x000948,1,
-0x000944,1,
-0x000940,1,
-0x00093c,1,
-0x000938,1,
-0x000934,1,
-0x000930,1,
-0x00092c,1,
-0x000928,1,
-0x000924,1,
-0x000920,1,
-0x00091c,1,
-0x000918,1,
-0x000914,1,
-0x000910,1,
-0x00090c,1,
-0x000908,1,
-0x000904,1,
-0x000900,1,
-0x0008fc,1,
-0x0008f8,1,
-0x0008f4,1,
-0x0008f0,1,
-0x0008ec,1,
-0x0008e8,1,
-0x0008e4,1,
-0x0008e0,1,
-0x0008dc,1,
-0x0008d8,1,
-0x0008d4,1,
-0x0008d0,1,
-0x0008cc,1,
-0x0008c8,1,
-0x0008c4,1,
-0x0008c0,1,
-0x0008bc,1,
-0x0008b8,1,
-0x0008b4,1,
-0x0008b0,1,
-0x0008ac,1,
-0x0008a8,1,
-0x0008a4,1,
-0x0008a0,1,
-0x00089c,1,
-0x000898,1,
-0x000894,1,
-0x000890,1,
-0x00088c,1,
-0x000888,1,
-0x000884,1,
-0x000880,1,
-0x00087c,1,
-0x000878,1,
-0x000874,1,
-0x000870,1,
-0x00086c,1,
-0x000868,1,
-0x000864,1,
-0x000860,1,
-0x00085c,1,
-0x000858,1,
-0x000854,1,
-0x000850,1,
-0x00084c,1,
-0x000848,1,
-0x000844,1,
-0x000840,1,
-0x00083c,1,
-0x000838,1,
-0x000834,1,
-0x000830,1,
-0x00082c,1,
-0x000828,1,
-0x000824,1,
-0x000820,1,
-0x00081c,1,
-0x000818,1,
-0x000814,1,
-0x000810,1,
-0x00080c,1,
-0x000808,1,
-0x000804,1,
-0x000800,1,
-0x0007fc,1,
-0x0007f8,1,
-0x0007f4,1,
-0x0007dc,1,
-0x0007d4,1,
-0x0007d0,1,
-0x0007cc,1,
-0x0007c8,1,
-0x0007c4,1,
-0x0007c0,1,
-0x0007bc,1,
-0x0007b8,1,
-0x0007b4,1,
-0x0007b0,1,
-0x0007ac,1,
-0x0007a8,1,
-0x0007a0,1,
-0x00079c,1,
-0x000798,1,
-0x000794,1,
-0x000790,1,
-0x00078c,1,
-0x000788,1,
-0x000784,1,
-0x000780,1,
-0x000694,1,
-0x000690,1,
-0x000680,1,
-0x000630,1,
-0x00062c,1,
-0x000628,1,
-0x000624,1,
-0x000620,1,
-0x00061c,1,
-0x000618,1,
-0x000614,1,
-0x000610,1,
-0x00060c,1,
-0x000604,1,
-0x000600,1,
-0x0005fc,1,
-0x0005f8,1,
-0x0005f4,1,
-0x0005ec,1,
-0x0005e4,1,
-0x0005e0,1,
-0x0005dc,1,
-0x0005d8,1,
-0x0005d4,1,
-0x0005cc,1,
-0x0005c8,1,
-0x0005c0,1,
-0x0005b8,1,
-0x0005b4,1,
-0x0005b0,1,
-0x0005a8,1,
-0x0005a4,1,
-0x0005a0,1,
-0x000580,1,
-0x00057c,1,
-0x000578,1,
-0x000574,1,
-0x000570,1,
-0x00056c,1,
-0x000568,1,
-0x000564,1,
-0x000560,1,
-0x00055c,1,
-0x000558,1,
-0x000554,1,
-0x000550,1,
-0x00054c,1,
-0x000548,1,
-0x000544,1,
-0x000540,1,
-0x000534,1,
-0x000530,1,
-0x000520,1,
-0x000514,1,
-0x000510,1,
-0x000500,1,
-0x0004ec,1,
-0x0004e8,1,
-0x0004e4,1,
-0x0004e0,1,
-0x0004dc,1,
-0x0004d8,1,
-0x0004d4,1,
-0x0004d0,1,
-0x0004cc,1,
-0x0004c8,1,
-0x000490,1,
-0x00048c,1,
-0x000488,1,
-0x000484,1,
-0x000480,1,
-0x000468,1,
-0x000450,1,
-0x00044c,1,
-0x000424,1,
-0x000420,1,
-0x00041c,1,
-0x000418,1,
-0x000414,1,
-0x000410,1,
-0x00040c,1,
-0x000408,1,
-0x000404,1,
-0x000400,1,
-0x000334,1,
-0x000330,1,
-0x000320,1,
-0x000314,1,
-0x000310,1,
-0x000300,1,
-0x000178,1,
-0x000174,1,
-0x000170,1,
-0x00016c,1,
-0x000168,1,
-0x000164,1,
-0x000160,1,
-0x00015c,1,
-0x000158,1,
-0x000154,1,
-0x000150,1,
-0x00014c,1,
-0x000148,1,
-0x000144,1,
-0x000140,1,
-0x00013c,1,
-0x000138,1,
-0x000134,1,
-0x000130,1,
-0x00012c,1,
-0x000128,1,
-0x000124,1,
-0x000120,1,
-0x00011c,1,
-0x000118,1,
-0x000114,1,
-0x000110,1,
-0x00010c,1,
-0x000108,1,
-0x000104,1,
-0x000100,1,
-0x0000fc,1,
-0x0000f8,1,
-0x0000f4,1,
-0x0000f0,1,
-0x0000ec,1,
-0x0000e8,1,
-0x0000e4,1,
-0x0000e0,1,
-0x0000dc,1,
-0x0000d8,1,
-0x0000d4,1,
-0x0000d0,1,
-0x0000cc,1,
-0x0000c8,1,
-0x0000c4,1,
-0x0000c0,1,
-0x0000bc,1,
-0x0000b8,1,
-0x0000b4,1,
-0x0000b0,1,
-0x0000ac,1,
-0x0000a8,1,
-0x0000a4,1,
-0x0000a0,1,
-0x00009c,1,
-0x000098,1,
-0x000094,1,
-0x000090,1,
-0x00008c,1,
-0x000088,1,
-0x000084,1,
-0x000080,1,
-0x00007c,1,
-0x000078,1,
-0x000074,1,
-0x000070,1,
-0x00006c,1,
-0x000068,1,
-0x000064,1,
-0x000060,1,
-0x00005c,1,
-0x000058,1,
-0x000054,1,
-0x000050,1,
-0x00004c,1,
-0x000048,1,
-0x000044,1,
-0x000040,1,
-0x00003c,1,
-0x000038,1,
-0x000034,1,
-0x000030,1,
-0x00002c,1,
-0x000028,1,
-0x000024,1,
-0x000020,1,
-0x00001c,1,
-0x000018,1,
-0x000014,1,
-0x000010,1,
-0x00000c,1,
-0x000008,1,
-0x000004,1,
-0x000000,1,
diff --git a/mstdump/mstdump_dbs/Makefile.am b/mstdump/mstdump_dbs/Makefile.am
deleted file mode 100644 (file)
index 9e5c013..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-mstregdumpdir = $(datadir)/@PACKAGE@
-dist_mstregdump_DATA = $(srcdir)/*.csv
-
diff --git a/mstdump/mstdump_dbs/Spectrum.csv b/mstdump/mstdump_dbs/Spectrum.csv
deleted file mode 100644 (file)
index 83f58fb..0000000
+++ /dev/null
@@ -1,22368 +0,0 @@
-#Addr, Size, Enable addr
-0x000800,1,
-0x000808,14,
-0x000880,1,
-0x000888,16,
-0x000900,11,
-0x000940,3,
-0x000950,12,
-0x000984,13,
-0x0009c0,8,
-0x000a00,1,
-0x000a18,8,
-0x000a3c,9,
-0x000a84,1,
-0x000a90,4,
-0x000aa4,1,
-0x000aac,7,
-0x000ae0,2,
-0x000aec,2,
-0x000b00,8,
-0x000b40,6,
-0x000b60,3,
-0x000b80,8,
-0x000bb0,21,
-0x000c08,14,
-0x000c80,1,
-0x000c88,16,
-0x000d00,11,
-0x000d40,3,
-0x000d50,12,
-0x000d84,13,
-0x000dc0,8,
-0x000e00,1,
-0x000e18,8,
-0x000e3c,9,
-0x000e84,1,
-0x000e90,4,
-0x000ea4,1,
-0x000eac,7,
-0x000ee0,2,
-0x000eec,2,
-0x000f00,8,
-0x000f40,6,
-0x000f60,3,
-0x000f80,8,
-0x000fb0,21,
-0x001008,14,
-0x001080,1,
-0x001088,16,
-0x001100,11,
-0x001140,3,
-0x001150,12,
-0x001184,13,
-0x0011c0,8,
-0x001200,1,
-0x001218,8,
-0x00123c,9,
-0x001284,1,
-0x001290,4,
-0x0012a4,1,
-0x0012ac,7,
-0x0012e0,2,
-0x0012ec,2,
-0x001300,8,
-0x001340,6,
-0x001360,3,
-0x001380,8,
-0x0013b0,21,
-0x001408,14,
-0x001480,1,
-0x001488,16,
-0x001500,11,
-0x001540,3,
-0x001550,12,
-0x001584,13,
-0x0015c0,8,
-0x001600,1,
-0x001618,8,
-0x00163c,9,
-0x001684,1,
-0x001690,4,
-0x0016a4,1,
-0x0016ac,7,
-0x0016e0,2,
-0x0016ec,2,
-0x001700,8,
-0x001740,6,
-0x001760,3,
-0x001780,8,
-0x0017b0,21,
-0x001808,14,
-0x001880,1,
-0x001888,16,
-0x001900,11,
-0x001940,3,
-0x001950,12,
-0x001984,13,
-0x0019c0,8,
-0x001a00,1,
-0x001a18,8,
-0x001a3c,9,
-0x001a84,1,
-0x001a90,4,
-0x001aa4,1,
-0x001aac,7,
-0x001ae0,2,
-0x001aec,2,
-0x001b00,8,
-0x001b40,6,
-0x001b60,3,
-0x001b80,8,
-0x001bb0,21,
-0x001c08,14,
-0x001c80,1,
-0x001c88,16,
-0x001d00,11,
-0x001d40,3,
-0x001d50,12,
-0x001d84,13,
-0x001dc0,8,
-0x001e00,1,
-0x001e18,8,
-0x001e3c,9,
-0x001e84,1,
-0x001e90,4,
-0x001ea4,1,
-0x001eac,7,
-0x001ee0,2,
-0x001eec,2,
-0x001f00,8,
-0x001f40,6,
-0x001f60,3,
-0x001f80,8,
-0x001fb0,21,
-0x002008,14,
-0x002080,1,
-0x002088,16,
-0x002100,11,
-0x002140,3,
-0x002150,12,
-0x002184,13,
-0x0021c0,8,
-0x002200,1,
-0x002218,8,
-0x00223c,9,
-0x002284,1,
-0x002290,4,
-0x0022a4,1,
-0x0022ac,7,
-0x0022e0,2,
-0x0022ec,2,
-0x002300,8,
-0x002340,6,
-0x002360,3,
-0x002380,8,
-0x0023b0,21,
-0x002408,14,
-0x002480,1,
-0x002488,16,
-0x002500,11,
-0x002540,3,
-0x002550,12,
-0x002584,13,
-0x0025c0,8,
-0x002600,1,
-0x002618,8,
-0x00263c,9,
-0x002684,1,
-0x002690,4,
-0x0026a4,1,
-0x0026ac,7,
-0x0026e0,2,
-0x0026ec,2,
-0x002700,8,
-0x002740,6,
-0x002760,3,
-0x002780,8,
-0x0027b0,21,
-0x002808,14,
-0x002880,1,
-0x002888,16,
-0x002900,11,
-0x002940,3,
-0x002950,12,
-0x002984,13,
-0x0029c0,8,
-0x002a00,1,
-0x002a18,8,
-0x002a3c,9,
-0x002a84,1,
-0x002a90,4,
-0x002aa4,1,
-0x002aac,7,
-0x002ae0,2,
-0x002aec,2,
-0x002b00,8,
-0x002b40,6,
-0x002b60,3,
-0x002b80,8,
-0x002bb0,21,
-0x002c08,14,
-0x002c80,1,
-0x002c88,16,
-0x002d00,11,
-0x002d40,3,
-0x002d50,12,
-0x002d84,13,
-0x002dc0,8,
-0x002e00,1,
-0x002e18,8,
-0x002e3c,9,
-0x002e84,1,
-0x002e90,4,
-0x002ea4,1,
-0x002eac,7,
-0x002ee0,2,
-0x002eec,2,
-0x002f00,8,
-0x002f40,6,
-0x002f60,3,
-0x002f80,8,
-0x002fb0,21,
-0x003008,14,
-0x003080,1,
-0x003088,16,
-0x003100,11,
-0x003140,3,
-0x003150,12,
-0x003184,13,
-0x0031c0,8,
-0x003200,1,
-0x003218,8,
-0x00323c,9,
-0x003284,1,
-0x003290,4,
-0x0032a4,1,
-0x0032ac,7,
-0x0032e0,2,
-0x0032ec,2,
-0x003300,8,
-0x003340,6,
-0x003360,3,
-0x003380,8,
-0x0033b0,21,
-0x003408,14,
-0x003480,1,
-0x003488,16,
-0x003500,11,
-0x003540,3,
-0x003550,12,
-0x003584,13,
-0x0035c0,8,
-0x003600,1,
-0x003618,8,
-0x00363c,9,
-0x003684,1,
-0x003690,4,
-0x0036a4,1,
-0x0036ac,7,
-0x0036e0,2,
-0x0036ec,2,
-0x003700,8,
-0x003740,6,
-0x003760,3,
-0x003780,8,
-0x0037b0,21,
-0x003808,14,
-0x003880,1,
-0x003888,16,
-0x003900,11,
-0x003940,3,
-0x003950,12,
-0x003984,13,
-0x0039c0,8,
-0x003a00,1,
-0x003a18,8,
-0x003a3c,9,
-0x003a84,1,
-0x003a90,4,
-0x003aa4,1,
-0x003aac,7,
-0x003ae0,2,
-0x003aec,2,
-0x003b00,8,
-0x003b40,6,
-0x003b60,3,
-0x003b80,8,
-0x003bb0,21,
-0x003c08,14,
-0x003c80,1,
-0x003c88,16,
-0x003d00,11,
-0x003d40,3,
-0x003d50,12,
-0x003d84,13,
-0x003dc0,8,
-0x003e00,1,
-0x003e18,8,
-0x003e3c,9,
-0x003e84,1,
-0x003e90,4,
-0x003ea4,1,
-0x003eac,7,
-0x003ee0,2,
-0x003eec,2,
-0x003f00,8,
-0x003f40,6,
-0x003f60,3,
-0x003f80,8,
-0x003fb0,21,
-0x004008,14,
-0x004080,1,
-0x004088,16,
-0x004100,11,
-0x004140,3,
-0x004150,12,
-0x004184,13,
-0x0041c0,8,
-0x004200,1,
-0x004218,8,
-0x00423c,9,
-0x004284,1,
-0x004290,4,
-0x0042a4,1,
-0x0042ac,7,
-0x0042e0,2,
-0x0042ec,2,
-0x004300,8,
-0x004340,6,
-0x004360,3,
-0x004380,8,
-0x0043b0,21,
-0x004408,14,
-0x004480,1,
-0x004488,16,
-0x004500,11,
-0x004540,3,
-0x004550,12,
-0x004584,13,
-0x0045c0,8,
-0x004600,1,
-0x004618,8,
-0x00463c,9,
-0x004684,1,
-0x004690,4,
-0x0046a4,1,
-0x0046ac,7,
-0x0046e0,2,
-0x0046ec,2,
-0x004700,8,
-0x004740,6,
-0x004760,3,
-0x004780,8,
-0x0047b0,21,
-0x004808,14,
-0x004880,1,
-0x004888,16,
-0x004900,11,
-0x004940,3,
-0x004950,12,
-0x004984,13,
-0x0049c0,8,
-0x004a00,1,
-0x004a18,8,
-0x004a3c,9,
-0x004a84,1,
-0x004a90,4,
-0x004aa4,1,
-0x004aac,7,
-0x004ae0,2,
-0x004aec,2,
-0x004b00,8,
-0x004b40,6,
-0x004b60,3,
-0x004b80,8,
-0x004bb0,21,
-0x004c08,14,
-0x004c80,1,
-0x004c88,16,
-0x004d00,11,
-0x004d40,3,
-0x004d50,12,
-0x004d84,13,
-0x004dc0,8,
-0x004e00,1,
-0x004e18,8,
-0x004e3c,9,
-0x004e84,1,
-0x004e90,4,
-0x004ea4,1,
-0x004eac,7,
-0x004ee0,2,
-0x004eec,2,
-0x004f00,8,
-0x004f40,6,
-0x004f60,3,
-0x004f80,8,
-0x004fb0,21,
-0x005008,14,
-0x005080,1,
-0x005088,16,
-0x005100,11,
-0x005140,3,
-0x005150,12,
-0x005184,13,
-0x0051c0,8,
-0x005200,1,
-0x005218,8,
-0x00523c,9,
-0x005284,1,
-0x005290,4,
-0x0052a4,1,
-0x0052ac,7,
-0x0052e0,2,
-0x0052ec,2,
-0x005300,8,
-0x005340,6,
-0x005360,3,
-0x005380,8,
-0x0053b0,21,
-0x005408,14,
-0x005480,1,
-0x005488,16,
-0x005500,11,
-0x005540,3,
-0x005550,12,
-0x005584,13,
-0x0055c0,8,
-0x005600,1,
-0x005618,8,
-0x00563c,9,
-0x005684,1,
-0x005690,4,
-0x0056a4,1,
-0x0056ac,7,
-0x0056e0,2,
-0x0056ec,2,
-0x005700,8,
-0x005740,6,
-0x005760,3,
-0x005780,8,
-0x0057b0,21,
-0x005808,14,
-0x005880,1,
-0x005888,16,
-0x005900,11,
-0x005940,3,
-0x005950,12,
-0x005984,13,
-0x0059c0,8,
-0x005a00,1,
-0x005a18,8,
-0x005a3c,9,
-0x005a84,1,
-0x005a90,4,
-0x005aa4,1,
-0x005aac,7,
-0x005ae0,2,
-0x005aec,2,
-0x005b00,8,
-0x005b40,6,
-0x005b60,3,
-0x005b80,8,
-0x005bb0,21,
-0x005c08,14,
-0x005c80,1,
-0x005c88,16,
-0x005d00,11,
-0x005d40,3,
-0x005d50,12,
-0x005d84,13,
-0x005dc0,8,
-0x005e00,1,
-0x005e18,8,
-0x005e3c,9,
-0x005e84,1,
-0x005e90,4,
-0x005ea4,1,
-0x005eac,7,
-0x005ee0,2,
-0x005eec,2,
-0x005f00,8,
-0x005f40,6,
-0x005f60,3,
-0x005f80,8,
-0x005fb0,21,
-0x006008,14,
-0x006080,1,
-0x006088,16,
-0x006100,11,
-0x006140,3,
-0x006150,12,
-0x006184,13,
-0x0061c0,8,
-0x006200,1,
-0x006218,8,
-0x00623c,9,
-0x006284,1,
-0x006290,4,
-0x0062a4,1,
-0x0062ac,7,
-0x0062e0,2,
-0x0062ec,2,
-0x006300,8,
-0x006340,6,
-0x006360,3,
-0x006380,8,
-0x0063b0,21,
-0x006408,14,
-0x006480,1,
-0x006488,16,
-0x006500,11,
-0x006540,3,
-0x006550,12,
-0x006584,13,
-0x0065c0,8,
-0x006600,1,
-0x006618,8,
-0x00663c,9,
-0x006684,1,
-0x006690,4,
-0x0066a4,1,
-0x0066ac,7,
-0x0066e0,2,
-0x0066ec,2,
-0x006700,8,
-0x006740,6,
-0x006760,3,
-0x006780,8,
-0x0067b0,21,
-0x006808,14,
-0x006880,1,
-0x006888,16,
-0x006900,11,
-0x006940,3,
-0x006950,12,
-0x006984,13,
-0x0069c0,8,
-0x006a00,1,
-0x006a18,8,
-0x006a3c,9,
-0x006a84,1,
-0x006a90,4,
-0x006aa4,1,
-0x006aac,7,
-0x006ae0,2,
-0x006aec,2,
-0x006b00,8,
-0x006b40,6,
-0x006b60,3,
-0x006b80,8,
-0x006bb0,21,
-0x006c08,14,
-0x006c80,1,
-0x006c88,16,
-0x006d00,11,
-0x006d40,3,
-0x006d50,12,
-0x006d84,13,
-0x006dc0,8,
-0x006e00,1,
-0x006e18,8,
-0x006e3c,9,
-0x006e84,1,
-0x006e90,4,
-0x006ea4,1,
-0x006eac,7,
-0x006ee0,2,
-0x006eec,2,
-0x006f00,8,
-0x006f40,6,
-0x006f60,3,
-0x006f80,8,
-0x006fb0,21,
-0x007008,14,
-0x007080,1,
-0x007088,16,
-0x007100,11,
-0x007140,3,
-0x007150,12,
-0x007184,13,
-0x0071c0,8,
-0x007200,1,
-0x007218,8,
-0x00723c,9,
-0x007284,1,
-0x007290,4,
-0x0072a4,1,
-0x0072ac,7,
-0x0072e0,2,
-0x0072ec,2,
-0x007300,8,
-0x007340,6,
-0x007360,3,
-0x007380,8,
-0x0073b0,21,
-0x007408,14,
-0x007480,1,
-0x007488,16,
-0x007500,11,
-0x007540,3,
-0x007550,12,
-0x007584,13,
-0x0075c0,8,
-0x007600,1,
-0x007618,8,
-0x00763c,9,
-0x007684,1,
-0x007690,4,
-0x0076a4,1,
-0x0076ac,7,
-0x0076e0,2,
-0x0076ec,2,
-0x007700,8,
-0x007740,6,
-0x007760,3,
-0x007780,8,
-0x0077b0,21,
-0x007808,14,
-0x007880,1,
-0x007888,16,
-0x007900,11,
-0x007940,3,
-0x007950,12,
-0x007984,13,
-0x0079c0,8,
-0x007a00,1,
-0x007a18,8,
-0x007a3c,9,
-0x007a84,1,
-0x007a90,4,
-0x007aa4,1,
-0x007aac,7,
-0x007ae0,2,
-0x007aec,2,
-0x007b00,8,
-0x007b40,6,
-0x007b60,3,
-0x007b80,8,
-0x007bb0,21,
-0x007c08,14,
-0x007c80,1,
-0x007c88,16,
-0x007d00,11,
-0x007d40,3,
-0x007d50,12,
-0x007d84,13,
-0x007dc0,8,
-0x007e00,1,
-0x007e18,8,
-0x007e3c,9,
-0x007e84,1,
-0x007e90,4,
-0x007ea4,1,
-0x007eac,7,
-0x007ee0,2,
-0x007eec,2,
-0x007f00,8,
-0x007f40,6,
-0x007f60,3,
-0x007f80,8,
-0x007fb0,21,
-0x008008,14,
-0x008080,1,
-0x008088,16,
-0x008100,11,
-0x008140,3,
-0x008150,12,
-0x008184,13,
-0x0081c0,8,
-0x008200,1,
-0x008218,8,
-0x00823c,9,
-0x008284,1,
-0x008290,4,
-0x0082a4,1,
-0x0082ac,7,
-0x0082e0,2,
-0x0082ec,2,
-0x008300,8,
-0x008340,6,
-0x008360,3,
-0x008380,8,
-0x0083b0,21,
-0x008408,14,
-0x008480,1,
-0x008488,16,
-0x008500,11,
-0x008540,3,
-0x008550,12,
-0x008584,13,
-0x0085c0,8,
-0x008600,1,
-0x008618,8,
-0x00863c,9,
-0x008684,1,
-0x008690,4,
-0x0086a4,1,
-0x0086ac,7,
-0x0086e0,2,
-0x0086ec,2,
-0x008700,8,
-0x008740,6,
-0x008760,3,
-0x008780,8,
-0x0087b0,21,
-0x008808,14,
-0x008880,1,
-0x008888,16,
-0x008900,11,
-0x008940,3,
-0x008950,12,
-0x008984,13,
-0x0089c0,8,
-0x008a00,1,
-0x008a18,8,
-0x008a3c,9,
-0x008a84,1,
-0x008a90,4,
-0x008aa4,1,
-0x008aac,7,
-0x008ae0,2,
-0x008aec,2,
-0x008b00,8,
-0x008b40,6,
-0x008b60,3,
-0x008b80,8,
-0x008bb0,21,
-0x008c08,14,
-0x008c80,1,
-0x008c88,16,
-0x008d00,11,
-0x008d40,3,
-0x008d50,12,
-0x008d84,13,
-0x008dc0,8,
-0x008e00,1,
-0x008e18,8,
-0x008e3c,9,
-0x008e84,1,
-0x008e90,4,
-0x008ea4,1,
-0x008eac,7,
-0x008ee0,2,
-0x008eec,2,
-0x008f00,8,
-0x008f40,6,
-0x008f60,3,
-0x008f80,8,
-0x008fb0,21,
-0x009028,1,
-0x009050,1,
-0x009078,1,
-0x0090a0,1,
-0x0091ac,1,
-0x0091d8,4,
-0x009200,6,
-0x009220,6,
-0x009240,3,
-0x009400,6,
-0x009420,6,
-0x009440,6,
-0x009460,3,
-0x009480,13,
-0x0094c0,3,
-0x0094d0,3,
-0x0094e0,5,
-0x009500,2,
-0x00950c,5,
-0x010800,1,
-0x010808,14,
-0x010880,1,
-0x010888,16,
-0x010900,11,
-0x010940,3,
-0x010950,12,
-0x010984,13,
-0x0109c0,8,
-0x010a00,1,
-0x010a18,8,
-0x010a3c,9,
-0x010a84,1,
-0x010a90,4,
-0x010aa4,1,
-0x010aac,7,
-0x010ae0,2,
-0x010aec,2,
-0x010b00,8,
-0x010b40,6,
-0x010b60,3,
-0x010b80,8,
-0x010bb0,21,
-0x010c08,14,
-0x010c80,1,
-0x010c88,16,
-0x010d00,11,
-0x010d40,3,
-0x010d50,12,
-0x010d84,13,
-0x010dc0,8,
-0x010e00,1,
-0x010e18,8,
-0x010e3c,9,
-0x010e84,1,
-0x010e90,4,
-0x010ea4,1,
-0x010eac,7,
-0x010ee0,2,
-0x010eec,2,
-0x010f00,8,
-0x010f40,6,
-0x010f60,3,
-0x010f80,8,
-0x010fb0,21,
-0x011008,14,
-0x011080,1,
-0x011088,16,
-0x011100,11,
-0x011140,3,
-0x011150,12,
-0x011184,13,
-0x0111c0,8,
-0x011200,1,
-0x011218,8,
-0x01123c,9,
-0x011284,1,
-0x011290,4,
-0x0112a4,1,
-0x0112ac,7,
-0x0112e0,2,
-0x0112ec,2,
-0x011300,8,
-0x011340,6,
-0x011360,3,
-0x011380,8,
-0x0113b0,21,
-0x011408,14,
-0x011480,1,
-0x011488,16,
-0x011500,11,
-0x011540,3,
-0x011550,12,
-0x011584,13,
-0x0115c0,8,
-0x011600,1,
-0x011618,8,
-0x01163c,9,
-0x011684,1,
-0x011690,4,
-0x0116a4,1,
-0x0116ac,7,
-0x0116e0,2,
-0x0116ec,2,
-0x011700,8,
-0x011740,6,
-0x011760,3,
-0x011780,8,
-0x0117b0,21,
-0x011808,14,
-0x011880,1,
-0x011888,16,
-0x011900,11,
-0x011940,3,
-0x011950,12,
-0x011984,13,
-0x0119c0,8,
-0x011a00,1,
-0x011a18,8,
-0x011a3c,9,
-0x011a84,1,
-0x011a90,4,
-0x011aa4,1,
-0x011aac,7,
-0x011ae0,2,
-0x011aec,2,
-0x011b00,8,
-0x011b40,6,
-0x011b60,3,
-0x011b80,8,
-0x011bb0,21,
-0x011c08,14,
-0x011c80,1,
-0x011c88,16,
-0x011d00,11,
-0x011d40,3,
-0x011d50,12,
-0x011d84,13,
-0x011dc0,8,
-0x011e00,1,
-0x011e18,8,
-0x011e3c,9,
-0x011e84,1,
-0x011e90,4,
-0x011ea4,1,
-0x011eac,7,
-0x011ee0,2,
-0x011eec,2,
-0x011f00,8,
-0x011f40,6,
-0x011f60,3,
-0x011f80,8,
-0x011fb0,21,
-0x012008,14,
-0x012080,1,
-0x012088,16,
-0x012100,11,
-0x012140,3,
-0x012150,12,
-0x012184,13,
-0x0121c0,8,
-0x012200,1,
-0x012218,8,
-0x01223c,9,
-0x012284,1,
-0x012290,4,
-0x0122a4,1,
-0x0122ac,7,
-0x0122e0,2,
-0x0122ec,2,
-0x012300,8,
-0x012340,6,
-0x012360,3,
-0x012380,8,
-0x0123b0,21,
-0x012408,14,
-0x012480,1,
-0x012488,16,
-0x012500,11,
-0x012540,3,
-0x012550,12,
-0x012584,13,
-0x0125c0,8,
-0x012600,1,
-0x012618,8,
-0x01263c,9,
-0x012684,1,
-0x012690,4,
-0x0126a4,1,
-0x0126ac,7,
-0x0126e0,2,
-0x0126ec,2,
-0x012700,8,
-0x012740,6,
-0x012760,3,
-0x012780,8,
-0x0127b0,21,
-0x012808,14,
-0x012880,1,
-0x012888,16,
-0x012900,11,
-0x012940,3,
-0x012950,12,
-0x012984,13,
-0x0129c0,8,
-0x012a00,1,
-0x012a18,8,
-0x012a3c,9,
-0x012a84,1,
-0x012a90,4,
-0x012aa4,1,
-0x012aac,7,
-0x012ae0,2,
-0x012aec,2,
-0x012b00,8,
-0x012b40,6,
-0x012b60,3,
-0x012b80,8,
-0x012bb0,21,
-0x012c08,14,
-0x012c80,1,
-0x012c88,16,
-0x012d00,11,
-0x012d40,3,
-0x012d50,12,
-0x012d84,13,
-0x012dc0,8,
-0x012e00,1,
-0x012e18,8,
-0x012e3c,9,
-0x012e84,1,
-0x012e90,4,
-0x012ea4,1,
-0x012eac,7,
-0x012ee0,2,
-0x012eec,2,
-0x012f00,8,
-0x012f40,6,
-0x012f60,3,
-0x012f80,8,
-0x012fb0,21,
-0x013008,14,
-0x013080,1,
-0x013088,16,
-0x013100,11,
-0x013140,3,
-0x013150,12,
-0x013184,13,
-0x0131c0,8,
-0x013200,1,
-0x013218,8,
-0x01323c,9,
-0x013284,1,
-0x013290,4,
-0x0132a4,1,
-0x0132ac,7,
-0x0132e0,2,
-0x0132ec,2,
-0x013300,8,
-0x013340,6,
-0x013360,3,
-0x013380,8,
-0x0133b0,21,
-0x013408,14,
-0x013480,1,
-0x013488,16,
-0x013500,11,
-0x013540,3,
-0x013550,12,
-0x013584,13,
-0x0135c0,8,
-0x013600,1,
-0x013618,8,
-0x01363c,9,
-0x013684,1,
-0x013690,4,
-0x0136a4,1,
-0x0136ac,7,
-0x0136e0,2,
-0x0136ec,2,
-0x013700,8,
-0x013740,6,
-0x013760,3,
-0x013780,8,
-0x0137b0,21,
-0x013808,14,
-0x013880,1,
-0x013888,16,
-0x013900,11,
-0x013940,3,
-0x013950,12,
-0x013984,13,
-0x0139c0,8,
-0x013a00,1,
-0x013a18,8,
-0x013a3c,9,
-0x013a84,1,
-0x013a90,4,
-0x013aa4,1,
-0x013aac,7,
-0x013ae0,2,
-0x013aec,2,
-0x013b00,8,
-0x013b40,6,
-0x013b60,3,
-0x013b80,8,
-0x013bb0,21,
-0x013c08,14,
-0x013c80,1,
-0x013c88,16,
-0x013d00,11,
-0x013d40,3,
-0x013d50,12,
-0x013d84,13,
-0x013dc0,8,
-0x013e00,1,
-0x013e18,8,
-0x013e3c,9,
-0x013e84,1,
-0x013e90,4,
-0x013ea4,1,
-0x013eac,7,
-0x013ee0,2,
-0x013eec,2,
-0x013f00,8,
-0x013f40,6,
-0x013f60,3,
-0x013f80,8,
-0x013fb0,21,
-0x014008,14,
-0x014080,1,
-0x014088,16,
-0x014100,11,
-0x014140,3,
-0x014150,12,
-0x014184,13,
-0x0141c0,8,
-0x014200,1,
-0x014218,8,
-0x01423c,9,
-0x014284,1,
-0x014290,4,
-0x0142a4,1,
-0x0142ac,7,
-0x0142e0,2,
-0x0142ec,2,
-0x014300,8,
-0x014340,6,
-0x014360,3,
-0x014380,8,
-0x0143b0,21,
-0x014408,14,
-0x014480,1,
-0x014488,16,
-0x014500,11,
-0x014540,3,
-0x014550,12,
-0x014584,13,
-0x0145c0,8,
-0x014600,1,
-0x014618,8,
-0x01463c,9,
-0x014684,1,
-0x014690,4,
-0x0146a4,1,
-0x0146ac,7,
-0x0146e0,2,
-0x0146ec,2,
-0x014700,8,
-0x014740,6,
-0x014760,3,
-0x014780,8,
-0x0147b0,21,
-0x014808,14,
-0x014880,1,
-0x014888,16,
-0x014900,11,
-0x014940,3,
-0x014950,12,
-0x014984,13,
-0x0149c0,8,
-0x014a00,1,
-0x014a18,8,
-0x014a3c,9,
-0x014a84,1,
-0x014a90,4,
-0x014aa4,1,
-0x014aac,7,
-0x014ae0,2,
-0x014aec,2,
-0x014b00,8,
-0x014b40,6,
-0x014b60,3,
-0x014b80,8,
-0x014bb0,21,
-0x014c08,14,
-0x014c80,1,
-0x014c88,16,
-0x014d00,11,
-0x014d40,3,
-0x014d50,12,
-0x014d84,13,
-0x014dc0,8,
-0x014e00,1,
-0x014e18,8,
-0x014e3c,9,
-0x014e84,1,
-0x014e90,4,
-0x014ea4,1,
-0x014eac,7,
-0x014ee0,2,
-0x014eec,2,
-0x014f00,8,
-0x014f40,6,
-0x014f60,3,
-0x014f80,8,
-0x014fb0,21,
-0x015008,14,
-0x015080,1,
-0x015088,16,
-0x015100,11,
-0x015140,3,
-0x015150,12,
-0x015184,13,
-0x0151c0,8,
-0x015200,1,
-0x015218,8,
-0x01523c,9,
-0x015284,1,
-0x015290,4,
-0x0152a4,1,
-0x0152ac,7,
-0x0152e0,2,
-0x0152ec,2,
-0x015300,8,
-0x015340,6,
-0x015360,3,
-0x015380,8,
-0x0153b0,21,
-0x015408,14,
-0x015480,1,
-0x015488,16,
-0x015500,11,
-0x015540,3,
-0x015550,12,
-0x015584,13,
-0x0155c0,8,
-0x015600,1,
-0x015618,8,
-0x01563c,9,
-0x015684,1,
-0x015690,4,
-0x0156a4,1,
-0x0156ac,7,
-0x0156e0,2,
-0x0156ec,2,
-0x015700,8,
-0x015740,6,
-0x015760,3,
-0x015780,8,
-0x0157b0,21,
-0x015808,14,
-0x015880,1,
-0x015888,16,
-0x015900,11,
-0x015940,3,
-0x015950,12,
-0x015984,13,
-0x0159c0,8,
-0x015a00,1,
-0x015a18,8,
-0x015a3c,9,
-0x015a84,1,
-0x015a90,4,
-0x015aa4,1,
-0x015aac,7,
-0x015ae0,2,
-0x015aec,2,
-0x015b00,8,
-0x015b40,6,
-0x015b60,3,
-0x015b80,8,
-0x015bb0,21,
-0x015c08,14,
-0x015c80,1,
-0x015c88,16,
-0x015d00,11,
-0x015d40,3,
-0x015d50,12,
-0x015d84,13,
-0x015dc0,8,
-0x015e00,1,
-0x015e18,8,
-0x015e3c,9,
-0x015e84,1,
-0x015e90,4,
-0x015ea4,1,
-0x015eac,7,
-0x015ee0,2,
-0x015eec,2,
-0x015f00,8,
-0x015f40,6,
-0x015f60,3,
-0x015f80,8,
-0x015fb0,21,
-0x016008,14,
-0x016080,1,
-0x016088,16,
-0x016100,11,
-0x016140,3,
-0x016150,12,
-0x016184,13,
-0x0161c0,8,
-0x016200,1,
-0x016218,8,
-0x01623c,9,
-0x016284,1,
-0x016290,4,
-0x0162a4,1,
-0x0162ac,7,
-0x0162e0,2,
-0x0162ec,2,
-0x016300,8,
-0x016340,6,
-0x016360,3,
-0x016380,8,
-0x0163b0,21,
-0x016408,14,
-0x016480,1,
-0x016488,16,
-0x016500,11,
-0x016540,3,
-0x016550,12,
-0x016584,13,
-0x0165c0,8,
-0x016600,1,
-0x016618,8,
-0x01663c,9,
-0x016684,1,
-0x016690,4,
-0x0166a4,1,
-0x0166ac,7,
-0x0166e0,2,
-0x0166ec,2,
-0x016700,8,
-0x016740,6,
-0x016760,3,
-0x016780,8,
-0x0167b0,21,
-0x016808,14,
-0x016880,1,
-0x016888,16,
-0x016900,11,
-0x016940,3,
-0x016950,12,
-0x016984,13,
-0x0169c0,8,
-0x016a00,1,
-0x016a18,8,
-0x016a3c,9,
-0x016a84,1,
-0x016a90,4,
-0x016aa4,1,
-0x016aac,7,
-0x016ae0,2,
-0x016aec,2,
-0x016b00,8,
-0x016b40,6,
-0x016b60,3,
-0x016b80,8,
-0x016bb0,21,
-0x016c08,14,
-0x016c80,1,
-0x016c88,16,
-0x016d00,11,
-0x016d40,3,
-0x016d50,12,
-0x016d84,13,
-0x016dc0,8,
-0x016e00,1,
-0x016e18,8,
-0x016e3c,9,
-0x016e84,1,
-0x016e90,4,
-0x016ea4,1,
-0x016eac,7,
-0x016ee0,2,
-0x016eec,2,
-0x016f00,8,
-0x016f40,6,
-0x016f60,3,
-0x016f80,8,
-0x016fb0,21,
-0x017008,14,
-0x017080,1,
-0x017088,16,
-0x017100,11,
-0x017140,3,
-0x017150,12,
-0x017184,13,
-0x0171c0,8,
-0x017200,1,
-0x017218,8,
-0x01723c,9,
-0x017284,1,
-0x017290,4,
-0x0172a4,1,
-0x0172ac,7,
-0x0172e0,2,
-0x0172ec,2,
-0x017300,8,
-0x017340,6,
-0x017360,3,
-0x017380,8,
-0x0173b0,21,
-0x017408,14,
-0x017480,1,
-0x017488,16,
-0x017500,11,
-0x017540,3,
-0x017550,12,
-0x017584,13,
-0x0175c0,8,
-0x017600,1,
-0x017618,8,
-0x01763c,9,
-0x017684,1,
-0x017690,4,
-0x0176a4,1,
-0x0176ac,7,
-0x0176e0,2,
-0x0176ec,2,
-0x017700,8,
-0x017740,6,
-0x017760,3,
-0x017780,8,
-0x0177b0,21,
-0x017808,14,
-0x017880,1,
-0x017888,16,
-0x017900,11,
-0x017940,3,
-0x017950,12,
-0x017984,13,
-0x0179c0,8,
-0x017a00,1,
-0x017a18,8,
-0x017a3c,9,
-0x017a84,1,
-0x017a90,4,
-0x017aa4,1,
-0x017aac,7,
-0x017ae0,2,
-0x017aec,2,
-0x017b00,8,
-0x017b40,6,
-0x017b60,3,
-0x017b80,8,
-0x017bb0,21,
-0x017c08,14,
-0x017c80,1,
-0x017c88,16,
-0x017d00,11,
-0x017d40,3,
-0x017d50,12,
-0x017d84,13,
-0x017dc0,8,
-0x017e00,1,
-0x017e18,8,
-0x017e3c,9,
-0x017e84,1,
-0x017e90,4,
-0x017ea4,1,
-0x017eac,7,
-0x017ee0,2,
-0x017eec,2,
-0x017f00,8,
-0x017f40,6,
-0x017f60,3,
-0x017f80,8,
-0x017fb0,21,
-0x018008,14,
-0x018080,1,
-0x018088,16,
-0x018100,11,
-0x018140,3,
-0x018150,12,
-0x018184,13,
-0x0181c0,8,
-0x018200,1,
-0x018218,8,
-0x01823c,9,
-0x018284,1,
-0x018290,4,
-0x0182a4,1,
-0x0182ac,7,
-0x0182e0,2,
-0x0182ec,2,
-0x018300,8,
-0x018340,6,
-0x018360,3,
-0x018380,8,
-0x0183b0,21,
-0x018408,14,
-0x018480,1,
-0x018488,16,
-0x018500,11,
-0x018540,3,
-0x018550,12,
-0x018584,13,
-0x0185c0,8,
-0x018600,1,
-0x018618,8,
-0x01863c,9,
-0x018684,1,
-0x018690,4,
-0x0186a4,1,
-0x0186ac,7,
-0x0186e0,2,
-0x0186ec,2,
-0x018700,8,
-0x018740,6,
-0x018760,3,
-0x018780,8,
-0x0187b0,21,
-0x018808,14,
-0x018880,1,
-0x018888,16,
-0x018900,11,
-0x018940,3,
-0x018950,12,
-0x018984,13,
-0x0189c0,8,
-0x018a00,1,
-0x018a18,8,
-0x018a3c,9,
-0x018a84,1,
-0x018a90,4,
-0x018aa4,1,
-0x018aac,7,
-0x018ae0,2,
-0x018aec,2,
-0x018b00,8,
-0x018b40,6,
-0x018b60,3,
-0x018b80,8,
-0x018bb0,21,
-0x018c08,14,
-0x018c80,1,
-0x018c88,16,
-0x018d00,11,
-0x018d40,3,
-0x018d50,12,
-0x018d84,13,
-0x018dc0,8,
-0x018e00,1,
-0x018e18,8,
-0x018e3c,9,
-0x018e84,1,
-0x018e90,4,
-0x018ea4,1,
-0x018eac,7,
-0x018ee0,2,
-0x018eec,2,
-0x018f00,8,
-0x018f40,6,
-0x018f60,3,
-0x018f80,8,
-0x018fb0,21,
-0x019028,1,
-0x019050,1,
-0x019078,1,
-0x0190a0,1,
-0x0191ac,1,
-0x0191d8,4,
-0x019200,6,
-0x019220,6,
-0x019240,3,
-0x019400,6,
-0x019420,6,
-0x019440,6,
-0x019460,3,
-0x019480,13,
-0x0194c0,3,
-0x0194d0,3,
-0x0194e0,5,
-0x019500,2,
-0x01950c,5,
-0x020000,65,
-0x020110,2,
-0x020120,6,
-0x020140,6,
-0x020164,3,
-0x020174,7,
-0x020194,2,
-0x0201c0,49,
-0x020288,1,
-0x020290,17,
-0x0202d8,1,
-0x0202e0,17,
-0x020328,1,
-0x020330,17,
-0x020378,1,
-0x020380,3,
-0x020390,3,
-0x0203a4,1,
-0x0203ac,3,
-0x0203c0,4,
-0x0203d4,7,
-0x0203f4,68,
-0x020510,2,
-0x020520,6,
-0x020540,6,
-0x020564,3,
-0x020574,7,
-0x020594,2,
-0x0205c0,49,
-0x020688,1,
-0x020690,17,
-0x0206d8,1,
-0x0206e0,17,
-0x020728,1,
-0x020730,17,
-0x020778,1,
-0x020780,3,
-0x020790,3,
-0x0207a4,1,
-0x0207ac,3,
-0x0207c0,4,
-0x0207d4,7,
-0x0207f4,68,
-0x020910,2,
-0x020920,6,
-0x020940,6,
-0x020964,3,
-0x020974,7,
-0x020994,2,
-0x0209c0,49,
-0x020a88,1,
-0x020a90,17,
-0x020ad8,1,
-0x020ae0,17,
-0x020b28,1,
-0x020b30,17,
-0x020b78,1,
-0x020b80,3,
-0x020b90,3,
-0x020ba4,1,
-0x020bac,3,
-0x020bc0,4,
-0x020bd4,7,
-0x020bf4,68,
-0x020d10,2,
-0x020d20,6,
-0x020d40,6,
-0x020d64,3,
-0x020d74,7,
-0x020d94,2,
-0x020dc0,49,
-0x020e88,1,
-0x020e90,17,
-0x020ed8,1,
-0x020ee0,17,
-0x020f28,1,
-0x020f30,17,
-0x020f78,1,
-0x020f80,3,
-0x020f90,3,
-0x020fa4,1,
-0x020fac,3,
-0x020fc0,4,
-0x020fd4,7,
-0x020ff4,68,
-0x021110,2,
-0x021120,6,
-0x021140,6,
-0x021164,3,
-0x021174,7,
-0x021194,2,
-0x0211c0,49,
-0x021288,1,
-0x021290,17,
-0x0212d8,1,
-0x0212e0,17,
-0x021328,1,
-0x021330,17,
-0x021378,1,
-0x021380,3,
-0x021390,3,
-0x0213a4,1,
-0x0213ac,3,
-0x0213c0,4,
-0x0213d4,7,
-0x0213f4,68,
-0x021510,2,
-0x021520,6,
-0x021540,6,
-0x021564,3,
-0x021574,7,
-0x021594,2,
-0x0215c0,49,
-0x021688,1,
-0x021690,17,
-0x0216d8,1,
-0x0216e0,17,
-0x021728,1,
-0x021730,17,
-0x021778,1,
-0x021780,3,
-0x021790,3,
-0x0217a4,1,
-0x0217ac,3,
-0x0217c0,4,
-0x0217d4,7,
-0x0217f4,68,
-0x021910,2,
-0x021920,6,
-0x021940,6,
-0x021964,3,
-0x021974,7,
-0x021994,2,
-0x0219c0,49,
-0x021a88,1,
-0x021a90,17,
-0x021ad8,1,
-0x021ae0,17,
-0x021b28,1,
-0x021b30,17,
-0x021b78,1,
-0x021b80,3,
-0x021b90,3,
-0x021ba4,1,
-0x021bac,3,
-0x021bc0,4,
-0x021bd4,7,
-0x021bf4,68,
-0x021d10,2,
-0x021d20,6,
-0x021d40,6,
-0x021d64,3,
-0x021d74,7,
-0x021d94,2,
-0x021dc0,49,
-0x021e88,1,
-0x021e90,17,
-0x021ed8,1,
-0x021ee0,17,
-0x021f28,1,
-0x021f30,17,
-0x021f78,1,
-0x021f80,3,
-0x021f90,3,
-0x021fa4,1,
-0x021fac,3,
-0x021fc0,4,
-0x021fd4,7,
-0x021ff4,68,
-0x022110,2,
-0x022120,6,
-0x022140,6,
-0x022164,3,
-0x022174,7,
-0x022194,2,
-0x0221c0,49,
-0x022288,1,
-0x022290,17,
-0x0222d8,1,
-0x0222e0,17,
-0x022328,1,
-0x022330,17,
-0x022378,1,
-0x022380,3,
-0x022390,3,
-0x0223a4,1,
-0x0223ac,3,
-0x0223c0,4,
-0x0223d4,7,
-0x0223f4,68,
-0x022510,2,
-0x022520,6,
-0x022540,6,
-0x022564,3,
-0x022574,7,
-0x022594,2,
-0x0225c0,49,
-0x022688,1,
-0x022690,17,
-0x0226d8,1,
-0x0226e0,17,
-0x022728,1,
-0x022730,17,
-0x022778,1,
-0x022780,3,
-0x022790,3,
-0x0227a4,1,
-0x0227ac,3,
-0x0227c0,4,
-0x0227d4,7,
-0x0227f4,68,
-0x022910,2,
-0x022920,6,
-0x022940,6,
-0x022964,3,
-0x022974,7,
-0x022994,2,
-0x0229c0,49,
-0x022a88,1,
-0x022a90,17,
-0x022ad8,1,
-0x022ae0,17,
-0x022b28,1,
-0x022b30,17,
-0x022b78,1,
-0x022b80,3,
-0x022b90,3,
-0x022ba4,1,
-0x022bac,3,
-0x022bc0,4,
-0x022bd4,7,
-0x022bf4,68,
-0x022d10,2,
-0x022d20,6,
-0x022d40,6,
-0x022d64,3,
-0x022d74,7,
-0x022d94,2,
-0x022dc0,49,
-0x022e88,1,
-0x022e90,17,
-0x022ed8,1,
-0x022ee0,17,
-0x022f28,1,
-0x022f30,17,
-0x022f78,1,
-0x022f80,3,
-0x022f90,3,
-0x022fa4,1,
-0x022fac,3,
-0x022fc0,4,
-0x022fd4,7,
-0x022ff4,68,
-0x023110,2,
-0x023120,6,
-0x023140,6,
-0x023164,3,
-0x023174,7,
-0x023194,2,
-0x0231c0,49,
-0x023288,1,
-0x023290,17,
-0x0232d8,1,
-0x0232e0,17,
-0x023328,1,
-0x023330,17,
-0x023378,1,
-0x023380,3,
-0x023390,3,
-0x0233a4,1,
-0x0233ac,3,
-0x0233c0,4,
-0x0233d4,7,
-0x0233f4,68,
-0x023510,2,
-0x023520,6,
-0x023540,6,
-0x023564,3,
-0x023574,7,
-0x023594,2,
-0x0235c0,49,
-0x023688,1,
-0x023690,17,
-0x0236d8,1,
-0x0236e0,17,
-0x023728,1,
-0x023730,17,
-0x023778,1,
-0x023780,3,
-0x023790,3,
-0x0237a4,1,
-0x0237ac,3,
-0x0237c0,4,
-0x0237d4,7,
-0x0237f4,68,
-0x023910,2,
-0x023920,6,
-0x023940,6,
-0x023964,3,
-0x023974,7,
-0x023994,2,
-0x0239c0,49,
-0x023a88,1,
-0x023a90,17,
-0x023ad8,1,
-0x023ae0,17,
-0x023b28,1,
-0x023b30,17,
-0x023b78,1,
-0x023b80,3,
-0x023b90,3,
-0x023ba4,1,
-0x023bac,3,
-0x023bc0,4,
-0x023bd4,7,
-0x023bf4,68,
-0x023d10,2,
-0x023d20,6,
-0x023d40,6,
-0x023d64,3,
-0x023d74,7,
-0x023d94,2,
-0x023dc0,49,
-0x023e88,1,
-0x023e90,17,
-0x023ed8,1,
-0x023ee0,17,
-0x023f28,1,
-0x023f30,17,
-0x023f78,1,
-0x023f80,3,
-0x023f90,3,
-0x023fa4,1,
-0x023fac,3,
-0x023fc0,4,
-0x023fd4,7,
-0x023ff4,7,
-0x024020,37,
-0x0240b8,64,
-0x024200,11,
-0x024230,3,
-0x024240,130,
-0x024450,2,
-0x024468,3,
-0x02447c,1,
-0x024484,1,
-0x02448c,3,
-0x024500,40,
-0x0245a8,4,
-0x0245e0,4,
-0x0245fc,20,
-0x024700,6,
-0x024720,6,
-0x024740,6,
-0x024760,2,
-0x024770,2,
-0x024780,1,
-0x025000,5,
-0x025028,5,
-0x025050,5,
-0x025078,5,
-0x0250a0,7,
-0x0251ac,1,
-0x0251d8,4,
-0x025200,6,
-0x025220,6,
-0x025240,6,
-0x025260,6,
-0x025280,6,
-0x0252a0,6,
-0x0252c0,6,
-0x0252e0,6,
-0x025300,6,
-0x025320,6,
-0x025340,3,
-0x025440,3,
-0x025500,13,
-0x025540,2,
-0x025560,3,
-0x025570,3,
-0x025580,6,
-0x0255a0,6,
-0x0255c0,3,
-0x025900,1,
-0x028000,65,
-0x028110,2,
-0x028120,6,
-0x028140,6,
-0x028164,3,
-0x028174,7,
-0x028194,2,
-0x0281c0,49,
-0x028288,1,
-0x028290,17,
-0x0282d8,1,
-0x0282e0,17,
-0x028328,1,
-0x028330,17,
-0x028378,1,
-0x028380,3,
-0x028390,3,
-0x0283a4,1,
-0x0283ac,3,
-0x0283c0,4,
-0x0283d4,7,
-0x0283f4,68,
-0x028510,2,
-0x028520,6,
-0x028540,6,
-0x028564,3,
-0x028574,7,
-0x028594,2,
-0x0285c0,49,
-0x028688,1,
-0x028690,17,
-0x0286d8,1,
-0x0286e0,17,
-0x028728,1,
-0x028730,17,
-0x028778,1,
-0x028780,3,
-0x028790,3,
-0x0287a4,1,
-0x0287ac,3,
-0x0287c0,4,
-0x0287d4,7,
-0x0287f4,68,
-0x028910,2,
-0x028920,6,
-0x028940,6,
-0x028964,3,
-0x028974,7,
-0x028994,2,
-0x0289c0,49,
-0x028a88,1,
-0x028a90,17,
-0x028ad8,1,
-0x028ae0,17,
-0x028b28,1,
-0x028b30,17,
-0x028b78,1,
-0x028b80,3,
-0x028b90,3,
-0x028ba4,1,
-0x028bac,3,
-0x028bc0,4,
-0x028bd4,7,
-0x028bf4,68,
-0x028d10,2,
-0x028d20,6,
-0x028d40,6,
-0x028d64,3,
-0x028d74,7,
-0x028d94,2,
-0x028dc0,49,
-0x028e88,1,
-0x028e90,17,
-0x028ed8,1,
-0x028ee0,17,
-0x028f28,1,
-0x028f30,17,
-0x028f78,1,
-0x028f80,3,
-0x028f90,3,
-0x028fa4,1,
-0x028fac,3,
-0x028fc0,4,
-0x028fd4,7,
-0x028ff4,68,
-0x029110,2,
-0x029120,6,
-0x029140,6,
-0x029164,3,
-0x029174,7,
-0x029194,2,
-0x0291c0,49,
-0x029288,1,
-0x029290,17,
-0x0292d8,1,
-0x0292e0,17,
-0x029328,1,
-0x029330,17,
-0x029378,1,
-0x029380,3,
-0x029390,3,
-0x0293a4,1,
-0x0293ac,3,
-0x0293c0,4,
-0x0293d4,7,
-0x0293f4,68,
-0x029510,2,
-0x029520,6,
-0x029540,6,
-0x029564,3,
-0x029574,7,
-0x029594,2,
-0x0295c0,49,
-0x029688,1,
-0x029690,17,
-0x0296d8,1,
-0x0296e0,17,
-0x029728,1,
-0x029730,17,
-0x029778,1,
-0x029780,3,
-0x029790,3,
-0x0297a4,1,
-0x0297ac,3,
-0x0297c0,4,
-0x0297d4,7,
-0x0297f4,68,
-0x029910,2,
-0x029920,6,
-0x029940,6,
-0x029964,3,
-0x029974,7,
-0x029994,2,
-0x0299c0,49,
-0x029a88,1,
-0x029a90,17,
-0x029ad8,1,
-0x029ae0,17,
-0x029b28,1,
-0x029b30,17,
-0x029b78,1,
-0x029b80,3,
-0x029b90,3,
-0x029ba4,1,
-0x029bac,3,
-0x029bc0,4,
-0x029bd4,7,
-0x029bf4,68,
-0x029d10,2,
-0x029d20,6,
-0x029d40,6,
-0x029d64,3,
-0x029d74,7,
-0x029d94,2,
-0x029dc0,49,
-0x029e88,1,
-0x029e90,17,
-0x029ed8,1,
-0x029ee0,17,
-0x029f28,1,
-0x029f30,17,
-0x029f78,1,
-0x029f80,3,
-0x029f90,3,
-0x029fa4,1,
-0x029fac,3,
-0x029fc0,4,
-0x029fd4,7,
-0x029ff4,68,
-0x02a110,2,
-0x02a120,6,
-0x02a140,6,
-0x02a164,3,
-0x02a174,7,
-0x02a194,2,
-0x02a1c0,49,
-0x02a288,1,
-0x02a290,17,
-0x02a2d8,1,
-0x02a2e0,17,
-0x02a328,1,
-0x02a330,17,
-0x02a378,1,
-0x02a380,3,
-0x02a390,3,
-0x02a3a4,1,
-0x02a3ac,3,
-0x02a3c0,4,
-0x02a3d4,7,
-0x02a3f4,68,
-0x02a510,2,
-0x02a520,6,
-0x02a540,6,
-0x02a564,3,
-0x02a574,7,
-0x02a594,2,
-0x02a5c0,49,
-0x02a688,1,
-0x02a690,17,
-0x02a6d8,1,
-0x02a6e0,17,
-0x02a728,1,
-0x02a730,17,
-0x02a778,1,
-0x02a780,3,
-0x02a790,3,
-0x02a7a4,1,
-0x02a7ac,3,
-0x02a7c0,4,
-0x02a7d4,7,
-0x02a7f4,68,
-0x02a910,2,
-0x02a920,6,
-0x02a940,6,
-0x02a964,3,
-0x02a974,7,
-0x02a994,2,
-0x02a9c0,49,
-0x02aa88,1,
-0x02aa90,17,
-0x02aad8,1,
-0x02aae0,17,
-0x02ab28,1,
-0x02ab30,17,
-0x02ab78,1,
-0x02ab80,3,
-0x02ab90,3,
-0x02aba4,1,
-0x02abac,3,
-0x02abc0,4,
-0x02abd4,7,
-0x02abf4,68,
-0x02ad10,2,
-0x02ad20,6,
-0x02ad40,6,
-0x02ad64,3,
-0x02ad74,7,
-0x02ad94,2,
-0x02adc0,49,
-0x02ae88,1,
-0x02ae90,17,
-0x02aed8,1,
-0x02aee0,17,
-0x02af28,1,
-0x02af30,17,
-0x02af78,1,
-0x02af80,3,
-0x02af90,3,
-0x02afa4,1,
-0x02afac,3,
-0x02afc0,4,
-0x02afd4,7,
-0x02aff4,68,
-0x02b110,2,
-0x02b120,6,
-0x02b140,6,
-0x02b164,3,
-0x02b174,7,
-0x02b194,2,
-0x02b1c0,49,
-0x02b288,1,
-0x02b290,17,
-0x02b2d8,1,
-0x02b2e0,17,
-0x02b328,1,
-0x02b330,17,
-0x02b378,1,
-0x02b380,3,
-0x02b390,3,
-0x02b3a4,1,
-0x02b3ac,3,
-0x02b3c0,4,
-0x02b3d4,7,
-0x02b3f4,68,
-0x02b510,2,
-0x02b520,6,
-0x02b540,6,
-0x02b564,3,
-0x02b574,7,
-0x02b594,2,
-0x02b5c0,49,
-0x02b688,1,
-0x02b690,17,
-0x02b6d8,1,
-0x02b6e0,17,
-0x02b728,1,
-0x02b730,17,
-0x02b778,1,
-0x02b780,3,
-0x02b790,3,
-0x02b7a4,1,
-0x02b7ac,3,
-0x02b7c0,4,
-0x02b7d4,7,
-0x02b7f4,68,
-0x02b910,2,
-0x02b920,6,
-0x02b940,6,
-0x02b964,3,
-0x02b974,7,
-0x02b994,2,
-0x02b9c0,49,
-0x02ba88,1,
-0x02ba90,17,
-0x02bad8,1,
-0x02bae0,17,
-0x02bb28,1,
-0x02bb30,17,
-0x02bb78,1,
-0x02bb80,3,
-0x02bb90,3,
-0x02bba4,1,
-0x02bbac,3,
-0x02bbc0,4,
-0x02bbd4,7,
-0x02bbf4,68,
-0x02bd10,2,
-0x02bd20,6,
-0x02bd40,6,
-0x02bd64,3,
-0x02bd74,7,
-0x02bd94,2,
-0x02bdc0,49,
-0x02be88,1,
-0x02be90,17,
-0x02bed8,1,
-0x02bee0,17,
-0x02bf28,1,
-0x02bf30,17,
-0x02bf78,1,
-0x02bf80,3,
-0x02bf90,3,
-0x02bfa4,1,
-0x02bfac,3,
-0x02bfc0,4,
-0x02bfd4,7,
-0x02bff4,7,
-0x02c020,37,
-0x02c0b8,64,
-0x02c200,11,
-0x02c230,3,
-0x02c240,130,
-0x02c450,2,
-0x02c468,3,
-0x02c47c,1,
-0x02c484,1,
-0x02c48c,3,
-0x02c500,40,
-0x02c5a8,4,
-0x02c5e0,4,
-0x02c5fc,20,
-0x02c700,6,
-0x02c720,6,
-0x02c740,6,
-0x02c760,2,
-0x02c770,2,
-0x02c780,1,
-0x02d000,5,
-0x02d028,5,
-0x02d050,5,
-0x02d078,5,
-0x02d0a0,7,
-0x02d1ac,1,
-0x02d1d8,4,
-0x02d200,6,
-0x02d220,6,
-0x02d240,6,
-0x02d260,6,
-0x02d280,6,
-0x02d2a0,6,
-0x02d2c0,6,
-0x02d2e0,6,
-0x02d300,6,
-0x02d320,6,
-0x02d340,3,
-0x02d440,3,
-0x02d500,13,
-0x02d540,2,
-0x02d560,3,
-0x02d570,3,
-0x02d580,6,
-0x02d5a0,6,
-0x02d5c0,3,
-0x02d900,1,
-0x030000,38,
-0x030100,38,
-0x030200,38,
-0x030300,38,
-0x030400,38,
-0x030500,38,
-0x030600,38,
-0x030700,38,
-0x030800,38,
-0x030900,38,
-0x030a00,38,
-0x030b00,38,
-0x030c00,38,
-0x030d00,38,
-0x030e00,38,
-0x030f00,38,
-0x031000,38,
-0x031100,38,
-0x031200,38,
-0x031300,38,
-0x031400,38,
-0x031500,38,
-0x031600,38,
-0x031700,38,
-0x031800,38,
-0x031900,38,
-0x031a00,38,
-0x031b00,38,
-0x031c00,38,
-0x031d00,38,
-0x031e00,38,
-0x031f00,38,
-0x032000,6,
-0x032020,7,
-0x032040,4,
-0x032054,3,
-0x032064,1,
-0x03206c,1,
-0x032080,6,
-0x0320a0,7,
-0x0320c0,4,
-0x0320d4,3,
-0x0320e4,1,
-0x0320ec,1,
-0x032100,6,
-0x032120,7,
-0x032140,4,
-0x032154,3,
-0x032164,1,
-0x03216c,1,
-0x032180,6,
-0x0321a0,7,
-0x0321c0,4,
-0x0321d4,3,
-0x0321e4,1,
-0x0321ec,1,
-0x032200,6,
-0x032220,7,
-0x032240,4,
-0x032254,3,
-0x032264,1,
-0x03226c,1,
-0x032280,6,
-0x0322a0,7,
-0x0322c0,4,
-0x0322d4,3,
-0x0322e4,1,
-0x0322ec,1,
-0x032300,6,
-0x032320,7,
-0x032340,4,
-0x032354,3,
-0x032364,1,
-0x03236c,1,
-0x032380,6,
-0x0323a0,7,
-0x0323c0,4,
-0x0323d4,3,
-0x0323e4,1,
-0x0323ec,1,
-0x032400,6,
-0x032420,7,
-0x032440,4,
-0x032454,3,
-0x032464,1,
-0x03246c,1,
-0x032480,6,
-0x0324a0,7,
-0x0324c0,4,
-0x0324d4,3,
-0x0324e4,1,
-0x0324ec,1,
-0x032500,6,
-0x032520,7,
-0x032540,4,
-0x032554,3,
-0x032564,1,
-0x03256c,1,
-0x032580,6,
-0x0325a0,7,
-0x0325c0,4,
-0x0325d4,3,
-0x0325e4,1,
-0x0325ec,1,
-0x032600,6,
-0x032620,7,
-0x032640,4,
-0x032654,3,
-0x032664,1,
-0x03266c,1,
-0x032680,6,
-0x0326a0,7,
-0x0326c0,4,
-0x0326d4,3,
-0x0326e4,1,
-0x0326ec,1,
-0x032700,6,
-0x032720,7,
-0x032740,4,
-0x032754,3,
-0x032764,1,
-0x03276c,1,
-0x032780,6,
-0x0327a0,7,
-0x0327c0,4,
-0x0327d4,3,
-0x0327e4,1,
-0x0327ec,1,
-0x032800,6,
-0x032820,7,
-0x032840,4,
-0x032854,3,
-0x032864,1,
-0x03286c,1,
-0x032880,6,
-0x0328a0,7,
-0x0328c0,4,
-0x0328d4,3,
-0x0328e4,1,
-0x0328ec,1,
-0x032900,6,
-0x032920,7,
-0x032940,4,
-0x032954,3,
-0x032964,1,
-0x03296c,1,
-0x032980,6,
-0x0329a0,7,
-0x0329c0,4,
-0x0329d4,3,
-0x0329e4,1,
-0x0329ec,1,
-0x032a00,6,
-0x032a20,7,
-0x032a40,4,
-0x032a54,3,
-0x032a64,1,
-0x032a6c,1,
-0x032a80,6,
-0x032aa0,7,
-0x032ac0,4,
-0x032ad4,3,
-0x032ae4,1,
-0x032aec,1,
-0x032b00,6,
-0x032b20,7,
-0x032b40,4,
-0x032b54,3,
-0x032b64,1,
-0x032b6c,1,
-0x032b80,6,
-0x032ba0,7,
-0x032bc0,4,
-0x032bd4,3,
-0x032be4,1,
-0x032bec,1,
-0x032c00,6,
-0x032c20,7,
-0x032c40,4,
-0x032c54,3,
-0x032c64,1,
-0x032c6c,1,
-0x032c80,6,
-0x032ca0,7,
-0x032cc0,4,
-0x032cd4,3,
-0x032ce4,1,
-0x032cec,1,
-0x032d00,6,
-0x032d20,7,
-0x032d40,4,
-0x032d54,3,
-0x032d64,1,
-0x032d6c,1,
-0x032d80,6,
-0x032da0,7,
-0x032dc0,4,
-0x032dd4,3,
-0x032de4,1,
-0x032dec,1,
-0x032e00,6,
-0x032e20,7,
-0x032e40,4,
-0x032e54,3,
-0x032e64,1,
-0x032e6c,1,
-0x032e80,6,
-0x032ea0,7,
-0x032ec0,4,
-0x032ed4,3,
-0x032ee4,1,
-0x032eec,1,
-0x032f00,6,
-0x032f20,7,
-0x032f40,4,
-0x032f54,3,
-0x032f64,1,
-0x032f6c,1,
-0x032f80,6,
-0x032fa0,7,
-0x032fc0,4,
-0x032fd4,3,
-0x032fe4,1,
-0x032fec,1,
-0x033000,6,
-0x033020,7,
-0x033040,4,
-0x033054,3,
-0x033064,1,
-0x03306c,1,
-0x033080,6,
-0x0330a0,7,
-0x0330c0,4,
-0x0330d4,3,
-0x0330e4,1,
-0x0330ec,1,
-0x033100,38,
-0x033200,6,
-0x033220,6,
-0x033240,3,
-0x033280,13,
-0x0332c0,3,
-0x0332d0,3,
-0x0332e0,2,
-0x033300,7,
-0x0333f8,2,
-0x033500,33,
-0x033600,2,
-0x033800,6,
-0x033820,6,
-0x033840,6,
-0x033860,6,
-0x033880,6,
-0x0338a0,6,
-0x0338c0,6,
-0x0338e0,6,
-0x033900,6,
-0x033920,6,
-0x033940,6,
-0x033960,6,
-0x033980,6,
-0x0339a0,6,
-0x0339c0,6,
-0x0339e0,6,
-0x033a00,3,
-0x033c00,6,
-0x033c20,6,
-0x033c40,6,
-0x033c60,6,
-0x033c80,6,
-0x033ca0,6,
-0x033cc0,6,
-0x033ce0,6,
-0x033d00,6,
-0x033d20,6,
-0x033d40,6,
-0x033d60,6,
-0x033d80,6,
-0x033da0,6,
-0x033dc0,6,
-0x033de0,6,
-0x033e00,6,
-0x033e20,3,
-0x034000,22,
-0x034060,7,
-0x034080,22,
-0x0340e0,7,
-0x034100,22,
-0x034160,7,
-0x034180,22,
-0x0341e0,7,
-0x034200,22,
-0x034260,7,
-0x034280,22,
-0x0342e0,7,
-0x034300,22,
-0x034360,7,
-0x034380,22,
-0x0343e0,7,
-0x034400,22,
-0x034460,7,
-0x034480,22,
-0x0344e0,7,
-0x034500,22,
-0x034560,7,
-0x034580,22,
-0x0345e0,7,
-0x034600,22,
-0x034660,7,
-0x034680,22,
-0x0346e0,7,
-0x034700,22,
-0x034760,7,
-0x034780,22,
-0x0347e0,7,
-0x034800,22,
-0x034860,7,
-0x034880,22,
-0x0348e0,7,
-0x034900,22,
-0x034960,7,
-0x034980,22,
-0x0349e0,7,
-0x034a00,22,
-0x034a60,7,
-0x034a80,22,
-0x034ae0,7,
-0x034b00,22,
-0x034b60,7,
-0x034b80,22,
-0x034be0,7,
-0x034c00,22,
-0x034c60,7,
-0x034c80,22,
-0x034ce0,7,
-0x034d00,22,
-0x034d60,7,
-0x034d80,22,
-0x034de0,7,
-0x034e00,22,
-0x034e60,7,
-0x034e80,22,
-0x034ee0,7,
-0x034f00,22,
-0x034f60,7,
-0x034f80,22,
-0x034fe0,7,
-0x035000,4,
-0x035020,6,
-0x035100,4,
-0x035120,6,
-0x035200,4,
-0x035220,6,
-0x035300,4,
-0x035320,6,
-0x035400,4,
-0x035420,6,
-0x035500,4,
-0x035520,6,
-0x035600,4,
-0x035620,6,
-0x035700,4,
-0x035720,6,
-0x035800,4,
-0x035820,6,
-0x035900,4,
-0x035920,6,
-0x035a00,4,
-0x035a20,6,
-0x035b00,4,
-0x035b20,6,
-0x035c00,4,
-0x035c20,6,
-0x035d00,4,
-0x035d20,6,
-0x035e00,4,
-0x035e20,6,
-0x035f00,4,
-0x035f20,6,
-0x036000,4,
-0x036020,6,
-0x037400,2,
-0x037410,2,
-0x037448,1,
-0x03745c,1,
-0x037500,6,
-0x037520,6,
-0x037540,6,
-0x037560,3,
-0x037580,3,
-0x037590,3,
-0x037800,6,
-0x037828,6,
-0x037850,6,
-0x037878,6,
-0x0378a0,5,
-0x0379ac,1,
-0x0379d8,4,
-0x037a00,6,
-0x037a20,6,
-0x037a40,6,
-0x037a60,6,
-0x037a80,6,
-0x037aa0,6,
-0x037ac0,6,
-0x037ae0,6,
-0x037b00,6,
-0x037b20,6,
-0x037b40,6,
-0x037b60,6,
-0x037b80,3,
-0x037c40,1,
-0x037c80,6,
-0x037ca0,6,
-0x037cc0,3,
-0x037d00,3,
-0x037d40,16,
-0x037ff8,4,
-0x03800c,3,
-0x03801c,3,
-0x03802c,3,
-0x03803c,3,
-0x03804c,3,
-0x03805c,3,
-0x03806c,3,
-0x03807c,3,
-0x03808c,3,
-0x03809c,3,
-0x0380ac,3,
-0x0380bc,3,
-0x0380cc,3,
-0x0380dc,3,
-0x0380ec,3,
-0x0380fc,3,
-0x03810c,3,
-0x03811c,3,
-0x03812c,3,
-0x03813c,3,
-0x03814c,3,
-0x03815c,3,
-0x03816c,3,
-0x03817c,3,
-0x03818c,3,
-0x03819c,3,
-0x0381ac,3,
-0x0381bc,3,
-0x0381cc,3,
-0x0381dc,3,
-0x0381ec,3,
-0x0381fc,1,
-0x0383fc,3,
-0x03840c,3,
-0x03841c,3,
-0x03842c,3,
-0x03843c,3,
-0x03844c,3,
-0x03845c,3,
-0x03846c,3,
-0x03847c,3,
-0x03848c,3,
-0x03849c,3,
-0x0384ac,3,
-0x0384bc,3,
-0x0384cc,3,
-0x0384dc,3,
-0x0384ec,3,
-0x0384fc,3,
-0x03850c,3,
-0x03851c,3,
-0x03852c,3,
-0x03853c,3,
-0x03854c,3,
-0x03855c,3,
-0x03856c,3,
-0x03857c,3,
-0x03858c,3,
-0x03859c,3,
-0x0385ac,3,
-0x0385bc,3,
-0x0385cc,3,
-0x0385dc,3,
-0x0385ec,3,
-0x0385fc,1,
-0x0387f0,1,
-0x038800,134,
-0x038a20,6,
-0x038a40,6,
-0x038a60,6,
-0x038a80,6,
-0x038aa0,6,
-0x038ac0,6,
-0x038ae0,6,
-0x038b00,6,
-0x038b20,6,
-0x038b40,6,
-0x038b60,3,
-0x038c00,130,
-0x038f08,2,
-0x038ff8,8,
-0x039020,6,
-0x039040,6,
-0x039060,6,
-0x039080,3,
-0x039100,82,
-0x03924c,1,
-0x039290,74,
-0x0397f8,8,
-0x039820,2,
-0x039900,4,
-0x039914,6,
-0x039930,4,
-0x039944,4,
-0x0399ec,11,
-0x039a20,6,
-0x039a40,3,
-0x039a80,7,
-0x039aa0,2,
-0x039ab0,1,
-0x057000,2,
-0x05700c,3,
-0x057028,2,
-0x057038,2,
-0x057080,29,
-0x0570f8,1,
-0x057100,13,
-0x057140,13,
-0x057500,6,
-0x057520,6,
-0x057540,3,
-0x057580,10,
-0x0575c0,15,
-0x057600,2,
-0x057618,5,
-0x057630,1,
-0x057800,6,
-0x057820,3,
-0x057840,2,
-0x058000,1,
-0x058008,1,
-0x058010,14,
-0x058100,1,
-0x058108,1,
-0x058110,14,
-0x058200,32,
-0x0582e0,2,
-0x058300,32,
-0x0583e0,2,
-0x058800,6,
-0x05881c,6,
-0x058a00,3,
-0x058a10,3,
-0x058a40,3,
-0x058a50,3,
-0x058b00,3,
-0x058c04,3,
-0x058c14,16,
-0x058c84,1,
-0x058c8c,1,
-0x058e00,31,
-0x058e80,1,
-0x058e88,3,
-0x058f00,31,
-0x058f80,1,
-0x058f88,3,
-0x059000,22,
-0x059100,26,
-0x059200,10,
-0x059244,5,
-0x0595f8,3,
-0x059608,3,
-0x0596f4,45,
-0x059800,31,
-0x059a00,6,
-0x059a20,6,
-0x059a40,6,
-0x059a60,6,
-0x059a80,6,
-0x059aa0,6,
-0x059ac0,6,
-0x059ae0,6,
-0x059b00,3,
-0x059c00,20,
-0x059c74,1,
-0x059c80,20,
-0x059cf4,1,
-0x059d00,20,
-0x059d74,1,
-0x059d80,20,
-0x059df4,1,
-0x059e00,17,
-0x05a800,3,
-0x05a814,50,
-0x05a8e0,3,
-0x05a8f0,1,
-0x05a900,6,
-0x05a920,6,
-0x05a940,6,
-0x05a960,6,
-0x05a980,6,
-0x05a9a0,6,
-0x05a9c0,3,
-0x05aa00,12,
-0x05aa34,22,
-0x05aac0,7,
-0x05aae0,3,
-0x05aaf0,1,
-0x05ab00,6,
-0x05ab20,6,
-0x05ab40,6,
-0x05ab60,6,
-0x05ab80,6,
-0x05aba0,3,
-0x05ac00,13,
-0x05ac40,11,
-0x05ac80,1,
-0x05b000,6,
-0x05b020,6,
-0x05b040,3,
-0x05b060,4,
-0x05b0f0,3,
-0x05b100,6,
-0x05b120,6,
-0x05b140,3,
-0x05b160,4,
-0x05b1f0,3,
-0x05b200,8,
-0x05b240,13,
-0x05b3f8,2,
-0x05b804,1,
-0x05b820,10,
-0x05b880,2,
-0x05b904,1,
-0x05b90c,1,
-0x05b914,1,
-0x05b91c,1,
-0x05b924,1,
-0x05b92c,1,
-0x05ba20,9,
-0x05bb00,6,
-0x05bb20,6,
-0x05bb40,6,
-0x05bb60,6,
-0x05bb80,6,
-0x05bba0,3,
-0x05bc00,16,
-0x05bd00,30,
-0x05bd80,1,
-0x05bd88,5,
-0x05bda0,1,
-0x05bda8,2,
-0x05bdc0,10,
-0x05be00,8,
-0x05be40,1,
-0x05be48,2,
-0x05bf00,24,
-0x05bf84,5,
-0x05bfa0,5,
-0x05bff8,7,
-0x05c018,3,
-0x05c028,3,
-0x05c038,63,
-0x05c140,11,
-0x05c184,10,
-0x05c1c0,22,
-0x05c220,1,
-0x05c228,2,
-0x05c240,1,
-0x05c248,7,
-0x05c268,7,
-0x05c288,3,
-0x05c298,2,
-0x05c2f4,46,
-0x05c3b4,1,
-0x05c3bc,1,
-0x05c3c4,1,
-0x05c3cc,1,
-0x05c3d4,1,
-0x05c3dc,1,
-0x05c3e4,1,
-0x05c3ec,15,
-0x05c7a0,4,
-0x05c7b8,14,
-0x05d004,1,
-0x05d00c,3,
-0x05d020,5,
-0x05d038,3,
-0x05d048,43,
-0x05d118,24,
-0x05d200,32,
-0x05d284,3,
-0x05d294,3,
-0x05d2a4,11,
-0x05d400,6,
-0x05d420,6,
-0x05d440,6,
-0x05d460,6,
-0x05d480,6,
-0x05d4a0,6,
-0x05d4c0,6,
-0x05d4e0,6,
-0x05d500,6,
-0x05d520,6,
-0x05d540,6,
-0x05d560,6,
-0x05d580,6,
-0x05d5a0,6,
-0x05d5c0,6,
-0x05d5e0,6,
-0x05d600,6,
-0x05d620,3,
-0x05d800,4,
-0x05d840,15,
-0x05d8a0,13,
-0x05d8e0,2,
-0x05d8ec,4,
-0x05d9c0,1,
-0x05d9cc,10,
-0x05dab8,10,
-0x05db04,1,
-0x05db14,3,
-0x05db24,1,
-0x05db34,3,
-0x05db44,1,
-0x05db54,3,
-0x05db64,1,
-0x05db74,3,
-0x05db94,1,
-0x05dba0,2,
-0x05dc00,26,
-0x05dc80,14,
-0x05dcc0,27,
-0x05dd40,11,
-0x05dd80,5,
-0x05dda0,7,
-0x05ddc0,7,
-0x05dde0,6,
-0x05de00,14,
-0x05de40,13,
-0x05de80,7,
-0x05dea0,6,
-0x05e400,6,
-0x05e420,6,
-0x05e440,3,
-0x05e480,4,
-0x060000,32,
-0x060200,64,
-0x060400,96,
-0x060600,2,
-0x060800,96,
-0x060a00,2,
-0x060c20,11,
-0x060f80,6,
-0x060fa0,7,
-0x060fd8,2,
-0x060fe4,1,
-0x060ff0,10,
-0x061020,16,
-0x061084,1,
-0x0610c0,16,
-0x061204,1,
-0x061220,8,
-0x061250,3,
-0x061260,5,
-0x061280,6,
-0x0612a0,6,
-0x061300,3,
-0x061310,2,
-0x061320,2,
-0x061330,1,
-0x061340,3,
-0x062000,16,
-0x062060,13,
-0x062100,2,
-0x06210c,2,
-0x062118,1,
-0x062120,1,
-0x062180,10,
-0x0621b0,2,
-0x0621c0,2,
-0x0621d0,5,
-0x062200,3,
-0x062210,3,
-0x062280,4,
-0x0622b8,2,
-0x063600,6,
-0x063620,14,
-0x063660,5,
-0x063684,1,
-0x063698,15,
-0x063700,1,
-0x063800,6,
-0x063820,12,
-0x063860,5,
-0x063884,1,
-0x063898,15,
-0x063904,1,
-0x06390c,5,
-0x063940,1,
-0x063950,2,
-0x0639fc,1,
-0x064000,5,
-0x064020,1,
-0x064030,1,
-0x064040,1,
-0x064050,1,
-0x064060,1,
-0x064070,1,
-0x064080,1,
-0x064090,1,
-0x0640a0,1,
-0x0640b0,1,
-0x0640c0,1,
-0x0640d0,1,
-0x0640e0,1,
-0x0640f0,1,
-0x064100,1,
-0x064110,1,
-0x064120,1,
-0x064130,1,
-0x064140,1,
-0x064150,1,
-0x064160,1,
-0x064170,1,
-0x064180,1,
-0x064190,1,
-0x0641a0,1,
-0x0641b0,1,
-0x0641c0,1,
-0x0641d0,1,
-0x0641e0,1,
-0x0641f0,1,
-0x064200,1,
-0x064210,1,
-0x064220,1,
-0x064230,1,
-0x064240,1,
-0x064250,1,
-0x064260,1,
-0x064270,1,
-0x064280,1,
-0x064290,1,
-0x0642a0,1,
-0x0642b0,1,
-0x0642c0,1,
-0x0642d0,1,
-0x0642e0,1,
-0x0642f0,1,
-0x064300,1,
-0x064310,1,
-0x064320,1,
-0x064330,1,
-0x064340,1,
-0x064350,1,
-0x064360,1,
-0x064370,1,
-0x064380,1,
-0x064390,1,
-0x0643a0,1,
-0x0643b0,1,
-0x0643c0,1,
-0x0643d0,1,
-0x0643e0,1,
-0x0643f0,1,
-0x064400,1,
-0x064410,1,
-0x064420,1,
-0x064430,1,
-0x064440,1,
-0x064450,1,
-0x064460,1,
-0x064470,1,
-0x064480,1,
-0x064490,1,
-0x0644a0,1,
-0x0644b0,1,
-0x0644c0,1,
-0x0644d0,1,
-0x0644e0,1,
-0x0644f0,1,
-0x064500,1,
-0x064510,1,
-0x064520,1,
-0x064530,1,
-0x064540,1,
-0x064550,1,
-0x064560,1,
-0x064570,1,
-0x064580,1,
-0x064590,1,
-0x0645a0,1,
-0x0645b0,1,
-0x0645c0,1,
-0x0645d0,1,
-0x0645e0,1,
-0x0645f0,1,
-0x064600,1,
-0x064610,1,
-0x064620,1,
-0x064630,1,
-0x064640,1,
-0x064650,1,
-0x064660,1,
-0x064670,1,
-0x064680,1,
-0x064690,1,
-0x0646a0,1,
-0x0646b0,1,
-0x0646c0,1,
-0x0646d0,1,
-0x0646e0,1,
-0x0646f0,1,
-0x064700,1,
-0x064710,1,
-0x064720,1,
-0x064730,1,
-0x064740,1,
-0x064750,1,
-0x064760,1,
-0x064770,1,
-0x064780,1,
-0x064790,1,
-0x0647a0,1,
-0x0647b0,1,
-0x0647c0,1,
-0x0647d0,1,
-0x0647e0,1,
-0x0647f0,1,
-0x064800,1,
-0x064810,1,
-0x064820,1,
-0x064830,1,
-0x064840,1,
-0x064850,1,
-0x064860,1,
-0x064870,1,
-0x064880,1,
-0x064890,1,
-0x0648a0,1,
-0x0648b0,1,
-0x0648c0,1,
-0x0648d0,1,
-0x0648e0,1,
-0x0648f0,1,
-0x064900,1,
-0x064910,1,
-0x064920,1,
-0x064930,1,
-0x064940,1,
-0x064950,1,
-0x064960,1,
-0x064970,1,
-0x064980,1,
-0x064990,1,
-0x0649a0,1,
-0x0649b0,1,
-0x0649c0,1,
-0x0649d0,1,
-0x0649e0,1,
-0x0649f0,1,
-0x064a00,1,
-0x064a10,1,
-0x064a20,1,
-0x064a30,1,
-0x064a40,1,
-0x064a50,1,
-0x064a60,1,
-0x064a70,1,
-0x064a80,1,
-0x064a90,1,
-0x064aa0,1,
-0x064ab0,1,
-0x064ac0,1,
-0x064ad0,1,
-0x064ae0,1,
-0x064af0,1,
-0x064b00,1,
-0x064b10,1,
-0x064b20,1,
-0x064b30,1,
-0x064b40,1,
-0x064b50,1,
-0x064b60,1,
-0x064b70,1,
-0x064b80,1,
-0x064b90,1,
-0x064ba0,1,
-0x064bb0,1,
-0x064bc0,1,
-0x064bd0,1,
-0x064be0,1,
-0x064bf0,1,
-0x064c00,1,
-0x064c10,1,
-0x064c20,1,
-0x064c30,1,
-0x064c40,1,
-0x064c50,1,
-0x064c60,1,
-0x064c70,1,
-0x064c80,1,
-0x064c90,1,
-0x064ca0,1,
-0x064cb0,1,
-0x064cc0,1,
-0x064cd0,1,
-0x064ce0,1,
-0x064cf0,1,
-0x064d00,1,
-0x064d10,1,
-0x064d20,1,
-0x064d30,1,
-0x064d40,1,
-0x064d50,1,
-0x064d60,1,
-0x064d70,1,
-0x064d80,1,
-0x064d90,1,
-0x064da0,1,
-0x064db0,1,
-0x064dc0,1,
-0x064dd0,1,
-0x064de0,1,
-0x064df0,1,
-0x064e00,1,
-0x064e10,1,
-0x064e20,1,
-0x064e30,1,
-0x064e40,1,
-0x064e50,1,
-0x064e60,1,
-0x064e70,1,
-0x064e80,1,
-0x064e90,1,
-0x064ea0,1,
-0x064eb0,1,
-0x064ec0,1,
-0x064ed0,1,
-0x064ee0,1,
-0x064ef0,1,
-0x064f00,1,
-0x064f10,1,
-0x064f20,1,
-0x064f30,1,
-0x064f40,1,
-0x064f50,1,
-0x064f60,1,
-0x064f70,1,
-0x064f80,1,
-0x064f90,1,
-0x064fa0,1,
-0x064fb0,1,
-0x064fc0,1,
-0x064fd0,1,
-0x064fe0,1,
-0x064ff0,1,
-0x065000,8,
-0x066000,5,
-0x066020,1,
-0x066030,1,
-0x066040,1,
-0x066050,1,
-0x066060,1,
-0x066070,1,
-0x066080,1,
-0x066090,1,
-0x0660a0,1,
-0x0660b0,1,
-0x0660c0,1,
-0x0660d0,1,
-0x0660e0,1,
-0x0660f0,1,
-0x066100,1,
-0x066110,1,
-0x066120,1,
-0x066130,1,
-0x066140,1,
-0x066150,1,
-0x066160,1,
-0x066170,1,
-0x066180,1,
-0x066190,1,
-0x0661a0,1,
-0x0661b0,1,
-0x0661c0,1,
-0x0661d0,1,
-0x0661e0,1,
-0x0661f0,1,
-0x066200,1,
-0x066210,1,
-0x066220,1,
-0x066230,1,
-0x066240,1,
-0x066250,1,
-0x066260,1,
-0x066270,1,
-0x066280,1,
-0x066290,1,
-0x0662a0,1,
-0x0662b0,1,
-0x0662c0,1,
-0x0662d0,1,
-0x0662e0,1,
-0x0662f0,1,
-0x066300,1,
-0x066310,1,
-0x066320,1,
-0x066330,1,
-0x066340,1,
-0x066350,1,
-0x066360,1,
-0x066370,1,
-0x066380,1,
-0x066390,1,
-0x0663a0,1,
-0x0663b0,1,
-0x0663c0,1,
-0x0663d0,1,
-0x0663e0,1,
-0x0663f0,1,
-0x066400,1,
-0x066410,1,
-0x066420,1,
-0x066430,1,
-0x066440,1,
-0x066450,1,
-0x066460,1,
-0x066470,1,
-0x066480,1,
-0x066490,1,
-0x0664a0,1,
-0x0664b0,1,
-0x0664c0,1,
-0x0664d0,1,
-0x0664e0,1,
-0x0664f0,1,
-0x066500,1,
-0x066510,1,
-0x066520,1,
-0x066530,1,
-0x066540,1,
-0x066550,1,
-0x066560,1,
-0x066570,1,
-0x066580,1,
-0x066590,1,
-0x0665a0,1,
-0x0665b0,1,
-0x0665c0,1,
-0x0665d0,1,
-0x0665e0,1,
-0x0665f0,1,
-0x066600,1,
-0x066610,1,
-0x066620,1,
-0x066630,1,
-0x066640,1,
-0x066650,1,
-0x066660,1,
-0x066670,1,
-0x066680,1,
-0x066690,1,
-0x0666a0,1,
-0x0666b0,1,
-0x0666c0,1,
-0x0666d0,1,
-0x0666e0,1,
-0x0666f0,1,
-0x066700,1,
-0x066710,1,
-0x066720,1,
-0x066730,1,
-0x066740,1,
-0x066750,1,
-0x066760,1,
-0x066770,1,
-0x066780,1,
-0x066790,1,
-0x0667a0,1,
-0x0667b0,1,
-0x0667c0,1,
-0x0667d0,1,
-0x0667e0,1,
-0x0667f0,1,
-0x066800,1,
-0x066810,1,
-0x066820,1,
-0x066830,1,
-0x066840,1,
-0x066850,1,
-0x066860,1,
-0x066870,1,
-0x066880,1,
-0x066890,1,
-0x0668a0,1,
-0x0668b0,1,
-0x0668c0,1,
-0x0668d0,1,
-0x0668e0,1,
-0x0668f0,1,
-0x066900,1,
-0x066910,1,
-0x066920,1,
-0x066930,1,
-0x066940,1,
-0x066950,1,
-0x066960,1,
-0x066970,1,
-0x066980,1,
-0x066990,1,
-0x0669a0,1,
-0x0669b0,1,
-0x0669c0,1,
-0x0669d0,1,
-0x0669e0,1,
-0x0669f0,1,
-0x066a00,1,
-0x066a10,1,
-0x066a20,1,
-0x066a30,1,
-0x066a40,1,
-0x066a50,1,
-0x066a60,1,
-0x066a70,1,
-0x066a80,1,
-0x066a90,1,
-0x066aa0,1,
-0x066ab0,1,
-0x066ac0,1,
-0x066ad0,1,
-0x066ae0,1,
-0x066af0,1,
-0x066b00,1,
-0x066b10,1,
-0x066b20,1,
-0x066b30,1,
-0x066b40,1,
-0x066b50,1,
-0x066b60,1,
-0x066b70,1,
-0x066b80,1,
-0x066b90,1,
-0x066ba0,1,
-0x066bb0,1,
-0x066bc0,1,
-0x066bd0,1,
-0x066be0,1,
-0x066bf0,1,
-0x066c00,1,
-0x066c10,1,
-0x066c20,1,
-0x066c30,1,
-0x066c40,1,
-0x066c50,1,
-0x066c60,1,
-0x066c70,1,
-0x066c80,1,
-0x066c90,1,
-0x066ca0,1,
-0x066cb0,1,
-0x066cc0,1,
-0x066cd0,1,
-0x066ce0,1,
-0x066cf0,1,
-0x066d00,1,
-0x066d10,1,
-0x066d20,1,
-0x066d30,1,
-0x066d40,1,
-0x066d50,1,
-0x066d60,1,
-0x066d70,1,
-0x066d80,1,
-0x066d90,1,
-0x066da0,1,
-0x066db0,1,
-0x066dc0,1,
-0x066dd0,1,
-0x066de0,1,
-0x066df0,1,
-0x066e00,1,
-0x066e10,1,
-0x066e20,1,
-0x066e30,1,
-0x066e40,1,
-0x066e50,1,
-0x066e60,1,
-0x066e70,1,
-0x066e80,1,
-0x066e90,1,
-0x066ea0,1,
-0x066eb0,1,
-0x066ec0,1,
-0x066ed0,1,
-0x066ee0,1,
-0x066ef0,1,
-0x066f00,1,
-0x066f10,1,
-0x066f20,1,
-0x066f30,1,
-0x066f40,1,
-0x066f50,1,
-0x066f60,1,
-0x066f70,1,
-0x066f80,1,
-0x066f90,1,
-0x066fa0,1,
-0x066fb0,1,
-0x066fc0,1,
-0x066fd0,1,
-0x066fe0,1,
-0x066ff0,1,
-0x067000,16,
-0x067100,8,
-0x067124,7,
-0x067144,7,
-0x067200,3,
-0x0677f8,2,
-0x068000,6,
-0x068020,20,
-0x068080,10,
-0x0680b0,1,
-0x0680c0,3,
-0x0680d0,3,
-0x068100,2,
-0x068110,8,
-0x068140,15,
-0x068180,3,
-0x068190,1,
-0x068200,6,
-0x068220,20,
-0x068280,10,
-0x0682b0,1,
-0x0682c0,3,
-0x0682d0,3,
-0x068300,2,
-0x068310,8,
-0x068340,15,
-0x068380,3,
-0x068390,1,
-0x068400,6,
-0x068420,20,
-0x068480,10,
-0x0684b0,1,
-0x0684c0,3,
-0x0684d0,3,
-0x068500,2,
-0x068510,8,
-0x068540,15,
-0x068580,3,
-0x068590,1,
-0x068608,2,
-0x068620,1,
-0x068648,2,
-0x068660,1,
-0x068688,2,
-0x0686a0,1,
-0x0686c8,2,
-0x0686e0,1,
-0x068708,2,
-0x068720,1,
-0x068748,2,
-0x068760,1,
-0x068788,2,
-0x0687a0,1,
-0x0687c8,2,
-0x0687e0,1,
-0x068804,1,
-0x06880c,1,
-0x068814,1,
-0x06881c,26,
-0x068890,2,
-0x0688b0,8,
-0x068900,1,
-0x068a00,13,
-0x068a40,2,
-0x068a4c,4,
-0x068a60,12,
-0x069000,19,
-0x069050,8,
-0x0690a0,11,
-0x0690d0,7,
-0x069300,13,
-0x069340,7,
-0x069360,8,
-0x069800,65,
-0x069b00,2,
-0x069b20,2,
-0x06a000,12,
-0x06a040,10,
-0x06a080,12,
-0x06a0c0,10,
-0x06a100,6,
-0x06a120,6,
-0x06a140,3,
-0x06a184,1,
-0x06a190,11,
-0x06a1e0,7,
-0x06a200,10,
-0x06a240,10,
-0x06a280,16,
-0x06a2d8,9,
-0x06a800,6,
-0x06a820,6,
-0x06a840,6,
-0x06a860,6,
-0x06a880,6,
-0x06a8a0,6,
-0x06a8c0,6,
-0x06a8e0,3,
-0x06aa00,6,
-0x06ab00,6,
-0x06ab20,6,
-0x06ab40,6,
-0x06ab60,6,
-0x06ab80,6,
-0x06aba0,6,
-0x06abc0,3,
-0x070b00,14,
-0x070b40,14,
-0x070b84,1,
-0x070c00,1,
-0x070c10,3,
-0x070c3c,3,
-0x070c50,8,
-0x071000,7,
-0x072000,7,
-0x073000,114,
-0x0731d0,3,
-0x0731e0,3,
-0x0731f0,3,
-0x073200,2,
-0x073210,7,
-0x073230,1,
-0x073240,7,
-0x073260,40,
-0x073338,15,
-0x074000,4,
-0x074044,3,
-0x074060,4,
-0x074080,9,
-0x074100,48,
-0x075000,1024,
-0x07e080,16,
-0x07fa00,6,
-0x07fa80,3,
-0x07fa90,2,
-0x07fb00,7,
-0x07fb20,17,
-0x07fb70,1,
-0x07fb80,7,
-0x07fc00,3,
-0x07fc28,3,
-0x07fc50,3,
-0x07fc78,3,
-0x07fca0,45,
-0x07fdac,1,
-0x07fdd8,4,
-0x07fe00,6,
-0x07fe20,6,
-0x07fe40,6,
-0x07fe60,6,
-0x07fe80,6,
-0x07fea0,6,
-0x07fec0,3,
-0x080000,32771,
-0x0a0010,2,
-0x0a001c,6,
-0x0a0038,2,
-0x0a0048,2,
-0x0a0058,19,
-0x0a00ac,14,
-0x0a00f0,1,
-0x0a00fc,35,
-0x0a01e0,1,
-0x0a01e8,5,
-0x0a0200,3,
-0x0a0210,2,
-0x0a021c,6,
-0x0a0238,2,
-0x0a0248,2,
-0x0a0258,19,
-0x0a02ac,14,
-0x0a02f0,1,
-0x0a02fc,35,
-0x0a03e0,1,
-0x0a03e8,5,
-0x0a0400,3,
-0x0a0410,2,
-0x0a041c,6,
-0x0a0438,2,
-0x0a0448,2,
-0x0a0458,19,
-0x0a04ac,14,
-0x0a04f0,1,
-0x0a04fc,35,
-0x0a05e0,1,
-0x0a05e8,5,
-0x0a0600,3,
-0x0a0610,2,
-0x0a061c,6,
-0x0a0638,2,
-0x0a0648,2,
-0x0a0658,19,
-0x0a06ac,14,
-0x0a06f0,1,
-0x0a06fc,35,
-0x0a07e0,1,
-0x0a07e8,5,
-0x0a0800,3,
-0x0a0810,2,
-0x0a081c,6,
-0x0a0838,2,
-0x0a0848,2,
-0x0a0858,19,
-0x0a08ac,14,
-0x0a08f0,1,
-0x0a08fc,35,
-0x0a09e0,1,
-0x0a09e8,5,
-0x0a0a00,3,
-0x0a0a10,2,
-0x0a0a1c,6,
-0x0a0a38,2,
-0x0a0a48,2,
-0x0a0a58,19,
-0x0a0aac,14,
-0x0a0af0,1,
-0x0a0afc,35,
-0x0a0be0,1,
-0x0a0be8,5,
-0x0a0c00,3,
-0x0a0c10,2,
-0x0a0c1c,6,
-0x0a0c38,2,
-0x0a0c48,2,
-0x0a0c58,19,
-0x0a0cac,14,
-0x0a0cf0,1,
-0x0a0cfc,35,
-0x0a0de0,1,
-0x0a0de8,5,
-0x0a0e00,3,
-0x0a0e10,2,
-0x0a0e1c,6,
-0x0a0e38,2,
-0x0a0e48,2,
-0x0a0e58,19,
-0x0a0eac,14,
-0x0a0ef0,1,
-0x0a0efc,35,
-0x0a0fe0,1,
-0x0a0fe8,5,
-0x0a1000,128,
-0x0a1208,2,
-0x0a1218,2,
-0x0a1404,17,
-0x0a1484,1,
-0x0a14a0,17,
-0x0a1504,1,
-0x0a1540,17,
-0x0a15e0,8,
-0x0a1604,3,
-0x0a1700,33,
-0x0a1800,6,
-0x0a1820,10,
-0x0a1870,1,
-0x0a1c00,2,
-0x0a1c28,2,
-0x0a1c50,2,
-0x0a1c78,2,
-0x0a1ca0,7,
-0x0a1dac,1,
-0x0a1dd8,4,
-0x0a1e00,6,
-0x0a1e20,6,
-0x0a1e40,6,
-0x0a1e60,6,
-0x0a1e80,3,
-0x0a2010,2,
-0x0a201c,1,
-0x0a2028,2,
-0x0a2040,8,
-0x0a2064,5,
-0x0a20a0,14,
-0x0a20f4,16,
-0x0a2138,5,
-0x0a2150,3,
-0x0a2160,8,
-0x0a2184,3,
-0x0a21a0,16,
-0x0a2200,4,
-0x0a2218,50,
-0x0a2300,8,
-0x0a2330,3,
-0x0a2600,1,
-0x0a2800,6,
-0x0a2820,6,
-0x0a2840,6,
-0x0a2860,6,
-0x0a2880,3,
-0x0a2900,6,
-0x0a2920,6,
-0x0a2940,3,
-0x0a2980,6,
-0x0a29a0,6,
-0x0a29c0,6,
-0x0a29e0,3,
-0x0a2a00,6,
-0x0a2a20,3,
-0x0a2a30,1,
-0x0a3120,6,
-0x0a3140,6,
-0x0a3160,6,
-0x0a3180,6,
-0x0a31a0,6,
-0x0a31c0,6,
-0x0a31e0,6,
-0x0a3200,6,
-0x0a3220,6,
-0x0a3604,2,
-0x0a3700,16,
-0x0a3a00,1,
-0x0a3b00,8,
-0x0a8000,8192,
-0x0c1000,1,
-0x0c1028,1,
-0x0c1050,1,
-0x0c1078,1,
-0x0c10a0,7,
-0x0c11ac,1,
-0x0c11d8,4,
-0x0c1200,6,
-0x0c1220,6,
-0x0c1240,3,
-0x0c1400,6,
-0x0c1420,3,
-0x0c1430,4,
-0x0c1500,13,
-0x0c1540,3,
-0x0c2000,14,
-0x0c2040,6,
-0x0c2060,6,
-0x0c2080,6,
-0x0c20a0,3,
-0x0c2100,9,
-0x0c2204,1,
-0x0c220c,6,
-0x0c2240,13,
-0x0c2280,16,
-0x0c2400,8,
-0x0c2424,15,
-0x0c2464,15,
-0x0c24a4,15,
-0x0c24e4,30,
-0x0c2580,10,
-0x0c25ac,1,
-0x0c25b4,5,
-0x0c25cc,1,
-0x0c25d4,5,
-0x0c25ec,1,
-0x0c25f4,13,
-0x0c2680,4,
-0x0c2694,2,
-0x0c26a0,5,
-0x0c26c0,5,
-0x0c26e0,4,
-0x0c2800,19,
-0x0c2850,10,
-0x0c2880,19,
-0x0c28d0,10,
-0x0c2900,19,
-0x0c2950,10,
-0x0c2980,19,
-0x0c29d0,10,
-0x0c2a00,19,
-0x0c2a50,10,
-0x0c2a80,19,
-0x0c2ad0,10,
-0x0c2b00,19,
-0x0c2b50,10,
-0x0c2b80,19,
-0x0c2bd0,10,
-0x0c2c00,19,
-0x0c2c60,6,
-0x0c2c84,1,
-0x0c2c94,8,
-0x0c2cb8,14,
-0x0c3000,29,
-0x0c3078,4,
-0x0c3090,2,
-0x0c30a0,7,
-0x0c30c0,11,
-0x0c3100,14,
-0x0c3140,14,
-0x0c3180,61,
-0x0c3278,4,
-0x0c3290,2,
-0x0c32a0,7,
-0x0c32c0,11,
-0x0c3300,14,
-0x0c3340,14,
-0x0c3380,61,
-0x0c3478,4,
-0x0c3490,2,
-0x0c34a0,7,
-0x0c34c0,11,
-0x0c3500,14,
-0x0c3540,14,
-0x0c3580,61,
-0x0c3678,4,
-0x0c3690,2,
-0x0c36a0,7,
-0x0c36c0,11,
-0x0c3700,14,
-0x0c3740,14,
-0x0c3780,69,
-0x0c3c00,6,
-0x0c3c40,14,
-0x0c3c80,9,
-0x0c3d00,9,
-0x0c3d2c,1,
-0x0c3d40,3,
-0x0c3d60,1,
-0x0c3d80,3,
-0x0c3e00,2,
-0x0c3e0c,1,
-0x0c3e14,5,
-0x0c3e2c,1,
-0x0c3e34,5,
-0x0c3e4c,1,
-0x0c3e54,5,
-0x0c3e6c,1,
-0x0c3e74,5,
-0x0c3e8c,1,
-0x0c3e94,5,
-0x0c3eac,1,
-0x0c3eb4,3,
-0x0c8000,25,
-0x0c8068,4,
-0x0c807c,4,
-0x0c80a0,3,
-0x0c80b0,2,
-0x0c80c8,6,
-0x0c8180,6,
-0x0ca000,3,
-0x0ca010,21,
-0x0ca068,14,
-0x0ca0a4,2,
-0x0ca0b0,2,
-0x0ca0c0,14,
-0x0ca100,14,
-0x0ca140,4,
-0x0ca160,1,
-0x0ca184,1,
-0x0ca194,2,
-0x0ca1b8,3,
-0x0ca1d0,5,
-0x0ca1e8,3,
-0x0ca1f8,8,
-0x0ca220,6,
-0x0ca240,3,
-0x0ca280,6,
-0x0ca2a0,6,
-0x0ca2c0,3,
-0x0ca300,6,
-0x0ca320,6,
-0x0ca340,6,
-0x0ca360,6,
-0x0ca380,6,
-0x0ca3a0,6,
-0x0ca3c0,6,
-0x0ca3e0,6,
-0x0ca400,6,
-0x0ca6fc,1,
-0x0ca800,72,
-0x0cb000,4,
-0x0cb044,1,
-0x0cb04c,1,
-0x0cb100,8,
-0x0cb1f0,6,
-0x0cb210,3,
-0x0cb220,2,
-0x0cb230,3,
-0x0cb240,2,
-0x0cb250,3,
-0x0cb260,2,
-0x0cb270,3,
-0x0cb280,1,
-0x0cb400,5,
-0x0cb59c,1,
-0x0cb5ac,9,
-0x0d0000,4,
-0x0d0014,1,
-0x0d0020,3,
-0x0d0040,8,
-0x0d007c,2,
-0x0d00a0,6,
-0x0d00c0,6,
-0x0d00e0,6,
-0x0d0100,4,
-0x0d0114,1,
-0x0d0120,3,
-0x0d0130,3,
-0x0d0140,8,
-0x0d017c,2,
-0x0d01a0,6,
-0x0d01c0,6,
-0x0d01e0,6,
-0x0d0200,4,
-0x0d0214,1,
-0x0d0220,3,
-0x0d0230,3,
-0x0d0240,8,
-0x0d027c,2,
-0x0d02a0,6,
-0x0d02c0,6,
-0x0d02e0,6,
-0x0d0300,4,
-0x0d0314,1,
-0x0d0320,3,
-0x0d0330,3,
-0x0d0340,8,
-0x0d037c,2,
-0x0d03a0,6,
-0x0d03c0,6,
-0x0d03e0,6,
-0x0d0400,6,
-0x0d0440,6,
-0x0d0480,3,
-0x0d04c0,3,
-0x0d0500,2,
-0x0d050c,4,
-0x0d0520,2,
-0x0d052c,4,
-0x0d0540,2,
-0x0d0c00,13,
-0x0d0c40,12,
-0x0d0c80,13,
-0x0d0cc0,12,
-0x0d0d00,14,
-0x0d0d40,6,
-0x0d0d80,14,
-0x0d0dc0,6,
-0x0d0e00,11,
-0x0d0e40,6,
-0x0d0e60,6,
-0x0d0e80,6,
-0x0d0ea0,6,
-0x0d1000,2,
-0x0d1014,4,
-0x0d1040,3,
-0x0d1050,3,
-0x0d1080,43,
-0x0d1140,11,
-0x0d1180,1,
-0x0d119c,15,
-0x0d1200,12,
-0x0d1300,1,
-0x0d1308,6,
-0x0d1324,10,
-0x0d1380,1,
-0x0d1388,6,
-0x0d13a4,10,
-0x0d1400,7,
-0x0d1420,7,
-0x0d1500,12,
-0x0d1540,12,
-0x0d1580,4,
-0x0d1800,14,
-0x0d183c,9,
-0x0d1864,6,
-0x0d1880,2,
-0x0d1890,4,
-0x0d1900,14,
-0x0d193c,9,
-0x0d1964,6,
-0x0d1980,2,
-0x0d1990,4,
-0x0d1a00,16,
-0x0d1a50,4,
-0x0d1a80,16,
-0x0d1ad0,4,
-0x0d1b00,6,
-0x0d1b20,6,
-0x0d1b40,3,
-0x0d1b80,6,
-0x0d1ba0,6,
-0x0d1bc0,3,
-0x0d1c00,6,
-0x0d1c20,6,
-0x0d1c40,3,
-0x0d1c80,6,
-0x0d1ca0,6,
-0x0d1cc0,3,
-0x0d1d10,2,
-0x0d1d1c,1,
-0x0d1d50,2,
-0x0d1d5c,1,
-0x0d1d80,1,
-0x0d1da0,1,
-0x0d1da8,4,
-0x0d1dc0,1,
-0x0d1de0,1,
-0x0d1de8,4,
-0x0d1e00,13,
-0x0d1e40,6,
-0x0d1e60,6,
-0x0d1e80,6,
-0x0d1ea0,6,
-0x0d1ec0,7,
-0x0d1ee0,7,
-0x0d1f00,12,
-0x0d1f34,2,
-0x0d1f40,3,
-0x0d1f50,8,
-0x0d7400,1,
-0x0d7408,3,
-0x0d7438,1,
-0x0d7444,1,
-0x0d7450,6,
-0x0d7540,6,
-0x0d7600,1,
-0x0d8000,6,
-0x0d8020,3,
-0x0d8030,1,
-0x0d8038,4,
-0x0d8100,6,
-0x0d8120,10,
-0x0d8150,10,
-0x0d8180,10,
-0x0d81b0,6,
-0x0d81d0,6,
-0x0d81f0,2,
-0x0d8800,6,
-0x0d8820,3,
-0x0d8830,4,
-0x0d8918,2,
-0x0d8924,1,
-0x0d8934,3,
-0x0d8958,2,
-0x0d8964,1,
-0x0d8974,3,
-0x0d9020,4,
-0x0d9040,11,
-0x0d9074,2,
-0x0d9080,4,
-0x0d90b0,22,
-0x0d9110,2,
-0x0d9120,22,
-0x0d9180,2,
-0x0d91a0,6,
-0x0d91c0,9,
-0x0d9200,42,
-0x0d92c0,1,
-0x0d92c8,13,
-0x0d9300,25,
-0x0d936c,4,
-0x0d9380,2,
-0x0d93a0,1,
-0x0d93c0,11,
-0x0d9404,3,
-0x0d9420,11,
-0x0d9480,6,
-0x0d9500,1,
-0x0d9520,6,
-0x0d9540,3,
-0x0d9550,7,
-0x0d9570,18,
-0x0d95bc,5,
-0x0d9800,480,
-0x0da020,4,
-0x0da040,11,
-0x0da074,2,
-0x0da080,4,
-0x0da0b0,22,
-0x0da110,2,
-0x0da120,22,
-0x0da180,2,
-0x0da1a0,6,
-0x0da1c0,9,
-0x0da200,42,
-0x0da2c0,1,
-0x0da2c8,13,
-0x0da300,25,
-0x0da36c,4,
-0x0da380,2,
-0x0da3a0,1,
-0x0da3c0,11,
-0x0da404,3,
-0x0da420,11,
-0x0da480,6,
-0x0da500,1,
-0x0da520,6,
-0x0da540,3,
-0x0da550,7,
-0x0da570,18,
-0x0da5bc,5,
-0x0da800,480,
-0x0df800,5,
-0x0df818,1,
-0x0df854,6,
-0x0df880,4,
-0x0df8a4,1,
-0x0df8ac,2,
-0x0df900,5,
-0x0df918,1,
-0x0df954,6,
-0x0df980,4,
-0x0df9a4,1,
-0x0df9ac,2,
-0x0e8000,1,
-0x0e8008,2,
-0x0e8058,3,
-0x0e8120,2,
-0x0e8130,2,
-0x0e8140,1,
-0x0e8184,11,
-0x0e81c4,3,
-0x0e81dc,3,
-0x0e8280,13,
-0x0e8400,16,
-0x0e8444,7,
-0x0e8500,4,
-0x0e8804,1,
-0x0e8824,7,
-0x0e8844,1,
-0x0e884c,27,
-0x0e88d4,2,
-0x0e8c00,1,
-0x0e8c08,3,
-0x0e8c80,20,
-0x0e8d00,3,
-0x0e8d20,6,
-0x0e8d80,4,
-0x0e8da0,6,
-0x0e8dbc,7,
-0x0e8e00,21,
-0x0e8e80,6,
-0x0e8ea0,6,
-0x0e8ec0,3,
-0x0e9000,35,
-0x0e9090,2,
-0x0e90f0,1,
-0x0e90f8,1,
-0x0e9100,1,
-0x0e9108,5,
-0x0e9138,2,
-0x0e9144,1,
-0x0e9160,13,
-0x0e91a0,3,
-0x0e9200,2,
-0x0e9214,11,
-0x0e9244,7,
-0x0e92b8,2,
-0x0e92c4,7,
-0x0e9310,1,
-0x0e9340,4,
-0x0e9380,7,
-0x0e9400,14,
-0x0e9440,10,
-0x0e947c,1,
-0x0e9700,2,
-0x0e9720,8,
-0x0e9800,3,
-0x0e9810,3,
-0x0e9820,3,
-0x0e9830,3,
-0x0e9840,3,
-0x0e9850,3,
-0x0e9860,3,
-0x0e9870,3,
-0x0e9880,3,
-0x0e9890,3,
-0x0e98a0,3,
-0x0e98b0,3,
-0x0e98c0,3,
-0x0e98d0,3,
-0x0e98e0,3,
-0x0e98f0,3,
-0x0e9900,68,
-0x0e9c00,36,
-0x0e9d00,3,
-0x0e9d40,2,
-0x0e9d4c,1,
-0x0e9d84,1,
-0x0e9d90,4,
-0x0e9e00,6,
-0x0e9e20,6,
-0x0e9e40,6,
-0x0e9e60,3,
-0x0e9e80,6,
-0x0e9ea0,3,
-0x0e9f70,17,
-0x0e9fc0,2,
-0x0ea000,1,
-0x0ea028,1,
-0x0ea050,1,
-0x0ea078,1,
-0x0ea0a0,3,
-0x0ea1ac,1,
-0x0ea1d8,4,
-0x0ea200,6,
-0x0ea220,6,
-0x0ea240,3,
-0x0ea400,6,
-0x0ea420,2,
-0x0ea430,2,
-0x0ea440,2,
-0x0ea450,6,
-0x0ea470,2,
-0x0ea490,24,
-0x0ea520,8,
-0x0ea604,1,
-0x0ea6f0,72,
-0x0f0000,3,
-0x0f0014,27,
-0x0f00f0,3,
-0x0f0100,5,
-0x0f0118,1,
-0x0f0130,4,
-0x0f0180,3,
-0x0f0190,2,
-0x0f01a8,2,
-0x0f01c0,2,
-0x0f01d0,10,
-0x0f0200,62,
-0x0f0404,9,
-0x0f0440,12,
-0x0f0480,5,
-0x0f04b8,18,
-0x0f0580,4,
-0x0f05a0,1,
-0x0f05c0,8,
-0x0f0800,17,
-0x0f0850,9,
-0x0f0880,9,
-0x0f08b0,9,
-0x0f08e0,9,
-0x0f0920,4,
-0x0f093c,5,
-0x0f095c,5,
-0x0f097c,5,
-0x0f099c,5,
-0x0f09bc,5,
-0x0f09dc,1,
-0x0f0a90,3,
-0x0f0c00,128,
-0x0f0e04,1,
-0x0f0e14,9,
-0x0f0e3c,1,
-0x0f1000,6,
-0x0f1028,4,
-0x0f1040,2,
-0x0f104c,2,
-0x0f1080,10,
-0x0f10c0,1,
-0x0f10e0,2,
-0x0f10ec,1,
-0x0f10f4,3,
-0x0f1400,6,
-0x0f1420,6,
-0x0f1440,6,
-0x0f1460,6,
-0x0f1480,6,
-0x0f14a0,6,
-0x0f14c0,6,
-0x0f14e0,6,
-0x0f1500,6,
-0x0f1520,6,
-0x0f1540,6,
-0x0f1560,6,
-0x0f1580,6,
-0x0f15a0,6,
-0x0f15c0,6,
-0x0f15e0,6,
-0x0f1600,6,
-0x0f1620,3,
-0x0f1800,3,
-0x0f1880,22,
-0x0f2000,2,
-0x0f200c,3,
-0x0f2020,10,
-0x0f2060,6,
-0x0f2080,2,
-0x0f208c,3,
-0x0f20a0,10,
-0x0f20e0,6,
-0x0f4000,7,
-0x0f4020,4,
-0x0f4204,1,
-0x0f4280,35,
-0x0f4310,4,
-0x0f4404,1,
-0x0f4480,34,
-0x0f4510,10,
-0x0f453c,3,
-0x0f4800,7,
-0x0f4820,4,
-0x0f4a04,1,
-0x0f4a80,35,
-0x0f4b10,4,
-0x0f4c04,1,
-0x0f4c80,34,
-0x0f4d10,10,
-0x0f4d3c,3,
-0x0f5000,7,
-0x0f5020,4,
-0x0f5204,1,
-0x0f5280,35,
-0x0f5310,4,
-0x0f5404,1,
-0x0f5480,34,
-0x0f5510,10,
-0x0f553c,3,
-0x0f5800,7,
-0x0f5820,4,
-0x0f5a04,1,
-0x0f5a80,35,
-0x0f5b10,4,
-0x0f5c04,1,
-0x0f5c80,34,
-0x0f5d10,10,
-0x0f5d3c,3,
-0x0f6000,7,
-0x0f6020,4,
-0x0f6204,1,
-0x0f6280,35,
-0x0f6310,4,
-0x0f6404,1,
-0x0f6480,34,
-0x0f6510,10,
-0x0f653c,3,
-0x0f6800,7,
-0x0f6820,4,
-0x0f6a04,1,
-0x0f6a80,35,
-0x0f6b10,4,
-0x0f6c04,1,
-0x0f6c80,34,
-0x0f6d10,10,
-0x0f6d3c,3,
-0x0f8000,9,
-0x0f8100,6,
-0x0f8120,6,
-0x0f8140,3,
-0x0f8180,14,
-0x0f81c0,3,
-0x0f81d0,2,
-0x0f8400,9,
-0x0f8500,6,
-0x0f8520,6,
-0x0f8540,3,
-0x0f8580,14,
-0x0f85c0,3,
-0x0f85d0,2,
-0x0f8800,9,
-0x0f8900,6,
-0x0f8920,6,
-0x0f8940,3,
-0x0f8980,14,
-0x0f89c0,3,
-0x0f89d0,2,
-0x0f8c00,9,
-0x0f8d00,6,
-0x0f8d20,6,
-0x0f8d40,3,
-0x0f8d80,14,
-0x0f8dc0,3,
-0x0f8dd0,2,
-0x0f9000,9,
-0x0f9100,6,
-0x0f9120,6,
-0x0f9140,3,
-0x0f9180,14,
-0x0f91c0,3,
-0x0f91d0,2,
-0x0f9400,9,
-0x0f9500,6,
-0x0f9520,6,
-0x0f9540,3,
-0x0f9580,14,
-0x0f95c0,3,
-0x0f95d0,2,
-0x0f9800,9,
-0x0f9900,6,
-0x0f9920,6,
-0x0f9940,3,
-0x0f9980,14,
-0x0f99c0,3,
-0x0f99d0,2,
-0x0f9c00,9,
-0x0f9d00,6,
-0x0f9d20,6,
-0x0f9d40,3,
-0x0f9d80,14,
-0x0f9dc0,3,
-0x0f9dd0,2,
-0x0fa000,9,
-0x0fa100,6,
-0x0fa120,6,
-0x0fa140,3,
-0x0fa180,14,
-0x0fa1c0,3,
-0x0fa1d0,2,
-0x0fa400,9,
-0x0fa500,6,
-0x0fa520,6,
-0x0fa540,3,
-0x0fa580,14,
-0x0fa5c0,3,
-0x0fa5d0,2,
-0x0fa800,9,
-0x0fa900,6,
-0x0fa920,6,
-0x0fa940,3,
-0x0fa980,14,
-0x0fa9c0,3,
-0x0fa9d0,2,
-0x0fac00,9,
-0x0fad00,6,
-0x0fad20,6,
-0x0fad40,3,
-0x0fad80,14,
-0x0fadc0,3,
-0x0fadd0,2,
-0x0fb000,9,
-0x0fb100,6,
-0x0fb120,6,
-0x0fb140,3,
-0x0fb180,14,
-0x0fb1c0,3,
-0x0fb1d0,2,
-0x0fb400,9,
-0x0fb500,6,
-0x0fb520,6,
-0x0fb540,3,
-0x0fb580,14,
-0x0fb5c0,3,
-0x0fb5d0,2,
-0x0fb800,9,
-0x0fb900,6,
-0x0fb920,6,
-0x0fb940,3,
-0x0fb980,14,
-0x0fb9c0,3,
-0x0fb9d0,2,
-0x0fbc00,9,
-0x0fbd00,6,
-0x0fbd20,6,
-0x0fbd40,3,
-0x0fbd80,14,
-0x0fbdc0,3,
-0x0fbdd0,2,
-0x0fc000,9,
-0x0fc080,10,
-0x0fc0c0,1,
-0x0fc0e0,2,
-0x0fc0ec,1,
-0x0fc0f4,9,
-0x0fc120,6,
-0x0fc140,3,
-0x0fc180,10,
-0x0fc1c0,3,
-0x0fc1d0,10,
-0x0fc400,9,
-0x0fc500,6,
-0x0fc520,6,
-0x0fc540,3,
-0x0fc580,8,
-0x0fc5c0,3,
-0x0fc5d0,2,
-0x0fc800,9,
-0x0fc900,6,
-0x0fc920,6,
-0x0fc940,3,
-0x0fc980,8,
-0x0fc9c0,3,
-0x0fc9d0,2,
-0x0fcc00,9,
-0x0fcc80,10,
-0x0fccc0,1,
-0x0fcce0,2,
-0x0fccec,1,
-0x0fccf4,9,
-0x0fcd20,6,
-0x0fcd40,3,
-0x0fcd80,12,
-0x0fcdc0,3,
-0x0fcdd0,2,
-0x0fd000,9,
-0x0fd100,6,
-0x0fd120,6,
-0x0fd140,3,
-0x0fd180,8,
-0x0fd1c0,3,
-0x0fd1d0,2,
-0x0fd400,9,
-0x0fd500,6,
-0x0fd520,6,
-0x0fd540,3,
-0x0fd580,8,
-0x0fd5c0,3,
-0x0fd5d0,2,
-0x0fd800,9,
-0x0fd880,10,
-0x0fd8c0,1,
-0x0fd8e0,2,
-0x0fd8ec,1,
-0x0fd8f4,9,
-0x0fd920,6,
-0x0fd940,3,
-0x0fd980,14,
-0x0fd9c0,3,
-0x0fd9d0,2,
-0x0fdc00,9,
-0x0fdc80,10,
-0x0fdcc0,1,
-0x0fdce0,2,
-0x0fdcec,1,
-0x0fdcf4,9,
-0x0fdd20,6,
-0x0fdd40,3,
-0x0fdd80,14,
-0x0fddc0,3,
-0x0fddd0,2,
-0x100000,1,
-0x100008,1,
-0x100010,14,
-0x100100,1,
-0x100108,1,
-0x100110,14,
-0x100200,32,
-0x1002e0,2,
-0x100300,32,
-0x1003e0,2,
-0x100400,1,
-0x100408,1,
-0x100410,14,
-0x100500,1,
-0x100508,1,
-0x100510,14,
-0x100600,32,
-0x1006e0,2,
-0x100700,32,
-0x1007e0,2,
-0x100800,6,
-0x10081c,6,
-0x100a00,3,
-0x100a10,3,
-0x100a40,3,
-0x100a50,3,
-0x100a80,3,
-0x100a90,3,
-0x100ac0,3,
-0x100ad0,3,
-0x100b00,3,
-0x100c04,3,
-0x100c14,16,
-0x100c84,1,
-0x100c8c,1,
-0x100e00,31,
-0x100e80,1,
-0x100e88,3,
-0x100f00,31,
-0x100f80,1,
-0x100f88,3,
-0x101000,22,
-0x101100,26,
-0x101200,10,
-0x101244,5,
-0x1015f8,3,
-0x101608,4,
-0x1016f4,45,
-0x101800,31,
-0x101900,31,
-0x101a00,6,
-0x101a20,6,
-0x101a40,6,
-0x101a60,6,
-0x101a80,6,
-0x101aa0,6,
-0x101ac0,6,
-0x101ae0,6,
-0x101b00,3,
-0x101c00,20,
-0x101c74,1,
-0x101c80,20,
-0x101cf4,1,
-0x101d00,20,
-0x101d74,1,
-0x101d80,20,
-0x101df4,1,
-0x101e00,17,
-0x102000,3,
-0x102010,35,
-0x1020a0,5,
-0x1020b8,1,
-0x1020c0,19,
-0x102110,35,
-0x1021a0,5,
-0x1021b8,1,
-0x1021c0,16,
-0x102204,1,
-0x102270,36,
-0x102400,4,
-0x102418,1,
-0x102420,9,
-0x102464,1,
-0x102474,9,
-0x1024a0,6,
-0x1024c0,6,
-0x1024e0,3,
-0x102504,1,
-0x10250c,29,
-0x102600,3,
-0x102800,3,
-0x102814,50,
-0x1028e0,3,
-0x1028f0,1,
-0x102900,6,
-0x102920,6,
-0x102940,6,
-0x102960,6,
-0x102980,6,
-0x1029a0,6,
-0x1029c0,3,
-0x102a00,12,
-0x102a34,22,
-0x102ac0,7,
-0x102ae0,3,
-0x102af0,1,
-0x102b00,6,
-0x102b20,6,
-0x102b40,6,
-0x102b60,6,
-0x102b80,6,
-0x102ba0,3,
-0x102c00,13,
-0x102c40,11,
-0x102c80,1,
-0x103000,6,
-0x103020,6,
-0x103040,3,
-0x103060,4,
-0x1030f0,3,
-0x103100,6,
-0x103120,6,
-0x103140,3,
-0x103160,4,
-0x1031f0,3,
-0x103200,8,
-0x103240,13,
-0x1033f8,8,
-0x103420,6,
-0x103440,3,
-0x103460,4,
-0x1034f0,3,
-0x103500,6,
-0x103520,6,
-0x103540,3,
-0x103560,4,
-0x1035f0,3,
-0x103600,8,
-0x103640,13,
-0x1037f8,2,
-0x103804,1,
-0x103820,10,
-0x103880,2,
-0x103904,1,
-0x10390c,1,
-0x103914,1,
-0x10391c,1,
-0x103924,1,
-0x10392c,1,
-0x103a20,9,
-0x103b00,6,
-0x103b20,6,
-0x103b40,6,
-0x103b60,6,
-0x103b80,6,
-0x103ba0,3,
-0x103c00,16,
-0x103d00,30,
-0x103d80,1,
-0x103d88,5,
-0x103da0,1,
-0x103da8,2,
-0x103dc0,10,
-0x103e00,9,
-0x103e28,2,
-0x103e40,9,
-0x103e68,2,
-0x103f00,25,
-0x103f70,4,
-0x103f84,5,
-0x103fa0,6,
-0x103ff8,7,
-0x104018,3,
-0x104028,3,
-0x104038,63,
-0x104140,11,
-0x104184,10,
-0x1041c0,22,
-0x104220,1,
-0x104228,2,
-0x104240,1,
-0x104248,7,
-0x104268,7,
-0x104288,3,
-0x104298,2,
-0x1042f4,46,
-0x1043b4,1,
-0x1043bc,1,
-0x1043c4,1,
-0x1043cc,1,
-0x1043d4,1,
-0x1043dc,1,
-0x1043e4,1,
-0x1043ec,15,
-0x104440,10,
-0x1047a0,4,
-0x1047b8,14,
-0x104800,5,
-0x104818,3,
-0x104828,3,
-0x104838,63,
-0x104940,11,
-0x104984,10,
-0x1049c0,22,
-0x104a20,1,
-0x104a28,2,
-0x104a40,1,
-0x104a48,7,
-0x104a68,7,
-0x104a88,3,
-0x104a98,2,
-0x104af4,46,
-0x104bb4,1,
-0x104bbc,1,
-0x104bc4,1,
-0x104bcc,1,
-0x104bd4,1,
-0x104bdc,1,
-0x104be4,1,
-0x104bec,15,
-0x104c40,10,
-0x104fa0,4,
-0x104fb8,14,
-0x105004,1,
-0x10500c,3,
-0x105020,5,
-0x105038,3,
-0x105048,43,
-0x105118,24,
-0x105200,32,
-0x105284,3,
-0x105294,3,
-0x1052a4,11,
-0x105400,6,
-0x105420,6,
-0x105440,6,
-0x105460,6,
-0x105480,6,
-0x1054a0,6,
-0x1054c0,6,
-0x1054e0,6,
-0x105500,6,
-0x105520,6,
-0x105540,6,
-0x105560,6,
-0x105580,6,
-0x1055a0,6,
-0x1055c0,6,
-0x1055e0,6,
-0x105600,6,
-0x105620,3,
-0x105800,4,
-0x105840,15,
-0x105880,7,
-0x1058a0,13,
-0x1058e0,7,
-0x105ab8,14,
-0x105b04,1,
-0x105b14,3,
-0x105b24,1,
-0x105b34,3,
-0x105b44,1,
-0x105b54,3,
-0x105b64,1,
-0x105b74,3,
-0x105b94,1,
-0x105ba0,2,
-0x105c00,26,
-0x105c80,14,
-0x105cc0,27,
-0x105d40,11,
-0x105d80,5,
-0x105da0,7,
-0x105dc0,7,
-0x105de0,6,
-0x105e00,14,
-0x105e40,13,
-0x105e80,7,
-0x105ea0,6,
-0x106000,2,
-0x106028,2,
-0x106050,2,
-0x106078,2,
-0x1060a0,8,
-0x1060c4,14,
-0x1061ac,1,
-0x1061d8,4,
-0x106200,6,
-0x106220,6,
-0x106240,6,
-0x106260,6,
-0x106280,3,
-0x106400,6,
-0x106420,6,
-0x106440,3,
-0x106480,4,
-0x108000,1,
-0x108008,1,
-0x108010,14,
-0x108100,1,
-0x108108,1,
-0x108110,14,
-0x108200,32,
-0x1082e0,2,
-0x108300,32,
-0x1083e0,2,
-0x108400,1,
-0x108408,1,
-0x108410,14,
-0x108500,1,
-0x108508,1,
-0x108510,14,
-0x108600,32,
-0x1086e0,2,
-0x108700,32,
-0x1087e0,2,
-0x108800,6,
-0x10881c,6,
-0x108a00,3,
-0x108a10,3,
-0x108a40,3,
-0x108a50,3,
-0x108a80,3,
-0x108a90,3,
-0x108ac0,3,
-0x108ad0,3,
-0x108b00,3,
-0x108c04,3,
-0x108c14,16,
-0x108c84,1,
-0x108c8c,1,
-0x108e00,31,
-0x108e80,1,
-0x108e88,3,
-0x108f00,31,
-0x108f80,1,
-0x108f88,3,
-0x109000,22,
-0x109100,26,
-0x109200,10,
-0x109244,5,
-0x1095f8,3,
-0x109608,4,
-0x1096f4,45,
-0x109800,31,
-0x109900,31,
-0x109a00,6,
-0x109a20,6,
-0x109a40,6,
-0x109a60,6,
-0x109a80,6,
-0x109aa0,6,
-0x109ac0,6,
-0x109ae0,6,
-0x109b00,3,
-0x109c00,20,
-0x109c74,1,
-0x109c80,20,
-0x109cf4,1,
-0x109d00,20,
-0x109d74,1,
-0x109d80,20,
-0x109df4,1,
-0x109e00,17,
-0x10a000,3,
-0x10a010,35,
-0x10a0a0,5,
-0x10a0b8,1,
-0x10a0c0,19,
-0x10a110,35,
-0x10a1a0,5,
-0x10a1b8,1,
-0x10a1c0,16,
-0x10a204,1,
-0x10a270,36,
-0x10a400,4,
-0x10a418,1,
-0x10a420,9,
-0x10a464,1,
-0x10a474,9,
-0x10a4a0,6,
-0x10a4c0,6,
-0x10a4e0,3,
-0x10a504,1,
-0x10a50c,29,
-0x10a600,3,
-0x10a800,3,
-0x10a814,50,
-0x10a8e0,3,
-0x10a8f0,1,
-0x10a900,6,
-0x10a920,6,
-0x10a940,6,
-0x10a960,6,
-0x10a980,6,
-0x10a9a0,6,
-0x10a9c0,3,
-0x10aa00,12,
-0x10aa34,22,
-0x10aac0,7,
-0x10aae0,3,
-0x10aaf0,1,
-0x10ab00,6,
-0x10ab20,6,
-0x10ab40,6,
-0x10ab60,6,
-0x10ab80,6,
-0x10aba0,3,
-0x10ac00,13,
-0x10ac40,11,
-0x10ac80,1,
-0x10b000,6,
-0x10b020,6,
-0x10b040,3,
-0x10b060,4,
-0x10b0f0,3,
-0x10b100,6,
-0x10b120,6,
-0x10b140,3,
-0x10b160,4,
-0x10b1f0,3,
-0x10b200,8,
-0x10b240,13,
-0x10b3f8,8,
-0x10b420,6,
-0x10b440,3,
-0x10b460,4,
-0x10b4f0,3,
-0x10b500,6,
-0x10b520,6,
-0x10b540,3,
-0x10b560,4,
-0x10b5f0,3,
-0x10b600,8,
-0x10b640,13,
-0x10b7f8,2,
-0x10b804,1,
-0x10b820,10,
-0x10b880,2,
-0x10b904,1,
-0x10b90c,1,
-0x10b914,1,
-0x10b91c,1,
-0x10b924,1,
-0x10b92c,1,
-0x10ba20,9,
-0x10bb00,6,
-0x10bb20,6,
-0x10bb40,6,
-0x10bb60,6,
-0x10bb80,6,
-0x10bba0,3,
-0x10bc00,16,
-0x10bd00,30,
-0x10bd80,1,
-0x10bd88,5,
-0x10bda0,1,
-0x10bda8,2,
-0x10bdc0,10,
-0x10be00,9,
-0x10be28,2,
-0x10be40,9,
-0x10be68,2,
-0x10bf00,25,
-0x10bf70,4,
-0x10bf84,5,
-0x10bfa0,6,
-0x10bff8,7,
-0x10c018,3,
-0x10c028,3,
-0x10c038,63,
-0x10c140,11,
-0x10c184,10,
-0x10c1c0,22,
-0x10c220,1,
-0x10c228,2,
-0x10c240,1,
-0x10c248,7,
-0x10c268,7,
-0x10c288,3,
-0x10c298,2,
-0x10c2f4,46,
-0x10c3b4,1,
-0x10c3bc,1,
-0x10c3c4,1,
-0x10c3cc,1,
-0x10c3d4,1,
-0x10c3dc,1,
-0x10c3e4,1,
-0x10c3ec,15,
-0x10c440,10,
-0x10c7a0,4,
-0x10c7b8,14,
-0x10c800,5,
-0x10c818,3,
-0x10c828,3,
-0x10c838,63,
-0x10c940,11,
-0x10c984,10,
-0x10c9c0,22,
-0x10ca20,1,
-0x10ca28,2,
-0x10ca40,1,
-0x10ca48,7,
-0x10ca68,7,
-0x10ca88,3,
-0x10ca98,2,
-0x10caf4,46,
-0x10cbb4,1,
-0x10cbbc,1,
-0x10cbc4,1,
-0x10cbcc,1,
-0x10cbd4,1,
-0x10cbdc,1,
-0x10cbe4,1,
-0x10cbec,15,
-0x10cc40,10,
-0x10cfa0,4,
-0x10cfb8,14,
-0x10d004,1,
-0x10d00c,3,
-0x10d020,5,
-0x10d038,3,
-0x10d048,43,
-0x10d118,24,
-0x10d200,32,
-0x10d284,3,
-0x10d294,3,
-0x10d2a4,11,
-0x10d400,6,
-0x10d420,6,
-0x10d440,6,
-0x10d460,6,
-0x10d480,6,
-0x10d4a0,6,
-0x10d4c0,6,
-0x10d4e0,6,
-0x10d500,6,
-0x10d520,6,
-0x10d540,6,
-0x10d560,6,
-0x10d580,6,
-0x10d5a0,6,
-0x10d5c0,6,
-0x10d5e0,6,
-0x10d600,6,
-0x10d620,3,
-0x10d800,4,
-0x10d840,15,
-0x10d880,7,
-0x10d8a0,13,
-0x10d8e0,7,
-0x10dab8,14,
-0x10db04,1,
-0x10db14,3,
-0x10db24,1,
-0x10db34,3,
-0x10db44,1,
-0x10db54,3,
-0x10db64,1,
-0x10db74,3,
-0x10db94,1,
-0x10dba0,2,
-0x10dc00,26,
-0x10dc80,14,
-0x10dcc0,27,
-0x10dd40,11,
-0x10dd80,5,
-0x10dda0,7,
-0x10ddc0,7,
-0x10dde0,6,
-0x10de00,14,
-0x10de40,13,
-0x10de80,7,
-0x10dea0,6,
-0x10e000,2,
-0x10e028,2,
-0x10e050,2,
-0x10e078,2,
-0x10e0a0,8,
-0x10e0c4,14,
-0x10e1ac,1,
-0x10e1d8,4,
-0x10e200,6,
-0x10e220,6,
-0x10e240,6,
-0x10e260,6,
-0x10e280,3,
-0x10e400,6,
-0x10e420,6,
-0x10e440,3,
-0x10e480,4,
-0x110000,1,
-0x110008,1,
-0x110010,14,
-0x110100,1,
-0x110108,1,
-0x110110,14,
-0x110200,32,
-0x1102e0,2,
-0x110300,32,
-0x1103e0,2,
-0x110400,1,
-0x110408,1,
-0x110410,14,
-0x110500,1,
-0x110508,1,
-0x110510,14,
-0x110600,32,
-0x1106e0,2,
-0x110700,32,
-0x1107e0,2,
-0x110800,6,
-0x11081c,6,
-0x110a00,3,
-0x110a10,3,
-0x110a40,3,
-0x110a50,3,
-0x110a80,3,
-0x110a90,3,
-0x110ac0,3,
-0x110ad0,3,
-0x110b00,3,
-0x110c04,3,
-0x110c14,16,
-0x110c84,1,
-0x110c8c,1,
-0x110e00,31,
-0x110e80,1,
-0x110e88,3,
-0x110f00,31,
-0x110f80,1,
-0x110f88,3,
-0x111000,22,
-0x111100,26,
-0x111200,10,
-0x111244,5,
-0x1115f8,3,
-0x111608,4,
-0x1116f4,45,
-0x111800,31,
-0x111900,31,
-0x111a00,6,
-0x111a20,6,
-0x111a40,6,
-0x111a60,6,
-0x111a80,6,
-0x111aa0,6,
-0x111ac0,6,
-0x111ae0,6,
-0x111b00,3,
-0x111c00,20,
-0x111c74,1,
-0x111c80,20,
-0x111cf4,1,
-0x111d00,20,
-0x111d74,1,
-0x111d80,20,
-0x111df4,1,
-0x111e00,17,
-0x112000,3,
-0x112010,35,
-0x1120a0,5,
-0x1120b8,1,
-0x1120c0,19,
-0x112110,35,
-0x1121a0,5,
-0x1121b8,1,
-0x1121c0,16,
-0x112204,1,
-0x112270,36,
-0x112400,4,
-0x112418,1,
-0x112420,9,
-0x112464,1,
-0x112474,9,
-0x1124a0,6,
-0x1124c0,6,
-0x1124e0,3,
-0x112504,1,
-0x11250c,29,
-0x112600,3,
-0x112800,3,
-0x112814,50,
-0x1128e0,3,
-0x1128f0,1,
-0x112900,6,
-0x112920,6,
-0x112940,6,
-0x112960,6,
-0x112980,6,
-0x1129a0,6,
-0x1129c0,3,
-0x112a00,12,
-0x112a34,22,
-0x112ac0,7,
-0x112ae0,3,
-0x112af0,1,
-0x112b00,6,
-0x112b20,6,
-0x112b40,6,
-0x112b60,6,
-0x112b80,6,
-0x112ba0,3,
-0x112c00,13,
-0x112c40,11,
-0x112c80,1,
-0x113000,6,
-0x113020,6,
-0x113040,3,
-0x113060,4,
-0x1130f0,3,
-0x113100,6,
-0x113120,6,
-0x113140,3,
-0x113160,4,
-0x1131f0,3,
-0x113200,8,
-0x113240,13,
-0x1133f8,8,
-0x113420,6,
-0x113440,3,
-0x113460,4,
-0x1134f0,3,
-0x113500,6,
-0x113520,6,
-0x113540,3,
-0x113560,4,
-0x1135f0,3,
-0x113600,8,
-0x113640,13,
-0x1137f8,2,
-0x113804,1,
-0x113820,10,
-0x113880,2,
-0x113904,1,
-0x11390c,1,
-0x113914,1,
-0x11391c,1,
-0x113924,1,
-0x11392c,1,
-0x113a20,9,
-0x113b00,6,
-0x113b20,6,
-0x113b40,6,
-0x113b60,6,
-0x113b80,6,
-0x113ba0,3,
-0x113c00,16,
-0x113d00,30,
-0x113d80,1,
-0x113d88,5,
-0x113da0,1,
-0x113da8,2,
-0x113dc0,10,
-0x113e00,9,
-0x113e28,2,
-0x113e40,9,
-0x113e68,2,
-0x113f00,25,
-0x113f70,4,
-0x113f84,5,
-0x113fa0,6,
-0x113ff8,7,
-0x114018,3,
-0x114028,3,
-0x114038,63,
-0x114140,11,
-0x114184,10,
-0x1141c0,22,
-0x114220,1,
-0x114228,2,
-0x114240,1,
-0x114248,7,
-0x114268,7,
-0x114288,3,
-0x114298,2,
-0x1142f4,46,
-0x1143b4,1,
-0x1143bc,1,
-0x1143c4,1,
-0x1143cc,1,
-0x1143d4,1,
-0x1143dc,1,
-0x1143e4,1,
-0x1143ec,15,
-0x114440,10,
-0x1147a0,4,
-0x1147b8,14,
-0x114800,5,
-0x114818,3,
-0x114828,3,
-0x114838,63,
-0x114940,11,
-0x114984,10,
-0x1149c0,22,
-0x114a20,1,
-0x114a28,2,
-0x114a40,1,
-0x114a48,7,
-0x114a68,7,
-0x114a88,3,
-0x114a98,2,
-0x114af4,46,
-0x114bb4,1,
-0x114bbc,1,
-0x114bc4,1,
-0x114bcc,1,
-0x114bd4,1,
-0x114bdc,1,
-0x114be4,1,
-0x114bec,15,
-0x114c40,10,
-0x114fa0,4,
-0x114fb8,14,
-0x115004,1,
-0x11500c,3,
-0x115020,5,
-0x115038,3,
-0x115048,43,
-0x115118,24,
-0x115200,32,
-0x115284,3,
-0x115294,3,
-0x1152a4,11,
-0x115400,6,
-0x115420,6,
-0x115440,6,
-0x115460,6,
-0x115480,6,
-0x1154a0,6,
-0x1154c0,6,
-0x1154e0,6,
-0x115500,6,
-0x115520,6,
-0x115540,6,
-0x115560,6,
-0x115580,6,
-0x1155a0,6,
-0x1155c0,6,
-0x1155e0,6,
-0x115600,6,
-0x115620,3,
-0x115800,4,
-0x115840,15,
-0x115880,7,
-0x1158a0,13,
-0x1158e0,7,
-0x115ab8,14,
-0x115b04,1,
-0x115b14,3,
-0x115b24,1,
-0x115b34,3,
-0x115b44,1,
-0x115b54,3,
-0x115b64,1,
-0x115b74,3,
-0x115b94,1,
-0x115ba0,2,
-0x115c00,26,
-0x115c80,14,
-0x115cc0,27,
-0x115d40,11,
-0x115d80,5,
-0x115da0,7,
-0x115dc0,7,
-0x115de0,6,
-0x115e00,14,
-0x115e40,13,
-0x115e80,7,
-0x115ea0,6,
-0x116000,2,
-0x116028,2,
-0x116050,2,
-0x116078,2,
-0x1160a0,8,
-0x1160c4,14,
-0x1161ac,1,
-0x1161d8,4,
-0x116200,6,
-0x116220,6,
-0x116240,6,
-0x116260,6,
-0x116280,3,
-0x116400,6,
-0x116420,6,
-0x116440,3,
-0x116480,4,
-0x118000,1,
-0x118008,1,
-0x118010,14,
-0x118100,1,
-0x118108,1,
-0x118110,14,
-0x118200,32,
-0x1182e0,2,
-0x118300,32,
-0x1183e0,2,
-0x118400,1,
-0x118408,1,
-0x118410,14,
-0x118500,1,
-0x118508,1,
-0x118510,14,
-0x118600,32,
-0x1186e0,2,
-0x118700,32,
-0x1187e0,2,
-0x118800,6,
-0x11881c,6,
-0x118a00,3,
-0x118a10,3,
-0x118a40,3,
-0x118a50,3,
-0x118a80,3,
-0x118a90,3,
-0x118ac0,3,
-0x118ad0,3,
-0x118b00,3,
-0x118c04,3,
-0x118c14,16,
-0x118c84,1,
-0x118c8c,1,
-0x118e00,31,
-0x118e80,1,
-0x118e88,3,
-0x118f00,31,
-0x118f80,1,
-0x118f88,3,
-0x119000,22,
-0x119100,26,
-0x119200,10,
-0x119244,5,
-0x1195f8,3,
-0x119608,4,
-0x1196f4,45,
-0x119800,31,
-0x119900,31,
-0x119a00,6,
-0x119a20,6,
-0x119a40,6,
-0x119a60,6,
-0x119a80,6,
-0x119aa0,6,
-0x119ac0,6,
-0x119ae0,6,
-0x119b00,3,
-0x119c00,20,
-0x119c74,1,
-0x119c80,20,
-0x119cf4,1,
-0x119d00,20,
-0x119d74,1,
-0x119d80,20,
-0x119df4,1,
-0x119e00,17,
-0x11a000,3,
-0x11a010,35,
-0x11a0a0,5,
-0x11a0b8,1,
-0x11a0c0,19,
-0x11a110,35,
-0x11a1a0,5,
-0x11a1b8,1,
-0x11a1c0,16,
-0x11a204,1,
-0x11a270,36,
-0x11a400,4,
-0x11a418,1,
-0x11a420,9,
-0x11a464,1,
-0x11a474,9,
-0x11a4a0,6,
-0x11a4c0,6,
-0x11a4e0,3,
-0x11a504,1,
-0x11a50c,29,
-0x11a600,3,
-0x11a800,3,
-0x11a814,50,
-0x11a8e0,3,
-0x11a8f0,1,
-0x11a900,6,
-0x11a920,6,
-0x11a940,6,
-0x11a960,6,
-0x11a980,6,
-0x11a9a0,6,
-0x11a9c0,3,
-0x11aa00,12,
-0x11aa34,22,
-0x11aac0,7,
-0x11aae0,3,
-0x11aaf0,1,
-0x11ab00,6,
-0x11ab20,6,
-0x11ab40,6,
-0x11ab60,6,
-0x11ab80,6,
-0x11aba0,3,
-0x11ac00,13,
-0x11ac40,11,
-0x11ac80,1,
-0x11b000,6,
-0x11b020,6,
-0x11b040,3,
-0x11b060,4,
-0x11b0f0,3,
-0x11b100,6,
-0x11b120,6,
-0x11b140,3,
-0x11b160,4,
-0x11b1f0,3,
-0x11b200,8,
-0x11b240,13,
-0x11b3f8,8,
-0x11b420,6,
-0x11b440,3,
-0x11b460,4,
-0x11b4f0,3,
-0x11b500,6,
-0x11b520,6,
-0x11b540,3,
-0x11b560,4,
-0x11b5f0,3,
-0x11b600,8,
-0x11b640,13,
-0x11b7f8,2,
-0x11b804,1,
-0x11b820,10,
-0x11b880,2,
-0x11b904,1,
-0x11b90c,1,
-0x11b914,1,
-0x11b91c,1,
-0x11b924,1,
-0x11b92c,1,
-0x11ba20,9,
-0x11bb00,6,
-0x11bb20,6,
-0x11bb40,6,
-0x11bb60,6,
-0x11bb80,6,
-0x11bba0,3,
-0x11bc00,16,
-0x11bd00,30,
-0x11bd80,1,
-0x11bd88,5,
-0x11bda0,1,
-0x11bda8,2,
-0x11bdc0,10,
-0x11be00,9,
-0x11be28,2,
-0x11be40,9,
-0x11be68,2,
-0x11bf00,25,
-0x11bf70,4,
-0x11bf84,5,
-0x11bfa0,6,
-0x11bff8,7,
-0x11c018,3,
-0x11c028,3,
-0x11c038,63,
-0x11c140,11,
-0x11c184,10,
-0x11c1c0,22,
-0x11c220,1,
-0x11c228,2,
-0x11c240,1,
-0x11c248,7,
-0x11c268,7,
-0x11c288,3,
-0x11c298,2,
-0x11c2f4,46,
-0x11c3b4,1,
-0x11c3bc,1,
-0x11c3c4,1,
-0x11c3cc,1,
-0x11c3d4,1,
-0x11c3dc,1,
-0x11c3e4,1,
-0x11c3ec,15,
-0x11c440,10,
-0x11c7a0,4,
-0x11c7b8,14,
-0x11c800,5,
-0x11c818,3,
-0x11c828,3,
-0x11c838,63,
-0x11c940,11,
-0x11c984,10,
-0x11c9c0,22,
-0x11ca20,1,
-0x11ca28,2,
-0x11ca40,1,
-0x11ca48,7,
-0x11ca68,7,
-0x11ca88,3,
-0x11ca98,2,
-0x11caf4,46,
-0x11cbb4,1,
-0x11cbbc,1,
-0x11cbc4,1,
-0x11cbcc,1,
-0x11cbd4,1,
-0x11cbdc,1,
-0x11cbe4,1,
-0x11cbec,15,
-0x11cc40,10,
-0x11cfa0,4,
-0x11cfb8,14,
-0x11d004,1,
-0x11d00c,3,
-0x11d020,5,
-0x11d038,3,
-0x11d048,43,
-0x11d118,24,
-0x11d200,32,
-0x11d284,3,
-0x11d294,3,
-0x11d2a4,11,
-0x11d400,6,
-0x11d420,6,
-0x11d440,6,
-0x11d460,6,
-0x11d480,6,
-0x11d4a0,6,
-0x11d4c0,6,
-0x11d4e0,6,
-0x11d500,6,
-0x11d520,6,
-0x11d540,6,
-0x11d560,6,
-0x11d580,6,
-0x11d5a0,6,
-0x11d5c0,6,
-0x11d5e0,6,
-0x11d600,6,
-0x11d620,3,
-0x11d800,4,
-0x11d840,15,
-0x11d880,7,
-0x11d8a0,13,
-0x11d8e0,7,
-0x11dab8,14,
-0x11db04,1,
-0x11db14,3,
-0x11db24,1,
-0x11db34,3,
-0x11db44,1,
-0x11db54,3,
-0x11db64,1,
-0x11db74,3,
-0x11db94,1,
-0x11dba0,2,
-0x11dc00,26,
-0x11dc80,14,
-0x11dcc0,27,
-0x11dd40,11,
-0x11dd80,5,
-0x11dda0,7,
-0x11ddc0,7,
-0x11dde0,6,
-0x11de00,14,
-0x11de40,13,
-0x11de80,7,
-0x11dea0,6,
-0x11e000,2,
-0x11e028,2,
-0x11e050,2,
-0x11e078,2,
-0x11e0a0,8,
-0x11e0c4,14,
-0x11e1ac,1,
-0x11e1d8,4,
-0x11e200,6,
-0x11e220,6,
-0x11e240,6,
-0x11e260,6,
-0x11e280,3,
-0x11e400,6,
-0x11e420,6,
-0x11e440,3,
-0x11e480,4,
-0x120000,1,
-0x120008,1,
-0x120010,14,
-0x120100,1,
-0x120108,1,
-0x120110,14,
-0x120200,32,
-0x1202e0,2,
-0x120300,32,
-0x1203e0,2,
-0x120400,1,
-0x120408,1,
-0x120410,14,
-0x120500,1,
-0x120508,1,
-0x120510,14,
-0x120600,32,
-0x1206e0,2,
-0x120700,32,
-0x1207e0,2,
-0x120800,6,
-0x12081c,6,
-0x120a00,3,
-0x120a10,3,
-0x120a40,3,
-0x120a50,3,
-0x120a80,3,
-0x120a90,3,
-0x120ac0,3,
-0x120ad0,3,
-0x120b00,3,
-0x120c04,3,
-0x120c14,16,
-0x120c84,1,
-0x120c8c,1,
-0x120e00,31,
-0x120e80,1,
-0x120e88,3,
-0x120f00,31,
-0x120f80,1,
-0x120f88,3,
-0x121000,22,
-0x121100,26,
-0x121200,10,
-0x121244,5,
-0x1215f8,3,
-0x121608,4,
-0x1216f4,45,
-0x121800,31,
-0x121900,31,
-0x121a00,6,
-0x121a20,6,
-0x121a40,6,
-0x121a60,6,
-0x121a80,6,
-0x121aa0,6,
-0x121ac0,6,
-0x121ae0,6,
-0x121b00,3,
-0x121c00,20,
-0x121c74,1,
-0x121c80,20,
-0x121cf4,1,
-0x121d00,20,
-0x121d74,1,
-0x121d80,20,
-0x121df4,1,
-0x121e00,17,
-0x122000,3,
-0x122010,35,
-0x1220a0,5,
-0x1220b8,1,
-0x1220c0,19,
-0x122110,35,
-0x1221a0,5,
-0x1221b8,1,
-0x1221c0,16,
-0x122204,1,
-0x122270,36,
-0x122400,4,
-0x122418,1,
-0x122420,9,
-0x122464,1,
-0x122474,9,
-0x1224a0,6,
-0x1224c0,6,
-0x1224e0,3,
-0x122504,1,
-0x12250c,29,
-0x122600,3,
-0x122800,3,
-0x122814,50,
-0x1228e0,3,
-0x1228f0,1,
-0x122900,6,
-0x122920,6,
-0x122940,6,
-0x122960,6,
-0x122980,6,
-0x1229a0,6,
-0x1229c0,3,
-0x122a00,12,
-0x122a34,22,
-0x122ac0,7,
-0x122ae0,3,
-0x122af0,1,
-0x122b00,6,
-0x122b20,6,
-0x122b40,6,
-0x122b60,6,
-0x122b80,6,
-0x122ba0,3,
-0x122c00,13,
-0x122c40,11,
-0x122c80,1,
-0x123000,6,
-0x123020,6,
-0x123040,3,
-0x123060,4,
-0x1230f0,3,
-0x123100,6,
-0x123120,6,
-0x123140,3,
-0x123160,4,
-0x1231f0,3,
-0x123200,8,
-0x123240,13,
-0x1233f8,8,
-0x123420,6,
-0x123440,3,
-0x123460,4,
-0x1234f0,3,
-0x123500,6,
-0x123520,6,
-0x123540,3,
-0x123560,4,
-0x1235f0,3,
-0x123600,8,
-0x123640,13,
-0x1237f8,2,
-0x123804,1,
-0x123820,10,
-0x123880,2,
-0x123904,1,
-0x12390c,1,
-0x123914,1,
-0x12391c,1,
-0x123924,1,
-0x12392c,1,
-0x123a20,9,
-0x123b00,6,
-0x123b20,6,
-0x123b40,6,
-0x123b60,6,
-0x123b80,6,
-0x123ba0,3,
-0x123c00,16,
-0x123d00,30,
-0x123d80,1,
-0x123d88,5,
-0x123da0,1,
-0x123da8,2,
-0x123dc0,10,
-0x123e00,9,
-0x123e28,2,
-0x123e40,9,
-0x123e68,2,
-0x123f00,25,
-0x123f70,4,
-0x123f84,5,
-0x123fa0,6,
-0x123ff8,7,
-0x124018,3,
-0x124028,3,
-0x124038,63,
-0x124140,11,
-0x124184,10,
-0x1241c0,22,
-0x124220,1,
-0x124228,2,
-0x124240,1,
-0x124248,7,
-0x124268,7,
-0x124288,3,
-0x124298,2,
-0x1242f4,46,
-0x1243b4,1,
-0x1243bc,1,
-0x1243c4,1,
-0x1243cc,1,
-0x1243d4,1,
-0x1243dc,1,
-0x1243e4,1,
-0x1243ec,15,
-0x124440,10,
-0x1247a0,4,
-0x1247b8,14,
-0x124800,5,
-0x124818,3,
-0x124828,3,
-0x124838,63,
-0x124940,11,
-0x124984,10,
-0x1249c0,22,
-0x124a20,1,
-0x124a28,2,
-0x124a40,1,
-0x124a48,7,
-0x124a68,7,
-0x124a88,3,
-0x124a98,2,
-0x124af4,46,
-0x124bb4,1,
-0x124bbc,1,
-0x124bc4,1,
-0x124bcc,1,
-0x124bd4,1,
-0x124bdc,1,
-0x124be4,1,
-0x124bec,15,
-0x124c40,10,
-0x124fa0,4,
-0x124fb8,14,
-0x125004,1,
-0x12500c,3,
-0x125020,5,
-0x125038,3,
-0x125048,43,
-0x125118,24,
-0x125200,32,
-0x125284,3,
-0x125294,3,
-0x1252a4,11,
-0x125400,6,
-0x125420,6,
-0x125440,6,
-0x125460,6,
-0x125480,6,
-0x1254a0,6,
-0x1254c0,6,
-0x1254e0,6,
-0x125500,6,
-0x125520,6,
-0x125540,6,
-0x125560,6,
-0x125580,6,
-0x1255a0,6,
-0x1255c0,6,
-0x1255e0,6,
-0x125600,6,
-0x125620,3,
-0x125800,4,
-0x125840,15,
-0x125880,7,
-0x1258a0,13,
-0x1258e0,7,
-0x125ab8,14,
-0x125b04,1,
-0x125b14,3,
-0x125b24,1,
-0x125b34,3,
-0x125b44,1,
-0x125b54,3,
-0x125b64,1,
-0x125b74,3,
-0x125b94,1,
-0x125ba0,2,
-0x125c00,26,
-0x125c80,14,
-0x125cc0,27,
-0x125d40,11,
-0x125d80,5,
-0x125da0,7,
-0x125dc0,7,
-0x125de0,6,
-0x125e00,14,
-0x125e40,13,
-0x125e80,7,
-0x125ea0,6,
-0x126000,2,
-0x126028,2,
-0x126050,2,
-0x126078,2,
-0x1260a0,8,
-0x1260c4,14,
-0x1261ac,1,
-0x1261d8,4,
-0x126200,6,
-0x126220,6,
-0x126240,6,
-0x126260,6,
-0x126280,3,
-0x126400,6,
-0x126420,6,
-0x126440,3,
-0x126480,4,
-0x128000,1,
-0x128008,1,
-0x128010,14,
-0x128100,1,
-0x128108,1,
-0x128110,14,
-0x128200,32,
-0x1282e0,2,
-0x128300,32,
-0x1283e0,2,
-0x128400,1,
-0x128408,1,
-0x128410,14,
-0x128500,1,
-0x128508,1,
-0x128510,14,
-0x128600,32,
-0x1286e0,2,
-0x128700,32,
-0x1287e0,2,
-0x128800,6,
-0x12881c,6,
-0x128a00,3,
-0x128a10,3,
-0x128a40,3,
-0x128a50,3,
-0x128a80,3,
-0x128a90,3,
-0x128ac0,3,
-0x128ad0,3,
-0x128b00,3,
-0x128c04,3,
-0x128c14,16,
-0x128c84,1,
-0x128c8c,1,
-0x128e00,31,
-0x128e80,1,
-0x128e88,3,
-0x128f00,31,
-0x128f80,1,
-0x128f88,3,
-0x129000,22,
-0x129100,26,
-0x129200,10,
-0x129244,5,
-0x1295f8,3,
-0x129608,4,
-0x1296f4,45,
-0x129800,31,
-0x129900,31,
-0x129a00,6,
-0x129a20,6,
-0x129a40,6,
-0x129a60,6,
-0x129a80,6,
-0x129aa0,6,
-0x129ac0,6,
-0x129ae0,6,
-0x129b00,3,
-0x129c00,20,
-0x129c74,1,
-0x129c80,20,
-0x129cf4,1,
-0x129d00,20,
-0x129d74,1,
-0x129d80,20,
-0x129df4,1,
-0x129e00,17,
-0x12a000,3,
-0x12a010,35,
-0x12a0a0,5,
-0x12a0b8,1,
-0x12a0c0,19,
-0x12a110,35,
-0x12a1a0,5,
-0x12a1b8,1,
-0x12a1c0,16,
-0x12a204,1,
-0x12a270,36,
-0x12a400,4,
-0x12a418,1,
-0x12a420,9,
-0x12a464,1,
-0x12a474,9,
-0x12a4a0,6,
-0x12a4c0,6,
-0x12a4e0,3,
-0x12a504,1,
-0x12a50c,29,
-0x12a600,3,
-0x12a800,3,
-0x12a814,50,
-0x12a8e0,3,
-0x12a8f0,1,
-0x12a900,6,
-0x12a920,6,
-0x12a940,6,
-0x12a960,6,
-0x12a980,6,
-0x12a9a0,6,
-0x12a9c0,3,
-0x12aa00,12,
-0x12aa34,22,
-0x12aac0,7,
-0x12aae0,3,
-0x12aaf0,1,
-0x12ab00,6,
-0x12ab20,6,
-0x12ab40,6,
-0x12ab60,6,
-0x12ab80,6,
-0x12aba0,3,
-0x12ac00,13,
-0x12ac40,11,
-0x12ac80,1,
-0x12b000,6,
-0x12b020,6,
-0x12b040,3,
-0x12b060,4,
-0x12b0f0,3,
-0x12b100,6,
-0x12b120,6,
-0x12b140,3,
-0x12b160,4,
-0x12b1f0,3,
-0x12b200,8,
-0x12b240,13,
-0x12b3f8,8,
-0x12b420,6,
-0x12b440,3,
-0x12b460,4,
-0x12b4f0,3,
-0x12b500,6,
-0x12b520,6,
-0x12b540,3,
-0x12b560,4,
-0x12b5f0,3,
-0x12b600,8,
-0x12b640,13,
-0x12b7f8,2,
-0x12b804,1,
-0x12b820,10,
-0x12b880,2,
-0x12b904,1,
-0x12b90c,1,
-0x12b914,1,
-0x12b91c,1,
-0x12b924,1,
-0x12b92c,1,
-0x12ba20,9,
-0x12bb00,6,
-0x12bb20,6,
-0x12bb40,6,
-0x12bb60,6,
-0x12bb80,6,
-0x12bba0,3,
-0x12bc00,16,
-0x12bd00,30,
-0x12bd80,1,
-0x12bd88,5,
-0x12bda0,1,
-0x12bda8,2,
-0x12bdc0,10,
-0x12be00,9,
-0x12be28,2,
-0x12be40,9,
-0x12be68,2,
-0x12bf00,25,
-0x12bf70,4,
-0x12bf84,5,
-0x12bfa0,6,
-0x12bff8,7,
-0x12c018,3,
-0x12c028,3,
-0x12c038,63,
-0x12c140,11,
-0x12c184,10,
-0x12c1c0,22,
-0x12c220,1,
-0x12c228,2,
-0x12c240,1,
-0x12c248,7,
-0x12c268,7,
-0x12c288,3,
-0x12c298,2,
-0x12c2f4,46,
-0x12c3b4,1,
-0x12c3bc,1,
-0x12c3c4,1,
-0x12c3cc,1,
-0x12c3d4,1,
-0x12c3dc,1,
-0x12c3e4,1,
-0x12c3ec,15,
-0x12c440,10,
-0x12c7a0,4,
-0x12c7b8,14,
-0x12c800,5,
-0x12c818,3,
-0x12c828,3,
-0x12c838,63,
-0x12c940,11,
-0x12c984,10,
-0x12c9c0,22,
-0x12ca20,1,
-0x12ca28,2,
-0x12ca40,1,
-0x12ca48,7,
-0x12ca68,7,
-0x12ca88,3,
-0x12ca98,2,
-0x12caf4,46,
-0x12cbb4,1,
-0x12cbbc,1,
-0x12cbc4,1,
-0x12cbcc,1,
-0x12cbd4,1,
-0x12cbdc,1,
-0x12cbe4,1,
-0x12cbec,15,
-0x12cc40,10,
-0x12cfa0,4,
-0x12cfb8,14,
-0x12d004,1,
-0x12d00c,3,
-0x12d020,5,
-0x12d038,3,
-0x12d048,43,
-0x12d118,24,
-0x12d200,32,
-0x12d284,3,
-0x12d294,3,
-0x12d2a4,11,
-0x12d400,6,
-0x12d420,6,
-0x12d440,6,
-0x12d460,6,
-0x12d480,6,
-0x12d4a0,6,
-0x12d4c0,6,
-0x12d4e0,6,
-0x12d500,6,
-0x12d520,6,
-0x12d540,6,
-0x12d560,6,
-0x12d580,6,
-0x12d5a0,6,
-0x12d5c0,6,
-0x12d5e0,6,
-0x12d600,6,
-0x12d620,3,
-0x12d800,4,
-0x12d840,15,
-0x12d880,7,
-0x12d8a0,13,
-0x12d8e0,7,
-0x12dab8,14,
-0x12db04,1,
-0x12db14,3,
-0x12db24,1,
-0x12db34,3,
-0x12db44,1,
-0x12db54,3,
-0x12db64,1,
-0x12db74,3,
-0x12db94,1,
-0x12dba0,2,
-0x12dc00,26,
-0x12dc80,14,
-0x12dcc0,27,
-0x12dd40,11,
-0x12dd80,5,
-0x12dda0,7,
-0x12ddc0,7,
-0x12dde0,6,
-0x12de00,14,
-0x12de40,13,
-0x12de80,7,
-0x12dea0,6,
-0x12e000,2,
-0x12e028,2,
-0x12e050,2,
-0x12e078,2,
-0x12e0a0,8,
-0x12e0c4,14,
-0x12e1ac,1,
-0x12e1d8,4,
-0x12e200,6,
-0x12e220,6,
-0x12e240,6,
-0x12e260,6,
-0x12e280,3,
-0x12e400,6,
-0x12e420,6,
-0x12e440,3,
-0x12e480,4,
-0x130000,1,
-0x130008,1,
-0x130010,14,
-0x130100,1,
-0x130108,1,
-0x130110,14,
-0x130200,32,
-0x1302e0,2,
-0x130300,32,
-0x1303e0,2,
-0x130400,1,
-0x130408,1,
-0x130410,14,
-0x130500,1,
-0x130508,1,
-0x130510,14,
-0x130600,32,
-0x1306e0,2,
-0x130700,32,
-0x1307e0,2,
-0x130800,6,
-0x13081c,6,
-0x130a00,3,
-0x130a10,3,
-0x130a40,3,
-0x130a50,3,
-0x130a80,3,
-0x130a90,3,
-0x130ac0,3,
-0x130ad0,3,
-0x130b00,3,
-0x130c04,3,
-0x130c14,16,
-0x130c84,1,
-0x130c8c,1,
-0x130e00,31,
-0x130e80,1,
-0x130e88,3,
-0x130f00,31,
-0x130f80,1,
-0x130f88,3,
-0x131000,22,
-0x131100,26,
-0x131200,10,
-0x131244,5,
-0x1315f8,3,
-0x131608,4,
-0x1316f4,45,
-0x131800,31,
-0x131900,31,
-0x131a00,6,
-0x131a20,6,
-0x131a40,6,
-0x131a60,6,
-0x131a80,6,
-0x131aa0,6,
-0x131ac0,6,
-0x131ae0,6,
-0x131b00,3,
-0x131c00,20,
-0x131c74,1,
-0x131c80,20,
-0x131cf4,1,
-0x131d00,20,
-0x131d74,1,
-0x131d80,20,
-0x131df4,1,
-0x131e00,17,
-0x132000,3,
-0x132010,35,
-0x1320a0,5,
-0x1320b8,1,
-0x1320c0,19,
-0x132110,35,
-0x1321a0,5,
-0x1321b8,1,
-0x1321c0,16,
-0x132204,1,
-0x132270,36,
-0x132400,4,
-0x132418,1,
-0x132420,9,
-0x132464,1,
-0x132474,9,
-0x1324a0,6,
-0x1324c0,6,
-0x1324e0,3,
-0x132504,1,
-0x13250c,29,
-0x132600,3,
-0x132800,3,
-0x132814,50,
-0x1328e0,3,
-0x1328f0,1,
-0x132900,6,
-0x132920,6,
-0x132940,6,
-0x132960,6,
-0x132980,6,
-0x1329a0,6,
-0x1329c0,3,
-0x132a00,12,
-0x132a34,22,
-0x132ac0,7,
-0x132ae0,3,
-0x132af0,1,
-0x132b00,6,
-0x132b20,6,
-0x132b40,6,
-0x132b60,6,
-0x132b80,6,
-0x132ba0,3,
-0x132c00,13,
-0x132c40,11,
-0x132c80,1,
-0x133000,6,
-0x133020,6,
-0x133040,3,
-0x133060,4,
-0x1330f0,3,
-0x133100,6,
-0x133120,6,
-0x133140,3,
-0x133160,4,
-0x1331f0,3,
-0x133200,8,
-0x133240,13,
-0x1333f8,8,
-0x133420,6,
-0x133440,3,
-0x133460,4,
-0x1334f0,3,
-0x133500,6,
-0x133520,6,
-0x133540,3,
-0x133560,4,
-0x1335f0,3,
-0x133600,8,
-0x133640,13,
-0x1337f8,2,
-0x133804,1,
-0x133820,10,
-0x133880,2,
-0x133904,1,
-0x13390c,1,
-0x133914,1,
-0x13391c,1,
-0x133924,1,
-0x13392c,1,
-0x133a20,9,
-0x133b00,6,
-0x133b20,6,
-0x133b40,6,
-0x133b60,6,
-0x133b80,6,
-0x133ba0,3,
-0x133c00,16,
-0x133d00,30,
-0x133d80,1,
-0x133d88,5,
-0x133da0,1,
-0x133da8,2,
-0x133dc0,10,
-0x133e00,9,
-0x133e28,2,
-0x133e40,9,
-0x133e68,2,
-0x133f00,25,
-0x133f70,4,
-0x133f84,5,
-0x133fa0,6,
-0x133ff8,7,
-0x134018,3,
-0x134028,3,
-0x134038,63,
-0x134140,11,
-0x134184,10,
-0x1341c0,22,
-0x134220,1,
-0x134228,2,
-0x134240,1,
-0x134248,7,
-0x134268,7,
-0x134288,3,
-0x134298,2,
-0x1342f4,46,
-0x1343b4,1,
-0x1343bc,1,
-0x1343c4,1,
-0x1343cc,1,
-0x1343d4,1,
-0x1343dc,1,
-0x1343e4,1,
-0x1343ec,15,
-0x134440,10,
-0x1347a0,4,
-0x1347b8,14,
-0x134800,5,
-0x134818,3,
-0x134828,3,
-0x134838,63,
-0x134940,11,
-0x134984,10,
-0x1349c0,22,
-0x134a20,1,
-0x134a28,2,
-0x134a40,1,
-0x134a48,7,
-0x134a68,7,
-0x134a88,3,
-0x134a98,2,
-0x134af4,46,
-0x134bb4,1,
-0x134bbc,1,
-0x134bc4,1,
-0x134bcc,1,
-0x134bd4,1,
-0x134bdc,1,
-0x134be4,1,
-0x134bec,15,
-0x134c40,10,
-0x134fa0,4,
-0x134fb8,14,
-0x135004,1,
-0x13500c,3,
-0x135020,5,
-0x135038,3,
-0x135048,43,
-0x135118,24,
-0x135200,32,
-0x135284,3,
-0x135294,3,
-0x1352a4,11,
-0x135400,6,
-0x135420,6,
-0x135440,6,
-0x135460,6,
-0x135480,6,
-0x1354a0,6,
-0x1354c0,6,
-0x1354e0,6,
-0x135500,6,
-0x135520,6,
-0x135540,6,
-0x135560,6,
-0x135580,6,
-0x1355a0,6,
-0x1355c0,6,
-0x1355e0,6,
-0x135600,6,
-0x135620,3,
-0x135800,4,
-0x135840,15,
-0x135880,7,
-0x1358a0,13,
-0x1358e0,7,
-0x135ab8,14,
-0x135b04,1,
-0x135b14,3,
-0x135b24,1,
-0x135b34,3,
-0x135b44,1,
-0x135b54,3,
-0x135b64,1,
-0x135b74,3,
-0x135b94,1,
-0x135ba0,2,
-0x135c00,26,
-0x135c80,14,
-0x135cc0,27,
-0x135d40,11,
-0x135d80,5,
-0x135da0,7,
-0x135dc0,7,
-0x135de0,6,
-0x135e00,14,
-0x135e40,13,
-0x135e80,7,
-0x135ea0,6,
-0x136000,2,
-0x136028,2,
-0x136050,2,
-0x136078,2,
-0x1360a0,8,
-0x1360c4,14,
-0x1361ac,1,
-0x1361d8,4,
-0x136200,6,
-0x136220,6,
-0x136240,6,
-0x136260,6,
-0x136280,3,
-0x136400,6,
-0x136420,6,
-0x136440,3,
-0x136480,4,
-0x138000,1,
-0x138008,1,
-0x138010,14,
-0x138100,1,
-0x138108,1,
-0x138110,14,
-0x138200,32,
-0x1382e0,2,
-0x138300,32,
-0x1383e0,2,
-0x138400,1,
-0x138408,1,
-0x138410,14,
-0x138500,1,
-0x138508,1,
-0x138510,14,
-0x138600,32,
-0x1386e0,2,
-0x138700,32,
-0x1387e0,2,
-0x138800,6,
-0x13881c,6,
-0x138a00,3,
-0x138a10,3,
-0x138a40,3,
-0x138a50,3,
-0x138a80,3,
-0x138a90,3,
-0x138ac0,3,
-0x138ad0,3,
-0x138b00,3,
-0x138c04,3,
-0x138c14,16,
-0x138c84,1,
-0x138c8c,1,
-0x138e00,31,
-0x138e80,1,
-0x138e88,3,
-0x138f00,31,
-0x138f80,1,
-0x138f88,3,
-0x139000,22,
-0x139100,26,
-0x139200,10,
-0x139244,5,
-0x1395f8,3,
-0x139608,4,
-0x1396f4,45,
-0x139800,31,
-0x139900,31,
-0x139a00,6,
-0x139a20,6,
-0x139a40,6,
-0x139a60,6,
-0x139a80,6,
-0x139aa0,6,
-0x139ac0,6,
-0x139ae0,6,
-0x139b00,3,
-0x139c00,20,
-0x139c74,1,
-0x139c80,20,
-0x139cf4,1,
-0x139d00,20,
-0x139d74,1,
-0x139d80,20,
-0x139df4,1,
-0x139e00,17,
-0x13a000,3,
-0x13a010,35,
-0x13a0a0,5,
-0x13a0b8,1,
-0x13a0c0,19,
-0x13a110,35,
-0x13a1a0,5,
-0x13a1b8,1,
-0x13a1c0,16,
-0x13a204,1,
-0x13a270,36,
-0x13a400,4,
-0x13a418,1,
-0x13a420,9,
-0x13a464,1,
-0x13a474,9,
-0x13a4a0,6,
-0x13a4c0,6,
-0x13a4e0,3,
-0x13a504,1,
-0x13a50c,29,
-0x13a600,3,
-0x13a800,3,
-0x13a814,50,
-0x13a8e0,3,
-0x13a8f0,1,
-0x13a900,6,
-0x13a920,6,
-0x13a940,6,
-0x13a960,6,
-0x13a980,6,
-0x13a9a0,6,
-0x13a9c0,3,
-0x13aa00,12,
-0x13aa34,22,
-0x13aac0,7,
-0x13aae0,3,
-0x13aaf0,1,
-0x13ab00,6,
-0x13ab20,6,
-0x13ab40,6,
-0x13ab60,6,
-0x13ab80,6,
-0x13aba0,3,
-0x13ac00,13,
-0x13ac40,11,
-0x13ac80,1,
-0x13b000,6,
-0x13b020,6,
-0x13b040,3,
-0x13b060,4,
-0x13b0f0,3,
-0x13b100,6,
-0x13b120,6,
-0x13b140,3,
-0x13b160,4,
-0x13b1f0,3,
-0x13b200,8,
-0x13b240,13,
-0x13b3f8,8,
-0x13b420,6,
-0x13b440,3,
-0x13b460,4,
-0x13b4f0,3,
-0x13b500,6,
-0x13b520,6,
-0x13b540,3,
-0x13b560,4,
-0x13b5f0,3,
-0x13b600,8,
-0x13b640,13,
-0x13b7f8,2,
-0x13b804,1,
-0x13b820,10,
-0x13b880,2,
-0x13b904,1,
-0x13b90c,1,
-0x13b914,1,
-0x13b91c,1,
-0x13b924,1,
-0x13b92c,1,
-0x13ba20,9,
-0x13bb00,6,
-0x13bb20,6,
-0x13bb40,6,
-0x13bb60,6,
-0x13bb80,6,
-0x13bba0,3,
-0x13bc00,16,
-0x13bd00,30,
-0x13bd80,1,
-0x13bd88,5,
-0x13bda0,1,
-0x13bda8,2,
-0x13bdc0,10,
-0x13be00,9,
-0x13be28,2,
-0x13be40,9,
-0x13be68,2,
-0x13bf00,25,
-0x13bf70,4,
-0x13bf84,5,
-0x13bfa0,6,
-0x13bff8,7,
-0x13c018,3,
-0x13c028,3,
-0x13c038,63,
-0x13c140,11,
-0x13c184,10,
-0x13c1c0,22,
-0x13c220,1,
-0x13c228,2,
-0x13c240,1,
-0x13c248,7,
-0x13c268,7,
-0x13c288,3,
-0x13c298,2,
-0x13c2f4,46,
-0x13c3b4,1,
-0x13c3bc,1,
-0x13c3c4,1,
-0x13c3cc,1,
-0x13c3d4,1,
-0x13c3dc,1,
-0x13c3e4,1,
-0x13c3ec,15,
-0x13c440,10,
-0x13c7a0,4,
-0x13c7b8,14,
-0x13c800,5,
-0x13c818,3,
-0x13c828,3,
-0x13c838,63,
-0x13c940,11,
-0x13c984,10,
-0x13c9c0,22,
-0x13ca20,1,
-0x13ca28,2,
-0x13ca40,1,
-0x13ca48,7,
-0x13ca68,7,
-0x13ca88,3,
-0x13ca98,2,
-0x13caf4,46,
-0x13cbb4,1,
-0x13cbbc,1,
-0x13cbc4,1,
-0x13cbcc,1,
-0x13cbd4,1,
-0x13cbdc,1,
-0x13cbe4,1,
-0x13cbec,15,
-0x13cc40,10,
-0x13cfa0,4,
-0x13cfb8,14,
-0x13d004,1,
-0x13d00c,3,
-0x13d020,5,
-0x13d038,3,
-0x13d048,43,
-0x13d118,24,
-0x13d200,32,
-0x13d284,3,
-0x13d294,3,
-0x13d2a4,11,
-0x13d400,6,
-0x13d420,6,
-0x13d440,6,
-0x13d460,6,
-0x13d480,6,
-0x13d4a0,6,
-0x13d4c0,6,
-0x13d4e0,6,
-0x13d500,6,
-0x13d520,6,
-0x13d540,6,
-0x13d560,6,
-0x13d580,6,
-0x13d5a0,6,
-0x13d5c0,6,
-0x13d5e0,6,
-0x13d600,6,
-0x13d620,3,
-0x13d800,4,
-0x13d840,15,
-0x13d880,7,
-0x13d8a0,13,
-0x13d8e0,7,
-0x13dab8,14,
-0x13db04,1,
-0x13db14,3,
-0x13db24,1,
-0x13db34,3,
-0x13db44,1,
-0x13db54,3,
-0x13db64,1,
-0x13db74,3,
-0x13db94,1,
-0x13dba0,2,
-0x13dc00,26,
-0x13dc80,14,
-0x13dcc0,27,
-0x13dd40,11,
-0x13dd80,5,
-0x13dda0,7,
-0x13ddc0,7,
-0x13dde0,6,
-0x13de00,14,
-0x13de40,13,
-0x13de80,7,
-0x13dea0,6,
-0x13e000,2,
-0x13e028,2,
-0x13e050,2,
-0x13e078,2,
-0x13e0a0,8,
-0x13e0c4,14,
-0x13e1ac,1,
-0x13e1d8,4,
-0x13e200,6,
-0x13e220,6,
-0x13e240,6,
-0x13e260,6,
-0x13e280,3,
-0x13e400,6,
-0x13e420,6,
-0x13e440,3,
-0x13e480,4,
-0x140000,1,
-0x140008,1,
-0x140010,14,
-0x140100,1,
-0x140108,1,
-0x140110,14,
-0x140200,32,
-0x1402e0,2,
-0x140300,32,
-0x1403e0,2,
-0x140400,1,
-0x140408,1,
-0x140410,14,
-0x140500,1,
-0x140508,1,
-0x140510,14,
-0x140600,32,
-0x1406e0,2,
-0x140700,32,
-0x1407e0,2,
-0x140800,6,
-0x14081c,6,
-0x140a00,3,
-0x140a10,3,
-0x140a40,3,
-0x140a50,3,
-0x140a80,3,
-0x140a90,3,
-0x140ac0,3,
-0x140ad0,3,
-0x140b00,3,
-0x140c04,3,
-0x140c14,16,
-0x140c84,1,
-0x140c8c,1,
-0x140e00,31,
-0x140e80,1,
-0x140e88,3,
-0x140f00,31,
-0x140f80,1,
-0x140f88,3,
-0x141000,22,
-0x141100,26,
-0x141200,10,
-0x141244,5,
-0x1415f8,3,
-0x141608,4,
-0x1416f4,45,
-0x141800,31,
-0x141900,31,
-0x141a00,6,
-0x141a20,6,
-0x141a40,6,
-0x141a60,6,
-0x141a80,6,
-0x141aa0,6,
-0x141ac0,6,
-0x141ae0,6,
-0x141b00,3,
-0x141c00,20,
-0x141c74,1,
-0x141c80,20,
-0x141cf4,1,
-0x141d00,20,
-0x141d74,1,
-0x141d80,20,
-0x141df4,1,
-0x141e00,17,
-0x142000,3,
-0x142010,35,
-0x1420a0,5,
-0x1420b8,1,
-0x1420c0,19,
-0x142110,35,
-0x1421a0,5,
-0x1421b8,1,
-0x1421c0,16,
-0x142204,1,
-0x142270,36,
-0x142400,4,
-0x142418,1,
-0x142420,9,
-0x142464,1,
-0x142474,9,
-0x1424a0,6,
-0x1424c0,6,
-0x1424e0,3,
-0x142504,1,
-0x14250c,29,
-0x142600,3,
-0x142800,3,
-0x142814,50,
-0x1428e0,3,
-0x1428f0,1,
-0x142900,6,
-0x142920,6,
-0x142940,6,
-0x142960,6,
-0x142980,6,
-0x1429a0,6,
-0x1429c0,3,
-0x142a00,12,
-0x142a34,22,
-0x142ac0,7,
-0x142ae0,3,
-0x142af0,1,
-0x142b00,6,
-0x142b20,6,
-0x142b40,6,
-0x142b60,6,
-0x142b80,6,
-0x142ba0,3,
-0x142c00,13,
-0x142c40,11,
-0x142c80,1,
-0x143000,6,
-0x143020,6,
-0x143040,3,
-0x143060,4,
-0x1430f0,3,
-0x143100,6,
-0x143120,6,
-0x143140,3,
-0x143160,4,
-0x1431f0,3,
-0x143200,8,
-0x143240,13,
-0x1433f8,8,
-0x143420,6,
-0x143440,3,
-0x143460,4,
-0x1434f0,3,
-0x143500,6,
-0x143520,6,
-0x143540,3,
-0x143560,4,
-0x1435f0,3,
-0x143600,8,
-0x143640,13,
-0x1437f8,2,
-0x143804,1,
-0x143820,10,
-0x143880,2,
-0x143904,1,
-0x14390c,1,
-0x143914,1,
-0x14391c,1,
-0x143924,1,
-0x14392c,1,
-0x143a20,9,
-0x143b00,6,
-0x143b20,6,
-0x143b40,6,
-0x143b60,6,
-0x143b80,6,
-0x143ba0,3,
-0x143c00,16,
-0x143d00,30,
-0x143d80,1,
-0x143d88,5,
-0x143da0,1,
-0x143da8,2,
-0x143dc0,10,
-0x143e00,9,
-0x143e28,2,
-0x143e40,9,
-0x143e68,2,
-0x143f00,25,
-0x143f70,4,
-0x143f84,5,
-0x143fa0,6,
-0x143ff8,7,
-0x144018,3,
-0x144028,3,
-0x144038,63,
-0x144140,11,
-0x144184,10,
-0x1441c0,22,
-0x144220,1,
-0x144228,2,
-0x144240,1,
-0x144248,7,
-0x144268,7,
-0x144288,3,
-0x144298,2,
-0x1442f4,46,
-0x1443b4,1,
-0x1443bc,1,
-0x1443c4,1,
-0x1443cc,1,
-0x1443d4,1,
-0x1443dc,1,
-0x1443e4,1,
-0x1443ec,15,
-0x144440,10,
-0x1447a0,4,
-0x1447b8,14,
-0x144800,5,
-0x144818,3,
-0x144828,3,
-0x144838,63,
-0x144940,11,
-0x144984,10,
-0x1449c0,22,
-0x144a20,1,
-0x144a28,2,
-0x144a40,1,
-0x144a48,7,
-0x144a68,7,
-0x144a88,3,
-0x144a98,2,
-0x144af4,46,
-0x144bb4,1,
-0x144bbc,1,
-0x144bc4,1,
-0x144bcc,1,
-0x144bd4,1,
-0x144bdc,1,
-0x144be4,1,
-0x144bec,15,
-0x144c40,10,
-0x144fa0,4,
-0x144fb8,14,
-0x145004,1,
-0x14500c,3,
-0x145020,5,
-0x145038,3,
-0x145048,43,
-0x145118,24,
-0x145200,32,
-0x145284,3,
-0x145294,3,
-0x1452a4,11,
-0x145400,6,
-0x145420,6,
-0x145440,6,
-0x145460,6,
-0x145480,6,
-0x1454a0,6,
-0x1454c0,6,
-0x1454e0,6,
-0x145500,6,
-0x145520,6,
-0x145540,6,
-0x145560,6,
-0x145580,6,
-0x1455a0,6,
-0x1455c0,6,
-0x1455e0,6,
-0x145600,6,
-0x145620,3,
-0x145800,4,
-0x145840,15,
-0x145880,7,
-0x1458a0,13,
-0x1458e0,7,
-0x145ab8,14,
-0x145b04,1,
-0x145b14,3,
-0x145b24,1,
-0x145b34,3,
-0x145b44,1,
-0x145b54,3,
-0x145b64,1,
-0x145b74,3,
-0x145b94,1,
-0x145ba0,2,
-0x145c00,26,
-0x145c80,14,
-0x145cc0,27,
-0x145d40,11,
-0x145d80,5,
-0x145da0,7,
-0x145dc0,7,
-0x145de0,6,
-0x145e00,14,
-0x145e40,13,
-0x145e80,7,
-0x145ea0,6,
-0x146000,2,
-0x146028,2,
-0x146050,2,
-0x146078,2,
-0x1460a0,8,
-0x1460c4,14,
-0x1461ac,1,
-0x1461d8,4,
-0x146200,6,
-0x146220,6,
-0x146240,6,
-0x146260,6,
-0x146280,3,
-0x146400,6,
-0x146420,6,
-0x146440,3,
-0x146480,4,
-0x148000,1,
-0x148008,1,
-0x148010,14,
-0x148100,1,
-0x148108,1,
-0x148110,14,
-0x148200,32,
-0x1482e0,2,
-0x148300,32,
-0x1483e0,2,
-0x148400,1,
-0x148408,1,
-0x148410,14,
-0x148500,1,
-0x148508,1,
-0x148510,14,
-0x148600,32,
-0x1486e0,2,
-0x148700,32,
-0x1487e0,2,
-0x148800,6,
-0x14881c,6,
-0x148a00,3,
-0x148a10,3,
-0x148a40,3,
-0x148a50,3,
-0x148a80,3,
-0x148a90,3,
-0x148ac0,3,
-0x148ad0,3,
-0x148b00,3,
-0x148c04,3,
-0x148c14,16,
-0x148c84,1,
-0x148c8c,1,
-0x148e00,31,
-0x148e80,1,
-0x148e88,3,
-0x148f00,31,
-0x148f80,1,
-0x148f88,3,
-0x149000,22,
-0x149100,26,
-0x149200,10,
-0x149244,5,
-0x1495f8,3,
-0x149608,4,
-0x1496f4,45,
-0x149800,31,
-0x149900,31,
-0x149a00,6,
-0x149a20,6,
-0x149a40,6,
-0x149a60,6,
-0x149a80,6,
-0x149aa0,6,
-0x149ac0,6,
-0x149ae0,6,
-0x149b00,3,
-0x149c00,20,
-0x149c74,1,
-0x149c80,20,
-0x149cf4,1,
-0x149d00,20,
-0x149d74,1,
-0x149d80,20,
-0x149df4,1,
-0x149e00,17,
-0x14a000,3,
-0x14a010,35,
-0x14a0a0,5,
-0x14a0b8,1,
-0x14a0c0,19,
-0x14a110,35,
-0x14a1a0,5,
-0x14a1b8,1,
-0x14a1c0,16,
-0x14a204,1,
-0x14a270,36,
-0x14a400,4,
-0x14a418,1,
-0x14a420,9,
-0x14a464,1,
-0x14a474,9,
-0x14a4a0,6,
-0x14a4c0,6,
-0x14a4e0,3,
-0x14a504,1,
-0x14a50c,29,
-0x14a600,3,
-0x14a800,3,
-0x14a814,50,
-0x14a8e0,3,
-0x14a8f0,1,
-0x14a900,6,
-0x14a920,6,
-0x14a940,6,
-0x14a960,6,
-0x14a980,6,
-0x14a9a0,6,
-0x14a9c0,3,
-0x14aa00,12,
-0x14aa34,22,
-0x14aac0,7,
-0x14aae0,3,
-0x14aaf0,1,
-0x14ab00,6,
-0x14ab20,6,
-0x14ab40,6,
-0x14ab60,6,
-0x14ab80,6,
-0x14aba0,3,
-0x14ac00,13,
-0x14ac40,11,
-0x14ac80,1,
-0x14b000,6,
-0x14b020,6,
-0x14b040,3,
-0x14b060,4,
-0x14b0f0,3,
-0x14b100,6,
-0x14b120,6,
-0x14b140,3,
-0x14b160,4,
-0x14b1f0,3,
-0x14b200,8,
-0x14b240,13,
-0x14b3f8,8,
-0x14b420,6,
-0x14b440,3,
-0x14b460,4,
-0x14b4f0,3,
-0x14b500,6,
-0x14b520,6,
-0x14b540,3,
-0x14b560,4,
-0x14b5f0,3,
-0x14b600,8,
-0x14b640,13,
-0x14b7f8,2,
-0x14b804,1,
-0x14b820,10,
-0x14b880,2,
-0x14b904,1,
-0x14b90c,1,
-0x14b914,1,
-0x14b91c,1,
-0x14b924,1,
-0x14b92c,1,
-0x14ba20,9,
-0x14bb00,6,
-0x14bb20,6,
-0x14bb40,6,
-0x14bb60,6,
-0x14bb80,6,
-0x14bba0,3,
-0x14bc00,16,
-0x14bd00,30,
-0x14bd80,1,
-0x14bd88,5,
-0x14bda0,1,
-0x14bda8,2,
-0x14bdc0,10,
-0x14be00,9,
-0x14be28,2,
-0x14be40,9,
-0x14be68,2,
-0x14bf00,25,
-0x14bf70,4,
-0x14bf84,5,
-0x14bfa0,6,
-0x14bff8,7,
-0x14c018,3,
-0x14c028,3,
-0x14c038,63,
-0x14c140,11,
-0x14c184,10,
-0x14c1c0,22,
-0x14c220,1,
-0x14c228,2,
-0x14c240,1,
-0x14c248,7,
-0x14c268,7,
-0x14c288,3,
-0x14c298,2,
-0x14c2f4,46,
-0x14c3b4,1,
-0x14c3bc,1,
-0x14c3c4,1,
-0x14c3cc,1,
-0x14c3d4,1,
-0x14c3dc,1,
-0x14c3e4,1,
-0x14c3ec,15,
-0x14c440,10,
-0x14c7a0,4,
-0x14c7b8,14,
-0x14c800,5,
-0x14c818,3,
-0x14c828,3,
-0x14c838,63,
-0x14c940,11,
-0x14c984,10,
-0x14c9c0,22,
-0x14ca20,1,
-0x14ca28,2,
-0x14ca40,1,
-0x14ca48,7,
-0x14ca68,7,
-0x14ca88,3,
-0x14ca98,2,
-0x14caf4,46,
-0x14cbb4,1,
-0x14cbbc,1,
-0x14cbc4,1,
-0x14cbcc,1,
-0x14cbd4,1,
-0x14cbdc,1,
-0x14cbe4,1,
-0x14cbec,15,
-0x14cc40,10,
-0x14cfa0,4,
-0x14cfb8,14,
-0x14d004,1,
-0x14d00c,3,
-0x14d020,5,
-0x14d038,3,
-0x14d048,43,
-0x14d118,24,
-0x14d200,32,
-0x14d284,3,
-0x14d294,3,
-0x14d2a4,11,
-0x14d400,6,
-0x14d420,6,
-0x14d440,6,
-0x14d460,6,
-0x14d480,6,
-0x14d4a0,6,
-0x14d4c0,6,
-0x14d4e0,6,
-0x14d500,6,
-0x14d520,6,
-0x14d540,6,
-0x14d560,6,
-0x14d580,6,
-0x14d5a0,6,
-0x14d5c0,6,
-0x14d5e0,6,
-0x14d600,6,
-0x14d620,3,
-0x14d800,4,
-0x14d840,15,
-0x14d880,7,
-0x14d8a0,13,
-0x14d8e0,7,
-0x14dab8,14,
-0x14db04,1,
-0x14db14,3,
-0x14db24,1,
-0x14db34,3,
-0x14db44,1,
-0x14db54,3,
-0x14db64,1,
-0x14db74,3,
-0x14db94,1,
-0x14dba0,2,
-0x14dc00,26,
-0x14dc80,14,
-0x14dcc0,27,
-0x14dd40,11,
-0x14dd80,5,
-0x14dda0,7,
-0x14ddc0,7,
-0x14dde0,6,
-0x14de00,14,
-0x14de40,13,
-0x14de80,7,
-0x14dea0,6,
-0x14e000,2,
-0x14e028,2,
-0x14e050,2,
-0x14e078,2,
-0x14e0a0,8,
-0x14e0c4,14,
-0x14e1ac,1,
-0x14e1d8,4,
-0x14e200,6,
-0x14e220,6,
-0x14e240,6,
-0x14e260,6,
-0x14e280,3,
-0x14e400,6,
-0x14e420,6,
-0x14e440,3,
-0x14e480,4,
-0x150000,1,
-0x150008,1,
-0x150010,14,
-0x150100,1,
-0x150108,1,
-0x150110,14,
-0x150200,32,
-0x1502e0,2,
-0x150300,32,
-0x1503e0,2,
-0x150400,1,
-0x150408,1,
-0x150410,14,
-0x150500,1,
-0x150508,1,
-0x150510,14,
-0x150600,32,
-0x1506e0,2,
-0x150700,32,
-0x1507e0,2,
-0x150800,6,
-0x15081c,6,
-0x150a00,3,
-0x150a10,3,
-0x150a40,3,
-0x150a50,3,
-0x150a80,3,
-0x150a90,3,
-0x150ac0,3,
-0x150ad0,3,
-0x150b00,3,
-0x150c04,3,
-0x150c14,16,
-0x150c84,1,
-0x150c8c,1,
-0x150e00,31,
-0x150e80,1,
-0x150e88,3,
-0x150f00,31,
-0x150f80,1,
-0x150f88,3,
-0x151000,22,
-0x151100,26,
-0x151200,10,
-0x151244,5,
-0x1515f8,3,
-0x151608,4,
-0x1516f4,45,
-0x151800,31,
-0x151900,31,
-0x151a00,6,
-0x151a20,6,
-0x151a40,6,
-0x151a60,6,
-0x151a80,6,
-0x151aa0,6,
-0x151ac0,6,
-0x151ae0,6,
-0x151b00,3,
-0x151c00,20,
-0x151c74,1,
-0x151c80,20,
-0x151cf4,1,
-0x151d00,20,
-0x151d74,1,
-0x151d80,20,
-0x151df4,1,
-0x151e00,17,
-0x152000,3,
-0x152010,35,
-0x1520a0,5,
-0x1520b8,1,
-0x1520c0,19,
-0x152110,35,
-0x1521a0,5,
-0x1521b8,1,
-0x1521c0,16,
-0x152204,1,
-0x152270,36,
-0x152400,4,
-0x152418,1,
-0x152420,9,
-0x152464,1,
-0x152474,9,
-0x1524a0,6,
-0x1524c0,6,
-0x1524e0,3,
-0x152504,1,
-0x15250c,29,
-0x152600,3,
-0x152800,3,
-0x152814,50,
-0x1528e0,3,
-0x1528f0,1,
-0x152900,6,
-0x152920,6,
-0x152940,6,
-0x152960,6,
-0x152980,6,
-0x1529a0,6,
-0x1529c0,3,
-0x152a00,12,
-0x152a34,22,
-0x152ac0,7,
-0x152ae0,3,
-0x152af0,1,
-0x152b00,6,
-0x152b20,6,
-0x152b40,6,
-0x152b60,6,
-0x152b80,6,
-0x152ba0,3,
-0x152c00,13,
-0x152c40,11,
-0x152c80,1,
-0x153000,6,
-0x153020,6,
-0x153040,3,
-0x153060,4,
-0x1530f0,3,
-0x153100,6,
-0x153120,6,
-0x153140,3,
-0x153160,4,
-0x1531f0,3,
-0x153200,8,
-0x153240,13,
-0x1533f8,8,
-0x153420,6,
-0x153440,3,
-0x153460,4,
-0x1534f0,3,
-0x153500,6,
-0x153520,6,
-0x153540,3,
-0x153560,4,
-0x1535f0,3,
-0x153600,8,
-0x153640,13,
-0x1537f8,2,
-0x153804,1,
-0x153820,10,
-0x153880,2,
-0x153904,1,
-0x15390c,1,
-0x153914,1,
-0x15391c,1,
-0x153924,1,
-0x15392c,1,
-0x153a20,9,
-0x153b00,6,
-0x153b20,6,
-0x153b40,6,
-0x153b60,6,
-0x153b80,6,
-0x153ba0,3,
-0x153c00,16,
-0x153d00,30,
-0x153d80,1,
-0x153d88,5,
-0x153da0,1,
-0x153da8,2,
-0x153dc0,10,
-0x153e00,9,
-0x153e28,2,
-0x153e40,9,
-0x153e68,2,
-0x153f00,25,
-0x153f70,4,
-0x153f84,5,
-0x153fa0,6,
-0x153ff8,7,
-0x154018,3,
-0x154028,3,
-0x154038,63,
-0x154140,11,
-0x154184,10,
-0x1541c0,22,
-0x154220,1,
-0x154228,2,
-0x154240,1,
-0x154248,7,
-0x154268,7,
-0x154288,3,
-0x154298,2,
-0x1542f4,46,
-0x1543b4,1,
-0x1543bc,1,
-0x1543c4,1,
-0x1543cc,1,
-0x1543d4,1,
-0x1543dc,1,
-0x1543e4,1,
-0x1543ec,15,
-0x154440,10,
-0x1547a0,4,
-0x1547b8,14,
-0x154800,5,
-0x154818,3,
-0x154828,3,
-0x154838,63,
-0x154940,11,
-0x154984,10,
-0x1549c0,22,
-0x154a20,1,
-0x154a28,2,
-0x154a40,1,
-0x154a48,7,
-0x154a68,7,
-0x154a88,3,
-0x154a98,2,
-0x154af4,46,
-0x154bb4,1,
-0x154bbc,1,
-0x154bc4,1,
-0x154bcc,1,
-0x154bd4,1,
-0x154bdc,1,
-0x154be4,1,
-0x154bec,15,
-0x154c40,10,
-0x154fa0,4,
-0x154fb8,14,
-0x155004,1,
-0x15500c,3,
-0x155020,5,
-0x155038,3,
-0x155048,43,
-0x155118,24,
-0x155200,32,
-0x155284,3,
-0x155294,3,
-0x1552a4,11,
-0x155400,6,
-0x155420,6,
-0x155440,6,
-0x155460,6,
-0x155480,6,
-0x1554a0,6,
-0x1554c0,6,
-0x1554e0,6,
-0x155500,6,
-0x155520,6,
-0x155540,6,
-0x155560,6,
-0x155580,6,
-0x1555a0,6,
-0x1555c0,6,
-0x1555e0,6,
-0x155600,6,
-0x155620,3,
-0x155800,4,
-0x155840,15,
-0x155880,7,
-0x1558a0,13,
-0x1558e0,7,
-0x155ab8,14,
-0x155b04,1,
-0x155b14,3,
-0x155b24,1,
-0x155b34,3,
-0x155b44,1,
-0x155b54,3,
-0x155b64,1,
-0x155b74,3,
-0x155b94,1,
-0x155ba0,2,
-0x155c00,26,
-0x155c80,14,
-0x155cc0,27,
-0x155d40,11,
-0x155d80,5,
-0x155da0,7,
-0x155dc0,7,
-0x155de0,6,
-0x155e00,14,
-0x155e40,13,
-0x155e80,7,
-0x155ea0,6,
-0x156000,2,
-0x156028,2,
-0x156050,2,
-0x156078,2,
-0x1560a0,8,
-0x1560c4,14,
-0x1561ac,1,
-0x1561d8,4,
-0x156200,6,
-0x156220,6,
-0x156240,6,
-0x156260,6,
-0x156280,3,
-0x156400,6,
-0x156420,6,
-0x156440,3,
-0x156480,4,
-0x158000,1,
-0x158008,1,
-0x158010,14,
-0x158100,1,
-0x158108,1,
-0x158110,14,
-0x158200,32,
-0x1582e0,2,
-0x158300,32,
-0x1583e0,2,
-0x158400,1,
-0x158408,1,
-0x158410,14,
-0x158500,1,
-0x158508,1,
-0x158510,14,
-0x158600,32,
-0x1586e0,2,
-0x158700,32,
-0x1587e0,2,
-0x158800,6,
-0x15881c,6,
-0x158a00,3,
-0x158a10,3,
-0x158a40,3,
-0x158a50,3,
-0x158a80,3,
-0x158a90,3,
-0x158ac0,3,
-0x158ad0,3,
-0x158b00,3,
-0x158c04,3,
-0x158c14,16,
-0x158c84,1,
-0x158c8c,1,
-0x158e00,31,
-0x158e80,1,
-0x158e88,3,
-0x158f00,31,
-0x158f80,1,
-0x158f88,3,
-0x159000,22,
-0x159100,26,
-0x159200,10,
-0x159244,5,
-0x1595f8,3,
-0x159608,4,
-0x1596f4,45,
-0x159800,31,
-0x159900,31,
-0x159a00,6,
-0x159a20,6,
-0x159a40,6,
-0x159a60,6,
-0x159a80,6,
-0x159aa0,6,
-0x159ac0,6,
-0x159ae0,6,
-0x159b00,3,
-0x159c00,20,
-0x159c74,1,
-0x159c80,20,
-0x159cf4,1,
-0x159d00,20,
-0x159d74,1,
-0x159d80,20,
-0x159df4,1,
-0x159e00,17,
-0x15a000,3,
-0x15a010,35,
-0x15a0a0,5,
-0x15a0b8,1,
-0x15a0c0,19,
-0x15a110,35,
-0x15a1a0,5,
-0x15a1b8,1,
-0x15a1c0,16,
-0x15a204,1,
-0x15a270,36,
-0x15a400,4,
-0x15a418,1,
-0x15a420,9,
-0x15a464,1,
-0x15a474,9,
-0x15a4a0,6,
-0x15a4c0,6,
-0x15a4e0,3,
-0x15a504,1,
-0x15a50c,29,
-0x15a600,3,
-0x15a800,3,
-0x15a814,50,
-0x15a8e0,3,
-0x15a8f0,1,
-0x15a900,6,
-0x15a920,6,
-0x15a940,6,
-0x15a960,6,
-0x15a980,6,
-0x15a9a0,6,
-0x15a9c0,3,
-0x15aa00,12,
-0x15aa34,22,
-0x15aac0,7,
-0x15aae0,3,
-0x15aaf0,1,
-0x15ab00,6,
-0x15ab20,6,
-0x15ab40,6,
-0x15ab60,6,
-0x15ab80,6,
-0x15aba0,3,
-0x15ac00,13,
-0x15ac40,11,
-0x15ac80,1,
-0x15b000,6,
-0x15b020,6,
-0x15b040,3,
-0x15b060,4,
-0x15b0f0,3,
-0x15b100,6,
-0x15b120,6,
-0x15b140,3,
-0x15b160,4,
-0x15b1f0,3,
-0x15b200,8,
-0x15b240,13,
-0x15b3f8,8,
-0x15b420,6,
-0x15b440,3,
-0x15b460,4,
-0x15b4f0,3,
-0x15b500,6,
-0x15b520,6,
-0x15b540,3,
-0x15b560,4,
-0x15b5f0,3,
-0x15b600,8,
-0x15b640,13,
-0x15b7f8,2,
-0x15b804,1,
-0x15b820,10,
-0x15b880,2,
-0x15b904,1,
-0x15b90c,1,
-0x15b914,1,
-0x15b91c,1,
-0x15b924,1,
-0x15b92c,1,
-0x15ba20,9,
-0x15bb00,6,
-0x15bb20,6,
-0x15bb40,6,
-0x15bb60,6,
-0x15bb80,6,
-0x15bba0,3,
-0x15bc00,16,
-0x15bd00,30,
-0x15bd80,1,
-0x15bd88,5,
-0x15bda0,1,
-0x15bda8,2,
-0x15bdc0,10,
-0x15be00,9,
-0x15be28,2,
-0x15be40,9,
-0x15be68,2,
-0x15bf00,25,
-0x15bf70,4,
-0x15bf84,5,
-0x15bfa0,6,
-0x15bff8,7,
-0x15c018,3,
-0x15c028,3,
-0x15c038,63,
-0x15c140,11,
-0x15c184,10,
-0x15c1c0,22,
-0x15c220,1,
-0x15c228,2,
-0x15c240,1,
-0x15c248,7,
-0x15c268,7,
-0x15c288,3,
-0x15c298,2,
-0x15c2f4,46,
-0x15c3b4,1,
-0x15c3bc,1,
-0x15c3c4,1,
-0x15c3cc,1,
-0x15c3d4,1,
-0x15c3dc,1,
-0x15c3e4,1,
-0x15c3ec,15,
-0x15c440,10,
-0x15c7a0,4,
-0x15c7b8,14,
-0x15c800,5,
-0x15c818,3,
-0x15c828,3,
-0x15c838,63,
-0x15c940,11,
-0x15c984,10,
-0x15c9c0,22,
-0x15ca20,1,
-0x15ca28,2,
-0x15ca40,1,
-0x15ca48,7,
-0x15ca68,7,
-0x15ca88,3,
-0x15ca98,2,
-0x15caf4,46,
-0x15cbb4,1,
-0x15cbbc,1,
-0x15cbc4,1,
-0x15cbcc,1,
-0x15cbd4,1,
-0x15cbdc,1,
-0x15cbe4,1,
-0x15cbec,15,
-0x15cc40,10,
-0x15cfa0,4,
-0x15cfb8,14,
-0x15d004,1,
-0x15d00c,3,
-0x15d020,5,
-0x15d038,3,
-0x15d048,43,
-0x15d118,24,
-0x15d200,32,
-0x15d284,3,
-0x15d294,3,
-0x15d2a4,11,
-0x15d400,6,
-0x15d420,6,
-0x15d440,6,
-0x15d460,6,
-0x15d480,6,
-0x15d4a0,6,
-0x15d4c0,6,
-0x15d4e0,6,
-0x15d500,6,
-0x15d520,6,
-0x15d540,6,
-0x15d560,6,
-0x15d580,6,
-0x15d5a0,6,
-0x15d5c0,6,
-0x15d5e0,6,
-0x15d600,6,
-0x15d620,3,
-0x15d800,4,
-0x15d840,15,
-0x15d880,7,
-0x15d8a0,13,
-0x15d8e0,7,
-0x15dab8,14,
-0x15db04,1,
-0x15db14,3,
-0x15db24,1,
-0x15db34,3,
-0x15db44,1,
-0x15db54,3,
-0x15db64,1,
-0x15db74,3,
-0x15db94,1,
-0x15dba0,2,
-0x15dc00,26,
-0x15dc80,14,
-0x15dcc0,27,
-0x15dd40,11,
-0x15dd80,5,
-0x15dda0,7,
-0x15ddc0,7,
-0x15dde0,6,
-0x15de00,14,
-0x15de40,13,
-0x15de80,7,
-0x15dea0,6,
-0x15e000,2,
-0x15e028,2,
-0x15e050,2,
-0x15e078,2,
-0x15e0a0,8,
-0x15e0c4,14,
-0x15e1ac,1,
-0x15e1d8,4,
-0x15e200,6,
-0x15e220,6,
-0x15e240,6,
-0x15e260,6,
-0x15e280,3,
-0x15e400,6,
-0x15e420,6,
-0x15e440,3,
-0x15e480,4,
-0x160000,1,
-0x160008,1,
-0x160010,14,
-0x160100,1,
-0x160108,1,
-0x160110,14,
-0x160200,32,
-0x1602e0,2,
-0x160300,32,
-0x1603e0,2,
-0x160400,1,
-0x160408,1,
-0x160410,14,
-0x160500,1,
-0x160508,1,
-0x160510,14,
-0x160600,32,
-0x1606e0,2,
-0x160700,32,
-0x1607e0,2,
-0x160800,6,
-0x16081c,6,
-0x160a00,3,
-0x160a10,3,
-0x160a40,3,
-0x160a50,3,
-0x160a80,3,
-0x160a90,3,
-0x160ac0,3,
-0x160ad0,3,
-0x160b00,3,
-0x160c04,3,
-0x160c14,16,
-0x160c84,1,
-0x160c8c,1,
-0x160e00,31,
-0x160e80,1,
-0x160e88,3,
-0x160f00,31,
-0x160f80,1,
-0x160f88,3,
-0x161000,22,
-0x161100,26,
-0x161200,10,
-0x161244,5,
-0x1615f8,3,
-0x161608,4,
-0x1616f4,45,
-0x161800,31,
-0x161900,31,
-0x161a00,6,
-0x161a20,6,
-0x161a40,6,
-0x161a60,6,
-0x161a80,6,
-0x161aa0,6,
-0x161ac0,6,
-0x161ae0,6,
-0x161b00,3,
-0x161c00,20,
-0x161c74,1,
-0x161c80,20,
-0x161cf4,1,
-0x161d00,20,
-0x161d74,1,
-0x161d80,20,
-0x161df4,1,
-0x161e00,17,
-0x162000,3,
-0x162010,35,
-0x1620a0,5,
-0x1620b8,1,
-0x1620c0,19,
-0x162110,35,
-0x1621a0,5,
-0x1621b8,1,
-0x1621c0,16,
-0x162204,1,
-0x162270,36,
-0x162400,4,
-0x162418,1,
-0x162420,9,
-0x162464,1,
-0x162474,9,
-0x1624a0,6,
-0x1624c0,6,
-0x1624e0,3,
-0x162504,1,
-0x16250c,29,
-0x162600,3,
-0x162800,3,
-0x162814,50,
-0x1628e0,3,
-0x1628f0,1,
-0x162900,6,
-0x162920,6,
-0x162940,6,
-0x162960,6,
-0x162980,6,
-0x1629a0,6,
-0x1629c0,3,
-0x162a00,12,
-0x162a34,22,
-0x162ac0,7,
-0x162ae0,3,
-0x162af0,1,
-0x162b00,6,
-0x162b20,6,
-0x162b40,6,
-0x162b60,6,
-0x162b80,6,
-0x162ba0,3,
-0x162c00,13,
-0x162c40,11,
-0x162c80,1,
-0x163000,6,
-0x163020,6,
-0x163040,3,
-0x163060,4,
-0x1630f0,3,
-0x163100,6,
-0x163120,6,
-0x163140,3,
-0x163160,4,
-0x1631f0,3,
-0x163200,8,
-0x163240,13,
-0x1633f8,8,
-0x163420,6,
-0x163440,3,
-0x163460,4,
-0x1634f0,3,
-0x163500,6,
-0x163520,6,
-0x163540,3,
-0x163560,4,
-0x1635f0,3,
-0x163600,8,
-0x163640,13,
-0x1637f8,2,
-0x163804,1,
-0x163820,10,
-0x163880,2,
-0x163904,1,
-0x16390c,1,
-0x163914,1,
-0x16391c,1,
-0x163924,1,
-0x16392c,1,
-0x163a20,9,
-0x163b00,6,
-0x163b20,6,
-0x163b40,6,
-0x163b60,6,
-0x163b80,6,
-0x163ba0,3,
-0x163c00,16,
-0x163d00,30,
-0x163d80,1,
-0x163d88,5,
-0x163da0,1,
-0x163da8,2,
-0x163dc0,10,
-0x163e00,9,
-0x163e28,2,
-0x163e40,9,
-0x163e68,2,
-0x163f00,25,
-0x163f70,4,
-0x163f84,5,
-0x163fa0,6,
-0x163ff8,7,
-0x164018,3,
-0x164028,3,
-0x164038,63,
-0x164140,11,
-0x164184,10,
-0x1641c0,22,
-0x164220,1,
-0x164228,2,
-0x164240,1,
-0x164248,7,
-0x164268,7,
-0x164288,3,
-0x164298,2,
-0x1642f4,46,
-0x1643b4,1,
-0x1643bc,1,
-0x1643c4,1,
-0x1643cc,1,
-0x1643d4,1,
-0x1643dc,1,
-0x1643e4,1,
-0x1643ec,15,
-0x164440,10,
-0x1647a0,4,
-0x1647b8,14,
-0x164800,5,
-0x164818,3,
-0x164828,3,
-0x164838,63,
-0x164940,11,
-0x164984,10,
-0x1649c0,22,
-0x164a20,1,
-0x164a28,2,
-0x164a40,1,
-0x164a48,7,
-0x164a68,7,
-0x164a88,3,
-0x164a98,2,
-0x164af4,46,
-0x164bb4,1,
-0x164bbc,1,
-0x164bc4,1,
-0x164bcc,1,
-0x164bd4,1,
-0x164bdc,1,
-0x164be4,1,
-0x164bec,15,
-0x164c40,10,
-0x164fa0,4,
-0x164fb8,14,
-0x165004,1,
-0x16500c,3,
-0x165020,5,
-0x165038,3,
-0x165048,43,
-0x165118,24,
-0x165200,32,
-0x165284,3,
-0x165294,3,
-0x1652a4,11,
-0x165400,6,
-0x165420,6,
-0x165440,6,
-0x165460,6,
-0x165480,6,
-0x1654a0,6,
-0x1654c0,6,
-0x1654e0,6,
-0x165500,6,
-0x165520,6,
-0x165540,6,
-0x165560,6,
-0x165580,6,
-0x1655a0,6,
-0x1655c0,6,
-0x1655e0,6,
-0x165600,6,
-0x165620,3,
-0x165800,4,
-0x165840,15,
-0x165880,7,
-0x1658a0,13,
-0x1658e0,7,
-0x165ab8,14,
-0x165b04,1,
-0x165b14,3,
-0x165b24,1,
-0x165b34,3,
-0x165b44,1,
-0x165b54,3,
-0x165b64,1,
-0x165b74,3,
-0x165b94,1,
-0x165ba0,2,
-0x165c00,26,
-0x165c80,14,
-0x165cc0,27,
-0x165d40,11,
-0x165d80,5,
-0x165da0,7,
-0x165dc0,7,
-0x165de0,6,
-0x165e00,14,
-0x165e40,13,
-0x165e80,7,
-0x165ea0,6,
-0x166000,2,
-0x166028,2,
-0x166050,2,
-0x166078,2,
-0x1660a0,8,
-0x1660c4,14,
-0x1661ac,1,
-0x1661d8,4,
-0x166200,6,
-0x166220,6,
-0x166240,6,
-0x166260,6,
-0x166280,3,
-0x166400,6,
-0x166420,6,
-0x166440,3,
-0x166480,4,
-0x168000,1,
-0x168008,1,
-0x168010,14,
-0x168100,1,
-0x168108,1,
-0x168110,14,
-0x168200,32,
-0x1682e0,2,
-0x168300,32,
-0x1683e0,2,
-0x168400,1,
-0x168408,1,
-0x168410,14,
-0x168500,1,
-0x168508,1,
-0x168510,14,
-0x168600,32,
-0x1686e0,2,
-0x168700,32,
-0x1687e0,2,
-0x168800,6,
-0x16881c,6,
-0x168a00,3,
-0x168a10,3,
-0x168a40,3,
-0x168a50,3,
-0x168a80,3,
-0x168a90,3,
-0x168ac0,3,
-0x168ad0,3,
-0x168b00,3,
-0x168c04,3,
-0x168c14,16,
-0x168c84,1,
-0x168c8c,1,
-0x168e00,31,
-0x168e80,1,
-0x168e88,3,
-0x168f00,31,
-0x168f80,1,
-0x168f88,3,
-0x169000,22,
-0x169100,26,
-0x169200,10,
-0x169244,5,
-0x1695f8,3,
-0x169608,4,
-0x1696f4,45,
-0x169800,31,
-0x169900,31,
-0x169a00,6,
-0x169a20,6,
-0x169a40,6,
-0x169a60,6,
-0x169a80,6,
-0x169aa0,6,
-0x169ac0,6,
-0x169ae0,6,
-0x169b00,3,
-0x169c00,20,
-0x169c74,1,
-0x169c80,20,
-0x169cf4,1,
-0x169d00,20,
-0x169d74,1,
-0x169d80,20,
-0x169df4,1,
-0x169e00,17,
-0x16a000,3,
-0x16a010,35,
-0x16a0a0,5,
-0x16a0b8,1,
-0x16a0c0,19,
-0x16a110,35,
-0x16a1a0,5,
-0x16a1b8,1,
-0x16a1c0,16,
-0x16a204,1,
-0x16a270,36,
-0x16a400,4,
-0x16a418,1,
-0x16a420,9,
-0x16a464,1,
-0x16a474,9,
-0x16a4a0,6,
-0x16a4c0,6,
-0x16a4e0,3,
-0x16a504,1,
-0x16a50c,29,
-0x16a600,3,
-0x16a800,3,
-0x16a814,50,
-0x16a8e0,3,
-0x16a8f0,1,
-0x16a900,6,
-0x16a920,6,
-0x16a940,6,
-0x16a960,6,
-0x16a980,6,
-0x16a9a0,6,
-0x16a9c0,3,
-0x16aa00,12,
-0x16aa34,22,
-0x16aac0,7,
-0x16aae0,3,
-0x16aaf0,1,
-0x16ab00,6,
-0x16ab20,6,
-0x16ab40,6,
-0x16ab60,6,
-0x16ab80,6,
-0x16aba0,3,
-0x16ac00,13,
-0x16ac40,11,
-0x16ac80,1,
-0x16b000,6,
-0x16b020,6,
-0x16b040,3,
-0x16b060,4,
-0x16b0f0,3,
-0x16b100,6,
-0x16b120,6,
-0x16b140,3,
-0x16b160,4,
-0x16b1f0,3,
-0x16b200,8,
-0x16b240,13,
-0x16b3f8,8,
-0x16b420,6,
-0x16b440,3,
-0x16b460,4,
-0x16b4f0,3,
-0x16b500,6,
-0x16b520,6,
-0x16b540,3,
-0x16b560,4,
-0x16b5f0,3,
-0x16b600,8,
-0x16b640,13,
-0x16b7f8,2,
-0x16b804,1,
-0x16b820,10,
-0x16b880,2,
-0x16b904,1,
-0x16b90c,1,
-0x16b914,1,
-0x16b91c,1,
-0x16b924,1,
-0x16b92c,1,
-0x16ba20,9,
-0x16bb00,6,
-0x16bb20,6,
-0x16bb40,6,
-0x16bb60,6,
-0x16bb80,6,
-0x16bba0,3,
-0x16bc00,16,
-0x16bd00,30,
-0x16bd80,1,
-0x16bd88,5,
-0x16bda0,1,
-0x16bda8,2,
-0x16bdc0,10,
-0x16be00,9,
-0x16be28,2,
-0x16be40,9,
-0x16be68,2,
-0x16bf00,25,
-0x16bf70,4,
-0x16bf84,5,
-0x16bfa0,6,
-0x16bff8,7,
-0x16c018,3,
-0x16c028,3,
-0x16c038,63,
-0x16c140,11,
-0x16c184,10,
-0x16c1c0,22,
-0x16c220,1,
-0x16c228,2,
-0x16c240,1,
-0x16c248,7,
-0x16c268,7,
-0x16c288,3,
-0x16c298,2,
-0x16c2f4,46,
-0x16c3b4,1,
-0x16c3bc,1,
-0x16c3c4,1,
-0x16c3cc,1,
-0x16c3d4,1,
-0x16c3dc,1,
-0x16c3e4,1,
-0x16c3ec,15,
-0x16c440,10,
-0x16c7a0,4,
-0x16c7b8,14,
-0x16c800,5,
-0x16c818,3,
-0x16c828,3,
-0x16c838,63,
-0x16c940,11,
-0x16c984,10,
-0x16c9c0,22,
-0x16ca20,1,
-0x16ca28,2,
-0x16ca40,1,
-0x16ca48,7,
-0x16ca68,7,
-0x16ca88,3,
-0x16ca98,2,
-0x16caf4,46,
-0x16cbb4,1,
-0x16cbbc,1,
-0x16cbc4,1,
-0x16cbcc,1,
-0x16cbd4,1,
-0x16cbdc,1,
-0x16cbe4,1,
-0x16cbec,15,
-0x16cc40,10,
-0x16cfa0,4,
-0x16cfb8,14,
-0x16d004,1,
-0x16d00c,3,
-0x16d020,5,
-0x16d038,3,
-0x16d048,43,
-0x16d118,24,
-0x16d200,32,
-0x16d284,3,
-0x16d294,3,
-0x16d2a4,11,
-0x16d400,6,
-0x16d420,6,
-0x16d440,6,
-0x16d460,6,
-0x16d480,6,
-0x16d4a0,6,
-0x16d4c0,6,
-0x16d4e0,6,
-0x16d500,6,
-0x16d520,6,
-0x16d540,6,
-0x16d560,6,
-0x16d580,6,
-0x16d5a0,6,
-0x16d5c0,6,
-0x16d5e0,6,
-0x16d600,6,
-0x16d620,3,
-0x16d800,4,
-0x16d840,15,
-0x16d880,7,
-0x16d8a0,13,
-0x16d8e0,7,
-0x16dab8,14,
-0x16db04,1,
-0x16db14,3,
-0x16db24,1,
-0x16db34,3,
-0x16db44,1,
-0x16db54,3,
-0x16db64,1,
-0x16db74,3,
-0x16db94,1,
-0x16dba0,2,
-0x16dc00,26,
-0x16dc80,14,
-0x16dcc0,27,
-0x16dd40,11,
-0x16dd80,5,
-0x16dda0,7,
-0x16ddc0,7,
-0x16dde0,6,
-0x16de00,14,
-0x16de40,13,
-0x16de80,7,
-0x16dea0,6,
-0x16e000,2,
-0x16e028,2,
-0x16e050,2,
-0x16e078,2,
-0x16e0a0,8,
-0x16e0c4,14,
-0x16e1ac,1,
-0x16e1d8,4,
-0x16e200,6,
-0x16e220,6,
-0x16e240,6,
-0x16e260,6,
-0x16e280,3,
-0x16e400,6,
-0x16e420,6,
-0x16e440,3,
-0x16e480,4,
-0x170000,1,
-0x170008,1,
-0x170010,14,
-0x170100,1,
-0x170108,1,
-0x170110,14,
-0x170200,32,
-0x1702e0,2,
-0x170300,32,
-0x1703e0,2,
-0x170400,1,
-0x170408,1,
-0x170410,14,
-0x170500,1,
-0x170508,1,
-0x170510,14,
-0x170600,32,
-0x1706e0,2,
-0x170700,32,
-0x1707e0,2,
-0x170800,6,
-0x17081c,6,
-0x170a00,3,
-0x170a10,3,
-0x170a40,3,
-0x170a50,3,
-0x170a80,3,
-0x170a90,3,
-0x170ac0,3,
-0x170ad0,3,
-0x170b00,3,
-0x170c04,3,
-0x170c14,16,
-0x170c84,1,
-0x170c8c,1,
-0x170e00,31,
-0x170e80,1,
-0x170e88,3,
-0x170f00,31,
-0x170f80,1,
-0x170f88,3,
-0x171000,22,
-0x171100,26,
-0x171200,10,
-0x171244,5,
-0x1715f8,3,
-0x171608,4,
-0x1716f4,45,
-0x171800,31,
-0x171900,31,
-0x171a00,6,
-0x171a20,6,
-0x171a40,6,
-0x171a60,6,
-0x171a80,6,
-0x171aa0,6,
-0x171ac0,6,
-0x171ae0,6,
-0x171b00,3,
-0x171c00,20,
-0x171c74,1,
-0x171c80,20,
-0x171cf4,1,
-0x171d00,20,
-0x171d74,1,
-0x171d80,20,
-0x171df4,1,
-0x171e00,17,
-0x172000,3,
-0x172010,35,
-0x1720a0,5,
-0x1720b8,1,
-0x1720c0,19,
-0x172110,35,
-0x1721a0,5,
-0x1721b8,1,
-0x1721c0,16,
-0x172204,1,
-0x172270,36,
-0x172400,4,
-0x172418,1,
-0x172420,9,
-0x172464,1,
-0x172474,9,
-0x1724a0,6,
-0x1724c0,6,
-0x1724e0,3,
-0x172504,1,
-0x17250c,29,
-0x172600,3,
-0x172800,3,
-0x172814,50,
-0x1728e0,3,
-0x1728f0,1,
-0x172900,6,
-0x172920,6,
-0x172940,6,
-0x172960,6,
-0x172980,6,
-0x1729a0,6,
-0x1729c0,3,
-0x172a00,12,
-0x172a34,22,
-0x172ac0,7,
-0x172ae0,3,
-0x172af0,1,
-0x172b00,6,
-0x172b20,6,
-0x172b40,6,
-0x172b60,6,
-0x172b80,6,
-0x172ba0,3,
-0x172c00,13,
-0x172c40,11,
-0x172c80,1,
-0x173000,6,
-0x173020,6,
-0x173040,3,
-0x173060,4,
-0x1730f0,3,
-0x173100,6,
-0x173120,6,
-0x173140,3,
-0x173160,4,
-0x1731f0,3,
-0x173200,8,
-0x173240,13,
-0x1733f8,8,
-0x173420,6,
-0x173440,3,
-0x173460,4,
-0x1734f0,3,
-0x173500,6,
-0x173520,6,
-0x173540,3,
-0x173560,4,
-0x1735f0,3,
-0x173600,8,
-0x173640,13,
-0x1737f8,2,
-0x173804,1,
-0x173820,10,
-0x173880,2,
-0x173904,1,
-0x17390c,1,
-0x173914,1,
-0x17391c,1,
-0x173924,1,
-0x17392c,1,
-0x173a20,9,
-0x173b00,6,
-0x173b20,6,
-0x173b40,6,
-0x173b60,6,
-0x173b80,6,
-0x173ba0,3,
-0x173c00,16,
-0x173d00,30,
-0x173d80,1,
-0x173d88,5,
-0x173da0,1,
-0x173da8,2,
-0x173dc0,10,
-0x173e00,9,
-0x173e28,2,
-0x173e40,9,
-0x173e68,2,
-0x173f00,25,
-0x173f70,4,
-0x173f84,5,
-0x173fa0,6,
-0x173ff8,7,
-0x174018,3,
-0x174028,3,
-0x174038,63,
-0x174140,11,
-0x174184,10,
-0x1741c0,22,
-0x174220,1,
-0x174228,2,
-0x174240,1,
-0x174248,7,
-0x174268,7,
-0x174288,3,
-0x174298,2,
-0x1742f4,46,
-0x1743b4,1,
-0x1743bc,1,
-0x1743c4,1,
-0x1743cc,1,
-0x1743d4,1,
-0x1743dc,1,
-0x1743e4,1,
-0x1743ec,15,
-0x174440,10,
-0x1747a0,4,
-0x1747b8,14,
-0x174800,5,
-0x174818,3,
-0x174828,3,
-0x174838,63,
-0x174940,11,
-0x174984,10,
-0x1749c0,22,
-0x174a20,1,
-0x174a28,2,
-0x174a40,1,
-0x174a48,7,
-0x174a68,7,
-0x174a88,3,
-0x174a98,2,
-0x174af4,46,
-0x174bb4,1,
-0x174bbc,1,
-0x174bc4,1,
-0x174bcc,1,
-0x174bd4,1,
-0x174bdc,1,
-0x174be4,1,
-0x174bec,15,
-0x174c40,10,
-0x174fa0,4,
-0x174fb8,14,
-0x175004,1,
-0x17500c,3,
-0x175020,5,
-0x175038,3,
-0x175048,43,
-0x175118,24,
-0x175200,32,
-0x175284,3,
-0x175294,3,
-0x1752a4,11,
-0x175400,6,
-0x175420,6,
-0x175440,6,
-0x175460,6,
-0x175480,6,
-0x1754a0,6,
-0x1754c0,6,
-0x1754e0,6,
-0x175500,6,
-0x175520,6,
-0x175540,6,
-0x175560,6,
-0x175580,6,
-0x1755a0,6,
-0x1755c0,6,
-0x1755e0,6,
-0x175600,6,
-0x175620,3,
-0x175800,4,
-0x175840,15,
-0x175880,7,
-0x1758a0,13,
-0x1758e0,7,
-0x175ab8,14,
-0x175b04,1,
-0x175b14,3,
-0x175b24,1,
-0x175b34,3,
-0x175b44,1,
-0x175b54,3,
-0x175b64,1,
-0x175b74,3,
-0x175b94,1,
-0x175ba0,2,
-0x175c00,26,
-0x175c80,14,
-0x175cc0,27,
-0x175d40,11,
-0x175d80,5,
-0x175da0,7,
-0x175dc0,7,
-0x175de0,6,
-0x175e00,14,
-0x175e40,13,
-0x175e80,7,
-0x175ea0,6,
-0x176000,2,
-0x176028,2,
-0x176050,2,
-0x176078,2,
-0x1760a0,8,
-0x1760c4,14,
-0x1761ac,1,
-0x1761d8,4,
-0x176200,6,
-0x176220,6,
-0x176240,6,
-0x176260,6,
-0x176280,3,
-0x176400,6,
-0x176420,6,
-0x176440,3,
-0x176480,4,
-0x178000,1,
-0x178008,1,
-0x178010,14,
-0x178100,1,
-0x178108,1,
-0x178110,14,
-0x178200,32,
-0x1782e0,2,
-0x178300,32,
-0x1783e0,2,
-0x178400,1,
-0x178408,1,
-0x178410,14,
-0x178500,1,
-0x178508,1,
-0x178510,14,
-0x178600,32,
-0x1786e0,2,
-0x178700,32,
-0x1787e0,2,
-0x178800,6,
-0x17881c,6,
-0x178a00,3,
-0x178a10,3,
-0x178a40,3,
-0x178a50,3,
-0x178a80,3,
-0x178a90,3,
-0x178ac0,3,
-0x178ad0,3,
-0x178b00,3,
-0x178c04,3,
-0x178c14,16,
-0x178c84,1,
-0x178c8c,1,
-0x178e00,31,
-0x178e80,1,
-0x178e88,3,
-0x178f00,31,
-0x178f80,1,
-0x178f88,3,
-0x179000,22,
-0x179100,26,
-0x179200,10,
-0x179244,5,
-0x1795f8,3,
-0x179608,4,
-0x1796f4,45,
-0x179800,31,
-0x179900,31,
-0x179a00,6,
-0x179a20,6,
-0x179a40,6,
-0x179a60,6,
-0x179a80,6,
-0x179aa0,6,
-0x179ac0,6,
-0x179ae0,6,
-0x179b00,3,
-0x179c00,20,
-0x179c74,1,
-0x179c80,20,
-0x179cf4,1,
-0x179d00,20,
-0x179d74,1,
-0x179d80,20,
-0x179df4,1,
-0x179e00,17,
-0x17a000,3,
-0x17a010,35,
-0x17a0a0,5,
-0x17a0b8,1,
-0x17a0c0,19,
-0x17a110,35,
-0x17a1a0,5,
-0x17a1b8,1,
-0x17a1c0,16,
-0x17a204,1,
-0x17a270,36,
-0x17a400,4,
-0x17a418,1,
-0x17a420,9,
-0x17a464,1,
-0x17a474,9,
-0x17a4a0,6,
-0x17a4c0,6,
-0x17a4e0,3,
-0x17a504,1,
-0x17a50c,29,
-0x17a600,3,
-0x17a800,3,
-0x17a814,50,
-0x17a8e0,3,
-0x17a8f0,1,
-0x17a900,6,
-0x17a920,6,
-0x17a940,6,
-0x17a960,6,
-0x17a980,6,
-0x17a9a0,6,
-0x17a9c0,3,
-0x17aa00,12,
-0x17aa34,22,
-0x17aac0,7,
-0x17aae0,3,
-0x17aaf0,1,
-0x17ab00,6,
-0x17ab20,6,
-0x17ab40,6,
-0x17ab60,6,
-0x17ab80,6,
-0x17aba0,3,
-0x17ac00,13,
-0x17ac40,11,
-0x17ac80,1,
-0x17b000,6,
-0x17b020,6,
-0x17b040,3,
-0x17b060,4,
-0x17b0f0,3,
-0x17b100,6,
-0x17b120,6,
-0x17b140,3,
-0x17b160,4,
-0x17b1f0,3,
-0x17b200,8,
-0x17b240,13,
-0x17b3f8,8,
-0x17b420,6,
-0x17b440,3,
-0x17b460,4,
-0x17b4f0,3,
-0x17b500,6,
-0x17b520,6,
-0x17b540,3,
-0x17b560,4,
-0x17b5f0,3,
-0x17b600,8,
-0x17b640,13,
-0x17b7f8,2,
-0x17b804,1,
-0x17b820,10,
-0x17b880,2,
-0x17b904,1,
-0x17b90c,1,
-0x17b914,1,
-0x17b91c,1,
-0x17b924,1,
-0x17b92c,1,
-0x17ba20,9,
-0x17bb00,6,
-0x17bb20,6,
-0x17bb40,6,
-0x17bb60,6,
-0x17bb80,6,
-0x17bba0,3,
-0x17bc00,16,
-0x17bd00,30,
-0x17bd80,1,
-0x17bd88,5,
-0x17bda0,1,
-0x17bda8,2,
-0x17bdc0,10,
-0x17be00,9,
-0x17be28,2,
-0x17be40,9,
-0x17be68,2,
-0x17bf00,25,
-0x17bf70,4,
-0x17bf84,5,
-0x17bfa0,6,
-0x17bff8,7,
-0x17c018,3,
-0x17c028,3,
-0x17c038,63,
-0x17c140,11,
-0x17c184,10,
-0x17c1c0,22,
-0x17c220,1,
-0x17c228,2,
-0x17c240,1,
-0x17c248,7,
-0x17c268,7,
-0x17c288,3,
-0x17c298,2,
-0x17c2f4,46,
-0x17c3b4,1,
-0x17c3bc,1,
-0x17c3c4,1,
-0x17c3cc,1,
-0x17c3d4,1,
-0x17c3dc,1,
-0x17c3e4,1,
-0x17c3ec,15,
-0x17c440,10,
-0x17c7a0,4,
-0x17c7b8,14,
-0x17c800,5,
-0x17c818,3,
-0x17c828,3,
-0x17c838,63,
-0x17c940,11,
-0x17c984,10,
-0x17c9c0,22,
-0x17ca20,1,
-0x17ca28,2,
-0x17ca40,1,
-0x17ca48,7,
-0x17ca68,7,
-0x17ca88,3,
-0x17ca98,2,
-0x17caf4,46,
-0x17cbb4,1,
-0x17cbbc,1,
-0x17cbc4,1,
-0x17cbcc,1,
-0x17cbd4,1,
-0x17cbdc,1,
-0x17cbe4,1,
-0x17cbec,15,
-0x17cc40,10,
-0x17cfa0,4,
-0x17cfb8,14,
-0x17d004,1,
-0x17d00c,3,
-0x17d020,5,
-0x17d038,3,
-0x17d048,43,
-0x17d118,24,
-0x17d200,32,
-0x17d284,3,
-0x17d294,3,
-0x17d2a4,11,
-0x17d400,6,
-0x17d420,6,
-0x17d440,6,
-0x17d460,6,
-0x17d480,6,
-0x17d4a0,6,
-0x17d4c0,6,
-0x17d4e0,6,
-0x17d500,6,
-0x17d520,6,
-0x17d540,6,
-0x17d560,6,
-0x17d580,6,
-0x17d5a0,6,
-0x17d5c0,6,
-0x17d5e0,6,
-0x17d600,6,
-0x17d620,3,
-0x17d800,4,
-0x17d840,15,
-0x17d880,7,
-0x17d8a0,13,
-0x17d8e0,7,
-0x17dab8,14,
-0x17db04,1,
-0x17db14,3,
-0x17db24,1,
-0x17db34,3,
-0x17db44,1,
-0x17db54,3,
-0x17db64,1,
-0x17db74,3,
-0x17db94,1,
-0x17dba0,2,
-0x17dc00,26,
-0x17dc80,14,
-0x17dcc0,27,
-0x17dd40,11,
-0x17dd80,5,
-0x17dda0,7,
-0x17ddc0,7,
-0x17dde0,6,
-0x17de00,14,
-0x17de40,13,
-0x17de80,7,
-0x17dea0,6,
-0x17e000,2,
-0x17e028,2,
-0x17e050,2,
-0x17e078,2,
-0x17e0a0,8,
-0x17e0c4,14,
-0x17e1ac,1,
-0x17e1d8,4,
-0x17e200,6,
-0x17e220,6,
-0x17e240,6,
-0x17e260,6,
-0x17e280,3,
-0x17e400,6,
-0x17e420,6,
-0x17e440,3,
-0x17e480,4,
-0x1c0000,4,
-0x1c0028,4,
-0x1c0050,4,
-0x1c0078,4,
-0x1c00a0,3,
-0x1c01ac,1,
-0x1c01d8,4,
-0x1c0200,6,
-0x1c0220,6,
-0x1c0240,6,
-0x1c0260,6,
-0x1c0280,6,
-0x1c02a0,6,
-0x1c02c0,6,
-0x1c02e0,6,
-0x1c0300,3,
-0x1c0400,6,
-0x1c0420,6,
-0x1c0440,6,
-0x1c0460,6,
-0x1c0480,6,
-0x1c04a0,6,
-0x1c04c0,6,
-0x1c04e0,3,
-0x1c0500,10,
-0x1c0540,10,
-0x1c0580,10,
-0x1c05c0,10,
-0x1c0600,10,
-0x1c0640,10,
-0x1c0680,10,
-0x1c06c0,10,
-0x1c0700,6,
-0x1c0730,7,
-0x1c0750,1,
-0x1c0758,2,
-0x1c0840,1,
-0x1c0850,3,
-0x1c0864,1,
-0x1c0870,1,
-0x1c0880,11,
-0x1c08b0,3,
-0x1c08c0,3,
-0x1c08d0,5,
-0x1c08f0,1,
-0x1c0900,16,
-0x1c0980,60,
-0x1c0a80,3,
-0x1c0ab8,13,
-0x1c0b00,9,
-0x1c0b40,11,
-0x1c0b80,11,
-0x1c0bc0,11,
-0x1c0c00,6,
-0x1c0c1c,7,
-0x1c0c40,6,
-0x1c0c5c,7,
-0x1c0c80,6,
-0x1c0c9c,7,
-0x1c0cc0,6,
-0x1c0cdc,7,
-0x1c0d00,6,
-0x1c0d1c,7,
-0x1c0d40,6,
-0x1c0d5c,7,
-0x1c0d80,6,
-0x1c0d9c,7,
-0x1c0dc0,6,
-0x1c0ddc,7,
-0x1c0e00,21,
-0x1c0e60,5,
-0x1c0e80,1,
-0x1c0e90,15,
-0x1c0ed4,3,
-0x1c0f04,3,
-0x1c0f14,3,
-0x1c0f24,3,
-0x1c0f34,3,
-0x1c0f44,3,
-0x1c0f54,3,
-0x1c0f64,3,
-0x1c0f74,3,
-0x1c1004,4,
-0x1c1018,2,
-0x1c1028,3,
-0x1c1040,10,
-0x1c1080,10,
-0x1c10c0,10,
-0x1c1100,10,
-0x1c1140,10,
-0x1c1184,5,
-0x1c119c,2,
-0x1c1204,4,
-0x1c1218,2,
-0x1c1228,3,
-0x1c1240,10,
-0x1c1280,10,
-0x1c12c0,10,
-0x1c1300,10,
-0x1c1340,10,
-0x1c1384,5,
-0x1c139c,2,
-0x1c1404,4,
-0x1c1418,2,
-0x1c1428,3,
-0x1c1440,10,
-0x1c1480,10,
-0x1c14c0,10,
-0x1c1500,10,
-0x1c1540,10,
-0x1c1584,5,
-0x1c159c,2,
-0x1c1604,4,
-0x1c1618,2,
-0x1c1628,3,
-0x1c1640,10,
-0x1c1680,10,
-0x1c16c0,10,
-0x1c1700,10,
-0x1c1740,10,
-0x1c1784,5,
-0x1c179c,2,
-0x1c1804,4,
-0x1c1818,2,
-0x1c1828,3,
-0x1c1840,10,
-0x1c1880,10,
-0x1c18c0,10,
-0x1c1900,10,
-0x1c1940,10,
-0x1c1984,5,
-0x1c199c,2,
-0x1c1a04,4,
-0x1c1a18,2,
-0x1c1a28,3,
-0x1c1a40,10,
-0x1c1a80,10,
-0x1c1ac0,10,
-0x1c1b00,10,
-0x1c1b40,10,
-0x1c1b84,5,
-0x1c1b9c,2,
-0x1c1c04,4,
-0x1c1c18,2,
-0x1c1c28,3,
-0x1c1c40,10,
-0x1c1c80,10,
-0x1c1cc0,10,
-0x1c1d00,10,
-0x1c1d40,10,
-0x1c1d84,5,
-0x1c1d9c,2,
-0x1c1e04,4,
-0x1c1e18,2,
-0x1c1e28,3,
-0x1c1e40,10,
-0x1c1e80,10,
-0x1c1ec0,10,
-0x1c1f00,10,
-0x1c1f40,10,
-0x1c1f84,5,
-0x1c1f9c,2,
-0x1c2000,75,
-0x1c2130,3,
-0x1c2140,3,
-0x1c2150,5,
-0x1c2170,1,
-0x1c2180,14,
-0x1c21c0,12,
-0x1c2200,37,
-0x1c22a0,5,
-0x1c22bc,3,
-0x1c22cc,6,
-0x1c22e8,4,
-0x1c2300,5,
-0x1c2320,3,
-0x1c2400,75,
-0x1c2530,3,
-0x1c2540,3,
-0x1c2550,5,
-0x1c2570,1,
-0x1c2580,14,
-0x1c25c0,12,
-0x1c2600,37,
-0x1c26a0,5,
-0x1c26bc,3,
-0x1c26cc,6,
-0x1c26e8,4,
-0x1c2700,5,
-0x1c2720,3,
-0x1c2800,75,
-0x1c2930,3,
-0x1c2940,3,
-0x1c2950,5,
-0x1c2970,1,
-0x1c2980,14,
-0x1c29c0,12,
-0x1c2a00,37,
-0x1c2aa0,5,
-0x1c2abc,3,
-0x1c2acc,6,
-0x1c2ae8,4,
-0x1c2b00,5,
-0x1c2b20,3,
-0x1c2c00,75,
-0x1c2d30,3,
-0x1c2d40,3,
-0x1c2d50,5,
-0x1c2d70,1,
-0x1c2d80,14,
-0x1c2dc0,12,
-0x1c2e00,37,
-0x1c2ea0,5,
-0x1c2ebc,3,
-0x1c2ecc,6,
-0x1c2ee8,4,
-0x1c2f00,5,
-0x1c2f20,3,
-0x1c3000,75,
-0x1c3130,3,
-0x1c3140,3,
-0x1c3150,5,
-0x1c3170,1,
-0x1c3180,14,
-0x1c31c0,12,
-0x1c3200,37,
-0x1c32a0,5,
-0x1c32bc,3,
-0x1c32cc,6,
-0x1c32e8,4,
-0x1c3300,5,
-0x1c3320,3,
-0x1c3400,75,
-0x1c3530,3,
-0x1c3540,3,
-0x1c3550,5,
-0x1c3570,1,
-0x1c3580,14,
-0x1c35c0,12,
-0x1c3600,37,
-0x1c36a0,5,
-0x1c36bc,3,
-0x1c36cc,6,
-0x1c36e8,4,
-0x1c3700,5,
-0x1c3720,3,
-0x1c3800,75,
-0x1c3930,3,
-0x1c3940,3,
-0x1c3950,5,
-0x1c3970,1,
-0x1c3980,14,
-0x1c39c0,12,
-0x1c3a00,37,
-0x1c3aa0,5,
-0x1c3abc,3,
-0x1c3acc,6,
-0x1c3ae8,4,
-0x1c3b00,5,
-0x1c3b20,3,
-0x1c3c00,75,
-0x1c3d30,3,
-0x1c3d40,3,
-0x1c3d50,5,
-0x1c3d70,1,
-0x1c3d80,14,
-0x1c3dc0,12,
-0x1c3e00,37,
-0x1c3ea0,5,
-0x1c3ebc,3,
-0x1c3ecc,6,
-0x1c3ee8,4,
-0x1c3f00,5,
-0x1c3f20,3,
-0x1c4000,4,
-0x1c4028,4,
-0x1c4050,4,
-0x1c4078,4,
-0x1c40a0,3,
-0x1c41ac,1,
-0x1c41d8,4,
-0x1c4200,6,
-0x1c4220,6,
-0x1c4240,6,
-0x1c4260,6,
-0x1c4280,6,
-0x1c42a0,6,
-0x1c42c0,6,
-0x1c42e0,6,
-0x1c4300,3,
-0x1c4400,6,
-0x1c4420,6,
-0x1c4440,6,
-0x1c4460,6,
-0x1c4480,6,
-0x1c44a0,6,
-0x1c44c0,6,
-0x1c44e0,3,
-0x1c4500,10,
-0x1c4540,10,
-0x1c4580,10,
-0x1c45c0,10,
-0x1c4600,10,
-0x1c4640,10,
-0x1c4680,10,
-0x1c46c0,10,
-0x1c4700,6,
-0x1c4730,7,
-0x1c4750,1,
-0x1c4758,2,
-0x1c4840,1,
-0x1c4850,3,
-0x1c4864,1,
-0x1c4870,1,
-0x1c4880,11,
-0x1c48b0,3,
-0x1c48c0,3,
-0x1c48d0,5,
-0x1c48f0,1,
-0x1c4900,16,
-0x1c4980,60,
-0x1c4a80,3,
-0x1c4ab8,13,
-0x1c4b00,9,
-0x1c4b40,11,
-0x1c4b80,11,
-0x1c4bc0,11,
-0x1c4c00,6,
-0x1c4c1c,7,
-0x1c4c40,6,
-0x1c4c5c,7,
-0x1c4c80,6,
-0x1c4c9c,7,
-0x1c4cc0,6,
-0x1c4cdc,7,
-0x1c4d00,6,
-0x1c4d1c,7,
-0x1c4d40,6,
-0x1c4d5c,7,
-0x1c4d80,6,
-0x1c4d9c,7,
-0x1c4dc0,6,
-0x1c4ddc,7,
-0x1c4e00,21,
-0x1c4e60,5,
-0x1c4e80,1,
-0x1c4e90,15,
-0x1c4ed4,3,
-0x1c4f04,3,
-0x1c4f14,3,
-0x1c4f24,3,
-0x1c4f34,3,
-0x1c4f44,3,
-0x1c4f54,3,
-0x1c4f64,3,
-0x1c4f74,3,
-0x1c5004,4,
-0x1c5018,2,
-0x1c5028,3,
-0x1c5040,10,
-0x1c5080,10,
-0x1c50c0,10,
-0x1c5100,10,
-0x1c5140,10,
-0x1c5184,5,
-0x1c519c,2,
-0x1c5204,4,
-0x1c5218,2,
-0x1c5228,3,
-0x1c5240,10,
-0x1c5280,10,
-0x1c52c0,10,
-0x1c5300,10,
-0x1c5340,10,
-0x1c5384,5,
-0x1c539c,2,
-0x1c5404,4,
-0x1c5418,2,
-0x1c5428,3,
-0x1c5440,10,
-0x1c5480,10,
-0x1c54c0,10,
-0x1c5500,10,
-0x1c5540,10,
-0x1c5584,5,
-0x1c559c,2,
-0x1c5604,4,
-0x1c5618,2,
-0x1c5628,3,
-0x1c5640,10,
-0x1c5680,10,
-0x1c56c0,10,
-0x1c5700,10,
-0x1c5740,10,
-0x1c5784,5,
-0x1c579c,2,
-0x1c5804,4,
-0x1c5818,2,
-0x1c5828,3,
-0x1c5840,10,
-0x1c5880,10,
-0x1c58c0,10,
-0x1c5900,10,
-0x1c5940,10,
-0x1c5984,5,
-0x1c599c,2,
-0x1c5a04,4,
-0x1c5a18,2,
-0x1c5a28,3,
-0x1c5a40,10,
-0x1c5a80,10,
-0x1c5ac0,10,
-0x1c5b00,10,
-0x1c5b40,10,
-0x1c5b84,5,
-0x1c5b9c,2,
-0x1c5c04,4,
-0x1c5c18,2,
-0x1c5c28,3,
-0x1c5c40,10,
-0x1c5c80,10,
-0x1c5cc0,10,
-0x1c5d00,10,
-0x1c5d40,10,
-0x1c5d84,5,
-0x1c5d9c,2,
-0x1c5e04,4,
-0x1c5e18,2,
-0x1c5e28,3,
-0x1c5e40,10,
-0x1c5e80,10,
-0x1c5ec0,10,
-0x1c5f00,10,
-0x1c5f40,10,
-0x1c5f84,5,
-0x1c5f9c,2,
-0x1c6000,75,
-0x1c6130,3,
-0x1c6140,3,
-0x1c6150,5,
-0x1c6170,1,
-0x1c6180,14,
-0x1c61c0,12,
-0x1c6200,37,
-0x1c62a0,5,
-0x1c62bc,3,
-0x1c62cc,6,
-0x1c62e8,4,
-0x1c6300,5,
-0x1c6320,3,
-0x1c6400,75,
-0x1c6530,3,
-0x1c6540,3,
-0x1c6550,5,
-0x1c6570,1,
-0x1c6580,14,
-0x1c65c0,12,
-0x1c6600,37,
-0x1c66a0,5,
-0x1c66bc,3,
-0x1c66cc,6,
-0x1c66e8,4,
-0x1c6700,5,
-0x1c6720,3,
-0x1c6800,75,
-0x1c6930,3,
-0x1c6940,3,
-0x1c6950,5,
-0x1c6970,1,
-0x1c6980,14,
-0x1c69c0,12,
-0x1c6a00,37,
-0x1c6aa0,5,
-0x1c6abc,3,
-0x1c6acc,6,
-0x1c6ae8,4,
-0x1c6b00,5,
-0x1c6b20,3,
-0x1c6c00,75,
-0x1c6d30,3,
-0x1c6d40,3,
-0x1c6d50,5,
-0x1c6d70,1,
-0x1c6d80,14,
-0x1c6dc0,12,
-0x1c6e00,37,
-0x1c6ea0,5,
-0x1c6ebc,3,
-0x1c6ecc,6,
-0x1c6ee8,4,
-0x1c6f00,5,
-0x1c6f20,3,
-0x1c7000,75,
-0x1c7130,3,
-0x1c7140,3,
-0x1c7150,5,
-0x1c7170,1,
-0x1c7180,14,
-0x1c71c0,12,
-0x1c7200,37,
-0x1c72a0,5,
-0x1c72bc,3,
-0x1c72cc,6,
-0x1c72e8,4,
-0x1c7300,5,
-0x1c7320,3,
-0x1c7400,75,
-0x1c7530,3,
-0x1c7540,3,
-0x1c7550,5,
-0x1c7570,1,
-0x1c7580,14,
-0x1c75c0,12,
-0x1c7600,37,
-0x1c76a0,5,
-0x1c76bc,3,
-0x1c76cc,6,
-0x1c76e8,4,
-0x1c7700,5,
-0x1c7720,3,
-0x1c7800,75,
-0x1c7930,3,
-0x1c7940,3,
-0x1c7950,5,
-0x1c7970,1,
-0x1c7980,14,
-0x1c79c0,12,
-0x1c7a00,37,
-0x1c7aa0,5,
-0x1c7abc,3,
-0x1c7acc,6,
-0x1c7ae8,4,
-0x1c7b00,5,
-0x1c7b20,3,
-0x1c7c00,75,
-0x1c7d30,3,
-0x1c7d40,3,
-0x1c7d50,5,
-0x1c7d70,1,
-0x1c7d80,14,
-0x1c7dc0,12,
-0x1c7e00,37,
-0x1c7ea0,5,
-0x1c7ebc,3,
-0x1c7ecc,6,
-0x1c7ee8,4,
-0x1c7f00,5,
-0x1c7f20,3,
-0x1c8000,17,
-0x1c8054,73,
-0x1c81c0,1,
-0x1c81d0,1,
-0x1c81e0,11,
-0x1c8210,3,
-0x1c8220,3,
-0x1c8230,4,
-0x1c83c0,9,
-0x1c83e8,5,
-0x1c8400,36,
-0x1c8494,2,
-0x1c8510,13,
-0x1c8548,3,
-0x1c8558,4,
-0x1c8600,40,
-0x1c8800,4,
-0x1c8a00,1,
-0x1c8c00,1,
-0x1c8c28,1,
-0x1c8c50,1,
-0x1c8c78,1,
-0x1c8ca0,4,
-0x1c8dac,1,
-0x1c8dd8,4,
-0x1c8e00,6,
-0x1c8e20,6,
-0x1c8e40,3,
-0x1c9084,1,
-0x1c908c,1,
-0x1c9094,1,
-0x1c909c,1,
-0x1c90a4,1,
-0x1c90ac,1,
-0x1c90b4,1,
-0x1c90bc,1,
-0x1c9120,10,
-0x1c9160,10,
-0x1c91a0,10,
-0x1c91e0,40,
-0x1c92e0,10,
-0x1c9320,10,
-0x1c9560,8,
-0x1c95a0,10,
-0x1c95e0,5,
-0x1c9600,10,
-0x1c9660,21,
-0x1ca804,1,
-0x1ca80c,4,
-0x1ca824,1,
-0x1ca82c,4,
-0x1ca844,1,
-0x1ca84c,4,
-0x1ca864,1,
-0x1ca86c,4,
-0x1ca884,1,
-0x1ca88c,4,
-0x1ca900,13,
-0x1ca940,13,
-0x1ca980,13,
-0x1ca9c0,13,
-0x1caa00,13,
-0x1caa40,13,
-0x1cab00,6,
-0x1cab20,6,
-0x1cab40,3,
-0x1cab80,3,
-0x1cac00,6,
-0x1cac20,6,
-0x1cac40,6,
-0x1cac60,3,
-0x1cac80,6,
-0x1caca0,6,
-0x1cacc0,6,
-0x1cace0,3,
-0x1cad00,6,
-0x1cad20,6,
-0x1cad40,6,
-0x1cad60,3,
-0x1cad80,6,
-0x1cada0,6,
-0x1cadc0,6,
-0x1cade0,3,
-0x1cae00,6,
-0x1cae20,6,
-0x1cae40,6,
-0x1cae60,3,
-0x1caf00,6,
-0x1caf20,5,
-0x1cc000,17,
-0x1cc054,73,
-0x1cc1c0,1,
-0x1cc1d0,1,
-0x1cc1e0,11,
-0x1cc210,3,
-0x1cc220,3,
-0x1cc230,4,
-0x1cc3c0,9,
-0x1cc3e8,5,
-0x1cc400,36,
-0x1cc494,2,
-0x1cc510,13,
-0x1cc548,3,
-0x1cc558,4,
-0x1cc600,40,
-0x1cc800,4,
-0x1cca00,1,
-0x1ccc00,1,
-0x1ccc28,1,
-0x1ccc50,1,
-0x1ccc78,1,
-0x1ccca0,4,
-0x1ccdac,1,
-0x1ccdd8,4,
-0x1cce00,6,
-0x1cce20,6,
-0x1cce40,3,
-0x1cd084,1,
-0x1cd08c,1,
-0x1cd094,1,
-0x1cd09c,1,
-0x1cd0a4,1,
-0x1cd0ac,1,
-0x1cd0b4,1,
-0x1cd0bc,1,
-0x1cd120,10,
-0x1cd160,10,
-0x1cd1a0,10,
-0x1cd1e0,40,
-0x1cd2e0,10,
-0x1cd320,10,
-0x1cd560,8,
-0x1cd5a0,10,
-0x1cd5e0,5,
-0x1cd600,10,
-0x1cd660,21,
-0x1ce804,1,
-0x1ce80c,4,
-0x1ce824,1,
-0x1ce82c,4,
-0x1ce844,1,
-0x1ce84c,4,
-0x1ce864,1,
-0x1ce86c,4,
-0x1ce884,1,
-0x1ce88c,4,
-0x1ce900,13,
-0x1ce940,13,
-0x1ce980,13,
-0x1ce9c0,13,
-0x1cea00,13,
-0x1cea40,13,
-0x1ceb00,6,
-0x1ceb20,6,
-0x1ceb40,3,
-0x1ceb80,3,
-0x1cec00,6,
-0x1cec20,6,
-0x1cec40,6,
-0x1cec60,3,
-0x1cec80,6,
-0x1ceca0,6,
-0x1cecc0,6,
-0x1cece0,3,
-0x1ced00,6,
-0x1ced20,6,
-0x1ced40,6,
-0x1ced60,3,
-0x1ced80,6,
-0x1ceda0,6,
-0x1cedc0,6,
-0x1cede0,3,
-0x1cee00,6,
-0x1cee20,6,
-0x1cee40,6,
-0x1cee60,3,
-0x1cef00,6,
-0x1cef20,5,
-0x1d0000,17,
-0x1d0054,73,
-0x1d01c0,1,
-0x1d01d0,1,
-0x1d01e0,11,
-0x1d0210,3,
-0x1d0220,3,
-0x1d0230,4,
-0x1d03c0,9,
-0x1d03e8,5,
-0x1d0400,36,
-0x1d0494,2,
-0x1d0510,13,
-0x1d0548,3,
-0x1d0558,4,
-0x1d0600,40,
-0x1d0800,4,
-0x1d0a00,1,
-0x1d0c00,1,
-0x1d0c28,1,
-0x1d0c50,1,
-0x1d0c78,1,
-0x1d0ca0,4,
-0x1d0dac,1,
-0x1d0dd8,4,
-0x1d0e00,6,
-0x1d0e20,6,
-0x1d0e40,3,
-0x1d1084,1,
-0x1d108c,1,
-0x1d1094,1,
-0x1d109c,1,
-0x1d10a4,1,
-0x1d10ac,1,
-0x1d10b4,1,
-0x1d10bc,1,
-0x1d1120,10,
-0x1d1160,10,
-0x1d11a0,10,
-0x1d11e0,40,
-0x1d12e0,10,
-0x1d1320,10,
-0x1d1560,8,
-0x1d15a0,10,
-0x1d15e0,5,
-0x1d1600,10,
-0x1d1660,21,
-0x1d2804,1,
-0x1d280c,4,
-0x1d2824,1,
-0x1d282c,4,
-0x1d2844,1,
-0x1d284c,4,
-0x1d2864,1,
-0x1d286c,4,
-0x1d2884,1,
-0x1d288c,4,
-0x1d2900,13,
-0x1d2940,13,
-0x1d2980,13,
-0x1d29c0,13,
-0x1d2a00,13,
-0x1d2a40,13,
-0x1d2b00,6,
-0x1d2b20,6,
-0x1d2b40,3,
-0x1d2b80,3,
-0x1d2c00,6,
-0x1d2c20,6,
-0x1d2c40,6,
-0x1d2c60,3,
-0x1d2c80,6,
-0x1d2ca0,6,
-0x1d2cc0,6,
-0x1d2ce0,3,
-0x1d2d00,6,
-0x1d2d20,6,
-0x1d2d40,6,
-0x1d2d60,3,
-0x1d2d80,6,
-0x1d2da0,6,
-0x1d2dc0,6,
-0x1d2de0,3,
-0x1d2e00,6,
-0x1d2e20,6,
-0x1d2e40,6,
-0x1d2e60,3,
-0x1d2f00,6,
-0x1d2f20,5,
-0x1d4000,17,
-0x1d4054,73,
-0x1d41c0,1,
-0x1d41d0,1,
-0x1d41e0,11,
-0x1d4210,3,
-0x1d4220,3,
-0x1d4230,4,
-0x1d43c0,9,
-0x1d43e8,5,
-0x1d4400,36,
-0x1d4494,2,
-0x1d4510,13,
-0x1d4548,3,
-0x1d4558,4,
-0x1d4600,40,
-0x1d4800,4,
-0x1d4a00,1,
-0x1d4c00,1,
-0x1d4c28,1,
-0x1d4c50,1,
-0x1d4c78,1,
-0x1d4ca0,4,
-0x1d4dac,1,
-0x1d4dd8,4,
-0x1d4e00,6,
-0x1d4e20,6,
-0x1d4e40,3,
-0x1d5084,1,
-0x1d508c,1,
-0x1d5094,1,
-0x1d509c,1,
-0x1d50a4,1,
-0x1d50ac,1,
-0x1d50b4,1,
-0x1d50bc,1,
-0x1d5120,10,
-0x1d5160,10,
-0x1d51a0,10,
-0x1d51e0,40,
-0x1d52e0,10,
-0x1d5320,10,
-0x1d5560,8,
-0x1d55a0,10,
-0x1d55e0,5,
-0x1d5600,10,
-0x1d5660,21,
-0x1d6804,1,
-0x1d680c,4,
-0x1d6824,1,
-0x1d682c,4,
-0x1d6844,1,
-0x1d684c,4,
-0x1d6864,1,
-0x1d686c,4,
-0x1d6884,1,
-0x1d688c,4,
-0x1d6900,13,
-0x1d6940,13,
-0x1d6980,13,
-0x1d69c0,13,
-0x1d6a00,13,
-0x1d6a40,13,
-0x1d6b00,6,
-0x1d6b20,6,
-0x1d6b40,3,
-0x1d6b80,3,
-0x1d6c00,6,
-0x1d6c20,6,
-0x1d6c40,6,
-0x1d6c60,3,
-0x1d6c80,6,
-0x1d6ca0,6,
-0x1d6cc0,6,
-0x1d6ce0,3,
-0x1d6d00,6,
-0x1d6d20,6,
-0x1d6d40,6,
-0x1d6d60,3,
-0x1d6d80,6,
-0x1d6da0,6,
-0x1d6dc0,6,
-0x1d6de0,3,
-0x1d6e00,6,
-0x1d6e20,6,
-0x1d6e40,6,
-0x1d6e60,3,
-0x1d6f00,6,
-0x1d6f20,5,
-0x1d8000,1,
-0x1d8028,1,
-0x1d8050,1,
-0x1d8078,1,
-0x1d80a0,1,
-0x1d81ac,1,
-0x1d81d8,4,
-0x1d8200,6,
-0x1d8220,6,
-0x1d8240,3,
-0x1d8404,1,
-0x1d840c,5,
-0x1d8424,1,
-0x1d842c,5,
-0x1d8444,1,
-0x1d844c,5,
-0x1d8464,1,
-0x1d846c,8,
-0x1d8504,1,
-0x1d850c,5,
-0x1d8524,1,
-0x1d852c,5,
-0x1d8544,1,
-0x1d854c,5,
-0x1d8564,1,
-0x1d856c,8,
-0x1d8604,1,
-0x1d860c,5,
-0x1d8624,1,
-0x1d862c,5,
-0x1d8644,1,
-0x1d864c,5,
-0x1d8664,1,
-0x1d866c,8,
-0x1d8704,1,
-0x1d870c,5,
-0x1d8724,1,
-0x1d872c,5,
-0x1d8744,1,
-0x1d874c,5,
-0x1d8764,1,
-0x1d876c,8,
-0x1d8804,1,
-0x1d880c,5,
-0x1d8824,1,
-0x1d882c,5,
-0x1d8844,1,
-0x1d884c,5,
-0x1d8864,1,
-0x1d886c,8,
-0x1d8904,1,
-0x1d890c,5,
-0x1d8924,1,
-0x1d892c,5,
-0x1d8944,1,
-0x1d894c,5,
-0x1d8964,1,
-0x1d896c,8,
-0x1d8a04,1,
-0x1d8a0c,5,
-0x1d8a24,1,
-0x1d8a2c,5,
-0x1d8a44,1,
-0x1d8a4c,5,
-0x1d8a64,1,
-0x1d8a6c,8,
-0x1d8b04,1,
-0x1d8b0c,5,
-0x1d8b24,1,
-0x1d8b2c,5,
-0x1d8b44,1,
-0x1d8b4c,5,
-0x1d8b64,1,
-0x1d8b6c,8,
-0x1d8c00,56,
-0x1d8d00,13,
-0x1d8d40,13,
-0x1d8d80,13,
-0x1d8dc0,13,
-0x1d8e00,13,
-0x1d8e40,13,
-0x1d8e80,13,
-0x1d8ec0,13,
-0x1d8f00,98,
-0x1d9100,16,
-0x1d9200,32,
-0x1d9300,9,
-0x1d9340,1,
-0x1d9400,13,
-0x1d9440,9,
-0x1d9480,9,
-0x1d94c4,2,
-0x1d9500,13,
-0x1d9540,13,
-0x1d9580,13,
-0x1d95c0,13,
-0x1d9600,13,
-0x1d9640,13,
-0x1d9680,13,
-0x1d96c0,13,
-0x1d9700,13,
-0x1d9900,6,
-0x1d9920,6,
-0x1d9940,6,
-0x1d9960,6,
-0x1d9980,6,
-0x1d99a0,6,
-0x1d99c0,6,
-0x1d99e0,6,
-0x1d9a00,6,
-0x1d9a20,6,
-0x1d9a40,6,
-0x1d9a60,3,
-0x1d9a80,3,
-0x1d9b00,16,
-0x1d9e00,20,
-0x1d9e60,1,
-0x1d9e80,1,
-0x1d9e90,2,
-0x1dc004,1,
-0x1dc020,2,
-0x1dc030,10,
-0x1dc200,10,
-0x1dc304,1,
-0x1dc34c,45,
-0x1dc404,1,
-0x1dc40c,1,
-0x1dc414,1,
-0x1dc41c,1,
-0x1dc424,1,
-0x1dc42c,1,
-0x1dc434,1,
-0x1dc43c,1,
-0x1dc444,1,
-0x1dc44c,1,
-0x1dc454,1,
-0x1dc45c,1,
-0x1dc464,1,
-0x1dc46c,1,
-0x1dc474,1,
-0x1dc47c,1,
-0x1dc484,1,
-0x1dc48c,1,
-0x1dc494,1,
-0x1dc49c,1,
-0x1dc4a4,1,
-0x1dc4ac,1,
-0x1dc4b4,1,
-0x1dc4bc,1,
-0x1dc4c4,1,
-0x1dc4cc,1,
-0x1dc4d4,1,
-0x1dc4dc,1,
-0x1dc4e4,1,
-0x1dc4ec,1,
-0x1dc4f4,1,
-0x1dc4fc,1,
-0x1dc504,1,
-0x1dc50c,1,
-0x1dc514,1,
-0x1dc51c,1,
-0x1dc524,1,
-0x1dc52c,1,
-0x1dc534,1,
-0x1dc53c,1,
-0x1dc544,1,
-0x1dc54c,1,
-0x1dc554,1,
-0x1dc55c,1,
-0x1dc564,1,
-0x1dc56c,1,
-0x1dc574,1,
-0x1dc57c,1,
-0x1dc584,1,
-0x1dc58c,1,
-0x1dc594,1,
-0x1dc59c,1,
-0x1dc5a4,1,
-0x1dc5ac,1,
-0x1dc5b4,1,
-0x1dc5bc,1,
-0x1dc5c4,1,
-0x1dc5cc,1,
-0x1dc5d4,1,
-0x1dc5dc,1,
-0x1dc5e4,1,
-0x1dc5ec,1,
-0x1dc5f4,1,
-0x1dc5fc,1,
-0x1dc604,1,
-0x1dc60c,1,
-0x1dc614,1,
-0x1dc61c,1,
-0x1dc624,1,
-0x1dc62c,1,
-0x1dc634,1,
-0x1dc63c,1,
-0x1dc700,16,
-0x1dc748,16,
-0x1dc790,16,
-0x1dc7d8,16,
-0x1dc820,16,
-0x1dc868,16,
-0x1dc8b0,16,
-0x1dc8f8,16,
-0x1dc940,16,
-0x1dc988,16,
-0x1dc9d0,16,
-0x1dca18,16,
-0x1dca60,16,
-0x1dcaa8,16,
-0x1dcaf0,16,
-0x1dcb38,16,
-0x1dcb80,16,
-0x1dcc00,6,
-0x1dcc20,6,
-0x1dcc40,6,
-0x1dcc60,6,
-0x1dcc80,6,
-0x1dcca0,6,
-0x1dccc0,3,
-0x1dce00,7,
-0x1dce40,5,
-0x1de000,2,
-0x1de028,2,
-0x1de050,2,
-0x1de078,2,
-0x1de0a4,1,
-0x1de1ac,1,
-0x1de1d8,4,
-0x1de200,6,
-0x1de220,6,
-0x1de240,6,
-0x1de260,6,
-0x1de280,3,
-0x1de400,152,
-0x1de680,6,
-0x1de6a0,6,
-0x1de6c0,6,
-0x1de6e0,3,
-0x1de700,39,
-0x1de7a0,14,
-0x1de7e0,1,
-0x1df000,2,
-0x1df028,2,
-0x1df050,2,
-0x1df078,2,
-0x1df0a4,1,
-0x1df1ac,1,
-0x1df1d8,4,
-0x1df200,6,
-0x1df220,6,
-0x1df240,6,
-0x1df260,6,
-0x1df280,3,
-0x1df400,152,
-0x1df680,6,
-0x1df6a0,6,
-0x1df6c0,6,
-0x1df6e0,3,
-0x1df700,39,
-0x1df7a0,14,
-0x1df7e0,1,
-0x1e8000,6,
-0x1e8020,6,
-0x1e8040,6,
-0x1e8060,6,
-0x1e8080,6,
-0x1e80a0,6,
-0x1e80c0,6,
-0x1e80e0,6,
-0x1e8100,6,
-0x1e8120,3,
-0x1e8200,1,
-0x1e8210,1,
-0x1e8220,2,
-0x1ec000,7,
-0x1ec024,5,
-0x1ec040,16,
-0x1ec084,1,
-0x1ec090,4,
-0x1ec100,80,
-0x1ec244,16,
-0x1ec288,16,
-0x1ec2d0,1,
-0x1ec304,1,
-0x1ec378,270,
-0x1ec800,6,
-0x1ec820,6,
-0x1ec840,6,
-0x1ec860,3,
-0x1ec880,2,
-0x1ec8a0,8,
-0x1ec8d0,19,
-0x1edc00,2,
-0x1ee004,1,
-0x1ee030,28,
-0x1ee100,6,
-0x1ee120,6,
-0x1ee140,6,
-0x1ee160,3,
-0x1ee180,13,
-0x1ee1c0,2,
-0x1ee204,1,
-0x1ee300,64,
-0x1ee404,1,
-0x1ee470,36,
-0x1ee504,1,
-0x1ee558,42,
-0x1ee604,1,
-0x1ee670,36,
-0x1ee704,1,
-0x1ee760,40,
-0x1ee804,1,
-0x1ee818,26,
-0x1ee884,1,
-0x1ee8c0,16,
-0x1ee904,1,
-0x1ee930,65,
-0x1eea80,21,
-0x1eeb00,14,
-0x1eeb80,20,
-0x1eec00,13,
-0x1eec80,8,
-0x1eee00,6,
-0x1eee20,6,
-0x1eee40,6,
-0x1eee60,6,
-0x1eee80,6,
-0x1eeea0,6,
-0x1eeec0,6,
-0x1eeee0,6,
-0x1eef00,6,
-0x1eef20,6,
-0x1eef40,6,
-0x1eef60,6,
-0x1eef80,6,
-0x1eefa0,6,
-0x1eefc0,6,
-0x1eefe0,3,
-0x1ef204,1,
-0x1ef20c,4,
-0x1ef224,1,
-0x1ef230,4,
-0x1ef244,1,
-0x1ef24c,1,
-0x1ef254,5,
-0x1ef284,1,
-0x1ef28c,3,
-0x1ef2a4,1,
-0x1ef2ac,3,
-0x1ef2c4,1,
-0x1ef2cc,1,
-0x1ef2d4,5,
-0x1ef304,1,
-0x1ef30c,8,
-0x1ef344,1,
-0x1ef34c,8,
-0x1ef380,2,
-0x1ef38c,8,
-0x1ef400,22,
-0x1ef480,22,
-0x1ef500,13,
-0x1ef540,13,
-0x1ef580,18,
-0x1ef600,18,
-0x1ef680,14,
-0x1ef6c0,14,
-0x1ef700,18,
-0x1ef780,18,
-0x1ef800,12,
-0x1ef840,12,
-0x1ef880,7,
-0x1ef904,1,
-0x1ef934,19,
-0x1ef9a0,2,
-0x1ef9c0,6,
-0x1efa00,13,
-0x1efa80,20,
-0x1efb00,9,
-0x1efb28,2,
-0x1efb80,6,
-0x1efba0,3,
-0x1efbc0,3,
-0x1efc00,2,
-0x1efc28,2,
-0x1efc50,2,
-0x1efc78,2,
-0x1efca0,20,
-0x1efdac,1,
-0x1efdd8,4,
-0x1efe00,6,
-0x1efe20,6,
-0x1efe40,6,
-0x1efe60,6,
-0x1efe80,3,
-0x200000,4,
-0x200014,1,
-0x200020,3,
-0x200030,3,
-0x200040,8,
-0x20007c,2,
-0x2000a0,6,
-0x2000c0,6,
-0x2000e0,6,
-0x200100,4,
-0x200114,1,
-0x200120,3,
-0x200130,3,
-0x200140,8,
-0x20017c,2,
-0x2001a0,6,
-0x2001c0,6,
-0x2001e0,6,
-0x200200,4,
-0x200214,1,
-0x200220,3,
-0x200230,3,
-0x200240,8,
-0x20027c,2,
-0x2002a0,6,
-0x2002c0,6,
-0x2002e0,6,
-0x200300,4,
-0x200314,1,
-0x200320,3,
-0x200330,3,
-0x200340,8,
-0x20037c,2,
-0x2003a0,6,
-0x2003c0,6,
-0x2003e0,6,
-0x200400,6,
-0x200440,6,
-0x200480,3,
-0x2004c0,3,
-0x200500,2,
-0x20050c,4,
-0x200520,2,
-0x20052c,4,
-0x200540,2,
-0x200c00,13,
-0x200c40,12,
-0x200c80,13,
-0x200cc0,12,
-0x200d00,14,
-0x200d40,6,
-0x200d80,14,
-0x200dc0,6,
-0x200e00,11,
-0x200e40,6,
-0x200e60,6,
-0x200e80,6,
-0x200ea0,6,
-0x201000,2,
-0x201014,4,
-0x201040,3,
-0x201050,3,
-0x201080,43,
-0x201140,11,
-0x201180,1,
-0x20119c,15,
-0x201200,12,
-0x201300,1,
-0x201308,6,
-0x201324,10,
-0x201380,1,
-0x201388,6,
-0x2013a4,10,
-0x201400,7,
-0x201420,7,
-0x201500,12,
-0x201540,12,
-0x201580,4,
-0x201800,14,
-0x20183c,9,
-0x201864,6,
-0x201880,2,
-0x201890,4,
-0x201900,14,
-0x20193c,9,
-0x201964,6,
-0x201980,2,
-0x201990,4,
-0x201a00,16,
-0x201a50,4,
-0x201a80,16,
-0x201ad0,4,
-0x201b00,6,
-0x201b20,6,
-0x201b40,3,
-0x201b80,6,
-0x201ba0,6,
-0x201bc0,3,
-0x201c00,6,
-0x201c20,6,
-0x201c40,3,
-0x201c80,6,
-0x201ca0,6,
-0x201cc0,3,
-0x201d10,2,
-0x201d1c,1,
-0x201d50,2,
-0x201d5c,1,
-0x201d80,1,
-0x201da0,1,
-0x201da8,4,
-0x201dc0,1,
-0x201de0,1,
-0x201de8,4,
-0x201e00,13,
-0x201e40,6,
-0x201e60,6,
-0x201e80,6,
-0x201ea0,6,
-0x201ec0,7,
-0x201ee0,7,
-0x201f00,12,
-0x201f34,2,
-0x201f40,3,
-0x201f50,8,
-0x202000,4,
-0x202014,1,
-0x202020,3,
-0x202030,3,
-0x202040,8,
-0x20207c,2,
-0x2020a0,6,
-0x2020c0,6,
-0x2020e0,6,
-0x202100,4,
-0x202114,1,
-0x202120,3,
-0x202130,3,
-0x202140,8,
-0x20217c,2,
-0x2021a0,6,
-0x2021c0,6,
-0x2021e0,6,
-0x202200,4,
-0x202214,1,
-0x202220,3,
-0x202230,3,
-0x202240,8,
-0x20227c,2,
-0x2022a0,6,
-0x2022c0,6,
-0x2022e0,6,
-0x202300,4,
-0x202314,1,
-0x202320,3,
-0x202330,3,
-0x202340,8,
-0x20237c,2,
-0x2023a0,6,
-0x2023c0,6,
-0x2023e0,6,
-0x202400,6,
-0x202440,6,
-0x202480,3,
-0x2024c0,3,
-0x202500,2,
-0x20250c,4,
-0x202520,2,
-0x20252c,4,
-0x202540,2,
-0x202c00,13,
-0x202c40,12,
-0x202c80,13,
-0x202cc0,12,
-0x202d00,14,
-0x202d40,6,
-0x202d80,14,
-0x202dc0,6,
-0x202e00,11,
-0x202e40,6,
-0x202e60,6,
-0x202e80,6,
-0x202ea0,6,
-0x203000,2,
-0x203014,4,
-0x203040,3,
-0x203050,3,
-0x203080,43,
-0x203140,11,
-0x203180,1,
-0x20319c,15,
-0x203200,12,
-0x203300,1,
-0x203308,6,
-0x203324,10,
-0x203380,1,
-0x203388,6,
-0x2033a4,10,
-0x203400,7,
-0x203420,7,
-0x203500,12,
-0x203540,12,
-0x203580,4,
-0x203800,14,
-0x20383c,9,
-0x203864,6,
-0x203880,2,
-0x203890,4,
-0x203900,14,
-0x20393c,9,
-0x203964,6,
-0x203980,2,
-0x203990,4,
-0x203a00,16,
-0x203a50,4,
-0x203a80,16,
-0x203ad0,4,
-0x203b00,6,
-0x203b20,6,
-0x203b40,3,
-0x203b80,6,
-0x203ba0,6,
-0x203bc0,3,
-0x203c00,6,
-0x203c20,6,
-0x203c40,3,
-0x203c80,6,
-0x203ca0,6,
-0x203cc0,3,
-0x203d10,2,
-0x203d1c,1,
-0x203d50,2,
-0x203d5c,1,
-0x203d80,1,
-0x203da0,1,
-0x203da8,4,
-0x203dc0,1,
-0x203de0,1,
-0x203de8,4,
-0x203e00,13,
-0x203e40,6,
-0x203e60,6,
-0x203e80,6,
-0x203ea0,6,
-0x203ec0,7,
-0x203ee0,7,
-0x203f00,12,
-0x203f34,2,
-0x203f40,3,
-0x203f50,8,
-0x204000,29,
-0x204078,4,
-0x204090,2,
-0x2040a0,7,
-0x2040c0,11,
-0x204100,14,
-0x204140,14,
-0x204180,61,
-0x204278,4,
-0x204290,2,
-0x2042a0,7,
-0x2042c0,11,
-0x204300,14,
-0x204340,14,
-0x204380,61,
-0x204478,4,
-0x204490,2,
-0x2044a0,7,
-0x2044c0,11,
-0x204500,14,
-0x204540,14,
-0x204580,61,
-0x204678,4,
-0x204690,2,
-0x2046a0,7,
-0x2046c0,11,
-0x204700,14,
-0x204740,14,
-0x204780,69,
-0x204c00,6,
-0x204c40,14,
-0x204c80,9,
-0x204d00,9,
-0x204d2c,1,
-0x204d40,3,
-0x204d60,1,
-0x204d80,3,
-0x204e00,2,
-0x204e0c,1,
-0x204e14,5,
-0x204e2c,1,
-0x204e34,5,
-0x204e4c,1,
-0x204e54,5,
-0x204e6c,1,
-0x204e74,5,
-0x204e8c,1,
-0x204e94,5,
-0x204eac,1,
-0x204eb4,3,
-0x205000,29,
-0x205078,4,
-0x205090,2,
-0x2050a0,7,
-0x2050c0,11,
-0x205100,14,
-0x205140,14,
-0x205180,61,
-0x205278,4,
-0x205290,2,
-0x2052a0,7,
-0x2052c0,11,
-0x205300,14,
-0x205340,14,
-0x205380,61,
-0x205478,4,
-0x205490,2,
-0x2054a0,7,
-0x2054c0,11,
-0x205500,14,
-0x205540,14,
-0x205580,61,
-0x205678,4,
-0x205690,2,
-0x2056a0,7,
-0x2056c0,11,
-0x205700,14,
-0x205740,14,
-0x205780,69,
-0x205c00,6,
-0x205c40,14,
-0x205c80,9,
-0x205d00,9,
-0x205d2c,1,
-0x205d40,3,
-0x205d60,1,
-0x205d80,3,
-0x205e00,2,
-0x205e0c,1,
-0x205e14,5,
-0x205e2c,1,
-0x205e34,5,
-0x205e4c,1,
-0x205e54,5,
-0x205e6c,1,
-0x205e74,5,
-0x205e8c,1,
-0x205e94,5,
-0x205eac,1,
-0x205eb4,3,
-0x206000,14,
-0x206040,6,
-0x206060,6,
-0x206080,6,
-0x2060a0,3,
-0x206100,9,
-0x206204,1,
-0x20620c,6,
-0x206240,13,
-0x206280,16,
-0x206800,19,
-0x206850,10,
-0x206880,19,
-0x2068d0,10,
-0x206900,19,
-0x206950,10,
-0x206980,19,
-0x2069d0,10,
-0x206a00,19,
-0x206a50,10,
-0x206a80,19,
-0x206ad0,10,
-0x206b00,19,
-0x206b50,10,
-0x206b80,19,
-0x206bd0,10,
-0x206c00,19,
-0x206c60,6,
-0x206c84,1,
-0x206c94,8,
-0x206cb8,14,
-0x207000,1,
-0x207028,1,
-0x207050,1,
-0x207078,1,
-0x2070a0,4,
-0x2071ac,1,
-0x2071d8,4,
-0x207200,6,
-0x207220,6,
-0x207240,3,
-0x207400,1,
-0x207408,3,
-0x207438,1,
-0x207444,1,
-0x207450,6,
-0x207500,7,
-0x207520,6,
-0x207540,6,
-0x207560,3,
-0x207570,3,
-0x208000,6,
-0x208020,3,
-0x208030,1,
-0x208038,4,
-0x208050,1,
-0x208400,1,
-0x208428,1,
-0x208450,1,
-0x208478,1,
-0x2084a0,6,
-0x2085ac,1,
-0x2085d8,4,
-0x208600,6,
-0x208620,6,
-0x208640,3,
-0x208800,6,
-0x208820,3,
-0x208830,4,
-0x208918,2,
-0x208924,1,
-0x208934,3,
-0x208958,2,
-0x208964,1,
-0x208974,3,
-0x208998,2,
-0x2089a4,1,
-0x2089b4,3,
-0x2089d8,2,
-0x2089e4,1,
-0x2089f4,3,
-0x209020,4,
-0x209040,11,
-0x209074,2,
-0x209080,4,
-0x2090b0,22,
-0x209110,2,
-0x209120,22,
-0x209180,2,
-0x2091a0,6,
-0x2091c0,9,
-0x209200,42,
-0x2092c0,1,
-0x2092c8,13,
-0x209300,25,
-0x20936c,4,
-0x209380,2,
-0x2093a0,1,
-0x2093c0,11,
-0x209404,3,
-0x209420,11,
-0x209480,6,
-0x209500,1,
-0x209520,6,
-0x209540,3,
-0x209550,7,
-0x209570,18,
-0x2095bc,5,
-0x209800,480,
-0x20a020,4,
-0x20a040,11,
-0x20a074,2,
-0x20a080,4,
-0x20a0b0,22,
-0x20a110,2,
-0x20a120,22,
-0x20a180,2,
-0x20a1a0,6,
-0x20a1c0,9,
-0x20a200,42,
-0x20a2c0,1,
-0x20a2c8,13,
-0x20a300,25,
-0x20a36c,4,
-0x20a380,2,
-0x20a3a0,1,
-0x20a3c0,11,
-0x20a404,3,
-0x20a420,11,
-0x20a480,6,
-0x20a500,1,
-0x20a520,6,
-0x20a540,3,
-0x20a550,7,
-0x20a570,18,
-0x20a5bc,5,
-0x20a800,480,
-0x20b020,4,
-0x20b040,11,
-0x20b074,2,
-0x20b080,4,
-0x20b0b0,22,
-0x20b110,2,
-0x20b120,22,
-0x20b180,2,
-0x20b1a0,6,
-0x20b1c0,9,
-0x20b200,42,
-0x20b2c0,1,
-0x20b2c8,13,
-0x20b300,25,
-0x20b36c,4,
-0x20b380,2,
-0x20b3a0,1,
-0x20b3c0,11,
-0x20b404,3,
-0x20b420,11,
-0x20b480,6,
-0x20b500,1,
-0x20b520,6,
-0x20b540,3,
-0x20b550,7,
-0x20b570,18,
-0x20b5bc,5,
-0x20b800,480,
-0x20c020,4,
-0x20c040,11,
-0x20c074,2,
-0x20c080,4,
-0x20c0b0,22,
-0x20c110,2,
-0x20c120,22,
-0x20c180,2,
-0x20c1a0,6,
-0x20c1c0,9,
-0x20c200,42,
-0x20c2c0,1,
-0x20c2c8,13,
-0x20c300,25,
-0x20c36c,4,
-0x20c380,2,
-0x20c3a0,1,
-0x20c3c0,11,
-0x20c404,3,
-0x20c420,11,
-0x20c480,6,
-0x20c500,1,
-0x20c520,6,
-0x20c540,3,
-0x20c550,7,
-0x20c570,18,
-0x20c5bc,5,
-0x20c800,480,
-0x20f800,5,
-0x20f818,1,
-0x20f854,6,
-0x20f880,4,
-0x20f8a4,1,
-0x20f8ac,2,
-0x20f900,5,
-0x20f918,1,
-0x20f954,6,
-0x20f980,4,
-0x20f9a4,1,
-0x20f9ac,2,
-0x20fa00,5,
-0x20fa18,1,
-0x20fa54,6,
-0x20fa80,4,
-0x20faa4,1,
-0x20faac,2,
-0x20fb00,5,
-0x20fb18,1,
-0x20fb54,6,
-0x20fb80,4,
-0x20fba4,1,
-0x20fbac,2,
-0x214000,3,
-0x214018,10,
-0x214100,58,
-0x2141f0,1,
-0x214400,3,
-0x214418,10,
-0x214500,58,
-0x2145f0,1,
-0x214800,3,
-0x214810,3,
-0x214820,6,
-0x214880,9,
-0x2148c0,9,
-0x214900,8,
-0x214938,2,
-0x214944,1,
-0x214954,3,
-0x214980,8,
-0x2149b8,2,
-0x2149c4,1,
-0x2149d4,3,
-0x215000,3,
-0x215018,10,
-0x215100,58,
-0x2151f0,1,
-0x215400,3,
-0x215418,10,
-0x215500,58,
-0x2155f0,1,
-0x215800,3,
-0x215810,3,
-0x215820,6,
-0x215880,9,
-0x2158c0,9,
-0x215900,8,
-0x215938,2,
-0x215944,1,
-0x215954,3,
-0x215980,8,
-0x2159b8,2,
-0x2159c4,1,
-0x2159d4,3,
-0x216004,7,
-0x216024,1,
-0x216030,4,
-0x216300,5,
-0x21631c,2,
-0x216600,10,
-0x216630,1,
-0x216640,10,
-0x216670,1,
-0x216700,10,
-0x216730,1,
-0x216740,10,
-0x216770,1,
-0x216800,19,
-0x216890,15,
-0x216910,15,
-0x216a00,10,
-0x216ab8,4,
-0x216b00,3,
-0x216b10,1,
-0x216e00,6,
-0x216f00,5,
-0x217000,65,
-0x217800,6,
-0x217820,6,
-0x217840,6,
-0x217860,6,
-0x217880,6,
-0x2178a0,6,
-0x2178c0,6,
-0x2178e0,3,
-0x217900,6,
-0x217920,6,
-0x217940,6,
-0x217960,6,
-0x217980,6,
-0x2179a0,6,
-0x2179c0,6,
-0x2179e0,3,
-0x217a00,6,
-0x217a20,6,
-0x217a40,3,
-0x217a80,7,
-0x217aa0,7,
-0x217ac0,9,
-0x217b00,9,
-0x217b40,10,
-0x217b80,10,
-0x217bc0,10,
-0x217c00,10,
-0x217c40,10,
-0x217c80,10,
-0x217cc0,3,
-0x217e40,7,
-0x217e60,7,
-0x217e80,7,
-0x217ea0,7,
-0x217ec0,7,
-0x217ee0,7,
-0x217f00,7,
-0x217f20,7,
-0x217f40,7,
-0x217f60,4,
-0x217f78,13,
-0x218000,2,
-0x21800c,3,
-0x218028,2,
-0x218038,2,
-0x218080,29,
-0x2180f8,1,
-0x218100,13,
-0x218140,13,
-0x218500,6,
-0x218520,6,
-0x218540,3,
-0x218580,10,
-0x2185c0,15,
-0x218600,2,
-0x218618,5,
-0x218630,1,
-0x218800,2,
-0x21880c,3,
-0x218828,2,
-0x218838,2,
-0x218880,29,
-0x2188f8,1,
-0x218900,13,
-0x218940,13,
-0x218d00,6,
-0x218d20,6,
-0x218d40,3,
-0x218d80,10,
-0x218dc0,15,
-0x218e00,2,
-0x218e18,5,
-0x218e30,1,
-0x219800,3,
-0x219828,3,
-0x219850,3,
-0x219878,3,
-0x2198a0,9,
-0x2199ac,1,
-0x2199d8,4,
-0x219a00,6,
-0x219a20,6,
-0x219a40,6,
-0x219a60,6,
-0x219a80,6,
-0x219aa0,6,
-0x219ac0,3,
-0x219c00,6,
-0x219c20,3,
-0x219c40,2,
-0x219c60,1,
-0x220000,4,
-0x220014,1,
-0x220020,3,
-0x220030,3,
-0x220040,8,
-0x22007c,2,
-0x2200a0,6,
-0x2200c0,6,
-0x2200e0,6,
-0x220100,4,
-0x220114,1,
-0x220120,3,
-0x220130,3,
-0x220140,8,
-0x22017c,2,
-0x2201a0,6,
-0x2201c0,6,
-0x2201e0,6,
-0x220200,4,
-0x220214,1,
-0x220220,3,
-0x220230,3,
-0x220240,8,
-0x22027c,2,
-0x2202a0,6,
-0x2202c0,6,
-0x2202e0,6,
-0x220300,4,
-0x220314,1,
-0x220320,3,
-0x220330,3,
-0x220340,8,
-0x22037c,2,
-0x2203a0,6,
-0x2203c0,6,
-0x2203e0,6,
-0x220400,6,
-0x220440,6,
-0x220480,3,
-0x2204c0,3,
-0x220500,2,
-0x22050c,4,
-0x220520,2,
-0x22052c,4,
-0x220540,2,
-0x220c00,13,
-0x220c40,12,
-0x220c80,13,
-0x220cc0,12,
-0x220d00,14,
-0x220d40,6,
-0x220d80,14,
-0x220dc0,6,
-0x220e00,11,
-0x220e40,6,
-0x220e60,6,
-0x220e80,6,
-0x220ea0,6,
-0x221000,2,
-0x221014,4,
-0x221040,3,
-0x221050,3,
-0x221080,43,
-0x221140,11,
-0x221180,1,
-0x22119c,15,
-0x221200,12,
-0x221300,1,
-0x221308,6,
-0x221324,10,
-0x221380,1,
-0x221388,6,
-0x2213a4,10,
-0x221400,7,
-0x221420,7,
-0x221500,12,
-0x221540,12,
-0x221580,4,
-0x221800,14,
-0x22183c,9,
-0x221864,6,
-0x221880,2,
-0x221890,4,
-0x221900,14,
-0x22193c,9,
-0x221964,6,
-0x221980,2,
-0x221990,4,
-0x221a00,16,
-0x221a50,4,
-0x221a80,16,
-0x221ad0,4,
-0x221b00,6,
-0x221b20,6,
-0x221b40,3,
-0x221b80,6,
-0x221ba0,6,
-0x221bc0,3,
-0x221c00,6,
-0x221c20,6,
-0x221c40,3,
-0x221c80,6,
-0x221ca0,6,
-0x221cc0,3,
-0x221d10,2,
-0x221d1c,1,
-0x221d50,2,
-0x221d5c,1,
-0x221d80,1,
-0x221da0,1,
-0x221da8,4,
-0x221dc0,1,
-0x221de0,1,
-0x221de8,4,
-0x221e00,13,
-0x221e40,6,
-0x221e60,6,
-0x221e80,6,
-0x221ea0,6,
-0x221ec0,7,
-0x221ee0,7,
-0x221f00,12,
-0x221f34,2,
-0x221f40,3,
-0x221f50,8,
-0x222000,4,
-0x222014,1,
-0x222020,3,
-0x222030,3,
-0x222040,8,
-0x22207c,2,
-0x2220a0,6,
-0x2220c0,6,
-0x2220e0,6,
-0x222100,4,
-0x222114,1,
-0x222120,3,
-0x222130,3,
-0x222140,8,
-0x22217c,2,
-0x2221a0,6,
-0x2221c0,6,
-0x2221e0,6,
-0x222200,4,
-0x222214,1,
-0x222220,3,
-0x222230,3,
-0x222240,8,
-0x22227c,2,
-0x2222a0,6,
-0x2222c0,6,
-0x2222e0,6,
-0x222300,4,
-0x222314,1,
-0x222320,3,
-0x222330,3,
-0x222340,8,
-0x22237c,2,
-0x2223a0,6,
-0x2223c0,6,
-0x2223e0,6,
-0x222400,6,
-0x222440,6,
-0x222480,3,
-0x2224c0,3,
-0x222500,2,
-0x22250c,4,
-0x222520,2,
-0x22252c,4,
-0x222540,2,
-0x222c00,13,
-0x222c40,12,
-0x222c80,13,
-0x222cc0,12,
-0x222d00,14,
-0x222d40,6,
-0x222d80,14,
-0x222dc0,6,
-0x222e00,11,
-0x222e40,6,
-0x222e60,6,
-0x222e80,6,
-0x222ea0,6,
-0x223000,2,
-0x223014,4,
-0x223040,3,
-0x223050,3,
-0x223080,43,
-0x223140,11,
-0x223180,1,
-0x22319c,15,
-0x223200,12,
-0x223300,1,
-0x223308,6,
-0x223324,10,
-0x223380,1,
-0x223388,6,
-0x2233a4,10,
-0x223400,7,
-0x223420,7,
-0x223500,12,
-0x223540,12,
-0x223580,4,
-0x223800,14,
-0x22383c,9,
-0x223864,6,
-0x223880,2,
-0x223890,4,
-0x223900,14,
-0x22393c,9,
-0x223964,6,
-0x223980,2,
-0x223990,4,
-0x223a00,16,
-0x223a50,4,
-0x223a80,16,
-0x223ad0,4,
-0x223b00,6,
-0x223b20,6,
-0x223b40,3,
-0x223b80,6,
-0x223ba0,6,
-0x223bc0,3,
-0x223c00,6,
-0x223c20,6,
-0x223c40,3,
-0x223c80,6,
-0x223ca0,6,
-0x223cc0,3,
-0x223d10,2,
-0x223d1c,1,
-0x223d50,2,
-0x223d5c,1,
-0x223d80,1,
-0x223da0,1,
-0x223da8,4,
-0x223dc0,1,
-0x223de0,1,
-0x223de8,4,
-0x223e00,13,
-0x223e40,6,
-0x223e60,6,
-0x223e80,6,
-0x223ea0,6,
-0x223ec0,7,
-0x223ee0,7,
-0x223f00,12,
-0x223f34,2,
-0x223f40,3,
-0x223f50,8,
-0x224000,29,
-0x224078,4,
-0x224090,2,
-0x2240a0,7,
-0x2240c0,11,
-0x224100,14,
-0x224140,14,
-0x224180,61,
-0x224278,4,
-0x224290,2,
-0x2242a0,7,
-0x2242c0,11,
-0x224300,14,
-0x224340,14,
-0x224380,61,
-0x224478,4,
-0x224490,2,
-0x2244a0,7,
-0x2244c0,11,
-0x224500,14,
-0x224540,14,
-0x224580,61,
-0x224678,4,
-0x224690,2,
-0x2246a0,7,
-0x2246c0,11,
-0x224700,14,
-0x224740,14,
-0x224780,69,
-0x224c00,6,
-0x224c40,14,
-0x224c80,9,
-0x224d00,9,
-0x224d2c,1,
-0x224d40,3,
-0x224d60,1,
-0x224d80,3,
-0x224e00,2,
-0x224e0c,1,
-0x224e14,5,
-0x224e2c,1,
-0x224e34,5,
-0x224e4c,1,
-0x224e54,5,
-0x224e6c,1,
-0x224e74,5,
-0x224e8c,1,
-0x224e94,5,
-0x224eac,1,
-0x224eb4,3,
-0x225000,29,
-0x225078,4,
-0x225090,2,
-0x2250a0,7,
-0x2250c0,11,
-0x225100,14,
-0x225140,14,
-0x225180,61,
-0x225278,4,
-0x225290,2,
-0x2252a0,7,
-0x2252c0,11,
-0x225300,14,
-0x225340,14,
-0x225380,61,
-0x225478,4,
-0x225490,2,
-0x2254a0,7,
-0x2254c0,11,
-0x225500,14,
-0x225540,14,
-0x225580,61,
-0x225678,4,
-0x225690,2,
-0x2256a0,7,
-0x2256c0,11,
-0x225700,14,
-0x225740,14,
-0x225780,69,
-0x225c00,6,
-0x225c40,14,
-0x225c80,9,
-0x225d00,9,
-0x225d2c,1,
-0x225d40,3,
-0x225d60,1,
-0x225d80,3,
-0x225e00,2,
-0x225e0c,1,
-0x225e14,5,
-0x225e2c,1,
-0x225e34,5,
-0x225e4c,1,
-0x225e54,5,
-0x225e6c,1,
-0x225e74,5,
-0x225e8c,1,
-0x225e94,5,
-0x225eac,1,
-0x225eb4,3,
-0x226000,14,
-0x226040,6,
-0x226060,6,
-0x226080,6,
-0x2260a0,3,
-0x226100,9,
-0x226204,1,
-0x22620c,6,
-0x226240,13,
-0x226280,16,
-0x226800,19,
-0x226850,10,
-0x226880,19,
-0x2268d0,10,
-0x226900,19,
-0x226950,10,
-0x226980,19,
-0x2269d0,10,
-0x226a00,19,
-0x226a50,10,
-0x226a80,19,
-0x226ad0,10,
-0x226b00,19,
-0x226b50,10,
-0x226b80,19,
-0x226bd0,10,
-0x226c00,19,
-0x226c60,6,
-0x226c84,1,
-0x226c94,8,
-0x226cb8,14,
-0x227000,1,
-0x227028,1,
-0x227050,1,
-0x227078,1,
-0x2270a0,4,
-0x2271ac,1,
-0x2271d8,4,
-0x227200,6,
-0x227220,6,
-0x227240,3,
-0x227400,1,
-0x227408,3,
-0x227438,1,
-0x227444,1,
-0x227450,6,
-0x227500,7,
-0x227520,6,
-0x227540,6,
-0x227560,3,
-0x227570,3,
-0x228000,6,
-0x228020,3,
-0x228030,1,
-0x228038,4,
-0x228050,1,
-0x228400,1,
-0x228428,1,
-0x228450,1,
-0x228478,1,
-0x2284a0,6,
-0x2285ac,1,
-0x2285d8,4,
-0x228600,6,
-0x228620,6,
-0x228640,3,
-0x228800,6,
-0x228820,3,
-0x228830,4,
-0x228918,2,
-0x228924,1,
-0x228934,3,
-0x228958,2,
-0x228964,1,
-0x228974,3,
-0x228998,2,
-0x2289a4,1,
-0x2289b4,3,
-0x2289d8,2,
-0x2289e4,1,
-0x2289f4,3,
-0x229020,4,
-0x229040,11,
-0x229074,2,
-0x229080,4,
-0x2290b0,22,
-0x229110,2,
-0x229120,22,
-0x229180,2,
-0x2291a0,6,
-0x2291c0,9,
-0x229200,42,
-0x2292c0,1,
-0x2292c8,13,
-0x229300,25,
-0x22936c,4,
-0x229380,2,
-0x2293a0,1,
-0x2293c0,11,
-0x229404,3,
-0x229420,11,
-0x229480,6,
-0x229500,1,
-0x229520,6,
-0x229540,3,
-0x229550,7,
-0x229570,18,
-0x2295bc,5,
-0x229800,480,
-0x22a020,4,
-0x22a040,11,
-0x22a074,2,
-0x22a080,4,
-0x22a0b0,22,
-0x22a110,2,
-0x22a120,22,
-0x22a180,2,
-0x22a1a0,6,
-0x22a1c0,9,
-0x22a200,42,
-0x22a2c0,1,
-0x22a2c8,13,
-0x22a300,25,
-0x22a36c,4,
-0x22a380,2,
-0x22a3a0,1,
-0x22a3c0,11,
-0x22a404,3,
-0x22a420,11,
-0x22a480,6,
-0x22a500,1,
-0x22a520,6,
-0x22a540,3,
-0x22a550,7,
-0x22a570,18,
-0x22a5bc,5,
-0x22a800,480,
-0x22b020,4,
-0x22b040,11,
-0x22b074,2,
-0x22b080,4,
-0x22b0b0,22,
-0x22b110,2,
-0x22b120,22,
-0x22b180,2,
-0x22b1a0,6,
-0x22b1c0,9,
-0x22b200,42,
-0x22b2c0,1,
-0x22b2c8,13,
-0x22b300,25,
-0x22b36c,4,
-0x22b380,2,
-0x22b3a0,1,
-0x22b3c0,11,
-0x22b404,3,
-0x22b420,11,
-0x22b480,6,
-0x22b500,1,
-0x22b520,6,
-0x22b540,3,
-0x22b550,7,
-0x22b570,18,
-0x22b5bc,5,
-0x22b800,480,
-0x22c020,4,
-0x22c040,11,
-0x22c074,2,
-0x22c080,4,
-0x22c0b0,22,
-0x22c110,2,
-0x22c120,22,
-0x22c180,2,
-0x22c1a0,6,
-0x22c1c0,9,
-0x22c200,42,
-0x22c2c0,1,
-0x22c2c8,13,
-0x22c300,25,
-0x22c36c,4,
-0x22c380,2,
-0x22c3a0,1,
-0x22c3c0,11,
-0x22c404,3,
-0x22c420,11,
-0x22c480,6,
-0x22c500,1,
-0x22c520,6,
-0x22c540,3,
-0x22c550,7,
-0x22c570,18,
-0x22c5bc,5,
-0x22c800,480,
-0x22f800,5,
-0x22f818,1,
-0x22f854,6,
-0x22f880,4,
-0x22f8a4,1,
-0x22f8ac,2,
-0x22f900,5,
-0x22f918,1,
-0x22f954,6,
-0x22f980,4,
-0x22f9a4,1,
-0x22f9ac,2,
-0x22fa00,5,
-0x22fa18,1,
-0x22fa54,6,
-0x22fa80,4,
-0x22faa4,1,
-0x22faac,2,
-0x22fb00,5,
-0x22fb18,1,
-0x22fb54,6,
-0x22fb80,4,
-0x22fba4,1,
-0x22fbac,2,
-0x234000,3,
-0x234018,10,
-0x234100,58,
-0x2341f0,1,
-0x234400,3,
-0x234418,10,
-0x234500,58,
-0x2345f0,1,
-0x234800,3,
-0x234810,3,
-0x234820,6,
-0x234880,9,
-0x2348c0,9,
-0x234900,8,
-0x234938,2,
-0x234944,1,
-0x234954,3,
-0x234980,8,
-0x2349b8,2,
-0x2349c4,1,
-0x2349d4,3,
-0x235000,3,
-0x235018,10,
-0x235100,58,
-0x2351f0,1,
-0x235400,3,
-0x235418,10,
-0x235500,58,
-0x2355f0,1,
-0x235800,3,
-0x235810,3,
-0x235820,6,
-0x235880,9,
-0x2358c0,9,
-0x235900,8,
-0x235938,2,
-0x235944,1,
-0x235954,3,
-0x235980,8,
-0x2359b8,2,
-0x2359c4,1,
-0x2359d4,3,
-0x236004,7,
-0x236024,1,
-0x236030,4,
-0x236300,5,
-0x23631c,2,
-0x236600,10,
-0x236630,1,
-0x236640,10,
-0x236670,1,
-0x236700,10,
-0x236730,1,
-0x236740,10,
-0x236770,1,
-0x236800,19,
-0x236890,15,
-0x236910,15,
-0x236a00,10,
-0x236ab8,4,
-0x236b00,3,
-0x236b10,1,
-0x236e00,6,
-0x236f00,5,
-0x237000,65,
-0x237800,6,
-0x237820,6,
-0x237840,6,
-0x237860,6,
-0x237880,6,
-0x2378a0,6,
-0x2378c0,6,
-0x2378e0,3,
-0x237900,6,
-0x237920,6,
-0x237940,6,
-0x237960,6,
-0x237980,6,
-0x2379a0,6,
-0x2379c0,6,
-0x2379e0,3,
-0x237a00,6,
-0x237a20,6,
-0x237a40,3,
-0x237a80,7,
-0x237aa0,7,
-0x237ac0,9,
-0x237b00,9,
-0x237b40,10,
-0x237b80,10,
-0x237bc0,10,
-0x237c00,10,
-0x237c40,10,
-0x237c80,10,
-0x237cc0,3,
-0x237e40,7,
-0x237e60,7,
-0x237e80,7,
-0x237ea0,7,
-0x237ec0,7,
-0x237ee0,7,
-0x237f00,7,
-0x237f20,7,
-0x237f40,7,
-0x237f60,4,
-0x237f78,13,
-0x238000,2,
-0x23800c,3,
-0x238028,2,
-0x238038,2,
-0x238080,29,
-0x2380f8,1,
-0x238100,13,
-0x238140,13,
-0x238500,6,
-0x238520,6,
-0x238540,3,
-0x238580,10,
-0x2385c0,15,
-0x238600,2,
-0x238618,5,
-0x238630,1,
-0x238800,2,
-0x23880c,3,
-0x238828,2,
-0x238838,2,
-0x238880,29,
-0x2388f8,1,
-0x238900,13,
-0x238940,13,
-0x238d00,6,
-0x238d20,6,
-0x238d40,3,
-0x238d80,10,
-0x238dc0,15,
-0x238e00,2,
-0x238e18,5,
-0x238e30,1,
-0x239800,3,
-0x239828,3,
-0x239850,3,
-0x239878,3,
-0x2398a0,9,
-0x2399ac,1,
-0x2399d8,4,
-0x239a00,6,
-0x239a20,6,
-0x239a40,6,
-0x239a60,6,
-0x239a80,6,
-0x239aa0,6,
-0x239ac0,3,
-0x239c00,6,
-0x239c20,3,
-0x239c40,2,
-0x239c60,1,
-0x240000,4,
-0x240014,1,
-0x240020,3,
-0x240030,3,
-0x240040,8,
-0x24007c,2,
-0x2400a0,6,
-0x2400c0,6,
-0x2400e0,6,
-0x240100,4,
-0x240114,1,
-0x240120,3,
-0x240130,3,
-0x240140,8,
-0x24017c,2,
-0x2401a0,6,
-0x2401c0,6,
-0x2401e0,6,
-0x240200,4,
-0x240214,1,
-0x240220,3,
-0x240230,3,
-0x240240,8,
-0x24027c,2,
-0x2402a0,6,
-0x2402c0,6,
-0x2402e0,6,
-0x240300,4,
-0x240314,1,
-0x240320,3,
-0x240330,3,
-0x240340,8,
-0x24037c,2,
-0x2403a0,6,
-0x2403c0,6,
-0x2403e0,6,
-0x240400,6,
-0x240440,6,
-0x240480,3,
-0x2404c0,3,
-0x240500,2,
-0x24050c,4,
-0x240520,2,
-0x24052c,4,
-0x240540,2,
-0x240c00,13,
-0x240c40,12,
-0x240c80,13,
-0x240cc0,12,
-0x240d00,14,
-0x240d40,6,
-0x240d80,14,
-0x240dc0,6,
-0x240e00,11,
-0x240e40,6,
-0x240e60,6,
-0x240e80,6,
-0x240ea0,6,
-0x241000,2,
-0x241014,4,
-0x241040,3,
-0x241050,3,
-0x241080,43,
-0x241140,11,
-0x241180,1,
-0x24119c,15,
-0x241200,12,
-0x241300,1,
-0x241308,6,
-0x241324,10,
-0x241380,1,
-0x241388,6,
-0x2413a4,10,
-0x241400,7,
-0x241420,7,
-0x241500,12,
-0x241540,12,
-0x241580,4,
-0x241800,14,
-0x24183c,9,
-0x241864,6,
-0x241880,2,
-0x241890,4,
-0x241900,14,
-0x24193c,9,
-0x241964,6,
-0x241980,2,
-0x241990,4,
-0x241a00,16,
-0x241a50,4,
-0x241a80,16,
-0x241ad0,4,
-0x241b00,6,
-0x241b20,6,
-0x241b40,3,
-0x241b80,6,
-0x241ba0,6,
-0x241bc0,3,
-0x241c00,6,
-0x241c20,6,
-0x241c40,3,
-0x241c80,6,
-0x241ca0,6,
-0x241cc0,3,
-0x241d10,2,
-0x241d1c,1,
-0x241d50,2,
-0x241d5c,1,
-0x241d80,1,
-0x241da0,1,
-0x241da8,4,
-0x241dc0,1,
-0x241de0,1,
-0x241de8,4,
-0x241e00,13,
-0x241e40,6,
-0x241e60,6,
-0x241e80,6,
-0x241ea0,6,
-0x241ec0,7,
-0x241ee0,7,
-0x241f00,12,
-0x241f34,2,
-0x241f40,3,
-0x241f50,8,
-0x242000,4,
-0x242014,1,
-0x242020,3,
-0x242030,3,
-0x242040,8,
-0x24207c,2,
-0x2420a0,6,
-0x2420c0,6,
-0x2420e0,6,
-0x242100,4,
-0x242114,1,
-0x242120,3,
-0x242130,3,
-0x242140,8,
-0x24217c,2,
-0x2421a0,6,
-0x2421c0,6,
-0x2421e0,6,
-0x242200,4,
-0x242214,1,
-0x242220,3,
-0x242230,3,
-0x242240,8,
-0x24227c,2,
-0x2422a0,6,
-0x2422c0,6,
-0x2422e0,6,
-0x242300,4,
-0x242314,1,
-0x242320,3,
-0x242330,3,
-0x242340,8,
-0x24237c,2,
-0x2423a0,6,
-0x2423c0,6,
-0x2423e0,6,
-0x242400,6,
-0x242440,6,
-0x242480,3,
-0x2424c0,3,
-0x242500,2,
-0x24250c,4,
-0x242520,2,
-0x24252c,4,
-0x242540,2,
-0x242c00,13,
-0x242c40,12,
-0x242c80,13,
-0x242cc0,12,
-0x242d00,14,
-0x242d40,6,
-0x242d80,14,
-0x242dc0,6,
-0x242e00,11,
-0x242e40,6,
-0x242e60,6,
-0x242e80,6,
-0x242ea0,6,
-0x243000,2,
-0x243014,4,
-0x243040,3,
-0x243050,3,
-0x243080,43,
-0x243140,11,
-0x243180,1,
-0x24319c,15,
-0x243200,12,
-0x243300,1,
-0x243308,6,
-0x243324,10,
-0x243380,1,
-0x243388,6,
-0x2433a4,10,
-0x243400,7,
-0x243420,7,
-0x243500,12,
-0x243540,12,
-0x243580,4,
-0x243800,14,
-0x24383c,9,
-0x243864,6,
-0x243880,2,
-0x243890,4,
-0x243900,14,
-0x24393c,9,
-0x243964,6,
-0x243980,2,
-0x243990,4,
-0x243a00,16,
-0x243a50,4,
-0x243a80,16,
-0x243ad0,4,
-0x243b00,6,
-0x243b20,6,
-0x243b40,3,
-0x243b80,6,
-0x243ba0,6,
-0x243bc0,3,
-0x243c00,6,
-0x243c20,6,
-0x243c40,3,
-0x243c80,6,
-0x243ca0,6,
-0x243cc0,3,
-0x243d10,2,
-0x243d1c,1,
-0x243d50,2,
-0x243d5c,1,
-0x243d80,1,
-0x243da0,1,
-0x243da8,4,
-0x243dc0,1,
-0x243de0,1,
-0x243de8,4,
-0x243e00,13,
-0x243e40,6,
-0x243e60,6,
-0x243e80,6,
-0x243ea0,6,
-0x243ec0,7,
-0x243ee0,7,
-0x243f00,12,
-0x243f34,2,
-0x243f40,3,
-0x243f50,8,
-0x244000,29,
-0x244078,4,
-0x244090,2,
-0x2440a0,7,
-0x2440c0,11,
-0x244100,14,
-0x244140,14,
-0x244180,61,
-0x244278,4,
-0x244290,2,
-0x2442a0,7,
-0x2442c0,11,
-0x244300,14,
-0x244340,14,
-0x244380,61,
-0x244478,4,
-0x244490,2,
-0x2444a0,7,
-0x2444c0,11,
-0x244500,14,
-0x244540,14,
-0x244580,61,
-0x244678,4,
-0x244690,2,
-0x2446a0,7,
-0x2446c0,11,
-0x244700,14,
-0x244740,14,
-0x244780,69,
-0x244c00,6,
-0x244c40,14,
-0x244c80,9,
-0x244d00,9,
-0x244d2c,1,
-0x244d40,3,
-0x244d60,1,
-0x244d80,3,
-0x244e00,2,
-0x244e0c,1,
-0x244e14,5,
-0x244e2c,1,
-0x244e34,5,
-0x244e4c,1,
-0x244e54,5,
-0x244e6c,1,
-0x244e74,5,
-0x244e8c,1,
-0x244e94,5,
-0x244eac,1,
-0x244eb4,3,
-0x245000,29,
-0x245078,4,
-0x245090,2,
-0x2450a0,7,
-0x2450c0,11,
-0x245100,14,
-0x245140,14,
-0x245180,61,
-0x245278,4,
-0x245290,2,
-0x2452a0,7,
-0x2452c0,11,
-0x245300,14,
-0x245340,14,
-0x245380,61,
-0x245478,4,
-0x245490,2,
-0x2454a0,7,
-0x2454c0,11,
-0x245500,14,
-0x245540,14,
-0x245580,61,
-0x245678,4,
-0x245690,2,
-0x2456a0,7,
-0x2456c0,11,
-0x245700,14,
-0x245740,14,
-0x245780,69,
-0x245c00,6,
-0x245c40,14,
-0x245c80,9,
-0x245d00,9,
-0x245d2c,1,
-0x245d40,3,
-0x245d60,1,
-0x245d80,3,
-0x245e00,2,
-0x245e0c,1,
-0x245e14,5,
-0x245e2c,1,
-0x245e34,5,
-0x245e4c,1,
-0x245e54,5,
-0x245e6c,1,
-0x245e74,5,
-0x245e8c,1,
-0x245e94,5,
-0x245eac,1,
-0x245eb4,3,
-0x246000,14,
-0x246040,6,
-0x246060,6,
-0x246080,6,
-0x2460a0,3,
-0x246100,9,
-0x246204,1,
-0x24620c,6,
-0x246240,13,
-0x246280,16,
-0x246800,19,
-0x246850,10,
-0x246880,19,
-0x2468d0,10,
-0x246900,19,
-0x246950,10,
-0x246980,19,
-0x2469d0,10,
-0x246a00,19,
-0x246a50,10,
-0x246a80,19,
-0x246ad0,10,
-0x246b00,19,
-0x246b50,10,
-0x246b80,19,
-0x246bd0,10,
-0x246c00,19,
-0x246c60,6,
-0x246c84,1,
-0x246c94,8,
-0x246cb8,14,
-0x247000,1,
-0x247028,1,
-0x247050,1,
-0x247078,1,
-0x2470a0,4,
-0x2471ac,1,
-0x2471d8,4,
-0x247200,6,
-0x247220,6,
-0x247240,3,
-0x247400,1,
-0x247408,3,
-0x247438,1,
-0x247444,1,
-0x247450,6,
-0x247500,7,
-0x247520,6,
-0x247540,6,
-0x247560,3,
-0x247570,3,
-0x248000,6,
-0x248020,3,
-0x248030,1,
-0x248038,4,
-0x248050,1,
-0x248400,1,
-0x248428,1,
-0x248450,1,
-0x248478,1,
-0x2484a0,6,
-0x2485ac,1,
-0x2485d8,4,
-0x248600,6,
-0x248620,6,
-0x248640,3,
-0x248800,6,
-0x248820,3,
-0x248830,4,
-0x248918,2,
-0x248924,1,
-0x248934,3,
-0x248958,2,
-0x248964,1,
-0x248974,3,
-0x248998,2,
-0x2489a4,1,
-0x2489b4,3,
-0x2489d8,2,
-0x2489e4,1,
-0x2489f4,3,
-0x249020,4,
-0x249040,11,
-0x249074,2,
-0x249080,4,
-0x2490b0,22,
-0x249110,2,
-0x249120,22,
-0x249180,2,
-0x2491a0,6,
-0x2491c0,9,
-0x249200,42,
-0x2492c0,1,
-0x2492c8,13,
-0x249300,25,
-0x24936c,4,
-0x249380,2,
-0x2493a0,1,
-0x2493c0,11,
-0x249404,3,
-0x249420,11,
-0x249480,6,
-0x249500,1,
-0x249520,6,
-0x249540,3,
-0x249550,7,
-0x249570,18,
-0x2495bc,5,
-0x249800,480,
-0x24a020,4,
-0x24a040,11,
-0x24a074,2,
-0x24a080,4,
-0x24a0b0,22,
-0x24a110,2,
-0x24a120,22,
-0x24a180,2,
-0x24a1a0,6,
-0x24a1c0,9,
-0x24a200,42,
-0x24a2c0,1,
-0x24a2c8,13,
-0x24a300,25,
-0x24a36c,4,
-0x24a380,2,
-0x24a3a0,1,
-0x24a3c0,11,
-0x24a404,3,
-0x24a420,11,
-0x24a480,6,
-0x24a500,1,
-0x24a520,6,
-0x24a540,3,
-0x24a550,7,
-0x24a570,18,
-0x24a5bc,5,
-0x24a800,480,
-0x24b020,4,
-0x24b040,11,
-0x24b074,2,
-0x24b080,4,
-0x24b0b0,22,
-0x24b110,2,
-0x24b120,22,
-0x24b180,2,
-0x24b1a0,6,
-0x24b1c0,9,
-0x24b200,42,
-0x24b2c0,1,
-0x24b2c8,13,
-0x24b300,25,
-0x24b36c,4,
-0x24b380,2,
-0x24b3a0,1,
-0x24b3c0,11,
-0x24b404,3,
-0x24b420,11,
-0x24b480,6,
-0x24b500,1,
-0x24b520,6,
-0x24b540,3,
-0x24b550,7,
-0x24b570,18,
-0x24b5bc,5,
-0x24b800,480,
-0x24c020,4,
-0x24c040,11,
-0x24c074,2,
-0x24c080,4,
-0x24c0b0,22,
-0x24c110,2,
-0x24c120,22,
-0x24c180,2,
-0x24c1a0,6,
-0x24c1c0,9,
-0x24c200,42,
-0x24c2c0,1,
-0x24c2c8,13,
-0x24c300,25,
-0x24c36c,4,
-0x24c380,2,
-0x24c3a0,1,
-0x24c3c0,11,
-0x24c404,3,
-0x24c420,11,
-0x24c480,6,
-0x24c500,1,
-0x24c520,6,
-0x24c540,3,
-0x24c550,7,
-0x24c570,18,
-0x24c5bc,5,
-0x24c800,480,
-0x24f800,5,
-0x24f818,1,
-0x24f854,6,
-0x24f880,4,
-0x24f8a4,1,
-0x24f8ac,2,
-0x24f900,5,
-0x24f918,1,
-0x24f954,6,
-0x24f980,4,
-0x24f9a4,1,
-0x24f9ac,2,
-0x24fa00,5,
-0x24fa18,1,
-0x24fa54,6,
-0x24fa80,4,
-0x24faa4,1,
-0x24faac,2,
-0x24fb00,5,
-0x24fb18,1,
-0x24fb54,6,
-0x24fb80,4,
-0x24fba4,1,
-0x24fbac,2,
-0x254000,3,
-0x254018,10,
-0x254100,58,
-0x2541f0,1,
-0x254400,3,
-0x254418,10,
-0x254500,58,
-0x2545f0,1,
-0x254800,3,
-0x254810,3,
-0x254820,6,
-0x254880,9,
-0x2548c0,9,
-0x254900,8,
-0x254938,2,
-0x254944,1,
-0x254954,3,
-0x254980,8,
-0x2549b8,2,
-0x2549c4,1,
-0x2549d4,3,
-0x255000,3,
-0x255018,10,
-0x255100,58,
-0x2551f0,1,
-0x255400,3,
-0x255418,10,
-0x255500,58,
-0x2555f0,1,
-0x255800,3,
-0x255810,3,
-0x255820,6,
-0x255880,9,
-0x2558c0,9,
-0x255900,8,
-0x255938,2,
-0x255944,1,
-0x255954,3,
-0x255980,8,
-0x2559b8,2,
-0x2559c4,1,
-0x2559d4,3,
-0x256004,7,
-0x256024,1,
-0x256030,4,
-0x256300,5,
-0x25631c,2,
-0x256600,10,
-0x256630,1,
-0x256640,10,
-0x256670,1,
-0x256700,10,
-0x256730,1,
-0x256740,10,
-0x256770,1,
-0x256800,19,
-0x256890,15,
-0x256910,15,
-0x256a00,10,
-0x256ab8,4,
-0x256b00,3,
-0x256b10,1,
-0x256e00,6,
-0x256f00,5,
-0x257000,65,
-0x257800,6,
-0x257820,6,
-0x257840,6,
-0x257860,6,
-0x257880,6,
-0x2578a0,6,
-0x2578c0,6,
-0x2578e0,3,
-0x257900,6,
-0x257920,6,
-0x257940,6,
-0x257960,6,
-0x257980,6,
-0x2579a0,6,
-0x2579c0,6,
-0x2579e0,3,
-0x257a00,6,
-0x257a20,6,
-0x257a40,3,
-0x257a80,7,
-0x257aa0,7,
-0x257ac0,9,
-0x257b00,9,
-0x257b40,10,
-0x257b80,10,
-0x257bc0,10,
-0x257c00,10,
-0x257c40,10,
-0x257c80,10,
-0x257cc0,3,
-0x257e40,7,
-0x257e60,7,
-0x257e80,7,
-0x257ea0,7,
-0x257ec0,7,
-0x257ee0,7,
-0x257f00,7,
-0x257f20,7,
-0x257f40,7,
-0x257f60,4,
-0x257f78,13,
-0x258000,2,
-0x25800c,3,
-0x258028,2,
-0x258038,2,
-0x258080,29,
-0x2580f8,1,
-0x258100,13,
-0x258140,13,
-0x258500,6,
-0x258520,6,
-0x258540,3,
-0x258580,10,
-0x2585c0,15,
-0x258600,2,
-0x258618,5,
-0x258630,1,
-0x258800,2,
-0x25880c,3,
-0x258828,2,
-0x258838,2,
-0x258880,29,
-0x2588f8,1,
-0x258900,13,
-0x258940,13,
-0x258d00,6,
-0x258d20,6,
-0x258d40,3,
-0x258d80,10,
-0x258dc0,15,
-0x258e00,2,
-0x258e18,5,
-0x258e30,1,
-0x259800,3,
-0x259828,3,
-0x259850,3,
-0x259878,3,
-0x2598a0,9,
-0x2599ac,1,
-0x2599d8,4,
-0x259a00,6,
-0x259a20,6,
-0x259a40,6,
-0x259a60,6,
-0x259a80,6,
-0x259aa0,6,
-0x259ac0,3,
-0x259c00,6,
-0x259c20,3,
-0x259c40,2,
-0x259c60,1,
-0x260000,4,
-0x260014,1,
-0x260020,3,
-0x260030,3,
-0x260040,8,
-0x26007c,2,
-0x2600a0,6,
-0x2600c0,6,
-0x2600e0,6,
-0x260100,4,
-0x260114,1,
-0x260120,3,
-0x260130,3,
-0x260140,8,
-0x26017c,2,
-0x2601a0,6,
-0x2601c0,6,
-0x2601e0,6,
-0x260200,4,
-0x260214,1,
-0x260220,3,
-0x260230,3,
-0x260240,8,
-0x26027c,2,
-0x2602a0,6,
-0x2602c0,6,
-0x2602e0,6,
-0x260300,4,
-0x260314,1,
-0x260320,3,
-0x260330,3,
-0x260340,8,
-0x26037c,2,
-0x2603a0,6,
-0x2603c0,6,
-0x2603e0,6,
-0x260400,6,
-0x260440,6,
-0x260480,3,
-0x2604c0,3,
-0x260500,2,
-0x26050c,4,
-0x260520,2,
-0x26052c,4,
-0x260540,2,
-0x260c00,13,
-0x260c40,12,
-0x260c80,13,
-0x260cc0,12,
-0x260d00,14,
-0x260d40,6,
-0x260d80,14,
-0x260dc0,6,
-0x260e00,11,
-0x260e40,6,
-0x260e60,6,
-0x260e80,6,
-0x260ea0,6,
-0x261000,2,
-0x261014,4,
-0x261040,3,
-0x261050,3,
-0x261080,43,
-0x261140,11,
-0x261180,1,
-0x26119c,15,
-0x261200,12,
-0x261300,1,
-0x261308,6,
-0x261324,10,
-0x261380,1,
-0x261388,6,
-0x2613a4,10,
-0x261400,7,
-0x261420,7,
-0x261500,12,
-0x261540,12,
-0x261580,4,
-0x261800,14,
-0x26183c,9,
-0x261864,6,
-0x261880,2,
-0x261890,4,
-0x261900,14,
-0x26193c,9,
-0x261964,6,
-0x261980,2,
-0x261990,4,
-0x261a00,16,
-0x261a50,4,
-0x261a80,16,
-0x261ad0,4,
-0x261b00,6,
-0x261b20,6,
-0x261b40,3,
-0x261b80,6,
-0x261ba0,6,
-0x261bc0,3,
-0x261c00,6,
-0x261c20,6,
-0x261c40,3,
-0x261c80,6,
-0x261ca0,6,
-0x261cc0,3,
-0x261d10,2,
-0x261d1c,1,
-0x261d50,2,
-0x261d5c,1,
-0x261d80,1,
-0x261da0,1,
-0x261da8,4,
-0x261dc0,1,
-0x261de0,1,
-0x261de8,4,
-0x261e00,13,
-0x261e40,6,
-0x261e60,6,
-0x261e80,6,
-0x261ea0,6,
-0x261ec0,7,
-0x261ee0,7,
-0x261f00,12,
-0x261f34,2,
-0x261f40,3,
-0x261f50,8,
-0x262000,4,
-0x262014,1,
-0x262020,3,
-0x262030,3,
-0x262040,8,
-0x26207c,2,
-0x2620a0,6,
-0x2620c0,6,
-0x2620e0,6,
-0x262100,4,
-0x262114,1,
-0x262120,3,
-0x262130,3,
-0x262140,8,
-0x26217c,2,
-0x2621a0,6,
-0x2621c0,6,
-0x2621e0,6,
-0x262200,4,
-0x262214,1,
-0x262220,3,
-0x262230,3,
-0x262240,8,
-0x26227c,2,
-0x2622a0,6,
-0x2622c0,6,
-0x2622e0,6,
-0x262300,4,
-0x262314,1,
-0x262320,3,
-0x262330,3,
-0x262340,8,
-0x26237c,2,
-0x2623a0,6,
-0x2623c0,6,
-0x2623e0,6,
-0x262400,6,
-0x262440,6,
-0x262480,3,
-0x2624c0,3,
-0x262500,2,
-0x26250c,4,
-0x262520,2,
-0x26252c,4,
-0x262540,2,
-0x262c00,13,
-0x262c40,12,
-0x262c80,13,
-0x262cc0,12,
-0x262d00,14,
-0x262d40,6,
-0x262d80,14,
-0x262dc0,6,
-0x262e00,11,
-0x262e40,6,
-0x262e60,6,
-0x262e80,6,
-0x262ea0,6,
-0x263000,2,
-0x263014,4,
-0x263040,3,
-0x263050,3,
-0x263080,43,
-0x263140,11,
-0x263180,1,
-0x26319c,15,
-0x263200,12,
-0x263300,1,
-0x263308,6,
-0x263324,10,
-0x263380,1,
-0x263388,6,
-0x2633a4,10,
-0x263400,7,
-0x263420,7,
-0x263500,12,
-0x263540,12,
-0x263580,4,
-0x263800,14,
-0x26383c,9,
-0x263864,6,
-0x263880,2,
-0x263890,4,
-0x263900,14,
-0x26393c,9,
-0x263964,6,
-0x263980,2,
-0x263990,4,
-0x263a00,16,
-0x263a50,4,
-0x263a80,16,
-0x263ad0,4,
-0x263b00,6,
-0x263b20,6,
-0x263b40,3,
-0x263b80,6,
-0x263ba0,6,
-0x263bc0,3,
-0x263c00,6,
-0x263c20,6,
-0x263c40,3,
-0x263c80,6,
-0x263ca0,6,
-0x263cc0,3,
-0x263d10,2,
-0x263d1c,1,
-0x263d50,2,
-0x263d5c,1,
-0x263d80,1,
-0x263da0,1,
-0x263da8,4,
-0x263dc0,1,
-0x263de0,1,
-0x263de8,4,
-0x263e00,13,
-0x263e40,6,
-0x263e60,6,
-0x263e80,6,
-0x263ea0,6,
-0x263ec0,7,
-0x263ee0,7,
-0x263f00,12,
-0x263f34,2,
-0x263f40,3,
-0x263f50,8,
-0x264000,29,
-0x264078,4,
-0x264090,2,
-0x2640a0,7,
-0x2640c0,11,
-0x264100,14,
-0x264140,14,
-0x264180,61,
-0x264278,4,
-0x264290,2,
-0x2642a0,7,
-0x2642c0,11,
-0x264300,14,
-0x264340,14,
-0x264380,61,
-0x264478,4,
-0x264490,2,
-0x2644a0,7,
-0x2644c0,11,
-0x264500,14,
-0x264540,14,
-0x264580,61,
-0x264678,4,
-0x264690,2,
-0x2646a0,7,
-0x2646c0,11,
-0x264700,14,
-0x264740,14,
-0x264780,69,
-0x264c00,6,
-0x264c40,14,
-0x264c80,9,
-0x264d00,9,
-0x264d2c,1,
-0x264d40,3,
-0x264d60,1,
-0x264d80,3,
-0x264e00,2,
-0x264e0c,1,
-0x264e14,5,
-0x264e2c,1,
-0x264e34,5,
-0x264e4c,1,
-0x264e54,5,
-0x264e6c,1,
-0x264e74,5,
-0x264e8c,1,
-0x264e94,5,
-0x264eac,1,
-0x264eb4,3,
-0x265000,29,
-0x265078,4,
-0x265090,2,
-0x2650a0,7,
-0x2650c0,11,
-0x265100,14,
-0x265140,14,
-0x265180,61,
-0x265278,4,
-0x265290,2,
-0x2652a0,7,
-0x2652c0,11,
-0x265300,14,
-0x265340,14,
-0x265380,61,
-0x265478,4,
-0x265490,2,
-0x2654a0,7,
-0x2654c0,11,
-0x265500,14,
-0x265540,14,
-0x265580,61,
-0x265678,4,
-0x265690,2,
-0x2656a0,7,
-0x2656c0,11,
-0x265700,14,
-0x265740,14,
-0x265780,69,
-0x265c00,6,
-0x265c40,14,
-0x265c80,9,
-0x265d00,9,
-0x265d2c,1,
-0x265d40,3,
-0x265d60,1,
-0x265d80,3,
-0x265e00,2,
-0x265e0c,1,
-0x265e14,5,
-0x265e2c,1,
-0x265e34,5,
-0x265e4c,1,
-0x265e54,5,
-0x265e6c,1,
-0x265e74,5,
-0x265e8c,1,
-0x265e94,5,
-0x265eac,1,
-0x265eb4,3,
-0x266000,14,
-0x266040,6,
-0x266060,6,
-0x266080,6,
-0x2660a0,3,
-0x266100,9,
-0x266204,1,
-0x26620c,6,
-0x266240,13,
-0x266280,16,
-0x266400,8,
-0x266424,15,
-0x266464,15,
-0x2664a4,15,
-0x2664e4,30,
-0x266580,10,
-0x2665ac,1,
-0x2665b4,5,
-0x2665cc,1,
-0x2665d4,5,
-0x2665ec,1,
-0x2665f4,13,
-0x266680,4,
-0x266694,2,
-0x2666a0,5,
-0x2666c0,5,
-0x2666e0,4,
-0x266800,19,
-0x266850,10,
-0x266880,19,
-0x2668d0,10,
-0x266900,19,
-0x266950,10,
-0x266980,19,
-0x2669d0,10,
-0x266a00,19,
-0x266a50,10,
-0x266a80,19,
-0x266ad0,10,
-0x266b00,19,
-0x266b50,10,
-0x266b80,19,
-0x266bd0,10,
-0x266c00,19,
-0x266c60,6,
-0x266c84,1,
-0x266c94,8,
-0x266cb8,14,
-0x267000,1,
-0x267028,1,
-0x267050,1,
-0x267078,1,
-0x2670a0,4,
-0x2671ac,1,
-0x2671d8,4,
-0x267200,6,
-0x267220,6,
-0x267240,3,
-0x267400,1,
-0x267408,3,
-0x267438,1,
-0x267444,1,
-0x267450,6,
-0x267500,7,
-0x267520,6,
-0x267540,6,
-0x267560,3,
-0x267570,3,
-0x268000,6,
-0x268020,3,
-0x268030,1,
-0x268038,4,
-0x268050,1,
-0x268400,1,
-0x268428,1,
-0x268450,1,
-0x268478,1,
-0x2684a0,6,
-0x2685ac,1,
-0x2685d8,4,
-0x268600,6,
-0x268620,6,
-0x268640,3,
-0x268800,6,
-0x268820,3,
-0x268830,4,
-0x268918,2,
-0x268924,1,
-0x268934,3,
-0x268958,2,
-0x268964,1,
-0x268974,3,
-0x268998,2,
-0x2689a4,1,
-0x2689b4,3,
-0x2689d8,2,
-0x2689e4,1,
-0x2689f4,3,
-0x269020,4,
-0x269040,11,
-0x269074,2,
-0x269080,4,
-0x2690b0,22,
-0x269110,2,
-0x269120,22,
-0x269180,2,
-0x2691a0,6,
-0x2691c0,9,
-0x269200,42,
-0x2692c0,1,
-0x2692c8,13,
-0x269300,25,
-0x26936c,4,
-0x269380,2,
-0x2693a0,1,
-0x2693c0,11,
-0x269404,3,
-0x269420,11,
-0x269480,6,
-0x269500,1,
-0x269520,6,
-0x269540,3,
-0x269550,7,
-0x269570,18,
-0x2695bc,5,
-0x269800,480,
-0x26a020,4,
-0x26a040,11,
-0x26a074,2,
-0x26a080,4,
-0x26a0b0,22,
-0x26a110,2,
-0x26a120,22,
-0x26a180,2,
-0x26a1a0,6,
-0x26a1c0,9,
-0x26a200,42,
-0x26a2c0,1,
-0x26a2c8,13,
-0x26a300,25,
-0x26a36c,4,
-0x26a380,2,
-0x26a3a0,1,
-0x26a3c0,11,
-0x26a404,3,
-0x26a420,11,
-0x26a480,6,
-0x26a500,1,
-0x26a520,6,
-0x26a540,3,
-0x26a550,7,
-0x26a570,18,
-0x26a5bc,5,
-0x26a800,480,
-0x26b020,4,
-0x26b040,11,
-0x26b074,2,
-0x26b080,4,
-0x26b0b0,22,
-0x26b110,2,
-0x26b120,22,
-0x26b180,2,
-0x26b1a0,6,
-0x26b1c0,9,
-0x26b200,42,
-0x26b2c0,1,
-0x26b2c8,13,
-0x26b300,25,
-0x26b36c,4,
-0x26b380,2,
-0x26b3a0,1,
-0x26b3c0,11,
-0x26b404,3,
-0x26b420,11,
-0x26b480,6,
-0x26b500,1,
-0x26b520,6,
-0x26b540,3,
-0x26b550,7,
-0x26b570,18,
-0x26b5bc,5,
-0x26b800,480,
-0x26c020,4,
-0x26c040,11,
-0x26c074,2,
-0x26c080,4,
-0x26c0b0,22,
-0x26c110,2,
-0x26c120,22,
-0x26c180,2,
-0x26c1a0,6,
-0x26c1c0,9,
-0x26c200,42,
-0x26c2c0,1,
-0x26c2c8,13,
-0x26c300,25,
-0x26c36c,4,
-0x26c380,2,
-0x26c3a0,1,
-0x26c3c0,11,
-0x26c404,3,
-0x26c420,11,
-0x26c480,6,
-0x26c500,1,
-0x26c520,6,
-0x26c540,3,
-0x26c550,7,
-0x26c570,18,
-0x26c5bc,5,
-0x26c800,480,
-0x26f800,5,
-0x26f818,1,
-0x26f854,6,
-0x26f880,4,
-0x26f8a4,1,
-0x26f8ac,2,
-0x26f900,5,
-0x26f918,1,
-0x26f954,6,
-0x26f980,4,
-0x26f9a4,1,
-0x26f9ac,2,
-0x26fa00,5,
-0x26fa18,1,
-0x26fa54,6,
-0x26fa80,4,
-0x26faa4,1,
-0x26faac,2,
-0x26fb00,5,
-0x26fb18,1,
-0x26fb54,6,
-0x26fb80,4,
-0x26fba4,1,
-0x26fbac,2,
-0x274000,3,
-0x274018,10,
-0x274100,58,
-0x2741f0,1,
-0x274400,3,
-0x274418,10,
-0x274500,58,
-0x2745f0,1,
-0x274800,3,
-0x274810,3,
-0x274820,6,
-0x274880,9,
-0x2748c0,9,
-0x274900,8,
-0x274938,2,
-0x274944,1,
-0x274954,3,
-0x274980,8,
-0x2749b8,2,
-0x2749c4,1,
-0x2749d4,3,
-0x275000,3,
-0x275018,10,
-0x275100,58,
-0x2751f0,1,
-0x275400,3,
-0x275418,10,
-0x275500,58,
-0x2755f0,1,
-0x275800,3,
-0x275810,3,
-0x275820,6,
-0x275880,9,
-0x2758c0,9,
-0x275900,8,
-0x275938,2,
-0x275944,1,
-0x275954,3,
-0x275980,8,
-0x2759b8,2,
-0x2759c4,1,
-0x2759d4,3,
-0x276004,7,
-0x276024,1,
-0x276030,4,
-0x276300,5,
-0x27631c,2,
-0x276600,10,
-0x276630,1,
-0x276640,10,
-0x276670,1,
-0x276700,10,
-0x276730,1,
-0x276740,10,
-0x276770,1,
-0x276800,19,
-0x276890,15,
-0x276910,15,
-0x276a00,10,
-0x276ab8,4,
-0x276b00,3,
-0x276b10,1,
-0x276e00,6,
-0x276f00,5,
-0x277000,65,
-0x277800,6,
-0x277820,6,
-0x277840,6,
-0x277860,6,
-0x277880,6,
-0x2778a0,6,
-0x2778c0,6,
-0x2778e0,3,
-0x277900,6,
-0x277920,6,
-0x277940,6,
-0x277960,6,
-0x277980,6,
-0x2779a0,6,
-0x2779c0,6,
-0x2779e0,3,
-0x277a00,6,
-0x277a20,6,
-0x277a40,3,
-0x277a80,7,
-0x277aa0,7,
-0x277ac0,9,
-0x277b00,9,
-0x277b40,10,
-0x277b80,10,
-0x277bc0,10,
-0x277c00,10,
-0x277c40,10,
-0x277c80,10,
-0x277cc0,3,
-0x277e40,7,
-0x277e60,7,
-0x277e80,7,
-0x277ea0,7,
-0x277ec0,7,
-0x277ee0,7,
-0x277f00,7,
-0x277f20,7,
-0x277f40,7,
-0x277f60,4,
-0x277f78,13,
-0x278000,2,
-0x27800c,3,
-0x278028,2,
-0x278038,2,
-0x278080,29,
-0x2780f8,1,
-0x278100,13,
-0x278140,13,
-0x278500,6,
-0x278520,6,
-0x278540,3,
-0x278580,10,
-0x2785c0,15,
-0x278600,2,
-0x278618,5,
-0x278630,1,
-0x278800,2,
-0x27880c,3,
-0x278828,2,
-0x278838,2,
-0x278880,29,
-0x2788f8,1,
-0x278900,13,
-0x278940,13,
-0x278d00,6,
-0x278d20,6,
-0x278d40,3,
-0x278d80,10,
-0x278dc0,15,
-0x278e00,2,
-0x278e18,5,
-0x278e30,1,
-0x279800,3,
-0x279828,3,
-0x279850,3,
-0x279878,3,
-0x2798a0,9,
-0x2799ac,1,
-0x2799d8,4,
-0x279a00,6,
-0x279a20,6,
-0x279a40,6,
-0x279a60,6,
-0x279a80,6,
-0x279aa0,6,
-0x279ac0,3,
-0x279c00,6,
-0x279c20,3,
-0x279c40,2,
-0x279c60,1,
-0x280000,4,
-0x280014,1,
-0x280020,3,
-0x280030,3,
-0x280040,8,
-0x28007c,2,
-0x2800a0,6,
-0x2800c0,6,
-0x2800e0,6,
-0x280100,4,
-0x280114,1,
-0x280120,3,
-0x280130,3,
-0x280140,8,
-0x28017c,2,
-0x2801a0,6,
-0x2801c0,6,
-0x2801e0,6,
-0x280200,4,
-0x280214,1,
-0x280220,3,
-0x280230,3,
-0x280240,8,
-0x28027c,2,
-0x2802a0,6,
-0x2802c0,6,
-0x2802e0,6,
-0x280300,4,
-0x280314,1,
-0x280320,3,
-0x280330,3,
-0x280340,8,
-0x28037c,2,
-0x2803a0,6,
-0x2803c0,6,
-0x2803e0,6,
-0x280400,6,
-0x280440,6,
-0x280480,3,
-0x2804c0,3,
-0x280500,2,
-0x28050c,4,
-0x280520,2,
-0x28052c,4,
-0x280540,2,
-0x280c00,13,
-0x280c40,12,
-0x280c80,13,
-0x280cc0,12,
-0x280d00,14,
-0x280d40,6,
-0x280d80,14,
-0x280dc0,6,
-0x280e00,11,
-0x280e40,6,
-0x280e60,6,
-0x280e80,6,
-0x280ea0,6,
-0x281000,2,
-0x281014,4,
-0x281040,3,
-0x281050,3,
-0x281080,43,
-0x281140,11,
-0x281180,1,
-0x28119c,15,
-0x281200,12,
-0x281300,1,
-0x281308,6,
-0x281324,10,
-0x281380,1,
-0x281388,6,
-0x2813a4,10,
-0x281400,7,
-0x281420,7,
-0x281500,12,
-0x281540,12,
-0x281580,4,
-0x281800,14,
-0x28183c,9,
-0x281864,6,
-0x281880,2,
-0x281890,4,
-0x281900,14,
-0x28193c,9,
-0x281964,6,
-0x281980,2,
-0x281990,4,
-0x281a00,16,
-0x281a50,4,
-0x281a80,16,
-0x281ad0,4,
-0x281b00,6,
-0x281b20,6,
-0x281b40,3,
-0x281b80,6,
-0x281ba0,6,
-0x281bc0,3,
-0x281c00,6,
-0x281c20,6,
-0x281c40,3,
-0x281c80,6,
-0x281ca0,6,
-0x281cc0,3,
-0x281d10,2,
-0x281d1c,1,
-0x281d50,2,
-0x281d5c,1,
-0x281d80,1,
-0x281da0,1,
-0x281da8,4,
-0x281dc0,1,
-0x281de0,1,
-0x281de8,4,
-0x281e00,13,
-0x281e40,6,
-0x281e60,6,
-0x281e80,6,
-0x281ea0,6,
-0x281ec0,7,
-0x281ee0,7,
-0x281f00,12,
-0x281f34,2,
-0x281f40,3,
-0x281f50,8,
-0x282000,4,
-0x282014,1,
-0x282020,3,
-0x282030,3,
-0x282040,8,
-0x28207c,2,
-0x2820a0,6,
-0x2820c0,6,
-0x2820e0,6,
-0x282100,4,
-0x282114,1,
-0x282120,3,
-0x282130,3,
-0x282140,8,
-0x28217c,2,
-0x2821a0,6,
-0x2821c0,6,
-0x2821e0,6,
-0x282200,4,
-0x282214,1,
-0x282220,3,
-0x282230,3,
-0x282240,8,
-0x28227c,2,
-0x2822a0,6,
-0x2822c0,6,
-0x2822e0,6,
-0x282300,4,
-0x282314,1,
-0x282320,3,
-0x282330,3,
-0x282340,8,
-0x28237c,2,
-0x2823a0,6,
-0x2823c0,6,
-0x2823e0,6,
-0x282400,6,
-0x282440,6,
-0x282480,3,
-0x2824c0,3,
-0x282500,2,
-0x28250c,4,
-0x282520,2,
-0x28252c,4,
-0x282540,2,
-0x282c00,13,
-0x282c40,12,
-0x282c80,13,
-0x282cc0,12,
-0x282d00,14,
-0x282d40,6,
-0x282d80,14,
-0x282dc0,6,
-0x282e00,11,
-0x282e40,6,
-0x282e60,6,
-0x282e80,6,
-0x282ea0,6,
-0x283000,2,
-0x283014,4,
-0x283040,3,
-0x283050,3,
-0x283080,43,
-0x283140,11,
-0x283180,1,
-0x28319c,15,
-0x283200,12,
-0x283300,1,
-0x283308,6,
-0x283324,10,
-0x283380,1,
-0x283388,6,
-0x2833a4,10,
-0x283400,7,
-0x283420,7,
-0x283500,12,
-0x283540,12,
-0x283580,4,
-0x283800,14,
-0x28383c,9,
-0x283864,6,
-0x283880,2,
-0x283890,4,
-0x283900,14,
-0x28393c,9,
-0x283964,6,
-0x283980,2,
-0x283990,4,
-0x283a00,16,
-0x283a50,4,
-0x283a80,16,
-0x283ad0,4,
-0x283b00,6,
-0x283b20,6,
-0x283b40,3,
-0x283b80,6,
-0x283ba0,6,
-0x283bc0,3,
-0x283c00,6,
-0x283c20,6,
-0x283c40,3,
-0x283c80,6,
-0x283ca0,6,
-0x283cc0,3,
-0x283d10,2,
-0x283d1c,1,
-0x283d50,2,
-0x283d5c,1,
-0x283d80,1,
-0x283da0,1,
-0x283da8,4,
-0x283dc0,1,
-0x283de0,1,
-0x283de8,4,
-0x283e00,13,
-0x283e40,6,
-0x283e60,6,
-0x283e80,6,
-0x283ea0,6,
-0x283ec0,7,
-0x283ee0,7,
-0x283f00,12,
-0x283f34,2,
-0x283f40,3,
-0x283f50,8,
-0x284000,29,
-0x284078,4,
-0x284090,2,
-0x2840a0,7,
-0x2840c0,11,
-0x284100,14,
-0x284140,14,
-0x284180,61,
-0x284278,4,
-0x284290,2,
-0x2842a0,7,
-0x2842c0,11,
-0x284300,14,
-0x284340,14,
-0x284380,61,
-0x284478,4,
-0x284490,2,
-0x2844a0,7,
-0x2844c0,11,
-0x284500,14,
-0x284540,14,
-0x284580,61,
-0x284678,4,
-0x284690,2,
-0x2846a0,7,
-0x2846c0,11,
-0x284700,14,
-0x284740,14,
-0x284780,69,
-0x284c00,6,
-0x284c40,14,
-0x284c80,9,
-0x284d00,9,
-0x284d2c,1,
-0x284d40,3,
-0x284d60,1,
-0x284d80,3,
-0x284e00,2,
-0x284e0c,1,
-0x284e14,5,
-0x284e2c,1,
-0x284e34,5,
-0x284e4c,1,
-0x284e54,5,
-0x284e6c,1,
-0x284e74,5,
-0x284e8c,1,
-0x284e94,5,
-0x284eac,1,
-0x284eb4,3,
-0x285000,29,
-0x285078,4,
-0x285090,2,
-0x2850a0,7,
-0x2850c0,11,
-0x285100,14,
-0x285140,14,
-0x285180,61,
-0x285278,4,
-0x285290,2,
-0x2852a0,7,
-0x2852c0,11,
-0x285300,14,
-0x285340,14,
-0x285380,61,
-0x285478,4,
-0x285490,2,
-0x2854a0,7,
-0x2854c0,11,
-0x285500,14,
-0x285540,14,
-0x285580,61,
-0x285678,4,
-0x285690,2,
-0x2856a0,7,
-0x2856c0,11,
-0x285700,14,
-0x285740,14,
-0x285780,69,
-0x285c00,6,
-0x285c40,14,
-0x285c80,9,
-0x285d00,9,
-0x285d2c,1,
-0x285d40,3,
-0x285d60,1,
-0x285d80,3,
-0x285e00,2,
-0x285e0c,1,
-0x285e14,5,
-0x285e2c,1,
-0x285e34,5,
-0x285e4c,1,
-0x285e54,5,
-0x285e6c,1,
-0x285e74,5,
-0x285e8c,1,
-0x285e94,5,
-0x285eac,1,
-0x285eb4,3,
-0x286000,14,
-0x286040,6,
-0x286060,6,
-0x286080,6,
-0x2860a0,3,
-0x286100,9,
-0x286204,1,
-0x28620c,6,
-0x286240,13,
-0x286280,16,
-0x286800,19,
-0x286850,10,
-0x286880,19,
-0x2868d0,10,
-0x286900,19,
-0x286950,10,
-0x286980,19,
-0x2869d0,10,
-0x286a00,19,
-0x286a50,10,
-0x286a80,19,
-0x286ad0,10,
-0x286b00,19,
-0x286b50,10,
-0x286b80,19,
-0x286bd0,10,
-0x286c00,19,
-0x286c60,6,
-0x286c84,1,
-0x286c94,8,
-0x286cb8,14,
-0x287000,1,
-0x287028,1,
-0x287050,1,
-0x287078,1,
-0x2870a0,4,
-0x2871ac,1,
-0x2871d8,4,
-0x287200,6,
-0x287220,6,
-0x287240,3,
-0x287400,1,
-0x287408,3,
-0x287438,1,
-0x287444,1,
-0x287450,6,
-0x287500,7,
-0x287520,6,
-0x287540,6,
-0x287560,3,
-0x287570,3,
-0x288000,6,
-0x288020,3,
-0x288030,1,
-0x288038,4,
-0x288050,1,
-0x288400,1,
-0x288428,1,
-0x288450,1,
-0x288478,1,
-0x2884a0,6,
-0x2885ac,1,
-0x2885d8,4,
-0x288600,6,
-0x288620,6,
-0x288640,3,
-0x288800,6,
-0x288820,3,
-0x288830,4,
-0x288918,2,
-0x288924,1,
-0x288934,3,
-0x288958,2,
-0x288964,1,
-0x288974,3,
-0x288998,2,
-0x2889a4,1,
-0x2889b4,3,
-0x2889d8,2,
-0x2889e4,1,
-0x2889f4,3,
-0x289020,4,
-0x289040,11,
-0x289074,2,
-0x289080,4,
-0x2890b0,22,
-0x289110,2,
-0x289120,22,
-0x289180,2,
-0x2891a0,6,
-0x2891c0,9,
-0x289200,42,
-0x2892c0,1,
-0x2892c8,13,
-0x289300,25,
-0x28936c,4,
-0x289380,2,
-0x2893a0,1,
-0x2893c0,11,
-0x289404,3,
-0x289420,11,
-0x289480,6,
-0x289500,1,
-0x289520,6,
-0x289540,3,
-0x289550,7,
-0x289570,18,
-0x2895bc,5,
-0x289800,480,
-0x28a020,4,
-0x28a040,11,
-0x28a074,2,
-0x28a080,4,
-0x28a0b0,22,
-0x28a110,2,
-0x28a120,22,
-0x28a180,2,
-0x28a1a0,6,
-0x28a1c0,9,
-0x28a200,42,
-0x28a2c0,1,
-0x28a2c8,13,
-0x28a300,25,
-0x28a36c,4,
-0x28a380,2,
-0x28a3a0,1,
-0x28a3c0,11,
-0x28a404,3,
-0x28a420,11,
-0x28a480,6,
-0x28a500,1,
-0x28a520,6,
-0x28a540,3,
-0x28a550,7,
-0x28a570,18,
-0x28a5bc,5,
-0x28a800,480,
-0x28b020,4,
-0x28b040,11,
-0x28b074,2,
-0x28b080,4,
-0x28b0b0,22,
-0x28b110,2,
-0x28b120,22,
-0x28b180,2,
-0x28b1a0,6,
-0x28b1c0,9,
-0x28b200,42,
-0x28b2c0,1,
-0x28b2c8,13,
-0x28b300,25,
-0x28b36c,4,
-0x28b380,2,
-0x28b3a0,1,
-0x28b3c0,11,
-0x28b404,3,
-0x28b420,11,
-0x28b480,6,
-0x28b500,1,
-0x28b520,6,
-0x28b540,3,
-0x28b550,7,
-0x28b570,18,
-0x28b5bc,5,
-0x28b800,480,
-0x28c020,4,
-0x28c040,11,
-0x28c074,2,
-0x28c080,4,
-0x28c0b0,22,
-0x28c110,2,
-0x28c120,22,
-0x28c180,2,
-0x28c1a0,6,
-0x28c1c0,9,
-0x28c200,42,
-0x28c2c0,1,
-0x28c2c8,13,
-0x28c300,25,
-0x28c36c,4,
-0x28c380,2,
-0x28c3a0,1,
-0x28c3c0,11,
-0x28c404,3,
-0x28c420,11,
-0x28c480,6,
-0x28c500,1,
-0x28c520,6,
-0x28c540,3,
-0x28c550,7,
-0x28c570,18,
-0x28c5bc,5,
-0x28c800,480,
-0x28f800,5,
-0x28f818,1,
-0x28f854,6,
-0x28f880,4,
-0x28f8a4,1,
-0x28f8ac,2,
-0x28f900,5,
-0x28f918,1,
-0x28f954,6,
-0x28f980,4,
-0x28f9a4,1,
-0x28f9ac,2,
-0x28fa00,5,
-0x28fa18,1,
-0x28fa54,6,
-0x28fa80,4,
-0x28faa4,1,
-0x28faac,2,
-0x28fb00,5,
-0x28fb18,1,
-0x28fb54,6,
-0x28fb80,4,
-0x28fba4,1,
-0x28fbac,2,
-0x294000,3,
-0x294018,10,
-0x294100,58,
-0x2941f0,1,
-0x294400,3,
-0x294418,10,
-0x294500,58,
-0x2945f0,1,
-0x294800,3,
-0x294810,3,
-0x294820,6,
-0x294880,9,
-0x2948c0,9,
-0x294900,8,
-0x294938,2,
-0x294944,1,
-0x294954,3,
-0x294980,8,
-0x2949b8,2,
-0x2949c4,1,
-0x2949d4,3,
-0x295000,3,
-0x295018,10,
-0x295100,58,
-0x2951f0,1,
-0x295400,3,
-0x295418,10,
-0x295500,58,
-0x2955f0,1,
-0x295800,3,
-0x295810,3,
-0x295820,6,
-0x295880,9,
-0x2958c0,9,
-0x295900,8,
-0x295938,2,
-0x295944,1,
-0x295954,3,
-0x295980,8,
-0x2959b8,2,
-0x2959c4,1,
-0x2959d4,3,
-0x296004,7,
-0x296024,1,
-0x296030,4,
-0x296300,5,
-0x29631c,2,
-0x296600,10,
-0x296630,1,
-0x296640,10,
-0x296670,1,
-0x296700,10,
-0x296730,1,
-0x296740,10,
-0x296770,1,
-0x296800,19,
-0x296890,15,
-0x296910,15,
-0x296a00,10,
-0x296ab8,4,
-0x296b00,3,
-0x296b10,1,
-0x296e00,6,
-0x296f00,5,
-0x297000,65,
-0x297800,6,
-0x297820,6,
-0x297840,6,
-0x297860,6,
-0x297880,6,
-0x2978a0,6,
-0x2978c0,6,
-0x2978e0,3,
-0x297900,6,
-0x297920,6,
-0x297940,6,
-0x297960,6,
-0x297980,6,
-0x2979a0,6,
-0x2979c0,6,
-0x2979e0,3,
-0x297a00,6,
-0x297a20,6,
-0x297a40,3,
-0x297a80,7,
-0x297aa0,7,
-0x297ac0,9,
-0x297b00,9,
-0x297b40,10,
-0x297b80,10,
-0x297bc0,10,
-0x297c00,10,
-0x297c40,10,
-0x297c80,10,
-0x297cc0,3,
-0x297e40,7,
-0x297e60,7,
-0x297e80,7,
-0x297ea0,7,
-0x297ec0,7,
-0x297ee0,7,
-0x297f00,7,
-0x297f20,7,
-0x297f40,7,
-0x297f60,4,
-0x297f78,13,
-0x298000,2,
-0x29800c,3,
-0x298028,2,
-0x298038,2,
-0x298080,29,
-0x2980f8,1,
-0x298100,13,
-0x298140,13,
-0x298500,6,
-0x298520,6,
-0x298540,3,
-0x298580,10,
-0x2985c0,15,
-0x298600,2,
-0x298618,5,
-0x298630,1,
-0x298800,2,
-0x29880c,3,
-0x298828,2,
-0x298838,2,
-0x298880,29,
-0x2988f8,1,
-0x298900,13,
-0x298940,13,
-0x298d00,6,
-0x298d20,6,
-0x298d40,3,
-0x298d80,10,
-0x298dc0,15,
-0x298e00,2,
-0x298e18,5,
-0x298e30,1,
-0x299800,3,
-0x299828,3,
-0x299850,3,
-0x299878,3,
-0x2998a0,9,
-0x2999ac,1,
-0x2999d8,4,
-0x299a00,6,
-0x299a20,6,
-0x299a40,6,
-0x299a60,6,
-0x299a80,6,
-0x299aa0,6,
-0x299ac0,3,
-0x299c00,6,
-0x299c20,3,
-0x299c40,2,
-0x299c60,1,
-0x2a0000,4,
-0x2a0014,1,
-0x2a0020,3,
-0x2a0030,3,
-0x2a0040,8,
-0x2a007c,2,
-0x2a00a0,6,
-0x2a00c0,6,
-0x2a00e0,6,
-0x2a0100,4,
-0x2a0114,1,
-0x2a0120,3,
-0x2a0130,3,
-0x2a0140,8,
-0x2a017c,2,
-0x2a01a0,6,
-0x2a01c0,6,
-0x2a01e0,6,
-0x2a0200,4,
-0x2a0214,1,
-0x2a0220,3,
-0x2a0230,3,
-0x2a0240,8,
-0x2a027c,2,
-0x2a02a0,6,
-0x2a02c0,6,
-0x2a02e0,6,
-0x2a0300,4,
-0x2a0314,1,
-0x2a0320,3,
-0x2a0330,3,
-0x2a0340,8,
-0x2a037c,2,
-0x2a03a0,6,
-0x2a03c0,6,
-0x2a03e0,6,
-0x2a0400,6,
-0x2a0440,6,
-0x2a0480,3,
-0x2a04c0,3,
-0x2a0500,2,
-0x2a050c,4,
-0x2a0520,2,
-0x2a052c,4,
-0x2a0540,2,
-0x2a0c00,13,
-0x2a0c40,12,
-0x2a0c80,13,
-0x2a0cc0,12,
-0x2a0d00,14,
-0x2a0d40,6,
-0x2a0d80,14,
-0x2a0dc0,6,
-0x2a0e00,11,
-0x2a0e40,6,
-0x2a0e60,6,
-0x2a0e80,6,
-0x2a0ea0,6,
-0x2a1000,2,
-0x2a1014,4,
-0x2a1040,3,
-0x2a1050,3,
-0x2a1080,43,
-0x2a1140,11,
-0x2a1180,1,
-0x2a119c,15,
-0x2a1200,12,
-0x2a1300,1,
-0x2a1308,6,
-0x2a1324,10,
-0x2a1380,1,
-0x2a1388,6,
-0x2a13a4,10,
-0x2a1400,7,
-0x2a1420,7,
-0x2a1500,12,
-0x2a1540,12,
-0x2a1580,4,
-0x2a1800,14,
-0x2a183c,9,
-0x2a1864,6,
-0x2a1880,2,
-0x2a1890,4,
-0x2a1900,14,
-0x2a193c,9,
-0x2a1964,6,
-0x2a1980,2,
-0x2a1990,4,
-0x2a1a00,16,
-0x2a1a50,4,
-0x2a1a80,16,
-0x2a1ad0,4,
-0x2a1b00,6,
-0x2a1b20,6,
-0x2a1b40,3,
-0x2a1b80,6,
-0x2a1ba0,6,
-0x2a1bc0,3,
-0x2a1c00,6,
-0x2a1c20,6,
-0x2a1c40,3,
-0x2a1c80,6,
-0x2a1ca0,6,
-0x2a1cc0,3,
-0x2a1d10,2,
-0x2a1d1c,1,
-0x2a1d50,2,
-0x2a1d5c,1,
-0x2a1d80,1,
-0x2a1da0,1,
-0x2a1da8,4,
-0x2a1dc0,1,
-0x2a1de0,1,
-0x2a1de8,4,
-0x2a1e00,13,
-0x2a1e40,6,
-0x2a1e60,6,
-0x2a1e80,6,
-0x2a1ea0,6,
-0x2a1ec0,7,
-0x2a1ee0,7,
-0x2a1f00,12,
-0x2a1f34,2,
-0x2a1f40,3,
-0x2a1f50,8,
-0x2a2000,4,
-0x2a2014,1,
-0x2a2020,3,
-0x2a2030,3,
-0x2a2040,8,
-0x2a207c,2,
-0x2a20a0,6,
-0x2a20c0,6,
-0x2a20e0,6,
-0x2a2100,4,
-0x2a2114,1,
-0x2a2120,3,
-0x2a2130,3,
-0x2a2140,8,
-0x2a217c,2,
-0x2a21a0,6,
-0x2a21c0,6,
-0x2a21e0,6,
-0x2a2200,4,
-0x2a2214,1,
-0x2a2220,3,
-0x2a2230,3,
-0x2a2240,8,
-0x2a227c,2,
-0x2a22a0,6,
-0x2a22c0,6,
-0x2a22e0,6,
-0x2a2300,4,
-0x2a2314,1,
-0x2a2320,3,
-0x2a2330,3,
-0x2a2340,8,
-0x2a237c,2,
-0x2a23a0,6,
-0x2a23c0,6,
-0x2a23e0,6,
-0x2a2400,6,
-0x2a2440,6,
-0x2a2480,3,
-0x2a24c0,3,
-0x2a2500,2,
-0x2a250c,4,
-0x2a2520,2,
-0x2a252c,4,
-0x2a2540,2,
-0x2a2c00,13,
-0x2a2c40,12,
-0x2a2c80,13,
-0x2a2cc0,12,
-0x2a2d00,14,
-0x2a2d40,6,
-0x2a2d80,14,
-0x2a2dc0,6,
-0x2a2e00,11,
-0x2a2e40,6,
-0x2a2e60,6,
-0x2a2e80,6,
-0x2a2ea0,6,
-0x2a3000,2,
-0x2a3014,4,
-0x2a3040,3,
-0x2a3050,3,
-0x2a3080,43,
-0x2a3140,11,
-0x2a3180,1,
-0x2a319c,15,
-0x2a3200,12,
-0x2a3300,1,
-0x2a3308,6,
-0x2a3324,10,
-0x2a3380,1,
-0x2a3388,6,
-0x2a33a4,10,
-0x2a3400,7,
-0x2a3420,7,
-0x2a3500,12,
-0x2a3540,12,
-0x2a3580,4,
-0x2a3800,14,
-0x2a383c,9,
-0x2a3864,6,
-0x2a3880,2,
-0x2a3890,4,
-0x2a3900,14,
-0x2a393c,9,
-0x2a3964,6,
-0x2a3980,2,
-0x2a3990,4,
-0x2a3a00,16,
-0x2a3a50,4,
-0x2a3a80,16,
-0x2a3ad0,4,
-0x2a3b00,6,
-0x2a3b20,6,
-0x2a3b40,3,
-0x2a3b80,6,
-0x2a3ba0,6,
-0x2a3bc0,3,
-0x2a3c00,6,
-0x2a3c20,6,
-0x2a3c40,3,
-0x2a3c80,6,
-0x2a3ca0,6,
-0x2a3cc0,3,
-0x2a3d10,2,
-0x2a3d1c,1,
-0x2a3d50,2,
-0x2a3d5c,1,
-0x2a3d80,1,
-0x2a3da0,1,
-0x2a3da8,4,
-0x2a3dc0,1,
-0x2a3de0,1,
-0x2a3de8,4,
-0x2a3e00,13,
-0x2a3e40,6,
-0x2a3e60,6,
-0x2a3e80,6,
-0x2a3ea0,6,
-0x2a3ec0,7,
-0x2a3ee0,7,
-0x2a3f00,12,
-0x2a3f34,2,
-0x2a3f40,3,
-0x2a3f50,8,
-0x2a4000,29,
-0x2a4078,4,
-0x2a4090,2,
-0x2a40a0,7,
-0x2a40c0,11,
-0x2a4100,14,
-0x2a4140,14,
-0x2a4180,61,
-0x2a4278,4,
-0x2a4290,2,
-0x2a42a0,7,
-0x2a42c0,11,
-0x2a4300,14,
-0x2a4340,14,
-0x2a4380,61,
-0x2a4478,4,
-0x2a4490,2,
-0x2a44a0,7,
-0x2a44c0,11,
-0x2a4500,14,
-0x2a4540,14,
-0x2a4580,61,
-0x2a4678,4,
-0x2a4690,2,
-0x2a46a0,7,
-0x2a46c0,11,
-0x2a4700,14,
-0x2a4740,14,
-0x2a4780,69,
-0x2a4c00,6,
-0x2a4c40,14,
-0x2a4c80,9,
-0x2a4d00,9,
-0x2a4d2c,1,
-0x2a4d40,3,
-0x2a4d60,1,
-0x2a4d80,3,
-0x2a4e00,2,
-0x2a4e0c,1,
-0x2a4e14,5,
-0x2a4e2c,1,
-0x2a4e34,5,
-0x2a4e4c,1,
-0x2a4e54,5,
-0x2a4e6c,1,
-0x2a4e74,5,
-0x2a4e8c,1,
-0x2a4e94,5,
-0x2a4eac,1,
-0x2a4eb4,3,
-0x2a5000,29,
-0x2a5078,4,
-0x2a5090,2,
-0x2a50a0,7,
-0x2a50c0,11,
-0x2a5100,14,
-0x2a5140,14,
-0x2a5180,61,
-0x2a5278,4,
-0x2a5290,2,
-0x2a52a0,7,
-0x2a52c0,11,
-0x2a5300,14,
-0x2a5340,14,
-0x2a5380,61,
-0x2a5478,4,
-0x2a5490,2,
-0x2a54a0,7,
-0x2a54c0,11,
-0x2a5500,14,
-0x2a5540,14,
-0x2a5580,61,
-0x2a5678,4,
-0x2a5690,2,
-0x2a56a0,7,
-0x2a56c0,11,
-0x2a5700,14,
-0x2a5740,14,
-0x2a5780,69,
-0x2a5c00,6,
-0x2a5c40,14,
-0x2a5c80,9,
-0x2a5d00,9,
-0x2a5d2c,1,
-0x2a5d40,3,
-0x2a5d60,1,
-0x2a5d80,3,
-0x2a5e00,2,
-0x2a5e0c,1,
-0x2a5e14,5,
-0x2a5e2c,1,
-0x2a5e34,5,
-0x2a5e4c,1,
-0x2a5e54,5,
-0x2a5e6c,1,
-0x2a5e74,5,
-0x2a5e8c,1,
-0x2a5e94,5,
-0x2a5eac,1,
-0x2a5eb4,3,
-0x2a6000,14,
-0x2a6040,6,
-0x2a6060,6,
-0x2a6080,6,
-0x2a60a0,3,
-0x2a6100,9,
-0x2a6204,1,
-0x2a620c,6,
-0x2a6240,13,
-0x2a6280,16,
-0x2a6800,19,
-0x2a6850,10,
-0x2a6880,19,
-0x2a68d0,10,
-0x2a6900,19,
-0x2a6950,10,
-0x2a6980,19,
-0x2a69d0,10,
-0x2a6a00,19,
-0x2a6a50,10,
-0x2a6a80,19,
-0x2a6ad0,10,
-0x2a6b00,19,
-0x2a6b50,10,
-0x2a6b80,19,
-0x2a6bd0,10,
-0x2a6c00,19,
-0x2a6c60,6,
-0x2a6c84,1,
-0x2a6c94,8,
-0x2a6cb8,14,
-0x2a7000,1,
-0x2a7028,1,
-0x2a7050,1,
-0x2a7078,1,
-0x2a70a0,4,
-0x2a71ac,1,
-0x2a71d8,4,
-0x2a7200,6,
-0x2a7220,6,
-0x2a7240,3,
-0x2a7400,1,
-0x2a7408,3,
-0x2a7438,1,
-0x2a7444,1,
-0x2a7450,6,
-0x2a7500,7,
-0x2a7520,6,
-0x2a7540,6,
-0x2a7560,3,
-0x2a7570,3,
-0x2a8000,6,
-0x2a8020,3,
-0x2a8030,1,
-0x2a8038,4,
-0x2a8050,1,
-0x2a8400,1,
-0x2a8428,1,
-0x2a8450,1,
-0x2a8478,1,
-0x2a84a0,6,
-0x2a85ac,1,
-0x2a85d8,4,
-0x2a8600,6,
-0x2a8620,6,
-0x2a8640,3,
-0x2a8800,6,
-0x2a8820,3,
-0x2a8830,4,
-0x2a8918,2,
-0x2a8924,1,
-0x2a8934,3,
-0x2a8958,2,
-0x2a8964,1,
-0x2a8974,3,
-0x2a8998,2,
-0x2a89a4,1,
-0x2a89b4,3,
-0x2a89d8,2,
-0x2a89e4,1,
-0x2a89f4,3,
-0x2a9020,4,
-0x2a9040,11,
-0x2a9074,2,
-0x2a9080,4,
-0x2a90b0,22,
-0x2a9110,2,
-0x2a9120,22,
-0x2a9180,2,
-0x2a91a0,6,
-0x2a91c0,9,
-0x2a9200,42,
-0x2a92c0,1,
-0x2a92c8,13,
-0x2a9300,25,
-0x2a936c,4,
-0x2a9380,2,
-0x2a93a0,1,
-0x2a93c0,11,
-0x2a9404,3,
-0x2a9420,11,
-0x2a9480,6,
-0x2a9500,1,
-0x2a9520,6,
-0x2a9540,3,
-0x2a9550,7,
-0x2a9570,18,
-0x2a95bc,5,
-0x2a9800,480,
-0x2aa020,4,
-0x2aa040,11,
-0x2aa074,2,
-0x2aa080,4,
-0x2aa0b0,22,
-0x2aa110,2,
-0x2aa120,22,
-0x2aa180,2,
-0x2aa1a0,6,
-0x2aa1c0,9,
-0x2aa200,42,
-0x2aa2c0,1,
-0x2aa2c8,13,
-0x2aa300,25,
-0x2aa36c,4,
-0x2aa380,2,
-0x2aa3a0,1,
-0x2aa3c0,11,
-0x2aa404,3,
-0x2aa420,11,
-0x2aa480,6,
-0x2aa500,1,
-0x2aa520,6,
-0x2aa540,3,
-0x2aa550,7,
-0x2aa570,18,
-0x2aa5bc,5,
-0x2aa800,480,
-0x2ab020,4,
-0x2ab040,11,
-0x2ab074,2,
-0x2ab080,4,
-0x2ab0b0,22,
-0x2ab110,2,
-0x2ab120,22,
-0x2ab180,2,
-0x2ab1a0,6,
-0x2ab1c0,9,
-0x2ab200,42,
-0x2ab2c0,1,
-0x2ab2c8,13,
-0x2ab300,25,
-0x2ab36c,4,
-0x2ab380,2,
-0x2ab3a0,1,
-0x2ab3c0,11,
-0x2ab404,3,
-0x2ab420,11,
-0x2ab480,6,
-0x2ab500,1,
-0x2ab520,6,
-0x2ab540,3,
-0x2ab550,7,
-0x2ab570,18,
-0x2ab5bc,5,
-0x2ab800,480,
-0x2ac020,4,
-0x2ac040,11,
-0x2ac074,2,
-0x2ac080,4,
-0x2ac0b0,22,
-0x2ac110,2,
-0x2ac120,22,
-0x2ac180,2,
-0x2ac1a0,6,
-0x2ac1c0,9,
-0x2ac200,42,
-0x2ac2c0,1,
-0x2ac2c8,13,
-0x2ac300,25,
-0x2ac36c,4,
-0x2ac380,2,
-0x2ac3a0,1,
-0x2ac3c0,11,
-0x2ac404,3,
-0x2ac420,11,
-0x2ac480,6,
-0x2ac500,1,
-0x2ac520,6,
-0x2ac540,3,
-0x2ac550,7,
-0x2ac570,18,
-0x2ac5bc,5,
-0x2ac800,480,
-0x2af800,5,
-0x2af818,1,
-0x2af854,6,
-0x2af880,4,
-0x2af8a4,1,
-0x2af8ac,2,
-0x2af900,5,
-0x2af918,1,
-0x2af954,6,
-0x2af980,4,
-0x2af9a4,1,
-0x2af9ac,2,
-0x2afa00,5,
-0x2afa18,1,
-0x2afa54,6,
-0x2afa80,4,
-0x2afaa4,1,
-0x2afaac,2,
-0x2afb00,5,
-0x2afb18,1,
-0x2afb54,6,
-0x2afb80,4,
-0x2afba4,1,
-0x2afbac,2,
-0x2b4000,3,
-0x2b4018,10,
-0x2b4100,58,
-0x2b41f0,1,
-0x2b4400,3,
-0x2b4418,10,
-0x2b4500,58,
-0x2b45f0,1,
-0x2b4800,3,
-0x2b4810,3,
-0x2b4820,6,
-0x2b4880,9,
-0x2b48c0,9,
-0x2b4900,8,
-0x2b4938,2,
-0x2b4944,1,
-0x2b4954,3,
-0x2b4980,8,
-0x2b49b8,2,
-0x2b49c4,1,
-0x2b49d4,3,
-0x2b5000,3,
-0x2b5018,10,
-0x2b5100,58,
-0x2b51f0,1,
-0x2b5400,3,
-0x2b5418,10,
-0x2b5500,58,
-0x2b55f0,1,
-0x2b5800,3,
-0x2b5810,3,
-0x2b5820,6,
-0x2b5880,9,
-0x2b58c0,9,
-0x2b5900,8,
-0x2b5938,2,
-0x2b5944,1,
-0x2b5954,3,
-0x2b5980,8,
-0x2b59b8,2,
-0x2b59c4,1,
-0x2b59d4,3,
-0x2b6004,7,
-0x2b6024,1,
-0x2b6030,4,
-0x2b6300,5,
-0x2b631c,2,
-0x2b6600,10,
-0x2b6630,1,
-0x2b6640,10,
-0x2b6670,1,
-0x2b6700,10,
-0x2b6730,1,
-0x2b6740,10,
-0x2b6770,1,
-0x2b6800,19,
-0x2b6890,15,
-0x2b6910,15,
-0x2b6a00,10,
-0x2b6ab8,4,
-0x2b6b00,3,
-0x2b6b10,1,
-0x2b6e00,6,
-0x2b6f00,5,
-0x2b7000,65,
-0x2b7800,6,
-0x2b7820,6,
-0x2b7840,6,
-0x2b7860,6,
-0x2b7880,6,
-0x2b78a0,6,
-0x2b78c0,6,
-0x2b78e0,3,
-0x2b7900,6,
-0x2b7920,6,
-0x2b7940,6,
-0x2b7960,6,
-0x2b7980,6,
-0x2b79a0,6,
-0x2b79c0,6,
-0x2b79e0,3,
-0x2b7a00,6,
-0x2b7a20,6,
-0x2b7a40,3,
-0x2b7a80,7,
-0x2b7aa0,7,
-0x2b7ac0,9,
-0x2b7b00,9,
-0x2b7b40,10,
-0x2b7b80,10,
-0x2b7bc0,10,
-0x2b7c00,10,
-0x2b7c40,10,
-0x2b7c80,10,
-0x2b7cc0,3,
-0x2b7e40,7,
-0x2b7e60,7,
-0x2b7e80,7,
-0x2b7ea0,7,
-0x2b7ec0,7,
-0x2b7ee0,7,
-0x2b7f00,7,
-0x2b7f20,7,
-0x2b7f40,7,
-0x2b7f60,4,
-0x2b7f78,13,
-0x2b8000,2,
-0x2b800c,3,
-0x2b8028,2,
-0x2b8038,2,
-0x2b8080,29,
-0x2b80f8,1,
-0x2b8100,13,
-0x2b8140,13,
-0x2b8500,6,
-0x2b8520,6,
-0x2b8540,3,
-0x2b8580,10,
-0x2b85c0,15,
-0x2b8600,2,
-0x2b8618,5,
-0x2b8630,1,
-0x2b8800,2,
-0x2b880c,3,
-0x2b8828,2,
-0x2b8838,2,
-0x2b8880,29,
-0x2b88f8,1,
-0x2b8900,13,
-0x2b8940,13,
-0x2b8d00,6,
-0x2b8d20,6,
-0x2b8d40,3,
-0x2b8d80,10,
-0x2b8dc0,15,
-0x2b8e00,2,
-0x2b8e18,5,
-0x2b8e30,1,
-0x2b9800,3,
-0x2b9828,3,
-0x2b9850,3,
-0x2b9878,3,
-0x2b98a0,9,
-0x2b99ac,1,
-0x2b99d8,4,
-0x2b9a00,6,
-0x2b9a20,6,
-0x2b9a40,6,
-0x2b9a60,6,
-0x2b9a80,6,
-0x2b9aa0,6,
-0x2b9ac0,3,
-0x2b9c00,6,
-0x2b9c20,3,
-0x2b9c40,2,
-0x2b9c60,1,
-0x2c0000,4,
-0x2c0014,1,
-0x2c0020,3,
-0x2c0030,3,
-0x2c0040,8,
-0x2c007c,2,
-0x2c00a0,6,
-0x2c00c0,6,
-0x2c00e0,6,
-0x2c0100,4,
-0x2c0114,1,
-0x2c0120,3,
-0x2c0130,3,
-0x2c0140,8,
-0x2c017c,2,
-0x2c01a0,6,
-0x2c01c0,6,
-0x2c01e0,6,
-0x2c0200,4,
-0x2c0214,1,
-0x2c0220,3,
-0x2c0230,3,
-0x2c0240,8,
-0x2c027c,2,
-0x2c02a0,6,
-0x2c02c0,6,
-0x2c02e0,6,
-0x2c0300,4,
-0x2c0314,1,
-0x2c0320,3,
-0x2c0330,3,
-0x2c0340,8,
-0x2c037c,2,
-0x2c03a0,6,
-0x2c03c0,6,
-0x2c03e0,6,
-0x2c0400,6,
-0x2c0440,6,
-0x2c0480,3,
-0x2c04c0,3,
-0x2c0500,2,
-0x2c050c,4,
-0x2c0520,2,
-0x2c052c,4,
-0x2c0540,2,
-0x2c0c00,13,
-0x2c0c40,12,
-0x2c0c80,13,
-0x2c0cc0,12,
-0x2c0d00,14,
-0x2c0d40,6,
-0x2c0d80,14,
-0x2c0dc0,6,
-0x2c0e00,11,
-0x2c0e40,6,
-0x2c0e60,6,
-0x2c0e80,6,
-0x2c0ea0,6,
-0x2c1000,2,
-0x2c1014,4,
-0x2c1040,3,
-0x2c1050,3,
-0x2c1080,43,
-0x2c1140,11,
-0x2c1180,1,
-0x2c119c,15,
-0x2c1200,12,
-0x2c1300,1,
-0x2c1308,6,
-0x2c1324,10,
-0x2c1380,1,
-0x2c1388,6,
-0x2c13a4,10,
-0x2c1400,7,
-0x2c1420,7,
-0x2c1500,12,
-0x2c1540,12,
-0x2c1580,4,
-0x2c1800,14,
-0x2c183c,9,
-0x2c1864,6,
-0x2c1880,2,
-0x2c1890,4,
-0x2c1900,14,
-0x2c193c,9,
-0x2c1964,6,
-0x2c1980,2,
-0x2c1990,4,
-0x2c1a00,16,
-0x2c1a50,4,
-0x2c1a80,16,
-0x2c1ad0,4,
-0x2c1b00,6,
-0x2c1b20,6,
-0x2c1b40,3,
-0x2c1b80,6,
-0x2c1ba0,6,
-0x2c1bc0,3,
-0x2c1c00,6,
-0x2c1c20,6,
-0x2c1c40,3,
-0x2c1c80,6,
-0x2c1ca0,6,
-0x2c1cc0,3,
-0x2c1d10,2,
-0x2c1d1c,1,
-0x2c1d50,2,
-0x2c1d5c,1,
-0x2c1d80,1,
-0x2c1da0,1,
-0x2c1da8,4,
-0x2c1dc0,1,
-0x2c1de0,1,
-0x2c1de8,4,
-0x2c1e00,13,
-0x2c1e40,6,
-0x2c1e60,6,
-0x2c1e80,6,
-0x2c1ea0,6,
-0x2c1ec0,7,
-0x2c1ee0,7,
-0x2c1f00,12,
-0x2c1f34,2,
-0x2c1f40,3,
-0x2c1f50,8,
-0x2c2000,4,
-0x2c2014,1,
-0x2c2020,3,
-0x2c2030,3,
-0x2c2040,8,
-0x2c207c,2,
-0x2c20a0,6,
-0x2c20c0,6,
-0x2c20e0,6,
-0x2c2100,4,
-0x2c2114,1,
-0x2c2120,3,
-0x2c2130,3,
-0x2c2140,8,
-0x2c217c,2,
-0x2c21a0,6,
-0x2c21c0,6,
-0x2c21e0,6,
-0x2c2200,4,
-0x2c2214,1,
-0x2c2220,3,
-0x2c2230,3,
-0x2c2240,8,
-0x2c227c,2,
-0x2c22a0,6,
-0x2c22c0,6,
-0x2c22e0,6,
-0x2c2300,4,
-0x2c2314,1,
-0x2c2320,3,
-0x2c2330,3,
-0x2c2340,8,
-0x2c237c,2,
-0x2c23a0,6,
-0x2c23c0,6,
-0x2c23e0,6,
-0x2c2400,6,
-0x2c2440,6,
-0x2c2480,3,
-0x2c24c0,3,
-0x2c2500,2,
-0x2c250c,4,
-0x2c2520,2,
-0x2c252c,4,
-0x2c2540,2,
-0x2c2c00,13,
-0x2c2c40,12,
-0x2c2c80,13,
-0x2c2cc0,12,
-0x2c2d00,14,
-0x2c2d40,6,
-0x2c2d80,14,
-0x2c2dc0,6,
-0x2c2e00,11,
-0x2c2e40,6,
-0x2c2e60,6,
-0x2c2e80,6,
-0x2c2ea0,6,
-0x2c3000,2,
-0x2c3014,4,
-0x2c3040,3,
-0x2c3050,3,
-0x2c3080,43,
-0x2c3140,11,
-0x2c3180,1,
-0x2c319c,15,
-0x2c3200,12,
-0x2c3300,1,
-0x2c3308,6,
-0x2c3324,10,
-0x2c3380,1,
-0x2c3388,6,
-0x2c33a4,10,
-0x2c3400,7,
-0x2c3420,7,
-0x2c3500,12,
-0x2c3540,12,
-0x2c3580,4,
-0x2c3800,14,
-0x2c383c,9,
-0x2c3864,6,
-0x2c3880,2,
-0x2c3890,4,
-0x2c3900,14,
-0x2c393c,9,
-0x2c3964,6,
-0x2c3980,2,
-0x2c3990,4,
-0x2c3a00,16,
-0x2c3a50,4,
-0x2c3a80,16,
-0x2c3ad0,4,
-0x2c3b00,6,
-0x2c3b20,6,
-0x2c3b40,3,
-0x2c3b80,6,
-0x2c3ba0,6,
-0x2c3bc0,3,
-0x2c3c00,6,
-0x2c3c20,6,
-0x2c3c40,3,
-0x2c3c80,6,
-0x2c3ca0,6,
-0x2c3cc0,3,
-0x2c3d10,2,
-0x2c3d1c,1,
-0x2c3d50,2,
-0x2c3d5c,1,
-0x2c3d80,1,
-0x2c3da0,1,
-0x2c3da8,4,
-0x2c3dc0,1,
-0x2c3de0,1,
-0x2c3de8,4,
-0x2c3e00,13,
-0x2c3e40,6,
-0x2c3e60,6,
-0x2c3e80,6,
-0x2c3ea0,6,
-0x2c3ec0,7,
-0x2c3ee0,7,
-0x2c3f00,12,
-0x2c3f34,2,
-0x2c3f40,3,
-0x2c3f50,8,
-0x2c4000,29,
-0x2c4078,4,
-0x2c4090,2,
-0x2c40a0,7,
-0x2c40c0,11,
-0x2c4100,14,
-0x2c4140,14,
-0x2c4180,61,
-0x2c4278,4,
-0x2c4290,2,
-0x2c42a0,7,
-0x2c42c0,11,
-0x2c4300,14,
-0x2c4340,14,
-0x2c4380,61,
-0x2c4478,4,
-0x2c4490,2,
-0x2c44a0,7,
-0x2c44c0,11,
-0x2c4500,14,
-0x2c4540,14,
-0x2c4580,61,
-0x2c4678,4,
-0x2c4690,2,
-0x2c46a0,7,
-0x2c46c0,11,
-0x2c4700,14,
-0x2c4740,14,
-0x2c4780,69,
-0x2c4c00,6,
-0x2c4c40,14,
-0x2c4c80,9,
-0x2c4d00,9,
-0x2c4d2c,1,
-0x2c4d40,3,
-0x2c4d60,1,
-0x2c4d80,3,
-0x2c4e00,2,
-0x2c4e0c,1,
-0x2c4e14,5,
-0x2c4e2c,1,
-0x2c4e34,5,
-0x2c4e4c,1,
-0x2c4e54,5,
-0x2c4e6c,1,
-0x2c4e74,5,
-0x2c4e8c,1,
-0x2c4e94,5,
-0x2c4eac,1,
-0x2c4eb4,3,
-0x2c5000,29,
-0x2c5078,4,
-0x2c5090,2,
-0x2c50a0,7,
-0x2c50c0,11,
-0x2c5100,14,
-0x2c5140,14,
-0x2c5180,61,
-0x2c5278,4,
-0x2c5290,2,
-0x2c52a0,7,
-0x2c52c0,11,
-0x2c5300,14,
-0x2c5340,14,
-0x2c5380,61,
-0x2c5478,4,
-0x2c5490,2,
-0x2c54a0,7,
-0x2c54c0,11,
-0x2c5500,14,
-0x2c5540,14,
-0x2c5580,61,
-0x2c5678,4,
-0x2c5690,2,
-0x2c56a0,7,
-0x2c56c0,11,
-0x2c5700,14,
-0x2c5740,14,
-0x2c5780,69,
-0x2c5c00,6,
-0x2c5c40,14,
-0x2c5c80,9,
-0x2c5d00,9,
-0x2c5d2c,1,
-0x2c5d40,3,
-0x2c5d60,1,
-0x2c5d80,3,
-0x2c5e00,2,
-0x2c5e0c,1,
-0x2c5e14,5,
-0x2c5e2c,1,
-0x2c5e34,5,
-0x2c5e4c,1,
-0x2c5e54,5,
-0x2c5e6c,1,
-0x2c5e74,5,
-0x2c5e8c,1,
-0x2c5e94,5,
-0x2c5eac,1,
-0x2c5eb4,3,
-0x2c6000,14,
-0x2c6040,6,
-0x2c6060,6,
-0x2c6080,6,
-0x2c60a0,3,
-0x2c6100,9,
-0x2c6204,1,
-0x2c620c,6,
-0x2c6240,13,
-0x2c6280,16,
-0x2c6800,19,
-0x2c6850,10,
-0x2c6880,19,
-0x2c68d0,10,
-0x2c6900,19,
-0x2c6950,10,
-0x2c6980,19,
-0x2c69d0,10,
-0x2c6a00,19,
-0x2c6a50,10,
-0x2c6a80,19,
-0x2c6ad0,10,
-0x2c6b00,19,
-0x2c6b50,10,
-0x2c6b80,19,
-0x2c6bd0,10,
-0x2c6c00,19,
-0x2c6c60,6,
-0x2c6c84,1,
-0x2c6c94,8,
-0x2c6cb8,14,
-0x2c7000,1,
-0x2c7028,1,
-0x2c7050,1,
-0x2c7078,1,
-0x2c70a0,4,
-0x2c71ac,1,
-0x2c71d8,4,
-0x2c7200,6,
-0x2c7220,6,
-0x2c7240,3,
-0x2c7400,1,
-0x2c7408,3,
-0x2c7438,1,
-0x2c7444,1,
-0x2c7450,6,
-0x2c7500,7,
-0x2c7520,6,
-0x2c7540,6,
-0x2c7560,3,
-0x2c7570,3,
-0x2c8000,6,
-0x2c8020,3,
-0x2c8030,1,
-0x2c8038,4,
-0x2c8050,1,
-0x2c8400,1,
-0x2c8428,1,
-0x2c8450,1,
-0x2c8478,1,
-0x2c84a0,6,
-0x2c85ac,1,
-0x2c85d8,4,
-0x2c8600,6,
-0x2c8620,6,
-0x2c8640,3,
-0x2c8800,6,
-0x2c8820,3,
-0x2c8830,4,
-0x2c8918,2,
-0x2c8924,1,
-0x2c8934,3,
-0x2c8958,2,
-0x2c8964,1,
-0x2c8974,3,
-0x2c8998,2,
-0x2c89a4,1,
-0x2c89b4,3,
-0x2c89d8,2,
-0x2c89e4,1,
-0x2c89f4,3,
-0x2c9020,4,
-0x2c9040,11,
-0x2c9074,2,
-0x2c9080,4,
-0x2c90b0,22,
-0x2c9110,2,
-0x2c9120,22,
-0x2c9180,2,
-0x2c91a0,6,
-0x2c91c0,9,
-0x2c9200,42,
-0x2c92c0,1,
-0x2c92c8,13,
-0x2c9300,25,
-0x2c936c,4,
-0x2c9380,2,
-0x2c93a0,1,
-0x2c93c0,11,
-0x2c9404,3,
-0x2c9420,11,
-0x2c9480,6,
-0x2c9500,1,
-0x2c9520,6,
-0x2c9540,3,
-0x2c9550,7,
-0x2c9570,18,
-0x2c95bc,5,
-0x2c9800,480,
-0x2ca020,4,
-0x2ca040,11,
-0x2ca074,2,
-0x2ca080,4,
-0x2ca0b0,22,
-0x2ca110,2,
-0x2ca120,22,
-0x2ca180,2,
-0x2ca1a0,6,
-0x2ca1c0,9,
-0x2ca200,42,
-0x2ca2c0,1,
-0x2ca2c8,13,
-0x2ca300,25,
-0x2ca36c,4,
-0x2ca380,2,
-0x2ca3a0,1,
-0x2ca3c0,11,
-0x2ca404,3,
-0x2ca420,11,
-0x2ca480,6,
-0x2ca500,1,
-0x2ca520,6,
-0x2ca540,3,
-0x2ca550,7,
-0x2ca570,18,
-0x2ca5bc,5,
-0x2ca800,480,
-0x2cb020,4,
-0x2cb040,11,
-0x2cb074,2,
-0x2cb080,4,
-0x2cb0b0,22,
-0x2cb110,2,
-0x2cb120,22,
-0x2cb180,2,
-0x2cb1a0,6,
-0x2cb1c0,9,
-0x2cb200,42,
-0x2cb2c0,1,
-0x2cb2c8,13,
-0x2cb300,25,
-0x2cb36c,4,
-0x2cb380,2,
-0x2cb3a0,1,
-0x2cb3c0,11,
-0x2cb404,3,
-0x2cb420,11,
-0x2cb480,6,
-0x2cb500,1,
-0x2cb520,6,
-0x2cb540,3,
-0x2cb550,7,
-0x2cb570,18,
-0x2cb5bc,5,
-0x2cb800,480,
-0x2cc020,4,
-0x2cc040,11,
-0x2cc074,2,
-0x2cc080,4,
-0x2cc0b0,22,
-0x2cc110,2,
-0x2cc120,22,
-0x2cc180,2,
-0x2cc1a0,6,
-0x2cc1c0,9,
-0x2cc200,42,
-0x2cc2c0,1,
-0x2cc2c8,13,
-0x2cc300,25,
-0x2cc36c,4,
-0x2cc380,2,
-0x2cc3a0,1,
-0x2cc3c0,11,
-0x2cc404,3,
-0x2cc420,11,
-0x2cc480,6,
-0x2cc500,1,
-0x2cc520,6,
-0x2cc540,3,
-0x2cc550,7,
-0x2cc570,18,
-0x2cc5bc,5,
-0x2cc800,480,
-0x2cf800,5,
-0x2cf818,1,
-0x2cf854,6,
-0x2cf880,4,
-0x2cf8a4,1,
-0x2cf8ac,2,
-0x2cf900,5,
-0x2cf918,1,
-0x2cf954,6,
-0x2cf980,4,
-0x2cf9a4,1,
-0x2cf9ac,2,
-0x2cfa00,5,
-0x2cfa18,1,
-0x2cfa54,6,
-0x2cfa80,4,
-0x2cfaa4,1,
-0x2cfaac,2,
-0x2cfb00,5,
-0x2cfb18,1,
-0x2cfb54,6,
-0x2cfb80,4,
-0x2cfba4,1,
-0x2cfbac,2,
-0x2d4000,3,
-0x2d4018,10,
-0x2d4100,58,
-0x2d41f0,1,
-0x2d4400,3,
-0x2d4418,10,
-0x2d4500,58,
-0x2d45f0,1,
-0x2d4800,3,
-0x2d4810,3,
-0x2d4820,6,
-0x2d4880,9,
-0x2d48c0,9,
-0x2d4900,8,
-0x2d4938,2,
-0x2d4944,1,
-0x2d4954,3,
-0x2d4980,8,
-0x2d49b8,2,
-0x2d49c4,1,
-0x2d49d4,3,
-0x2d5000,3,
-0x2d5018,10,
-0x2d5100,58,
-0x2d51f0,1,
-0x2d5400,3,
-0x2d5418,10,
-0x2d5500,58,
-0x2d55f0,1,
-0x2d5800,3,
-0x2d5810,3,
-0x2d5820,6,
-0x2d5880,9,
-0x2d58c0,9,
-0x2d5900,8,
-0x2d5938,2,
-0x2d5944,1,
-0x2d5954,3,
-0x2d5980,8,
-0x2d59b8,2,
-0x2d59c4,1,
-0x2d59d4,3,
-0x2d6004,7,
-0x2d6024,1,
-0x2d6030,4,
-0x2d6300,5,
-0x2d631c,2,
-0x2d6600,10,
-0x2d6630,1,
-0x2d6640,10,
-0x2d6670,1,
-0x2d6700,10,
-0x2d6730,1,
-0x2d6740,10,
-0x2d6770,1,
-0x2d6800,19,
-0x2d6890,15,
-0x2d6910,15,
-0x2d6a00,10,
-0x2d6ab8,4,
-0x2d6b00,3,
-0x2d6b10,1,
-0x2d6e00,6,
-0x2d6f00,5,
-0x2d7000,65,
-0x2d7800,6,
-0x2d7820,6,
-0x2d7840,6,
-0x2d7860,6,
-0x2d7880,6,
-0x2d78a0,6,
-0x2d78c0,6,
-0x2d78e0,3,
-0x2d7900,6,
-0x2d7920,6,
-0x2d7940,6,
-0x2d7960,6,
-0x2d7980,6,
-0x2d79a0,6,
-0x2d79c0,6,
-0x2d79e0,3,
-0x2d7a00,6,
-0x2d7a20,6,
-0x2d7a40,3,
-0x2d7a80,7,
-0x2d7aa0,7,
-0x2d7ac0,9,
-0x2d7b00,9,
-0x2d7b40,10,
-0x2d7b80,10,
-0x2d7bc0,10,
-0x2d7c00,10,
-0x2d7c40,10,
-0x2d7c80,10,
-0x2d7cc0,3,
-0x2d7e40,7,
-0x2d7e60,7,
-0x2d7e80,7,
-0x2d7ea0,7,
-0x2d7ec0,7,
-0x2d7ee0,7,
-0x2d7f00,7,
-0x2d7f20,7,
-0x2d7f40,7,
-0x2d7f60,4,
-0x2d7f78,13,
-0x2d8000,2,
-0x2d800c,3,
-0x2d8028,2,
-0x2d8038,2,
-0x2d8080,29,
-0x2d80f8,1,
-0x2d8100,13,
-0x2d8140,13,
-0x2d8500,6,
-0x2d8520,6,
-0x2d8540,3,
-0x2d8580,10,
-0x2d85c0,15,
-0x2d8600,2,
-0x2d8618,5,
-0x2d8630,1,
-0x2d8800,2,
-0x2d880c,3,
-0x2d8828,2,
-0x2d8838,2,
-0x2d8880,29,
-0x2d88f8,1,
-0x2d8900,13,
-0x2d8940,13,
-0x2d8d00,6,
-0x2d8d20,6,
-0x2d8d40,3,
-0x2d8d80,10,
-0x2d8dc0,15,
-0x2d8e00,2,
-0x2d8e18,5,
-0x2d8e30,1,
-0x2d9800,3,
-0x2d9828,3,
-0x2d9850,3,
-0x2d9878,3,
-0x2d98a0,9,
-0x2d99ac,1,
-0x2d99d8,4,
-0x2d9a00,6,
-0x2d9a20,6,
-0x2d9a40,6,
-0x2d9a60,6,
-0x2d9a80,6,
-0x2d9aa0,6,
-0x2d9ac0,3,
-0x2d9c00,6,
-0x2d9c20,3,
-0x2d9c40,2,
-0x2d9c60,1,
-0x2e0000,4,
-0x2e0014,1,
-0x2e0020,3,
-0x2e0030,3,
-0x2e0040,8,
-0x2e007c,2,
-0x2e00a0,6,
-0x2e00c0,6,
-0x2e00e0,6,
-0x2e0100,4,
-0x2e0114,1,
-0x2e0120,3,
-0x2e0130,3,
-0x2e0140,8,
-0x2e017c,2,
-0x2e01a0,6,
-0x2e01c0,6,
-0x2e01e0,6,
-0x2e0200,4,
-0x2e0214,1,
-0x2e0220,3,
-0x2e0230,3,
-0x2e0240,8,
-0x2e027c,2,
-0x2e02a0,6,
-0x2e02c0,6,
-0x2e02e0,6,
-0x2e0300,4,
-0x2e0314,1,
-0x2e0320,3,
-0x2e0330,3,
-0x2e0340,8,
-0x2e037c,2,
-0x2e03a0,6,
-0x2e03c0,6,
-0x2e03e0,6,
-0x2e0400,6,
-0x2e0440,6,
-0x2e0480,3,
-0x2e04c0,3,
-0x2e0500,2,
-0x2e050c,4,
-0x2e0520,2,
-0x2e052c,4,
-0x2e0540,2,
-0x2e0c00,13,
-0x2e0c40,12,
-0x2e0c80,13,
-0x2e0cc0,12,
-0x2e0d00,14,
-0x2e0d40,6,
-0x2e0d80,14,
-0x2e0dc0,6,
-0x2e0e00,11,
-0x2e0e40,6,
-0x2e0e60,6,
-0x2e0e80,6,
-0x2e0ea0,6,
-0x2e1000,2,
-0x2e1014,4,
-0x2e1040,3,
-0x2e1050,3,
-0x2e1080,43,
-0x2e1140,11,
-0x2e1180,1,
-0x2e119c,15,
-0x2e1200,12,
-0x2e1300,1,
-0x2e1308,6,
-0x2e1324,10,
-0x2e1380,1,
-0x2e1388,6,
-0x2e13a4,10,
-0x2e1400,7,
-0x2e1420,7,
-0x2e1500,12,
-0x2e1540,12,
-0x2e1580,4,
-0x2e1800,14,
-0x2e183c,9,
-0x2e1864,6,
-0x2e1880,2,
-0x2e1890,4,
-0x2e1900,14,
-0x2e193c,9,
-0x2e1964,6,
-0x2e1980,2,
-0x2e1990,4,
-0x2e1a00,16,
-0x2e1a50,4,
-0x2e1a80,16,
-0x2e1ad0,4,
-0x2e1b00,6,
-0x2e1b20,6,
-0x2e1b40,3,
-0x2e1b80,6,
-0x2e1ba0,6,
-0x2e1bc0,3,
-0x2e1c00,6,
-0x2e1c20,6,
-0x2e1c40,3,
-0x2e1c80,6,
-0x2e1ca0,6,
-0x2e1cc0,3,
-0x2e1d10,2,
-0x2e1d1c,1,
-0x2e1d50,2,
-0x2e1d5c,1,
-0x2e1d80,1,
-0x2e1da0,1,
-0x2e1da8,4,
-0x2e1dc0,1,
-0x2e1de0,1,
-0x2e1de8,4,
-0x2e1e00,13,
-0x2e1e40,6,
-0x2e1e60,6,
-0x2e1e80,6,
-0x2e1ea0,6,
-0x2e1ec0,7,
-0x2e1ee0,7,
-0x2e1f00,12,
-0x2e1f34,2,
-0x2e1f40,3,
-0x2e1f50,8,
-0x2e2000,4,
-0x2e2014,1,
-0x2e2020,3,
-0x2e2030,3,
-0x2e2040,8,
-0x2e207c,2,
-0x2e20a0,6,
-0x2e20c0,6,
-0x2e20e0,6,
-0x2e2100,4,
-0x2e2114,1,
-0x2e2120,3,
-0x2e2130,3,
-0x2e2140,8,
-0x2e217c,2,
-0x2e21a0,6,
-0x2e21c0,6,
-0x2e21e0,6,
-0x2e2200,4,
-0x2e2214,1,
-0x2e2220,3,
-0x2e2230,3,
-0x2e2240,8,
-0x2e227c,2,
-0x2e22a0,6,
-0x2e22c0,6,
-0x2e22e0,6,
-0x2e2300,4,
-0x2e2314,1,
-0x2e2320,3,
-0x2e2330,3,
-0x2e2340,8,
-0x2e237c,2,
-0x2e23a0,6,
-0x2e23c0,6,
-0x2e23e0,6,
-0x2e2400,6,
-0x2e2440,6,
-0x2e2480,3,
-0x2e24c0,3,
-0x2e2500,2,
-0x2e250c,4,
-0x2e2520,2,
-0x2e252c,4,
-0x2e2540,2,
-0x2e2c00,13,
-0x2e2c40,12,
-0x2e2c80,13,
-0x2e2cc0,12,
-0x2e2d00,14,
-0x2e2d40,6,
-0x2e2d80,14,
-0x2e2dc0,6,
-0x2e2e00,11,
-0x2e2e40,6,
-0x2e2e60,6,
-0x2e2e80,6,
-0x2e2ea0,6,
-0x2e3000,2,
-0x2e3014,4,
-0x2e3040,3,
-0x2e3050,3,
-0x2e3080,43,
-0x2e3140,11,
-0x2e3180,1,
-0x2e319c,15,
-0x2e3200,12,
-0x2e3300,1,
-0x2e3308,6,
-0x2e3324,10,
-0x2e3380,1,
-0x2e3388,6,
-0x2e33a4,10,
-0x2e3400,7,
-0x2e3420,7,
-0x2e3500,12,
-0x2e3540,12,
-0x2e3580,4,
-0x2e3800,14,
-0x2e383c,9,
-0x2e3864,6,
-0x2e3880,2,
-0x2e3890,4,
-0x2e3900,14,
-0x2e393c,9,
-0x2e3964,6,
-0x2e3980,2,
-0x2e3990,4,
-0x2e3a00,16,
-0x2e3a50,4,
-0x2e3a80,16,
-0x2e3ad0,4,
-0x2e3b00,6,
-0x2e3b20,6,
-0x2e3b40,3,
-0x2e3b80,6,
-0x2e3ba0,6,
-0x2e3bc0,3,
-0x2e3c00,6,
-0x2e3c20,6,
-0x2e3c40,3,
-0x2e3c80,6,
-0x2e3ca0,6,
-0x2e3cc0,3,
-0x2e3d10,2,
-0x2e3d1c,1,
-0x2e3d50,2,
-0x2e3d5c,1,
-0x2e3d80,1,
-0x2e3da0,1,
-0x2e3da8,4,
-0x2e3dc0,1,
-0x2e3de0,1,
-0x2e3de8,4,
-0x2e3e00,13,
-0x2e3e40,6,
-0x2e3e60,6,
-0x2e3e80,6,
-0x2e3ea0,6,
-0x2e3ec0,7,
-0x2e3ee0,7,
-0x2e3f00,12,
-0x2e3f34,2,
-0x2e3f40,3,
-0x2e3f50,8,
-0x2e4000,29,
-0x2e4078,4,
-0x2e4090,2,
-0x2e40a0,7,
-0x2e40c0,11,
-0x2e4100,14,
-0x2e4140,14,
-0x2e4180,61,
-0x2e4278,4,
-0x2e4290,2,
-0x2e42a0,7,
-0x2e42c0,11,
-0x2e4300,14,
-0x2e4340,14,
-0x2e4380,61,
-0x2e4478,4,
-0x2e4490,2,
-0x2e44a0,7,
-0x2e44c0,11,
-0x2e4500,14,
-0x2e4540,14,
-0x2e4580,61,
-0x2e4678,4,
-0x2e4690,2,
-0x2e46a0,7,
-0x2e46c0,11,
-0x2e4700,14,
-0x2e4740,14,
-0x2e4780,69,
-0x2e4c00,6,
-0x2e4c40,14,
-0x2e4c80,9,
-0x2e4d00,9,
-0x2e4d2c,1,
-0x2e4d40,3,
-0x2e4d60,1,
-0x2e4d80,3,
-0x2e4e00,2,
-0x2e4e0c,1,
-0x2e4e14,5,
-0x2e4e2c,1,
-0x2e4e34,5,
-0x2e4e4c,1,
-0x2e4e54,5,
-0x2e4e6c,1,
-0x2e4e74,5,
-0x2e4e8c,1,
-0x2e4e94,5,
-0x2e4eac,1,
-0x2e4eb4,3,
-0x2e5000,29,
-0x2e5078,4,
-0x2e5090,2,
-0x2e50a0,7,
-0x2e50c0,11,
-0x2e5100,14,
-0x2e5140,14,
-0x2e5180,61,
-0x2e5278,4,
-0x2e5290,2,
-0x2e52a0,7,
-0x2e52c0,11,
-0x2e5300,14,
-0x2e5340,14,
-0x2e5380,61,
-0x2e5478,4,
-0x2e5490,2,
-0x2e54a0,7,
-0x2e54c0,11,
-0x2e5500,14,
-0x2e5540,14,
-0x2e5580,61,
-0x2e5678,4,
-0x2e5690,2,
-0x2e56a0,7,
-0x2e56c0,11,
-0x2e5700,14,
-0x2e5740,14,
-0x2e5780,69,
-0x2e5c00,6,
-0x2e5c40,14,
-0x2e5c80,9,
-0x2e5d00,9,
-0x2e5d2c,1,
-0x2e5d40,3,
-0x2e5d60,1,
-0x2e5d80,3,
-0x2e5e00,2,
-0x2e5e0c,1,
-0x2e5e14,5,
-0x2e5e2c,1,
-0x2e5e34,5,
-0x2e5e4c,1,
-0x2e5e54,5,
-0x2e5e6c,1,
-0x2e5e74,5,
-0x2e5e8c,1,
-0x2e5e94,5,
-0x2e5eac,1,
-0x2e5eb4,3,
-0x2e6000,14,
-0x2e6040,6,
-0x2e6060,6,
-0x2e6080,6,
-0x2e60a0,3,
-0x2e6100,9,
-0x2e6204,1,
-0x2e620c,6,
-0x2e6240,13,
-0x2e6280,16,
-0x2e6800,19,
-0x2e6850,10,
-0x2e6880,19,
-0x2e68d0,10,
-0x2e6900,19,
-0x2e6950,10,
-0x2e6980,19,
-0x2e69d0,10,
-0x2e6a00,19,
-0x2e6a50,10,
-0x2e6a80,19,
-0x2e6ad0,10,
-0x2e6b00,19,
-0x2e6b50,10,
-0x2e6b80,19,
-0x2e6bd0,10,
-0x2e6c00,19,
-0x2e6c60,6,
-0x2e6c84,1,
-0x2e6c94,8,
-0x2e6cb8,14,
-0x2e7000,1,
-0x2e7028,1,
-0x2e7050,1,
-0x2e7078,1,
-0x2e70a0,4,
-0x2e71ac,1,
-0x2e71d8,4,
-0x2e7200,6,
-0x2e7220,6,
-0x2e7240,3,
-0x2e7400,1,
-0x2e7408,3,
-0x2e7438,1,
-0x2e7444,1,
-0x2e7450,6,
-0x2e7500,7,
-0x2e7520,6,
-0x2e7540,6,
-0x2e7560,3,
-0x2e7570,3,
-0x2e8000,6,
-0x2e8020,3,
-0x2e8030,1,
-0x2e8038,4,
-0x2e8050,1,
-0x2e8400,1,
-0x2e8428,1,
-0x2e8450,1,
-0x2e8478,1,
-0x2e84a0,6,
-0x2e85ac,1,
-0x2e85d8,4,
-0x2e8600,6,
-0x2e8620,6,
-0x2e8640,3,
-0x2e8800,6,
-0x2e8820,3,
-0x2e8830,4,
-0x2e8918,2,
-0x2e8924,1,
-0x2e8934,3,
-0x2e8958,2,
-0x2e8964,1,
-0x2e8974,3,
-0x2e8998,2,
-0x2e89a4,1,
-0x2e89b4,3,
-0x2e89d8,2,
-0x2e89e4,1,
-0x2e89f4,3,
-0x2e9020,4,
-0x2e9040,11,
-0x2e9074,2,
-0x2e9080,4,
-0x2e90b0,22,
-0x2e9110,2,
-0x2e9120,22,
-0x2e9180,2,
-0x2e91a0,6,
-0x2e91c0,9,
-0x2e9200,42,
-0x2e92c0,1,
-0x2e92c8,13,
-0x2e9300,25,
-0x2e936c,4,
-0x2e9380,2,
-0x2e93a0,1,
-0x2e93c0,11,
-0x2e9404,3,
-0x2e9420,11,
-0x2e9480,6,
-0x2e9500,1,
-0x2e9520,6,
-0x2e9540,3,
-0x2e9550,7,
-0x2e9570,18,
-0x2e95bc,5,
-0x2e9800,480,
-0x2ea020,4,
-0x2ea040,11,
-0x2ea074,2,
-0x2ea080,4,
-0x2ea0b0,22,
-0x2ea110,2,
-0x2ea120,22,
-0x2ea180,2,
-0x2ea1a0,6,
-0x2ea1c0,9,
-0x2ea200,42,
-0x2ea2c0,1,
-0x2ea2c8,13,
-0x2ea300,25,
-0x2ea36c,4,
-0x2ea380,2,
-0x2ea3a0,1,
-0x2ea3c0,11,
-0x2ea404,3,
-0x2ea420,11,
-0x2ea480,6,
-0x2ea500,1,
-0x2ea520,6,
-0x2ea540,3,
-0x2ea550,7,
-0x2ea570,18,
-0x2ea5bc,5,
-0x2ea800,480,
-0x2eb020,4,
-0x2eb040,11,
-0x2eb074,2,
-0x2eb080,4,
-0x2eb0b0,22,
-0x2eb110,2,
-0x2eb120,22,
-0x2eb180,2,
-0x2eb1a0,6,
-0x2eb1c0,9,
-0x2eb200,42,
-0x2eb2c0,1,
-0x2eb2c8,13,
-0x2eb300,25,
-0x2eb36c,4,
-0x2eb380,2,
-0x2eb3a0,1,
-0x2eb3c0,11,
-0x2eb404,3,
-0x2eb420,11,
-0x2eb480,6,
-0x2eb500,1,
-0x2eb520,6,
-0x2eb540,3,
-0x2eb550,7,
-0x2eb570,18,
-0x2eb5bc,5,
-0x2eb800,480,
-0x2ec020,4,
-0x2ec040,11,
-0x2ec074,2,
-0x2ec080,4,
-0x2ec0b0,22,
-0x2ec110,2,
-0x2ec120,22,
-0x2ec180,2,
-0x2ec1a0,6,
-0x2ec1c0,9,
-0x2ec200,42,
-0x2ec2c0,1,
-0x2ec2c8,13,
-0x2ec300,25,
-0x2ec36c,4,
-0x2ec380,2,
-0x2ec3a0,1,
-0x2ec3c0,11,
-0x2ec404,3,
-0x2ec420,11,
-0x2ec480,6,
-0x2ec500,1,
-0x2ec520,6,
-0x2ec540,3,
-0x2ec550,7,
-0x2ec570,18,
-0x2ec5bc,5,
-0x2ec800,480,
-0x2ef800,5,
-0x2ef818,1,
-0x2ef854,6,
-0x2ef880,4,
-0x2ef8a4,1,
-0x2ef8ac,2,
-0x2ef900,5,
-0x2ef918,1,
-0x2ef954,6,
-0x2ef980,4,
-0x2ef9a4,1,
-0x2ef9ac,2,
-0x2efa00,5,
-0x2efa18,1,
-0x2efa54,6,
-0x2efa80,4,
-0x2efaa4,1,
-0x2efaac,2,
-0x2efb00,5,
-0x2efb18,1,
-0x2efb54,6,
-0x2efb80,4,
-0x2efba4,1,
-0x2efbac,2,
-0x2f4000,3,
-0x2f4018,10,
-0x2f4100,58,
-0x2f41f0,1,
-0x2f4400,3,
-0x2f4418,10,
-0x2f4500,58,
-0x2f45f0,1,
-0x2f4800,3,
-0x2f4810,3,
-0x2f4820,6,
-0x2f4880,9,
-0x2f48c0,9,
-0x2f4900,8,
-0x2f4938,2,
-0x2f4944,1,
-0x2f4954,3,
-0x2f4980,8,
-0x2f49b8,2,
-0x2f49c4,1,
-0x2f49d4,3,
-0x2f5000,3,
-0x2f5018,10,
-0x2f5100,58,
-0x2f51f0,1,
-0x2f5400,3,
-0x2f5418,10,
-0x2f5500,58,
-0x2f55f0,1,
-0x2f5800,3,
-0x2f5810,3,
-0x2f5820,6,
-0x2f5880,9,
-0x2f58c0,9,
-0x2f5900,8,
-0x2f5938,2,
-0x2f5944,1,
-0x2f5954,3,
-0x2f5980,8,
-0x2f59b8,2,
-0x2f59c4,1,
-0x2f59d4,3,
-0x2f6004,7,
-0x2f6024,1,
-0x2f6030,4,
-0x2f6300,5,
-0x2f631c,2,
-0x2f6600,10,
-0x2f6630,1,
-0x2f6640,10,
-0x2f6670,1,
-0x2f6700,10,
-0x2f6730,1,
-0x2f6740,10,
-0x2f6770,1,
-0x2f6800,19,
-0x2f6890,15,
-0x2f6910,15,
-0x2f6a00,10,
-0x2f6ab8,4,
-0x2f6b00,3,
-0x2f6b10,1,
-0x2f6e00,6,
-0x2f6f00,5,
-0x2f7000,65,
-0x2f7800,6,
-0x2f7820,6,
-0x2f7840,6,
-0x2f7860,6,
-0x2f7880,6,
-0x2f78a0,6,
-0x2f78c0,6,
-0x2f78e0,3,
-0x2f7900,6,
-0x2f7920,6,
-0x2f7940,6,
-0x2f7960,6,
-0x2f7980,6,
-0x2f79a0,6,
-0x2f79c0,6,
-0x2f79e0,3,
-0x2f7a00,6,
-0x2f7a20,6,
-0x2f7a40,3,
-0x2f7a80,7,
-0x2f7aa0,7,
-0x2f7ac0,9,
-0x2f7b00,9,
-0x2f7b40,10,
-0x2f7b80,10,
-0x2f7bc0,10,
-0x2f7c00,10,
-0x2f7c40,10,
-0x2f7c80,10,
-0x2f7cc0,3,
-0x2f7e40,7,
-0x2f7e60,7,
-0x2f7e80,7,
-0x2f7ea0,7,
-0x2f7ec0,7,
-0x2f7ee0,7,
-0x2f7f00,7,
-0x2f7f20,7,
-0x2f7f40,7,
-0x2f7f60,4,
-0x2f7f78,13,
-0x2f8000,2,
-0x2f800c,3,
-0x2f8028,2,
-0x2f8038,2,
-0x2f8080,29,
-0x2f80f8,1,
-0x2f8100,13,
-0x2f8140,13,
-0x2f8500,6,
-0x2f8520,6,
-0x2f8540,3,
-0x2f8580,10,
-0x2f85c0,15,
-0x2f8600,2,
-0x2f8618,5,
-0x2f8630,1,
-0x2f8800,2,
-0x2f880c,3,
-0x2f8828,2,
-0x2f8838,2,
-0x2f8880,29,
-0x2f88f8,1,
-0x2f8900,13,
-0x2f8940,13,
-0x2f8d00,6,
-0x2f8d20,6,
-0x2f8d40,3,
-0x2f8d80,10,
-0x2f8dc0,15,
-0x2f8e00,2,
-0x2f8e18,5,
-0x2f8e30,1,
-0x2f9800,3,
-0x2f9828,3,
-0x2f9850,3,
-0x2f9878,3,
-0x2f98a0,9,
-0x2f99ac,1,
-0x2f99d8,4,
-0x2f9a00,6,
-0x2f9a20,6,
-0x2f9a40,6,
-0x2f9a60,6,
-0x2f9a80,6,
-0x2f9aa0,6,
-0x2f9ac0,3,
-0x2f9c00,6,
-0x2f9c20,3,
-0x2f9c40,2,
-0x2f9c60,1,
-0x300000,4,
-0x300014,1,
-0x300020,3,
-0x300030,3,
-0x300040,8,
-0x30007c,2,
-0x3000a0,6,
-0x3000c0,6,
-0x3000e0,6,
-0x300100,4,
-0x300114,1,
-0x300120,3,
-0x300130,3,
-0x300140,8,
-0x30017c,2,
-0x3001a0,6,
-0x3001c0,6,
-0x3001e0,6,
-0x300200,4,
-0x300214,1,
-0x300220,3,
-0x300230,3,
-0x300240,8,
-0x30027c,2,
-0x3002a0,6,
-0x3002c0,6,
-0x3002e0,6,
-0x300300,4,
-0x300314,1,
-0x300320,3,
-0x300330,3,
-0x300340,8,
-0x30037c,2,
-0x3003a0,6,
-0x3003c0,6,
-0x3003e0,6,
-0x300400,6,
-0x300440,6,
-0x300480,3,
-0x3004c0,3,
-0x300500,2,
-0x30050c,4,
-0x300520,2,
-0x30052c,4,
-0x300540,2,
-0x300c00,13,
-0x300c40,12,
-0x300c80,13,
-0x300cc0,12,
-0x300d00,14,
-0x300d40,6,
-0x300d80,14,
-0x300dc0,6,
-0x300e00,11,
-0x300e40,6,
-0x300e60,6,
-0x300e80,6,
-0x300ea0,6,
-0x301000,2,
-0x301014,4,
-0x301040,3,
-0x301050,3,
-0x301080,43,
-0x301140,11,
-0x301180,1,
-0x30119c,15,
-0x301200,12,
-0x301300,1,
-0x301308,6,
-0x301324,10,
-0x301380,1,
-0x301388,6,
-0x3013a4,10,
-0x301400,7,
-0x301420,7,
-0x301500,12,
-0x301540,12,
-0x301580,4,
-0x301800,14,
-0x30183c,9,
-0x301864,6,
-0x301880,2,
-0x301890,4,
-0x301900,14,
-0x30193c,9,
-0x301964,6,
-0x301980,2,
-0x301990,4,
-0x301a00,16,
-0x301a50,4,
-0x301a80,16,
-0x301ad0,4,
-0x301b00,6,
-0x301b20,6,
-0x301b40,3,
-0x301b80,6,
-0x301ba0,6,
-0x301bc0,3,
-0x301c00,6,
-0x301c20,6,
-0x301c40,3,
-0x301c80,6,
-0x301ca0,6,
-0x301cc0,3,
-0x301d10,2,
-0x301d1c,1,
-0x301d50,2,
-0x301d5c,1,
-0x301d80,1,
-0x301da0,1,
-0x301da8,4,
-0x301dc0,1,
-0x301de0,1,
-0x301de8,4,
-0x301e00,13,
-0x301e40,6,
-0x301e60,6,
-0x301e80,6,
-0x301ea0,6,
-0x301ec0,7,
-0x301ee0,7,
-0x301f00,12,
-0x301f34,2,
-0x301f40,3,
-0x301f50,8,
-0x302000,4,
-0x302014,1,
-0x302020,3,
-0x302030,3,
-0x302040,8,
-0x30207c,2,
-0x3020a0,6,
-0x3020c0,6,
-0x3020e0,6,
-0x302100,4,
-0x302114,1,
-0x302120,3,
-0x302130,3,
-0x302140,8,
-0x30217c,2,
-0x3021a0,6,
-0x3021c0,6,
-0x3021e0,6,
-0x302200,4,
-0x302214,1,
-0x302220,3,
-0x302230,3,
-0x302240,8,
-0x30227c,2,
-0x3022a0,6,
-0x3022c0,6,
-0x3022e0,6,
-0x302300,4,
-0x302314,1,
-0x302320,3,
-0x302330,3,
-0x302340,8,
-0x30237c,2,
-0x3023a0,6,
-0x3023c0,6,
-0x3023e0,6,
-0x302400,6,
-0x302440,6,
-0x302480,3,
-0x3024c0,3,
-0x302500,2,
-0x30250c,4,
-0x302520,2,
-0x30252c,4,
-0x302540,2,
-0x302c00,13,
-0x302c40,12,
-0x302c80,13,
-0x302cc0,12,
-0x302d00,14,
-0x302d40,6,
-0x302d80,14,
-0x302dc0,6,
-0x302e00,11,
-0x302e40,6,
-0x302e60,6,
-0x302e80,6,
-0x302ea0,6,
-0x303000,2,
-0x303014,4,
-0x303040,3,
-0x303050,3,
-0x303080,43,
-0x303140,11,
-0x303180,1,
-0x30319c,15,
-0x303200,12,
-0x303300,1,
-0x303308,6,
-0x303324,10,
-0x303380,1,
-0x303388,6,
-0x3033a4,10,
-0x303400,7,
-0x303420,7,
-0x303500,12,
-0x303540,12,
-0x303580,4,
-0x303800,14,
-0x30383c,9,
-0x303864,6,
-0x303880,2,
-0x303890,4,
-0x303900,14,
-0x30393c,9,
-0x303964,6,
-0x303980,2,
-0x303990,4,
-0x303a00,16,
-0x303a50,4,
-0x303a80,16,
-0x303ad0,4,
-0x303b00,6,
-0x303b20,6,
-0x303b40,3,
-0x303b80,6,
-0x303ba0,6,
-0x303bc0,3,
-0x303c00,6,
-0x303c20,6,
-0x303c40,3,
-0x303c80,6,
-0x303ca0,6,
-0x303cc0,3,
-0x303d10,2,
-0x303d1c,1,
-0x303d50,2,
-0x303d5c,1,
-0x303d80,1,
-0x303da0,1,
-0x303da8,4,
-0x303dc0,1,
-0x303de0,1,
-0x303de8,4,
-0x303e00,13,
-0x303e40,6,
-0x303e60,6,
-0x303e80,6,
-0x303ea0,6,
-0x303ec0,7,
-0x303ee0,7,
-0x303f00,12,
-0x303f34,2,
-0x303f40,3,
-0x303f50,8,
-0x304000,29,
-0x304078,4,
-0x304090,2,
-0x3040a0,7,
-0x3040c0,11,
-0x304100,14,
-0x304140,14,
-0x304180,61,
-0x304278,4,
-0x304290,2,
-0x3042a0,7,
-0x3042c0,11,
-0x304300,14,
-0x304340,14,
-0x304380,61,
-0x304478,4,
-0x304490,2,
-0x3044a0,7,
-0x3044c0,11,
-0x304500,14,
-0x304540,14,
-0x304580,61,
-0x304678,4,
-0x304690,2,
-0x3046a0,7,
-0x3046c0,11,
-0x304700,14,
-0x304740,14,
-0x304780,69,
-0x304c00,6,
-0x304c40,14,
-0x304c80,9,
-0x304d00,9,
-0x304d2c,1,
-0x304d40,3,
-0x304d60,1,
-0x304d80,3,
-0x304e00,2,
-0x304e0c,1,
-0x304e14,5,
-0x304e2c,1,
-0x304e34,5,
-0x304e4c,1,
-0x304e54,5,
-0x304e6c,1,
-0x304e74,5,
-0x304e8c,1,
-0x304e94,5,
-0x304eac,1,
-0x304eb4,3,
-0x305000,29,
-0x305078,4,
-0x305090,2,
-0x3050a0,7,
-0x3050c0,11,
-0x305100,14,
-0x305140,14,
-0x305180,61,
-0x305278,4,
-0x305290,2,
-0x3052a0,7,
-0x3052c0,11,
-0x305300,14,
-0x305340,14,
-0x305380,61,
-0x305478,4,
-0x305490,2,
-0x3054a0,7,
-0x3054c0,11,
-0x305500,14,
-0x305540,14,
-0x305580,61,
-0x305678,4,
-0x305690,2,
-0x3056a0,7,
-0x3056c0,11,
-0x305700,14,
-0x305740,14,
-0x305780,69,
-0x305c00,6,
-0x305c40,14,
-0x305c80,9,
-0x305d00,9,
-0x305d2c,1,
-0x305d40,3,
-0x305d60,1,
-0x305d80,3,
-0x305e00,2,
-0x305e0c,1,
-0x305e14,5,
-0x305e2c,1,
-0x305e34,5,
-0x305e4c,1,
-0x305e54,5,
-0x305e6c,1,
-0x305e74,5,
-0x305e8c,1,
-0x305e94,5,
-0x305eac,1,
-0x305eb4,3,
-0x306000,14,
-0x306040,6,
-0x306060,6,
-0x306080,6,
-0x3060a0,3,
-0x306100,9,
-0x306204,1,
-0x30620c,6,
-0x306240,13,
-0x306280,16,
-0x306800,19,
-0x306850,10,
-0x306880,19,
-0x3068d0,10,
-0x306900,19,
-0x306950,10,
-0x306980,19,
-0x3069d0,10,
-0x306a00,19,
-0x306a50,10,
-0x306a80,19,
-0x306ad0,10,
-0x306b00,19,
-0x306b50,10,
-0x306b80,19,
-0x306bd0,10,
-0x306c00,19,
-0x306c60,6,
-0x306c84,1,
-0x306c94,8,
-0x306cb8,14,
-0x307000,1,
-0x307028,1,
-0x307050,1,
-0x307078,1,
-0x3070a0,4,
-0x3071ac,1,
-0x3071d8,4,
-0x307200,6,
-0x307220,6,
-0x307240,3,
-0x307400,1,
-0x307408,3,
-0x307438,1,
-0x307444,1,
-0x307450,6,
-0x307500,7,
-0x307520,6,
-0x307540,6,
-0x307560,3,
-0x307570,3,
-0x308000,6,
-0x308020,3,
-0x308030,1,
-0x308038,4,
-0x308050,1,
-0x308400,1,
-0x308428,1,
-0x308450,1,
-0x308478,1,
-0x3084a0,6,
-0x3085ac,1,
-0x3085d8,4,
-0x308600,6,
-0x308620,6,
-0x308640,3,
-0x308800,6,
-0x308820,3,
-0x308830,4,
-0x308918,2,
-0x308924,1,
-0x308934,3,
-0x308958,2,
-0x308964,1,
-0x308974,3,
-0x308998,2,
-0x3089a4,1,
-0x3089b4,3,
-0x3089d8,2,
-0x3089e4,1,
-0x3089f4,3,
-0x309020,4,
-0x309040,11,
-0x309074,2,
-0x309080,4,
-0x3090b0,22,
-0x309110,2,
-0x309120,22,
-0x309180,2,
-0x3091a0,6,
-0x3091c0,9,
-0x309200,42,
-0x3092c0,1,
-0x3092c8,13,
-0x309300,25,
-0x30936c,4,
-0x309380,2,
-0x3093a0,1,
-0x3093c0,11,
-0x309404,3,
-0x309420,11,
-0x309480,6,
-0x309500,1,
-0x309520,6,
-0x309540,3,
-0x309550,7,
-0x309570,18,
-0x3095bc,5,
-0x309800,480,
-0x30a020,4,
-0x30a040,11,
-0x30a074,2,
-0x30a080,4,
-0x30a0b0,22,
-0x30a110,2,
-0x30a120,22,
-0x30a180,2,
-0x30a1a0,6,
-0x30a1c0,9,
-0x30a200,42,
-0x30a2c0,1,
-0x30a2c8,13,
-0x30a300,25,
-0x30a36c,4,
-0x30a380,2,
-0x30a3a0,1,
-0x30a3c0,11,
-0x30a404,3,
-0x30a420,11,
-0x30a480,6,
-0x30a500,1,
-0x30a520,6,
-0x30a540,3,
-0x30a550,7,
-0x30a570,18,
-0x30a5bc,5,
-0x30a800,480,
-0x30b020,4,
-0x30b040,11,
-0x30b074,2,
-0x30b080,4,
-0x30b0b0,22,
-0x30b110,2,
-0x30b120,22,
-0x30b180,2,
-0x30b1a0,6,
-0x30b1c0,9,
-0x30b200,42,
-0x30b2c0,1,
-0x30b2c8,13,
-0x30b300,25,
-0x30b36c,4,
-0x30b380,2,
-0x30b3a0,1,
-0x30b3c0,11,
-0x30b404,3,
-0x30b420,11,
-0x30b480,6,
-0x30b500,1,
-0x30b520,6,
-0x30b540,3,
-0x30b550,7,
-0x30b570,18,
-0x30b5bc,5,
-0x30b800,480,
-0x30c020,4,
-0x30c040,11,
-0x30c074,2,
-0x30c080,4,
-0x30c0b0,22,
-0x30c110,2,
-0x30c120,22,
-0x30c180,2,
-0x30c1a0,6,
-0x30c1c0,9,
-0x30c200,42,
-0x30c2c0,1,
-0x30c2c8,13,
-0x30c300,25,
-0x30c36c,4,
-0x30c380,2,
-0x30c3a0,1,
-0x30c3c0,11,
-0x30c404,3,
-0x30c420,11,
-0x30c480,6,
-0x30c500,1,
-0x30c520,6,
-0x30c540,3,
-0x30c550,7,
-0x30c570,18,
-0x30c5bc,5,
-0x30c800,480,
-0x30f800,5,
-0x30f818,1,
-0x30f854,6,
-0x30f880,4,
-0x30f8a4,1,
-0x30f8ac,2,
-0x30f900,5,
-0x30f918,1,
-0x30f954,6,
-0x30f980,4,
-0x30f9a4,1,
-0x30f9ac,2,
-0x30fa00,5,
-0x30fa18,1,
-0x30fa54,6,
-0x30fa80,4,
-0x30faa4,1,
-0x30faac,2,
-0x30fb00,5,
-0x30fb18,1,
-0x30fb54,6,
-0x30fb80,4,
-0x30fba4,1,
-0x30fbac,2,
-0x314000,3,
-0x314018,10,
-0x314100,58,
-0x3141f0,1,
-0x314400,3,
-0x314418,10,
-0x314500,58,
-0x3145f0,1,
-0x314800,3,
-0x314810,3,
-0x314820,6,
-0x314880,9,
-0x3148c0,9,
-0x314900,8,
-0x314938,2,
-0x314944,1,
-0x314954,3,
-0x314980,8,
-0x3149b8,2,
-0x3149c4,1,
-0x3149d4,3,
-0x315000,3,
-0x315018,10,
-0x315100,58,
-0x3151f0,1,
-0x315400,3,
-0x315418,10,
-0x315500,58,
-0x3155f0,1,
-0x315800,3,
-0x315810,3,
-0x315820,6,
-0x315880,9,
-0x3158c0,9,
-0x315900,8,
-0x315938,2,
-0x315944,1,
-0x315954,3,
-0x315980,8,
-0x3159b8,2,
-0x3159c4,1,
-0x3159d4,3,
-0x316004,7,
-0x316024,1,
-0x316030,4,
-0x316300,5,
-0x31631c,2,
-0x316600,10,
-0x316630,1,
-0x316640,10,
-0x316670,1,
-0x316700,10,
-0x316730,1,
-0x316740,10,
-0x316770,1,
-0x316800,19,
-0x316890,15,
-0x316910,15,
-0x316a00,10,
-0x316ab8,4,
-0x316b00,3,
-0x316b10,1,
-0x316e00,6,
-0x316f00,5,
-0x317000,65,
-0x317800,6,
-0x317820,6,
-0x317840,6,
-0x317860,6,
-0x317880,6,
-0x3178a0,6,
-0x3178c0,6,
-0x3178e0,3,
-0x317900,6,
-0x317920,6,
-0x317940,6,
-0x317960,6,
-0x317980,6,
-0x3179a0,6,
-0x3179c0,6,
-0x3179e0,3,
-0x317a00,6,
-0x317a20,6,
-0x317a40,3,
-0x317a80,7,
-0x317aa0,7,
-0x317ac0,9,
-0x317b00,9,
-0x317b40,10,
-0x317b80,10,
-0x317bc0,10,
-0x317c00,10,
-0x317c40,10,
-0x317c80,10,
-0x317cc0,3,
-0x317e40,7,
-0x317e60,7,
-0x317e80,7,
-0x317ea0,7,
-0x317ec0,7,
-0x317ee0,7,
-0x317f00,7,
-0x317f20,7,
-0x317f40,7,
-0x317f60,4,
-0x317f78,13,
-0x318000,2,
-0x31800c,3,
-0x318028,2,
-0x318038,2,
-0x318080,29,
-0x3180f8,1,
-0x318100,13,
-0x318140,13,
-0x318500,6,
-0x318520,6,
-0x318540,3,
-0x318580,10,
-0x3185c0,15,
-0x318600,2,
-0x318618,5,
-0x318630,1,
-0x318800,2,
-0x31880c,3,
-0x318828,2,
-0x318838,2,
-0x318880,29,
-0x3188f8,1,
-0x318900,13,
-0x318940,13,
-0x318d00,6,
-0x318d20,6,
-0x318d40,3,
-0x318d80,10,
-0x318dc0,15,
-0x318e00,2,
-0x318e18,5,
-0x318e30,1,
-0x319800,3,
-0x319828,3,
-0x319850,3,
-0x319878,3,
-0x3198a0,9,
-0x3199ac,1,
-0x3199d8,4,
-0x319a00,6,
-0x319a20,6,
-0x319a40,6,
-0x319a60,6,
-0x319a80,6,
-0x319aa0,6,
-0x319ac0,3,
-0x319c00,6,
-0x319c20,3,
-0x319c40,2,
-0x319c60,1,
-0x320000,4,
-0x320014,1,
-0x320020,3,
-0x320030,3,
-0x320040,8,
-0x32007c,2,
-0x3200a0,6,
-0x3200c0,6,
-0x3200e0,6,
-0x320100,4,
-0x320114,1,
-0x320120,3,
-0x320130,3,
-0x320140,8,
-0x32017c,2,
-0x3201a0,6,
-0x3201c0,6,
-0x3201e0,6,
-0x320200,4,
-0x320214,1,
-0x320220,3,
-0x320230,3,
-0x320240,8,
-0x32027c,2,
-0x3202a0,6,
-0x3202c0,6,
-0x3202e0,6,
-0x320300,4,
-0x320314,1,
-0x320320,3,
-0x320330,3,
-0x320340,8,
-0x32037c,2,
-0x3203a0,6,
-0x3203c0,6,
-0x3203e0,6,
-0x320400,6,
-0x320440,6,
-0x320480,3,
-0x3204c0,3,
-0x320500,2,
-0x32050c,4,
-0x320520,2,
-0x32052c,4,
-0x320540,2,
-0x320c00,13,
-0x320c40,12,
-0x320c80,13,
-0x320cc0,12,
-0x320d00,14,
-0x320d40,6,
-0x320d80,14,
-0x320dc0,6,
-0x320e00,11,
-0x320e40,6,
-0x320e60,6,
-0x320e80,6,
-0x320ea0,6,
-0x321000,2,
-0x321014,4,
-0x321040,3,
-0x321050,3,
-0x321080,43,
-0x321140,11,
-0x321180,1,
-0x32119c,15,
-0x321200,12,
-0x321300,1,
-0x321308,6,
-0x321324,10,
-0x321380,1,
-0x321388,6,
-0x3213a4,10,
-0x321400,7,
-0x321420,7,
-0x321500,12,
-0x321540,12,
-0x321580,4,
-0x321800,14,
-0x32183c,9,
-0x321864,6,
-0x321880,2,
-0x321890,4,
-0x321900,14,
-0x32193c,9,
-0x321964,6,
-0x321980,2,
-0x321990,4,
-0x321a00,16,
-0x321a50,4,
-0x321a80,16,
-0x321ad0,4,
-0x321b00,6,
-0x321b20,6,
-0x321b40,3,
-0x321b80,6,
-0x321ba0,6,
-0x321bc0,3,
-0x321c00,6,
-0x321c20,6,
-0x321c40,3,
-0x321c80,6,
-0x321ca0,6,
-0x321cc0,3,
-0x321d10,2,
-0x321d1c,1,
-0x321d50,2,
-0x321d5c,1,
-0x321d80,1,
-0x321da0,1,
-0x321da8,4,
-0x321dc0,1,
-0x321de0,1,
-0x321de8,4,
-0x321e00,13,
-0x321e40,6,
-0x321e60,6,
-0x321e80,6,
-0x321ea0,6,
-0x321ec0,7,
-0x321ee0,7,
-0x321f00,12,
-0x321f34,2,
-0x321f40,3,
-0x321f50,8,
-0x322000,4,
-0x322014,1,
-0x322020,3,
-0x322030,3,
-0x322040,8,
-0x32207c,2,
-0x3220a0,6,
-0x3220c0,6,
-0x3220e0,6,
-0x322100,4,
-0x322114,1,
-0x322120,3,
-0x322130,3,
-0x322140,8,
-0x32217c,2,
-0x3221a0,6,
-0x3221c0,6,
-0x3221e0,6,
-0x322200,4,
-0x322214,1,
-0x322220,3,
-0x322230,3,
-0x322240,8,
-0x32227c,2,
-0x3222a0,6,
-0x3222c0,6,
-0x3222e0,6,
-0x322300,4,
-0x322314,1,
-0x322320,3,
-0x322330,3,
-0x322340,8,
-0x32237c,2,
-0x3223a0,6,
-0x3223c0,6,
-0x3223e0,6,
-0x322400,6,
-0x322440,6,
-0x322480,3,
-0x3224c0,3,
-0x322500,2,
-0x32250c,4,
-0x322520,2,
-0x32252c,4,
-0x322540,2,
-0x322c00,13,
-0x322c40,12,
-0x322c80,13,
-0x322cc0,12,
-0x322d00,14,
-0x322d40,6,
-0x322d80,14,
-0x322dc0,6,
-0x322e00,11,
-0x322e40,6,
-0x322e60,6,
-0x322e80,6,
-0x322ea0,6,
-0x323000,2,
-0x323014,4,
-0x323040,3,
-0x323050,3,
-0x323080,43,
-0x323140,11,
-0x323180,1,
-0x32319c,15,
-0x323200,12,
-0x323300,1,
-0x323308,6,
-0x323324,10,
-0x323380,1,
-0x323388,6,
-0x3233a4,10,
-0x323400,7,
-0x323420,7,
-0x323500,12,
-0x323540,12,
-0x323580,4,
-0x323800,14,
-0x32383c,9,
-0x323864,6,
-0x323880,2,
-0x323890,4,
-0x323900,14,
-0x32393c,9,
-0x323964,6,
-0x323980,2,
-0x323990,4,
-0x323a00,16,
-0x323a50,4,
-0x323a80,16,
-0x323ad0,4,
-0x323b00,6,
-0x323b20,6,
-0x323b40,3,
-0x323b80,6,
-0x323ba0,6,
-0x323bc0,3,
-0x323c00,6,
-0x323c20,6,
-0x323c40,3,
-0x323c80,6,
-0x323ca0,6,
-0x323cc0,3,
-0x323d10,2,
-0x323d1c,1,
-0x323d50,2,
-0x323d5c,1,
-0x323d80,1,
-0x323da0,1,
-0x323da8,4,
-0x323dc0,1,
-0x323de0,1,
-0x323de8,4,
-0x323e00,13,
-0x323e40,6,
-0x323e60,6,
-0x323e80,6,
-0x323ea0,6,
-0x323ec0,7,
-0x323ee0,7,
-0x323f00,12,
-0x323f34,2,
-0x323f40,3,
-0x323f50,8,
-0x324000,29,
-0x324078,4,
-0x324090,2,
-0x3240a0,7,
-0x3240c0,11,
-0x324100,14,
-0x324140,14,
-0x324180,61,
-0x324278,4,
-0x324290,2,
-0x3242a0,7,
-0x3242c0,11,
-0x324300,14,
-0x324340,14,
-0x324380,61,
-0x324478,4,
-0x324490,2,
-0x3244a0,7,
-0x3244c0,11,
-0x324500,14,
-0x324540,14,
-0x324580,61,
-0x324678,4,
-0x324690,2,
-0x3246a0,7,
-0x3246c0,11,
-0x324700,14,
-0x324740,14,
-0x324780,69,
-0x324c00,6,
-0x324c40,14,
-0x324c80,9,
-0x324d00,9,
-0x324d2c,1,
-0x324d40,3,
-0x324d60,1,
-0x324d80,3,
-0x324e00,2,
-0x324e0c,1,
-0x324e14,5,
-0x324e2c,1,
-0x324e34,5,
-0x324e4c,1,
-0x324e54,5,
-0x324e6c,1,
-0x324e74,5,
-0x324e8c,1,
-0x324e94,5,
-0x324eac,1,
-0x324eb4,3,
-0x325000,29,
-0x325078,4,
-0x325090,2,
-0x3250a0,7,
-0x3250c0,11,
-0x325100,14,
-0x325140,14,
-0x325180,61,
-0x325278,4,
-0x325290,2,
-0x3252a0,7,
-0x3252c0,11,
-0x325300,14,
-0x325340,14,
-0x325380,61,
-0x325478,4,
-0x325490,2,
-0x3254a0,7,
-0x3254c0,11,
-0x325500,14,
-0x325540,14,
-0x325580,61,
-0x325678,4,
-0x325690,2,
-0x3256a0,7,
-0x3256c0,11,
-0x325700,14,
-0x325740,14,
-0x325780,69,
-0x325c00,6,
-0x325c40,14,
-0x325c80,9,
-0x325d00,9,
-0x325d2c,1,
-0x325d40,3,
-0x325d60,1,
-0x325d80,3,
-0x325e00,2,
-0x325e0c,1,
-0x325e14,5,
-0x325e2c,1,
-0x325e34,5,
-0x325e4c,1,
-0x325e54,5,
-0x325e6c,1,
-0x325e74,5,
-0x325e8c,1,
-0x325e94,5,
-0x325eac,1,
-0x325eb4,3,
-0x326000,14,
-0x326040,6,
-0x326060,6,
-0x326080,6,
-0x3260a0,3,
-0x326100,9,
-0x326204,1,
-0x32620c,6,
-0x326240,13,
-0x326280,16,
-0x326800,19,
-0x326850,10,
-0x326880,19,
-0x3268d0,10,
-0x326900,19,
-0x326950,10,
-0x326980,19,
-0x3269d0,10,
-0x326a00,19,
-0x326a50,10,
-0x326a80,19,
-0x326ad0,10,
-0x326b00,19,
-0x326b50,10,
-0x326b80,19,
-0x326bd0,10,
-0x326c00,19,
-0x326c60,6,
-0x326c84,1,
-0x326c94,8,
-0x326cb8,14,
-0x327000,1,
-0x327028,1,
-0x327050,1,
-0x327078,1,
-0x3270a0,4,
-0x3271ac,1,
-0x3271d8,4,
-0x327200,6,
-0x327220,6,
-0x327240,3,
-0x327400,1,
-0x327408,3,
-0x327438,1,
-0x327444,1,
-0x327450,6,
-0x327500,7,
-0x327520,6,
-0x327540,6,
-0x327560,3,
-0x327570,3,
-0x328000,6,
-0x328020,3,
-0x328030,1,
-0x328038,4,
-0x328050,1,
-0x328400,1,
-0x328428,1,
-0x328450,1,
-0x328478,1,
-0x3284a0,6,
-0x3285ac,1,
-0x3285d8,4,
-0x328600,6,
-0x328620,6,
-0x328640,3,
-0x328800,6,
-0x328820,3,
-0x328830,4,
-0x328918,2,
-0x328924,1,
-0x328934,3,
-0x328958,2,
-0x328964,1,
-0x328974,3,
-0x328998,2,
-0x3289a4,1,
-0x3289b4,3,
-0x3289d8,2,
-0x3289e4,1,
-0x3289f4,3,
-0x329020,4,
-0x329040,11,
-0x329074,2,
-0x329080,4,
-0x3290b0,22,
-0x329110,2,
-0x329120,22,
-0x329180,2,
-0x3291a0,6,
-0x3291c0,9,
-0x329200,42,
-0x3292c0,1,
-0x3292c8,13,
-0x329300,25,
-0x32936c,4,
-0x329380,2,
-0x3293a0,1,
-0x3293c0,11,
-0x329404,3,
-0x329420,11,
-0x329480,6,
-0x329500,1,
-0x329520,6,
-0x329540,3,
-0x329550,7,
-0x329570,18,
-0x3295bc,5,
-0x329800,480,
-0x32a020,4,
-0x32a040,11,
-0x32a074,2,
-0x32a080,4,
-0x32a0b0,22,
-0x32a110,2,
-0x32a120,22,
-0x32a180,2,
-0x32a1a0,6,
-0x32a1c0,9,
-0x32a200,42,
-0x32a2c0,1,
-0x32a2c8,13,
-0x32a300,25,
-0x32a36c,4,
-0x32a380,2,
-0x32a3a0,1,
-0x32a3c0,11,
-0x32a404,3,
-0x32a420,11,
-0x32a480,6,
-0x32a500,1,
-0x32a520,6,
-0x32a540,3,
-0x32a550,7,
-0x32a570,18,
-0x32a5bc,5,
-0x32a800,480,
-0x32b020,4,
-0x32b040,11,
-0x32b074,2,
-0x32b080,4,
-0x32b0b0,22,
-0x32b110,2,
-0x32b120,22,
-0x32b180,2,
-0x32b1a0,6,
-0x32b1c0,9,
-0x32b200,42,
-0x32b2c0,1,
-0x32b2c8,13,
-0x32b300,25,
-0x32b36c,4,
-0x32b380,2,
-0x32b3a0,1,
-0x32b3c0,11,
-0x32b404,3,
-0x32b420,11,
-0x32b480,6,
-0x32b500,1,
-0x32b520,6,
-0x32b540,3,
-0x32b550,7,
-0x32b570,18,
-0x32b5bc,5,
-0x32b800,480,
-0x32c020,4,
-0x32c040,11,
-0x32c074,2,
-0x32c080,4,
-0x32c0b0,22,
-0x32c110,2,
-0x32c120,22,
-0x32c180,2,
-0x32c1a0,6,
-0x32c1c0,9,
-0x32c200,42,
-0x32c2c0,1,
-0x32c2c8,13,
-0x32c300,25,
-0x32c36c,4,
-0x32c380,2,
-0x32c3a0,1,
-0x32c3c0,11,
-0x32c404,3,
-0x32c420,11,
-0x32c480,6,
-0x32c500,1,
-0x32c520,6,
-0x32c540,3,
-0x32c550,7,
-0x32c570,18,
-0x32c5bc,5,
-0x32c800,480,
-0x32f800,5,
-0x32f818,1,
-0x32f854,6,
-0x32f880,4,
-0x32f8a4,1,
-0x32f8ac,2,
-0x32f900,5,
-0x32f918,1,
-0x32f954,6,
-0x32f980,4,
-0x32f9a4,1,
-0x32f9ac,2,
-0x32fa00,5,
-0x32fa18,1,
-0x32fa54,6,
-0x32fa80,4,
-0x32faa4,1,
-0x32faac,2,
-0x32fb00,5,
-0x32fb18,1,
-0x32fb54,6,
-0x32fb80,4,
-0x32fba4,1,
-0x32fbac,2,
-0x334000,3,
-0x334018,10,
-0x334100,58,
-0x3341f0,1,
-0x334400,3,
-0x334418,10,
-0x334500,58,
-0x3345f0,1,
-0x334800,3,
-0x334810,3,
-0x334820,6,
-0x334880,9,
-0x3348c0,9,
-0x334900,8,
-0x334938,2,
-0x334944,1,
-0x334954,3,
-0x334980,8,
-0x3349b8,2,
-0x3349c4,1,
-0x3349d4,3,
-0x335000,3,
-0x335018,10,
-0x335100,58,
-0x3351f0,1,
-0x335400,3,
-0x335418,10,
-0x335500,58,
-0x3355f0,1,
-0x335800,3,
-0x335810,3,
-0x335820,6,
-0x335880,9,
-0x3358c0,9,
-0x335900,8,
-0x335938,2,
-0x335944,1,
-0x335954,3,
-0x335980,8,
-0x3359b8,2,
-0x3359c4,1,
-0x3359d4,3,
-0x336004,7,
-0x336024,1,
-0x336030,4,
-0x336300,5,
-0x33631c,2,
-0x336600,10,
-0x336630,1,
-0x336640,10,
-0x336670,1,
-0x336700,10,
-0x336730,1,
-0x336740,10,
-0x336770,1,
-0x336800,19,
-0x336890,15,
-0x336910,15,
-0x336a00,10,
-0x336ab8,4,
-0x336b00,3,
-0x336b10,1,
-0x336e00,6,
-0x336f00,5,
-0x337000,65,
-0x337800,6,
-0x337820,6,
-0x337840,6,
-0x337860,6,
-0x337880,6,
-0x3378a0,6,
-0x3378c0,6,
-0x3378e0,3,
-0x337900,6,
-0x337920,6,
-0x337940,6,
-0x337960,6,
-0x337980,6,
-0x3379a0,6,
-0x3379c0,6,
-0x3379e0,3,
-0x337a00,6,
-0x337a20,6,
-0x337a40,3,
-0x337a80,7,
-0x337aa0,7,
-0x337ac0,9,
-0x337b00,9,
-0x337b40,10,
-0x337b80,10,
-0x337bc0,10,
-0x337c00,10,
-0x337c40,10,
-0x337c80,10,
-0x337cc0,3,
-0x337e40,7,
-0x337e60,7,
-0x337e80,7,
-0x337ea0,7,
-0x337ec0,7,
-0x337ee0,7,
-0x337f00,7,
-0x337f20,7,
-0x337f40,7,
-0x337f60,4,
-0x337f78,13,
-0x338000,2,
-0x33800c,3,
-0x338028,2,
-0x338038,2,
-0x338080,29,
-0x3380f8,1,
-0x338100,13,
-0x338140,13,
-0x338500,6,
-0x338520,6,
-0x338540,3,
-0x338580,10,
-0x3385c0,15,
-0x338600,2,
-0x338618,5,
-0x338630,1,
-0x338800,2,
-0x33880c,3,
-0x338828,2,
-0x338838,2,
-0x338880,29,
-0x3388f8,1,
-0x338900,13,
-0x338940,13,
-0x338d00,6,
-0x338d20,6,
-0x338d40,3,
-0x338d80,10,
-0x338dc0,15,
-0x338e00,2,
-0x338e18,5,
-0x338e30,1,
-0x339800,3,
-0x339828,3,
-0x339850,3,
-0x339878,3,
-0x3398a0,9,
-0x3399ac,1,
-0x3399d8,4,
-0x339a00,6,
-0x339a20,6,
-0x339a40,6,
-0x339a60,6,
-0x339a80,6,
-0x339aa0,6,
-0x339ac0,3,
-0x339c00,6,
-0x339c20,3,
-0x339c40,2,
-0x339c60,1,
-0x340000,4,
-0x340014,1,
-0x340020,3,
-0x340030,3,
-0x340040,8,
-0x34007c,2,
-0x3400a0,6,
-0x3400c0,6,
-0x3400e0,6,
-0x340100,4,
-0x340114,1,
-0x340120,3,
-0x340130,3,
-0x340140,8,
-0x34017c,2,
-0x3401a0,6,
-0x3401c0,6,
-0x3401e0,6,
-0x340200,4,
-0x340214,1,
-0x340220,3,
-0x340230,3,
-0x340240,8,
-0x34027c,2,
-0x3402a0,6,
-0x3402c0,6,
-0x3402e0,6,
-0x340300,4,
-0x340314,1,
-0x340320,3,
-0x340330,3,
-0x340340,8,
-0x34037c,2,
-0x3403a0,6,
-0x3403c0,6,
-0x3403e0,6,
-0x340400,6,
-0x340440,6,
-0x340480,3,
-0x3404c0,3,
-0x340500,2,
-0x34050c,4,
-0x340520,2,
-0x34052c,4,
-0x340540,2,
-0x340c00,13,
-0x340c40,12,
-0x340c80,13,
-0x340cc0,12,
-0x340d00,14,
-0x340d40,6,
-0x340d80,14,
-0x340dc0,6,
-0x340e00,11,
-0x340e40,6,
-0x340e60,6,
-0x340e80,6,
-0x340ea0,6,
-0x341000,2,
-0x341014,4,
-0x341040,3,
-0x341050,3,
-0x341080,43,
-0x341140,11,
-0x341180,1,
-0x34119c,15,
-0x341200,12,
-0x341300,1,
-0x341308,6,
-0x341324,10,
-0x341380,1,
-0x341388,6,
-0x3413a4,10,
-0x341400,7,
-0x341420,7,
-0x341500,12,
-0x341540,12,
-0x341580,4,
-0x341800,14,
-0x34183c,9,
-0x341864,6,
-0x341880,2,
-0x341890,4,
-0x341900,14,
-0x34193c,9,
-0x341964,6,
-0x341980,2,
-0x341990,4,
-0x341a00,16,
-0x341a50,4,
-0x341a80,16,
-0x341ad0,4,
-0x341b00,6,
-0x341b20,6,
-0x341b40,3,
-0x341b80,6,
-0x341ba0,6,
-0x341bc0,3,
-0x341c00,6,
-0x341c20,6,
-0x341c40,3,
-0x341c80,6,
-0x341ca0,6,
-0x341cc0,3,
-0x341d10,2,
-0x341d1c,1,
-0x341d50,2,
-0x341d5c,1,
-0x341d80,1,
-0x341da0,1,
-0x341da8,4,
-0x341dc0,1,
-0x341de0,1,
-0x341de8,4,
-0x341e00,13,
-0x341e40,6,
-0x341e60,6,
-0x341e80,6,
-0x341ea0,6,
-0x341ec0,7,
-0x341ee0,7,
-0x341f00,12,
-0x341f34,2,
-0x341f40,3,
-0x341f50,8,
-0x342000,4,
-0x342014,1,
-0x342020,3,
-0x342030,3,
-0x342040,8,
-0x34207c,2,
-0x3420a0,6,
-0x3420c0,6,
-0x3420e0,6,
-0x342100,4,
-0x342114,1,
-0x342120,3,
-0x342130,3,
-0x342140,8,
-0x34217c,2,
-0x3421a0,6,
-0x3421c0,6,
-0x3421e0,6,
-0x342200,4,
-0x342214,1,
-0x342220,3,
-0x342230,3,
-0x342240,8,
-0x34227c,2,
-0x3422a0,6,
-0x3422c0,6,
-0x3422e0,6,
-0x342300,4,
-0x342314,1,
-0x342320,3,
-0x342330,3,
-0x342340,8,
-0x34237c,2,
-0x3423a0,6,
-0x3423c0,6,
-0x3423e0,6,
-0x342400,6,
-0x342440,6,
-0x342480,3,
-0x3424c0,3,
-0x342500,2,
-0x34250c,4,
-0x342520,2,
-0x34252c,4,
-0x342540,2,
-0x342c00,13,
-0x342c40,12,
-0x342c80,13,
-0x342cc0,12,
-0x342d00,14,
-0x342d40,6,
-0x342d80,14,
-0x342dc0,6,
-0x342e00,11,
-0x342e40,6,
-0x342e60,6,
-0x342e80,6,
-0x342ea0,6,
-0x343000,2,
-0x343014,4,
-0x343040,3,
-0x343050,3,
-0x343080,43,
-0x343140,11,
-0x343180,1,
-0x34319c,15,
-0x343200,12,
-0x343300,1,
-0x343308,6,
-0x343324,10,
-0x343380,1,
-0x343388,6,
-0x3433a4,10,
-0x343400,7,
-0x343420,7,
-0x343500,12,
-0x343540,12,
-0x343580,4,
-0x343800,14,
-0x34383c,9,
-0x343864,6,
-0x343880,2,
-0x343890,4,
-0x343900,14,
-0x34393c,9,
-0x343964,6,
-0x343980,2,
-0x343990,4,
-0x343a00,16,
-0x343a50,4,
-0x343a80,16,
-0x343ad0,4,
-0x343b00,6,
-0x343b20,6,
-0x343b40,3,
-0x343b80,6,
-0x343ba0,6,
-0x343bc0,3,
-0x343c00,6,
-0x343c20,6,
-0x343c40,3,
-0x343c80,6,
-0x343ca0,6,
-0x343cc0,3,
-0x343d10,2,
-0x343d1c,1,
-0x343d50,2,
-0x343d5c,1,
-0x343d80,1,
-0x343da0,1,
-0x343da8,4,
-0x343dc0,1,
-0x343de0,1,
-0x343de8,4,
-0x343e00,13,
-0x343e40,6,
-0x343e60,6,
-0x343e80,6,
-0x343ea0,6,
-0x343ec0,7,
-0x343ee0,7,
-0x343f00,12,
-0x343f34,2,
-0x343f40,3,
-0x343f50,8,
-0x344000,29,
-0x344078,4,
-0x344090,2,
-0x3440a0,7,
-0x3440c0,11,
-0x344100,14,
-0x344140,14,
-0x344180,61,
-0x344278,4,
-0x344290,2,
-0x3442a0,7,
-0x3442c0,11,
-0x344300,14,
-0x344340,14,
-0x344380,61,
-0x344478,4,
-0x344490,2,
-0x3444a0,7,
-0x3444c0,11,
-0x344500,14,
-0x344540,14,
-0x344580,61,
-0x344678,4,
-0x344690,2,
-0x3446a0,7,
-0x3446c0,11,
-0x344700,14,
-0x344740,14,
-0x344780,69,
-0x344c00,6,
-0x344c40,14,
-0x344c80,9,
-0x344d00,9,
-0x344d2c,1,
-0x344d40,3,
-0x344d60,1,
-0x344d80,3,
-0x344e00,2,
-0x344e0c,1,
-0x344e14,5,
-0x344e2c,1,
-0x344e34,5,
-0x344e4c,1,
-0x344e54,5,
-0x344e6c,1,
-0x344e74,5,
-0x344e8c,1,
-0x344e94,5,
-0x344eac,1,
-0x344eb4,3,
-0x345000,29,
-0x345078,4,
-0x345090,2,
-0x3450a0,7,
-0x3450c0,11,
-0x345100,14,
-0x345140,14,
-0x345180,61,
-0x345278,4,
-0x345290,2,
-0x3452a0,7,
-0x3452c0,11,
-0x345300,14,
-0x345340,14,
-0x345380,61,
-0x345478,4,
-0x345490,2,
-0x3454a0,7,
-0x3454c0,11,
-0x345500,14,
-0x345540,14,
-0x345580,61,
-0x345678,4,
-0x345690,2,
-0x3456a0,7,
-0x3456c0,11,
-0x345700,14,
-0x345740,14,
-0x345780,69,
-0x345c00,6,
-0x345c40,14,
-0x345c80,9,
-0x345d00,9,
-0x345d2c,1,
-0x345d40,3,
-0x345d60,1,
-0x345d80,3,
-0x345e00,2,
-0x345e0c,1,
-0x345e14,5,
-0x345e2c,1,
-0x345e34,5,
-0x345e4c,1,
-0x345e54,5,
-0x345e6c,1,
-0x345e74,5,
-0x345e8c,1,
-0x345e94,5,
-0x345eac,1,
-0x345eb4,3,
-0x346000,14,
-0x346040,6,
-0x346060,6,
-0x346080,6,
-0x3460a0,3,
-0x346100,9,
-0x346204,1,
-0x34620c,6,
-0x346240,13,
-0x346280,16,
-0x346800,19,
-0x346850,10,
-0x346880,19,
-0x3468d0,10,
-0x346900,19,
-0x346950,10,
-0x346980,19,
-0x3469d0,10,
-0x346a00,19,
-0x346a50,10,
-0x346a80,19,
-0x346ad0,10,
-0x346b00,19,
-0x346b50,10,
-0x346b80,19,
-0x346bd0,10,
-0x346c00,19,
-0x346c60,6,
-0x346c84,1,
-0x346c94,8,
-0x346cb8,14,
-0x347000,1,
-0x347028,1,
-0x347050,1,
-0x347078,1,
-0x3470a0,4,
-0x3471ac,1,
-0x3471d8,4,
-0x347200,6,
-0x347220,6,
-0x347240,3,
-0x347400,1,
-0x347408,3,
-0x347438,1,
-0x347444,1,
-0x347450,6,
-0x347500,7,
-0x347520,6,
-0x347540,6,
-0x347560,3,
-0x347570,3,
-0x348000,6,
-0x348020,3,
-0x348030,1,
-0x348038,4,
-0x348050,1,
-0x348400,1,
-0x348428,1,
-0x348450,1,
-0x348478,1,
-0x3484a0,6,
-0x3485ac,1,
-0x3485d8,4,
-0x348600,6,
-0x348620,6,
-0x348640,3,
-0x348800,6,
-0x348820,3,
-0x348830,4,
-0x348918,2,
-0x348924,1,
-0x348934,3,
-0x348958,2,
-0x348964,1,
-0x348974,3,
-0x348998,2,
-0x3489a4,1,
-0x3489b4,3,
-0x3489d8,2,
-0x3489e4,1,
-0x3489f4,3,
-0x349020,4,
-0x349040,11,
-0x349074,2,
-0x349080,4,
-0x3490b0,22,
-0x349110,2,
-0x349120,22,
-0x349180,2,
-0x3491a0,6,
-0x3491c0,9,
-0x349200,42,
-0x3492c0,1,
-0x3492c8,13,
-0x349300,25,
-0x34936c,4,
-0x349380,2,
-0x3493a0,1,
-0x3493c0,11,
-0x349404,3,
-0x349420,11,
-0x349480,6,
-0x349500,1,
-0x349520,6,
-0x349540,3,
-0x349550,7,
-0x349570,18,
-0x3495bc,5,
-0x349800,480,
-0x34a020,4,
-0x34a040,11,
-0x34a074,2,
-0x34a080,4,
-0x34a0b0,22,
-0x34a110,2,
-0x34a120,22,
-0x34a180,2,
-0x34a1a0,6,
-0x34a1c0,9,
-0x34a200,42,
-0x34a2c0,1,
-0x34a2c8,13,
-0x34a300,25,
-0x34a36c,4,
-0x34a380,2,
-0x34a3a0,1,
-0x34a3c0,11,
-0x34a404,3,
-0x34a420,11,
-0x34a480,6,
-0x34a500,1,
-0x34a520,6,
-0x34a540,3,
-0x34a550,7,
-0x34a570,18,
-0x34a5bc,5,
-0x34a800,480,
-0x34b020,4,
-0x34b040,11,
-0x34b074,2,
-0x34b080,4,
-0x34b0b0,22,
-0x34b110,2,
-0x34b120,22,
-0x34b180,2,
-0x34b1a0,6,
-0x34b1c0,9,
-0x34b200,42,
-0x34b2c0,1,
-0x34b2c8,13,
-0x34b300,25,
-0x34b36c,4,
-0x34b380,2,
-0x34b3a0,1,
-0x34b3c0,11,
-0x34b404,3,
-0x34b420,11,
-0x34b480,6,
-0x34b500,1,
-0x34b520,6,
-0x34b540,3,
-0x34b550,7,
-0x34b570,18,
-0x34b5bc,5,
-0x34b800,480,
-0x34c020,4,
-0x34c040,11,
-0x34c074,2,
-0x34c080,4,
-0x34c0b0,22,
-0x34c110,2,
-0x34c120,22,
-0x34c180,2,
-0x34c1a0,6,
-0x34c1c0,9,
-0x34c200,42,
-0x34c2c0,1,
-0x34c2c8,13,
-0x34c300,25,
-0x34c36c,4,
-0x34c380,2,
-0x34c3a0,1,
-0x34c3c0,11,
-0x34c404,3,
-0x34c420,11,
-0x34c480,6,
-0x34c500,1,
-0x34c520,6,
-0x34c540,3,
-0x34c550,7,
-0x34c570,18,
-0x34c5bc,5,
-0x34c800,480,
-0x34f800,5,
-0x34f818,1,
-0x34f854,6,
-0x34f880,4,
-0x34f8a4,1,
-0x34f8ac,2,
-0x34f900,5,
-0x34f918,1,
-0x34f954,6,
-0x34f980,4,
-0x34f9a4,1,
-0x34f9ac,2,
-0x34fa00,5,
-0x34fa18,1,
-0x34fa54,6,
-0x34fa80,4,
-0x34faa4,1,
-0x34faac,2,
-0x34fb00,5,
-0x34fb18,1,
-0x34fb54,6,
-0x34fb80,4,
-0x34fba4,1,
-0x34fbac,2,
-0x354000,3,
-0x354018,10,
-0x354100,58,
-0x3541f0,1,
-0x354400,3,
-0x354418,10,
-0x354500,58,
-0x3545f0,1,
-0x354800,3,
-0x354810,3,
-0x354820,6,
-0x354880,9,
-0x3548c0,9,
-0x354900,8,
-0x354938,2,
-0x354944,1,
-0x354954,3,
-0x354980,8,
-0x3549b8,2,
-0x3549c4,1,
-0x3549d4,3,
-0x355000,3,
-0x355018,10,
-0x355100,58,
-0x3551f0,1,
-0x355400,3,
-0x355418,10,
-0x355500,58,
-0x3555f0,1,
-0x355800,3,
-0x355810,3,
-0x355820,6,
-0x355880,9,
-0x3558c0,9,
-0x355900,8,
-0x355938,2,
-0x355944,1,
-0x355954,3,
-0x355980,8,
-0x3559b8,2,
-0x3559c4,1,
-0x3559d4,3,
-0x356004,7,
-0x356024,1,
-0x356030,4,
-0x356300,5,
-0x35631c,2,
-0x356600,10,
-0x356630,1,
-0x356640,10,
-0x356670,1,
-0x356700,10,
-0x356730,1,
-0x356740,10,
-0x356770,1,
-0x356800,19,
-0x356890,15,
-0x356910,15,
-0x356a00,10,
-0x356ab8,4,
-0x356b00,3,
-0x356b10,1,
-0x356e00,6,
-0x356f00,5,
-0x357000,65,
-0x357800,6,
-0x357820,6,
-0x357840,6,
-0x357860,6,
-0x357880,6,
-0x3578a0,6,
-0x3578c0,6,
-0x3578e0,3,
-0x357900,6,
-0x357920,6,
-0x357940,6,
-0x357960,6,
-0x357980,6,
-0x3579a0,6,
-0x3579c0,6,
-0x3579e0,3,
-0x357a00,6,
-0x357a20,6,
-0x357a40,3,
-0x357a80,7,
-0x357aa0,7,
-0x357ac0,9,
-0x357b00,9,
-0x357b40,10,
-0x357b80,10,
-0x357bc0,10,
-0x357c00,10,
-0x357c40,10,
-0x357c80,10,
-0x357cc0,3,
-0x357e40,7,
-0x357e60,7,
-0x357e80,7,
-0x357ea0,7,
-0x357ec0,7,
-0x357ee0,7,
-0x357f00,7,
-0x357f20,7,
-0x357f40,7,
-0x357f60,4,
-0x357f78,13,
-0x358000,2,
-0x35800c,3,
-0x358028,2,
-0x358038,2,
-0x358080,29,
-0x3580f8,1,
-0x358100,13,
-0x358140,13,
-0x358500,6,
-0x358520,6,
-0x358540,3,
-0x358580,10,
-0x3585c0,15,
-0x358600,2,
-0x358618,5,
-0x358630,1,
-0x358800,2,
-0x35880c,3,
-0x358828,2,
-0x358838,2,
-0x358880,29,
-0x3588f8,1,
-0x358900,13,
-0x358940,13,
-0x358d00,6,
-0x358d20,6,
-0x358d40,3,
-0x358d80,10,
-0x358dc0,15,
-0x358e00,2,
-0x358e18,5,
-0x358e30,1,
-0x359800,3,
-0x359828,3,
-0x359850,3,
-0x359878,3,
-0x3598a0,9,
-0x3599ac,1,
-0x3599d8,4,
-0x359a00,6,
-0x359a20,6,
-0x359a40,6,
-0x359a60,6,
-0x359a80,6,
-0x359aa0,6,
-0x359ac0,3,
-0x359c00,6,
-0x359c20,3,
-0x359c40,2,
-0x359c60,1,
-0x360000,4,
-0x360014,1,
-0x360020,3,
-0x360030,3,
-0x360040,8,
-0x36007c,2,
-0x3600a0,6,
-0x3600c0,6,
-0x3600e0,6,
-0x360100,4,
-0x360114,1,
-0x360120,3,
-0x360130,3,
-0x360140,8,
-0x36017c,2,
-0x3601a0,6,
-0x3601c0,6,
-0x3601e0,6,
-0x360200,4,
-0x360214,1,
-0x360220,3,
-0x360230,3,
-0x360240,8,
-0x36027c,2,
-0x3602a0,6,
-0x3602c0,6,
-0x3602e0,6,
-0x360300,4,
-0x360314,1,
-0x360320,3,
-0x360330,3,
-0x360340,8,
-0x36037c,2,
-0x3603a0,6,
-0x3603c0,6,
-0x3603e0,6,
-0x360400,6,
-0x360440,6,
-0x360480,3,
-0x3604c0,3,
-0x360500,2,
-0x36050c,4,
-0x360520,2,
-0x36052c,4,
-0x360540,2,
-0x360c00,13,
-0x360c40,12,
-0x360c80,13,
-0x360cc0,12,
-0x360d00,14,
-0x360d40,6,
-0x360d80,14,
-0x360dc0,6,
-0x360e00,11,
-0x360e40,6,
-0x360e60,6,
-0x360e80,6,
-0x360ea0,6,
-0x361000,2,
-0x361014,4,
-0x361040,3,
-0x361050,3,
-0x361080,43,
-0x361140,11,
-0x361180,1,
-0x36119c,15,
-0x361200,12,
-0x361300,1,
-0x361308,6,
-0x361324,10,
-0x361380,1,
-0x361388,6,
-0x3613a4,10,
-0x361400,7,
-0x361420,7,
-0x361500,12,
-0x361540,12,
-0x361580,4,
-0x361800,14,
-0x36183c,9,
-0x361864,6,
-0x361880,2,
-0x361890,4,
-0x361900,14,
-0x36193c,9,
-0x361964,6,
-0x361980,2,
-0x361990,4,
-0x361a00,16,
-0x361a50,4,
-0x361a80,16,
-0x361ad0,4,
-0x361b00,6,
-0x361b20,6,
-0x361b40,3,
-0x361b80,6,
-0x361ba0,6,
-0x361bc0,3,
-0x361c00,6,
-0x361c20,6,
-0x361c40,3,
-0x361c80,6,
-0x361ca0,6,
-0x361cc0,3,
-0x361d10,2,
-0x361d1c,1,
-0x361d50,2,
-0x361d5c,1,
-0x361d80,1,
-0x361da0,1,
-0x361da8,4,
-0x361dc0,1,
-0x361de0,1,
-0x361de8,4,
-0x361e00,13,
-0x361e40,6,
-0x361e60,6,
-0x361e80,6,
-0x361ea0,6,
-0x361ec0,7,
-0x361ee0,7,
-0x361f00,12,
-0x361f34,2,
-0x361f40,3,
-0x361f50,8,
-0x362000,4,
-0x362014,1,
-0x362020,3,
-0x362030,3,
-0x362040,8,
-0x36207c,2,
-0x3620a0,6,
-0x3620c0,6,
-0x3620e0,6,
-0x362100,4,
-0x362114,1,
-0x362120,3,
-0x362130,3,
-0x362140,8,
-0x36217c,2,
-0x3621a0,6,
-0x3621c0,6,
-0x3621e0,6,
-0x362200,4,
-0x362214,1,
-0x362220,3,
-0x362230,3,
-0x362240,8,
-0x36227c,2,
-0x3622a0,6,
-0x3622c0,6,
-0x3622e0,6,
-0x362300,4,
-0x362314,1,
-0x362320,3,
-0x362330,3,
-0x362340,8,
-0x36237c,2,
-0x3623a0,6,
-0x3623c0,6,
-0x3623e0,6,
-0x362400,6,
-0x362440,6,
-0x362480,3,
-0x3624c0,3,
-0x362500,2,
-0x36250c,4,
-0x362520,2,
-0x36252c,4,
-0x362540,2,
-0x362c00,13,
-0x362c40,12,
-0x362c80,13,
-0x362cc0,12,
-0x362d00,14,
-0x362d40,6,
-0x362d80,14,
-0x362dc0,6,
-0x362e00,11,
-0x362e40,6,
-0x362e60,6,
-0x362e80,6,
-0x362ea0,6,
-0x363000,2,
-0x363014,4,
-0x363040,3,
-0x363050,3,
-0x363080,43,
-0x363140,11,
-0x363180,1,
-0x36319c,15,
-0x363200,12,
-0x363300,1,
-0x363308,6,
-0x363324,10,
-0x363380,1,
-0x363388,6,
-0x3633a4,10,
-0x363400,7,
-0x363420,7,
-0x363500,12,
-0x363540,12,
-0x363580,4,
-0x363800,14,
-0x36383c,9,
-0x363864,6,
-0x363880,2,
-0x363890,4,
-0x363900,14,
-0x36393c,9,
-0x363964,6,
-0x363980,2,
-0x363990,4,
-0x363a00,16,
-0x363a50,4,
-0x363a80,16,
-0x363ad0,4,
-0x363b00,6,
-0x363b20,6,
-0x363b40,3,
-0x363b80,6,
-0x363ba0,6,
-0x363bc0,3,
-0x363c00,6,
-0x363c20,6,
-0x363c40,3,
-0x363c80,6,
-0x363ca0,6,
-0x363cc0,3,
-0x363d10,2,
-0x363d1c,1,
-0x363d50,2,
-0x363d5c,1,
-0x363d80,1,
-0x363da0,1,
-0x363da8,4,
-0x363dc0,1,
-0x363de0,1,
-0x363de8,4,
-0x363e00,13,
-0x363e40,6,
-0x363e60,6,
-0x363e80,6,
-0x363ea0,6,
-0x363ec0,7,
-0x363ee0,7,
-0x363f00,12,
-0x363f34,2,
-0x363f40,3,
-0x363f50,8,
-0x364000,29,
-0x364078,4,
-0x364090,2,
-0x3640a0,7,
-0x3640c0,11,
-0x364100,14,
-0x364140,14,
-0x364180,61,
-0x364278,4,
-0x364290,2,
-0x3642a0,7,
-0x3642c0,11,
-0x364300,14,
-0x364340,14,
-0x364380,61,
-0x364478,4,
-0x364490,2,
-0x3644a0,7,
-0x3644c0,11,
-0x364500,14,
-0x364540,14,
-0x364580,61,
-0x364678,4,
-0x364690,2,
-0x3646a0,7,
-0x3646c0,11,
-0x364700,14,
-0x364740,14,
-0x364780,69,
-0x364c00,6,
-0x364c40,14,
-0x364c80,9,
-0x364d00,9,
-0x364d2c,1,
-0x364d40,3,
-0x364d60,1,
-0x364d80,3,
-0x364e00,2,
-0x364e0c,1,
-0x364e14,5,
-0x364e2c,1,
-0x364e34,5,
-0x364e4c,1,
-0x364e54,5,
-0x364e6c,1,
-0x364e74,5,
-0x364e8c,1,
-0x364e94,5,
-0x364eac,1,
-0x364eb4,3,
-0x365000,29,
-0x365078,4,
-0x365090,2,
-0x3650a0,7,
-0x3650c0,11,
-0x365100,14,
-0x365140,14,
-0x365180,61,
-0x365278,4,
-0x365290,2,
-0x3652a0,7,
-0x3652c0,11,
-0x365300,14,
-0x365340,14,
-0x365380,61,
-0x365478,4,
-0x365490,2,
-0x3654a0,7,
-0x3654c0,11,
-0x365500,14,
-0x365540,14,
-0x365580,61,
-0x365678,4,
-0x365690,2,
-0x3656a0,7,
-0x3656c0,11,
-0x365700,14,
-0x365740,14,
-0x365780,69,
-0x365c00,6,
-0x365c40,14,
-0x365c80,9,
-0x365d00,9,
-0x365d2c,1,
-0x365d40,3,
-0x365d60,1,
-0x365d80,3,
-0x365e00,2,
-0x365e0c,1,
-0x365e14,5,
-0x365e2c,1,
-0x365e34,5,
-0x365e4c,1,
-0x365e54,5,
-0x365e6c,1,
-0x365e74,5,
-0x365e8c,1,
-0x365e94,5,
-0x365eac,1,
-0x365eb4,3,
-0x366000,14,
-0x366040,6,
-0x366060,6,
-0x366080,6,
-0x3660a0,3,
-0x366100,9,
-0x366204,1,
-0x36620c,6,
-0x366240,13,
-0x366280,16,
-0x366400,8,
-0x366424,15,
-0x366464,15,
-0x3664a4,15,
-0x3664e4,30,
-0x366580,10,
-0x3665ac,1,
-0x3665b4,5,
-0x3665cc,1,
-0x3665d4,5,
-0x3665ec,1,
-0x3665f4,13,
-0x366680,4,
-0x366694,2,
-0x3666a0,5,
-0x3666c0,5,
-0x3666e0,4,
-0x366800,19,
-0x366850,10,
-0x366880,19,
-0x3668d0,10,
-0x366900,19,
-0x366950,10,
-0x366980,19,
-0x3669d0,10,
-0x366a00,19,
-0x366a50,10,
-0x366a80,19,
-0x366ad0,10,
-0x366b00,19,
-0x366b50,10,
-0x366b80,19,
-0x366bd0,10,
-0x366c00,19,
-0x366c60,6,
-0x366c84,1,
-0x366c94,8,
-0x366cb8,14,
-0x367000,1,
-0x367028,1,
-0x367050,1,
-0x367078,1,
-0x3670a0,4,
-0x3671ac,1,
-0x3671d8,4,
-0x367200,6,
-0x367220,6,
-0x367240,3,
-0x367400,1,
-0x367408,3,
-0x367438,1,
-0x367444,1,
-0x367450,6,
-0x367500,7,
-0x367520,6,
-0x367540,6,
-0x367560,3,
-0x367570,3,
-0x368000,6,
-0x368020,3,
-0x368030,1,
-0x368038,4,
-0x368050,1,
-0x368400,1,
-0x368428,1,
-0x368450,1,
-0x368478,1,
-0x3684a0,6,
-0x3685ac,1,
-0x3685d8,4,
-0x368600,6,
-0x368620,6,
-0x368640,3,
-0x368800,6,
-0x368820,3,
-0x368830,4,
-0x368918,2,
-0x368924,1,
-0x368934,3,
-0x368958,2,
-0x368964,1,
-0x368974,3,
-0x368998,2,
-0x3689a4,1,
-0x3689b4,3,
-0x3689d8,2,
-0x3689e4,1,
-0x3689f4,3,
-0x369020,4,
-0x369040,11,
-0x369074,2,
-0x369080,4,
-0x3690b0,22,
-0x369110,2,
-0x369120,22,
-0x369180,2,
-0x3691a0,6,
-0x3691c0,9,
-0x369200,42,
-0x3692c0,1,
-0x3692c8,13,
-0x369300,25,
-0x36936c,4,
-0x369380,2,
-0x3693a0,1,
-0x3693c0,11,
-0x369404,3,
-0x369420,11,
-0x369480,6,
-0x369500,1,
-0x369520,6,
-0x369540,3,
-0x369550,7,
-0x369570,18,
-0x3695bc,5,
-0x369800,480,
-0x36a020,4,
-0x36a040,11,
-0x36a074,2,
-0x36a080,4,
-0x36a0b0,22,
-0x36a110,2,
-0x36a120,22,
-0x36a180,2,
-0x36a1a0,6,
-0x36a1c0,9,
-0x36a200,42,
-0x36a2c0,1,
-0x36a2c8,13,
-0x36a300,25,
-0x36a36c,4,
-0x36a380,2,
-0x36a3a0,1,
-0x36a3c0,11,
-0x36a404,3,
-0x36a420,11,
-0x36a480,6,
-0x36a500,1,
-0x36a520,6,
-0x36a540,3,
-0x36a550,7,
-0x36a570,18,
-0x36a5bc,5,
-0x36a800,480,
-0x36b020,4,
-0x36b040,11,
-0x36b074,2,
-0x36b080,4,
-0x36b0b0,22,
-0x36b110,2,
-0x36b120,22,
-0x36b180,2,
-0x36b1a0,6,
-0x36b1c0,9,
-0x36b200,42,
-0x36b2c0,1,
-0x36b2c8,13,
-0x36b300,25,
-0x36b36c,4,
-0x36b380,2,
-0x36b3a0,1,
-0x36b3c0,11,
-0x36b404,3,
-0x36b420,11,
-0x36b480,6,
-0x36b500,1,
-0x36b520,6,
-0x36b540,3,
-0x36b550,7,
-0x36b570,18,
-0x36b5bc,5,
-0x36b800,480,
-0x36c020,4,
-0x36c040,11,
-0x36c074,2,
-0x36c080,4,
-0x36c0b0,22,
-0x36c110,2,
-0x36c120,22,
-0x36c180,2,
-0x36c1a0,6,
-0x36c1c0,9,
-0x36c200,42,
-0x36c2c0,1,
-0x36c2c8,13,
-0x36c300,25,
-0x36c36c,4,
-0x36c380,2,
-0x36c3a0,1,
-0x36c3c0,11,
-0x36c404,3,
-0x36c420,11,
-0x36c480,6,
-0x36c500,1,
-0x36c520,6,
-0x36c540,3,
-0x36c550,7,
-0x36c570,18,
-0x36c5bc,5,
-0x36c800,480,
-0x36f800,5,
-0x36f818,1,
-0x36f854,6,
-0x36f880,4,
-0x36f8a4,1,
-0x36f8ac,2,
-0x36f900,5,
-0x36f918,1,
-0x36f954,6,
-0x36f980,4,
-0x36f9a4,1,
-0x36f9ac,2,
-0x36fa00,5,
-0x36fa18,1,
-0x36fa54,6,
-0x36fa80,4,
-0x36faa4,1,
-0x36faac,2,
-0x36fb00,5,
-0x36fb18,1,
-0x36fb54,6,
-0x36fb80,4,
-0x36fba4,1,
-0x36fbac,2,
-0x374000,3,
-0x374018,10,
-0x374100,58,
-0x3741f0,1,
-0x374400,3,
-0x374418,10,
-0x374500,58,
-0x3745f0,1,
-0x374800,3,
-0x374810,3,
-0x374820,6,
-0x374880,9,
-0x3748c0,9,
-0x374900,8,
-0x374938,2,
-0x374944,1,
-0x374954,3,
-0x374980,8,
-0x3749b8,2,
-0x3749c4,1,
-0x3749d4,3,
-0x375000,3,
-0x375018,10,
-0x375100,58,
-0x3751f0,1,
-0x375400,3,
-0x375418,10,
-0x375500,58,
-0x3755f0,1,
-0x375800,3,
-0x375810,3,
-0x375820,6,
-0x375880,9,
-0x3758c0,9,
-0x375900,8,
-0x375938,2,
-0x375944,1,
-0x375954,3,
-0x375980,8,
-0x3759b8,2,
-0x3759c4,1,
-0x3759d4,3,
-0x376004,7,
-0x376024,1,
-0x376030,4,
-0x376300,5,
-0x37631c,2,
-0x376600,10,
-0x376630,1,
-0x376640,10,
-0x376670,1,
-0x376700,10,
-0x376730,1,
-0x376740,10,
-0x376770,1,
-0x376800,19,
-0x376890,15,
-0x376910,15,
-0x376a00,10,
-0x376ab8,4,
-0x376b00,3,
-0x376b10,1,
-0x376e00,6,
-0x376f00,5,
-0x377000,65,
-0x377800,6,
-0x377820,6,
-0x377840,6,
-0x377860,6,
-0x377880,6,
-0x3778a0,6,
-0x3778c0,6,
-0x3778e0,3,
-0x377900,6,
-0x377920,6,
-0x377940,6,
-0x377960,6,
-0x377980,6,
-0x3779a0,6,
-0x3779c0,6,
-0x3779e0,3,
-0x377a00,6,
-0x377a20,6,
-0x377a40,3,
-0x377a80,7,
-0x377aa0,7,
-0x377ac0,9,
-0x377b00,9,
-0x377b40,10,
-0x377b80,10,
-0x377bc0,10,
-0x377c00,10,
-0x377c40,10,
-0x377c80,10,
-0x377cc0,3,
-0x377e40,7,
-0x377e60,7,
-0x377e80,7,
-0x377ea0,7,
-0x377ec0,7,
-0x377ee0,7,
-0x377f00,7,
-0x377f20,7,
-0x377f40,7,
-0x377f60,4,
-0x377f78,13,
-0x378000,2,
-0x37800c,3,
-0x378028,2,
-0x378038,2,
-0x378080,29,
-0x3780f8,1,
-0x378100,13,
-0x378140,13,
-0x378500,6,
-0x378520,6,
-0x378540,3,
-0x378580,10,
-0x3785c0,15,
-0x378600,2,
-0x378618,5,
-0x378630,1,
-0x378800,2,
-0x37880c,3,
-0x378828,2,
-0x378838,2,
-0x378880,29,
-0x3788f8,1,
-0x378900,13,
-0x378940,13,
-0x378d00,6,
-0x378d20,6,
-0x378d40,3,
-0x378d80,10,
-0x378dc0,15,
-0x378e00,2,
-0x378e18,5,
-0x378e30,1,
-0x379800,3,
-0x379828,3,
-0x379850,3,
-0x379878,3,
-0x3798a0,9,
-0x3799ac,1,
-0x3799d8,4,
-0x379a00,6,
-0x379a20,6,
-0x379a40,6,
-0x379a60,6,
-0x379a80,6,
-0x379aa0,6,
-0x379ac0,3,
-0x379c00,6,
-0x379c20,3,
-0x379c40,2,
-0x379c60,1,
-0x380000,4,
-0x380014,1,
-0x380020,3,
-0x380030,3,
-0x380040,8,
-0x38007c,2,
-0x3800a0,6,
-0x3800c0,6,
-0x3800e0,6,
-0x380100,4,
-0x380114,1,
-0x380120,3,
-0x380130,3,
-0x380140,8,
-0x38017c,2,
-0x3801a0,6,
-0x3801c0,6,
-0x3801e0,6,
-0x380200,4,
-0x380214,1,
-0x380220,3,
-0x380230,3,
-0x380240,8,
-0x38027c,2,
-0x3802a0,6,
-0x3802c0,6,
-0x3802e0,6,
-0x380300,4,
-0x380314,1,
-0x380320,3,
-0x380330,3,
-0x380340,8,
-0x38037c,2,
-0x3803a0,6,
-0x3803c0,6,
-0x3803e0,6,
-0x380400,6,
-0x380440,6,
-0x380480,3,
-0x3804c0,3,
-0x380500,2,
-0x38050c,4,
-0x380520,2,
-0x38052c,4,
-0x380540,2,
-0x380c00,13,
-0x380c40,12,
-0x380c80,13,
-0x380cc0,12,
-0x380d00,14,
-0x380d40,6,
-0x380d80,14,
-0x380dc0,6,
-0x380e00,11,
-0x380e40,6,
-0x380e60,6,
-0x380e80,6,
-0x380ea0,6,
-0x381000,2,
-0x381014,4,
-0x381040,3,
-0x381050,3,
-0x381080,43,
-0x381140,11,
-0x381180,1,
-0x38119c,15,
-0x381200,12,
-0x381300,1,
-0x381308,6,
-0x381324,10,
-0x381380,1,
-0x381388,6,
-0x3813a4,10,
-0x381400,7,
-0x381420,7,
-0x381500,12,
-0x381540,12,
-0x381580,4,
-0x381800,14,
-0x38183c,9,
-0x381864,6,
-0x381880,2,
-0x381890,4,
-0x381900,14,
-0x38193c,9,
-0x381964,6,
-0x381980,2,
-0x381990,4,
-0x381a00,16,
-0x381a50,4,
-0x381a80,16,
-0x381ad0,4,
-0x381b00,6,
-0x381b20,6,
-0x381b40,3,
-0x381b80,6,
-0x381ba0,6,
-0x381bc0,3,
-0x381c00,6,
-0x381c20,6,
-0x381c40,3,
-0x381c80,6,
-0x381ca0,6,
-0x381cc0,3,
-0x381d10,2,
-0x381d1c,1,
-0x381d50,2,
-0x381d5c,1,
-0x381d80,1,
-0x381da0,1,
-0x381da8,4,
-0x381dc0,1,
-0x381de0,1,
-0x381de8,4,
-0x381e00,13,
-0x381e40,6,
-0x381e60,6,
-0x381e80,6,
-0x381ea0,6,
-0x381ec0,7,
-0x381ee0,7,
-0x381f00,12,
-0x381f34,2,
-0x381f40,3,
-0x381f50,8,
-0x382000,4,
-0x382014,1,
-0x382020,3,
-0x382030,3,
-0x382040,8,
-0x38207c,2,
-0x3820a0,6,
-0x3820c0,6,
-0x3820e0,6,
-0x382100,4,
-0x382114,1,
-0x382120,3,
-0x382130,3,
-0x382140,8,
-0x38217c,2,
-0x3821a0,6,
-0x3821c0,6,
-0x3821e0,6,
-0x382200,4,
-0x382214,1,
-0x382220,3,
-0x382230,3,
-0x382240,8,
-0x38227c,2,
-0x3822a0,6,
-0x3822c0,6,
-0x3822e0,6,
-0x382300,4,
-0x382314,1,
-0x382320,3,
-0x382330,3,
-0x382340,8,
-0x38237c,2,
-0x3823a0,6,
-0x3823c0,6,
-0x3823e0,6,
-0x382400,6,
-0x382440,6,
-0x382480,3,
-0x3824c0,3,
-0x382500,2,
-0x38250c,4,
-0x382520,2,
-0x38252c,4,
-0x382540,2,
-0x382c00,13,
-0x382c40,12,
-0x382c80,13,
-0x382cc0,12,
-0x382d00,14,
-0x382d40,6,
-0x382d80,14,
-0x382dc0,6,
-0x382e00,11,
-0x382e40,6,
-0x382e60,6,
-0x382e80,6,
-0x382ea0,6,
-0x383000,2,
-0x383014,4,
-0x383040,3,
-0x383050,3,
-0x383080,43,
-0x383140,11,
-0x383180,1,
-0x38319c,15,
-0x383200,12,
-0x383300,1,
-0x383308,6,
-0x383324,10,
-0x383380,1,
-0x383388,6,
-0x3833a4,10,
-0x383400,7,
-0x383420,7,
-0x383500,12,
-0x383540,12,
-0x383580,4,
-0x383800,14,
-0x38383c,9,
-0x383864,6,
-0x383880,2,
-0x383890,4,
-0x383900,14,
-0x38393c,9,
-0x383964,6,
-0x383980,2,
-0x383990,4,
-0x383a00,16,
-0x383a50,4,
-0x383a80,16,
-0x383ad0,4,
-0x383b00,6,
-0x383b20,6,
-0x383b40,3,
-0x383b80,6,
-0x383ba0,6,
-0x383bc0,3,
-0x383c00,6,
-0x383c20,6,
-0x383c40,3,
-0x383c80,6,
-0x383ca0,6,
-0x383cc0,3,
-0x383d10,2,
-0x383d1c,1,
-0x383d50,2,
-0x383d5c,1,
-0x383d80,1,
-0x383da0,1,
-0x383da8,4,
-0x383dc0,1,
-0x383de0,1,
-0x383de8,4,
-0x383e00,13,
-0x383e40,6,
-0x383e60,6,
-0x383e80,6,
-0x383ea0,6,
-0x383ec0,7,
-0x383ee0,7,
-0x383f00,12,
-0x383f34,2,
-0x383f40,3,
-0x383f50,8,
-0x384000,29,
-0x384078,4,
-0x384090,2,
-0x3840a0,7,
-0x3840c0,11,
-0x384100,14,
-0x384140,14,
-0x384180,61,
-0x384278,4,
-0x384290,2,
-0x3842a0,7,
-0x3842c0,11,
-0x384300,14,
-0x384340,14,
-0x384380,61,
-0x384478,4,
-0x384490,2,
-0x3844a0,7,
-0x3844c0,11,
-0x384500,14,
-0x384540,14,
-0x384580,61,
-0x384678,4,
-0x384690,2,
-0x3846a0,7,
-0x3846c0,11,
-0x384700,14,
-0x384740,14,
-0x384780,69,
-0x384c00,6,
-0x384c40,14,
-0x384c80,9,
-0x384d00,9,
-0x384d2c,1,
-0x384d40,3,
-0x384d60,1,
-0x384d80,3,
-0x384e00,2,
-0x384e0c,1,
-0x384e14,5,
-0x384e2c,1,
-0x384e34,5,
-0x384e4c,1,
-0x384e54,5,
-0x384e6c,1,
-0x384e74,5,
-0x384e8c,1,
-0x384e94,5,
-0x384eac,1,
-0x384eb4,3,
-0x385000,29,
-0x385078,4,
-0x385090,2,
-0x3850a0,7,
-0x3850c0,11,
-0x385100,14,
-0x385140,14,
-0x385180,61,
-0x385278,4,
-0x385290,2,
-0x3852a0,7,
-0x3852c0,11,
-0x385300,14,
-0x385340,14,
-0x385380,61,
-0x385478,4,
-0x385490,2,
-0x3854a0,7,
-0x3854c0,11,
-0x385500,14,
-0x385540,14,
-0x385580,61,
-0x385678,4,
-0x385690,2,
-0x3856a0,7,
-0x3856c0,11,
-0x385700,14,
-0x385740,14,
-0x385780,69,
-0x385c00,6,
-0x385c40,14,
-0x385c80,9,
-0x385d00,9,
-0x385d2c,1,
-0x385d40,3,
-0x385d60,1,
-0x385d80,3,
-0x385e00,2,
-0x385e0c,1,
-0x385e14,5,
-0x385e2c,1,
-0x385e34,5,
-0x385e4c,1,
-0x385e54,5,
-0x385e6c,1,
-0x385e74,5,
-0x385e8c,1,
-0x385e94,5,
-0x385eac,1,
-0x385eb4,3,
-0x386000,14,
-0x386040,6,
-0x386060,6,
-0x386080,6,
-0x3860a0,3,
-0x386100,9,
-0x386204,1,
-0x38620c,6,
-0x386240,13,
-0x386280,16,
-0x386800,19,
-0x386850,10,
-0x386880,19,
-0x3868d0,10,
-0x386900,19,
-0x386950,10,
-0x386980,19,
-0x3869d0,10,
-0x386a00,19,
-0x386a50,10,
-0x386a80,19,
-0x386ad0,10,
-0x386b00,19,
-0x386b50,10,
-0x386b80,19,
-0x386bd0,10,
-0x386c00,19,
-0x386c60,6,
-0x386c84,1,
-0x386c94,8,
-0x386cb8,14,
-0x387000,1,
-0x387028,1,
-0x387050,1,
-0x387078,1,
-0x3870a0,4,
-0x3871ac,1,
-0x3871d8,4,
-0x387200,6,
-0x387220,6,
-0x387240,3,
-0x387400,1,
-0x387408,3,
-0x387438,1,
-0x387444,1,
-0x387450,6,
-0x387500,7,
-0x387520,6,
-0x387540,6,
-0x387560,3,
-0x387570,3,
-0x388000,6,
-0x388020,3,
-0x388030,1,
-0x388038,4,
-0x388050,1,
-0x388400,1,
-0x388428,1,
-0x388450,1,
-0x388478,1,
-0x3884a0,6,
-0x3885ac,1,
-0x3885d8,4,
-0x388600,6,
-0x388620,6,
-0x388640,3,
-0x388800,6,
-0x388820,3,
-0x388830,4,
-0x388918,2,
-0x388924,1,
-0x388934,3,
-0x388958,2,
-0x388964,1,
-0x388974,3,
-0x388998,2,
-0x3889a4,1,
-0x3889b4,3,
-0x3889d8,2,
-0x3889e4,1,
-0x3889f4,3,
-0x389020,4,
-0x389040,11,
-0x389074,2,
-0x389080,4,
-0x3890b0,22,
-0x389110,2,
-0x389120,22,
-0x389180,2,
-0x3891a0,6,
-0x3891c0,9,
-0x389200,42,
-0x3892c0,1,
-0x3892c8,13,
-0x389300,25,
-0x38936c,4,
-0x389380,2,
-0x3893a0,1,
-0x3893c0,11,
-0x389404,3,
-0x389420,11,
-0x389480,6,
-0x389500,1,
-0x389520,6,
-0x389540,3,
-0x389550,7,
-0x389570,18,
-0x3895bc,5,
-0x389800,480,
-0x38a020,4,
-0x38a040,11,
-0x38a074,2,
-0x38a080,4,
-0x38a0b0,22,
-0x38a110,2,
-0x38a120,22,
-0x38a180,2,
-0x38a1a0,6,
-0x38a1c0,9,
-0x38a200,42,
-0x38a2c0,1,
-0x38a2c8,13,
-0x38a300,25,
-0x38a36c,4,
-0x38a380,2,
-0x38a3a0,1,
-0x38a3c0,11,
-0x38a404,3,
-0x38a420,11,
-0x38a480,6,
-0x38a500,1,
-0x38a520,6,
-0x38a540,3,
-0x38a550,7,
-0x38a570,18,
-0x38a5bc,5,
-0x38a800,480,
-0x38b020,4,
-0x38b040,11,
-0x38b074,2,
-0x38b080,4,
-0x38b0b0,22,
-0x38b110,2,
-0x38b120,22,
-0x38b180,2,
-0x38b1a0,6,
-0x38b1c0,9,
-0x38b200,42,
-0x38b2c0,1,
-0x38b2c8,13,
-0x38b300,25,
-0x38b36c,4,
-0x38b380,2,
-0x38b3a0,1,
-0x38b3c0,11,
-0x38b404,3,
-0x38b420,11,
-0x38b480,6,
-0x38b500,1,
-0x38b520,6,
-0x38b540,3,
-0x38b550,7,
-0x38b570,18,
-0x38b5bc,5,
-0x38b800,480,
-0x38c020,4,
-0x38c040,11,
-0x38c074,2,
-0x38c080,4,
-0x38c0b0,22,
-0x38c110,2,
-0x38c120,22,
-0x38c180,2,
-0x38c1a0,6,
-0x38c1c0,9,
-0x38c200,42,
-0x38c2c0,1,
-0x38c2c8,13,
-0x38c300,25,
-0x38c36c,4,
-0x38c380,2,
-0x38c3a0,1,
-0x38c3c0,11,
-0x38c404,3,
-0x38c420,11,
-0x38c480,6,
-0x38c500,1,
-0x38c520,6,
-0x38c540,3,
-0x38c550,7,
-0x38c570,18,
-0x38c5bc,5,
-0x38c800,480,
-0x38f800,5,
-0x38f818,1,
-0x38f854,6,
-0x38f880,4,
-0x38f8a4,1,
-0x38f8ac,2,
-0x38f900,5,
-0x38f918,1,
-0x38f954,6,
-0x38f980,4,
-0x38f9a4,1,
-0x38f9ac,2,
-0x38fa00,5,
-0x38fa18,1,
-0x38fa54,6,
-0x38fa80,4,
-0x38faa4,1,
-0x38faac,2,
-0x38fb00,5,
-0x38fb18,1,
-0x38fb54,6,
-0x38fb80,4,
-0x38fba4,1,
-0x38fbac,2,
-0x394000,3,
-0x394018,10,
-0x394100,58,
-0x3941f0,1,
-0x394400,3,
-0x394418,10,
-0x394500,58,
-0x3945f0,1,
-0x394800,3,
-0x394810,3,
-0x394820,6,
-0x394880,9,
-0x3948c0,9,
-0x394900,8,
-0x394938,2,
-0x394944,1,
-0x394954,3,
-0x394980,8,
-0x3949b8,2,
-0x3949c4,1,
-0x3949d4,3,
-0x395000,3,
-0x395018,10,
-0x395100,58,
-0x3951f0,1,
-0x395400,3,
-0x395418,10,
-0x395500,58,
-0x3955f0,1,
-0x395800,3,
-0x395810,3,
-0x395820,6,
-0x395880,9,
-0x3958c0,9,
-0x395900,8,
-0x395938,2,
-0x395944,1,
-0x395954,3,
-0x395980,8,
-0x3959b8,2,
-0x3959c4,1,
-0x3959d4,3,
-0x396004,7,
-0x396024,1,
-0x396030,4,
-0x396300,5,
-0x39631c,2,
-0x396600,10,
-0x396630,1,
-0x396640,10,
-0x396670,1,
-0x396700,10,
-0x396730,1,
-0x396740,10,
-0x396770,1,
-0x396800,19,
-0x396890,15,
-0x396910,15,
-0x396a00,10,
-0x396ab8,4,
-0x396b00,3,
-0x396b10,1,
-0x396e00,6,
-0x396f00,5,
-0x397000,65,
-0x397800,6,
-0x397820,6,
-0x397840,6,
-0x397860,6,
-0x397880,6,
-0x3978a0,6,
-0x3978c0,6,
-0x3978e0,3,
-0x397900,6,
-0x397920,6,
-0x397940,6,
-0x397960,6,
-0x397980,6,
-0x3979a0,6,
-0x3979c0,6,
-0x3979e0,3,
-0x397a00,6,
-0x397a20,6,
-0x397a40,3,
-0x397a80,7,
-0x397aa0,7,
-0x397ac0,9,
-0x397b00,9,
-0x397b40,10,
-0x397b80,10,
-0x397bc0,10,
-0x397c00,10,
-0x397c40,10,
-0x397c80,10,
-0x397cc0,3,
-0x397e40,7,
-0x397e60,7,
-0x397e80,7,
-0x397ea0,7,
-0x397ec0,7,
-0x397ee0,7,
-0x397f00,7,
-0x397f20,7,
-0x397f40,7,
-0x397f60,4,
-0x397f78,13,
-0x398000,2,
-0x39800c,3,
-0x398028,2,
-0x398038,2,
-0x398080,29,
-0x3980f8,1,
-0x398100,13,
-0x398140,13,
-0x398500,6,
-0x398520,6,
-0x398540,3,
-0x398580,10,
-0x3985c0,15,
-0x398600,2,
-0x398618,5,
-0x398630,1,
-0x398800,2,
-0x39880c,3,
-0x398828,2,
-0x398838,2,
-0x398880,29,
-0x3988f8,1,
-0x398900,13,
-0x398940,13,
-0x398d00,6,
-0x398d20,6,
-0x398d40,3,
-0x398d80,10,
-0x398dc0,15,
-0x398e00,2,
-0x398e18,5,
-0x398e30,1,
-0x399800,3,
-0x399828,3,
-0x399850,3,
-0x399878,3,
-0x3998a0,9,
-0x3999ac,1,
-0x3999d8,4,
-0x399a00,6,
-0x399a20,6,
-0x399a40,6,
-0x399a60,6,
-0x399a80,6,
-0x399aa0,6,
-0x399ac0,3,
-0x399c00,6,
-0x399c20,3,
-0x399c40,2,
-0x399c60,1,
-0x3a0000,4,
-0x3a0014,1,
-0x3a0020,3,
-0x3a0030,3,
-0x3a0040,8,
-0x3a007c,2,
-0x3a00a0,6,
-0x3a00c0,6,
-0x3a00e0,6,
-0x3a0100,4,
-0x3a0114,1,
-0x3a0120,3,
-0x3a0130,3,
-0x3a0140,8,
-0x3a017c,2,
-0x3a01a0,6,
-0x3a01c0,6,
-0x3a01e0,6,
-0x3a0200,4,
-0x3a0214,1,
-0x3a0220,3,
-0x3a0230,3,
-0x3a0240,8,
-0x3a027c,2,
-0x3a02a0,6,
-0x3a02c0,6,
-0x3a02e0,6,
-0x3a0300,4,
-0x3a0314,1,
-0x3a0320,3,
-0x3a0330,3,
-0x3a0340,8,
-0x3a037c,2,
-0x3a03a0,6,
-0x3a03c0,6,
-0x3a03e0,6,
-0x3a0400,6,
-0x3a0440,6,
-0x3a0480,3,
-0x3a04c0,3,
-0x3a0500,2,
-0x3a050c,4,
-0x3a0520,2,
-0x3a052c,4,
-0x3a0540,2,
-0x3a0c00,13,
-0x3a0c40,12,
-0x3a0c80,13,
-0x3a0cc0,12,
-0x3a0d00,14,
-0x3a0d40,6,
-0x3a0d80,14,
-0x3a0dc0,6,
-0x3a0e00,11,
-0x3a0e40,6,
-0x3a0e60,6,
-0x3a0e80,6,
-0x3a0ea0,6,
-0x3a1000,2,
-0x3a1014,4,
-0x3a1040,3,
-0x3a1050,3,
-0x3a1080,43,
-0x3a1140,11,
-0x3a1180,1,
-0x3a119c,15,
-0x3a1200,12,
-0x3a1300,1,
-0x3a1308,6,
-0x3a1324,10,
-0x3a1380,1,
-0x3a1388,6,
-0x3a13a4,10,
-0x3a1400,7,
-0x3a1420,7,
-0x3a1500,12,
-0x3a1540,12,
-0x3a1580,4,
-0x3a1800,14,
-0x3a183c,9,
-0x3a1864,6,
-0x3a1880,2,
-0x3a1890,4,
-0x3a1900,14,
-0x3a193c,9,
-0x3a1964,6,
-0x3a1980,2,
-0x3a1990,4,
-0x3a1a00,16,
-0x3a1a50,4,
-0x3a1a80,16,
-0x3a1ad0,4,
-0x3a1b00,6,
-0x3a1b20,6,
-0x3a1b40,3,
-0x3a1b80,6,
-0x3a1ba0,6,
-0x3a1bc0,3,
-0x3a1c00,6,
-0x3a1c20,6,
-0x3a1c40,3,
-0x3a1c80,6,
-0x3a1ca0,6,
-0x3a1cc0,3,
-0x3a1d10,2,
-0x3a1d1c,1,
-0x3a1d50,2,
-0x3a1d5c,1,
-0x3a1d80,1,
-0x3a1da0,1,
-0x3a1da8,4,
-0x3a1dc0,1,
-0x3a1de0,1,
-0x3a1de8,4,
-0x3a1e00,13,
-0x3a1e40,6,
-0x3a1e60,6,
-0x3a1e80,6,
-0x3a1ea0,6,
-0x3a1ec0,7,
-0x3a1ee0,7,
-0x3a1f00,12,
-0x3a1f34,2,
-0x3a1f40,3,
-0x3a1f50,8,
-0x3a2000,4,
-0x3a2014,1,
-0x3a2020,3,
-0x3a2030,3,
-0x3a2040,8,
-0x3a207c,2,
-0x3a20a0,6,
-0x3a20c0,6,
-0x3a20e0,6,
-0x3a2100,4,
-0x3a2114,1,
-0x3a2120,3,
-0x3a2130,3,
-0x3a2140,8,
-0x3a217c,2,
-0x3a21a0,6,
-0x3a21c0,6,
-0x3a21e0,6,
-0x3a2200,4,
-0x3a2214,1,
-0x3a2220,3,
-0x3a2230,3,
-0x3a2240,8,
-0x3a227c,2,
-0x3a22a0,6,
-0x3a22c0,6,
-0x3a22e0,6,
-0x3a2300,4,
-0x3a2314,1,
-0x3a2320,3,
-0x3a2330,3,
-0x3a2340,8,
-0x3a237c,2,
-0x3a23a0,6,
-0x3a23c0,6,
-0x3a23e0,6,
-0x3a2400,6,
-0x3a2440,6,
-0x3a2480,3,
-0x3a24c0,3,
-0x3a2500,2,
-0x3a250c,4,
-0x3a2520,2,
-0x3a252c,4,
-0x3a2540,2,
-0x3a2c00,13,
-0x3a2c40,12,
-0x3a2c80,13,
-0x3a2cc0,12,
-0x3a2d00,14,
-0x3a2d40,6,
-0x3a2d80,14,
-0x3a2dc0,6,
-0x3a2e00,11,
-0x3a2e40,6,
-0x3a2e60,6,
-0x3a2e80,6,
-0x3a2ea0,6,
-0x3a3000,2,
-0x3a3014,4,
-0x3a3040,3,
-0x3a3050,3,
-0x3a3080,43,
-0x3a3140,11,
-0x3a3180,1,
-0x3a319c,15,
-0x3a3200,12,
-0x3a3300,1,
-0x3a3308,6,
-0x3a3324,10,
-0x3a3380,1,
-0x3a3388,6,
-0x3a33a4,10,
-0x3a3400,7,
-0x3a3420,7,
-0x3a3500,12,
-0x3a3540,12,
-0x3a3580,4,
-0x3a3800,14,
-0x3a383c,9,
-0x3a3864,6,
-0x3a3880,2,
-0x3a3890,4,
-0x3a3900,14,
-0x3a393c,9,
-0x3a3964,6,
-0x3a3980,2,
-0x3a3990,4,
-0x3a3a00,16,
-0x3a3a50,4,
-0x3a3a80,16,
-0x3a3ad0,4,
-0x3a3b00,6,
-0x3a3b20,6,
-0x3a3b40,3,
-0x3a3b80,6,
-0x3a3ba0,6,
-0x3a3bc0,3,
-0x3a3c00,6,
-0x3a3c20,6,
-0x3a3c40,3,
-0x3a3c80,6,
-0x3a3ca0,6,
-0x3a3cc0,3,
-0x3a3d10,2,
-0x3a3d1c,1,
-0x3a3d50,2,
-0x3a3d5c,1,
-0x3a3d80,1,
-0x3a3da0,1,
-0x3a3da8,4,
-0x3a3dc0,1,
-0x3a3de0,1,
-0x3a3de8,4,
-0x3a3e00,13,
-0x3a3e40,6,
-0x3a3e60,6,
-0x3a3e80,6,
-0x3a3ea0,6,
-0x3a3ec0,7,
-0x3a3ee0,7,
-0x3a3f00,12,
-0x3a3f34,2,
-0x3a3f40,3,
-0x3a3f50,8,
-0x3a4000,29,
-0x3a4078,4,
-0x3a4090,2,
-0x3a40a0,7,
-0x3a40c0,11,
-0x3a4100,14,
-0x3a4140,14,
-0x3a4180,61,
-0x3a4278,4,
-0x3a4290,2,
-0x3a42a0,7,
-0x3a42c0,11,
-0x3a4300,14,
-0x3a4340,14,
-0x3a4380,61,
-0x3a4478,4,
-0x3a4490,2,
-0x3a44a0,7,
-0x3a44c0,11,
-0x3a4500,14,
-0x3a4540,14,
-0x3a4580,61,
-0x3a4678,4,
-0x3a4690,2,
-0x3a46a0,7,
-0x3a46c0,11,
-0x3a4700,14,
-0x3a4740,14,
-0x3a4780,69,
-0x3a4c00,6,
-0x3a4c40,14,
-0x3a4c80,9,
-0x3a4d00,9,
-0x3a4d2c,1,
-0x3a4d40,3,
-0x3a4d60,1,
-0x3a4d80,3,
-0x3a4e00,2,
-0x3a4e0c,1,
-0x3a4e14,5,
-0x3a4e2c,1,
-0x3a4e34,5,
-0x3a4e4c,1,
-0x3a4e54,5,
-0x3a4e6c,1,
-0x3a4e74,5,
-0x3a4e8c,1,
-0x3a4e94,5,
-0x3a4eac,1,
-0x3a4eb4,3,
-0x3a5000,29,
-0x3a5078,4,
-0x3a5090,2,
-0x3a50a0,7,
-0x3a50c0,11,
-0x3a5100,14,
-0x3a5140,14,
-0x3a5180,61,
-0x3a5278,4,
-0x3a5290,2,
-0x3a52a0,7,
-0x3a52c0,11,
-0x3a5300,14,
-0x3a5340,14,
-0x3a5380,61,
-0x3a5478,4,
-0x3a5490,2,
-0x3a54a0,7,
-0x3a54c0,11,
-0x3a5500,14,
-0x3a5540,14,
-0x3a5580,61,
-0x3a5678,4,
-0x3a5690,2,
-0x3a56a0,7,
-0x3a56c0,11,
-0x3a5700,14,
-0x3a5740,14,
-0x3a5780,69,
-0x3a5c00,6,
-0x3a5c40,14,
-0x3a5c80,9,
-0x3a5d00,9,
-0x3a5d2c,1,
-0x3a5d40,3,
-0x3a5d60,1,
-0x3a5d80,3,
-0x3a5e00,2,
-0x3a5e0c,1,
-0x3a5e14,5,
-0x3a5e2c,1,
-0x3a5e34,5,
-0x3a5e4c,1,
-0x3a5e54,5,
-0x3a5e6c,1,
-0x3a5e74,5,
-0x3a5e8c,1,
-0x3a5e94,5,
-0x3a5eac,1,
-0x3a5eb4,3,
-0x3a6000,14,
-0x3a6040,6,
-0x3a6060,6,
-0x3a6080,6,
-0x3a60a0,3,
-0x3a6100,9,
-0x3a6204,1,
-0x3a620c,6,
-0x3a6240,13,
-0x3a6280,16,
-0x3a6800,19,
-0x3a6850,10,
-0x3a6880,19,
-0x3a68d0,10,
-0x3a6900,19,
-0x3a6950,10,
-0x3a6980,19,
-0x3a69d0,10,
-0x3a6a00,19,
-0x3a6a50,10,
-0x3a6a80,19,
-0x3a6ad0,10,
-0x3a6b00,19,
-0x3a6b50,10,
-0x3a6b80,19,
-0x3a6bd0,10,
-0x3a6c00,19,
-0x3a6c60,6,
-0x3a6c84,1,
-0x3a6c94,8,
-0x3a6cb8,14,
-0x3a7000,1,
-0x3a7028,1,
-0x3a7050,1,
-0x3a7078,1,
-0x3a70a0,4,
-0x3a71ac,1,
-0x3a71d8,4,
-0x3a7200,6,
-0x3a7220,6,
-0x3a7240,3,
-0x3a7400,1,
-0x3a7408,3,
-0x3a7438,1,
-0x3a7444,1,
-0x3a7450,6,
-0x3a7500,7,
-0x3a7520,6,
-0x3a7540,6,
-0x3a7560,3,
-0x3a7570,3,
-0x3a8000,6,
-0x3a8020,3,
-0x3a8030,1,
-0x3a8038,4,
-0x3a8050,1,
-0x3a8400,1,
-0x3a8428,1,
-0x3a8450,1,
-0x3a8478,1,
-0x3a84a0,6,
-0x3a85ac,1,
-0x3a85d8,4,
-0x3a8600,6,
-0x3a8620,6,
-0x3a8640,3,
-0x3a8800,6,
-0x3a8820,3,
-0x3a8830,4,
-0x3a8918,2,
-0x3a8924,1,
-0x3a8934,3,
-0x3a8958,2,
-0x3a8964,1,
-0x3a8974,3,
-0x3a8998,2,
-0x3a89a4,1,
-0x3a89b4,3,
-0x3a89d8,2,
-0x3a89e4,1,
-0x3a89f4,3,
-0x3a9020,4,
-0x3a9040,11,
-0x3a9074,2,
-0x3a9080,4,
-0x3a90b0,22,
-0x3a9110,2,
-0x3a9120,22,
-0x3a9180,2,
-0x3a91a0,6,
-0x3a91c0,9,
-0x3a9200,42,
-0x3a92c0,1,
-0x3a92c8,13,
-0x3a9300,25,
-0x3a936c,4,
-0x3a9380,2,
-0x3a93a0,1,
-0x3a93c0,11,
-0x3a9404,3,
-0x3a9420,11,
-0x3a9480,6,
-0x3a9500,1,
-0x3a9520,6,
-0x3a9540,3,
-0x3a9550,7,
-0x3a9570,18,
-0x3a95bc,5,
-0x3a9800,480,
-0x3aa020,4,
-0x3aa040,11,
-0x3aa074,2,
-0x3aa080,4,
-0x3aa0b0,22,
-0x3aa110,2,
-0x3aa120,22,
-0x3aa180,2,
-0x3aa1a0,6,
-0x3aa1c0,9,
-0x3aa200,42,
-0x3aa2c0,1,
-0x3aa2c8,13,
-0x3aa300,25,
-0x3aa36c,4,
-0x3aa380,2,
-0x3aa3a0,1,
-0x3aa3c0,11,
-0x3aa404,3,
-0x3aa420,11,
-0x3aa480,6,
-0x3aa500,1,
-0x3aa520,6,
-0x3aa540,3,
-0x3aa550,7,
-0x3aa570,18,
-0x3aa5bc,5,
-0x3aa800,480,
-0x3ab020,4,
-0x3ab040,11,
-0x3ab074,2,
-0x3ab080,4,
-0x3ab0b0,22,
-0x3ab110,2,
-0x3ab120,22,
-0x3ab180,2,
-0x3ab1a0,6,
-0x3ab1c0,9,
-0x3ab200,42,
-0x3ab2c0,1,
-0x3ab2c8,13,
-0x3ab300,25,
-0x3ab36c,4,
-0x3ab380,2,
-0x3ab3a0,1,
-0x3ab3c0,11,
-0x3ab404,3,
-0x3ab420,11,
-0x3ab480,6,
-0x3ab500,1,
-0x3ab520,6,
-0x3ab540,3,
-0x3ab550,7,
-0x3ab570,18,
-0x3ab5bc,5,
-0x3ab800,480,
-0x3ac020,4,
-0x3ac040,11,
-0x3ac074,2,
-0x3ac080,4,
-0x3ac0b0,22,
-0x3ac110,2,
-0x3ac120,22,
-0x3ac180,2,
-0x3ac1a0,6,
-0x3ac1c0,9,
-0x3ac200,42,
-0x3ac2c0,1,
-0x3ac2c8,13,
-0x3ac300,25,
-0x3ac36c,4,
-0x3ac380,2,
-0x3ac3a0,1,
-0x3ac3c0,11,
-0x3ac404,3,
-0x3ac420,11,
-0x3ac480,6,
-0x3ac500,1,
-0x3ac520,6,
-0x3ac540,3,
-0x3ac550,7,
-0x3ac570,18,
-0x3ac5bc,5,
-0x3ac800,480,
-0x3af800,5,
-0x3af818,1,
-0x3af854,6,
-0x3af880,4,
-0x3af8a4,1,
-0x3af8ac,2,
-0x3af900,5,
-0x3af918,1,
-0x3af954,6,
-0x3af980,4,
-0x3af9a4,1,
-0x3af9ac,2,
-0x3afa00,5,
-0x3afa18,1,
-0x3afa54,6,
-0x3afa80,4,
-0x3afaa4,1,
-0x3afaac,2,
-0x3afb00,5,
-0x3afb18,1,
-0x3afb54,6,
-0x3afb80,4,
-0x3afba4,1,
-0x3afbac,2,
-0x3b4000,3,
-0x3b4018,10,
-0x3b4100,58,
-0x3b41f0,1,
-0x3b4400,3,
-0x3b4418,10,
-0x3b4500,58,
-0x3b45f0,1,
-0x3b4800,3,
-0x3b4810,3,
-0x3b4820,6,
-0x3b4880,9,
-0x3b48c0,9,
-0x3b4900,8,
-0x3b4938,2,
-0x3b4944,1,
-0x3b4954,3,
-0x3b4980,8,
-0x3b49b8,2,
-0x3b49c4,1,
-0x3b49d4,3,
-0x3b5000,3,
-0x3b5018,10,
-0x3b5100,58,
-0x3b51f0,1,
-0x3b5400,3,
-0x3b5418,10,
-0x3b5500,58,
-0x3b55f0,1,
-0x3b5800,3,
-0x3b5810,3,
-0x3b5820,6,
-0x3b5880,9,
-0x3b58c0,9,
-0x3b5900,8,
-0x3b5938,2,
-0x3b5944,1,
-0x3b5954,3,
-0x3b5980,8,
-0x3b59b8,2,
-0x3b59c4,1,
-0x3b59d4,3,
-0x3b6004,7,
-0x3b6024,1,
-0x3b6030,4,
-0x3b6300,5,
-0x3b631c,2,
-0x3b6600,10,
-0x3b6630,1,
-0x3b6640,10,
-0x3b6670,1,
-0x3b6700,10,
-0x3b6730,1,
-0x3b6740,10,
-0x3b6770,1,
-0x3b6800,19,
-0x3b6890,15,
-0x3b6910,15,
-0x3b6a00,10,
-0x3b6ab8,4,
-0x3b6b00,3,
-0x3b6b10,1,
-0x3b6e00,6,
-0x3b6f00,5,
-0x3b7000,65,
-0x3b7800,6,
-0x3b7820,6,
-0x3b7840,6,
-0x3b7860,6,
-0x3b7880,6,
-0x3b78a0,6,
-0x3b78c0,6,
-0x3b78e0,3,
-0x3b7900,6,
-0x3b7920,6,
-0x3b7940,6,
-0x3b7960,6,
-0x3b7980,6,
-0x3b79a0,6,
-0x3b79c0,6,
-0x3b79e0,3,
-0x3b7a00,6,
-0x3b7a20,6,
-0x3b7a40,3,
-0x3b7a80,7,
-0x3b7aa0,7,
-0x3b7ac0,9,
-0x3b7b00,9,
-0x3b7b40,10,
-0x3b7b80,10,
-0x3b7bc0,10,
-0x3b7c00,10,
-0x3b7c40,10,
-0x3b7c80,10,
-0x3b7cc0,3,
-0x3b7e40,7,
-0x3b7e60,7,
-0x3b7e80,7,
-0x3b7ea0,7,
-0x3b7ec0,7,
-0x3b7ee0,7,
-0x3b7f00,7,
-0x3b7f20,7,
-0x3b7f40,7,
-0x3b7f60,4,
-0x3b7f78,13,
-0x3b8000,2,
-0x3b800c,3,
-0x3b8028,2,
-0x3b8038,2,
-0x3b8080,29,
-0x3b80f8,1,
-0x3b8100,13,
-0x3b8140,13,
-0x3b8500,6,
-0x3b8520,6,
-0x3b8540,3,
-0x3b8580,10,
-0x3b85c0,15,
-0x3b8600,2,
-0x3b8618,5,
-0x3b8630,1,
-0x3b8800,2,
-0x3b880c,3,
-0x3b8828,2,
-0x3b8838,2,
-0x3b8880,29,
-0x3b88f8,1,
-0x3b8900,13,
-0x3b8940,13,
-0x3b8d00,6,
-0x3b8d20,6,
-0x3b8d40,3,
-0x3b8d80,10,
-0x3b8dc0,15,
-0x3b8e00,2,
-0x3b8e18,5,
-0x3b8e30,1,
-0x3b9800,3,
-0x3b9828,3,
-0x3b9850,3,
-0x3b9878,3,
-0x3b98a0,9,
-0x3b99ac,1,
-0x3b99d8,4,
-0x3b9a00,6,
-0x3b9a20,6,
-0x3b9a40,6,
-0x3b9a60,6,
-0x3b9a80,6,
-0x3b9aa0,6,
-0x3b9ac0,3,
-0x3b9c00,6,
-0x3b9c20,3,
-0x3b9c40,2,
-0x3b9c60,1,
-0x3c0000,4,
-0x3c0014,1,
-0x3c0020,3,
-0x3c0030,3,
-0x3c0040,8,
-0x3c007c,2,
-0x3c00a0,6,
-0x3c00c0,6,
-0x3c00e0,6,
-0x3c0100,4,
-0x3c0114,1,
-0x3c0120,3,
-0x3c0130,3,
-0x3c0140,8,
-0x3c017c,2,
-0x3c01a0,6,
-0x3c01c0,6,
-0x3c01e0,6,
-0x3c0200,4,
-0x3c0214,1,
-0x3c0220,3,
-0x3c0230,3,
-0x3c0240,8,
-0x3c027c,2,
-0x3c02a0,6,
-0x3c02c0,6,
-0x3c02e0,6,
-0x3c0300,4,
-0x3c0314,1,
-0x3c0320,3,
-0x3c0330,3,
-0x3c0340,8,
-0x3c037c,2,
-0x3c03a0,6,
-0x3c03c0,6,
-0x3c03e0,6,
-0x3c0400,6,
-0x3c0440,6,
-0x3c0480,3,
-0x3c04c0,3,
-0x3c0500,2,
-0x3c050c,4,
-0x3c0520,2,
-0x3c052c,4,
-0x3c0540,2,
-0x3c0c00,13,
-0x3c0c40,12,
-0x3c0c80,13,
-0x3c0cc0,12,
-0x3c0d00,14,
-0x3c0d40,6,
-0x3c0d80,14,
-0x3c0dc0,6,
-0x3c0e00,11,
-0x3c0e40,6,
-0x3c0e60,6,
-0x3c0e80,6,
-0x3c0ea0,6,
-0x3c1000,2,
-0x3c1014,4,
-0x3c1040,3,
-0x3c1050,3,
-0x3c1080,43,
-0x3c1140,11,
-0x3c1180,1,
-0x3c119c,15,
-0x3c1200,12,
-0x3c1300,1,
-0x3c1308,6,
-0x3c1324,10,
-0x3c1380,1,
-0x3c1388,6,
-0x3c13a4,10,
-0x3c1400,7,
-0x3c1420,7,
-0x3c1500,12,
-0x3c1540,12,
-0x3c1580,4,
-0x3c1800,14,
-0x3c183c,9,
-0x3c1864,6,
-0x3c1880,2,
-0x3c1890,4,
-0x3c1900,14,
-0x3c193c,9,
-0x3c1964,6,
-0x3c1980,2,
-0x3c1990,4,
-0x3c1a00,16,
-0x3c1a50,4,
-0x3c1a80,16,
-0x3c1ad0,4,
-0x3c1b00,6,
-0x3c1b20,6,
-0x3c1b40,3,
-0x3c1b80,6,
-0x3c1ba0,6,
-0x3c1bc0,3,
-0x3c1c00,6,
-0x3c1c20,6,
-0x3c1c40,3,
-0x3c1c80,6,
-0x3c1ca0,6,
-0x3c1cc0,3,
-0x3c1d10,2,
-0x3c1d1c,1,
-0x3c1d50,2,
-0x3c1d5c,1,
-0x3c1d80,1,
-0x3c1da0,1,
-0x3c1da8,4,
-0x3c1dc0,1,
-0x3c1de0,1,
-0x3c1de8,4,
-0x3c1e00,13,
-0x3c1e40,6,
-0x3c1e60,6,
-0x3c1e80,6,
-0x3c1ea0,6,
-0x3c1ec0,7,
-0x3c1ee0,7,
-0x3c1f00,12,
-0x3c1f34,2,
-0x3c1f40,3,
-0x3c1f50,8,
-0x3c2000,4,
-0x3c2014,1,
-0x3c2020,3,
-0x3c2030,3,
-0x3c2040,8,
-0x3c207c,2,
-0x3c20a0,6,
-0x3c20c0,6,
-0x3c20e0,6,
-0x3c2100,4,
-0x3c2114,1,
-0x3c2120,3,
-0x3c2130,3,
-0x3c2140,8,
-0x3c217c,2,
-0x3c21a0,6,
-0x3c21c0,6,
-0x3c21e0,6,
-0x3c2200,4,
-0x3c2214,1,
-0x3c2220,3,
-0x3c2230,3,
-0x3c2240,8,
-0x3c227c,2,
-0x3c22a0,6,
-0x3c22c0,6,
-0x3c22e0,6,
-0x3c2300,4,
-0x3c2314,1,
-0x3c2320,3,
-0x3c2330,3,
-0x3c2340,8,
-0x3c237c,2,
-0x3c23a0,6,
-0x3c23c0,6,
-0x3c23e0,6,
-0x3c2400,6,
-0x3c2440,6,
-0x3c2480,3,
-0x3c24c0,3,
-0x3c2500,2,
-0x3c250c,4,
-0x3c2520,2,
-0x3c252c,4,
-0x3c2540,2,
-0x3c2c00,13,
-0x3c2c40,12,
-0x3c2c80,13,
-0x3c2cc0,12,
-0x3c2d00,14,
-0x3c2d40,6,
-0x3c2d80,14,
-0x3c2dc0,6,
-0x3c2e00,11,
-0x3c2e40,6,
-0x3c2e60,6,
-0x3c2e80,6,
-0x3c2ea0,6,
-0x3c3000,2,
-0x3c3014,4,
-0x3c3040,3,
-0x3c3050,3,
-0x3c3080,43,
-0x3c3140,11,
-0x3c3180,1,
-0x3c319c,15,
-0x3c3200,12,
-0x3c3300,1,
-0x3c3308,6,
-0x3c3324,10,
-0x3c3380,1,
-0x3c3388,6,
-0x3c33a4,10,
-0x3c3400,7,
-0x3c3420,7,
-0x3c3500,12,
-0x3c3540,12,
-0x3c3580,4,
-0x3c3800,14,
-0x3c383c,9,
-0x3c3864,6,
-0x3c3880,2,
-0x3c3890,4,
-0x3c3900,14,
-0x3c393c,9,
-0x3c3964,6,
-0x3c3980,2,
-0x3c3990,4,
-0x3c3a00,16,
-0x3c3a50,4,
-0x3c3a80,16,
-0x3c3ad0,4,
-0x3c3b00,6,
-0x3c3b20,6,
-0x3c3b40,3,
-0x3c3b80,6,
-0x3c3ba0,6,
-0x3c3bc0,3,
-0x3c3c00,6,
-0x3c3c20,6,
-0x3c3c40,3,
-0x3c3c80,6,
-0x3c3ca0,6,
-0x3c3cc0,3,
-0x3c3d10,2,
-0x3c3d1c,1,
-0x3c3d50,2,
-0x3c3d5c,1,
-0x3c3d80,1,
-0x3c3da0,1,
-0x3c3da8,4,
-0x3c3dc0,1,
-0x3c3de0,1,
-0x3c3de8,4,
-0x3c3e00,13,
-0x3c3e40,6,
-0x3c3e60,6,
-0x3c3e80,6,
-0x3c3ea0,6,
-0x3c3ec0,7,
-0x3c3ee0,7,
-0x3c3f00,12,
-0x3c3f34,2,
-0x3c3f40,3,
-0x3c3f50,8,
-0x3c4000,29,
-0x3c4078,4,
-0x3c4090,2,
-0x3c40a0,7,
-0x3c40c0,11,
-0x3c4100,14,
-0x3c4140,14,
-0x3c4180,61,
-0x3c4278,4,
-0x3c4290,2,
-0x3c42a0,7,
-0x3c42c0,11,
-0x3c4300,14,
-0x3c4340,14,
-0x3c4380,61,
-0x3c4478,4,
-0x3c4490,2,
-0x3c44a0,7,
-0x3c44c0,11,
-0x3c4500,14,
-0x3c4540,14,
-0x3c4580,61,
-0x3c4678,4,
-0x3c4690,2,
-0x3c46a0,7,
-0x3c46c0,11,
-0x3c4700,14,
-0x3c4740,14,
-0x3c4780,69,
-0x3c4c00,6,
-0x3c4c40,14,
-0x3c4c80,9,
-0x3c4d00,9,
-0x3c4d2c,1,
-0x3c4d40,3,
-0x3c4d60,1,
-0x3c4d80,3,
-0x3c4e00,2,
-0x3c4e0c,1,
-0x3c4e14,5,
-0x3c4e2c,1,
-0x3c4e34,5,
-0x3c4e4c,1,
-0x3c4e54,5,
-0x3c4e6c,1,
-0x3c4e74,5,
-0x3c4e8c,1,
-0x3c4e94,5,
-0x3c4eac,1,
-0x3c4eb4,3,
-0x3c5000,29,
-0x3c5078,4,
-0x3c5090,2,
-0x3c50a0,7,
-0x3c50c0,11,
-0x3c5100,14,
-0x3c5140,14,
-0x3c5180,61,
-0x3c5278,4,
-0x3c5290,2,
-0x3c52a0,7,
-0x3c52c0,11,
-0x3c5300,14,
-0x3c5340,14,
-0x3c5380,61,
-0x3c5478,4,
-0x3c5490,2,
-0x3c54a0,7,
-0x3c54c0,11,
-0x3c5500,14,
-0x3c5540,14,
-0x3c5580,61,
-0x3c5678,4,
-0x3c5690,2,
-0x3c56a0,7,
-0x3c56c0,11,
-0x3c5700,14,
-0x3c5740,14,
-0x3c5780,69,
-0x3c5c00,6,
-0x3c5c40,14,
-0x3c5c80,9,
-0x3c5d00,9,
-0x3c5d2c,1,
-0x3c5d40,3,
-0x3c5d60,1,
-0x3c5d80,3,
-0x3c5e00,2,
-0x3c5e0c,1,
-0x3c5e14,5,
-0x3c5e2c,1,
-0x3c5e34,5,
-0x3c5e4c,1,
-0x3c5e54,5,
-0x3c5e6c,1,
-0x3c5e74,5,
-0x3c5e8c,1,
-0x3c5e94,5,
-0x3c5eac,1,
-0x3c5eb4,3,
-0x3c6000,14,
-0x3c6040,6,
-0x3c6060,6,
-0x3c6080,6,
-0x3c60a0,3,
-0x3c6100,9,
-0x3c6204,1,
-0x3c620c,6,
-0x3c6240,13,
-0x3c6280,16,
-0x3c6800,19,
-0x3c6850,10,
-0x3c6880,19,
-0x3c68d0,10,
-0x3c6900,19,
-0x3c6950,10,
-0x3c6980,19,
-0x3c69d0,10,
-0x3c6a00,19,
-0x3c6a50,10,
-0x3c6a80,19,
-0x3c6ad0,10,
-0x3c6b00,19,
-0x3c6b50,10,
-0x3c6b80,19,
-0x3c6bd0,10,
-0x3c6c00,19,
-0x3c6c60,6,
-0x3c6c84,1,
-0x3c6c94,8,
-0x3c6cb8,14,
-0x3c7000,1,
-0x3c7028,1,
-0x3c7050,1,
-0x3c7078,1,
-0x3c70a0,4,
-0x3c71ac,1,
-0x3c71d8,4,
-0x3c7200,6,
-0x3c7220,6,
-0x3c7240,3,
-0x3c7400,1,
-0x3c7408,3,
-0x3c7438,1,
-0x3c7444,1,
-0x3c7450,6,
-0x3c7500,7,
-0x3c7520,6,
-0x3c7540,6,
-0x3c7560,3,
-0x3c7570,3,
-0x3c8000,6,
-0x3c8020,3,
-0x3c8030,1,
-0x3c8038,4,
-0x3c8050,1,
-0x3c8400,1,
-0x3c8428,1,
-0x3c8450,1,
-0x3c8478,1,
-0x3c84a0,6,
-0x3c85ac,1,
-0x3c85d8,4,
-0x3c8600,6,
-0x3c8620,6,
-0x3c8640,3,
-0x3c8800,6,
-0x3c8820,3,
-0x3c8830,4,
-0x3c8918,2,
-0x3c8924,1,
-0x3c8934,3,
-0x3c8958,2,
-0x3c8964,1,
-0x3c8974,3,
-0x3c8998,2,
-0x3c89a4,1,
-0x3c89b4,3,
-0x3c89d8,2,
-0x3c89e4,1,
-0x3c89f4,3,
-0x3c9020,4,
-0x3c9040,11,
-0x3c9074,2,
-0x3c9080,4,
-0x3c90b0,22,
-0x3c9110,2,
-0x3c9120,22,
-0x3c9180,2,
-0x3c91a0,6,
-0x3c91c0,9,
-0x3c9200,42,
-0x3c92c0,1,
-0x3c92c8,13,
-0x3c9300,25,
-0x3c936c,4,
-0x3c9380,2,
-0x3c93a0,1,
-0x3c93c0,11,
-0x3c9404,3,
-0x3c9420,11,
-0x3c9480,6,
-0x3c9500,1,
-0x3c9520,6,
-0x3c9540,3,
-0x3c9550,7,
-0x3c9570,18,
-0x3c95bc,5,
-0x3c9800,480,
-0x3ca020,4,
-0x3ca040,11,
-0x3ca074,2,
-0x3ca080,4,
-0x3ca0b0,22,
-0x3ca110,2,
-0x3ca120,22,
-0x3ca180,2,
-0x3ca1a0,6,
-0x3ca1c0,9,
-0x3ca200,42,
-0x3ca2c0,1,
-0x3ca2c8,13,
-0x3ca300,25,
-0x3ca36c,4,
-0x3ca380,2,
-0x3ca3a0,1,
-0x3ca3c0,11,
-0x3ca404,3,
-0x3ca420,11,
-0x3ca480,6,
-0x3ca500,1,
-0x3ca520,6,
-0x3ca540,3,
-0x3ca550,7,
-0x3ca570,18,
-0x3ca5bc,5,
-0x3ca800,480,
-0x3cb020,4,
-0x3cb040,11,
-0x3cb074,2,
-0x3cb080,4,
-0x3cb0b0,22,
-0x3cb110,2,
-0x3cb120,22,
-0x3cb180,2,
-0x3cb1a0,6,
-0x3cb1c0,9,
-0x3cb200,42,
-0x3cb2c0,1,
-0x3cb2c8,13,
-0x3cb300,25,
-0x3cb36c,4,
-0x3cb380,2,
-0x3cb3a0,1,
-0x3cb3c0,11,
-0x3cb404,3,
-0x3cb420,11,
-0x3cb480,6,
-0x3cb500,1,
-0x3cb520,6,
-0x3cb540,3,
-0x3cb550,7,
-0x3cb570,18,
-0x3cb5bc,5,
-0x3cb800,480,
-0x3cc020,4,
-0x3cc040,11,
-0x3cc074,2,
-0x3cc080,4,
-0x3cc0b0,22,
-0x3cc110,2,
-0x3cc120,22,
-0x3cc180,2,
-0x3cc1a0,6,
-0x3cc1c0,9,
-0x3cc200,42,
-0x3cc2c0,1,
-0x3cc2c8,13,
-0x3cc300,25,
-0x3cc36c,4,
-0x3cc380,2,
-0x3cc3a0,1,
-0x3cc3c0,11,
-0x3cc404,3,
-0x3cc420,11,
-0x3cc480,6,
-0x3cc500,1,
-0x3cc520,6,
-0x3cc540,3,
-0x3cc550,7,
-0x3cc570,18,
-0x3cc5bc,5,
-0x3cc800,480,
-0x3cf800,5,
-0x3cf818,1,
-0x3cf854,6,
-0x3cf880,4,
-0x3cf8a4,1,
-0x3cf8ac,2,
-0x3cf900,5,
-0x3cf918,1,
-0x3cf954,6,
-0x3cf980,4,
-0x3cf9a4,1,
-0x3cf9ac,2,
-0x3cfa00,5,
-0x3cfa18,1,
-0x3cfa54,6,
-0x3cfa80,4,
-0x3cfaa4,1,
-0x3cfaac,2,
-0x3cfb00,5,
-0x3cfb18,1,
-0x3cfb54,6,
-0x3cfb80,4,
-0x3cfba4,1,
-0x3cfbac,2,
-0x3d4000,3,
-0x3d4018,10,
-0x3d4100,58,
-0x3d41f0,1,
-0x3d4400,3,
-0x3d4418,10,
-0x3d4500,58,
-0x3d45f0,1,
-0x3d4800,3,
-0x3d4810,3,
-0x3d4820,6,
-0x3d4880,9,
-0x3d48c0,9,
-0x3d4900,8,
-0x3d4938,2,
-0x3d4944,1,
-0x3d4954,3,
-0x3d4980,8,
-0x3d49b8,2,
-0x3d49c4,1,
-0x3d49d4,3,
-0x3d5000,3,
-0x3d5018,10,
-0x3d5100,58,
-0x3d51f0,1,
-0x3d5400,3,
-0x3d5418,10,
-0x3d5500,58,
-0x3d55f0,1,
-0x3d5800,3,
-0x3d5810,3,
-0x3d5820,6,
-0x3d5880,9,
-0x3d58c0,9,
-0x3d5900,8,
-0x3d5938,2,
-0x3d5944,1,
-0x3d5954,3,
-0x3d5980,8,
-0x3d59b8,2,
-0x3d59c4,1,
-0x3d59d4,3,
-0x3d6004,7,
-0x3d6024,1,
-0x3d6030,4,
-0x3d6300,5,
-0x3d631c,2,
-0x3d6600,10,
-0x3d6630,1,
-0x3d6640,10,
-0x3d6670,1,
-0x3d6700,10,
-0x3d6730,1,
-0x3d6740,10,
-0x3d6770,1,
-0x3d6800,19,
-0x3d6890,15,
-0x3d6910,15,
-0x3d6a00,10,
-0x3d6ab8,4,
-0x3d6b00,3,
-0x3d6b10,1,
-0x3d6e00,6,
-0x3d6f00,5,
-0x3d7000,65,
-0x3d7800,6,
-0x3d7820,6,
-0x3d7840,6,
-0x3d7860,6,
-0x3d7880,6,
-0x3d78a0,6,
-0x3d78c0,6,
-0x3d78e0,3,
-0x3d7900,6,
-0x3d7920,6,
-0x3d7940,6,
-0x3d7960,6,
-0x3d7980,6,
-0x3d79a0,6,
-0x3d79c0,6,
-0x3d79e0,3,
-0x3d7a00,6,
-0x3d7a20,6,
-0x3d7a40,3,
-0x3d7a80,7,
-0x3d7aa0,7,
-0x3d7ac0,9,
-0x3d7b00,9,
-0x3d7b40,10,
-0x3d7b80,10,
-0x3d7bc0,10,
-0x3d7c00,10,
-0x3d7c40,10,
-0x3d7c80,10,
-0x3d7cc0,3,
-0x3d7e40,7,
-0x3d7e60,7,
-0x3d7e80,7,
-0x3d7ea0,7,
-0x3d7ec0,7,
-0x3d7ee0,7,
-0x3d7f00,7,
-0x3d7f20,7,
-0x3d7f40,7,
-0x3d7f60,4,
-0x3d7f78,13,
-0x3d8000,2,
-0x3d800c,3,
-0x3d8028,2,
-0x3d8038,2,
-0x3d8080,29,
-0x3d80f8,1,
-0x3d8100,13,
-0x3d8140,13,
-0x3d8500,6,
-0x3d8520,6,
-0x3d8540,3,
-0x3d8580,10,
-0x3d85c0,15,
-0x3d8600,2,
-0x3d8618,5,
-0x3d8630,1,
-0x3d8800,2,
-0x3d880c,3,
-0x3d8828,2,
-0x3d8838,2,
-0x3d8880,29,
-0x3d88f8,1,
-0x3d8900,13,
-0x3d8940,13,
-0x3d8d00,6,
-0x3d8d20,6,
-0x3d8d40,3,
-0x3d8d80,10,
-0x3d8dc0,15,
-0x3d8e00,2,
-0x3d8e18,5,
-0x3d8e30,1,
-0x3d9800,3,
-0x3d9828,3,
-0x3d9850,3,
-0x3d9878,3,
-0x3d98a0,9,
-0x3d99ac,1,
-0x3d99d8,4,
-0x3d9a00,6,
-0x3d9a20,6,
-0x3d9a40,6,
-0x3d9a60,6,
-0x3d9a80,6,
-0x3d9aa0,6,
-0x3d9ac0,3,
-0x3d9c00,6,
-0x3d9c20,3,
-0x3d9c40,2,
-0x3d9c60,1,
-0x3e0000,4,
-0x3e0014,1,
-0x3e0020,3,
-0x3e0030,3,
-0x3e0040,8,
-0x3e007c,2,
-0x3e00a0,6,
-0x3e00c0,6,
-0x3e00e0,6,
-0x3e0100,4,
-0x3e0114,1,
-0x3e0120,3,
-0x3e0130,3,
-0x3e0140,8,
-0x3e017c,2,
-0x3e01a0,6,
-0x3e01c0,6,
-0x3e01e0,6,
-0x3e0200,4,
-0x3e0214,1,
-0x3e0220,3,
-0x3e0230,3,
-0x3e0240,8,
-0x3e027c,2,
-0x3e02a0,6,
-0x3e02c0,6,
-0x3e02e0,6,
-0x3e0300,4,
-0x3e0314,1,
-0x3e0320,3,
-0x3e0330,3,
-0x3e0340,8,
-0x3e037c,2,
-0x3e03a0,6,
-0x3e03c0,6,
-0x3e03e0,6,
-0x3e0400,6,
-0x3e0440,6,
-0x3e0480,3,
-0x3e04c0,3,
-0x3e0500,2,
-0x3e050c,4,
-0x3e0520,2,
-0x3e052c,4,
-0x3e0540,2,
-0x3e0c00,13,
-0x3e0c40,12,
-0x3e0c80,13,
-0x3e0cc0,12,
-0x3e0d00,14,
-0x3e0d40,6,
-0x3e0d80,14,
-0x3e0dc0,6,
-0x3e0e00,11,
-0x3e0e40,6,
-0x3e0e60,6,
-0x3e0e80,6,
-0x3e0ea0,6,
-0x3e1000,2,
-0x3e1014,4,
-0x3e1040,3,
-0x3e1050,3,
-0x3e1080,43,
-0x3e1140,11,
-0x3e1180,1,
-0x3e119c,15,
-0x3e1200,12,
-0x3e1300,1,
-0x3e1308,6,
-0x3e1324,10,
-0x3e1380,1,
-0x3e1388,6,
-0x3e13a4,10,
-0x3e1400,7,
-0x3e1420,7,
-0x3e1500,12,
-0x3e1540,12,
-0x3e1580,4,
-0x3e1800,14,
-0x3e183c,9,
-0x3e1864,6,
-0x3e1880,2,
-0x3e1890,4,
-0x3e1900,14,
-0x3e193c,9,
-0x3e1964,6,
-0x3e1980,2,
-0x3e1990,4,
-0x3e1a00,16,
-0x3e1a50,4,
-0x3e1a80,16,
-0x3e1ad0,4,
-0x3e1b00,6,
-0x3e1b20,6,
-0x3e1b40,3,
-0x3e1b80,6,
-0x3e1ba0,6,
-0x3e1bc0,3,
-0x3e1c00,6,
-0x3e1c20,6,
-0x3e1c40,3,
-0x3e1c80,6,
-0x3e1ca0,6,
-0x3e1cc0,3,
-0x3e1d10,2,
-0x3e1d1c,1,
-0x3e1d50,2,
-0x3e1d5c,1,
-0x3e1d80,1,
-0x3e1da0,1,
-0x3e1da8,4,
-0x3e1dc0,1,
-0x3e1de0,1,
-0x3e1de8,4,
-0x3e1e00,13,
-0x3e1e40,6,
-0x3e1e60,6,
-0x3e1e80,6,
-0x3e1ea0,6,
-0x3e1ec0,7,
-0x3e1ee0,7,
-0x3e1f00,12,
-0x3e1f34,2,
-0x3e1f40,3,
-0x3e1f50,8,
-0x3e2000,4,
-0x3e2014,1,
-0x3e2020,3,
-0x3e2030,3,
-0x3e2040,8,
-0x3e207c,2,
-0x3e20a0,6,
-0x3e20c0,6,
-0x3e20e0,6,
-0x3e2100,4,
-0x3e2114,1,
-0x3e2120,3,
-0x3e2130,3,
-0x3e2140,8,
-0x3e217c,2,
-0x3e21a0,6,
-0x3e21c0,6,
-0x3e21e0,6,
-0x3e2200,4,
-0x3e2214,1,
-0x3e2220,3,
-0x3e2230,3,
-0x3e2240,8,
-0x3e227c,2,
-0x3e22a0,6,
-0x3e22c0,6,
-0x3e22e0,6,
-0x3e2300,4,
-0x3e2314,1,
-0x3e2320,3,
-0x3e2330,3,
-0x3e2340,8,
-0x3e237c,2,
-0x3e23a0,6,
-0x3e23c0,6,
-0x3e23e0,6,
-0x3e2400,6,
-0x3e2440,6,
-0x3e2480,3,
-0x3e24c0,3,
-0x3e2500,2,
-0x3e250c,4,
-0x3e2520,2,
-0x3e252c,4,
-0x3e2540,2,
-0x3e2c00,13,
-0x3e2c40,12,
-0x3e2c80,13,
-0x3e2cc0,12,
-0x3e2d00,14,
-0x3e2d40,6,
-0x3e2d80,14,
-0x3e2dc0,6,
-0x3e2e00,11,
-0x3e2e40,6,
-0x3e2e60,6,
-0x3e2e80,6,
-0x3e2ea0,6,
-0x3e3000,2,
-0x3e3014,4,
-0x3e3040,3,
-0x3e3050,3,
-0x3e3080,43,
-0x3e3140,11,
-0x3e3180,1,
-0x3e319c,15,
-0x3e3200,12,
-0x3e3300,1,
-0x3e3308,6,
-0x3e3324,10,
-0x3e3380,1,
-0x3e3388,6,
-0x3e33a4,10,
-0x3e3400,7,
-0x3e3420,7,
-0x3e3500,12,
-0x3e3540,12,
-0x3e3580,4,
-0x3e3800,14,
-0x3e383c,9,
-0x3e3864,6,
-0x3e3880,2,
-0x3e3890,4,
-0x3e3900,14,
-0x3e393c,9,
-0x3e3964,6,
-0x3e3980,2,
-0x3e3990,4,
-0x3e3a00,16,
-0x3e3a50,4,
-0x3e3a80,16,
-0x3e3ad0,4,
-0x3e3b00,6,
-0x3e3b20,6,
-0x3e3b40,3,
-0x3e3b80,6,
-0x3e3ba0,6,
-0x3e3bc0,3,
-0x3e3c00,6,
-0x3e3c20,6,
-0x3e3c40,3,
-0x3e3c80,6,
-0x3e3ca0,6,
-0x3e3cc0,3,
-0x3e3d10,2,
-0x3e3d1c,1,
-0x3e3d50,2,
-0x3e3d5c,1,
-0x3e3d80,1,
-0x3e3da0,1,
-0x3e3da8,4,
-0x3e3dc0,1,
-0x3e3de0,1,
-0x3e3de8,4,
-0x3e3e00,13,
-0x3e3e40,6,
-0x3e3e60,6,
-0x3e3e80,6,
-0x3e3ea0,6,
-0x3e3ec0,7,
-0x3e3ee0,7,
-0x3e3f00,12,
-0x3e3f34,2,
-0x3e3f40,3,
-0x3e3f50,8,
-0x3e4000,29,
-0x3e4078,4,
-0x3e4090,2,
-0x3e40a0,7,
-0x3e40c0,11,
-0x3e4100,14,
-0x3e4140,14,
-0x3e4180,61,
-0x3e4278,4,
-0x3e4290,2,
-0x3e42a0,7,
-0x3e42c0,11,
-0x3e4300,14,
-0x3e4340,14,
-0x3e4380,61,
-0x3e4478,4,
-0x3e4490,2,
-0x3e44a0,7,
-0x3e44c0,11,
-0x3e4500,14,
-0x3e4540,14,
-0x3e4580,61,
-0x3e4678,4,
-0x3e4690,2,
-0x3e46a0,7,
-0x3e46c0,11,
-0x3e4700,14,
-0x3e4740,14,
-0x3e4780,69,
-0x3e4c00,6,
-0x3e4c40,14,
-0x3e4c80,9,
-0x3e4d00,9,
-0x3e4d2c,1,
-0x3e4d40,3,
-0x3e4d60,1,
-0x3e4d80,3,
-0x3e4e00,2,
-0x3e4e0c,1,
-0x3e4e14,5,
-0x3e4e2c,1,
-0x3e4e34,5,
-0x3e4e4c,1,
-0x3e4e54,5,
-0x3e4e6c,1,
-0x3e4e74,5,
-0x3e4e8c,1,
-0x3e4e94,5,
-0x3e4eac,1,
-0x3e4eb4,3,
-0x3e5000,29,
-0x3e5078,4,
-0x3e5090,2,
-0x3e50a0,7,
-0x3e50c0,11,
-0x3e5100,14,
-0x3e5140,14,
-0x3e5180,61,
-0x3e5278,4,
-0x3e5290,2,
-0x3e52a0,7,
-0x3e52c0,11,
-0x3e5300,14,
-0x3e5340,14,
-0x3e5380,61,
-0x3e5478,4,
-0x3e5490,2,
-0x3e54a0,7,
-0x3e54c0,11,
-0x3e5500,14,
-0x3e5540,14,
-0x3e5580,61,
-0x3e5678,4,
-0x3e5690,2,
-0x3e56a0,7,
-0x3e56c0,11,
-0x3e5700,14,
-0x3e5740,14,
-0x3e5780,69,
-0x3e5c00,6,
-0x3e5c40,14,
-0x3e5c80,9,
-0x3e5d00,9,
-0x3e5d2c,1,
-0x3e5d40,3,
-0x3e5d60,1,
-0x3e5d80,3,
-0x3e5e00,2,
-0x3e5e0c,1,
-0x3e5e14,5,
-0x3e5e2c,1,
-0x3e5e34,5,
-0x3e5e4c,1,
-0x3e5e54,5,
-0x3e5e6c,1,
-0x3e5e74,5,
-0x3e5e8c,1,
-0x3e5e94,5,
-0x3e5eac,1,
-0x3e5eb4,3,
-0x3e6000,14,
-0x3e6040,6,
-0x3e6060,6,
-0x3e6080,6,
-0x3e60a0,3,
-0x3e6100,9,
-0x3e6204,1,
-0x3e620c,6,
-0x3e6240,13,
-0x3e6280,16,
-0x3e6800,19,
-0x3e6850,10,
-0x3e6880,19,
-0x3e68d0,10,
-0x3e6900,19,
-0x3e6950,10,
-0x3e6980,19,
-0x3e69d0,10,
-0x3e6a00,19,
-0x3e6a50,10,
-0x3e6a80,19,
-0x3e6ad0,10,
-0x3e6b00,19,
-0x3e6b50,10,
-0x3e6b80,19,
-0x3e6bd0,10,
-0x3e6c00,19,
-0x3e6c60,6,
-0x3e6c84,1,
-0x3e6c94,8,
-0x3e6cb8,14,
-0x3e7000,1,
-0x3e7028,1,
-0x3e7050,1,
-0x3e7078,1,
-0x3e70a0,4,
-0x3e71ac,1,
-0x3e71d8,4,
-0x3e7200,6,
-0x3e7220,6,
-0x3e7240,3,
-0x3e7400,1,
-0x3e7408,3,
-0x3e7438,1,
-0x3e7444,1,
-0x3e7450,6,
-0x3e7500,7,
-0x3e7520,6,
-0x3e7540,6,
-0x3e7560,3,
-0x3e7570,3,
-0x3e8000,6,
-0x3e8020,3,
-0x3e8030,1,
-0x3e8038,4,
-0x3e8050,1,
-0x3e8400,1,
-0x3e8428,1,
-0x3e8450,1,
-0x3e8478,1,
-0x3e84a0,6,
-0x3e85ac,1,
-0x3e85d8,4,
-0x3e8600,6,
-0x3e8620,6,
-0x3e8640,3,
-0x3e8800,6,
-0x3e8820,3,
-0x3e8830,4,
-0x3e8918,2,
-0x3e8924,1,
-0x3e8934,3,
-0x3e8958,2,
-0x3e8964,1,
-0x3e8974,3,
-0x3e8998,2,
-0x3e89a4,1,
-0x3e89b4,3,
-0x3e89d8,2,
-0x3e89e4,1,
-0x3e89f4,3,
-0x3e9020,4,
-0x3e9040,11,
-0x3e9074,2,
-0x3e9080,4,
-0x3e90b0,22,
-0x3e9110,2,
-0x3e9120,22,
-0x3e9180,2,
-0x3e91a0,6,
-0x3e91c0,9,
-0x3e9200,42,
-0x3e92c0,1,
-0x3e92c8,13,
-0x3e9300,25,
-0x3e936c,4,
-0x3e9380,2,
-0x3e93a0,1,
-0x3e93c0,11,
-0x3e9404,3,
-0x3e9420,11,
-0x3e9480,6,
-0x3e9500,1,
-0x3e9520,6,
-0x3e9540,3,
-0x3e9550,7,
-0x3e9570,18,
-0x3e95bc,5,
-0x3e9800,480,
-0x3ea020,4,
-0x3ea040,11,
-0x3ea074,2,
-0x3ea080,4,
-0x3ea0b0,22,
-0x3ea110,2,
-0x3ea120,22,
-0x3ea180,2,
-0x3ea1a0,6,
-0x3ea1c0,9,
-0x3ea200,42,
-0x3ea2c0,1,
-0x3ea2c8,13,
-0x3ea300,25,
-0x3ea36c,4,
-0x3ea380,2,
-0x3ea3a0,1,
-0x3ea3c0,11,
-0x3ea404,3,
-0x3ea420,11,
-0x3ea480,6,
-0x3ea500,1,
-0x3ea520,6,
-0x3ea540,3,
-0x3ea550,7,
-0x3ea570,18,
-0x3ea5bc,5,
-0x3ea800,480,
-0x3eb020,4,
-0x3eb040,11,
-0x3eb074,2,
-0x3eb080,4,
-0x3eb0b0,22,
-0x3eb110,2,
-0x3eb120,22,
-0x3eb180,2,
-0x3eb1a0,6,
-0x3eb1c0,9,
-0x3eb200,42,
-0x3eb2c0,1,
-0x3eb2c8,13,
-0x3eb300,25,
-0x3eb36c,4,
-0x3eb380,2,
-0x3eb3a0,1,
-0x3eb3c0,11,
-0x3eb404,3,
-0x3eb420,11,
-0x3eb480,6,
-0x3eb500,1,
-0x3eb520,6,
-0x3eb540,3,
-0x3eb550,7,
-0x3eb570,18,
-0x3eb5bc,5,
-0x3eb800,480,
-0x3ec020,4,
-0x3ec040,11,
-0x3ec074,2,
-0x3ec080,4,
-0x3ec0b0,22,
-0x3ec110,2,
-0x3ec120,22,
-0x3ec180,2,
-0x3ec1a0,6,
-0x3ec1c0,9,
-0x3ec200,42,
-0x3ec2c0,1,
-0x3ec2c8,13,
-0x3ec300,25,
-0x3ec36c,4,
-0x3ec380,2,
-0x3ec3a0,1,
-0x3ec3c0,11,
-0x3ec404,3,
-0x3ec420,11,
-0x3ec480,6,
-0x3ec500,1,
-0x3ec520,6,
-0x3ec540,3,
-0x3ec550,7,
-0x3ec570,18,
-0x3ec5bc,5,
-0x3ec800,480,
-0x3ef800,5,
-0x3ef818,1,
-0x3ef854,6,
-0x3ef880,4,
-0x3ef8a4,1,
-0x3ef8ac,2,
-0x3ef900,5,
-0x3ef918,1,
-0x3ef954,6,
-0x3ef980,4,
-0x3ef9a4,1,
-0x3ef9ac,2,
-0x3efa00,5,
-0x3efa18,1,
-0x3efa54,6,
-0x3efa80,4,
-0x3efaa4,1,
-0x3efaac,2,
-0x3efb00,5,
-0x3efb18,1,
-0x3efb54,6,
-0x3efb80,4,
-0x3efba4,1,
-0x3efbac,2,
-0x3f4000,3,
-0x3f4018,10,
-0x3f4100,58,
-0x3f41f0,1,
-0x3f4400,3,
-0x3f4418,10,
-0x3f4500,58,
-0x3f45f0,1,
-0x3f4800,3,
-0x3f4810,3,
-0x3f4820,6,
-0x3f4880,9,
-0x3f48c0,9,
-0x3f4900,8,
-0x3f4938,2,
-0x3f4944,1,
-0x3f4954,3,
-0x3f4980,8,
-0x3f49b8,2,
-0x3f49c4,1,
-0x3f49d4,3,
-0x3f5000,3,
-0x3f5018,10,
-0x3f5100,58,
-0x3f51f0,1,
-0x3f5400,3,
-0x3f5418,10,
-0x3f5500,58,
-0x3f55f0,1,
-0x3f5800,3,
-0x3f5810,3,
-0x3f5820,6,
-0x3f5880,9,
-0x3f58c0,9,
-0x3f5900,8,
-0x3f5938,2,
-0x3f5944,1,
-0x3f5954,3,
-0x3f5980,8,
-0x3f59b8,2,
-0x3f59c4,1,
-0x3f59d4,3,
-0x3f6004,7,
-0x3f6024,1,
-0x3f6030,4,
-0x3f6300,5,
-0x3f631c,2,
-0x3f6600,10,
-0x3f6630,1,
-0x3f6640,10,
-0x3f6670,1,
-0x3f6700,10,
-0x3f6730,1,
-0x3f6740,10,
-0x3f6770,1,
-0x3f6800,19,
-0x3f6890,15,
-0x3f6910,15,
-0x3f6a00,10,
-0x3f6ab8,4,
-0x3f6b00,3,
-0x3f6b10,1,
-0x3f6e00,6,
-0x3f6f00,5,
-0x3f7000,65,
-0x3f7800,6,
-0x3f7820,6,
-0x3f7840,6,
-0x3f7860,6,
-0x3f7880,6,
-0x3f78a0,6,
-0x3f78c0,6,
-0x3f78e0,3,
-0x3f7900,6,
-0x3f7920,6,
-0x3f7940,6,
-0x3f7960,6,
-0x3f7980,6,
-0x3f79a0,6,
-0x3f79c0,6,
-0x3f79e0,3,
-0x3f7a00,6,
-0x3f7a20,6,
-0x3f7a40,3,
-0x3f7a80,7,
-0x3f7aa0,7,
-0x3f7ac0,9,
-0x3f7b00,9,
-0x3f7b40,10,
-0x3f7b80,10,
-0x3f7bc0,10,
-0x3f7c00,10,
-0x3f7c40,10,
-0x3f7c80,10,
-0x3f7cc0,3,
-0x3f7e40,7,
-0x3f7e60,7,
-0x3f7e80,7,
-0x3f7ea0,7,
-0x3f7ec0,7,
-0x3f7ee0,7,
-0x3f7f00,7,
-0x3f7f20,7,
-0x3f7f40,7,
-0x3f7f60,4,
-0x3f7f78,13,
-0x3f8000,2,
-0x3f800c,3,
-0x3f8028,2,
-0x3f8038,2,
-0x3f8080,29,
-0x3f80f8,1,
-0x3f8100,13,
-0x3f8140,13,
-0x3f8500,6,
-0x3f8520,6,
-0x3f8540,3,
-0x3f8580,10,
-0x3f85c0,15,
-0x3f8600,2,
-0x3f8618,5,
-0x3f8630,1,
-0x3f8800,2,
-0x3f880c,3,
-0x3f8828,2,
-0x3f8838,2,
-0x3f8880,29,
-0x3f88f8,1,
-0x3f8900,13,
-0x3f8940,13,
-0x3f8d00,6,
-0x3f8d20,6,
-0x3f8d40,3,
-0x3f8d80,10,
-0x3f8dc0,15,
-0x3f8e00,2,
-0x3f8e18,5,
-0x3f8e30,1,
-0x3f9800,3,
-0x3f9828,3,
-0x3f9850,3,
-0x3f9878,3,
-0x3f98a0,9,
-0x3f99ac,1,
-0x3f99d8,4,
-0x3f9a00,6,
-0x3f9a20,6,
-0x3f9a40,6,
-0x3f9a60,6,
-0x3f9a80,6,
-0x3f9aa0,6,
-0x3f9ac0,3,
-0x3f9c00,6,
-0x3f9c20,3,
-0x3f9c40,2,
-0x3f9c60,1,
diff --git a/mstdump/mstdump_dbs/SwitchIB.csv b/mstdump/mstdump_dbs/SwitchIB.csv
deleted file mode 100644 (file)
index 296e8c4..0000000
+++ /dev/null
@@ -1,13170 +0,0 @@
-#Addr, Size, Enable addr
-0x000400,1,
-0x000408,14,
-0x000480,1,
-0x000488,18,
-0x000500,9,
-0x000534,2,
-0x00054c,4,
-0x00056c,11,
-0x0005ac,8,
-0x0005d0,1,
-0x000604,1,
-0x00060c,13,
-0x000644,1,
-0x000654,3,
-0x000664,1,
-0x00066c,8,
-0x0006a8,3,
-0x0006c0,8,
-0x000700,6,
-0x000760,4,
-0x000780,8,
-0x0007b8,8,
-0x0007dc,10,
-0x000808,14,
-0x000880,1,
-0x000888,18,
-0x000900,9,
-0x000934,2,
-0x00094c,4,
-0x00096c,11,
-0x0009ac,8,
-0x0009d0,1,
-0x000a04,1,
-0x000a0c,13,
-0x000a44,1,
-0x000a54,3,
-0x000a64,1,
-0x000a6c,8,
-0x000aa8,3,
-0x000ac0,8,
-0x000b00,6,
-0x000b60,4,
-0x000b80,8,
-0x000bb8,8,
-0x000bdc,10,
-0x000c08,14,
-0x000c80,1,
-0x000c88,18,
-0x000d00,9,
-0x000d34,2,
-0x000d4c,4,
-0x000d6c,11,
-0x000dac,8,
-0x000dd0,1,
-0x000e04,1,
-0x000e0c,13,
-0x000e44,1,
-0x000e54,3,
-0x000e64,1,
-0x000e6c,8,
-0x000ea8,3,
-0x000ec0,8,
-0x000f00,6,
-0x000f60,4,
-0x000f80,8,
-0x000fb8,8,
-0x000fdc,10,
-0x001008,14,
-0x001080,1,
-0x001088,18,
-0x001100,9,
-0x001134,2,
-0x00114c,4,
-0x00116c,11,
-0x0011ac,8,
-0x0011d0,1,
-0x001204,1,
-0x00120c,13,
-0x001244,1,
-0x001254,3,
-0x001264,1,
-0x00126c,8,
-0x0012a8,3,
-0x0012c0,8,
-0x001300,6,
-0x001360,4,
-0x001380,8,
-0x0013b8,8,
-0x0013dc,10,
-0x001408,14,
-0x001480,1,
-0x001488,18,
-0x001500,9,
-0x001534,2,
-0x00154c,4,
-0x00156c,11,
-0x0015ac,8,
-0x0015d0,1,
-0x001604,1,
-0x00160c,13,
-0x001644,1,
-0x001654,3,
-0x001664,1,
-0x00166c,8,
-0x0016a8,3,
-0x0016c0,8,
-0x001700,6,
-0x001760,4,
-0x001780,8,
-0x0017b8,8,
-0x0017dc,10,
-0x001808,14,
-0x001880,1,
-0x001888,18,
-0x001900,9,
-0x001934,2,
-0x00194c,4,
-0x00196c,11,
-0x0019ac,8,
-0x0019d0,1,
-0x001a04,1,
-0x001a0c,13,
-0x001a44,1,
-0x001a54,3,
-0x001a64,1,
-0x001a6c,8,
-0x001aa8,3,
-0x001ac0,8,
-0x001b00,6,
-0x001b60,4,
-0x001b80,8,
-0x001bb8,8,
-0x001bdc,10,
-0x001c08,14,
-0x001c80,1,
-0x001c88,18,
-0x001d00,9,
-0x001d34,2,
-0x001d4c,4,
-0x001d6c,11,
-0x001dac,8,
-0x001dd0,1,
-0x001e04,1,
-0x001e0c,13,
-0x001e44,1,
-0x001e54,3,
-0x001e64,1,
-0x001e6c,8,
-0x001ea8,3,
-0x001ec0,8,
-0x001f00,6,
-0x001f60,4,
-0x001f80,8,
-0x001fb8,8,
-0x001fdc,10,
-0x002008,14,
-0x002080,1,
-0x002088,18,
-0x002100,9,
-0x002134,2,
-0x00214c,4,
-0x00216c,11,
-0x0021ac,8,
-0x0021d0,1,
-0x002204,1,
-0x00220c,13,
-0x002244,1,
-0x002254,3,
-0x002264,1,
-0x00226c,8,
-0x0022a8,3,
-0x0022c0,8,
-0x002300,6,
-0x002360,4,
-0x002380,8,
-0x0023b8,8,
-0x0023dc,10,
-0x002408,14,
-0x002480,1,
-0x002488,18,
-0x002500,9,
-0x002534,2,
-0x00254c,4,
-0x00256c,11,
-0x0025ac,8,
-0x0025d0,1,
-0x002604,1,
-0x00260c,13,
-0x002644,1,
-0x002654,3,
-0x002664,1,
-0x00266c,8,
-0x0026a8,3,
-0x0026c0,8,
-0x002700,6,
-0x002760,4,
-0x002780,8,
-0x0027b8,8,
-0x0027dc,10,
-0x002808,14,
-0x002880,1,
-0x002888,18,
-0x002900,9,
-0x002934,2,
-0x00294c,4,
-0x00296c,11,
-0x0029ac,8,
-0x0029d0,1,
-0x002a04,1,
-0x002a0c,13,
-0x002a44,1,
-0x002a54,3,
-0x002a64,1,
-0x002a6c,8,
-0x002aa8,3,
-0x002ac0,8,
-0x002b00,6,
-0x002b60,4,
-0x002b80,8,
-0x002bb8,8,
-0x002bdc,10,
-0x002c08,14,
-0x002c80,1,
-0x002c88,18,
-0x002d00,9,
-0x002d34,2,
-0x002d4c,4,
-0x002d6c,11,
-0x002dac,8,
-0x002dd0,1,
-0x002e04,1,
-0x002e0c,13,
-0x002e44,1,
-0x002e54,3,
-0x002e64,1,
-0x002e6c,8,
-0x002ea8,3,
-0x002ec0,8,
-0x002f00,6,
-0x002f60,4,
-0x002f80,8,
-0x002fb8,8,
-0x002fdc,10,
-0x003008,14,
-0x003080,1,
-0x003088,18,
-0x003100,9,
-0x003134,2,
-0x00314c,4,
-0x00316c,11,
-0x0031ac,8,
-0x0031d0,1,
-0x003204,1,
-0x00320c,13,
-0x003244,1,
-0x003254,3,
-0x003264,1,
-0x00326c,8,
-0x0032a8,3,
-0x0032c0,8,
-0x003300,6,
-0x003360,4,
-0x003380,8,
-0x0033b8,8,
-0x0033dc,10,
-0x003408,14,
-0x003480,1,
-0x003488,18,
-0x003500,9,
-0x003534,2,
-0x00354c,4,
-0x00356c,11,
-0x0035ac,8,
-0x0035d0,1,
-0x003604,1,
-0x00360c,13,
-0x003644,1,
-0x003654,3,
-0x003664,1,
-0x00366c,8,
-0x0036a8,3,
-0x0036c0,8,
-0x003700,6,
-0x003760,4,
-0x003780,8,
-0x0037b8,8,
-0x0037dc,10,
-0x003808,14,
-0x003880,1,
-0x003888,18,
-0x003900,9,
-0x003934,2,
-0x00394c,4,
-0x00396c,11,
-0x0039ac,8,
-0x0039d0,1,
-0x003a04,1,
-0x003a0c,13,
-0x003a44,1,
-0x003a54,3,
-0x003a64,1,
-0x003a6c,8,
-0x003aa8,3,
-0x003ac0,8,
-0x003b00,6,
-0x003b60,4,
-0x003b80,8,
-0x003bb8,8,
-0x003bdc,10,
-0x003c08,14,
-0x003c80,1,
-0x003c88,18,
-0x003d00,9,
-0x003d34,2,
-0x003d4c,4,
-0x003d6c,11,
-0x003dac,8,
-0x003dd0,1,
-0x003e04,1,
-0x003e0c,13,
-0x003e44,1,
-0x003e54,3,
-0x003e64,1,
-0x003e6c,8,
-0x003ea8,3,
-0x003ec0,8,
-0x003f00,6,
-0x003f60,4,
-0x003f80,8,
-0x003fb8,8,
-0x003fdc,10,
-0x004008,14,
-0x004080,1,
-0x004088,18,
-0x004100,9,
-0x004134,2,
-0x00414c,4,
-0x00416c,11,
-0x0041ac,8,
-0x0041d0,1,
-0x004204,1,
-0x00420c,13,
-0x004244,1,
-0x004254,3,
-0x004264,1,
-0x00426c,8,
-0x0042a8,3,
-0x0042c0,8,
-0x004300,6,
-0x004360,4,
-0x004380,8,
-0x0043b8,8,
-0x0043dc,10,
-0x004408,14,
-0x004480,1,
-0x004488,18,
-0x004500,9,
-0x004534,2,
-0x00454c,4,
-0x00456c,11,
-0x0045ac,8,
-0x0045d0,1,
-0x004604,1,
-0x00460c,13,
-0x004644,1,
-0x004654,3,
-0x004664,1,
-0x00466c,8,
-0x0046a8,3,
-0x0046c0,8,
-0x004700,6,
-0x004760,4,
-0x004780,8,
-0x0047b8,8,
-0x0047dc,10,
-0x004808,14,
-0x004880,1,
-0x004888,18,
-0x004900,9,
-0x004934,2,
-0x00494c,4,
-0x00496c,11,
-0x0049ac,8,
-0x0049d0,1,
-0x004a04,1,
-0x004a0c,13,
-0x004a44,1,
-0x004a54,3,
-0x004a64,1,
-0x004a6c,8,
-0x004aa8,3,
-0x004ac0,8,
-0x004b00,6,
-0x004b60,4,
-0x004b80,8,
-0x004bb8,8,
-0x004bdc,10,
-0x004c08,14,
-0x004c80,1,
-0x004c88,18,
-0x004d00,9,
-0x004d34,2,
-0x004d4c,4,
-0x004d6c,11,
-0x004dac,8,
-0x004dd0,1,
-0x004e04,1,
-0x004e0c,13,
-0x004e44,1,
-0x004e54,3,
-0x004e64,1,
-0x004e6c,8,
-0x004ea8,3,
-0x004ec0,8,
-0x004f00,6,
-0x004f60,4,
-0x004f80,8,
-0x004fb8,8,
-0x004fdc,10,
-0x005008,14,
-0x005080,1,
-0x005088,18,
-0x005100,9,
-0x005134,2,
-0x00514c,4,
-0x00516c,11,
-0x0051ac,8,
-0x0051d0,1,
-0x005204,1,
-0x00520c,13,
-0x005244,1,
-0x005254,3,
-0x005264,1,
-0x00526c,8,
-0x0052a8,3,
-0x0052c0,8,
-0x005300,6,
-0x005360,4,
-0x005380,8,
-0x0053b8,8,
-0x0053dc,10,
-0x005428,1,
-0x005450,1,
-0x005478,1,
-0x0054a0,1,
-0x0055ac,1,
-0x0055d8,4,
-0x005600,6,
-0x005620,6,
-0x005640,3,
-0x005800,13,
-0x005840,6,
-0x005860,3,
-0x005880,2,
-0x005904,2,
-0x005918,1,
-0x005940,1,
-0x008400,1,
-0x008408,14,
-0x008480,1,
-0x008488,18,
-0x008500,9,
-0x008534,2,
-0x00854c,4,
-0x00856c,11,
-0x0085ac,8,
-0x0085d0,1,
-0x008604,1,
-0x00860c,13,
-0x008644,1,
-0x008654,3,
-0x008664,1,
-0x00866c,8,
-0x0086a8,3,
-0x0086c0,8,
-0x008700,6,
-0x008760,4,
-0x008780,8,
-0x0087b8,8,
-0x0087dc,10,
-0x008808,14,
-0x008880,1,
-0x008888,18,
-0x008900,9,
-0x008934,2,
-0x00894c,4,
-0x00896c,11,
-0x0089ac,8,
-0x0089d0,1,
-0x008a04,1,
-0x008a0c,13,
-0x008a44,1,
-0x008a54,3,
-0x008a64,1,
-0x008a6c,8,
-0x008aa8,3,
-0x008ac0,8,
-0x008b00,6,
-0x008b60,4,
-0x008b80,8,
-0x008bb8,8,
-0x008bdc,10,
-0x008c08,14,
-0x008c80,1,
-0x008c88,18,
-0x008d00,9,
-0x008d34,2,
-0x008d4c,4,
-0x008d6c,11,
-0x008dac,8,
-0x008dd0,1,
-0x008e04,1,
-0x008e0c,13,
-0x008e44,1,
-0x008e54,3,
-0x008e64,1,
-0x008e6c,8,
-0x008ea8,3,
-0x008ec0,8,
-0x008f00,6,
-0x008f60,4,
-0x008f80,8,
-0x008fb8,8,
-0x008fdc,10,
-0x009008,14,
-0x009080,1,
-0x009088,18,
-0x009100,9,
-0x009134,2,
-0x00914c,4,
-0x00916c,11,
-0x0091ac,8,
-0x0091d0,1,
-0x009204,1,
-0x00920c,13,
-0x009244,1,
-0x009254,3,
-0x009264,1,
-0x00926c,8,
-0x0092a8,3,
-0x0092c0,8,
-0x009300,6,
-0x009360,4,
-0x009380,8,
-0x0093b8,8,
-0x0093dc,10,
-0x009408,14,
-0x009480,1,
-0x009488,18,
-0x009500,9,
-0x009534,2,
-0x00954c,4,
-0x00956c,11,
-0x0095ac,8,
-0x0095d0,1,
-0x009604,1,
-0x00960c,13,
-0x009644,1,
-0x009654,3,
-0x009664,1,
-0x00966c,8,
-0x0096a8,3,
-0x0096c0,8,
-0x009700,6,
-0x009760,4,
-0x009780,8,
-0x0097b8,8,
-0x0097dc,10,
-0x009808,14,
-0x009880,1,
-0x009888,18,
-0x009900,9,
-0x009934,2,
-0x00994c,4,
-0x00996c,11,
-0x0099ac,8,
-0x0099d0,1,
-0x009a04,1,
-0x009a0c,13,
-0x009a44,1,
-0x009a54,3,
-0x009a64,1,
-0x009a6c,8,
-0x009aa8,3,
-0x009ac0,8,
-0x009b00,6,
-0x009b60,4,
-0x009b80,8,
-0x009bb8,8,
-0x009bdc,10,
-0x009c08,14,
-0x009c80,1,
-0x009c88,18,
-0x009d00,9,
-0x009d34,2,
-0x009d4c,4,
-0x009d6c,11,
-0x009dac,8,
-0x009dd0,1,
-0x009e04,1,
-0x009e0c,13,
-0x009e44,1,
-0x009e54,3,
-0x009e64,1,
-0x009e6c,8,
-0x009ea8,3,
-0x009ec0,8,
-0x009f00,6,
-0x009f60,4,
-0x009f80,8,
-0x009fb8,8,
-0x009fdc,10,
-0x00a008,14,
-0x00a080,1,
-0x00a088,18,
-0x00a100,9,
-0x00a134,2,
-0x00a14c,4,
-0x00a16c,11,
-0x00a1ac,8,
-0x00a1d0,1,
-0x00a204,1,
-0x00a20c,13,
-0x00a244,1,
-0x00a254,3,
-0x00a264,1,
-0x00a26c,8,
-0x00a2a8,3,
-0x00a2c0,8,
-0x00a300,6,
-0x00a360,4,
-0x00a380,8,
-0x00a3b8,8,
-0x00a3dc,10,
-0x00a408,14,
-0x00a480,1,
-0x00a488,18,
-0x00a500,9,
-0x00a534,2,
-0x00a54c,4,
-0x00a56c,11,
-0x00a5ac,8,
-0x00a5d0,1,
-0x00a604,1,
-0x00a60c,13,
-0x00a644,1,
-0x00a654,3,
-0x00a664,1,
-0x00a66c,8,
-0x00a6a8,3,
-0x00a6c0,8,
-0x00a700,6,
-0x00a760,4,
-0x00a780,8,
-0x00a7b8,8,
-0x00a7dc,10,
-0x00a808,14,
-0x00a880,1,
-0x00a888,18,
-0x00a900,9,
-0x00a934,2,
-0x00a94c,4,
-0x00a96c,11,
-0x00a9ac,8,
-0x00a9d0,1,
-0x00aa04,1,
-0x00aa0c,13,
-0x00aa44,1,
-0x00aa54,3,
-0x00aa64,1,
-0x00aa6c,8,
-0x00aaa8,3,
-0x00aac0,8,
-0x00ab00,6,
-0x00ab60,4,
-0x00ab80,8,
-0x00abb8,8,
-0x00abdc,10,
-0x00ac08,14,
-0x00ac80,1,
-0x00ac88,18,
-0x00ad00,9,
-0x00ad34,2,
-0x00ad4c,4,
-0x00ad6c,11,
-0x00adac,8,
-0x00add0,1,
-0x00ae04,1,
-0x00ae0c,13,
-0x00ae44,1,
-0x00ae54,3,
-0x00ae64,1,
-0x00ae6c,8,
-0x00aea8,3,
-0x00aec0,8,
-0x00af00,6,
-0x00af60,4,
-0x00af80,8,
-0x00afb8,8,
-0x00afdc,10,
-0x00b008,14,
-0x00b080,1,
-0x00b088,18,
-0x00b100,9,
-0x00b134,2,
-0x00b14c,4,
-0x00b16c,11,
-0x00b1ac,8,
-0x00b1d0,1,
-0x00b204,1,
-0x00b20c,13,
-0x00b244,1,
-0x00b254,3,
-0x00b264,1,
-0x00b26c,8,
-0x00b2a8,3,
-0x00b2c0,8,
-0x00b300,6,
-0x00b360,4,
-0x00b380,8,
-0x00b3b8,8,
-0x00b3dc,10,
-0x00b408,14,
-0x00b480,1,
-0x00b488,18,
-0x00b500,9,
-0x00b534,2,
-0x00b54c,4,
-0x00b56c,11,
-0x00b5ac,8,
-0x00b5d0,1,
-0x00b604,1,
-0x00b60c,13,
-0x00b644,1,
-0x00b654,3,
-0x00b664,1,
-0x00b66c,8,
-0x00b6a8,3,
-0x00b6c0,8,
-0x00b700,6,
-0x00b760,4,
-0x00b780,8,
-0x00b7b8,8,
-0x00b7dc,10,
-0x00b808,14,
-0x00b880,1,
-0x00b888,18,
-0x00b900,9,
-0x00b934,2,
-0x00b94c,4,
-0x00b96c,11,
-0x00b9ac,8,
-0x00b9d0,1,
-0x00ba04,1,
-0x00ba0c,13,
-0x00ba44,1,
-0x00ba54,3,
-0x00ba64,1,
-0x00ba6c,8,
-0x00baa8,3,
-0x00bac0,8,
-0x00bb00,6,
-0x00bb60,4,
-0x00bb80,8,
-0x00bbb8,8,
-0x00bbdc,10,
-0x00bc08,14,
-0x00bc80,1,
-0x00bc88,18,
-0x00bd00,9,
-0x00bd34,2,
-0x00bd4c,4,
-0x00bd6c,11,
-0x00bdac,8,
-0x00bdd0,1,
-0x00be04,1,
-0x00be0c,13,
-0x00be44,1,
-0x00be54,3,
-0x00be64,1,
-0x00be6c,8,
-0x00bea8,3,
-0x00bec0,8,
-0x00bf00,6,
-0x00bf60,4,
-0x00bf80,8,
-0x00bfb8,8,
-0x00bfdc,10,
-0x00c008,14,
-0x00c080,1,
-0x00c088,18,
-0x00c100,9,
-0x00c134,2,
-0x00c14c,4,
-0x00c16c,11,
-0x00c1ac,8,
-0x00c1d0,1,
-0x00c204,1,
-0x00c20c,13,
-0x00c244,1,
-0x00c254,3,
-0x00c264,1,
-0x00c26c,8,
-0x00c2a8,3,
-0x00c2c0,8,
-0x00c300,6,
-0x00c360,4,
-0x00c380,8,
-0x00c3b8,8,
-0x00c3dc,10,
-0x00c408,14,
-0x00c480,1,
-0x00c488,18,
-0x00c500,9,
-0x00c534,2,
-0x00c54c,4,
-0x00c56c,11,
-0x00c5ac,8,
-0x00c5d0,1,
-0x00c604,1,
-0x00c60c,13,
-0x00c644,1,
-0x00c654,3,
-0x00c664,1,
-0x00c66c,8,
-0x00c6a8,3,
-0x00c6c0,8,
-0x00c700,6,
-0x00c760,4,
-0x00c780,8,
-0x00c7b8,8,
-0x00c7dc,10,
-0x00c808,14,
-0x00c880,1,
-0x00c888,18,
-0x00c900,9,
-0x00c934,2,
-0x00c94c,4,
-0x00c96c,11,
-0x00c9ac,8,
-0x00c9d0,1,
-0x00ca04,1,
-0x00ca0c,13,
-0x00ca44,1,
-0x00ca54,3,
-0x00ca64,1,
-0x00ca6c,8,
-0x00caa8,3,
-0x00cac0,8,
-0x00cb00,6,
-0x00cb60,4,
-0x00cb80,8,
-0x00cbb8,8,
-0x00cbdc,10,
-0x00cc08,14,
-0x00cc80,1,
-0x00cc88,18,
-0x00cd00,9,
-0x00cd34,2,
-0x00cd4c,4,
-0x00cd6c,11,
-0x00cdac,8,
-0x00cdd0,1,
-0x00ce04,1,
-0x00ce0c,13,
-0x00ce44,1,
-0x00ce54,3,
-0x00ce64,1,
-0x00ce6c,8,
-0x00cea8,3,
-0x00cec0,8,
-0x00cf00,6,
-0x00cf60,4,
-0x00cf80,8,
-0x00cfb8,8,
-0x00cfdc,10,
-0x00d008,14,
-0x00d080,1,
-0x00d088,18,
-0x00d100,9,
-0x00d134,2,
-0x00d14c,4,
-0x00d16c,11,
-0x00d1ac,8,
-0x00d1d0,1,
-0x00d204,1,
-0x00d20c,13,
-0x00d244,1,
-0x00d254,3,
-0x00d264,1,
-0x00d26c,8,
-0x00d2a8,3,
-0x00d2c0,8,
-0x00d300,6,
-0x00d360,4,
-0x00d380,8,
-0x00d3b8,8,
-0x00d3dc,10,
-0x00d428,1,
-0x00d450,1,
-0x00d478,1,
-0x00d4a0,1,
-0x00d5ac,1,
-0x00d5d8,4,
-0x00d600,6,
-0x00d620,6,
-0x00d640,3,
-0x00d800,13,
-0x00d840,6,
-0x00d860,3,
-0x00d880,2,
-0x00d904,2,
-0x00d918,1,
-0x00d940,1,
-0x010000,1,
-0x010008,10,
-0x010034,16,
-0x010080,33,
-0x010110,5,
-0x010128,2,
-0x010134,1,
-0x01013c,13,
-0x010174,1,
-0x01017c,7,
-0x0101a0,17,
-0x0101e8,3,
-0x010200,1,
-0x010208,10,
-0x010234,16,
-0x010280,33,
-0x010310,5,
-0x010328,2,
-0x010334,1,
-0x01033c,13,
-0x010374,1,
-0x01037c,7,
-0x0103a0,17,
-0x0103e8,3,
-0x010400,1,
-0x010408,10,
-0x010434,16,
-0x010480,33,
-0x010510,5,
-0x010528,2,
-0x010534,1,
-0x01053c,13,
-0x010574,1,
-0x01057c,7,
-0x0105a0,17,
-0x0105e8,3,
-0x010600,1,
-0x010608,10,
-0x010634,16,
-0x010680,33,
-0x010710,5,
-0x010728,2,
-0x010734,1,
-0x01073c,13,
-0x010774,1,
-0x01077c,7,
-0x0107a0,17,
-0x0107e8,3,
-0x010800,1,
-0x010808,10,
-0x010834,16,
-0x010880,33,
-0x010910,5,
-0x010928,2,
-0x010934,1,
-0x01093c,13,
-0x010974,1,
-0x01097c,7,
-0x0109a0,17,
-0x0109e8,3,
-0x010a00,1,
-0x010a08,10,
-0x010a34,16,
-0x010a80,33,
-0x010b10,5,
-0x010b28,2,
-0x010b34,1,
-0x010b3c,13,
-0x010b74,1,
-0x010b7c,7,
-0x010ba0,17,
-0x010be8,3,
-0x010c00,1,
-0x010c08,10,
-0x010c34,16,
-0x010c80,33,
-0x010d10,5,
-0x010d28,2,
-0x010d34,1,
-0x010d3c,13,
-0x010d74,1,
-0x010d7c,7,
-0x010da0,17,
-0x010de8,3,
-0x010e00,1,
-0x010e08,10,
-0x010e34,16,
-0x010e80,33,
-0x010f10,5,
-0x010f28,2,
-0x010f34,1,
-0x010f3c,13,
-0x010f74,1,
-0x010f7c,7,
-0x010fa0,17,
-0x010fe8,3,
-0x011000,1,
-0x011008,10,
-0x011034,16,
-0x011080,33,
-0x011110,5,
-0x011128,2,
-0x011134,1,
-0x01113c,13,
-0x011174,1,
-0x01117c,7,
-0x0111a0,17,
-0x0111e8,3,
-0x011200,1,
-0x011208,10,
-0x011234,16,
-0x011280,33,
-0x011310,5,
-0x011328,2,
-0x011334,1,
-0x01133c,13,
-0x011374,1,
-0x01137c,7,
-0x0113a0,17,
-0x0113e8,3,
-0x011400,1,
-0x011408,10,
-0x011434,16,
-0x011480,33,
-0x011510,5,
-0x011528,2,
-0x011534,1,
-0x01153c,13,
-0x011574,1,
-0x01157c,7,
-0x0115a0,17,
-0x0115e8,3,
-0x011600,1,
-0x011608,10,
-0x011634,16,
-0x011680,33,
-0x011710,5,
-0x011728,2,
-0x011734,1,
-0x01173c,13,
-0x011774,1,
-0x01177c,7,
-0x0117a0,17,
-0x0117e8,3,
-0x011800,1,
-0x011808,10,
-0x011834,16,
-0x011880,33,
-0x011910,5,
-0x011928,2,
-0x011934,1,
-0x01193c,13,
-0x011974,1,
-0x01197c,7,
-0x0119a0,17,
-0x0119e8,3,
-0x011a00,1,
-0x011a08,10,
-0x011a34,16,
-0x011a80,33,
-0x011b10,5,
-0x011b28,2,
-0x011b34,1,
-0x011b3c,13,
-0x011b74,1,
-0x011b7c,7,
-0x011ba0,17,
-0x011be8,3,
-0x011c00,1,
-0x011c08,10,
-0x011c34,16,
-0x011c80,33,
-0x011d10,5,
-0x011d28,2,
-0x011d34,1,
-0x011d3c,13,
-0x011d74,1,
-0x011d7c,7,
-0x011da0,17,
-0x011de8,3,
-0x011e00,1,
-0x011e08,10,
-0x011e34,16,
-0x011e80,33,
-0x011f10,5,
-0x011f28,2,
-0x011f34,1,
-0x011f3c,13,
-0x011f74,1,
-0x011f7c,7,
-0x011fa0,17,
-0x011fe8,3,
-0x012000,1,
-0x012008,10,
-0x012034,16,
-0x012080,33,
-0x012110,5,
-0x012128,2,
-0x012134,1,
-0x01213c,13,
-0x012174,1,
-0x01217c,7,
-0x0121a0,17,
-0x0121e8,3,
-0x012200,1,
-0x012208,10,
-0x012234,16,
-0x012280,33,
-0x012310,5,
-0x012328,2,
-0x012334,1,
-0x01233c,13,
-0x012374,1,
-0x01237c,7,
-0x0123a0,17,
-0x0123e8,3,
-0x012800,2,
-0x01280c,37,
-0x0128a4,64,
-0x012a00,84,
-0x012b54,2,
-0x012b7c,1,
-0x012b84,1,
-0x012b8c,4,
-0x012ba4,1,
-0x012bac,75,
-0x012d00,60,
-0x012dfc,7,
-0x012e20,6,
-0x012e40,6,
-0x012e60,6,
-0x012e80,3,
-0x012f00,14,
-0x012f40,1,
-0x013000,3,
-0x013028,3,
-0x013050,3,
-0x013078,3,
-0x0130a0,6,
-0x0131ac,1,
-0x0131d8,4,
-0x013200,6,
-0x013220,6,
-0x013240,6,
-0x013260,6,
-0x013280,6,
-0x0132a0,6,
-0x0132c0,3,
-0x013400,6,
-0x013420,3,
-0x013440,3,
-0x013500,13,
-0x013540,1,
-0x013900,1,
-0x014000,1,
-0x014008,10,
-0x014034,16,
-0x014080,33,
-0x014110,5,
-0x014128,2,
-0x014134,1,
-0x01413c,13,
-0x014174,1,
-0x01417c,7,
-0x0141a0,17,
-0x0141e8,3,
-0x014200,1,
-0x014208,10,
-0x014234,16,
-0x014280,33,
-0x014310,5,
-0x014328,2,
-0x014334,1,
-0x01433c,13,
-0x014374,1,
-0x01437c,7,
-0x0143a0,17,
-0x0143e8,3,
-0x014400,1,
-0x014408,10,
-0x014434,16,
-0x014480,33,
-0x014510,5,
-0x014528,2,
-0x014534,1,
-0x01453c,13,
-0x014574,1,
-0x01457c,7,
-0x0145a0,17,
-0x0145e8,3,
-0x014600,1,
-0x014608,10,
-0x014634,16,
-0x014680,33,
-0x014710,5,
-0x014728,2,
-0x014734,1,
-0x01473c,13,
-0x014774,1,
-0x01477c,7,
-0x0147a0,17,
-0x0147e8,3,
-0x014800,1,
-0x014808,10,
-0x014834,16,
-0x014880,33,
-0x014910,5,
-0x014928,2,
-0x014934,1,
-0x01493c,13,
-0x014974,1,
-0x01497c,7,
-0x0149a0,17,
-0x0149e8,3,
-0x014a00,1,
-0x014a08,10,
-0x014a34,16,
-0x014a80,33,
-0x014b10,5,
-0x014b28,2,
-0x014b34,1,
-0x014b3c,13,
-0x014b74,1,
-0x014b7c,7,
-0x014ba0,17,
-0x014be8,3,
-0x014c00,1,
-0x014c08,10,
-0x014c34,16,
-0x014c80,33,
-0x014d10,5,
-0x014d28,2,
-0x014d34,1,
-0x014d3c,13,
-0x014d74,1,
-0x014d7c,7,
-0x014da0,17,
-0x014de8,3,
-0x014e00,1,
-0x014e08,10,
-0x014e34,16,
-0x014e80,33,
-0x014f10,5,
-0x014f28,2,
-0x014f34,1,
-0x014f3c,13,
-0x014f74,1,
-0x014f7c,7,
-0x014fa0,17,
-0x014fe8,3,
-0x015000,1,
-0x015008,10,
-0x015034,16,
-0x015080,33,
-0x015110,5,
-0x015128,2,
-0x015134,1,
-0x01513c,13,
-0x015174,1,
-0x01517c,7,
-0x0151a0,17,
-0x0151e8,3,
-0x015200,1,
-0x015208,10,
-0x015234,16,
-0x015280,33,
-0x015310,5,
-0x015328,2,
-0x015334,1,
-0x01533c,13,
-0x015374,1,
-0x01537c,7,
-0x0153a0,17,
-0x0153e8,3,
-0x015400,1,
-0x015408,10,
-0x015434,16,
-0x015480,33,
-0x015510,5,
-0x015528,2,
-0x015534,1,
-0x01553c,13,
-0x015574,1,
-0x01557c,7,
-0x0155a0,17,
-0x0155e8,3,
-0x015600,1,
-0x015608,10,
-0x015634,16,
-0x015680,33,
-0x015710,5,
-0x015728,2,
-0x015734,1,
-0x01573c,13,
-0x015774,1,
-0x01577c,7,
-0x0157a0,17,
-0x0157e8,3,
-0x015800,1,
-0x015808,10,
-0x015834,16,
-0x015880,33,
-0x015910,5,
-0x015928,2,
-0x015934,1,
-0x01593c,13,
-0x015974,1,
-0x01597c,7,
-0x0159a0,17,
-0x0159e8,3,
-0x015a00,1,
-0x015a08,10,
-0x015a34,16,
-0x015a80,33,
-0x015b10,5,
-0x015b28,2,
-0x015b34,1,
-0x015b3c,13,
-0x015b74,1,
-0x015b7c,7,
-0x015ba0,17,
-0x015be8,3,
-0x015c00,1,
-0x015c08,10,
-0x015c34,16,
-0x015c80,33,
-0x015d10,5,
-0x015d28,2,
-0x015d34,1,
-0x015d3c,13,
-0x015d74,1,
-0x015d7c,7,
-0x015da0,17,
-0x015de8,3,
-0x015e00,1,
-0x015e08,10,
-0x015e34,16,
-0x015e80,33,
-0x015f10,5,
-0x015f28,2,
-0x015f34,1,
-0x015f3c,13,
-0x015f74,1,
-0x015f7c,7,
-0x015fa0,17,
-0x015fe8,3,
-0x016000,1,
-0x016008,10,
-0x016034,16,
-0x016080,33,
-0x016110,5,
-0x016128,2,
-0x016134,1,
-0x01613c,13,
-0x016174,1,
-0x01617c,7,
-0x0161a0,17,
-0x0161e8,3,
-0x016200,1,
-0x016208,10,
-0x016234,16,
-0x016280,33,
-0x016310,5,
-0x016328,2,
-0x016334,1,
-0x01633c,13,
-0x016374,1,
-0x01637c,7,
-0x0163a0,17,
-0x0163e8,3,
-0x016800,2,
-0x01680c,37,
-0x0168a4,64,
-0x016a00,84,
-0x016b54,2,
-0x016b7c,1,
-0x016b84,1,
-0x016b8c,4,
-0x016ba4,1,
-0x016bac,75,
-0x016d00,60,
-0x016dfc,7,
-0x016e20,6,
-0x016e40,6,
-0x016e60,6,
-0x016e80,3,
-0x016f00,14,
-0x016f40,1,
-0x017000,3,
-0x017028,3,
-0x017050,3,
-0x017078,3,
-0x0170a0,6,
-0x0171ac,1,
-0x0171d8,4,
-0x017200,6,
-0x017220,6,
-0x017240,6,
-0x017260,6,
-0x017280,6,
-0x0172a0,6,
-0x0172c0,3,
-0x017400,6,
-0x017420,3,
-0x017440,3,
-0x017500,13,
-0x017540,1,
-0x017900,1,
-0x018000,9,
-0x018030,8,
-0x018080,9,
-0x0180b0,8,
-0x018100,9,
-0x018130,8,
-0x018180,9,
-0x0181b0,8,
-0x018200,9,
-0x018230,8,
-0x018280,9,
-0x0182b0,8,
-0x018300,9,
-0x018330,8,
-0x018380,9,
-0x0183b0,8,
-0x018400,9,
-0x018430,8,
-0x018480,9,
-0x0184b0,8,
-0x018500,9,
-0x018530,8,
-0x018580,9,
-0x0185b0,8,
-0x018600,9,
-0x018630,8,
-0x018680,9,
-0x0186b0,8,
-0x018700,9,
-0x018730,8,
-0x018780,9,
-0x0187b0,8,
-0x018800,9,
-0x018830,8,
-0x018880,9,
-0x0188b0,8,
-0x018900,9,
-0x018930,8,
-0x018980,9,
-0x0189b0,8,
-0x018a00,9,
-0x018a30,8,
-0x018a80,9,
-0x018ab0,8,
-0x018b00,9,
-0x018b30,8,
-0x018b80,9,
-0x018bb0,8,
-0x018c00,9,
-0x018c30,8,
-0x018c80,9,
-0x018cb0,8,
-0x018d00,9,
-0x018d30,8,
-0x018d80,9,
-0x018db0,8,
-0x018e00,9,
-0x018e30,8,
-0x018e80,9,
-0x018eb0,8,
-0x018f00,9,
-0x018f30,8,
-0x018f80,9,
-0x018fb0,8,
-0x019000,9,
-0x019030,8,
-0x019080,9,
-0x0190b0,8,
-0x019100,9,
-0x019130,8,
-0x019180,9,
-0x0191b0,8,
-0x019200,6,
-0x019220,3,
-0x019230,10,
-0x019260,3,
-0x019270,10,
-0x0192a0,3,
-0x0192b0,10,
-0x0192e0,3,
-0x0192f0,10,
-0x019320,3,
-0x019330,10,
-0x019360,3,
-0x019370,10,
-0x0193a0,3,
-0x0193b0,10,
-0x0193e0,3,
-0x0193f0,10,
-0x019420,3,
-0x019430,10,
-0x019460,3,
-0x019470,10,
-0x0194a0,3,
-0x0194b0,10,
-0x0194e0,3,
-0x0194f0,10,
-0x019520,3,
-0x019530,10,
-0x019560,3,
-0x019570,10,
-0x0195a0,3,
-0x0195b0,10,
-0x0195e0,3,
-0x0195f0,10,
-0x019620,3,
-0x019630,10,
-0x019660,3,
-0x019670,10,
-0x0196a0,3,
-0x0196b0,10,
-0x0196e0,3,
-0x0196f0,10,
-0x019720,3,
-0x019730,10,
-0x019760,3,
-0x019770,10,
-0x0197a0,3,
-0x0197b0,10,
-0x0197e0,3,
-0x0197f0,10,
-0x019820,3,
-0x019830,10,
-0x019860,3,
-0x019870,10,
-0x0198a0,3,
-0x0198b0,10,
-0x0198e0,3,
-0x0198f0,10,
-0x019920,3,
-0x019930,10,
-0x019960,3,
-0x019970,10,
-0x0199a0,3,
-0x0199b0,10,
-0x0199e0,3,
-0x0199f0,10,
-0x019a20,3,
-0x019a30,10,
-0x019a60,3,
-0x019a70,10,
-0x019aa0,3,
-0x019ab0,10,
-0x019ae0,3,
-0x019af0,4,
-0x01a400,13,
-0x01a440,6,
-0x01a460,3,
-0x01a480,8,
-0x01a4b0,7,
-0x01a4d0,3,
-0x01a500,6,
-0x01a520,6,
-0x01a540,6,
-0x01a560,6,
-0x01a580,6,
-0x01a5a0,6,
-0x01a5c0,6,
-0x01a5e0,6,
-0x01a600,6,
-0x01a620,6,
-0x01a640,6,
-0x01a660,6,
-0x01a680,6,
-0x01a6a0,6,
-0x01a6c0,6,
-0x01a6e0,6,
-0x01a700,6,
-0x01a720,6,
-0x01a740,6,
-0x01a760,6,
-0x01a780,6,
-0x01a7a0,6,
-0x01a7c0,6,
-0x01a7e0,6,
-0x01a800,6,
-0x01a820,6,
-0x01a840,6,
-0x01a860,6,
-0x01a880,6,
-0x01a8a0,6,
-0x01a8c0,6,
-0x01a8e0,6,
-0x01a900,6,
-0x01a920,6,
-0x01a940,6,
-0x01a960,6,
-0x01ab00,6,
-0x01ab20,3,
-0x01ab30,10,
-0x01ab60,3,
-0x01ab70,10,
-0x01aba0,3,
-0x01abb0,10,
-0x01abe0,3,
-0x01abf0,9,
-0x01acf4,3,
-0x01b000,38,
-0x01b100,37,
-0x01b200,18,
-0x01b400,6,
-0x01b420,6,
-0x01b440,6,
-0x01b460,6,
-0x01b480,6,
-0x01b4a0,6,
-0x01b4c0,6,
-0x01b4e0,6,
-0x01b500,6,
-0x01b520,6,
-0x01b540,6,
-0x01b560,6,
-0x01b580,6,
-0x01b5a0,6,
-0x01b5c0,6,
-0x01b5e0,6,
-0x01b600,6,
-0x01b620,6,
-0x01b640,3,
-0x01b800,6,
-0x01b820,6,
-0x01b840,6,
-0x01b860,6,
-0x01b880,6,
-0x01b8a0,6,
-0x01b8c0,6,
-0x01b8e0,6,
-0x01b900,6,
-0x01b920,6,
-0x01b940,6,
-0x01b960,6,
-0x01b980,6,
-0x01b9a0,6,
-0x01b9c0,6,
-0x01b9e0,6,
-0x01ba00,6,
-0x01ba20,6,
-0x01ba40,6,
-0x01ba60,3,
-0x01bc00,2,
-0x01c000,22,
-0x01c060,3,
-0x01c070,26,
-0x01c0e0,3,
-0x01c0f0,26,
-0x01c160,3,
-0x01c170,26,
-0x01c1e0,3,
-0x01c1f0,26,
-0x01c260,3,
-0x01c270,26,
-0x01c2e0,3,
-0x01c2f0,26,
-0x01c360,3,
-0x01c370,26,
-0x01c3e0,3,
-0x01c3f0,26,
-0x01c460,3,
-0x01c470,26,
-0x01c4e0,3,
-0x01c4f0,26,
-0x01c560,3,
-0x01c570,26,
-0x01c5e0,3,
-0x01c5f0,26,
-0x01c660,3,
-0x01c670,26,
-0x01c6e0,3,
-0x01c6f0,26,
-0x01c760,3,
-0x01c770,26,
-0x01c7e0,3,
-0x01c7f0,26,
-0x01c860,3,
-0x01c870,26,
-0x01c8e0,3,
-0x01c8f0,26,
-0x01c960,3,
-0x01c970,26,
-0x01c9e0,3,
-0x01c9f0,26,
-0x01ca60,3,
-0x01ca70,26,
-0x01cae0,3,
-0x01caf0,26,
-0x01cb60,3,
-0x01cb70,26,
-0x01cbe0,3,
-0x01cbf0,26,
-0x01cc60,3,
-0x01cc70,26,
-0x01cce0,3,
-0x01ccf0,26,
-0x01cd60,3,
-0x01cd70,26,
-0x01cde0,3,
-0x01cdf0,26,
-0x01ce60,3,
-0x01ce70,26,
-0x01cee0,3,
-0x01cef0,26,
-0x01cf60,3,
-0x01cf70,26,
-0x01cfe0,3,
-0x01cff0,26,
-0x01d060,3,
-0x01d070,26,
-0x01d0e0,3,
-0x01d0f0,26,
-0x01d160,3,
-0x01d170,26,
-0x01d1e0,3,
-0x01d1f0,6,
-0x01d800,6,
-0x01d820,4,
-0x01d840,8,
-0x01d87c,7,
-0x01d8a0,4,
-0x01d8c0,8,
-0x01d8fc,7,
-0x01d920,4,
-0x01d940,8,
-0x01d97c,7,
-0x01d9a0,4,
-0x01d9c0,8,
-0x01d9fc,7,
-0x01da20,4,
-0x01da40,8,
-0x01da7c,7,
-0x01daa0,4,
-0x01dac0,8,
-0x01dafc,7,
-0x01db20,4,
-0x01db40,8,
-0x01db7c,7,
-0x01dba0,4,
-0x01dbc0,8,
-0x01dbfc,7,
-0x01dc20,4,
-0x01dc40,8,
-0x01dc7c,7,
-0x01dca0,4,
-0x01dcc0,8,
-0x01dcfc,7,
-0x01dd20,4,
-0x01dd40,8,
-0x01dd7c,7,
-0x01dda0,4,
-0x01ddc0,8,
-0x01ddfc,7,
-0x01de20,4,
-0x01de40,8,
-0x01de7c,7,
-0x01dea0,4,
-0x01dec0,8,
-0x01defc,7,
-0x01df20,4,
-0x01df40,8,
-0x01df7c,7,
-0x01dfa0,4,
-0x01dfc0,8,
-0x01dffc,7,
-0x01e020,4,
-0x01e040,8,
-0x01e07c,7,
-0x01e0a0,4,
-0x01e0c0,8,
-0x01e0fc,7,
-0x01e120,4,
-0x01e140,8,
-0x01e17c,7,
-0x01e1a0,4,
-0x01e1c0,8,
-0x01e1fc,7,
-0x01e220,4,
-0x01e240,8,
-0x01e27c,7,
-0x01e2a0,4,
-0x01e2c0,8,
-0x01e2fc,7,
-0x01e320,4,
-0x01e340,8,
-0x01e37c,7,
-0x01e3a0,4,
-0x01e3c0,8,
-0x01e3fc,7,
-0x01e420,4,
-0x01e440,8,
-0x01e47c,7,
-0x01e4a0,4,
-0x01e4c0,8,
-0x01e4fc,7,
-0x01e520,4,
-0x01e540,8,
-0x01e57c,7,
-0x01e5a0,4,
-0x01e5c0,8,
-0x01e5fc,7,
-0x01e620,4,
-0x01e640,8,
-0x01e67c,7,
-0x01e6a0,4,
-0x01e6c0,8,
-0x01e6fc,7,
-0x01e720,4,
-0x01e740,8,
-0x01e77c,7,
-0x01e7a0,4,
-0x01e7c0,8,
-0x01e7fc,7,
-0x01e820,4,
-0x01e840,8,
-0x01e87c,7,
-0x01e8a0,4,
-0x01e8c0,8,
-0x01e8fc,7,
-0x01e920,4,
-0x01e940,8,
-0x01e97c,7,
-0x01e9a0,4,
-0x01e9c0,8,
-0x01e9fc,7,
-0x01ea20,4,
-0x01ea40,8,
-0x01ea7c,7,
-0x01eaa0,4,
-0x01eac0,8,
-0x01eafc,1,
-0x01f408,13,
-0x01f440,1,
-0x01f448,1,
-0x01f45c,4,
-0x01f470,10,
-0x01f4a0,6,
-0x01f4c0,6,
-0x01f4e0,3,
-0x01f800,4,
-0x01f828,4,
-0x01f850,4,
-0x01f878,4,
-0x01f8a0,4,
-0x01f9ac,1,
-0x01f9d8,4,
-0x01fa00,6,
-0x01fa20,6,
-0x01fa40,6,
-0x01fa60,6,
-0x01fa80,6,
-0x01faa0,6,
-0x01fac0,6,
-0x01fae0,6,
-0x01fb00,3,
-0x01fc00,13,
-0x01fc40,3,
-0x01fc50,6,
-0x01fc6c,1,
-0x01fc80,6,
-0x01fca0,6,
-0x01fcc0,6,
-0x01fce0,3,
-0x01fd00,1,
-0x01fd80,6,
-0x01fda0,6,
-0x01fdc0,6,
-0x01fde0,3,
-0x01fe00,1,
-0x01fe08,4,
-0x01fffc,1,
-0x049000,6,
-0x049020,20,
-0x049080,10,
-0x0490b0,1,
-0x0490c0,3,
-0x0490d0,3,
-0x049100,2,
-0x049110,3,
-0x049120,4,
-0x049140,7,
-0x049160,7,
-0x049180,3,
-0x049190,1,
-0x049200,6,
-0x049220,20,
-0x049280,10,
-0x0492b0,1,
-0x0492c0,3,
-0x0492d0,3,
-0x049300,2,
-0x049310,3,
-0x049320,4,
-0x049340,7,
-0x049360,7,
-0x049380,3,
-0x049390,1,
-0x049400,6,
-0x049420,20,
-0x049480,10,
-0x0494b0,1,
-0x0494c0,3,
-0x0494d0,3,
-0x049500,2,
-0x049510,3,
-0x049520,4,
-0x049540,7,
-0x049560,7,
-0x049580,3,
-0x049590,1,
-0x049608,2,
-0x049620,1,
-0x049648,2,
-0x049660,1,
-0x049688,2,
-0x0496a0,1,
-0x0496c8,2,
-0x0496e0,1,
-0x049708,2,
-0x049720,1,
-0x049748,2,
-0x049760,1,
-0x049788,2,
-0x0497a0,1,
-0x0497c8,2,
-0x0497e0,1,
-0x049804,28,
-0x049880,2,
-0x0498a0,2,
-0x0498c0,1,
-0x0498e0,1,
-0x049a00,13,
-0x049a40,2,
-0x049a4c,4,
-0x050400,11,
-0x050430,6,
-0x050460,3,
-0x0504a0,3,
-0x050700,13,
-0x050740,7,
-0x050760,7,
-0x051800,162,
-0x051a90,2,
-0x051aa0,2,
-0x051c00,8,
-0x051d00,26,
-0x051d84,1,
-0x051d94,9,
-0x051e00,16,
-0x058400,12,
-0x058440,7,
-0x058460,2,
-0x058480,12,
-0x0584c0,7,
-0x0584e0,2,
-0x058500,6,
-0x058520,6,
-0x058540,3,
-0x058584,1,
-0x058590,9,
-0x0585e0,7,
-0x058600,10,
-0x058640,10,
-0x058680,15,
-0x0586d8,9,
-0x058800,6,
-0x058820,6,
-0x058840,6,
-0x058860,6,
-0x058880,6,
-0x0588a0,6,
-0x0588c0,6,
-0x0588e0,6,
-0x058900,3,
-0x058a00,6,
-0x058b00,6,
-0x058b20,6,
-0x058b40,6,
-0x058b60,6,
-0x058b80,6,
-0x058ba0,6,
-0x058bc0,3,
-0x060000,32,
-0x060200,64,
-0x060400,96,
-0x060600,2,
-0x060800,96,
-0x060a00,2,
-0x060c20,8,
-0x060f80,6,
-0x060fa0,7,
-0x060fd8,2,
-0x060fe4,1,
-0x060ff0,10,
-0x061020,16,
-0x061084,1,
-0x0610c0,16,
-0x061204,1,
-0x061220,8,
-0x061250,3,
-0x061260,5,
-0x061280,6,
-0x0612a0,6,
-0x061300,3,
-0x061310,2,
-0x061320,2,
-0x061330,1,
-0x061340,3,
-0x062000,16,
-0x062060,7,
-0x062080,5,
-0x062100,2,
-0x06210c,2,
-0x062118,1,
-0x062120,1,
-0x062180,10,
-0x0621b0,2,
-0x0621c0,2,
-0x0621d0,5,
-0x062200,3,
-0x062210,3,
-0x062280,4,
-0x063600,5,
-0x063620,14,
-0x063660,5,
-0x063684,1,
-0x06368c,10,
-0x063700,1,
-0x063800,5,
-0x063820,12,
-0x063860,5,
-0x063884,1,
-0x06388c,10,
-0x063904,1,
-0x06390c,5,
-0x063940,1,
-0x063950,2,
-0x0639fc,1,
-0x064000,5,
-0x064020,1,
-0x064030,1,
-0x064040,1,
-0x064050,1,
-0x064060,1,
-0x064070,1,
-0x064080,1,
-0x064090,1,
-0x0640a0,1,
-0x0640b0,1,
-0x0640c0,1,
-0x0640d0,1,
-0x0640e0,1,
-0x0640f0,1,
-0x064100,1,
-0x064110,1,
-0x064120,1,
-0x064130,1,
-0x064140,1,
-0x064150,1,
-0x064160,1,
-0x064170,1,
-0x064180,1,
-0x064190,1,
-0x0641a0,1,
-0x0641b0,1,
-0x0641c0,1,
-0x0641d0,1,
-0x0641e0,1,
-0x0641f0,1,
-0x064200,1,
-0x064210,1,
-0x064220,1,
-0x064230,1,
-0x064240,1,
-0x064250,1,
-0x064260,1,
-0x064270,1,
-0x064280,1,
-0x064290,1,
-0x0642a0,1,
-0x0642b0,1,
-0x0642c0,1,
-0x0642d0,1,
-0x0642e0,1,
-0x0642f0,1,
-0x064300,1,
-0x064310,1,
-0x064320,1,
-0x064330,1,
-0x064340,1,
-0x064350,1,
-0x064360,1,
-0x064370,1,
-0x064380,1,
-0x064390,1,
-0x0643a0,1,
-0x0643b0,1,
-0x0643c0,1,
-0x0643d0,1,
-0x0643e0,1,
-0x0643f0,1,
-0x064400,1,
-0x064410,1,
-0x064420,1,
-0x064430,1,
-0x064440,1,
-0x064450,1,
-0x064460,1,
-0x064470,1,
-0x064480,1,
-0x064490,1,
-0x0644a0,1,
-0x0644b0,1,
-0x0644c0,1,
-0x0644d0,1,
-0x0644e0,1,
-0x0644f0,1,
-0x064500,1,
-0x064510,1,
-0x064520,1,
-0x064530,1,
-0x064540,1,
-0x064550,1,
-0x064560,1,
-0x064570,1,
-0x064580,1,
-0x064590,1,
-0x0645a0,1,
-0x0645b0,1,
-0x0645c0,1,
-0x0645d0,1,
-0x0645e0,1,
-0x0645f0,1,
-0x064600,1,
-0x064610,1,
-0x064620,1,
-0x064630,1,
-0x064640,1,
-0x064650,1,
-0x064660,1,
-0x064670,1,
-0x064680,1,
-0x064690,1,
-0x0646a0,1,
-0x0646b0,1,
-0x0646c0,1,
-0x0646d0,1,
-0x0646e0,1,
-0x0646f0,1,
-0x064700,1,
-0x064710,1,
-0x064720,1,
-0x064730,1,
-0x064740,1,
-0x064750,1,
-0x064760,1,
-0x064770,1,
-0x064780,1,
-0x064790,1,
-0x0647a0,1,
-0x0647b0,1,
-0x0647c0,1,
-0x0647d0,1,
-0x0647e0,1,
-0x0647f0,1,
-0x064800,1,
-0x064810,1,
-0x064820,1,
-0x064830,1,
-0x064840,1,
-0x064850,1,
-0x064860,1,
-0x064870,1,
-0x064880,1,
-0x064890,1,
-0x0648a0,1,
-0x0648b0,1,
-0x0648c0,1,
-0x0648d0,1,
-0x0648e0,1,
-0x0648f0,1,
-0x064900,1,
-0x064910,1,
-0x064920,1,
-0x064930,1,
-0x064940,1,
-0x064950,1,
-0x064960,1,
-0x064970,1,
-0x064980,1,
-0x064990,1,
-0x0649a0,1,
-0x0649b0,1,
-0x0649c0,1,
-0x0649d0,1,
-0x0649e0,1,
-0x0649f0,1,
-0x064a00,1,
-0x064a10,1,
-0x064a20,1,
-0x064a30,1,
-0x064a40,1,
-0x064a50,1,
-0x064a60,1,
-0x064a70,1,
-0x064a80,1,
-0x064a90,1,
-0x064aa0,1,
-0x064ab0,1,
-0x064ac0,1,
-0x064ad0,1,
-0x064ae0,1,
-0x064af0,1,
-0x064b00,1,
-0x064b10,1,
-0x064b20,1,
-0x064b30,1,
-0x064b40,1,
-0x064b50,1,
-0x064b60,1,
-0x064b70,1,
-0x064b80,1,
-0x064b90,1,
-0x064ba0,1,
-0x064bb0,1,
-0x064bc0,1,
-0x064bd0,1,
-0x064be0,1,
-0x064bf0,1,
-0x064c00,1,
-0x064c10,1,
-0x064c20,1,
-0x064c30,1,
-0x064c40,1,
-0x064c50,1,
-0x064c60,1,
-0x064c70,1,
-0x064c80,1,
-0x064c90,1,
-0x064ca0,1,
-0x064cb0,1,
-0x064cc0,1,
-0x064cd0,1,
-0x064ce0,1,
-0x064cf0,1,
-0x064d00,1,
-0x064d10,1,
-0x064d20,1,
-0x064d30,1,
-0x064d40,1,
-0x064d50,1,
-0x064d60,1,
-0x064d70,1,
-0x064d80,1,
-0x064d90,1,
-0x064da0,1,
-0x064db0,1,
-0x064dc0,1,
-0x064dd0,1,
-0x064de0,1,
-0x064df0,1,
-0x064e00,1,
-0x064e10,1,
-0x064e20,1,
-0x064e30,1,
-0x064e40,1,
-0x064e50,1,
-0x064e60,1,
-0x064e70,1,
-0x064e80,1,
-0x064e90,1,
-0x064ea0,1,
-0x064eb0,1,
-0x064ec0,1,
-0x064ed0,1,
-0x064ee0,1,
-0x064ef0,1,
-0x064f00,1,
-0x064f10,1,
-0x064f20,1,
-0x064f30,1,
-0x064f40,1,
-0x064f50,1,
-0x064f60,1,
-0x064f70,1,
-0x064f80,1,
-0x064f90,1,
-0x064fa0,1,
-0x064fb0,1,
-0x064fc0,1,
-0x064fd0,1,
-0x064fe0,1,
-0x064ff0,1,
-0x065000,8,
-0x066000,5,
-0x066020,1,
-0x066030,1,
-0x066040,1,
-0x066050,1,
-0x066060,1,
-0x066070,1,
-0x066080,1,
-0x066090,1,
-0x0660a0,1,
-0x0660b0,1,
-0x0660c0,1,
-0x0660d0,1,
-0x0660e0,1,
-0x0660f0,1,
-0x066100,1,
-0x066110,1,
-0x066120,1,
-0x066130,1,
-0x066140,1,
-0x066150,1,
-0x066160,1,
-0x066170,1,
-0x066180,1,
-0x066190,1,
-0x0661a0,1,
-0x0661b0,1,
-0x0661c0,1,
-0x0661d0,1,
-0x0661e0,1,
-0x0661f0,1,
-0x066200,1,
-0x066210,1,
-0x066220,1,
-0x066230,1,
-0x066240,1,
-0x066250,1,
-0x066260,1,
-0x066270,1,
-0x066280,1,
-0x066290,1,
-0x0662a0,1,
-0x0662b0,1,
-0x0662c0,1,
-0x0662d0,1,
-0x0662e0,1,
-0x0662f0,1,
-0x066300,1,
-0x066310,1,
-0x066320,1,
-0x066330,1,
-0x066340,1,
-0x066350,1,
-0x066360,1,
-0x066370,1,
-0x066380,1,
-0x066390,1,
-0x0663a0,1,
-0x0663b0,1,
-0x0663c0,1,
-0x0663d0,1,
-0x0663e0,1,
-0x0663f0,1,
-0x066400,1,
-0x066410,1,
-0x066420,1,
-0x066430,1,
-0x066440,1,
-0x066450,1,
-0x066460,1,
-0x066470,1,
-0x066480,1,
-0x066490,1,
-0x0664a0,1,
-0x0664b0,1,
-0x0664c0,1,
-0x0664d0,1,
-0x0664e0,1,
-0x0664f0,1,
-0x066500,1,
-0x066510,1,
-0x066520,1,
-0x066530,1,
-0x066540,1,
-0x066550,1,
-0x066560,1,
-0x066570,1,
-0x066580,1,
-0x066590,1,
-0x0665a0,1,
-0x0665b0,1,
-0x0665c0,1,
-0x0665d0,1,
-0x0665e0,1,
-0x0665f0,1,
-0x066600,1,
-0x066610,1,
-0x066620,1,
-0x066630,1,
-0x066640,1,
-0x066650,1,
-0x066660,1,
-0x066670,1,
-0x066680,1,
-0x066690,1,
-0x0666a0,1,
-0x0666b0,1,
-0x0666c0,1,
-0x0666d0,1,
-0x0666e0,1,
-0x0666f0,1,
-0x066700,1,
-0x066710,1,
-0x066720,1,
-0x066730,1,
-0x066740,1,
-0x066750,1,
-0x066760,1,
-0x066770,1,
-0x066780,1,
-0x066790,1,
-0x0667a0,1,
-0x0667b0,1,
-0x0667c0,1,
-0x0667d0,1,
-0x0667e0,1,
-0x0667f0,1,
-0x066800,1,
-0x066810,1,
-0x066820,1,
-0x066830,1,
-0x066840,1,
-0x066850,1,
-0x066860,1,
-0x066870,1,
-0x066880,1,
-0x066890,1,
-0x0668a0,1,
-0x0668b0,1,
-0x0668c0,1,
-0x0668d0,1,
-0x0668e0,1,
-0x0668f0,1,
-0x066900,1,
-0x066910,1,
-0x066920,1,
-0x066930,1,
-0x066940,1,
-0x066950,1,
-0x066960,1,
-0x066970,1,
-0x066980,1,
-0x066990,1,
-0x0669a0,1,
-0x0669b0,1,
-0x0669c0,1,
-0x0669d0,1,
-0x0669e0,1,
-0x0669f0,1,
-0x066a00,1,
-0x066a10,1,
-0x066a20,1,
-0x066a30,1,
-0x066a40,1,
-0x066a50,1,
-0x066a60,1,
-0x066a70,1,
-0x066a80,1,
-0x066a90,1,
-0x066aa0,1,
-0x066ab0,1,
-0x066ac0,1,
-0x066ad0,1,
-0x066ae0,1,
-0x066af0,1,
-0x066b00,1,
-0x066b10,1,
-0x066b20,1,
-0x066b30,1,
-0x066b40,1,
-0x066b50,1,
-0x066b60,1,
-0x066b70,1,
-0x066b80,1,
-0x066b90,1,
-0x066ba0,1,
-0x066bb0,1,
-0x066bc0,1,
-0x066bd0,1,
-0x066be0,1,
-0x066bf0,1,
-0x066c00,1,
-0x066c10,1,
-0x066c20,1,
-0x066c30,1,
-0x066c40,1,
-0x066c50,1,
-0x066c60,1,
-0x066c70,1,
-0x066c80,1,
-0x066c90,1,
-0x066ca0,1,
-0x066cb0,1,
-0x066cc0,1,
-0x066cd0,1,
-0x066ce0,1,
-0x066cf0,1,
-0x066d00,1,
-0x066d10,1,
-0x066d20,1,
-0x066d30,1,
-0x066d40,1,
-0x066d50,1,
-0x066d60,1,
-0x066d70,1,
-0x066d80,1,
-0x066d90,1,
-0x066da0,1,
-0x066db0,1,
-0x066dc0,1,
-0x066dd0,1,
-0x066de0,1,
-0x066df0,1,
-0x066e00,1,
-0x066e10,1,
-0x066e20,1,
-0x066e30,1,
-0x066e40,1,
-0x066e50,1,
-0x066e60,1,
-0x066e70,1,
-0x066e80,1,
-0x066e90,1,
-0x066ea0,1,
-0x066eb0,1,
-0x066ec0,1,
-0x066ed0,1,
-0x066ee0,1,
-0x066ef0,1,
-0x066f00,1,
-0x066f10,1,
-0x066f20,1,
-0x066f30,1,
-0x066f40,1,
-0x066f50,1,
-0x066f60,1,
-0x066f70,1,
-0x066f80,1,
-0x066f90,1,
-0x066fa0,1,
-0x066fb0,1,
-0x066fc0,1,
-0x066fd0,1,
-0x066fe0,1,
-0x066ff0,1,
-0x067000,16,
-0x067100,8,
-0x067124,7,
-0x067144,7,
-0x067200,3,
-0x0677f8,2,
-0x06f008,2,
-0x06f014,11,
-0x06f044,1,
-0x06f04c,3,
-0x06f05c,1,
-0x06f064,1,
-0x06f07c,1,
-0x06f500,2,
-0x06f518,1,
-0x06f520,3,
-0x06f540,6,
-0x06f580,10,
-0x06f800,2,
-0x070000,4,
-0x070020,25,
-0x070088,8,
-0x070100,6,
-0x070120,7,
-0x070140,4,
-0x070200,24,
-0x070280,1,
-0x070288,4,
-0x070300,37,
-0x070b00,14,
-0x070b40,14,
-0x070b84,1,
-0x070c00,1,
-0x070c10,3,
-0x070c3c,3,
-0x070c50,8,
-0x071000,7,
-0x072000,7,
-0x073000,114,
-0x0731d0,3,
-0x0731e0,3,
-0x0731f0,3,
-0x073200,2,
-0x073210,7,
-0x073230,1,
-0x073240,48,
-0x073338,15,
-0x074000,8,
-0x074044,3,
-0x074060,4,
-0x074080,8,
-0x075000,1024,
-0x07f000,2,
-0x07f028,2,
-0x07f050,2,
-0x07f078,2,
-0x07f0a0,23,
-0x07f1ac,1,
-0x07f1d8,4,
-0x07f200,6,
-0x07f220,6,
-0x07f240,6,
-0x07f260,6,
-0x07f280,3,
-0x07fa00,6,
-0x07fb00,7,
-0x07fb20,7,
-0x07fb40,7,
-0x07fb60,1,
-0x07fb70,1,
-0x07fb80,7,
-0x07fc00,3,
-0x080000,32771,
-0x0a0010,2,
-0x0a001c,6,
-0x0a0038,2,
-0x0a0048,2,
-0x0a0058,2,
-0x0a0068,15,
-0x0a00ac,14,
-0x0a00f0,1,
-0x0a00fc,35,
-0x0a01e0,1,
-0x0a01e8,5,
-0x0a0200,3,
-0x0a0210,2,
-0x0a021c,6,
-0x0a0238,2,
-0x0a0248,2,
-0x0a0258,2,
-0x0a0268,15,
-0x0a02ac,14,
-0x0a02f0,1,
-0x0a02fc,35,
-0x0a03e0,1,
-0x0a03e8,5,
-0x0a0400,3,
-0x0a0410,2,
-0x0a041c,6,
-0x0a0438,2,
-0x0a0448,2,
-0x0a0458,2,
-0x0a0468,15,
-0x0a04ac,14,
-0x0a04f0,1,
-0x0a04fc,35,
-0x0a05e0,1,
-0x0a05e8,5,
-0x0a0600,3,
-0x0a0610,2,
-0x0a061c,6,
-0x0a0638,2,
-0x0a0648,2,
-0x0a0658,2,
-0x0a0668,15,
-0x0a06ac,14,
-0x0a06f0,1,
-0x0a06fc,35,
-0x0a07e0,1,
-0x0a07e8,5,
-0x0a0800,3,
-0x0a0810,2,
-0x0a081c,6,
-0x0a0838,2,
-0x0a0848,2,
-0x0a0858,2,
-0x0a0868,15,
-0x0a08ac,14,
-0x0a08f0,1,
-0x0a08fc,35,
-0x0a09e0,1,
-0x0a09e8,5,
-0x0a0a00,3,
-0x0a0a10,2,
-0x0a0a1c,6,
-0x0a0a38,2,
-0x0a0a48,2,
-0x0a0a58,2,
-0x0a0a68,15,
-0x0a0aac,14,
-0x0a0af0,1,
-0x0a0afc,35,
-0x0a0be0,1,
-0x0a0be8,5,
-0x0a0c00,3,
-0x0a0c10,2,
-0x0a0c1c,6,
-0x0a0c38,2,
-0x0a0c48,2,
-0x0a0c58,2,
-0x0a0c68,15,
-0x0a0cac,14,
-0x0a0cf0,1,
-0x0a0cfc,35,
-0x0a0de0,1,
-0x0a0de8,5,
-0x0a0e00,3,
-0x0a0e10,2,
-0x0a0e1c,6,
-0x0a0e38,2,
-0x0a0e48,2,
-0x0a0e58,2,
-0x0a0e68,15,
-0x0a0eac,14,
-0x0a0ef0,1,
-0x0a0efc,35,
-0x0a0fe0,1,
-0x0a0fe8,5,
-0x0a1000,128,
-0x0a1208,2,
-0x0a1218,2,
-0x0a1404,17,
-0x0a1484,1,
-0x0a14a0,17,
-0x0a1504,1,
-0x0a1540,17,
-0x0a15e0,8,
-0x0a1604,3,
-0x0a1700,33,
-0x0a1800,6,
-0x0a1820,10,
-0x0a1870,1,
-0x0a1c00,2,
-0x0a1c28,2,
-0x0a1c50,2,
-0x0a1c78,2,
-0x0a1ca0,7,
-0x0a1dac,1,
-0x0a1dd8,4,
-0x0a1e00,6,
-0x0a1e20,6,
-0x0a1e40,6,
-0x0a1e60,6,
-0x0a1e80,3,
-0x0a2010,2,
-0x0a201c,1,
-0x0a2028,2,
-0x0a2040,8,
-0x0a2064,5,
-0x0a20d0,8,
-0x0a20f4,22,
-0x0a2150,2,
-0x0a2160,8,
-0x0a2184,3,
-0x0a21a0,8,
-0x0a2200,4,
-0x0a2218,50,
-0x0a2300,8,
-0x0a2330,3,
-0x0a2600,1,
-0x0a2800,6,
-0x0a2820,6,
-0x0a2840,6,
-0x0a2860,6,
-0x0a2880,3,
-0x0a2900,6,
-0x0a2920,6,
-0x0a2940,3,
-0x0a2980,6,
-0x0a29a0,6,
-0x0a29c0,6,
-0x0a29e0,3,
-0x0a2a00,6,
-0x0a2a20,3,
-0x0a2a30,1,
-0x0a3120,6,
-0x0a3140,6,
-0x0a3160,6,
-0x0a3180,6,
-0x0a31a0,6,
-0x0a31c0,6,
-0x0a3604,2,
-0x0a3700,16,
-0x0a3a00,1,
-0x0a3b00,8,
-0x0c1000,1,
-0x0c1028,1,
-0x0c1050,1,
-0x0c1078,1,
-0x0c10a0,9,
-0x0c11ac,1,
-0x0c11d8,4,
-0x0c1200,6,
-0x0c1220,6,
-0x0c1240,3,
-0x0c1400,6,
-0x0c1420,3,
-0x0c1500,13,
-0x0c1540,3,
-0x0c2000,14,
-0x0c2070,3,
-0x0c2080,6,
-0x0c2100,9,
-0x0c2204,1,
-0x0c220c,6,
-0x0c2240,13,
-0x0c2280,16,
-0x0c2400,8,
-0x0c2424,15,
-0x0c2464,15,
-0x0c24a4,15,
-0x0c24e4,23,
-0x0c2544,6,
-0x0c2580,10,
-0x0c25ac,1,
-0x0c25b4,5,
-0x0c25cc,1,
-0x0c25d4,5,
-0x0c25ec,1,
-0x0c25f4,13,
-0x0c2680,7,
-0x0c26a0,5,
-0x0c26c0,5,
-0x0c26e0,4,
-0x0c2800,19,
-0x0c2850,10,
-0x0c2880,19,
-0x0c28d0,10,
-0x0c2900,19,
-0x0c2950,10,
-0x0c2980,19,
-0x0c29d0,10,
-0x0c2a00,19,
-0x0c2a50,10,
-0x0c2a80,19,
-0x0c2ad0,10,
-0x0c2b00,19,
-0x0c2b50,10,
-0x0c2b80,19,
-0x0c2bd0,10,
-0x0c2c00,19,
-0x0c2c60,6,
-0x0c2c84,1,
-0x0c2c94,8,
-0x0c2cb8,9,
-0x0c2ce0,4,
-0x0c3000,29,
-0x0c3078,4,
-0x0c3090,2,
-0x0c30a0,2,
-0x0c30b0,3,
-0x0c30c0,11,
-0x0c3100,14,
-0x0c3140,14,
-0x0c3180,61,
-0x0c3278,4,
-0x0c3290,2,
-0x0c32a0,2,
-0x0c32b0,3,
-0x0c32c0,11,
-0x0c3300,14,
-0x0c3340,14,
-0x0c3380,61,
-0x0c3478,4,
-0x0c3490,2,
-0x0c34a0,2,
-0x0c34b0,3,
-0x0c34c0,11,
-0x0c3500,14,
-0x0c3540,14,
-0x0c3580,61,
-0x0c3678,4,
-0x0c3690,2,
-0x0c36a0,2,
-0x0c36b0,3,
-0x0c36c0,11,
-0x0c3700,14,
-0x0c3740,14,
-0x0c3780,62,
-0x0c387c,1,
-0x0c3a00,8,
-0x0c3a24,15,
-0x0c3a64,23,
-0x0c3ac4,6,
-0x0c3b00,4,
-0x0c3b20,3,
-0x0c3c00,6,
-0x0c3c40,14,
-0x0c3c80,9,
-0x0c3d00,9,
-0x0c3d2c,1,
-0x0c3d40,3,
-0x0c3d60,1,
-0x0c3d80,3,
-0x0c3e00,2,
-0x0c3e0c,1,
-0x0c3e14,5,
-0x0c3e2c,1,
-0x0c3e34,5,
-0x0c3e4c,1,
-0x0c3e54,5,
-0x0c3e6c,1,
-0x0c3e74,5,
-0x0c3e8c,1,
-0x0c3e94,5,
-0x0c3eac,1,
-0x0c3eb4,3,
-0x0c8000,25,
-0x0c8068,4,
-0x0c807c,4,
-0x0c80a0,3,
-0x0c80b0,2,
-0x0c80c8,6,
-0x0c8180,6,
-0x0ca000,3,
-0x0ca010,21,
-0x0ca068,14,
-0x0ca0a4,2,
-0x0ca0b0,2,
-0x0ca0c0,14,
-0x0ca100,12,
-0x0ca140,4,
-0x0ca160,1,
-0x0ca184,1,
-0x0ca194,2,
-0x0ca1b8,3,
-0x0ca1d0,5,
-0x0ca1e8,3,
-0x0ca1f8,8,
-0x0ca220,6,
-0x0ca240,3,
-0x0ca280,6,
-0x0ca2a0,6,
-0x0ca2c0,3,
-0x0ca300,6,
-0x0ca320,6,
-0x0ca340,6,
-0x0ca360,6,
-0x0ca380,6,
-0x0ca3a0,6,
-0x0ca3c0,6,
-0x0ca3e0,6,
-0x0ca400,6,
-0x0ca6fc,1,
-0x0ca800,72,
-0x0cb000,4,
-0x0cb044,1,
-0x0cb04c,1,
-0x0cb100,8,
-0x0cb1f0,6,
-0x0cb210,3,
-0x0cb220,2,
-0x0cb230,3,
-0x0cb240,2,
-0x0cb250,3,
-0x0cb260,2,
-0x0cb270,3,
-0x0cb280,1,
-0x0cb400,5,
-0x0cb59c,1,
-0x0cb5ac,9,
-0x0d0000,5,
-0x0d0020,4,
-0x0d0034,17,
-0x0d0080,1,
-0x0d00a0,6,
-0x0d0100,5,
-0x0d0120,4,
-0x0d0134,17,
-0x0d0180,1,
-0x0d01a0,6,
-0x0d0200,5,
-0x0d0220,4,
-0x0d0234,17,
-0x0d0280,1,
-0x0d02a0,6,
-0x0d0300,5,
-0x0d0320,4,
-0x0d0334,17,
-0x0d0380,1,
-0x0d03a0,6,
-0x0d0400,6,
-0x0d0440,6,
-0x0d0480,3,
-0x0d04c0,3,
-0x0d0500,6,
-0x0d051c,7,
-0x0d0540,1,
-0x0d0c00,13,
-0x0d0c40,12,
-0x0d0c80,13,
-0x0d0cc0,12,
-0x0d0d00,6,
-0x0d0d20,6,
-0x0d0e40,11,
-0x0d0e80,6,
-0x0d0ea0,6,
-0x0d1000,2,
-0x0d1010,5,
-0x0d1040,3,
-0x0d1050,3,
-0x0d1060,32,
-0x0d1100,8,
-0x0d1140,8,
-0x0d1180,3,
-0x0d1190,2,
-0x0d119c,9,
-0x0d1218,9,
-0x0d1240,3,
-0x0d1250,6,
-0x0d1280,1,
-0x0d1288,6,
-0x0d12a4,1,
-0x0d12c0,1,
-0x0d12c8,6,
-0x0d12e4,1,
-0x0d1400,8,
-0x0d1424,2,
-0x0d1800,24,
-0x0d1864,5,
-0x0d1880,8,
-0x0d1900,13,
-0x0d1980,4,
-0x0d19a0,6,
-0x0d19c0,6,
-0x0d19dc,1,
-0x0d1a00,6,
-0x0d1a1c,1,
-0x0d1a40,1,
-0x0d1a60,1,
-0x0d1a68,23,
-0x0d1ac8,6,
-0x0d1b00,17,
-0x0d1b48,6,
-0x0d1b80,12,
-0x0d1c00,6,
-0x0d1c20,6,
-0x0d1c40,6,
-0x0d1c60,3,
-0x0d1d00,6,
-0x0d1d20,6,
-0x0d1d40,3,
-0x0d1d80,6,
-0x0d1da0,6,
-0x0d1dc0,3,
-0x0d4000,5,
-0x0d4038,1,
-0x0d4044,1,
-0x0d4050,2,
-0x0d4100,6,
-0x0d8000,6,
-0x0d8020,3,
-0x0d8030,8,
-0x0d8100,6,
-0x0d8120,10,
-0x0d8150,8,
-0x0d8800,6,
-0x0d8820,3,
-0x0d8830,4,
-0x0d8858,2,
-0x0d8864,1,
-0x0d8874,3,
-0x0d8898,2,
-0x0d88a4,1,
-0x0d88b4,3,
-0x0d9000,6,
-0x0d9020,6,
-0x0d9040,3,
-0x0d9080,14,
-0x0d90bc,1,
-0x0d90c4,13,
-0x0d90fc,5,
-0x0d9120,4,
-0x0d9140,3,
-0x0d9180,3,
-0x0d9190,3,
-0x0d91a0,1,
-0x0d91e0,6,
-0x0d9200,20,
-0x0d925c,30,
-0x0d9300,24,
-0x0d9380,2,
-0x0d93a0,1,
-0x0d93c0,11,
-0x0d9404,3,
-0x0d9420,11,
-0x0d9460,3,
-0x0d9480,6,
-0x0d9500,6,
-0x0d9520,6,
-0x0d9540,1,
-0x0d9558,2,
-0x0d9600,17,
-0x0d9800,410,
-0x0da000,6,
-0x0da020,6,
-0x0da040,3,
-0x0da080,14,
-0x0da0bc,1,
-0x0da0c4,13,
-0x0da0fc,5,
-0x0da120,4,
-0x0da140,3,
-0x0da180,3,
-0x0da190,3,
-0x0da1a0,1,
-0x0da1e0,6,
-0x0da200,20,
-0x0da25c,30,
-0x0da300,24,
-0x0da380,2,
-0x0da3a0,1,
-0x0da3c0,11,
-0x0da404,3,
-0x0da420,11,
-0x0da460,3,
-0x0da480,6,
-0x0da500,6,
-0x0da520,6,
-0x0da540,1,
-0x0da558,2,
-0x0da600,17,
-0x0da800,410,
-0x0db800,5,
-0x0db818,1,
-0x0db854,6,
-0x0db880,2,
-0x0db8a4,1,
-0x0db8ac,2,
-0x0dba00,28,
-0x0dba7c,13,
-0x0dbab4,1,
-0x0dbabc,10,
-0x0dbb04,1,
-0x0dbb0c,5,
-0x0dbb24,1,
-0x0dbb34,9,
-0x0dbb60,6,
-0x0dbb80,22,
-0x0dbbe0,3,
-0x0dbbf0,2,
-0x0dbc00,5,
-0x0dbc18,1,
-0x0dbc54,6,
-0x0dbc80,2,
-0x0dbca4,1,
-0x0dbcac,2,
-0x0dbe00,28,
-0x0dbe7c,13,
-0x0dbeb4,1,
-0x0dbebc,10,
-0x0dbf04,1,
-0x0dbf0c,5,
-0x0dbf24,1,
-0x0dbf34,9,
-0x0dbf60,6,
-0x0dbf80,22,
-0x0dbfe0,3,
-0x0dbff0,2,
-0x0dc000,1,
-0x0e8000,1,
-0x0e8008,2,
-0x0e8058,3,
-0x0e8120,2,
-0x0e8130,2,
-0x0e8140,1,
-0x0e8184,11,
-0x0e81c4,3,
-0x0e81dc,3,
-0x0e8280,13,
-0x0e8400,16,
-0x0e8444,7,
-0x0e8500,4,
-0x0e8804,1,
-0x0e8824,7,
-0x0e8844,1,
-0x0e884c,27,
-0x0e88d4,2,
-0x0e8c00,1,
-0x0e8c08,3,
-0x0e8c80,20,
-0x0e8d00,3,
-0x0e8d20,6,
-0x0e8d80,4,
-0x0e8da0,6,
-0x0e8dbc,7,
-0x0e8e00,21,
-0x0e8e80,6,
-0x0e8ea0,6,
-0x0e8ec0,3,
-0x0e9000,35,
-0x0e9090,2,
-0x0e90f0,1,
-0x0e90f8,1,
-0x0e9100,1,
-0x0e9108,5,
-0x0e9138,2,
-0x0e9144,1,
-0x0e9160,13,
-0x0e91a0,3,
-0x0e9200,2,
-0x0e9214,11,
-0x0e9244,7,
-0x0e92b8,2,
-0x0e92c4,7,
-0x0e9310,1,
-0x0e9340,4,
-0x0e9380,7,
-0x0e9400,14,
-0x0e9440,10,
-0x0e947c,1,
-0x0e9700,2,
-0x0e9720,8,
-0x0e9800,3,
-0x0e9810,3,
-0x0e9820,3,
-0x0e9830,3,
-0x0e9840,3,
-0x0e9850,3,
-0x0e9860,3,
-0x0e9870,3,
-0x0e9880,3,
-0x0e9890,3,
-0x0e98a0,3,
-0x0e98b0,3,
-0x0e98c0,3,
-0x0e98d0,3,
-0x0e98e0,3,
-0x0e98f0,3,
-0x0e9900,68,
-0x0e9c00,36,
-0x0e9d00,3,
-0x0e9d40,2,
-0x0e9d4c,1,
-0x0e9d84,1,
-0x0e9d90,4,
-0x0e9e00,6,
-0x0e9e20,6,
-0x0e9e40,6,
-0x0e9e60,3,
-0x0e9e80,6,
-0x0e9ea0,3,
-0x0e9f80,13,
-0x0e9fc0,2,
-0x0ea000,1,
-0x0ea028,1,
-0x0ea050,1,
-0x0ea078,1,
-0x0ea0a0,3,
-0x0ea1ac,1,
-0x0ea1d8,4,
-0x0ea200,6,
-0x0ea220,6,
-0x0ea240,3,
-0x0ea400,6,
-0x0ea420,2,
-0x0ea430,2,
-0x0ea440,2,
-0x0ea450,6,
-0x0ea470,2,
-0x0ea490,24,
-0x0ea520,8,
-0x0ea604,1,
-0x0ea6f0,72,
-0x0f0000,3,
-0x0f0014,10,
-0x0f0044,15,
-0x0f00f0,2,
-0x0f0100,1,
-0x0f0108,3,
-0x0f0118,1,
-0x0f0130,4,
-0x0f0180,3,
-0x0f0190,2,
-0x0f01a0,3,
-0x0f01c0,2,
-0x0f01d0,10,
-0x0f0200,61,
-0x0f0404,9,
-0x0f0440,12,
-0x0f0480,5,
-0x0f04b8,19,
-0x0f05a0,1,
-0x0f05c0,8,
-0x0f0800,17,
-0x0f0850,9,
-0x0f0880,9,
-0x0f08b0,9,
-0x0f08e0,9,
-0x0f0920,4,
-0x0f093c,5,
-0x0f095c,5,
-0x0f097c,5,
-0x0f099c,5,
-0x0f09bc,5,
-0x0f09dc,1,
-0x0f0a90,2,
-0x0f0c00,128,
-0x0f0e04,1,
-0x0f0e14,9,
-0x0f0e3c,1,
-0x0f1000,3,
-0x0f1010,4,
-0x0f1080,10,
-0x0f10c0,1,
-0x0f10e0,2,
-0x0f10ec,1,
-0x0f10f4,3,
-0x0f1400,6,
-0x0f1420,6,
-0x0f1440,6,
-0x0f1460,6,
-0x0f1480,6,
-0x0f14a0,6,
-0x0f14c0,6,
-0x0f14e0,6,
-0x0f1500,6,
-0x0f1520,6,
-0x0f1540,6,
-0x0f1560,6,
-0x0f1580,6,
-0x0f15a0,6,
-0x0f15c0,6,
-0x0f15e0,6,
-0x0f1600,6,
-0x0f1620,3,
-0x0f1800,3,
-0x0f2000,2,
-0x0f200c,3,
-0x0f2020,8,
-0x0f2060,6,
-0x0f2080,2,
-0x0f208c,3,
-0x0f20a0,8,
-0x0f20e0,6,
-0x0f2100,2,
-0x0f210c,3,
-0x0f2120,8,
-0x0f2160,6,
-0x0f2180,2,
-0x0f218c,3,
-0x0f21a0,8,
-0x0f21e0,6,
-0x0f2200,2,
-0x0f220c,3,
-0x0f2220,8,
-0x0f2260,6,
-0x0f2280,2,
-0x0f228c,3,
-0x0f22a0,8,
-0x0f22e0,6,
-0x0f2300,2,
-0x0f230c,3,
-0x0f2320,8,
-0x0f2360,6,
-0x0f2380,2,
-0x0f238c,3,
-0x0f23a0,8,
-0x0f23e0,6,
-0x0f2400,2,
-0x0f240c,3,
-0x0f2420,8,
-0x0f2460,6,
-0x0f2480,2,
-0x0f248c,3,
-0x0f24a0,8,
-0x0f24e0,6,
-0x0f2500,2,
-0x0f250c,3,
-0x0f2520,8,
-0x0f2560,6,
-0x0f2580,2,
-0x0f258c,3,
-0x0f25a0,8,
-0x0f25e0,6,
-0x0f2600,2,
-0x0f260c,3,
-0x0f2620,8,
-0x0f2660,6,
-0x0f2680,2,
-0x0f268c,3,
-0x0f26a0,8,
-0x0f26e0,6,
-0x0f2700,2,
-0x0f270c,3,
-0x0f2720,8,
-0x0f2760,6,
-0x0f2780,2,
-0x0f278c,3,
-0x0f27a0,8,
-0x0f27e0,6,
-0x0f2800,2,
-0x0f280c,3,
-0x0f2820,8,
-0x0f2860,6,
-0x0f2880,2,
-0x0f288c,3,
-0x0f28a0,8,
-0x0f28e0,6,
-0x0f2900,2,
-0x0f290c,3,
-0x0f2920,8,
-0x0f2960,6,
-0x0f2980,2,
-0x0f298c,3,
-0x0f29a0,8,
-0x0f29e0,6,
-0x0f4000,7,
-0x0f4020,4,
-0x0f4204,1,
-0x0f4280,35,
-0x0f4310,4,
-0x0f4404,1,
-0x0f4480,34,
-0x0f4510,10,
-0x0f453c,3,
-0x0f4800,7,
-0x0f4820,4,
-0x0f4a04,1,
-0x0f4a80,35,
-0x0f4b10,4,
-0x0f4c04,1,
-0x0f4c80,34,
-0x0f4d10,10,
-0x0f4d3c,3,
-0x0f5000,7,
-0x0f5020,4,
-0x0f5204,1,
-0x0f5280,35,
-0x0f5310,4,
-0x0f5404,1,
-0x0f5480,34,
-0x0f5510,10,
-0x0f553c,3,
-0x0f5800,7,
-0x0f5820,4,
-0x0f5a04,1,
-0x0f5a80,35,
-0x0f5b10,4,
-0x0f5c04,1,
-0x0f5c80,34,
-0x0f5d10,10,
-0x0f5d3c,3,
-0x0f6000,7,
-0x0f6020,4,
-0x0f6204,1,
-0x0f6280,35,
-0x0f6310,4,
-0x0f6404,1,
-0x0f6480,34,
-0x0f6510,10,
-0x0f653c,3,
-0x0f6800,7,
-0x0f6820,4,
-0x0f6a04,1,
-0x0f6a80,35,
-0x0f6b10,4,
-0x0f6c04,1,
-0x0f6c80,34,
-0x0f6d10,10,
-0x0f6d3c,3,
-0x0f8000,9,
-0x0f8100,6,
-0x0f8120,6,
-0x0f8140,3,
-0x0f8180,10,
-0x0f81c0,3,
-0x0f81d0,2,
-0x0f8200,9,
-0x0f8300,6,
-0x0f8320,6,
-0x0f8340,3,
-0x0f8380,10,
-0x0f83c0,3,
-0x0f83d0,2,
-0x0f8400,9,
-0x0f8500,6,
-0x0f8520,6,
-0x0f8540,3,
-0x0f8580,10,
-0x0f85c0,3,
-0x0f85d0,2,
-0x0f8600,9,
-0x0f8700,6,
-0x0f8720,6,
-0x0f8740,3,
-0x0f8780,10,
-0x0f87c0,3,
-0x0f87d0,2,
-0x0f8800,9,
-0x0f8900,6,
-0x0f8920,6,
-0x0f8940,3,
-0x0f8980,10,
-0x0f89c0,3,
-0x0f89d0,2,
-0x0f8a00,9,
-0x0f8b00,6,
-0x0f8b20,6,
-0x0f8b40,3,
-0x0f8b80,10,
-0x0f8bc0,3,
-0x0f8bd0,2,
-0x0f8c00,9,
-0x0f8d00,6,
-0x0f8d20,6,
-0x0f8d40,3,
-0x0f8d80,10,
-0x0f8dc0,3,
-0x0f8dd0,2,
-0x0f8e00,9,
-0x0f8f00,6,
-0x0f8f20,6,
-0x0f8f40,3,
-0x0f8f80,10,
-0x0f8fc0,3,
-0x0f8fd0,2,
-0x0f9000,9,
-0x0f9100,6,
-0x0f9120,6,
-0x0f9140,3,
-0x0f9180,10,
-0x0f91c0,3,
-0x0f91d0,2,
-0x0f9200,9,
-0x0f9300,6,
-0x0f9320,6,
-0x0f9340,3,
-0x0f9380,10,
-0x0f93c0,3,
-0x0f93d0,2,
-0x0f9400,9,
-0x0f9500,6,
-0x0f9520,6,
-0x0f9540,3,
-0x0f9580,10,
-0x0f95c0,3,
-0x0f95d0,2,
-0x0f9600,9,
-0x0f9700,6,
-0x0f9720,6,
-0x0f9740,3,
-0x0f9780,10,
-0x0f97c0,3,
-0x0f97d0,2,
-0x0f9800,9,
-0x0f9900,6,
-0x0f9920,6,
-0x0f9940,3,
-0x0f9980,10,
-0x0f99c0,3,
-0x0f99d0,2,
-0x0f9a00,9,
-0x0f9b00,6,
-0x0f9b20,6,
-0x0f9b40,3,
-0x0f9b80,10,
-0x0f9bc0,3,
-0x0f9bd0,2,
-0x0f9c00,9,
-0x0f9d00,6,
-0x0f9d20,6,
-0x0f9d40,3,
-0x0f9d80,10,
-0x0f9dc0,3,
-0x0f9dd0,2,
-0x0f9e00,9,
-0x0f9f00,6,
-0x0f9f20,6,
-0x0f9f40,3,
-0x0f9f80,10,
-0x0f9fc0,3,
-0x0f9fd0,2,
-0x0fa000,9,
-0x0fa100,6,
-0x0fa120,6,
-0x0fa140,3,
-0x0fa180,10,
-0x0fa1c0,3,
-0x0fa1d0,2,
-0x0fa200,9,
-0x0fa300,6,
-0x0fa320,6,
-0x0fa340,3,
-0x0fa380,10,
-0x0fa3c0,3,
-0x0fa3d0,2,
-0x0fa400,9,
-0x0fa480,10,
-0x0fa4c0,1,
-0x0fa4e0,2,
-0x0fa4ec,1,
-0x0fa4f4,9,
-0x0fa520,6,
-0x0fa540,3,
-0x0fa580,6,
-0x0fa5c0,3,
-0x0fa5d0,6,
-0x0fa600,9,
-0x0fa680,10,
-0x0fa6c0,1,
-0x0fa6e0,2,
-0x0fa6ec,1,
-0x0fa6f4,9,
-0x0fa720,6,
-0x0fa740,3,
-0x0fa780,6,
-0x0fa7c0,3,
-0x0fa7d0,6,
-0x0fa800,9,
-0x0fa880,10,
-0x0fa8c0,1,
-0x0fa8e0,2,
-0x0fa8ec,1,
-0x0fa8f4,9,
-0x0fa920,6,
-0x0fa940,3,
-0x0fa980,8,
-0x0fa9c0,3,
-0x0fa9d0,2,
-0x0faa00,9,
-0x0faa80,10,
-0x0faac0,1,
-0x0faae0,2,
-0x0faaec,1,
-0x0faaf4,9,
-0x0fab20,6,
-0x0fab40,3,
-0x0fab80,8,
-0x0fabc0,3,
-0x0fabd0,2,
-0x0fac00,9,
-0x0fac80,10,
-0x0facc0,1,
-0x0face0,2,
-0x0facec,1,
-0x0facf4,9,
-0x0fad20,6,
-0x0fad40,3,
-0x0fad80,10,
-0x0fadc0,3,
-0x0fadd0,2,
-0x0fade8,2,
-0x0fae00,9,
-0x0fae80,10,
-0x0faec0,1,
-0x0faee0,2,
-0x0faeec,1,
-0x0faef4,9,
-0x0faf20,6,
-0x0faf40,3,
-0x0faf80,12,
-0x0fafc0,3,
-0x0fafd0,2,
-0x100000,6,
-0x100100,30,
-0x100180,5,
-0x100200,6,
-0x100300,30,
-0x100380,5,
-0x100400,11,
-0x100430,29,
-0x100500,2,
-0x10050c,4,
-0x100520,5,
-0x10053c,1,
-0x100544,1,
-0x10054c,5,
-0x100564,3,
-0x100600,4,
-0x100620,6,
-0x100640,6,
-0x100660,6,
-0x100680,6,
-0x1006a0,4,
-0x100800,6,
-0x100820,6,
-0x100840,6,
-0x100860,3,
-0x100884,14,
-0x1008c0,16,
-0x100c00,20,
-0x100c58,4,
-0x100c70,2,
-0x100c7c,7,
-0x100d00,4,
-0x100d30,2,
-0x100d3c,12,
-0x100d70,2,
-0x100d80,3,
-0x100e00,32,
-0x101000,6,
-0x101100,30,
-0x101180,5,
-0x101200,6,
-0x101300,30,
-0x101380,5,
-0x101400,11,
-0x101430,29,
-0x101500,2,
-0x10150c,4,
-0x101520,5,
-0x10153c,1,
-0x101544,1,
-0x10154c,5,
-0x101564,3,
-0x101600,4,
-0x101620,6,
-0x101640,6,
-0x101660,6,
-0x101680,6,
-0x1016a0,4,
-0x101800,6,
-0x101820,6,
-0x101840,6,
-0x101860,3,
-0x101884,14,
-0x1018c0,16,
-0x101c00,20,
-0x101c58,4,
-0x101c70,2,
-0x101c7c,7,
-0x101d00,4,
-0x101d30,2,
-0x101d3c,12,
-0x101d70,2,
-0x101d80,3,
-0x101e00,32,
-0x102000,6,
-0x102100,30,
-0x102180,5,
-0x102200,6,
-0x102300,30,
-0x102380,5,
-0x102400,11,
-0x102430,29,
-0x102500,2,
-0x10250c,4,
-0x102520,5,
-0x10253c,1,
-0x102544,1,
-0x10254c,5,
-0x102564,3,
-0x102600,4,
-0x102620,6,
-0x102640,6,
-0x102660,6,
-0x102680,6,
-0x1026a0,4,
-0x102800,6,
-0x102820,6,
-0x102840,6,
-0x102860,3,
-0x102884,14,
-0x1028c0,16,
-0x102c00,20,
-0x102c58,4,
-0x102c70,2,
-0x102c7c,7,
-0x102d00,4,
-0x102d30,2,
-0x102d3c,12,
-0x102d70,2,
-0x102d80,3,
-0x102e00,32,
-0x103000,6,
-0x103100,30,
-0x103180,5,
-0x103200,6,
-0x103300,30,
-0x103380,5,
-0x103400,11,
-0x103430,29,
-0x103500,2,
-0x10350c,4,
-0x103520,5,
-0x10353c,1,
-0x103544,1,
-0x10354c,5,
-0x103564,3,
-0x103600,4,
-0x103620,6,
-0x103640,6,
-0x103660,6,
-0x103680,6,
-0x1036a0,4,
-0x103800,6,
-0x103820,6,
-0x103840,6,
-0x103860,3,
-0x103884,14,
-0x1038c0,16,
-0x103c00,20,
-0x103c58,4,
-0x103c70,2,
-0x103c7c,7,
-0x103d00,4,
-0x103d30,2,
-0x103d3c,12,
-0x103d70,2,
-0x103d80,3,
-0x103e00,32,
-0x104000,6,
-0x104100,30,
-0x104180,5,
-0x104200,6,
-0x104300,30,
-0x104380,5,
-0x104400,11,
-0x104430,29,
-0x104500,2,
-0x10450c,4,
-0x104520,5,
-0x10453c,1,
-0x104544,1,
-0x10454c,5,
-0x104564,3,
-0x104600,4,
-0x104620,6,
-0x104640,6,
-0x104660,6,
-0x104680,6,
-0x1046a0,4,
-0x104800,6,
-0x104820,6,
-0x104840,6,
-0x104860,3,
-0x104884,14,
-0x1048c0,16,
-0x104c00,20,
-0x104c58,4,
-0x104c70,2,
-0x104c7c,7,
-0x104d00,4,
-0x104d30,2,
-0x104d3c,12,
-0x104d70,2,
-0x104d80,3,
-0x104e00,32,
-0x105000,6,
-0x105100,30,
-0x105180,5,
-0x105200,6,
-0x105300,30,
-0x105380,5,
-0x105400,11,
-0x105430,29,
-0x105500,2,
-0x10550c,4,
-0x105520,5,
-0x10553c,1,
-0x105544,1,
-0x10554c,5,
-0x105564,3,
-0x105600,4,
-0x105620,6,
-0x105640,6,
-0x105660,6,
-0x105680,6,
-0x1056a0,4,
-0x105800,6,
-0x105820,6,
-0x105840,6,
-0x105860,3,
-0x105884,14,
-0x1058c0,16,
-0x105c00,20,
-0x105c58,4,
-0x105c70,2,
-0x105c7c,7,
-0x105d00,4,
-0x105d30,2,
-0x105d3c,12,
-0x105d70,2,
-0x105d80,3,
-0x105e00,32,
-0x106000,6,
-0x106100,30,
-0x106180,5,
-0x106200,6,
-0x106300,30,
-0x106380,5,
-0x106400,11,
-0x106430,29,
-0x106500,2,
-0x10650c,4,
-0x106520,5,
-0x10653c,1,
-0x106544,1,
-0x10654c,5,
-0x106564,3,
-0x106600,4,
-0x106620,6,
-0x106640,6,
-0x106660,6,
-0x106680,6,
-0x1066a0,4,
-0x106800,6,
-0x106820,6,
-0x106840,6,
-0x106860,3,
-0x106884,14,
-0x1068c0,16,
-0x106c00,20,
-0x106c58,4,
-0x106c70,2,
-0x106c7c,7,
-0x106d00,4,
-0x106d30,2,
-0x106d3c,12,
-0x106d70,2,
-0x106d80,3,
-0x106e00,32,
-0x107000,6,
-0x107100,30,
-0x107180,5,
-0x107200,6,
-0x107300,30,
-0x107380,5,
-0x107400,11,
-0x107430,29,
-0x107500,2,
-0x10750c,4,
-0x107520,5,
-0x10753c,1,
-0x107544,1,
-0x10754c,5,
-0x107564,3,
-0x107600,4,
-0x107620,6,
-0x107640,6,
-0x107660,6,
-0x107680,6,
-0x1076a0,4,
-0x107800,6,
-0x107820,6,
-0x107840,6,
-0x107860,3,
-0x107884,14,
-0x1078c0,16,
-0x107c00,20,
-0x107c58,4,
-0x107c70,2,
-0x107c7c,7,
-0x107d00,4,
-0x107d30,2,
-0x107d3c,12,
-0x107d70,2,
-0x107d80,3,
-0x107e00,32,
-0x108000,6,
-0x108100,30,
-0x108180,5,
-0x108200,6,
-0x108300,30,
-0x108380,5,
-0x108400,11,
-0x108430,29,
-0x108500,2,
-0x10850c,4,
-0x108520,5,
-0x10853c,1,
-0x108544,1,
-0x10854c,5,
-0x108564,3,
-0x108600,4,
-0x108620,6,
-0x108640,6,
-0x108660,6,
-0x108680,6,
-0x1086a0,4,
-0x108800,6,
-0x108820,6,
-0x108840,6,
-0x108860,3,
-0x108884,14,
-0x1088c0,16,
-0x108c00,20,
-0x108c58,4,
-0x108c70,2,
-0x108c7c,7,
-0x108d00,4,
-0x108d30,2,
-0x108d3c,12,
-0x108d70,2,
-0x108d80,3,
-0x108e00,32,
-0x109000,6,
-0x109100,30,
-0x109180,5,
-0x109200,6,
-0x109300,30,
-0x109380,5,
-0x109400,11,
-0x109430,29,
-0x109500,2,
-0x10950c,4,
-0x109520,5,
-0x10953c,1,
-0x109544,1,
-0x10954c,5,
-0x109564,3,
-0x109600,4,
-0x109620,6,
-0x109640,6,
-0x109660,6,
-0x109680,6,
-0x1096a0,4,
-0x109800,6,
-0x109820,6,
-0x109840,6,
-0x109860,3,
-0x109884,14,
-0x1098c0,16,
-0x109c00,20,
-0x109c58,4,
-0x109c70,2,
-0x109c7c,7,
-0x109d00,4,
-0x109d30,2,
-0x109d3c,12,
-0x109d70,2,
-0x109d80,3,
-0x109e00,32,
-0x10a000,1,
-0x113ffc,6,
-0x114018,3,
-0x114028,3,
-0x114038,3,
-0x114048,3,
-0x114058,3,
-0x114068,3,
-0x114078,3,
-0x114088,12,
-0x1140c8,13,
-0x114100,29,
-0x114178,11,
-0x1141c0,3,
-0x1141d0,3,
-0x1141e0,6,
-0x114400,5,
-0x114428,5,
-0x114450,5,
-0x114478,5,
-0x1144a0,4,
-0x1145ac,1,
-0x1145d8,4,
-0x114600,6,
-0x114620,6,
-0x114640,6,
-0x114660,6,
-0x114680,6,
-0x1146a0,6,
-0x1146c0,6,
-0x1146e0,6,
-0x114700,6,
-0x114720,6,
-0x114740,3,
-0x114900,7,
-0x114920,36,
-0x114c00,1,
-0x114c08,1,
-0x114c10,5,
-0x114c38,1,
-0x114c60,7,
-0x115000,1,
-0x115008,11,
-0x115038,10,
-0x115068,3,
-0x115104,4,
-0x115128,3,
-0x115204,5,
-0x115220,10,
-0x115250,3,
-0x115280,6,
-0x1152a0,6,
-0x1152c0,6,
-0x1152e0,3,
-0x115300,7,
-0x140000,6,
-0x140100,30,
-0x140180,5,
-0x140200,6,
-0x140300,30,
-0x140380,5,
-0x140400,11,
-0x140430,29,
-0x140500,2,
-0x14050c,4,
-0x140520,5,
-0x14053c,1,
-0x140544,1,
-0x14054c,5,
-0x140564,3,
-0x140600,4,
-0x140620,6,
-0x140640,6,
-0x140660,6,
-0x140680,6,
-0x1406a0,4,
-0x140800,6,
-0x140820,6,
-0x140840,6,
-0x140860,3,
-0x140884,14,
-0x1408c0,16,
-0x140c00,20,
-0x140c58,4,
-0x140c70,2,
-0x140c7c,7,
-0x140d00,4,
-0x140d30,2,
-0x140d3c,12,
-0x140d70,2,
-0x140d80,3,
-0x140e00,32,
-0x141000,6,
-0x141100,30,
-0x141180,5,
-0x141200,6,
-0x141300,30,
-0x141380,5,
-0x141400,11,
-0x141430,29,
-0x141500,2,
-0x14150c,4,
-0x141520,5,
-0x14153c,1,
-0x141544,1,
-0x14154c,5,
-0x141564,3,
-0x141600,4,
-0x141620,6,
-0x141640,6,
-0x141660,6,
-0x141680,6,
-0x1416a0,4,
-0x141800,6,
-0x141820,6,
-0x141840,6,
-0x141860,3,
-0x141884,14,
-0x1418c0,16,
-0x141c00,20,
-0x141c58,4,
-0x141c70,2,
-0x141c7c,7,
-0x141d00,4,
-0x141d30,2,
-0x141d3c,12,
-0x141d70,2,
-0x141d80,3,
-0x141e00,32,
-0x142000,6,
-0x142100,30,
-0x142180,5,
-0x142200,6,
-0x142300,30,
-0x142380,5,
-0x142400,11,
-0x142430,29,
-0x142500,2,
-0x14250c,4,
-0x142520,5,
-0x14253c,1,
-0x142544,1,
-0x14254c,5,
-0x142564,3,
-0x142600,4,
-0x142620,6,
-0x142640,6,
-0x142660,6,
-0x142680,6,
-0x1426a0,4,
-0x142800,6,
-0x142820,6,
-0x142840,6,
-0x142860,3,
-0x142884,14,
-0x1428c0,16,
-0x142c00,20,
-0x142c58,4,
-0x142c70,2,
-0x142c7c,7,
-0x142d00,4,
-0x142d30,2,
-0x142d3c,12,
-0x142d70,2,
-0x142d80,3,
-0x142e00,32,
-0x143000,6,
-0x143100,30,
-0x143180,5,
-0x143200,6,
-0x143300,30,
-0x143380,5,
-0x143400,11,
-0x143430,29,
-0x143500,2,
-0x14350c,4,
-0x143520,5,
-0x14353c,1,
-0x143544,1,
-0x14354c,5,
-0x143564,3,
-0x143600,4,
-0x143620,6,
-0x143640,6,
-0x143660,6,
-0x143680,6,
-0x1436a0,4,
-0x143800,6,
-0x143820,6,
-0x143840,6,
-0x143860,3,
-0x143884,14,
-0x1438c0,16,
-0x143c00,20,
-0x143c58,4,
-0x143c70,2,
-0x143c7c,7,
-0x143d00,4,
-0x143d30,2,
-0x143d3c,12,
-0x143d70,2,
-0x143d80,3,
-0x143e00,32,
-0x144000,6,
-0x144100,30,
-0x144180,5,
-0x144200,6,
-0x144300,30,
-0x144380,5,
-0x144400,11,
-0x144430,29,
-0x144500,2,
-0x14450c,4,
-0x144520,5,
-0x14453c,1,
-0x144544,1,
-0x14454c,5,
-0x144564,3,
-0x144600,4,
-0x144620,6,
-0x144640,6,
-0x144660,6,
-0x144680,6,
-0x1446a0,4,
-0x144800,6,
-0x144820,6,
-0x144840,6,
-0x144860,3,
-0x144884,14,
-0x1448c0,16,
-0x144c00,20,
-0x144c58,4,
-0x144c70,2,
-0x144c7c,7,
-0x144d00,4,
-0x144d30,2,
-0x144d3c,12,
-0x144d70,2,
-0x144d80,3,
-0x144e00,32,
-0x145000,6,
-0x145100,30,
-0x145180,5,
-0x145200,6,
-0x145300,30,
-0x145380,5,
-0x145400,11,
-0x145430,29,
-0x145500,2,
-0x14550c,4,
-0x145520,5,
-0x14553c,1,
-0x145544,1,
-0x14554c,5,
-0x145564,3,
-0x145600,4,
-0x145620,6,
-0x145640,6,
-0x145660,6,
-0x145680,6,
-0x1456a0,4,
-0x145800,6,
-0x145820,6,
-0x145840,6,
-0x145860,3,
-0x145884,14,
-0x1458c0,16,
-0x145c00,20,
-0x145c58,4,
-0x145c70,2,
-0x145c7c,7,
-0x145d00,4,
-0x145d30,2,
-0x145d3c,12,
-0x145d70,2,
-0x145d80,3,
-0x145e00,32,
-0x146000,6,
-0x146100,30,
-0x146180,5,
-0x146200,6,
-0x146300,30,
-0x146380,5,
-0x146400,11,
-0x146430,29,
-0x146500,2,
-0x14650c,4,
-0x146520,5,
-0x14653c,1,
-0x146544,1,
-0x14654c,5,
-0x146564,3,
-0x146600,4,
-0x146620,6,
-0x146640,6,
-0x146660,6,
-0x146680,6,
-0x1466a0,4,
-0x146800,6,
-0x146820,6,
-0x146840,6,
-0x146860,3,
-0x146884,14,
-0x1468c0,16,
-0x146c00,20,
-0x146c58,4,
-0x146c70,2,
-0x146c7c,7,
-0x146d00,4,
-0x146d30,2,
-0x146d3c,12,
-0x146d70,2,
-0x146d80,3,
-0x146e00,32,
-0x147000,6,
-0x147100,30,
-0x147180,5,
-0x147200,6,
-0x147300,30,
-0x147380,5,
-0x147400,11,
-0x147430,29,
-0x147500,2,
-0x14750c,4,
-0x147520,5,
-0x14753c,1,
-0x147544,1,
-0x14754c,5,
-0x147564,3,
-0x147600,4,
-0x147620,6,
-0x147640,6,
-0x147660,6,
-0x147680,6,
-0x1476a0,4,
-0x147800,6,
-0x147820,6,
-0x147840,6,
-0x147860,3,
-0x147884,14,
-0x1478c0,16,
-0x147c00,20,
-0x147c58,4,
-0x147c70,2,
-0x147c7c,7,
-0x147d00,4,
-0x147d30,2,
-0x147d3c,12,
-0x147d70,2,
-0x147d80,3,
-0x147e00,32,
-0x148000,6,
-0x148100,30,
-0x148180,5,
-0x148200,6,
-0x148300,30,
-0x148380,5,
-0x148400,11,
-0x148430,29,
-0x148500,2,
-0x14850c,4,
-0x148520,5,
-0x14853c,1,
-0x148544,1,
-0x14854c,5,
-0x148564,3,
-0x148600,4,
-0x148620,6,
-0x148640,6,
-0x148660,6,
-0x148680,6,
-0x1486a0,4,
-0x148800,6,
-0x148820,6,
-0x148840,6,
-0x148860,3,
-0x148884,14,
-0x1488c0,16,
-0x148c00,20,
-0x148c58,4,
-0x148c70,2,
-0x148c7c,7,
-0x148d00,4,
-0x148d30,2,
-0x148d3c,12,
-0x148d70,2,
-0x148d80,3,
-0x148e00,32,
-0x149000,6,
-0x149100,30,
-0x149180,5,
-0x149200,6,
-0x149300,30,
-0x149380,5,
-0x149400,11,
-0x149430,29,
-0x149500,2,
-0x14950c,4,
-0x149520,5,
-0x14953c,1,
-0x149544,1,
-0x14954c,5,
-0x149564,3,
-0x149600,4,
-0x149620,6,
-0x149640,6,
-0x149660,6,
-0x149680,6,
-0x1496a0,4,
-0x149800,6,
-0x149820,6,
-0x149840,6,
-0x149860,3,
-0x149884,14,
-0x1498c0,16,
-0x149c00,20,
-0x149c58,4,
-0x149c70,2,
-0x149c7c,7,
-0x149d00,4,
-0x149d30,2,
-0x149d3c,12,
-0x149d70,2,
-0x149d80,3,
-0x149e00,32,
-0x14a000,1,
-0x153ffc,6,
-0x154018,3,
-0x154028,3,
-0x154038,3,
-0x154048,3,
-0x154058,3,
-0x154068,3,
-0x154078,3,
-0x154088,12,
-0x1540c8,13,
-0x154100,29,
-0x154178,11,
-0x1541c0,3,
-0x1541d0,3,
-0x1541e0,6,
-0x154400,5,
-0x154428,5,
-0x154450,5,
-0x154478,5,
-0x1544a0,4,
-0x1545ac,1,
-0x1545d8,4,
-0x154600,6,
-0x154620,6,
-0x154640,6,
-0x154660,6,
-0x154680,6,
-0x1546a0,6,
-0x1546c0,6,
-0x1546e0,6,
-0x154700,6,
-0x154720,6,
-0x154740,3,
-0x154900,7,
-0x154920,36,
-0x154c00,1,
-0x154c08,1,
-0x154c10,5,
-0x154c38,1,
-0x154c60,7,
-0x155000,1,
-0x155008,11,
-0x155038,10,
-0x155068,3,
-0x155104,4,
-0x155128,3,
-0x155204,5,
-0x155220,10,
-0x155250,3,
-0x155280,6,
-0x1552a0,6,
-0x1552c0,6,
-0x1552e0,3,
-0x155300,7,
-0x180000,6,
-0x180020,6,
-0x180040,6,
-0x180060,6,
-0x180080,6,
-0x1800a0,6,
-0x1800c0,3,
-0x180100,1,
-0x180110,1,
-0x200000,5,
-0x200020,4,
-0x200034,17,
-0x200080,1,
-0x2000a0,6,
-0x200100,5,
-0x200120,4,
-0x200134,17,
-0x200180,1,
-0x2001a0,6,
-0x200200,5,
-0x200220,4,
-0x200234,17,
-0x200280,1,
-0x2002a0,6,
-0x200300,5,
-0x200320,4,
-0x200334,17,
-0x200380,1,
-0x2003a0,6,
-0x200500,6,
-0x20051c,7,
-0x200540,1,
-0x200c00,13,
-0x200c40,12,
-0x200c80,13,
-0x200cc0,12,
-0x200d00,6,
-0x200d20,6,
-0x200d80,14,
-0x200dc0,2,
-0x200e40,11,
-0x200e80,6,
-0x200ea0,6,
-0x201000,2,
-0x201010,5,
-0x201060,32,
-0x201100,8,
-0x201180,3,
-0x201190,2,
-0x20119c,5,
-0x201218,9,
-0x201240,3,
-0x201250,6,
-0x201280,1,
-0x201288,6,
-0x2012a4,1,
-0x201400,8,
-0x201424,2,
-0x201500,5,
-0x201520,4,
-0x201540,5,
-0x201560,4,
-0x201800,24,
-0x201864,5,
-0x201880,8,
-0x201900,13,
-0x201980,4,
-0x2019a0,6,
-0x201a40,1,
-0x201a60,1,
-0x201a68,23,
-0x201ac8,6,
-0x201b00,17,
-0x201b48,6,
-0x201b80,12,
-0x201c00,6,
-0x201c20,6,
-0x201c40,6,
-0x201c60,3,
-0x201d00,6,
-0x201d20,6,
-0x201d40,3,
-0x202000,5,
-0x202020,4,
-0x202034,17,
-0x202080,1,
-0x2020a0,6,
-0x202100,5,
-0x202120,4,
-0x202134,17,
-0x202180,1,
-0x2021a0,6,
-0x202200,5,
-0x202220,4,
-0x202234,17,
-0x202280,1,
-0x2022a0,6,
-0x202300,5,
-0x202320,4,
-0x202334,17,
-0x202380,1,
-0x2023a0,6,
-0x202500,6,
-0x20251c,7,
-0x202540,1,
-0x202c00,13,
-0x202c40,12,
-0x202c80,13,
-0x202cc0,12,
-0x202d00,6,
-0x202d20,6,
-0x202d80,14,
-0x202dc0,2,
-0x202e40,11,
-0x202e80,6,
-0x202ea0,6,
-0x203000,2,
-0x203010,5,
-0x203060,32,
-0x203100,8,
-0x203180,3,
-0x203190,2,
-0x20319c,5,
-0x203218,9,
-0x203240,3,
-0x203250,6,
-0x203280,1,
-0x203288,6,
-0x2032a4,1,
-0x203400,8,
-0x203424,2,
-0x203500,5,
-0x203520,4,
-0x203540,5,
-0x203560,4,
-0x203800,24,
-0x203864,5,
-0x203880,8,
-0x203900,13,
-0x203980,4,
-0x2039a0,6,
-0x203a40,1,
-0x203a60,1,
-0x203a68,23,
-0x203ac8,6,
-0x203b00,17,
-0x203b48,6,
-0x203b80,12,
-0x203c00,6,
-0x203c20,6,
-0x203c40,6,
-0x203c60,3,
-0x203d00,6,
-0x203d20,6,
-0x203d40,3,
-0x204000,29,
-0x204078,4,
-0x204090,2,
-0x2040a0,2,
-0x2040b0,3,
-0x2040c0,11,
-0x204100,14,
-0x204140,14,
-0x204180,61,
-0x204278,4,
-0x204290,2,
-0x2042a0,2,
-0x2042b0,3,
-0x2042c0,11,
-0x204300,14,
-0x204340,14,
-0x204380,61,
-0x204478,4,
-0x204490,2,
-0x2044a0,2,
-0x2044b0,3,
-0x2044c0,11,
-0x204500,14,
-0x204540,14,
-0x204580,61,
-0x204678,4,
-0x204690,2,
-0x2046a0,2,
-0x2046b0,3,
-0x2046c0,11,
-0x204700,14,
-0x204740,14,
-0x204780,62,
-0x20487c,1,
-0x204a00,8,
-0x204a24,15,
-0x204a64,23,
-0x204ac4,6,
-0x204b00,4,
-0x204b20,3,
-0x204c00,6,
-0x204c40,14,
-0x204c80,9,
-0x204d00,9,
-0x204d2c,1,
-0x204d40,3,
-0x204d60,1,
-0x204d80,3,
-0x204e00,2,
-0x204e0c,1,
-0x204e14,5,
-0x204e2c,1,
-0x204e34,5,
-0x204e4c,1,
-0x204e54,5,
-0x204e6c,1,
-0x204e74,5,
-0x204e8c,1,
-0x204e94,5,
-0x204eac,1,
-0x204eb4,3,
-0x205000,29,
-0x205078,4,
-0x205090,2,
-0x2050a0,2,
-0x2050b0,3,
-0x2050c0,11,
-0x205100,14,
-0x205140,14,
-0x205180,61,
-0x205278,4,
-0x205290,2,
-0x2052a0,2,
-0x2052b0,3,
-0x2052c0,11,
-0x205300,14,
-0x205340,14,
-0x205380,61,
-0x205478,4,
-0x205490,2,
-0x2054a0,2,
-0x2054b0,3,
-0x2054c0,11,
-0x205500,14,
-0x205540,14,
-0x205580,61,
-0x205678,4,
-0x205690,2,
-0x2056a0,2,
-0x2056b0,3,
-0x2056c0,11,
-0x205700,14,
-0x205740,14,
-0x205780,62,
-0x20587c,1,
-0x205a00,8,
-0x205a24,15,
-0x205a64,23,
-0x205ac4,6,
-0x205b00,4,
-0x205b20,3,
-0x205c00,6,
-0x205c40,14,
-0x205c80,9,
-0x205d00,9,
-0x205d2c,1,
-0x205d40,3,
-0x205d60,1,
-0x205d80,3,
-0x205e00,2,
-0x205e0c,1,
-0x205e14,5,
-0x205e2c,1,
-0x205e34,5,
-0x205e4c,1,
-0x205e54,5,
-0x205e6c,1,
-0x205e74,5,
-0x205e8c,1,
-0x205e94,5,
-0x205eac,1,
-0x205eb4,3,
-0x206000,14,
-0x206070,3,
-0x206080,6,
-0x206100,9,
-0x206204,1,
-0x20620c,6,
-0x206240,13,
-0x206280,16,
-0x206800,19,
-0x206850,10,
-0x206880,19,
-0x2068d0,10,
-0x206900,19,
-0x206950,10,
-0x206980,19,
-0x2069d0,10,
-0x206a00,19,
-0x206a50,10,
-0x206a80,19,
-0x206ad0,10,
-0x206b00,19,
-0x206b50,10,
-0x206b80,19,
-0x206bd0,10,
-0x206c00,19,
-0x206c60,6,
-0x206c84,1,
-0x206c94,8,
-0x206cb8,9,
-0x206ce0,4,
-0x207000,6,
-0x207020,3,
-0x207040,7,
-0x207060,6,
-0x207100,5,
-0x207138,1,
-0x207144,1,
-0x207150,2,
-0x208000,6,
-0x208020,3,
-0x208030,9,
-0x208100,6,
-0x208120,10,
-0x208150,8,
-0x208400,1,
-0x208428,1,
-0x208450,1,
-0x208478,1,
-0x2084a0,8,
-0x2085ac,1,
-0x2085d8,4,
-0x208600,6,
-0x208620,6,
-0x208640,3,
-0x208800,6,
-0x208820,3,
-0x208830,4,
-0x208858,2,
-0x208864,1,
-0x208874,3,
-0x208898,2,
-0x2088a4,1,
-0x2088b4,3,
-0x209000,6,
-0x209020,6,
-0x209040,3,
-0x209080,14,
-0x2090bc,1,
-0x2090c4,13,
-0x2090fc,1,
-0x209200,20,
-0x20925c,30,
-0x209300,24,
-0x209380,2,
-0x2093a0,1,
-0x2093c0,11,
-0x209404,3,
-0x209420,11,
-0x209460,3,
-0x209480,6,
-0x209500,6,
-0x209520,6,
-0x209540,1,
-0x209558,2,
-0x209600,17,
-0x209800,410,
-0x20a000,6,
-0x20a020,6,
-0x20a040,3,
-0x20a080,14,
-0x20a0bc,1,
-0x20a0c4,13,
-0x20a0fc,1,
-0x20a200,20,
-0x20a25c,30,
-0x20a300,24,
-0x20a380,2,
-0x20a3a0,1,
-0x20a3c0,11,
-0x20a404,3,
-0x20a420,11,
-0x20a460,3,
-0x20a480,6,
-0x20a500,6,
-0x20a520,6,
-0x20a540,1,
-0x20a558,2,
-0x20a600,17,
-0x20a800,410,
-0x20b000,4,
-0x20b020,25,
-0x20b088,8,
-0x20b100,4,
-0x20b120,25,
-0x20b188,8,
-0x20b200,34,
-0x20b300,37,
-0x20b400,16,
-0x20b464,1,
-0x20b474,3,
-0x20b500,6,
-0x20b520,2,
-0x20b530,9,
-0x20b570,10,
-0x20b5a0,2,
-0x20b5b0,9,
-0x20b5f0,4,
-0x20b620,7,
-0x20b640,16,
-0x20b700,6,
-0x20b720,6,
-0x20b740,6,
-0x20b760,6,
-0x20b780,3,
-0x20b800,5,
-0x20b818,1,
-0x20b854,6,
-0x20b880,2,
-0x20b8a4,1,
-0x20b8ac,2,
-0x20ba00,28,
-0x20ba7c,13,
-0x20bab4,1,
-0x20babc,10,
-0x20bb04,1,
-0x20bb0c,5,
-0x20bb24,1,
-0x20bb34,9,
-0x20bb60,6,
-0x20bb80,22,
-0x20bbe0,3,
-0x20bbf0,2,
-0x20bc00,5,
-0x20bc18,1,
-0x20bc54,6,
-0x20bc80,2,
-0x20bca4,1,
-0x20bcac,2,
-0x20be00,28,
-0x20be7c,13,
-0x20beb4,1,
-0x20bebc,10,
-0x20bf04,1,
-0x20bf0c,5,
-0x20bf24,1,
-0x20bf34,9,
-0x20bf60,6,
-0x20bf80,22,
-0x20bfe0,3,
-0x20bff0,2,
-0x20c008,2,
-0x20c014,11,
-0x20c044,1,
-0x20c04c,3,
-0x20c05c,1,
-0x20c064,1,
-0x20c07c,1,
-0x20c500,2,
-0x20c518,1,
-0x20c520,3,
-0x20c540,6,
-0x20c580,10,
-0x20c808,2,
-0x20c814,11,
-0x20c844,1,
-0x20c84c,3,
-0x20c85c,1,
-0x20c864,1,
-0x20c87c,1,
-0x20cd00,2,
-0x20cd18,1,
-0x20cd20,3,
-0x20cd40,6,
-0x20cd80,10,
-0x20d800,2,
-0x20d828,2,
-0x20d850,2,
-0x20d878,2,
-0x20d8a0,6,
-0x20d9ac,1,
-0x20d9d8,4,
-0x20da00,6,
-0x20da20,6,
-0x20da40,6,
-0x20da60,6,
-0x20da80,3,
-0x20dc00,6,
-0x20dc20,3,
-0x20dc40,2,
-0x20dc60,1,
-0x210000,5,
-0x210020,4,
-0x210034,17,
-0x210080,1,
-0x2100a0,6,
-0x210100,5,
-0x210120,4,
-0x210134,17,
-0x210180,1,
-0x2101a0,6,
-0x210200,5,
-0x210220,4,
-0x210234,17,
-0x210280,1,
-0x2102a0,6,
-0x210300,5,
-0x210320,4,
-0x210334,17,
-0x210380,1,
-0x2103a0,6,
-0x210500,6,
-0x21051c,7,
-0x210540,1,
-0x210c00,13,
-0x210c40,12,
-0x210c80,13,
-0x210cc0,12,
-0x210d00,6,
-0x210d20,6,
-0x210d80,14,
-0x210dc0,2,
-0x210e40,11,
-0x210e80,6,
-0x210ea0,6,
-0x211000,2,
-0x211010,5,
-0x211060,32,
-0x211100,8,
-0x211180,3,
-0x211190,2,
-0x21119c,5,
-0x211218,9,
-0x211240,3,
-0x211250,6,
-0x211280,1,
-0x211288,6,
-0x2112a4,1,
-0x211400,8,
-0x211424,2,
-0x211500,5,
-0x211520,4,
-0x211540,5,
-0x211560,4,
-0x211800,24,
-0x211864,5,
-0x211880,8,
-0x211900,13,
-0x211980,4,
-0x2119a0,6,
-0x211a40,1,
-0x211a60,1,
-0x211a68,23,
-0x211ac8,6,
-0x211b00,17,
-0x211b48,6,
-0x211b80,12,
-0x211c00,6,
-0x211c20,6,
-0x211c40,6,
-0x211c60,3,
-0x211d00,6,
-0x211d20,6,
-0x211d40,3,
-0x212000,5,
-0x212020,4,
-0x212034,17,
-0x212080,1,
-0x2120a0,6,
-0x212100,5,
-0x212120,4,
-0x212134,17,
-0x212180,1,
-0x2121a0,6,
-0x212200,5,
-0x212220,4,
-0x212234,17,
-0x212280,1,
-0x2122a0,6,
-0x212300,5,
-0x212320,4,
-0x212334,17,
-0x212380,1,
-0x2123a0,6,
-0x212500,6,
-0x21251c,7,
-0x212540,1,
-0x212c00,13,
-0x212c40,12,
-0x212c80,13,
-0x212cc0,12,
-0x212d00,6,
-0x212d20,6,
-0x212d80,14,
-0x212dc0,2,
-0x212e40,11,
-0x212e80,6,
-0x212ea0,6,
-0x213000,2,
-0x213010,5,
-0x213060,32,
-0x213100,8,
-0x213180,3,
-0x213190,2,
-0x21319c,5,
-0x213218,9,
-0x213240,3,
-0x213250,6,
-0x213280,1,
-0x213288,6,
-0x2132a4,1,
-0x213400,8,
-0x213424,2,
-0x213500,5,
-0x213520,4,
-0x213540,5,
-0x213560,4,
-0x213800,24,
-0x213864,5,
-0x213880,8,
-0x213900,13,
-0x213980,4,
-0x2139a0,6,
-0x213a40,1,
-0x213a60,1,
-0x213a68,23,
-0x213ac8,6,
-0x213b00,17,
-0x213b48,6,
-0x213b80,12,
-0x213c00,6,
-0x213c20,6,
-0x213c40,6,
-0x213c60,3,
-0x213d00,6,
-0x213d20,6,
-0x213d40,3,
-0x214000,29,
-0x214078,4,
-0x214090,2,
-0x2140a0,2,
-0x2140b0,3,
-0x2140c0,11,
-0x214100,14,
-0x214140,14,
-0x214180,61,
-0x214278,4,
-0x214290,2,
-0x2142a0,2,
-0x2142b0,3,
-0x2142c0,11,
-0x214300,14,
-0x214340,14,
-0x214380,61,
-0x214478,4,
-0x214490,2,
-0x2144a0,2,
-0x2144b0,3,
-0x2144c0,11,
-0x214500,14,
-0x214540,14,
-0x214580,61,
-0x214678,4,
-0x214690,2,
-0x2146a0,2,
-0x2146b0,3,
-0x2146c0,11,
-0x214700,14,
-0x214740,14,
-0x214780,62,
-0x21487c,1,
-0x214a00,8,
-0x214a24,15,
-0x214a64,23,
-0x214ac4,6,
-0x214b00,4,
-0x214b20,3,
-0x214c00,6,
-0x214c40,14,
-0x214c80,9,
-0x214d00,9,
-0x214d2c,1,
-0x214d40,3,
-0x214d60,1,
-0x214d80,3,
-0x214e00,2,
-0x214e0c,1,
-0x214e14,5,
-0x214e2c,1,
-0x214e34,5,
-0x214e4c,1,
-0x214e54,5,
-0x214e6c,1,
-0x214e74,5,
-0x214e8c,1,
-0x214e94,5,
-0x214eac,1,
-0x214eb4,3,
-0x215000,29,
-0x215078,4,
-0x215090,2,
-0x2150a0,2,
-0x2150b0,3,
-0x2150c0,11,
-0x215100,14,
-0x215140,14,
-0x215180,61,
-0x215278,4,
-0x215290,2,
-0x2152a0,2,
-0x2152b0,3,
-0x2152c0,11,
-0x215300,14,
-0x215340,14,
-0x215380,61,
-0x215478,4,
-0x215490,2,
-0x2154a0,2,
-0x2154b0,3,
-0x2154c0,11,
-0x215500,14,
-0x215540,14,
-0x215580,61,
-0x215678,4,
-0x215690,2,
-0x2156a0,2,
-0x2156b0,3,
-0x2156c0,11,
-0x215700,14,
-0x215740,14,
-0x215780,62,
-0x21587c,1,
-0x215a00,8,
-0x215a24,15,
-0x215a64,23,
-0x215ac4,6,
-0x215b00,4,
-0x215b20,3,
-0x215c00,6,
-0x215c40,14,
-0x215c80,9,
-0x215d00,9,
-0x215d2c,1,
-0x215d40,3,
-0x215d60,1,
-0x215d80,3,
-0x215e00,2,
-0x215e0c,1,
-0x215e14,5,
-0x215e2c,1,
-0x215e34,5,
-0x215e4c,1,
-0x215e54,5,
-0x215e6c,1,
-0x215e74,5,
-0x215e8c,1,
-0x215e94,5,
-0x215eac,1,
-0x215eb4,3,
-0x216000,14,
-0x216070,3,
-0x216080,6,
-0x216100,9,
-0x216204,1,
-0x21620c,6,
-0x216240,13,
-0x216280,16,
-0x216800,19,
-0x216850,10,
-0x216880,19,
-0x2168d0,10,
-0x216900,19,
-0x216950,10,
-0x216980,19,
-0x2169d0,10,
-0x216a00,19,
-0x216a50,10,
-0x216a80,19,
-0x216ad0,10,
-0x216b00,19,
-0x216b50,10,
-0x216b80,19,
-0x216bd0,10,
-0x216c00,19,
-0x216c60,6,
-0x216c84,1,
-0x216c94,8,
-0x216cb8,9,
-0x216ce0,4,
-0x217000,6,
-0x217020,3,
-0x217040,7,
-0x217060,6,
-0x217100,5,
-0x217138,1,
-0x217144,1,
-0x217150,2,
-0x218000,6,
-0x218020,3,
-0x218030,9,
-0x218100,6,
-0x218120,10,
-0x218150,8,
-0x218400,1,
-0x218428,1,
-0x218450,1,
-0x218478,1,
-0x2184a0,8,
-0x2185ac,1,
-0x2185d8,4,
-0x218600,6,
-0x218620,6,
-0x218640,3,
-0x218800,6,
-0x218820,3,
-0x218830,4,
-0x218858,2,
-0x218864,1,
-0x218874,3,
-0x218898,2,
-0x2188a4,1,
-0x2188b4,3,
-0x219000,6,
-0x219020,6,
-0x219040,3,
-0x219080,14,
-0x2190bc,1,
-0x2190c4,13,
-0x2190fc,1,
-0x219200,20,
-0x21925c,30,
-0x219300,24,
-0x219380,2,
-0x2193a0,1,
-0x2193c0,11,
-0x219404,3,
-0x219420,11,
-0x219460,3,
-0x219480,6,
-0x219500,6,
-0x219520,6,
-0x219540,1,
-0x219558,2,
-0x219600,17,
-0x219800,410,
-0x21a000,6,
-0x21a020,6,
-0x21a040,3,
-0x21a080,14,
-0x21a0bc,1,
-0x21a0c4,13,
-0x21a0fc,1,
-0x21a200,20,
-0x21a25c,30,
-0x21a300,24,
-0x21a380,2,
-0x21a3a0,1,
-0x21a3c0,11,
-0x21a404,3,
-0x21a420,11,
-0x21a460,3,
-0x21a480,6,
-0x21a500,6,
-0x21a520,6,
-0x21a540,1,
-0x21a558,2,
-0x21a600,17,
-0x21a800,410,
-0x21b000,4,
-0x21b020,25,
-0x21b088,8,
-0x21b100,4,
-0x21b120,25,
-0x21b188,8,
-0x21b200,34,
-0x21b300,37,
-0x21b400,16,
-0x21b464,1,
-0x21b474,3,
-0x21b500,6,
-0x21b520,2,
-0x21b530,9,
-0x21b570,10,
-0x21b5a0,2,
-0x21b5b0,9,
-0x21b5f0,4,
-0x21b620,7,
-0x21b640,16,
-0x21b700,6,
-0x21b720,6,
-0x21b740,6,
-0x21b760,6,
-0x21b780,3,
-0x21b800,5,
-0x21b818,1,
-0x21b854,6,
-0x21b880,2,
-0x21b8a4,1,
-0x21b8ac,2,
-0x21ba00,28,
-0x21ba7c,13,
-0x21bab4,1,
-0x21babc,10,
-0x21bb04,1,
-0x21bb0c,5,
-0x21bb24,1,
-0x21bb34,9,
-0x21bb60,6,
-0x21bb80,22,
-0x21bbe0,3,
-0x21bbf0,2,
-0x21bc00,5,
-0x21bc18,1,
-0x21bc54,6,
-0x21bc80,2,
-0x21bca4,1,
-0x21bcac,2,
-0x21be00,28,
-0x21be7c,13,
-0x21beb4,1,
-0x21bebc,10,
-0x21bf04,1,
-0x21bf0c,5,
-0x21bf24,1,
-0x21bf34,9,
-0x21bf60,6,
-0x21bf80,22,
-0x21bfe0,3,
-0x21bff0,2,
-0x21c008,2,
-0x21c014,11,
-0x21c044,1,
-0x21c04c,3,
-0x21c05c,1,
-0x21c064,1,
-0x21c07c,1,
-0x21c500,2,
-0x21c518,1,
-0x21c520,3,
-0x21c540,6,
-0x21c580,10,
-0x21c808,2,
-0x21c814,11,
-0x21c844,1,
-0x21c84c,3,
-0x21c85c,1,
-0x21c864,1,
-0x21c87c,1,
-0x21cd00,2,
-0x21cd18,1,
-0x21cd20,3,
-0x21cd40,6,
-0x21cd80,10,
-0x21d800,2,
-0x21d828,2,
-0x21d850,2,
-0x21d878,2,
-0x21d8a0,6,
-0x21d9ac,1,
-0x21d9d8,4,
-0x21da00,6,
-0x21da20,6,
-0x21da40,6,
-0x21da60,6,
-0x21da80,3,
-0x21dc00,6,
-0x21dc20,3,
-0x21dc40,2,
-0x21dc60,1,
-0x220000,5,
-0x220020,4,
-0x220034,17,
-0x220080,1,
-0x2200a0,6,
-0x220100,5,
-0x220120,4,
-0x220134,17,
-0x220180,1,
-0x2201a0,6,
-0x220200,5,
-0x220220,4,
-0x220234,17,
-0x220280,1,
-0x2202a0,6,
-0x220300,5,
-0x220320,4,
-0x220334,17,
-0x220380,1,
-0x2203a0,6,
-0x220500,6,
-0x22051c,7,
-0x220540,1,
-0x220c00,13,
-0x220c40,12,
-0x220c80,13,
-0x220cc0,12,
-0x220d00,6,
-0x220d20,6,
-0x220d80,14,
-0x220dc0,2,
-0x220e40,11,
-0x220e80,6,
-0x220ea0,6,
-0x221000,2,
-0x221010,5,
-0x221060,32,
-0x221100,8,
-0x221180,3,
-0x221190,2,
-0x22119c,5,
-0x221218,9,
-0x221240,3,
-0x221250,6,
-0x221280,1,
-0x221288,6,
-0x2212a4,1,
-0x221400,8,
-0x221424,2,
-0x221500,5,
-0x221520,4,
-0x221540,5,
-0x221560,4,
-0x221800,24,
-0x221864,5,
-0x221880,8,
-0x221900,13,
-0x221980,4,
-0x2219a0,6,
-0x221a40,1,
-0x221a60,1,
-0x221a68,23,
-0x221ac8,6,
-0x221b00,17,
-0x221b48,6,
-0x221b80,12,
-0x221c00,6,
-0x221c20,6,
-0x221c40,6,
-0x221c60,3,
-0x221d00,6,
-0x221d20,6,
-0x221d40,3,
-0x222000,5,
-0x222020,4,
-0x222034,17,
-0x222080,1,
-0x2220a0,6,
-0x222100,5,
-0x222120,4,
-0x222134,17,
-0x222180,1,
-0x2221a0,6,
-0x222200,5,
-0x222220,4,
-0x222234,17,
-0x222280,1,
-0x2222a0,6,
-0x222300,5,
-0x222320,4,
-0x222334,17,
-0x222380,1,
-0x2223a0,6,
-0x222500,6,
-0x22251c,7,
-0x222540,1,
-0x222c00,13,
-0x222c40,12,
-0x222c80,13,
-0x222cc0,12,
-0x222d00,6,
-0x222d20,6,
-0x222d80,14,
-0x222dc0,2,
-0x222e40,11,
-0x222e80,6,
-0x222ea0,6,
-0x223000,2,
-0x223010,5,
-0x223060,32,
-0x223100,8,
-0x223180,3,
-0x223190,2,
-0x22319c,5,
-0x223218,9,
-0x223240,3,
-0x223250,6,
-0x223280,1,
-0x223288,6,
-0x2232a4,1,
-0x223400,8,
-0x223424,2,
-0x223500,5,
-0x223520,4,
-0x223540,5,
-0x223560,4,
-0x223800,24,
-0x223864,5,
-0x223880,8,
-0x223900,13,
-0x223980,4,
-0x2239a0,6,
-0x223a40,1,
-0x223a60,1,
-0x223a68,23,
-0x223ac8,6,
-0x223b00,17,
-0x223b48,6,
-0x223b80,12,
-0x223c00,6,
-0x223c20,6,
-0x223c40,6,
-0x223c60,3,
-0x223d00,6,
-0x223d20,6,
-0x223d40,3,
-0x224000,29,
-0x224078,4,
-0x224090,2,
-0x2240a0,2,
-0x2240b0,3,
-0x2240c0,11,
-0x224100,14,
-0x224140,14,
-0x224180,61,
-0x224278,4,
-0x224290,2,
-0x2242a0,2,
-0x2242b0,3,
-0x2242c0,11,
-0x224300,14,
-0x224340,14,
-0x224380,61,
-0x224478,4,
-0x224490,2,
-0x2244a0,2,
-0x2244b0,3,
-0x2244c0,11,
-0x224500,14,
-0x224540,14,
-0x224580,61,
-0x224678,4,
-0x224690,2,
-0x2246a0,2,
-0x2246b0,3,
-0x2246c0,11,
-0x224700,14,
-0x224740,14,
-0x224780,62,
-0x22487c,1,
-0x224a00,8,
-0x224a24,15,
-0x224a64,23,
-0x224ac4,6,
-0x224b00,4,
-0x224b20,3,
-0x224c00,6,
-0x224c40,14,
-0x224c80,9,
-0x224d00,9,
-0x224d2c,1,
-0x224d40,3,
-0x224d60,1,
-0x224d80,3,
-0x224e00,2,
-0x224e0c,1,
-0x224e14,5,
-0x224e2c,1,
-0x224e34,5,
-0x224e4c,1,
-0x224e54,5,
-0x224e6c,1,
-0x224e74,5,
-0x224e8c,1,
-0x224e94,5,
-0x224eac,1,
-0x224eb4,3,
-0x225000,29,
-0x225078,4,
-0x225090,2,
-0x2250a0,2,
-0x2250b0,3,
-0x2250c0,11,
-0x225100,14,
-0x225140,14,
-0x225180,61,
-0x225278,4,
-0x225290,2,
-0x2252a0,2,
-0x2252b0,3,
-0x2252c0,11,
-0x225300,14,
-0x225340,14,
-0x225380,61,
-0x225478,4,
-0x225490,2,
-0x2254a0,2,
-0x2254b0,3,
-0x2254c0,11,
-0x225500,14,
-0x225540,14,
-0x225580,61,
-0x225678,4,
-0x225690,2,
-0x2256a0,2,
-0x2256b0,3,
-0x2256c0,11,
-0x225700,14,
-0x225740,14,
-0x225780,62,
-0x22587c,1,
-0x225a00,8,
-0x225a24,15,
-0x225a64,23,
-0x225ac4,6,
-0x225b00,4,
-0x225b20,3,
-0x225c00,6,
-0x225c40,14,
-0x225c80,9,
-0x225d00,9,
-0x225d2c,1,
-0x225d40,3,
-0x225d60,1,
-0x225d80,3,
-0x225e00,2,
-0x225e0c,1,
-0x225e14,5,
-0x225e2c,1,
-0x225e34,5,
-0x225e4c,1,
-0x225e54,5,
-0x225e6c,1,
-0x225e74,5,
-0x225e8c,1,
-0x225e94,5,
-0x225eac,1,
-0x225eb4,3,
-0x226000,14,
-0x226070,3,
-0x226080,6,
-0x226100,9,
-0x226204,1,
-0x22620c,6,
-0x226240,13,
-0x226280,16,
-0x226800,19,
-0x226850,10,
-0x226880,19,
-0x2268d0,10,
-0x226900,19,
-0x226950,10,
-0x226980,19,
-0x2269d0,10,
-0x226a00,19,
-0x226a50,10,
-0x226a80,19,
-0x226ad0,10,
-0x226b00,19,
-0x226b50,10,
-0x226b80,19,
-0x226bd0,10,
-0x226c00,19,
-0x226c60,6,
-0x226c84,1,
-0x226c94,8,
-0x226cb8,9,
-0x226ce0,4,
-0x227000,6,
-0x227020,3,
-0x227040,7,
-0x227060,6,
-0x227100,5,
-0x227138,1,
-0x227144,1,
-0x227150,2,
-0x228000,6,
-0x228020,3,
-0x228030,9,
-0x228100,6,
-0x228120,10,
-0x228150,8,
-0x228400,1,
-0x228428,1,
-0x228450,1,
-0x228478,1,
-0x2284a0,8,
-0x2285ac,1,
-0x2285d8,4,
-0x228600,6,
-0x228620,6,
-0x228640,3,
-0x228800,6,
-0x228820,3,
-0x228830,4,
-0x228858,2,
-0x228864,1,
-0x228874,3,
-0x228898,2,
-0x2288a4,1,
-0x2288b4,3,
-0x229000,6,
-0x229020,6,
-0x229040,3,
-0x229080,14,
-0x2290bc,1,
-0x2290c4,13,
-0x2290fc,1,
-0x229200,20,
-0x22925c,30,
-0x229300,24,
-0x229380,2,
-0x2293a0,1,
-0x2293c0,11,
-0x229404,3,
-0x229420,11,
-0x229460,3,
-0x229480,6,
-0x229500,6,
-0x229520,6,
-0x229540,1,
-0x229558,2,
-0x229600,17,
-0x229800,410,
-0x22a000,6,
-0x22a020,6,
-0x22a040,3,
-0x22a080,14,
-0x22a0bc,1,
-0x22a0c4,13,
-0x22a0fc,1,
-0x22a200,20,
-0x22a25c,30,
-0x22a300,24,
-0x22a380,2,
-0x22a3a0,1,
-0x22a3c0,11,
-0x22a404,3,
-0x22a420,11,
-0x22a460,3,
-0x22a480,6,
-0x22a500,6,
-0x22a520,6,
-0x22a540,1,
-0x22a558,2,
-0x22a600,17,
-0x22a800,410,
-0x22b000,4,
-0x22b020,25,
-0x22b088,8,
-0x22b100,4,
-0x22b120,25,
-0x22b188,8,
-0x22b200,34,
-0x22b300,37,
-0x22b400,16,
-0x22b464,1,
-0x22b474,3,
-0x22b500,6,
-0x22b520,2,
-0x22b530,9,
-0x22b570,10,
-0x22b5a0,2,
-0x22b5b0,9,
-0x22b5f0,4,
-0x22b620,7,
-0x22b640,16,
-0x22b700,6,
-0x22b720,6,
-0x22b740,6,
-0x22b760,6,
-0x22b780,3,
-0x22b800,5,
-0x22b818,1,
-0x22b854,6,
-0x22b880,2,
-0x22b8a4,1,
-0x22b8ac,2,
-0x22ba00,28,
-0x22ba7c,13,
-0x22bab4,1,
-0x22babc,10,
-0x22bb04,1,
-0x22bb0c,5,
-0x22bb24,1,
-0x22bb34,9,
-0x22bb60,6,
-0x22bb80,22,
-0x22bbe0,3,
-0x22bbf0,2,
-0x22bc00,5,
-0x22bc18,1,
-0x22bc54,6,
-0x22bc80,2,
-0x22bca4,1,
-0x22bcac,2,
-0x22be00,28,
-0x22be7c,13,
-0x22beb4,1,
-0x22bebc,10,
-0x22bf04,1,
-0x22bf0c,5,
-0x22bf24,1,
-0x22bf34,9,
-0x22bf60,6,
-0x22bf80,22,
-0x22bfe0,3,
-0x22bff0,2,
-0x22c008,2,
-0x22c014,11,
-0x22c044,1,
-0x22c04c,3,
-0x22c05c,1,
-0x22c064,1,
-0x22c07c,1,
-0x22c500,2,
-0x22c518,1,
-0x22c520,3,
-0x22c540,6,
-0x22c580,10,
-0x22c808,2,
-0x22c814,11,
-0x22c844,1,
-0x22c84c,3,
-0x22c85c,1,
-0x22c864,1,
-0x22c87c,1,
-0x22cd00,2,
-0x22cd18,1,
-0x22cd20,3,
-0x22cd40,6,
-0x22cd80,10,
-0x22d800,2,
-0x22d828,2,
-0x22d850,2,
-0x22d878,2,
-0x22d8a0,6,
-0x22d9ac,1,
-0x22d9d8,4,
-0x22da00,6,
-0x22da20,6,
-0x22da40,6,
-0x22da60,6,
-0x22da80,3,
-0x22dc00,6,
-0x22dc20,3,
-0x22dc40,2,
-0x22dc60,1,
-0x230000,5,
-0x230020,4,
-0x230034,17,
-0x230080,1,
-0x2300a0,6,
-0x230100,5,
-0x230120,4,
-0x230134,17,
-0x230180,1,
-0x2301a0,6,
-0x230200,5,
-0x230220,4,
-0x230234,17,
-0x230280,1,
-0x2302a0,6,
-0x230300,5,
-0x230320,4,
-0x230334,17,
-0x230380,1,
-0x2303a0,6,
-0x230500,6,
-0x23051c,7,
-0x230540,1,
-0x230c00,13,
-0x230c40,12,
-0x230c80,13,
-0x230cc0,12,
-0x230d00,6,
-0x230d20,6,
-0x230d80,14,
-0x230dc0,2,
-0x230e40,11,
-0x230e80,6,
-0x230ea0,6,
-0x231000,2,
-0x231010,5,
-0x231060,32,
-0x231100,8,
-0x231180,3,
-0x231190,2,
-0x23119c,5,
-0x231218,9,
-0x231240,3,
-0x231250,6,
-0x231280,1,
-0x231288,6,
-0x2312a4,1,
-0x231400,8,
-0x231424,2,
-0x231500,5,
-0x231520,4,
-0x231540,5,
-0x231560,4,
-0x231800,24,
-0x231864,5,
-0x231880,8,
-0x231900,13,
-0x231980,4,
-0x2319a0,6,
-0x231a40,1,
-0x231a60,1,
-0x231a68,23,
-0x231ac8,6,
-0x231b00,17,
-0x231b48,6,
-0x231b80,12,
-0x231c00,6,
-0x231c20,6,
-0x231c40,6,
-0x231c60,3,
-0x231d00,6,
-0x231d20,6,
-0x231d40,3,
-0x232000,5,
-0x232020,4,
-0x232034,17,
-0x232080,1,
-0x2320a0,6,
-0x232100,5,
-0x232120,4,
-0x232134,17,
-0x232180,1,
-0x2321a0,6,
-0x232200,5,
-0x232220,4,
-0x232234,17,
-0x232280,1,
-0x2322a0,6,
-0x232300,5,
-0x232320,4,
-0x232334,17,
-0x232380,1,
-0x2323a0,6,
-0x232500,6,
-0x23251c,7,
-0x232540,1,
-0x232c00,13,
-0x232c40,12,
-0x232c80,13,
-0x232cc0,12,
-0x232d00,6,
-0x232d20,6,
-0x232d80,14,
-0x232dc0,2,
-0x232e40,11,
-0x232e80,6,
-0x232ea0,6,
-0x233000,2,
-0x233010,5,
-0x233060,32,
-0x233100,8,
-0x233180,3,
-0x233190,2,
-0x23319c,5,
-0x233218,9,
-0x233240,3,
-0x233250,6,
-0x233280,1,
-0x233288,6,
-0x2332a4,1,
-0x233400,8,
-0x233424,2,
-0x233500,5,
-0x233520,4,
-0x233540,5,
-0x233560,4,
-0x233800,24,
-0x233864,5,
-0x233880,8,
-0x233900,13,
-0x233980,4,
-0x2339a0,6,
-0x233a40,1,
-0x233a60,1,
-0x233a68,23,
-0x233ac8,6,
-0x233b00,17,
-0x233b48,6,
-0x233b80,12,
-0x233c00,6,
-0x233c20,6,
-0x233c40,6,
-0x233c60,3,
-0x233d00,6,
-0x233d20,6,
-0x233d40,3,
-0x234000,29,
-0x234078,4,
-0x234090,2,
-0x2340a0,2,
-0x2340b0,3,
-0x2340c0,11,
-0x234100,14,
-0x234140,14,
-0x234180,61,
-0x234278,4,
-0x234290,2,
-0x2342a0,2,
-0x2342b0,3,
-0x2342c0,11,
-0x234300,14,
-0x234340,14,
-0x234380,61,
-0x234478,4,
-0x234490,2,
-0x2344a0,2,
-0x2344b0,3,
-0x2344c0,11,
-0x234500,14,
-0x234540,14,
-0x234580,61,
-0x234678,4,
-0x234690,2,
-0x2346a0,2,
-0x2346b0,3,
-0x2346c0,11,
-0x234700,14,
-0x234740,14,
-0x234780,62,
-0x23487c,1,
-0x234a00,8,
-0x234a24,15,
-0x234a64,23,
-0x234ac4,6,
-0x234b00,4,
-0x234b20,3,
-0x234c00,6,
-0x234c40,14,
-0x234c80,9,
-0x234d00,9,
-0x234d2c,1,
-0x234d40,3,
-0x234d60,1,
-0x234d80,3,
-0x234e00,2,
-0x234e0c,1,
-0x234e14,5,
-0x234e2c,1,
-0x234e34,5,
-0x234e4c,1,
-0x234e54,5,
-0x234e6c,1,
-0x234e74,5,
-0x234e8c,1,
-0x234e94,5,
-0x234eac,1,
-0x234eb4,3,
-0x235000,29,
-0x235078,4,
-0x235090,2,
-0x2350a0,2,
-0x2350b0,3,
-0x2350c0,11,
-0x235100,14,
-0x235140,14,
-0x235180,61,
-0x235278,4,
-0x235290,2,
-0x2352a0,2,
-0x2352b0,3,
-0x2352c0,11,
-0x235300,14,
-0x235340,14,
-0x235380,61,
-0x235478,4,
-0x235490,2,
-0x2354a0,2,
-0x2354b0,3,
-0x2354c0,11,
-0x235500,14,
-0x235540,14,
-0x235580,61,
-0x235678,4,
-0x235690,2,
-0x2356a0,2,
-0x2356b0,3,
-0x2356c0,11,
-0x235700,14,
-0x235740,14,
-0x235780,62,
-0x23587c,1,
-0x235a00,8,
-0x235a24,15,
-0x235a64,23,
-0x235ac4,6,
-0x235b00,4,
-0x235b20,3,
-0x235c00,6,
-0x235c40,14,
-0x235c80,9,
-0x235d00,9,
-0x235d2c,1,
-0x235d40,3,
-0x235d60,1,
-0x235d80,3,
-0x235e00,2,
-0x235e0c,1,
-0x235e14,5,
-0x235e2c,1,
-0x235e34,5,
-0x235e4c,1,
-0x235e54,5,
-0x235e6c,1,
-0x235e74,5,
-0x235e8c,1,
-0x235e94,5,
-0x235eac,1,
-0x235eb4,3,
-0x236000,14,
-0x236070,3,
-0x236080,6,
-0x236100,9,
-0x236204,1,
-0x23620c,6,
-0x236240,13,
-0x236280,16,
-0x236800,19,
-0x236850,10,
-0x236880,19,
-0x2368d0,10,
-0x236900,19,
-0x236950,10,
-0x236980,19,
-0x2369d0,10,
-0x236a00,19,
-0x236a50,10,
-0x236a80,19,
-0x236ad0,10,
-0x236b00,19,
-0x236b50,10,
-0x236b80,19,
-0x236bd0,10,
-0x236c00,19,
-0x236c60,6,
-0x236c84,1,
-0x236c94,8,
-0x236cb8,9,
-0x236ce0,4,
-0x237000,6,
-0x237020,3,
-0x237040,7,
-0x237060,6,
-0x237100,5,
-0x237138,1,
-0x237144,1,
-0x237150,2,
-0x238000,6,
-0x238020,3,
-0x238030,9,
-0x238100,6,
-0x238120,10,
-0x238150,8,
-0x238400,1,
-0x238428,1,
-0x238450,1,
-0x238478,1,
-0x2384a0,8,
-0x2385ac,1,
-0x2385d8,4,
-0x238600,6,
-0x238620,6,
-0x238640,3,
-0x238800,6,
-0x238820,3,
-0x238830,4,
-0x238858,2,
-0x238864,1,
-0x238874,3,
-0x238898,2,
-0x2388a4,1,
-0x2388b4,3,
-0x239000,6,
-0x239020,6,
-0x239040,3,
-0x239080,14,
-0x2390bc,1,
-0x2390c4,13,
-0x2390fc,1,
-0x239200,20,
-0x23925c,30,
-0x239300,24,
-0x239380,2,
-0x2393a0,1,
-0x2393c0,11,
-0x239404,3,
-0x239420,11,
-0x239460,3,
-0x239480,6,
-0x239500,6,
-0x239520,6,
-0x239540,1,
-0x239558,2,
-0x239600,17,
-0x239800,410,
-0x23a000,6,
-0x23a020,6,
-0x23a040,3,
-0x23a080,14,
-0x23a0bc,1,
-0x23a0c4,13,
-0x23a0fc,1,
-0x23a200,20,
-0x23a25c,30,
-0x23a300,24,
-0x23a380,2,
-0x23a3a0,1,
-0x23a3c0,11,
-0x23a404,3,
-0x23a420,11,
-0x23a460,3,
-0x23a480,6,
-0x23a500,6,
-0x23a520,6,
-0x23a540,1,
-0x23a558,2,
-0x23a600,17,
-0x23a800,410,
-0x23b000,4,
-0x23b020,25,
-0x23b088,8,
-0x23b100,4,
-0x23b120,25,
-0x23b188,8,
-0x23b200,34,
-0x23b300,37,
-0x23b400,16,
-0x23b464,1,
-0x23b474,3,
-0x23b500,6,
-0x23b520,2,
-0x23b530,9,
-0x23b570,10,
-0x23b5a0,2,
-0x23b5b0,9,
-0x23b5f0,4,
-0x23b620,7,
-0x23b640,16,
-0x23b700,6,
-0x23b720,6,
-0x23b740,6,
-0x23b760,6,
-0x23b780,3,
-0x23b800,5,
-0x23b818,1,
-0x23b854,6,
-0x23b880,2,
-0x23b8a4,1,
-0x23b8ac,2,
-0x23ba00,28,
-0x23ba7c,13,
-0x23bab4,1,
-0x23babc,10,
-0x23bb04,1,
-0x23bb0c,5,
-0x23bb24,1,
-0x23bb34,9,
-0x23bb60,6,
-0x23bb80,22,
-0x23bbe0,3,
-0x23bbf0,2,
-0x23bc00,5,
-0x23bc18,1,
-0x23bc54,6,
-0x23bc80,2,
-0x23bca4,1,
-0x23bcac,2,
-0x23be00,28,
-0x23be7c,13,
-0x23beb4,1,
-0x23bebc,10,
-0x23bf04,1,
-0x23bf0c,5,
-0x23bf24,1,
-0x23bf34,9,
-0x23bf60,6,
-0x23bf80,22,
-0x23bfe0,3,
-0x23bff0,2,
-0x23c008,2,
-0x23c014,11,
-0x23c044,1,
-0x23c04c,3,
-0x23c05c,1,
-0x23c064,1,
-0x23c07c,1,
-0x23c500,2,
-0x23c518,1,
-0x23c520,3,
-0x23c540,6,
-0x23c580,10,
-0x23c808,2,
-0x23c814,11,
-0x23c844,1,
-0x23c84c,3,
-0x23c85c,1,
-0x23c864,1,
-0x23c87c,1,
-0x23cd00,2,
-0x23cd18,1,
-0x23cd20,3,
-0x23cd40,6,
-0x23cd80,10,
-0x23d800,2,
-0x23d828,2,
-0x23d850,2,
-0x23d878,2,
-0x23d8a0,6,
-0x23d9ac,1,
-0x23d9d8,4,
-0x23da00,6,
-0x23da20,6,
-0x23da40,6,
-0x23da60,6,
-0x23da80,3,
-0x23dc00,6,
-0x23dc20,3,
-0x23dc40,2,
-0x23dc60,1,
-0x240000,5,
-0x240020,4,
-0x240034,17,
-0x240080,1,
-0x2400a0,6,
-0x240100,5,
-0x240120,4,
-0x240134,17,
-0x240180,1,
-0x2401a0,6,
-0x240200,5,
-0x240220,4,
-0x240234,17,
-0x240280,1,
-0x2402a0,6,
-0x240300,5,
-0x240320,4,
-0x240334,17,
-0x240380,1,
-0x2403a0,6,
-0x240500,6,
-0x24051c,7,
-0x240540,1,
-0x240c00,13,
-0x240c40,12,
-0x240c80,13,
-0x240cc0,12,
-0x240d00,6,
-0x240d20,6,
-0x240d80,14,
-0x240dc0,2,
-0x240e40,11,
-0x240e80,6,
-0x240ea0,6,
-0x241000,2,
-0x241010,5,
-0x241060,32,
-0x241100,8,
-0x241180,3,
-0x241190,2,
-0x24119c,5,
-0x241218,9,
-0x241240,3,
-0x241250,6,
-0x241280,1,
-0x241288,6,
-0x2412a4,1,
-0x241400,8,
-0x241424,2,
-0x241500,5,
-0x241520,4,
-0x241540,5,
-0x241560,4,
-0x241800,24,
-0x241864,5,
-0x241880,8,
-0x241900,13,
-0x241980,4,
-0x2419a0,6,
-0x241a40,1,
-0x241a60,1,
-0x241a68,23,
-0x241ac8,6,
-0x241b00,17,
-0x241b48,6,
-0x241b80,12,
-0x241c00,6,
-0x241c20,6,
-0x241c40,6,
-0x241c60,3,
-0x241d00,6,
-0x241d20,6,
-0x241d40,3,
-0x242000,5,
-0x242020,4,
-0x242034,17,
-0x242080,1,
-0x2420a0,6,
-0x242100,5,
-0x242120,4,
-0x242134,17,
-0x242180,1,
-0x2421a0,6,
-0x242200,5,
-0x242220,4,
-0x242234,17,
-0x242280,1,
-0x2422a0,6,
-0x242300,5,
-0x242320,4,
-0x242334,17,
-0x242380,1,
-0x2423a0,6,
-0x242500,6,
-0x24251c,7,
-0x242540,1,
-0x242c00,13,
-0x242c40,12,
-0x242c80,13,
-0x242cc0,12,
-0x242d00,6,
-0x242d20,6,
-0x242d80,14,
-0x242dc0,2,
-0x242e40,11,
-0x242e80,6,
-0x242ea0,6,
-0x243000,2,
-0x243010,5,
-0x243060,32,
-0x243100,8,
-0x243180,3,
-0x243190,2,
-0x24319c,5,
-0x243218,9,
-0x243240,3,
-0x243250,6,
-0x243280,1,
-0x243288,6,
-0x2432a4,1,
-0x243400,8,
-0x243424,2,
-0x243500,5,
-0x243520,4,
-0x243540,5,
-0x243560,4,
-0x243800,24,
-0x243864,5,
-0x243880,8,
-0x243900,13,
-0x243980,4,
-0x2439a0,6,
-0x243a40,1,
-0x243a60,1,
-0x243a68,23,
-0x243ac8,6,
-0x243b00,17,
-0x243b48,6,
-0x243b80,12,
-0x243c00,6,
-0x243c20,6,
-0x243c40,6,
-0x243c60,3,
-0x243d00,6,
-0x243d20,6,
-0x243d40,3,
-0x244000,29,
-0x244078,4,
-0x244090,2,
-0x2440a0,2,
-0x2440b0,3,
-0x2440c0,11,
-0x244100,14,
-0x244140,14,
-0x244180,61,
-0x244278,4,
-0x244290,2,
-0x2442a0,2,
-0x2442b0,3,
-0x2442c0,11,
-0x244300,14,
-0x244340,14,
-0x244380,61,
-0x244478,4,
-0x244490,2,
-0x2444a0,2,
-0x2444b0,3,
-0x2444c0,11,
-0x244500,14,
-0x244540,14,
-0x244580,61,
-0x244678,4,
-0x244690,2,
-0x2446a0,2,
-0x2446b0,3,
-0x2446c0,11,
-0x244700,14,
-0x244740,14,
-0x244780,62,
-0x24487c,1,
-0x244a00,8,
-0x244a24,15,
-0x244a64,23,
-0x244ac4,6,
-0x244b00,4,
-0x244b20,3,
-0x244c00,6,
-0x244c40,14,
-0x244c80,9,
-0x244d00,9,
-0x244d2c,1,
-0x244d40,3,
-0x244d60,1,
-0x244d80,3,
-0x244e00,2,
-0x244e0c,1,
-0x244e14,5,
-0x244e2c,1,
-0x244e34,5,
-0x244e4c,1,
-0x244e54,5,
-0x244e6c,1,
-0x244e74,5,
-0x244e8c,1,
-0x244e94,5,
-0x244eac,1,
-0x244eb4,3,
-0x245000,29,
-0x245078,4,
-0x245090,2,
-0x2450a0,2,
-0x2450b0,3,
-0x2450c0,11,
-0x245100,14,
-0x245140,14,
-0x245180,61,
-0x245278,4,
-0x245290,2,
-0x2452a0,2,
-0x2452b0,3,
-0x2452c0,11,
-0x245300,14,
-0x245340,14,
-0x245380,61,
-0x245478,4,
-0x245490,2,
-0x2454a0,2,
-0x2454b0,3,
-0x2454c0,11,
-0x245500,14,
-0x245540,14,
-0x245580,61,
-0x245678,4,
-0x245690,2,
-0x2456a0,2,
-0x2456b0,3,
-0x2456c0,11,
-0x245700,14,
-0x245740,14,
-0x245780,62,
-0x24587c,1,
-0x245a00,8,
-0x245a24,15,
-0x245a64,23,
-0x245ac4,6,
-0x245b00,4,
-0x245b20,3,
-0x245c00,6,
-0x245c40,14,
-0x245c80,9,
-0x245d00,9,
-0x245d2c,1,
-0x245d40,3,
-0x245d60,1,
-0x245d80,3,
-0x245e00,2,
-0x245e0c,1,
-0x245e14,5,
-0x245e2c,1,
-0x245e34,5,
-0x245e4c,1,
-0x245e54,5,
-0x245e6c,1,
-0x245e74,5,
-0x245e8c,1,
-0x245e94,5,
-0x245eac,1,
-0x245eb4,3,
-0x246000,14,
-0x246070,3,
-0x246080,6,
-0x246100,9,
-0x246204,1,
-0x24620c,6,
-0x246240,13,
-0x246280,16,
-0x246400,8,
-0x246424,15,
-0x246464,15,
-0x2464a4,15,
-0x2464e4,23,
-0x246544,6,
-0x246580,10,
-0x2465ac,1,
-0x2465b4,5,
-0x2465cc,1,
-0x2465d4,5,
-0x2465ec,1,
-0x2465f4,13,
-0x246680,7,
-0x2466a0,5,
-0x2466c0,5,
-0x2466e0,4,
-0x246800,19,
-0x246850,10,
-0x246880,19,
-0x2468d0,10,
-0x246900,19,
-0x246950,10,
-0x246980,19,
-0x2469d0,10,
-0x246a00,19,
-0x246a50,10,
-0x246a80,19,
-0x246ad0,10,
-0x246b00,19,
-0x246b50,10,
-0x246b80,19,
-0x246bd0,10,
-0x246c00,19,
-0x246c60,6,
-0x246c84,1,
-0x246c94,8,
-0x246cb8,9,
-0x246ce0,4,
-0x247000,6,
-0x247020,3,
-0x247040,7,
-0x247060,6,
-0x247100,5,
-0x247138,1,
-0x247144,1,
-0x247150,2,
-0x248000,6,
-0x248020,3,
-0x248030,9,
-0x248100,6,
-0x248120,10,
-0x248150,8,
-0x248400,1,
-0x248428,1,
-0x248450,1,
-0x248478,1,
-0x2484a0,8,
-0x2485ac,1,
-0x2485d8,4,
-0x248600,6,
-0x248620,6,
-0x248640,3,
-0x248800,6,
-0x248820,3,
-0x248830,4,
-0x248858,2,
-0x248864,1,
-0x248874,3,
-0x248898,2,
-0x2488a4,1,
-0x2488b4,3,
-0x249000,6,
-0x249020,6,
-0x249040,3,
-0x249080,14,
-0x2490bc,1,
-0x2490c4,13,
-0x2490fc,1,
-0x249200,20,
-0x24925c,30,
-0x249300,24,
-0x249380,2,
-0x2493a0,1,
-0x2493c0,11,
-0x249404,3,
-0x249420,11,
-0x249460,3,
-0x249480,6,
-0x249500,6,
-0x249520,6,
-0x249540,1,
-0x249558,2,
-0x249600,17,
-0x249800,410,
-0x24a000,6,
-0x24a020,6,
-0x24a040,3,
-0x24a080,14,
-0x24a0bc,1,
-0x24a0c4,13,
-0x24a0fc,1,
-0x24a200,20,
-0x24a25c,30,
-0x24a300,24,
-0x24a380,2,
-0x24a3a0,1,
-0x24a3c0,11,
-0x24a404,3,
-0x24a420,11,
-0x24a460,3,
-0x24a480,6,
-0x24a500,6,
-0x24a520,6,
-0x24a540,1,
-0x24a558,2,
-0x24a600,17,
-0x24a800,410,
-0x24b000,4,
-0x24b020,25,
-0x24b088,8,
-0x24b100,4,
-0x24b120,25,
-0x24b188,8,
-0x24b200,34,
-0x24b300,37,
-0x24b400,16,
-0x24b464,1,
-0x24b474,3,
-0x24b500,6,
-0x24b520,2,
-0x24b530,9,
-0x24b570,10,
-0x24b5a0,2,
-0x24b5b0,9,
-0x24b5f0,4,
-0x24b620,7,
-0x24b640,16,
-0x24b700,6,
-0x24b720,6,
-0x24b740,6,
-0x24b760,6,
-0x24b780,3,
-0x24b800,5,
-0x24b818,1,
-0x24b854,6,
-0x24b880,2,
-0x24b8a4,1,
-0x24b8ac,2,
-0x24ba00,28,
-0x24ba7c,13,
-0x24bab4,1,
-0x24babc,10,
-0x24bb04,1,
-0x24bb0c,5,
-0x24bb24,1,
-0x24bb34,9,
-0x24bb60,6,
-0x24bb80,22,
-0x24bbe0,3,
-0x24bbf0,2,
-0x24bc00,5,
-0x24bc18,1,
-0x24bc54,6,
-0x24bc80,2,
-0x24bca4,1,
-0x24bcac,2,
-0x24be00,28,
-0x24be7c,13,
-0x24beb4,1,
-0x24bebc,10,
-0x24bf04,1,
-0x24bf0c,5,
-0x24bf24,1,
-0x24bf34,9,
-0x24bf60,6,
-0x24bf80,22,
-0x24bfe0,3,
-0x24bff0,2,
-0x24c008,2,
-0x24c014,11,
-0x24c044,1,
-0x24c04c,3,
-0x24c05c,1,
-0x24c064,1,
-0x24c07c,1,
-0x24c500,2,
-0x24c518,1,
-0x24c520,3,
-0x24c540,6,
-0x24c580,10,
-0x24c808,2,
-0x24c814,11,
-0x24c844,1,
-0x24c84c,3,
-0x24c85c,1,
-0x24c864,1,
-0x24c87c,1,
-0x24cd00,2,
-0x24cd18,1,
-0x24cd20,3,
-0x24cd40,6,
-0x24cd80,10,
-0x24d800,2,
-0x24d828,2,
-0x24d850,2,
-0x24d878,2,
-0x24d8a0,6,
-0x24d9ac,1,
-0x24d9d8,4,
-0x24da00,6,
-0x24da20,6,
-0x24da40,6,
-0x24da60,6,
-0x24da80,3,
-0x24dc00,6,
-0x24dc20,3,
-0x24dc40,2,
-0x24dc60,1,
-0x250000,5,
-0x250020,4,
-0x250034,17,
-0x250080,1,
-0x2500a0,6,
-0x250100,5,
-0x250120,4,
-0x250134,17,
-0x250180,1,
-0x2501a0,6,
-0x250200,5,
-0x250220,4,
-0x250234,17,
-0x250280,1,
-0x2502a0,6,
-0x250300,5,
-0x250320,4,
-0x250334,17,
-0x250380,1,
-0x2503a0,6,
-0x250500,6,
-0x25051c,7,
-0x250540,1,
-0x250c00,13,
-0x250c40,12,
-0x250c80,13,
-0x250cc0,12,
-0x250d00,6,
-0x250d20,6,
-0x250d80,14,
-0x250dc0,2,
-0x250e40,11,
-0x250e80,6,
-0x250ea0,6,
-0x251000,2,
-0x251010,5,
-0x251060,32,
-0x251100,8,
-0x251180,3,
-0x251190,2,
-0x25119c,5,
-0x251218,9,
-0x251240,3,
-0x251250,6,
-0x251280,1,
-0x251288,6,
-0x2512a4,1,
-0x251400,8,
-0x251424,2,
-0x251500,5,
-0x251520,4,
-0x251540,5,
-0x251560,4,
-0x251800,24,
-0x251864,5,
-0x251880,8,
-0x251900,13,
-0x251980,4,
-0x2519a0,6,
-0x251a40,1,
-0x251a60,1,
-0x251a68,23,
-0x251ac8,6,
-0x251b00,17,
-0x251b48,6,
-0x251b80,12,
-0x251c00,6,
-0x251c20,6,
-0x251c40,6,
-0x251c60,3,
-0x251d00,6,
-0x251d20,6,
-0x251d40,3,
-0x252000,5,
-0x252020,4,
-0x252034,17,
-0x252080,1,
-0x2520a0,6,
-0x252100,5,
-0x252120,4,
-0x252134,17,
-0x252180,1,
-0x2521a0,6,
-0x252200,5,
-0x252220,4,
-0x252234,17,
-0x252280,1,
-0x2522a0,6,
-0x252300,5,
-0x252320,4,
-0x252334,17,
-0x252380,1,
-0x2523a0,6,
-0x252500,6,
-0x25251c,7,
-0x252540,1,
-0x252c00,13,
-0x252c40,12,
-0x252c80,13,
-0x252cc0,12,
-0x252d00,6,
-0x252d20,6,
-0x252d80,14,
-0x252dc0,2,
-0x252e40,11,
-0x252e80,6,
-0x252ea0,6,
-0x253000,2,
-0x253010,5,
-0x253060,32,
-0x253100,8,
-0x253180,3,
-0x253190,2,
-0x25319c,5,
-0x253218,9,
-0x253240,3,
-0x253250,6,
-0x253280,1,
-0x253288,6,
-0x2532a4,1,
-0x253400,8,
-0x253424,2,
-0x253500,5,
-0x253520,4,
-0x253540,5,
-0x253560,4,
-0x253800,24,
-0x253864,5,
-0x253880,8,
-0x253900,13,
-0x253980,4,
-0x2539a0,6,
-0x253a40,1,
-0x253a60,1,
-0x253a68,23,
-0x253ac8,6,
-0x253b00,17,
-0x253b48,6,
-0x253b80,12,
-0x253c00,6,
-0x253c20,6,
-0x253c40,6,
-0x253c60,3,
-0x253d00,6,
-0x253d20,6,
-0x253d40,3,
-0x254000,29,
-0x254078,4,
-0x254090,2,
-0x2540a0,2,
-0x2540b0,3,
-0x2540c0,11,
-0x254100,14,
-0x254140,14,
-0x254180,61,
-0x254278,4,
-0x254290,2,
-0x2542a0,2,
-0x2542b0,3,
-0x2542c0,11,
-0x254300,14,
-0x254340,14,
-0x254380,61,
-0x254478,4,
-0x254490,2,
-0x2544a0,2,
-0x2544b0,3,
-0x2544c0,11,
-0x254500,14,
-0x254540,14,
-0x254580,61,
-0x254678,4,
-0x254690,2,
-0x2546a0,2,
-0x2546b0,3,
-0x2546c0,11,
-0x254700,14,
-0x254740,14,
-0x254780,62,
-0x25487c,1,
-0x254a00,8,
-0x254a24,15,
-0x254a64,23,
-0x254ac4,6,
-0x254b00,4,
-0x254b20,3,
-0x254c00,6,
-0x254c40,14,
-0x254c80,9,
-0x254d00,9,
-0x254d2c,1,
-0x254d40,3,
-0x254d60,1,
-0x254d80,3,
-0x254e00,2,
-0x254e0c,1,
-0x254e14,5,
-0x254e2c,1,
-0x254e34,5,
-0x254e4c,1,
-0x254e54,5,
-0x254e6c,1,
-0x254e74,5,
-0x254e8c,1,
-0x254e94,5,
-0x254eac,1,
-0x254eb4,3,
-0x255000,29,
-0x255078,4,
-0x255090,2,
-0x2550a0,2,
-0x2550b0,3,
-0x2550c0,11,
-0x255100,14,
-0x255140,14,
-0x255180,61,
-0x255278,4,
-0x255290,2,
-0x2552a0,2,
-0x2552b0,3,
-0x2552c0,11,
-0x255300,14,
-0x255340,14,
-0x255380,61,
-0x255478,4,
-0x255490,2,
-0x2554a0,2,
-0x2554b0,3,
-0x2554c0,11,
-0x255500,14,
-0x255540,14,
-0x255580,61,
-0x255678,4,
-0x255690,2,
-0x2556a0,2,
-0x2556b0,3,
-0x2556c0,11,
-0x255700,14,
-0x255740,14,
-0x255780,62,
-0x25587c,1,
-0x255a00,8,
-0x255a24,15,
-0x255a64,23,
-0x255ac4,6,
-0x255b00,4,
-0x255b20,3,
-0x255c00,6,
-0x255c40,14,
-0x255c80,9,
-0x255d00,9,
-0x255d2c,1,
-0x255d40,3,
-0x255d60,1,
-0x255d80,3,
-0x255e00,2,
-0x255e0c,1,
-0x255e14,5,
-0x255e2c,1,
-0x255e34,5,
-0x255e4c,1,
-0x255e54,5,
-0x255e6c,1,
-0x255e74,5,
-0x255e8c,1,
-0x255e94,5,
-0x255eac,1,
-0x255eb4,3,
-0x256000,14,
-0x256070,3,
-0x256080,6,
-0x256100,9,
-0x256204,1,
-0x25620c,6,
-0x256240,13,
-0x256280,16,
-0x256800,19,
-0x256850,10,
-0x256880,19,
-0x2568d0,10,
-0x256900,19,
-0x256950,10,
-0x256980,19,
-0x2569d0,10,
-0x256a00,19,
-0x256a50,10,
-0x256a80,19,
-0x256ad0,10,
-0x256b00,19,
-0x256b50,10,
-0x256b80,19,
-0x256bd0,10,
-0x256c00,19,
-0x256c60,6,
-0x256c84,1,
-0x256c94,8,
-0x256cb8,9,
-0x256ce0,4,
-0x257000,6,
-0x257020,3,
-0x257040,7,
-0x257060,6,
-0x257100,5,
-0x257138,1,
-0x257144,1,
-0x257150,2,
-0x258000,6,
-0x258020,3,
-0x258030,9,
-0x258100,6,
-0x258120,10,
-0x258150,8,
-0x258400,1,
-0x258428,1,
-0x258450,1,
-0x258478,1,
-0x2584a0,8,
-0x2585ac,1,
-0x2585d8,4,
-0x258600,6,
-0x258620,6,
-0x258640,3,
-0x258800,6,
-0x258820,3,
-0x258830,4,
-0x258858,2,
-0x258864,1,
-0x258874,3,
-0x258898,2,
-0x2588a4,1,
-0x2588b4,3,
-0x259000,6,
-0x259020,6,
-0x259040,3,
-0x259080,14,
-0x2590bc,1,
-0x2590c4,13,
-0x2590fc,1,
-0x259200,20,
-0x25925c,30,
-0x259300,24,
-0x259380,2,
-0x2593a0,1,
-0x2593c0,11,
-0x259404,3,
-0x259420,11,
-0x259460,3,
-0x259480,6,
-0x259500,6,
-0x259520,6,
-0x259540,1,
-0x259558,2,
-0x259600,17,
-0x259800,410,
-0x25a000,6,
-0x25a020,6,
-0x25a040,3,
-0x25a080,14,
-0x25a0bc,1,
-0x25a0c4,13,
-0x25a0fc,1,
-0x25a200,20,
-0x25a25c,30,
-0x25a300,24,
-0x25a380,2,
-0x25a3a0,1,
-0x25a3c0,11,
-0x25a404,3,
-0x25a420,11,
-0x25a460,3,
-0x25a480,6,
-0x25a500,6,
-0x25a520,6,
-0x25a540,1,
-0x25a558,2,
-0x25a600,17,
-0x25a800,410,
-0x25b000,4,
-0x25b020,25,
-0x25b088,8,
-0x25b100,4,
-0x25b120,25,
-0x25b188,8,
-0x25b200,34,
-0x25b300,37,
-0x25b400,16,
-0x25b464,1,
-0x25b474,3,
-0x25b500,6,
-0x25b520,2,
-0x25b530,9,
-0x25b570,10,
-0x25b5a0,2,
-0x25b5b0,9,
-0x25b5f0,4,
-0x25b620,7,
-0x25b640,16,
-0x25b700,6,
-0x25b720,6,
-0x25b740,6,
-0x25b760,6,
-0x25b780,3,
-0x25b800,5,
-0x25b818,1,
-0x25b854,6,
-0x25b880,2,
-0x25b8a4,1,
-0x25b8ac,2,
-0x25ba00,28,
-0x25ba7c,13,
-0x25bab4,1,
-0x25babc,10,
-0x25bb04,1,
-0x25bb0c,5,
-0x25bb24,1,
-0x25bb34,9,
-0x25bb60,6,
-0x25bb80,22,
-0x25bbe0,3,
-0x25bbf0,2,
-0x25bc00,5,
-0x25bc18,1,
-0x25bc54,6,
-0x25bc80,2,
-0x25bca4,1,
-0x25bcac,2,
-0x25be00,28,
-0x25be7c,13,
-0x25beb4,1,
-0x25bebc,10,
-0x25bf04,1,
-0x25bf0c,5,
-0x25bf24,1,
-0x25bf34,9,
-0x25bf60,6,
-0x25bf80,22,
-0x25bfe0,3,
-0x25bff0,2,
-0x25c008,2,
-0x25c014,11,
-0x25c044,1,
-0x25c04c,3,
-0x25c05c,1,
-0x25c064,1,
-0x25c07c,1,
-0x25c500,2,
-0x25c518,1,
-0x25c520,3,
-0x25c540,6,
-0x25c580,10,
-0x25c808,2,
-0x25c814,11,
-0x25c844,1,
-0x25c84c,3,
-0x25c85c,1,
-0x25c864,1,
-0x25c87c,1,
-0x25cd00,2,
-0x25cd18,1,
-0x25cd20,3,
-0x25cd40,6,
-0x25cd80,10,
-0x25d800,2,
-0x25d828,2,
-0x25d850,2,
-0x25d878,2,
-0x25d8a0,6,
-0x25d9ac,1,
-0x25d9d8,4,
-0x25da00,6,
-0x25da20,6,
-0x25da40,6,
-0x25da60,6,
-0x25da80,3,
-0x25dc00,6,
-0x25dc20,3,
-0x25dc40,2,
-0x25dc60,1,
-0x260000,5,
-0x260020,4,
-0x260034,17,
-0x260080,1,
-0x2600a0,6,
-0x260100,5,
-0x260120,4,
-0x260134,17,
-0x260180,1,
-0x2601a0,6,
-0x260200,5,
-0x260220,4,
-0x260234,17,
-0x260280,1,
-0x2602a0,6,
-0x260300,5,
-0x260320,4,
-0x260334,17,
-0x260380,1,
-0x2603a0,6,
-0x260500,6,
-0x26051c,7,
-0x260540,1,
-0x260c00,13,
-0x260c40,12,
-0x260c80,13,
-0x260cc0,12,
-0x260d00,6,
-0x260d20,6,
-0x260d80,14,
-0x260dc0,2,
-0x260e40,11,
-0x260e80,6,
-0x260ea0,6,
-0x261000,2,
-0x261010,5,
-0x261060,32,
-0x261100,8,
-0x261180,3,
-0x261190,2,
-0x26119c,5,
-0x261218,9,
-0x261240,3,
-0x261250,6,
-0x261280,1,
-0x261288,6,
-0x2612a4,1,
-0x261400,8,
-0x261424,2,
-0x261500,5,
-0x261520,4,
-0x261540,5,
-0x261560,4,
-0x261800,24,
-0x261864,5,
-0x261880,8,
-0x261900,13,
-0x261980,4,
-0x2619a0,6,
-0x261a40,1,
-0x261a60,1,
-0x261a68,23,
-0x261ac8,6,
-0x261b00,17,
-0x261b48,6,
-0x261b80,12,
-0x261c00,6,
-0x261c20,6,
-0x261c40,6,
-0x261c60,3,
-0x261d00,6,
-0x261d20,6,
-0x261d40,3,
-0x262000,5,
-0x262020,4,
-0x262034,17,
-0x262080,1,
-0x2620a0,6,
-0x262100,5,
-0x262120,4,
-0x262134,17,
-0x262180,1,
-0x2621a0,6,
-0x262200,5,
-0x262220,4,
-0x262234,17,
-0x262280,1,
-0x2622a0,6,
-0x262300,5,
-0x262320,4,
-0x262334,17,
-0x262380,1,
-0x2623a0,6,
-0x262500,6,
-0x26251c,7,
-0x262540,1,
-0x262c00,13,
-0x262c40,12,
-0x262c80,13,
-0x262cc0,12,
-0x262d00,6,
-0x262d20,6,
-0x262d80,14,
-0x262dc0,2,
-0x262e40,11,
-0x262e80,6,
-0x262ea0,6,
-0x263000,2,
-0x263010,5,
-0x263060,32,
-0x263100,8,
-0x263180,3,
-0x263190,2,
-0x26319c,5,
-0x263218,9,
-0x263240,3,
-0x263250,6,
-0x263280,1,
-0x263288,6,
-0x2632a4,1,
-0x263400,8,
-0x263424,2,
-0x263500,5,
-0x263520,4,
-0x263540,5,
-0x263560,4,
-0x263800,24,
-0x263864,5,
-0x263880,8,
-0x263900,13,
-0x263980,4,
-0x2639a0,6,
-0x263a40,1,
-0x263a60,1,
-0x263a68,23,
-0x263ac8,6,
-0x263b00,17,
-0x263b48,6,
-0x263b80,12,
-0x263c00,6,
-0x263c20,6,
-0x263c40,6,
-0x263c60,3,
-0x263d00,6,
-0x263d20,6,
-0x263d40,3,
-0x264000,29,
-0x264078,4,
-0x264090,2,
-0x2640a0,2,
-0x2640b0,3,
-0x2640c0,11,
-0x264100,14,
-0x264140,14,
-0x264180,61,
-0x264278,4,
-0x264290,2,
-0x2642a0,2,
-0x2642b0,3,
-0x2642c0,11,
-0x264300,14,
-0x264340,14,
-0x264380,61,
-0x264478,4,
-0x264490,2,
-0x2644a0,2,
-0x2644b0,3,
-0x2644c0,11,
-0x264500,14,
-0x264540,14,
-0x264580,61,
-0x264678,4,
-0x264690,2,
-0x2646a0,2,
-0x2646b0,3,
-0x2646c0,11,
-0x264700,14,
-0x264740,14,
-0x264780,62,
-0x26487c,1,
-0x264a00,8,
-0x264a24,15,
-0x264a64,23,
-0x264ac4,6,
-0x264b00,4,
-0x264b20,3,
-0x264c00,6,
-0x264c40,14,
-0x264c80,9,
-0x264d00,9,
-0x264d2c,1,
-0x264d40,3,
-0x264d60,1,
-0x264d80,3,
-0x264e00,2,
-0x264e0c,1,
-0x264e14,5,
-0x264e2c,1,
-0x264e34,5,
-0x264e4c,1,
-0x264e54,5,
-0x264e6c,1,
-0x264e74,5,
-0x264e8c,1,
-0x264e94,5,
-0x264eac,1,
-0x264eb4,3,
-0x265000,29,
-0x265078,4,
-0x265090,2,
-0x2650a0,2,
-0x2650b0,3,
-0x2650c0,11,
-0x265100,14,
-0x265140,14,
-0x265180,61,
-0x265278,4,
-0x265290,2,
-0x2652a0,2,
-0x2652b0,3,
-0x2652c0,11,
-0x265300,14,
-0x265340,14,
-0x265380,61,
-0x265478,4,
-0x265490,2,
-0x2654a0,2,
-0x2654b0,3,
-0x2654c0,11,
-0x265500,14,
-0x265540,14,
-0x265580,61,
-0x265678,4,
-0x265690,2,
-0x2656a0,2,
-0x2656b0,3,
-0x2656c0,11,
-0x265700,14,
-0x265740,14,
-0x265780,62,
-0x26587c,1,
-0x265a00,8,
-0x265a24,15,
-0x265a64,23,
-0x265ac4,6,
-0x265b00,4,
-0x265b20,3,
-0x265c00,6,
-0x265c40,14,
-0x265c80,9,
-0x265d00,9,
-0x265d2c,1,
-0x265d40,3,
-0x265d60,1,
-0x265d80,3,
-0x265e00,2,
-0x265e0c,1,
-0x265e14,5,
-0x265e2c,1,
-0x265e34,5,
-0x265e4c,1,
-0x265e54,5,
-0x265e6c,1,
-0x265e74,5,
-0x265e8c,1,
-0x265e94,5,
-0x265eac,1,
-0x265eb4,3,
-0x266000,14,
-0x266070,3,
-0x266080,6,
-0x266100,9,
-0x266204,1,
-0x26620c,6,
-0x266240,13,
-0x266280,16,
-0x266800,19,
-0x266850,10,
-0x266880,19,
-0x2668d0,10,
-0x266900,19,
-0x266950,10,
-0x266980,19,
-0x2669d0,10,
-0x266a00,19,
-0x266a50,10,
-0x266a80,19,
-0x266ad0,10,
-0x266b00,19,
-0x266b50,10,
-0x266b80,19,
-0x266bd0,10,
-0x266c00,19,
-0x266c60,6,
-0x266c84,1,
-0x266c94,8,
-0x266cb8,9,
-0x266ce0,4,
-0x267000,6,
-0x267020,3,
-0x267040,7,
-0x267060,6,
-0x267100,5,
-0x267138,1,
-0x267144,1,
-0x267150,2,
-0x268000,6,
-0x268020,3,
-0x268030,9,
-0x268100,6,
-0x268120,10,
-0x268150,8,
-0x268400,1,
-0x268428,1,
-0x268450,1,
-0x268478,1,
-0x2684a0,8,
-0x2685ac,1,
-0x2685d8,4,
-0x268600,6,
-0x268620,6,
-0x268640,3,
-0x268800,6,
-0x268820,3,
-0x268830,4,
-0x268858,2,
-0x268864,1,
-0x268874,3,
-0x268898,2,
-0x2688a4,1,
-0x2688b4,3,
-0x269000,6,
-0x269020,6,
-0x269040,3,
-0x269080,14,
-0x2690bc,1,
-0x2690c4,13,
-0x2690fc,1,
-0x269200,20,
-0x26925c,30,
-0x269300,24,
-0x269380,2,
-0x2693a0,1,
-0x2693c0,11,
-0x269404,3,
-0x269420,11,
-0x269460,3,
-0x269480,6,
-0x269500,6,
-0x269520,6,
-0x269540,1,
-0x269558,2,
-0x269600,17,
-0x269800,410,
-0x26a000,6,
-0x26a020,6,
-0x26a040,3,
-0x26a080,14,
-0x26a0bc,1,
-0x26a0c4,13,
-0x26a0fc,1,
-0x26a200,20,
-0x26a25c,30,
-0x26a300,24,
-0x26a380,2,
-0x26a3a0,1,
-0x26a3c0,11,
-0x26a404,3,
-0x26a420,11,
-0x26a460,3,
-0x26a480,6,
-0x26a500,6,
-0x26a520,6,
-0x26a540,1,
-0x26a558,2,
-0x26a600,17,
-0x26a800,410,
-0x26b000,4,
-0x26b020,25,
-0x26b088,8,
-0x26b100,4,
-0x26b120,25,
-0x26b188,8,
-0x26b200,34,
-0x26b300,37,
-0x26b400,16,
-0x26b464,1,
-0x26b474,3,
-0x26b500,6,
-0x26b520,2,
-0x26b530,9,
-0x26b570,10,
-0x26b5a0,2,
-0x26b5b0,9,
-0x26b5f0,4,
-0x26b620,7,
-0x26b640,16,
-0x26b700,6,
-0x26b720,6,
-0x26b740,6,
-0x26b760,6,
-0x26b780,3,
-0x26b800,5,
-0x26b818,1,
-0x26b854,6,
-0x26b880,2,
-0x26b8a4,1,
-0x26b8ac,2,
-0x26ba00,28,
-0x26ba7c,13,
-0x26bab4,1,
-0x26babc,10,
-0x26bb04,1,
-0x26bb0c,5,
-0x26bb24,1,
-0x26bb34,9,
-0x26bb60,6,
-0x26bb80,22,
-0x26bbe0,3,
-0x26bbf0,2,
-0x26bc00,5,
-0x26bc18,1,
-0x26bc54,6,
-0x26bc80,2,
-0x26bca4,1,
-0x26bcac,2,
-0x26be00,28,
-0x26be7c,13,
-0x26beb4,1,
-0x26bebc,10,
-0x26bf04,1,
-0x26bf0c,5,
-0x26bf24,1,
-0x26bf34,9,
-0x26bf60,6,
-0x26bf80,22,
-0x26bfe0,3,
-0x26bff0,2,
-0x26c008,2,
-0x26c014,11,
-0x26c044,1,
-0x26c04c,3,
-0x26c05c,1,
-0x26c064,1,
-0x26c07c,1,
-0x26c500,2,
-0x26c518,1,
-0x26c520,3,
-0x26c540,6,
-0x26c580,10,
-0x26c808,2,
-0x26c814,11,
-0x26c844,1,
-0x26c84c,3,
-0x26c85c,1,
-0x26c864,1,
-0x26c87c,1,
-0x26cd00,2,
-0x26cd18,1,
-0x26cd20,3,
-0x26cd40,6,
-0x26cd80,10,
-0x26d800,2,
-0x26d828,2,
-0x26d850,2,
-0x26d878,2,
-0x26d8a0,6,
-0x26d9ac,1,
-0x26d9d8,4,
-0x26da00,6,
-0x26da20,6,
-0x26da40,6,
-0x26da60,6,
-0x26da80,3,
-0x26dc00,6,
-0x26dc20,3,
-0x26dc40,2,
-0x26dc60,1,
-0x270000,5,
-0x270020,4,
-0x270034,17,
-0x270080,1,
-0x2700a0,6,
-0x270100,5,
-0x270120,4,
-0x270134,17,
-0x270180,1,
-0x2701a0,6,
-0x270200,5,
-0x270220,4,
-0x270234,17,
-0x270280,1,
-0x2702a0,6,
-0x270300,5,
-0x270320,4,
-0x270334,17,
-0x270380,1,
-0x2703a0,6,
-0x270500,6,
-0x27051c,7,
-0x270540,1,
-0x270c00,13,
-0x270c40,12,
-0x270c80,13,
-0x270cc0,12,
-0x270d00,6,
-0x270d20,6,
-0x270d80,14,
-0x270dc0,2,
-0x270e40,11,
-0x270e80,6,
-0x270ea0,6,
-0x271000,2,
-0x271010,5,
-0x271060,32,
-0x271100,8,
-0x271180,3,
-0x271190,2,
-0x27119c,5,
-0x271218,9,
-0x271240,3,
-0x271250,6,
-0x271280,1,
-0x271288,6,
-0x2712a4,1,
-0x271400,8,
-0x271424,2,
-0x271500,5,
-0x271520,4,
-0x271540,5,
-0x271560,4,
-0x271800,24,
-0x271864,5,
-0x271880,8,
-0x271900,13,
-0x271980,4,
-0x2719a0,6,
-0x271a40,1,
-0x271a60,1,
-0x271a68,23,
-0x271ac8,6,
-0x271b00,17,
-0x271b48,6,
-0x271b80,12,
-0x271c00,6,
-0x271c20,6,
-0x271c40,6,
-0x271c60,3,
-0x271d00,6,
-0x271d20,6,
-0x271d40,3,
-0x272000,5,
-0x272020,4,
-0x272034,17,
-0x272080,1,
-0x2720a0,6,
-0x272100,5,
-0x272120,4,
-0x272134,17,
-0x272180,1,
-0x2721a0,6,
-0x272200,5,
-0x272220,4,
-0x272234,17,
-0x272280,1,
-0x2722a0,6,
-0x272300,5,
-0x272320,4,
-0x272334,17,
-0x272380,1,
-0x2723a0,6,
-0x272500,6,
-0x27251c,7,
-0x272540,1,
-0x272c00,13,
-0x272c40,12,
-0x272c80,13,
-0x272cc0,12,
-0x272d00,6,
-0x272d20,6,
-0x272d80,14,
-0x272dc0,2,
-0x272e40,11,
-0x272e80,6,
-0x272ea0,6,
-0x273000,2,
-0x273010,5,
-0x273060,32,
-0x273100,8,
-0x273180,3,
-0x273190,2,
-0x27319c,5,
-0x273218,9,
-0x273240,3,
-0x273250,6,
-0x273280,1,
-0x273288,6,
-0x2732a4,1,
-0x273400,8,
-0x273424,2,
-0x273500,5,
-0x273520,4,
-0x273540,5,
-0x273560,4,
-0x273800,24,
-0x273864,5,
-0x273880,8,
-0x273900,13,
-0x273980,4,
-0x2739a0,6,
-0x273a40,1,
-0x273a60,1,
-0x273a68,23,
-0x273ac8,6,
-0x273b00,17,
-0x273b48,6,
-0x273b80,12,
-0x273c00,6,
-0x273c20,6,
-0x273c40,6,
-0x273c60,3,
-0x273d00,6,
-0x273d20,6,
-0x273d40,3,
-0x274000,29,
-0x274078,4,
-0x274090,2,
-0x2740a0,2,
-0x2740b0,3,
-0x2740c0,11,
-0x274100,14,
-0x274140,14,
-0x274180,61,
-0x274278,4,
-0x274290,2,
-0x2742a0,2,
-0x2742b0,3,
-0x2742c0,11,
-0x274300,14,
-0x274340,14,
-0x274380,61,
-0x274478,4,
-0x274490,2,
-0x2744a0,2,
-0x2744b0,3,
-0x2744c0,11,
-0x274500,14,
-0x274540,14,
-0x274580,61,
-0x274678,4,
-0x274690,2,
-0x2746a0,2,
-0x2746b0,3,
-0x2746c0,11,
-0x274700,14,
-0x274740,14,
-0x274780,62,
-0x27487c,1,
-0x274a00,8,
-0x274a24,15,
-0x274a64,23,
-0x274ac4,6,
-0x274b00,4,
-0x274b20,3,
-0x274c00,6,
-0x274c40,14,
-0x274c80,9,
-0x274d00,9,
-0x274d2c,1,
-0x274d40,3,
-0x274d60,1,
-0x274d80,3,
-0x274e00,2,
-0x274e0c,1,
-0x274e14,5,
-0x274e2c,1,
-0x274e34,5,
-0x274e4c,1,
-0x274e54,5,
-0x274e6c,1,
-0x274e74,5,
-0x274e8c,1,
-0x274e94,5,
-0x274eac,1,
-0x274eb4,3,
-0x275000,29,
-0x275078,4,
-0x275090,2,
-0x2750a0,2,
-0x2750b0,3,
-0x2750c0,11,
-0x275100,14,
-0x275140,14,
-0x275180,61,
-0x275278,4,
-0x275290,2,
-0x2752a0,2,
-0x2752b0,3,
-0x2752c0,11,
-0x275300,14,
-0x275340,14,
-0x275380,61,
-0x275478,4,
-0x275490,2,
-0x2754a0,2,
-0x2754b0,3,
-0x2754c0,11,
-0x275500,14,
-0x275540,14,
-0x275580,61,
-0x275678,4,
-0x275690,2,
-0x2756a0,2,
-0x2756b0,3,
-0x2756c0,11,
-0x275700,14,
-0x275740,14,
-0x275780,62,
-0x27587c,1,
-0x275a00,8,
-0x275a24,15,
-0x275a64,23,
-0x275ac4,6,
-0x275b00,4,
-0x275b20,3,
-0x275c00,6,
-0x275c40,14,
-0x275c80,9,
-0x275d00,9,
-0x275d2c,1,
-0x275d40,3,
-0x275d60,1,
-0x275d80,3,
-0x275e00,2,
-0x275e0c,1,
-0x275e14,5,
-0x275e2c,1,
-0x275e34,5,
-0x275e4c,1,
-0x275e54,5,
-0x275e6c,1,
-0x275e74,5,
-0x275e8c,1,
-0x275e94,5,
-0x275eac,1,
-0x275eb4,3,
-0x276000,14,
-0x276070,3,
-0x276080,6,
-0x276100,9,
-0x276204,1,
-0x27620c,6,
-0x276240,13,
-0x276280,16,
-0x276800,19,
-0x276850,10,
-0x276880,19,
-0x2768d0,10,
-0x276900,19,
-0x276950,10,
-0x276980,19,
-0x2769d0,10,
-0x276a00,19,
-0x276a50,10,
-0x276a80,19,
-0x276ad0,10,
-0x276b00,19,
-0x276b50,10,
-0x276b80,19,
-0x276bd0,10,
-0x276c00,19,
-0x276c60,6,
-0x276c84,1,
-0x276c94,8,
-0x276cb8,9,
-0x276ce0,4,
-0x277000,6,
-0x277020,3,
-0x277040,7,
-0x277060,6,
-0x277100,5,
-0x277138,1,
-0x277144,1,
-0x277150,2,
-0x278000,6,
-0x278020,3,
-0x278030,9,
-0x278100,6,
-0x278120,10,
-0x278150,8,
-0x278400,1,
-0x278428,1,
-0x278450,1,
-0x278478,1,
-0x2784a0,8,
-0x2785ac,1,
-0x2785d8,4,
-0x278600,6,
-0x278620,6,
-0x278640,3,
-0x278800,6,
-0x278820,3,
-0x278830,4,
-0x278858,2,
-0x278864,1,
-0x278874,3,
-0x278898,2,
-0x2788a4,1,
-0x2788b4,3,
-0x279000,6,
-0x279020,6,
-0x279040,3,
-0x279080,14,
-0x2790bc,1,
-0x2790c4,13,
-0x2790fc,1,
-0x279200,20,
-0x27925c,30,
-0x279300,24,
-0x279380,2,
-0x2793a0,1,
-0x2793c0,11,
-0x279404,3,
-0x279420,11,
-0x279460,3,
-0x279480,6,
-0x279500,6,
-0x279520,6,
-0x279540,1,
-0x279558,2,
-0x279600,17,
-0x279800,410,
-0x27a000,6,
-0x27a020,6,
-0x27a040,3,
-0x27a080,14,
-0x27a0bc,1,
-0x27a0c4,13,
-0x27a0fc,1,
-0x27a200,20,
-0x27a25c,30,
-0x27a300,24,
-0x27a380,2,
-0x27a3a0,1,
-0x27a3c0,11,
-0x27a404,3,
-0x27a420,11,
-0x27a460,3,
-0x27a480,6,
-0x27a500,6,
-0x27a520,6,
-0x27a540,1,
-0x27a558,2,
-0x27a600,17,
-0x27a800,410,
-0x27b000,4,
-0x27b020,25,
-0x27b088,8,
-0x27b100,4,
-0x27b120,25,
-0x27b188,8,
-0x27b200,34,
-0x27b300,37,
-0x27b400,16,
-0x27b464,1,
-0x27b474,3,
-0x27b500,6,
-0x27b520,2,
-0x27b530,9,
-0x27b570,10,
-0x27b5a0,2,
-0x27b5b0,9,
-0x27b5f0,4,
-0x27b620,7,
-0x27b640,16,
-0x27b700,6,
-0x27b720,6,
-0x27b740,6,
-0x27b760,6,
-0x27b780,3,
-0x27b800,5,
-0x27b818,1,
-0x27b854,6,
-0x27b880,2,
-0x27b8a4,1,
-0x27b8ac,2,
-0x27ba00,28,
-0x27ba7c,13,
-0x27bab4,1,
-0x27babc,10,
-0x27bb04,1,
-0x27bb0c,5,
-0x27bb24,1,
-0x27bb34,9,
-0x27bb60,6,
-0x27bb80,22,
-0x27bbe0,3,
-0x27bbf0,2,
-0x27bc00,5,
-0x27bc18,1,
-0x27bc54,6,
-0x27bc80,2,
-0x27bca4,1,
-0x27bcac,2,
-0x27be00,28,
-0x27be7c,13,
-0x27beb4,1,
-0x27bebc,10,
-0x27bf04,1,
-0x27bf0c,5,
-0x27bf24,1,
-0x27bf34,9,
-0x27bf60,6,
-0x27bf80,22,
-0x27bfe0,3,
-0x27bff0,2,
-0x27c008,2,
-0x27c014,11,
-0x27c044,1,
-0x27c04c,3,
-0x27c05c,1,
-0x27c064,1,
-0x27c07c,1,
-0x27c500,2,
-0x27c518,1,
-0x27c520,3,
-0x27c540,6,
-0x27c580,10,
-0x27c808,2,
-0x27c814,11,
-0x27c844,1,
-0x27c84c,3,
-0x27c85c,1,
-0x27c864,1,
-0x27c87c,1,
-0x27cd00,2,
-0x27cd18,1,
-0x27cd20,3,
-0x27cd40,6,
-0x27cd80,10,
-0x27d800,2,
-0x27d828,2,
-0x27d850,2,
-0x27d878,2,
-0x27d8a0,6,
-0x27d9ac,1,
-0x27d9d8,4,
-0x27da00,6,
-0x27da20,6,
-0x27da40,6,
-0x27da60,6,
-0x27da80,3,
-0x27dc00,6,
-0x27dc20,3,
-0x27dc40,2,
-0x27dc60,1,
-0x280000,5,
-0x280020,4,
-0x280034,17,
-0x280080,1,
-0x2800a0,6,
-0x280100,5,
-0x280120,4,
-0x280134,17,
-0x280180,1,
-0x2801a0,6,
-0x280200,5,
-0x280220,4,
-0x280234,17,
-0x280280,1,
-0x2802a0,6,
-0x280300,5,
-0x280320,4,
-0x280334,17,
-0x280380,1,
-0x2803a0,6,
-0x280500,6,
-0x28051c,7,
-0x280540,1,
-0x280c00,13,
-0x280c40,12,
-0x280c80,13,
-0x280cc0,12,
-0x280d00,6,
-0x280d20,6,
-0x280d80,14,
-0x280dc0,2,
-0x280e40,11,
-0x280e80,6,
-0x280ea0,6,
-0x281000,2,
-0x281010,5,
-0x281060,32,
-0x281100,8,
-0x281180,3,
-0x281190,2,
-0x28119c,5,
-0x281218,9,
-0x281240,3,
-0x281250,6,
-0x281280,1,
-0x281288,6,
-0x2812a4,1,
-0x281400,8,
-0x281424,2,
-0x281500,5,
-0x281520,4,
-0x281540,5,
-0x281560,4,
-0x281800,24,
-0x281864,5,
-0x281880,8,
-0x281900,13,
-0x281980,4,
-0x2819a0,6,
-0x281a40,1,
-0x281a60,1,
-0x281a68,23,
-0x281ac8,6,
-0x281b00,17,
-0x281b48,6,
-0x281b80,12,
-0x281c00,6,
-0x281c20,6,
-0x281c40,6,
-0x281c60,3,
-0x281d00,6,
-0x281d20,6,
-0x281d40,3,
-0x282000,5,
-0x282020,4,
-0x282034,17,
-0x282080,1,
-0x2820a0,6,
-0x282100,5,
-0x282120,4,
-0x282134,17,
-0x282180,1,
-0x2821a0,6,
-0x282200,5,
-0x282220,4,
-0x282234,17,
-0x282280,1,
-0x2822a0,6,
-0x282300,5,
-0x282320,4,
-0x282334,17,
-0x282380,1,
-0x2823a0,6,
-0x282500,6,
-0x28251c,7,
-0x282540,1,
-0x282c00,13,
-0x282c40,12,
-0x282c80,13,
-0x282cc0,12,
-0x282d00,6,
-0x282d20,6,
-0x282d80,14,
-0x282dc0,2,
-0x282e40,11,
-0x282e80,6,
-0x282ea0,6,
-0x283000,2,
-0x283010,5,
-0x283060,32,
-0x283100,8,
-0x283180,3,
-0x283190,2,
-0x28319c,5,
-0x283218,9,
-0x283240,3,
-0x283250,6,
-0x283280,1,
-0x283288,6,
-0x2832a4,1,
-0x283400,8,
-0x283424,2,
-0x283500,5,
-0x283520,4,
-0x283540,5,
-0x283560,4,
-0x283800,24,
-0x283864,5,
-0x283880,8,
-0x283900,13,
-0x283980,4,
-0x2839a0,6,
-0x283a40,1,
-0x283a60,1,
-0x283a68,23,
-0x283ac8,6,
-0x283b00,17,
-0x283b48,6,
-0x283b80,12,
-0x283c00,6,
-0x283c20,6,
-0x283c40,6,
-0x283c60,3,
-0x283d00,6,
-0x283d20,6,
-0x283d40,3,
-0x284000,29,
-0x284078,4,
-0x284090,2,
-0x2840a0,2,
-0x2840b0,3,
-0x2840c0,11,
-0x284100,14,
-0x284140,14,
-0x284180,61,
-0x284278,4,
-0x284290,2,
-0x2842a0,2,
-0x2842b0,3,
-0x2842c0,11,
-0x284300,14,
-0x284340,14,
-0x284380,61,
-0x284478,4,
-0x284490,2,
-0x2844a0,2,
-0x2844b0,3,
-0x2844c0,11,
-0x284500,14,
-0x284540,14,
-0x284580,61,
-0x284678,4,
-0x284690,2,
-0x2846a0,2,
-0x2846b0,3,
-0x2846c0,11,
-0x284700,14,
-0x284740,14,
-0x284780,62,
-0x28487c,1,
-0x284a00,8,
-0x284a24,15,
-0x284a64,23,
-0x284ac4,6,
-0x284b00,4,
-0x284b20,3,
-0x284c00,6,
-0x284c40,14,
-0x284c80,9,
-0x284d00,9,
-0x284d2c,1,
-0x284d40,3,
-0x284d60,1,
-0x284d80,3,
-0x284e00,2,
-0x284e0c,1,
-0x284e14,5,
-0x284e2c,1,
-0x284e34,5,
-0x284e4c,1,
-0x284e54,5,
-0x284e6c,1,
-0x284e74,5,
-0x284e8c,1,
-0x284e94,5,
-0x284eac,1,
-0x284eb4,3,
-0x285000,29,
-0x285078,4,
-0x285090,2,
-0x2850a0,2,
-0x2850b0,3,
-0x2850c0,11,
-0x285100,14,
-0x285140,14,
-0x285180,61,
-0x285278,4,
-0x285290,2,
-0x2852a0,2,
-0x2852b0,3,
-0x2852c0,11,
-0x285300,14,
-0x285340,14,
-0x285380,61,
-0x285478,4,
-0x285490,2,
-0x2854a0,2,
-0x2854b0,3,
-0x2854c0,11,
-0x285500,14,
-0x285540,14,
-0x285580,61,
-0x285678,4,
-0x285690,2,
-0x2856a0,2,
-0x2856b0,3,
-0x2856c0,11,
-0x285700,14,
-0x285740,14,
-0x285780,62,
-0x28587c,1,
-0x285a00,8,
-0x285a24,15,
-0x285a64,23,
-0x285ac4,6,
-0x285b00,4,
-0x285b20,3,
-0x285c00,6,
-0x285c40,14,
-0x285c80,9,
-0x285d00,9,
-0x285d2c,1,
-0x285d40,3,
-0x285d60,1,
-0x285d80,3,
-0x285e00,2,
-0x285e0c,1,
-0x285e14,5,
-0x285e2c,1,
-0x285e34,5,
-0x285e4c,1,
-0x285e54,5,
-0x285e6c,1,
-0x285e74,5,
-0x285e8c,1,
-0x285e94,5,
-0x285eac,1,
-0x285eb4,3,
-0x286000,14,
-0x286070,3,
-0x286080,6,
-0x286100,9,
-0x286204,1,
-0x28620c,6,
-0x286240,13,
-0x286280,16,
-0x286800,19,
-0x286850,10,
-0x286880,19,
-0x2868d0,10,
-0x286900,19,
-0x286950,10,
-0x286980,19,
-0x2869d0,10,
-0x286a00,19,
-0x286a50,10,
-0x286a80,19,
-0x286ad0,10,
-0x286b00,19,
-0x286b50,10,
-0x286b80,19,
-0x286bd0,10,
-0x286c00,19,
-0x286c60,6,
-0x286c84,1,
-0x286c94,8,
-0x286cb8,9,
-0x286ce0,4,
-0x287000,6,
-0x287020,3,
-0x287040,7,
-0x287060,6,
-0x287100,5,
-0x287138,1,
-0x287144,1,
-0x287150,2,
-0x288000,6,
-0x288020,3,
-0x288030,9,
-0x288100,6,
-0x288120,10,
-0x288150,8,
-0x288400,1,
-0x288428,1,
-0x288450,1,
-0x288478,1,
-0x2884a0,8,
-0x2885ac,1,
-0x2885d8,4,
-0x288600,6,
-0x288620,6,
-0x288640,3,
-0x288800,6,
-0x288820,3,
-0x288830,4,
-0x288858,2,
-0x288864,1,
-0x288874,3,
-0x288898,2,
-0x2888a4,1,
-0x2888b4,3,
-0x289000,6,
-0x289020,6,
-0x289040,3,
-0x289080,14,
-0x2890bc,1,
-0x2890c4,13,
-0x2890fc,1,
-0x289200,20,
-0x28925c,30,
-0x289300,24,
-0x289380,2,
-0x2893a0,1,
-0x2893c0,11,
-0x289404,3,
-0x289420,11,
-0x289460,3,
-0x289480,6,
-0x289500,6,
-0x289520,6,
-0x289540,1,
-0x289558,2,
-0x289600,17,
-0x289800,410,
-0x28a000,6,
-0x28a020,6,
-0x28a040,3,
-0x28a080,14,
-0x28a0bc,1,
-0x28a0c4,13,
-0x28a0fc,1,
-0x28a200,20,
-0x28a25c,30,
-0x28a300,24,
-0x28a380,2,
-0x28a3a0,1,
-0x28a3c0,11,
-0x28a404,3,
-0x28a420,11,
-0x28a460,3,
-0x28a480,6,
-0x28a500,6,
-0x28a520,6,
-0x28a540,1,
-0x28a558,2,
-0x28a600,17,
-0x28a800,410,
-0x28b000,4,
-0x28b020,25,
-0x28b088,8,
-0x28b100,4,
-0x28b120,25,
-0x28b188,8,
-0x28b200,34,
-0x28b300,37,
-0x28b400,16,
-0x28b464,1,
-0x28b474,3,
-0x28b500,6,
-0x28b520,2,
-0x28b530,9,
-0x28b570,10,
-0x28b5a0,2,
-0x28b5b0,9,
-0x28b5f0,4,
-0x28b620,7,
-0x28b640,16,
-0x28b700,6,
-0x28b720,6,
-0x28b740,6,
-0x28b760,6,
-0x28b780,3,
-0x28b800,5,
-0x28b818,1,
-0x28b854,6,
-0x28b880,2,
-0x28b8a4,1,
-0x28b8ac,2,
-0x28ba00,28,
-0x28ba7c,13,
-0x28bab4,1,
-0x28babc,10,
-0x28bb04,1,
-0x28bb0c,5,
-0x28bb24,1,
-0x28bb34,9,
-0x28bb60,6,
-0x28bb80,22,
-0x28bbe0,3,
-0x28bbf0,2,
-0x28bc00,5,
-0x28bc18,1,
-0x28bc54,6,
-0x28bc80,2,
-0x28bca4,1,
-0x28bcac,2,
-0x28be00,28,
-0x28be7c,13,
-0x28beb4,1,
-0x28bebc,10,
-0x28bf04,1,
-0x28bf0c,5,
-0x28bf24,1,
-0x28bf34,9,
-0x28bf60,6,
-0x28bf80,22,
-0x28bfe0,3,
-0x28bff0,2,
-0x28c008,2,
-0x28c014,11,
-0x28c044,1,
-0x28c04c,3,
-0x28c05c,1,
-0x28c064,1,
-0x28c07c,1,
-0x28c500,2,
-0x28c518,1,
-0x28c520,3,
-0x28c540,6,
-0x28c580,10,
-0x28c808,2,
-0x28c814,11,
-0x28c844,1,
-0x28c84c,3,
-0x28c85c,1,
-0x28c864,1,
-0x28c87c,1,
-0x28cd00,2,
-0x28cd18,1,
-0x28cd20,3,
-0x28cd40,6,
-0x28cd80,10,
-0x28d800,2,
-0x28d828,2,
-0x28d850,2,
-0x28d878,2,
-0x28d8a0,6,
-0x28d9ac,1,
-0x28d9d8,4,
-0x28da00,6,
-0x28da20,6,
-0x28da40,6,
-0x28da60,6,
-0x28da80,3,
-0x28dc00,6,
-0x28dc20,3,
-0x28dc40,2,
-0x28dc60,1,
-0x290000,5,
-0x290020,4,
-0x290034,17,
-0x290080,1,
-0x2900a0,6,
-0x290100,5,
-0x290120,4,
-0x290134,17,
-0x290180,1,
-0x2901a0,6,
-0x290200,5,
-0x290220,4,
-0x290234,17,
-0x290280,1,
-0x2902a0,6,
-0x290300,5,
-0x290320,4,
-0x290334,17,
-0x290380,1,
-0x2903a0,6,
-0x290500,6,
-0x29051c,7,
-0x290540,1,
-0x290c00,13,
-0x290c40,12,
-0x290c80,13,
-0x290cc0,12,
-0x290d00,6,
-0x290d20,6,
-0x290d80,14,
-0x290dc0,2,
-0x290e40,11,
-0x290e80,6,
-0x290ea0,6,
-0x291000,2,
-0x291010,5,
-0x291060,32,
-0x291100,8,
-0x291180,3,
-0x291190,2,
-0x29119c,5,
-0x291218,9,
-0x291240,3,
-0x291250,6,
-0x291280,1,
-0x291288,6,
-0x2912a4,1,
-0x291400,8,
-0x291424,2,
-0x291500,5,
-0x291520,4,
-0x291540,5,
-0x291560,4,
-0x291800,24,
-0x291864,5,
-0x291880,8,
-0x291900,13,
-0x291980,4,
-0x2919a0,6,
-0x291a40,1,
-0x291a60,1,
-0x291a68,23,
-0x291ac8,6,
-0x291b00,17,
-0x291b48,6,
-0x291b80,12,
-0x291c00,6,
-0x291c20,6,
-0x291c40,6,
-0x291c60,3,
-0x291d00,6,
-0x291d20,6,
-0x291d40,3,
-0x292000,5,
-0x292020,4,
-0x292034,17,
-0x292080,1,
-0x2920a0,6,
-0x292100,5,
-0x292120,4,
-0x292134,17,
-0x292180,1,
-0x2921a0,6,
-0x292200,5,
-0x292220,4,
-0x292234,17,
-0x292280,1,
-0x2922a0,6,
-0x292300,5,
-0x292320,4,
-0x292334,17,
-0x292380,1,
-0x2923a0,6,
-0x292500,6,
-0x29251c,7,
-0x292540,1,
-0x292c00,13,
-0x292c40,12,
-0x292c80,13,
-0x292cc0,12,
-0x292d00,6,
-0x292d20,6,
-0x292d80,14,
-0x292dc0,2,
-0x292e40,11,
-0x292e80,6,
-0x292ea0,6,
-0x293000,2,
-0x293010,5,
-0x293060,32,
-0x293100,8,
-0x293180,3,
-0x293190,2,
-0x29319c,5,
-0x293218,9,
-0x293240,3,
-0x293250,6,
-0x293280,1,
-0x293288,6,
-0x2932a4,1,
-0x293400,8,
-0x293424,2,
-0x293500,5,
-0x293520,4,
-0x293540,5,
-0x293560,4,
-0x293800,24,
-0x293864,5,
-0x293880,8,
-0x293900,13,
-0x293980,4,
-0x2939a0,6,
-0x293a40,1,
-0x293a60,1,
-0x293a68,23,
-0x293ac8,6,
-0x293b00,17,
-0x293b48,6,
-0x293b80,12,
-0x293c00,6,
-0x293c20,6,
-0x293c40,6,
-0x293c60,3,
-0x293d00,6,
-0x293d20,6,
-0x293d40,3,
-0x294000,29,
-0x294078,4,
-0x294090,2,
-0x2940a0,2,
-0x2940b0,3,
-0x2940c0,11,
-0x294100,14,
-0x294140,14,
-0x294180,61,
-0x294278,4,
-0x294290,2,
-0x2942a0,2,
-0x2942b0,3,
-0x2942c0,11,
-0x294300,14,
-0x294340,14,
-0x294380,61,
-0x294478,4,
-0x294490,2,
-0x2944a0,2,
-0x2944b0,3,
-0x2944c0,11,
-0x294500,14,
-0x294540,14,
-0x294580,61,
-0x294678,4,
-0x294690,2,
-0x2946a0,2,
-0x2946b0,3,
-0x2946c0,11,
-0x294700,14,
-0x294740,14,
-0x294780,62,
-0x29487c,1,
-0x294a00,8,
-0x294a24,15,
-0x294a64,23,
-0x294ac4,6,
-0x294b00,4,
-0x294b20,3,
-0x294c00,6,
-0x294c40,14,
-0x294c80,9,
-0x294d00,9,
-0x294d2c,1,
-0x294d40,3,
-0x294d60,1,
-0x294d80,3,
-0x294e00,2,
-0x294e0c,1,
-0x294e14,5,
-0x294e2c,1,
-0x294e34,5,
-0x294e4c,1,
-0x294e54,5,
-0x294e6c,1,
-0x294e74,5,
-0x294e8c,1,
-0x294e94,5,
-0x294eac,1,
-0x294eb4,3,
-0x295000,29,
-0x295078,4,
-0x295090,2,
-0x2950a0,2,
-0x2950b0,3,
-0x2950c0,11,
-0x295100,14,
-0x295140,14,
-0x295180,61,
-0x295278,4,
-0x295290,2,
-0x2952a0,2,
-0x2952b0,3,
-0x2952c0,11,
-0x295300,14,
-0x295340,14,
-0x295380,61,
-0x295478,4,
-0x295490,2,
-0x2954a0,2,
-0x2954b0,3,
-0x2954c0,11,
-0x295500,14,
-0x295540,14,
-0x295580,61,
-0x295678,4,
-0x295690,2,
-0x2956a0,2,
-0x2956b0,3,
-0x2956c0,11,
-0x295700,14,
-0x295740,14,
-0x295780,62,
-0x29587c,1,
-0x295a00,8,
-0x295a24,15,
-0x295a64,23,
-0x295ac4,6,
-0x295b00,4,
-0x295b20,3,
-0x295c00,6,
-0x295c40,14,
-0x295c80,9,
-0x295d00,9,
-0x295d2c,1,
-0x295d40,3,
-0x295d60,1,
-0x295d80,3,
-0x295e00,2,
-0x295e0c,1,
-0x295e14,5,
-0x295e2c,1,
-0x295e34,5,
-0x295e4c,1,
-0x295e54,5,
-0x295e6c,1,
-0x295e74,5,
-0x295e8c,1,
-0x295e94,5,
-0x295eac,1,
-0x295eb4,3,
-0x296000,14,
-0x296070,3,
-0x296080,6,
-0x296100,9,
-0x296204,1,
-0x29620c,6,
-0x296240,13,
-0x296280,16,
-0x296800,19,
-0x296850,10,
-0x296880,19,
-0x2968d0,10,
-0x296900,19,
-0x296950,10,
-0x296980,19,
-0x2969d0,10,
-0x296a00,19,
-0x296a50,10,
-0x296a80,19,
-0x296ad0,10,
-0x296b00,19,
-0x296b50,10,
-0x296b80,19,
-0x296bd0,10,
-0x296c00,19,
-0x296c60,6,
-0x296c84,1,
-0x296c94,8,
-0x296cb8,9,
-0x296ce0,4,
-0x297000,6,
-0x297020,3,
-0x297040,7,
-0x297060,6,
-0x297100,5,
-0x297138,1,
-0x297144,1,
-0x297150,2,
-0x298000,6,
-0x298020,3,
-0x298030,9,
-0x298100,6,
-0x298120,10,
-0x298150,8,
-0x298400,1,
-0x298428,1,
-0x298450,1,
-0x298478,1,
-0x2984a0,8,
-0x2985ac,1,
-0x2985d8,4,
-0x298600,6,
-0x298620,6,
-0x298640,3,
-0x298800,6,
-0x298820,3,
-0x298830,4,
-0x298858,2,
-0x298864,1,
-0x298874,3,
-0x298898,2,
-0x2988a4,1,
-0x2988b4,3,
-0x299000,6,
-0x299020,6,
-0x299040,3,
-0x299080,14,
-0x2990bc,1,
-0x2990c4,13,
-0x2990fc,1,
-0x299200,20,
-0x29925c,30,
-0x299300,24,
-0x299380,2,
-0x2993a0,1,
-0x2993c0,11,
-0x299404,3,
-0x299420,11,
-0x299460,3,
-0x299480,6,
-0x299500,6,
-0x299520,6,
-0x299540,1,
-0x299558,2,
-0x299600,17,
-0x299800,410,
-0x29a000,6,
-0x29a020,6,
-0x29a040,3,
-0x29a080,14,
-0x29a0bc,1,
-0x29a0c4,13,
-0x29a0fc,1,
-0x29a200,20,
-0x29a25c,30,
-0x29a300,24,
-0x29a380,2,
-0x29a3a0,1,
-0x29a3c0,11,
-0x29a404,3,
-0x29a420,11,
-0x29a460,3,
-0x29a480,6,
-0x29a500,6,
-0x29a520,6,
-0x29a540,1,
-0x29a558,2,
-0x29a600,17,
-0x29a800,410,
-0x29b000,4,
-0x29b020,25,
-0x29b088,8,
-0x29b100,4,
-0x29b120,25,
-0x29b188,8,
-0x29b200,34,
-0x29b300,37,
-0x29b400,16,
-0x29b464,1,
-0x29b474,3,
-0x29b500,6,
-0x29b520,2,
-0x29b530,9,
-0x29b570,10,
-0x29b5a0,2,
-0x29b5b0,9,
-0x29b5f0,4,
-0x29b620,7,
-0x29b640,16,
-0x29b700,6,
-0x29b720,6,
-0x29b740,6,
-0x29b760,6,
-0x29b780,3,
-0x29b800,5,
-0x29b818,1,
-0x29b854,6,
-0x29b880,2,
-0x29b8a4,1,
-0x29b8ac,2,
-0x29ba00,28,
-0x29ba7c,13,
-0x29bab4,1,
-0x29babc,10,
-0x29bb04,1,
-0x29bb0c,5,
-0x29bb24,1,
-0x29bb34,9,
-0x29bb60,6,
-0x29bb80,22,
-0x29bbe0,3,
-0x29bbf0,2,
-0x29bc00,5,
-0x29bc18,1,
-0x29bc54,6,
-0x29bc80,2,
-0x29bca4,1,
-0x29bcac,2,
-0x29be00,28,
-0x29be7c,13,
-0x29beb4,1,
-0x29bebc,10,
-0x29bf04,1,
-0x29bf0c,5,
-0x29bf24,1,
-0x29bf34,9,
-0x29bf60,6,
-0x29bf80,22,
-0x29bfe0,3,
-0x29bff0,2,
-0x29c008,2,
-0x29c014,11,
-0x29c044,1,
-0x29c04c,3,
-0x29c05c,1,
-0x29c064,1,
-0x29c07c,1,
-0x29c500,2,
-0x29c518,1,
-0x29c520,3,
-0x29c540,6,
-0x29c580,10,
-0x29c808,2,
-0x29c814,11,
-0x29c844,1,
-0x29c84c,3,
-0x29c85c,1,
-0x29c864,1,
-0x29c87c,1,
-0x29cd00,2,
-0x29cd18,1,
-0x29cd20,3,
-0x29cd40,6,
-0x29cd80,10,
-0x29d800,2,
-0x29d828,2,
-0x29d850,2,
-0x29d878,2,
-0x29d8a0,6,
-0x29d9ac,1,
-0x29d9d8,4,
-0x29da00,6,
-0x29da20,6,
-0x29da40,6,
-0x29da60,6,
-0x29da80,3,
-0x29dc00,6,
-0x29dc20,3,
-0x29dc40,2,
-0x29dc60,1,
-0x2a0000,5,
-0x2a0020,4,
-0x2a0034,17,
-0x2a0080,1,
-0x2a00a0,6,
-0x2a0100,5,
-0x2a0120,4,
-0x2a0134,17,
-0x2a0180,1,
-0x2a01a0,6,
-0x2a0200,5,
-0x2a0220,4,
-0x2a0234,17,
-0x2a0280,1,
-0x2a02a0,6,
-0x2a0300,5,
-0x2a0320,4,
-0x2a0334,17,
-0x2a0380,1,
-0x2a03a0,6,
-0x2a0500,6,
-0x2a051c,7,
-0x2a0540,1,
-0x2a0c00,13,
-0x2a0c40,12,
-0x2a0c80,13,
-0x2a0cc0,12,
-0x2a0d00,6,
-0x2a0d20,6,
-0x2a0d80,14,
-0x2a0dc0,2,
-0x2a0e40,11,
-0x2a0e80,6,
-0x2a0ea0,6,
-0x2a1000,2,
-0x2a1010,5,
-0x2a1060,32,
-0x2a1100,8,
-0x2a1180,3,
-0x2a1190,2,
-0x2a119c,5,
-0x2a1218,9,
-0x2a1240,3,
-0x2a1250,6,
-0x2a1280,1,
-0x2a1288,6,
-0x2a12a4,1,
-0x2a1400,8,
-0x2a1424,2,
-0x2a1500,5,
-0x2a1520,4,
-0x2a1540,5,
-0x2a1560,4,
-0x2a1800,24,
-0x2a1864,5,
-0x2a1880,8,
-0x2a1900,13,
-0x2a1980,4,
-0x2a19a0,6,
-0x2a1a40,1,
-0x2a1a60,1,
-0x2a1a68,23,
-0x2a1ac8,6,
-0x2a1b00,17,
-0x2a1b48,6,
-0x2a1b80,12,
-0x2a1c00,6,
-0x2a1c20,6,
-0x2a1c40,6,
-0x2a1c60,3,
-0x2a1d00,6,
-0x2a1d20,6,
-0x2a1d40,3,
-0x2a2000,5,
-0x2a2020,4,
-0x2a2034,17,
-0x2a2080,1,
-0x2a20a0,6,
-0x2a2100,5,
-0x2a2120,4,
-0x2a2134,17,
-0x2a2180,1,
-0x2a21a0,6,
-0x2a2200,5,
-0x2a2220,4,
-0x2a2234,17,
-0x2a2280,1,
-0x2a22a0,6,
-0x2a2300,5,
-0x2a2320,4,
-0x2a2334,17,
-0x2a2380,1,
-0x2a23a0,6,
-0x2a2500,6,
-0x2a251c,7,
-0x2a2540,1,
-0x2a2c00,13,
-0x2a2c40,12,
-0x2a2c80,13,
-0x2a2cc0,12,
-0x2a2d00,6,
-0x2a2d20,6,
-0x2a2d80,14,
-0x2a2dc0,2,
-0x2a2e40,11,
-0x2a2e80,6,
-0x2a2ea0,6,
-0x2a3000,2,
-0x2a3010,5,
-0x2a3060,32,
-0x2a3100,8,
-0x2a3180,3,
-0x2a3190,2,
-0x2a319c,5,
-0x2a3218,9,
-0x2a3240,3,
-0x2a3250,6,
-0x2a3280,1,
-0x2a3288,6,
-0x2a32a4,1,
-0x2a3400,8,
-0x2a3424,2,
-0x2a3500,5,
-0x2a3520,4,
-0x2a3540,5,
-0x2a3560,4,
-0x2a3800,24,
-0x2a3864,5,
-0x2a3880,8,
-0x2a3900,13,
-0x2a3980,4,
-0x2a39a0,6,
-0x2a3a40,1,
-0x2a3a60,1,
-0x2a3a68,23,
-0x2a3ac8,6,
-0x2a3b00,17,
-0x2a3b48,6,
-0x2a3b80,12,
-0x2a3c00,6,
-0x2a3c20,6,
-0x2a3c40,6,
-0x2a3c60,3,
-0x2a3d00,6,
-0x2a3d20,6,
-0x2a3d40,3,
-0x2a4000,29,
-0x2a4078,4,
-0x2a4090,2,
-0x2a40a0,2,
-0x2a40b0,3,
-0x2a40c0,11,
-0x2a4100,14,
-0x2a4140,14,
-0x2a4180,61,
-0x2a4278,4,
-0x2a4290,2,
-0x2a42a0,2,
-0x2a42b0,3,
-0x2a42c0,11,
-0x2a4300,14,
-0x2a4340,14,
-0x2a4380,61,
-0x2a4478,4,
-0x2a4490,2,
-0x2a44a0,2,
-0x2a44b0,3,
-0x2a44c0,11,
-0x2a4500,14,
-0x2a4540,14,
-0x2a4580,61,
-0x2a4678,4,
-0x2a4690,2,
-0x2a46a0,2,
-0x2a46b0,3,
-0x2a46c0,11,
-0x2a4700,14,
-0x2a4740,14,
-0x2a4780,62,
-0x2a487c,1,
-0x2a4a00,8,
-0x2a4a24,15,
-0x2a4a64,23,
-0x2a4ac4,6,
-0x2a4b00,4,
-0x2a4b20,3,
-0x2a4c00,6,
-0x2a4c40,14,
-0x2a4c80,9,
-0x2a4d00,9,
-0x2a4d2c,1,
-0x2a4d40,3,
-0x2a4d60,1,
-0x2a4d80,3,
-0x2a4e00,2,
-0x2a4e0c,1,
-0x2a4e14,5,
-0x2a4e2c,1,
-0x2a4e34,5,
-0x2a4e4c,1,
-0x2a4e54,5,
-0x2a4e6c,1,
-0x2a4e74,5,
-0x2a4e8c,1,
-0x2a4e94,5,
-0x2a4eac,1,
-0x2a4eb4,3,
-0x2a5000,29,
-0x2a5078,4,
-0x2a5090,2,
-0x2a50a0,2,
-0x2a50b0,3,
-0x2a50c0,11,
-0x2a5100,14,
-0x2a5140,14,
-0x2a5180,61,
-0x2a5278,4,
-0x2a5290,2,
-0x2a52a0,2,
-0x2a52b0,3,
-0x2a52c0,11,
-0x2a5300,14,
-0x2a5340,14,
-0x2a5380,61,
-0x2a5478,4,
-0x2a5490,2,
-0x2a54a0,2,
-0x2a54b0,3,
-0x2a54c0,11,
-0x2a5500,14,
-0x2a5540,14,
-0x2a5580,61,
-0x2a5678,4,
-0x2a5690,2,
-0x2a56a0,2,
-0x2a56b0,3,
-0x2a56c0,11,
-0x2a5700,14,
-0x2a5740,14,
-0x2a5780,62,
-0x2a587c,1,
-0x2a5a00,8,
-0x2a5a24,15,
-0x2a5a64,23,
-0x2a5ac4,6,
-0x2a5b00,4,
-0x2a5b20,3,
-0x2a5c00,6,
-0x2a5c40,14,
-0x2a5c80,9,
-0x2a5d00,9,
-0x2a5d2c,1,
-0x2a5d40,3,
-0x2a5d60,1,
-0x2a5d80,3,
-0x2a5e00,2,
-0x2a5e0c,1,
-0x2a5e14,5,
-0x2a5e2c,1,
-0x2a5e34,5,
-0x2a5e4c,1,
-0x2a5e54,5,
-0x2a5e6c,1,
-0x2a5e74,5,
-0x2a5e8c,1,
-0x2a5e94,5,
-0x2a5eac,1,
-0x2a5eb4,3,
-0x2a6000,14,
-0x2a6070,3,
-0x2a6080,6,
-0x2a6100,9,
-0x2a6204,1,
-0x2a620c,6,
-0x2a6240,13,
-0x2a6280,16,
-0x2a6800,19,
-0x2a6850,10,
-0x2a6880,19,
-0x2a68d0,10,
-0x2a6900,19,
-0x2a6950,10,
-0x2a6980,19,
-0x2a69d0,10,
-0x2a6a00,19,
-0x2a6a50,10,
-0x2a6a80,19,
-0x2a6ad0,10,
-0x2a6b00,19,
-0x2a6b50,10,
-0x2a6b80,19,
-0x2a6bd0,10,
-0x2a6c00,19,
-0x2a6c60,6,
-0x2a6c84,1,
-0x2a6c94,8,
-0x2a6cb8,9,
-0x2a6ce0,4,
-0x2a7000,6,
-0x2a7020,3,
-0x2a7040,7,
-0x2a7060,6,
-0x2a7100,5,
-0x2a7138,1,
-0x2a7144,1,
-0x2a7150,2,
-0x2a8000,6,
-0x2a8020,3,
-0x2a8030,9,
-0x2a8100,6,
-0x2a8120,10,
-0x2a8150,8,
-0x2a8400,1,
-0x2a8428,1,
-0x2a8450,1,
-0x2a8478,1,
-0x2a84a0,8,
-0x2a85ac,1,
-0x2a85d8,4,
-0x2a8600,6,
-0x2a8620,6,
-0x2a8640,3,
-0x2a8800,6,
-0x2a8820,3,
-0x2a8830,4,
-0x2a8858,2,
-0x2a8864,1,
-0x2a8874,3,
-0x2a8898,2,
-0x2a88a4,1,
-0x2a88b4,3,
-0x2a9000,6,
-0x2a9020,6,
-0x2a9040,3,
-0x2a9080,14,
-0x2a90bc,1,
-0x2a90c4,13,
-0x2a90fc,1,
-0x2a9200,20,
-0x2a925c,30,
-0x2a9300,24,
-0x2a9380,2,
-0x2a93a0,1,
-0x2a93c0,11,
-0x2a9404,3,
-0x2a9420,11,
-0x2a9460,3,
-0x2a9480,6,
-0x2a9500,6,
-0x2a9520,6,
-0x2a9540,1,
-0x2a9558,2,
-0x2a9600,17,
-0x2a9800,410,
-0x2aa000,6,
-0x2aa020,6,
-0x2aa040,3,
-0x2aa080,14,
-0x2aa0bc,1,
-0x2aa0c4,13,
-0x2aa0fc,1,
-0x2aa200,20,
-0x2aa25c,30,
-0x2aa300,24,
-0x2aa380,2,
-0x2aa3a0,1,
-0x2aa3c0,11,
-0x2aa404,3,
-0x2aa420,11,
-0x2aa460,3,
-0x2aa480,6,
-0x2aa500,6,
-0x2aa520,6,
-0x2aa540,1,
-0x2aa558,2,
-0x2aa600,17,
-0x2aa800,410,
-0x2ab000,4,
-0x2ab020,25,
-0x2ab088,8,
-0x2ab100,4,
-0x2ab120,25,
-0x2ab188,8,
-0x2ab200,34,
-0x2ab300,37,
-0x2ab400,16,
-0x2ab464,1,
-0x2ab474,3,
-0x2ab500,6,
-0x2ab520,2,
-0x2ab530,9,
-0x2ab570,10,
-0x2ab5a0,2,
-0x2ab5b0,9,
-0x2ab5f0,4,
-0x2ab620,7,
-0x2ab640,16,
-0x2ab700,6,
-0x2ab720,6,
-0x2ab740,6,
-0x2ab760,6,
-0x2ab780,3,
-0x2ab800,5,
-0x2ab818,1,
-0x2ab854,6,
-0x2ab880,2,
-0x2ab8a4,1,
-0x2ab8ac,2,
-0x2aba00,28,
-0x2aba7c,13,
-0x2abab4,1,
-0x2ababc,10,
-0x2abb04,1,
-0x2abb0c,5,
-0x2abb24,1,
-0x2abb34,9,
-0x2abb60,6,
-0x2abb80,22,
-0x2abbe0,3,
-0x2abbf0,2,
-0x2abc00,5,
-0x2abc18,1,
-0x2abc54,6,
-0x2abc80,2,
-0x2abca4,1,
-0x2abcac,2,
-0x2abe00,28,
-0x2abe7c,13,
-0x2abeb4,1,
-0x2abebc,10,
-0x2abf04,1,
-0x2abf0c,5,
-0x2abf24,1,
-0x2abf34,9,
-0x2abf60,6,
-0x2abf80,22,
-0x2abfe0,3,
-0x2abff0,2,
-0x2ac008,2,
-0x2ac014,11,
-0x2ac044,1,
-0x2ac04c,3,
-0x2ac05c,1,
-0x2ac064,1,
-0x2ac07c,1,
-0x2ac500,2,
-0x2ac518,1,
-0x2ac520,3,
-0x2ac540,6,
-0x2ac580,10,
-0x2ac808,2,
-0x2ac814,11,
-0x2ac844,1,
-0x2ac84c,3,
-0x2ac85c,1,
-0x2ac864,1,
-0x2ac87c,1,
-0x2acd00,2,
-0x2acd18,1,
-0x2acd20,3,
-0x2acd40,6,
-0x2acd80,10,
-0x2ad800,2,
-0x2ad828,2,
-0x2ad850,2,
-0x2ad878,2,
-0x2ad8a0,6,
-0x2ad9ac,1,
-0x2ad9d8,4,
-0x2ada00,6,
-0x2ada20,6,
-0x2ada40,6,
-0x2ada60,6,
-0x2ada80,3,
-0x2adc00,6,
-0x2adc20,3,
-0x2adc40,2,
-0x2adc60,1,
-0x2b0000,5,
-0x2b0020,4,
-0x2b0034,17,
-0x2b0080,1,
-0x2b00a0,6,
-0x2b0100,5,
-0x2b0120,4,
-0x2b0134,17,
-0x2b0180,1,
-0x2b01a0,6,
-0x2b0200,5,
-0x2b0220,4,
-0x2b0234,17,
-0x2b0280,1,
-0x2b02a0,6,
-0x2b0300,5,
-0x2b0320,4,
-0x2b0334,17,
-0x2b0380,1,
-0x2b03a0,6,
-0x2b0500,6,
-0x2b051c,7,
-0x2b0540,1,
-0x2b0c00,13,
-0x2b0c40,12,
-0x2b0c80,13,
-0x2b0cc0,12,
-0x2b0d00,6,
-0x2b0d20,6,
-0x2b0d80,14,
-0x2b0dc0,2,
-0x2b0e40,11,
-0x2b0e80,6,
-0x2b0ea0,6,
-0x2b1000,2,
-0x2b1010,5,
-0x2b1060,32,
-0x2b1100,8,
-0x2b1180,3,
-0x2b1190,2,
-0x2b119c,5,
-0x2b1218,9,
-0x2b1240,3,
-0x2b1250,6,
-0x2b1280,1,
-0x2b1288,6,
-0x2b12a4,1,
-0x2b1400,8,
-0x2b1424,2,
-0x2b1500,5,
-0x2b1520,4,
-0x2b1540,5,
-0x2b1560,4,
-0x2b1800,24,
-0x2b1864,5,
-0x2b1880,8,
-0x2b1900,13,
-0x2b1980,4,
-0x2b19a0,6,
-0x2b1a40,1,
-0x2b1a60,1,
-0x2b1a68,23,
-0x2b1ac8,6,
-0x2b1b00,17,
-0x2b1b48,6,
-0x2b1b80,12,
-0x2b1c00,6,
-0x2b1c20,6,
-0x2b1c40,6,
-0x2b1c60,3,
-0x2b1d00,6,
-0x2b1d20,6,
-0x2b1d40,3,
-0x2b2000,5,
-0x2b2020,4,
-0x2b2034,17,
-0x2b2080,1,
-0x2b20a0,6,
-0x2b2100,5,
-0x2b2120,4,
-0x2b2134,17,
-0x2b2180,1,
-0x2b21a0,6,
-0x2b2200,5,
-0x2b2220,4,
-0x2b2234,17,
-0x2b2280,1,
-0x2b22a0,6,
-0x2b2300,5,
-0x2b2320,4,
-0x2b2334,17,
-0x2b2380,1,
-0x2b23a0,6,
-0x2b2500,6,
-0x2b251c,7,
-0x2b2540,1,
-0x2b2c00,13,
-0x2b2c40,12,
-0x2b2c80,13,
-0x2b2cc0,12,
-0x2b2d00,6,
-0x2b2d20,6,
-0x2b2d80,14,
-0x2b2dc0,2,
-0x2b2e40,11,
-0x2b2e80,6,
-0x2b2ea0,6,
-0x2b3000,2,
-0x2b3010,5,
-0x2b3060,32,
-0x2b3100,8,
-0x2b3180,3,
-0x2b3190,2,
-0x2b319c,5,
-0x2b3218,9,
-0x2b3240,3,
-0x2b3250,6,
-0x2b3280,1,
-0x2b3288,6,
-0x2b32a4,1,
-0x2b3400,8,
-0x2b3424,2,
-0x2b3500,5,
-0x2b3520,4,
-0x2b3540,5,
-0x2b3560,4,
-0x2b3800,24,
-0x2b3864,5,
-0x2b3880,8,
-0x2b3900,13,
-0x2b3980,4,
-0x2b39a0,6,
-0x2b3a40,1,
-0x2b3a60,1,
-0x2b3a68,23,
-0x2b3ac8,6,
-0x2b3b00,17,
-0x2b3b48,6,
-0x2b3b80,12,
-0x2b3c00,6,
-0x2b3c20,6,
-0x2b3c40,6,
-0x2b3c60,3,
-0x2b3d00,6,
-0x2b3d20,6,
-0x2b3d40,3,
-0x2b4000,29,
-0x2b4078,4,
-0x2b4090,2,
-0x2b40a0,2,
-0x2b40b0,3,
-0x2b40c0,11,
-0x2b4100,14,
-0x2b4140,14,
-0x2b4180,61,
-0x2b4278,4,
-0x2b4290,2,
-0x2b42a0,2,
-0x2b42b0,3,
-0x2b42c0,11,
-0x2b4300,14,
-0x2b4340,14,
-0x2b4380,61,
-0x2b4478,4,
-0x2b4490,2,
-0x2b44a0,2,
-0x2b44b0,3,
-0x2b44c0,11,
-0x2b4500,14,
-0x2b4540,14,
-0x2b4580,61,
-0x2b4678,4,
-0x2b4690,2,
-0x2b46a0,2,
-0x2b46b0,3,
-0x2b46c0,11,
-0x2b4700,14,
-0x2b4740,14,
-0x2b4780,62,
-0x2b487c,1,
-0x2b4a00,8,
-0x2b4a24,15,
-0x2b4a64,23,
-0x2b4ac4,6,
-0x2b4b00,4,
-0x2b4b20,3,
-0x2b4c00,6,
-0x2b4c40,14,
-0x2b4c80,9,
-0x2b4d00,9,
-0x2b4d2c,1,
-0x2b4d40,3,
-0x2b4d60,1,
-0x2b4d80,3,
-0x2b4e00,2,
-0x2b4e0c,1,
-0x2b4e14,5,
-0x2b4e2c,1,
-0x2b4e34,5,
-0x2b4e4c,1,
-0x2b4e54,5,
-0x2b4e6c,1,
-0x2b4e74,5,
-0x2b4e8c,1,
-0x2b4e94,5,
-0x2b4eac,1,
-0x2b4eb4,3,
-0x2b5000,29,
-0x2b5078,4,
-0x2b5090,2,
-0x2b50a0,2,
-0x2b50b0,3,
-0x2b50c0,11,
-0x2b5100,14,
-0x2b5140,14,
-0x2b5180,61,
-0x2b5278,4,
-0x2b5290,2,
-0x2b52a0,2,
-0x2b52b0,3,
-0x2b52c0,11,
-0x2b5300,14,
-0x2b5340,14,
-0x2b5380,61,
-0x2b5478,4,
-0x2b5490,2,
-0x2b54a0,2,
-0x2b54b0,3,
-0x2b54c0,11,
-0x2b5500,14,
-0x2b5540,14,
-0x2b5580,61,
-0x2b5678,4,
-0x2b5690,2,
-0x2b56a0,2,
-0x2b56b0,3,
-0x2b56c0,11,
-0x2b5700,14,
-0x2b5740,14,
-0x2b5780,62,
-0x2b587c,1,
-0x2b5a00,8,
-0x2b5a24,15,
-0x2b5a64,23,
-0x2b5ac4,6,
-0x2b5b00,4,
-0x2b5b20,3,
-0x2b5c00,6,
-0x2b5c40,14,
-0x2b5c80,9,
-0x2b5d00,9,
-0x2b5d2c,1,
-0x2b5d40,3,
-0x2b5d60,1,
-0x2b5d80,3,
-0x2b5e00,2,
-0x2b5e0c,1,
-0x2b5e14,5,
-0x2b5e2c,1,
-0x2b5e34,5,
-0x2b5e4c,1,
-0x2b5e54,5,
-0x2b5e6c,1,
-0x2b5e74,5,
-0x2b5e8c,1,
-0x2b5e94,5,
-0x2b5eac,1,
-0x2b5eb4,3,
-0x2b6000,14,
-0x2b6070,3,
-0x2b6080,6,
-0x2b6100,9,
-0x2b6204,1,
-0x2b620c,6,
-0x2b6240,13,
-0x2b6280,16,
-0x2b6800,19,
-0x2b6850,10,
-0x2b6880,19,
-0x2b68d0,10,
-0x2b6900,19,
-0x2b6950,10,
-0x2b6980,19,
-0x2b69d0,10,
-0x2b6a00,19,
-0x2b6a50,10,
-0x2b6a80,19,
-0x2b6ad0,10,
-0x2b6b00,19,
-0x2b6b50,10,
-0x2b6b80,19,
-0x2b6bd0,10,
-0x2b6c00,19,
-0x2b6c60,6,
-0x2b6c84,1,
-0x2b6c94,8,
-0x2b6cb8,9,
-0x2b6ce0,4,
-0x2b7000,6,
-0x2b7020,3,
-0x2b7040,7,
-0x2b7060,6,
-0x2b7100,5,
-0x2b7138,1,
-0x2b7144,1,
-0x2b7150,2,
-0x2b8000,6,
-0x2b8020,3,
-0x2b8030,9,
-0x2b8100,6,
-0x2b8120,10,
-0x2b8150,8,
-0x2b8400,1,
-0x2b8428,1,
-0x2b8450,1,
-0x2b8478,1,
-0x2b84a0,8,
-0x2b85ac,1,
-0x2b85d8,4,
-0x2b8600,6,
-0x2b8620,6,
-0x2b8640,3,
-0x2b8800,6,
-0x2b8820,3,
-0x2b8830,4,
-0x2b8858,2,
-0x2b8864,1,
-0x2b8874,3,
-0x2b8898,2,
-0x2b88a4,1,
-0x2b88b4,3,
-0x2b9000,6,
-0x2b9020,6,
-0x2b9040,3,
-0x2b9080,14,
-0x2b90bc,1,
-0x2b90c4,13,
-0x2b90fc,1,
-0x2b9200,20,
-0x2b925c,30,
-0x2b9300,24,
-0x2b9380,2,
-0x2b93a0,1,
-0x2b93c0,11,
-0x2b9404,3,
-0x2b9420,11,
-0x2b9460,3,
-0x2b9480,6,
-0x2b9500,6,
-0x2b9520,6,
-0x2b9540,1,
-0x2b9558,2,
-0x2b9600,17,
-0x2b9800,410,
-0x2ba000,6,
-0x2ba020,6,
-0x2ba040,3,
-0x2ba080,14,
-0x2ba0bc,1,
-0x2ba0c4,13,
-0x2ba0fc,1,
-0x2ba200,20,
-0x2ba25c,30,
-0x2ba300,24,
-0x2ba380,2,
-0x2ba3a0,1,
-0x2ba3c0,11,
-0x2ba404,3,
-0x2ba420,11,
-0x2ba460,3,
-0x2ba480,6,
-0x2ba500,6,
-0x2ba520,6,
-0x2ba540,1,
-0x2ba558,2,
-0x2ba600,17,
-0x2ba800,410,
-0x2bb000,4,
-0x2bb020,25,
-0x2bb088,8,
-0x2bb100,4,
-0x2bb120,25,
-0x2bb188,8,
-0x2bb200,34,
-0x2bb300,37,
-0x2bb400,16,
-0x2bb464,1,
-0x2bb474,3,
-0x2bb500,6,
-0x2bb520,2,
-0x2bb530,9,
-0x2bb570,10,
-0x2bb5a0,2,
-0x2bb5b0,9,
-0x2bb5f0,4,
-0x2bb620,7,
-0x2bb640,16,
-0x2bb700,6,
-0x2bb720,6,
-0x2bb740,6,
-0x2bb760,6,
-0x2bb780,3,
-0x2bb800,5,
-0x2bb818,1,
-0x2bb854,6,
-0x2bb880,2,
-0x2bb8a4,1,
-0x2bb8ac,2,
-0x2bba00,28,
-0x2bba7c,13,
-0x2bbab4,1,
-0x2bbabc,10,
-0x2bbb04,1,
-0x2bbb0c,5,
-0x2bbb24,1,
-0x2bbb34,9,
-0x2bbb60,6,
-0x2bbb80,22,
-0x2bbbe0,3,
-0x2bbbf0,2,
-0x2bbc00,5,
-0x2bbc18,1,
-0x2bbc54,6,
-0x2bbc80,2,
-0x2bbca4,1,
-0x2bbcac,2,
-0x2bbe00,28,
-0x2bbe7c,13,
-0x2bbeb4,1,
-0x2bbebc,10,
-0x2bbf04,1,
-0x2bbf0c,5,
-0x2bbf24,1,
-0x2bbf34,9,
-0x2bbf60,6,
-0x2bbf80,22,
-0x2bbfe0,3,
-0x2bbff0,2,
-0x2bc008,2,
-0x2bc014,11,
-0x2bc044,1,
-0x2bc04c,3,
-0x2bc05c,1,
-0x2bc064,1,
-0x2bc07c,1,
-0x2bc500,2,
-0x2bc518,1,
-0x2bc520,3,
-0x2bc540,6,
-0x2bc580,10,
-0x2bc808,2,
-0x2bc814,11,
-0x2bc844,1,
-0x2bc84c,3,
-0x2bc85c,1,
-0x2bc864,1,
-0x2bc87c,1,
-0x2bcd00,2,
-0x2bcd18,1,
-0x2bcd20,3,
-0x2bcd40,6,
-0x2bcd80,10,
-0x2bd800,2,
-0x2bd828,2,
-0x2bd850,2,
-0x2bd878,2,
-0x2bd8a0,6,
-0x2bd9ac,1,
-0x2bd9d8,4,
-0x2bda00,6,
-0x2bda20,6,
-0x2bda40,6,
-0x2bda60,6,
-0x2bda80,3,
-0x2bdc00,6,
-0x2bdc20,3,
-0x2bdc40,2,
-0x2bdc60,1,
-0x2c0000,5,
-0x2c0020,4,
-0x2c0034,17,
-0x2c0080,1,
-0x2c00a0,6,
-0x2c0100,5,
-0x2c0120,4,
-0x2c0134,17,
-0x2c0180,1,
-0x2c01a0,6,
-0x2c0200,5,
-0x2c0220,4,
-0x2c0234,17,
-0x2c0280,1,
-0x2c02a0,6,
-0x2c0300,5,
-0x2c0320,4,
-0x2c0334,17,
-0x2c0380,1,
-0x2c03a0,6,
-0x2c0500,6,
-0x2c051c,7,
-0x2c0540,1,
-0x2c0c00,13,
-0x2c0c40,12,
-0x2c0c80,13,
-0x2c0cc0,12,
-0x2c0d00,6,
-0x2c0d20,6,
-0x2c0d80,14,
-0x2c0dc0,2,
-0x2c0e40,11,
-0x2c0e80,6,
-0x2c0ea0,6,
-0x2c1000,2,
-0x2c1010,5,
-0x2c1060,32,
-0x2c1100,8,
-0x2c1180,3,
-0x2c1190,2,
-0x2c119c,5,
-0x2c1218,9,
-0x2c1240,3,
-0x2c1250,6,
-0x2c1280,1,
-0x2c1288,6,
-0x2c12a4,1,
-0x2c1400,8,
-0x2c1424,2,
-0x2c1500,5,
-0x2c1520,4,
-0x2c1540,5,
-0x2c1560,4,
-0x2c1800,24,
-0x2c1864,5,
-0x2c1880,8,
-0x2c1900,13,
-0x2c1980,4,
-0x2c19a0,6,
-0x2c1a40,1,
-0x2c1a60,1,
-0x2c1a68,23,
-0x2c1ac8,6,
-0x2c1b00,17,
-0x2c1b48,6,
-0x2c1b80,12,
-0x2c1c00,6,
-0x2c1c20,6,
-0x2c1c40,6,
-0x2c1c60,3,
-0x2c1d00,6,
-0x2c1d20,6,
-0x2c1d40,3,
-0x2c2000,5,
-0x2c2020,4,
-0x2c2034,17,
-0x2c2080,1,
-0x2c20a0,6,
-0x2c2100,5,
-0x2c2120,4,
-0x2c2134,17,
-0x2c2180,1,
-0x2c21a0,6,
-0x2c2200,5,
-0x2c2220,4,
-0x2c2234,17,
-0x2c2280,1,
-0x2c22a0,6,
-0x2c2300,5,
-0x2c2320,4,
-0x2c2334,17,
-0x2c2380,1,
-0x2c23a0,6,
-0x2c2500,6,
-0x2c251c,7,
-0x2c2540,1,
-0x2c2c00,13,
-0x2c2c40,12,
-0x2c2c80,13,
-0x2c2cc0,12,
-0x2c2d00,6,
-0x2c2d20,6,
-0x2c2d80,14,
-0x2c2dc0,2,
-0x2c2e40,11,
-0x2c2e80,6,
-0x2c2ea0,6,
-0x2c3000,2,
-0x2c3010,5,
-0x2c3060,32,
-0x2c3100,8,
-0x2c3180,3,
-0x2c3190,2,
-0x2c319c,5,
-0x2c3218,9,
-0x2c3240,3,
-0x2c3250,6,
-0x2c3280,1,
-0x2c3288,6,
-0x2c32a4,1,
-0x2c3400,8,
-0x2c3424,2,
-0x2c3500,5,
-0x2c3520,4,
-0x2c3540,5,
-0x2c3560,4,
-0x2c3800,24,
-0x2c3864,5,
-0x2c3880,8,
-0x2c3900,13,
-0x2c3980,4,
-0x2c39a0,6,
-0x2c3a40,1,
-0x2c3a60,1,
-0x2c3a68,23,
-0x2c3ac8,6,
-0x2c3b00,17,
-0x2c3b48,6,
-0x2c3b80,12,
-0x2c3c00,6,
-0x2c3c20,6,
-0x2c3c40,6,
-0x2c3c60,3,
-0x2c3d00,6,
-0x2c3d20,6,
-0x2c3d40,3,
-0x2c4000,29,
-0x2c4078,4,
-0x2c4090,2,
-0x2c40a0,2,
-0x2c40b0,3,
-0x2c40c0,11,
-0x2c4100,14,
-0x2c4140,14,
-0x2c4180,61,
-0x2c4278,4,
-0x2c4290,2,
-0x2c42a0,2,
-0x2c42b0,3,
-0x2c42c0,11,
-0x2c4300,14,
-0x2c4340,14,
-0x2c4380,61,
-0x2c4478,4,
-0x2c4490,2,
-0x2c44a0,2,
-0x2c44b0,3,
-0x2c44c0,11,
-0x2c4500,14,
-0x2c4540,14,
-0x2c4580,61,
-0x2c4678,4,
-0x2c4690,2,
-0x2c46a0,2,
-0x2c46b0,3,
-0x2c46c0,11,
-0x2c4700,14,
-0x2c4740,14,
-0x2c4780,62,
-0x2c487c,1,
-0x2c4a00,8,
-0x2c4a24,15,
-0x2c4a64,23,
-0x2c4ac4,6,
-0x2c4b00,4,
-0x2c4b20,3,
-0x2c4c00,6,
-0x2c4c40,14,
-0x2c4c80,9,
-0x2c4d00,9,
-0x2c4d2c,1,
-0x2c4d40,3,
-0x2c4d60,1,
-0x2c4d80,3,
-0x2c4e00,2,
-0x2c4e0c,1,
-0x2c4e14,5,
-0x2c4e2c,1,
-0x2c4e34,5,
-0x2c4e4c,1,
-0x2c4e54,5,
-0x2c4e6c,1,
-0x2c4e74,5,
-0x2c4e8c,1,
-0x2c4e94,5,
-0x2c4eac,1,
-0x2c4eb4,3,
-0x2c5000,29,
-0x2c5078,4,
-0x2c5090,2,
-0x2c50a0,2,
-0x2c50b0,3,
-0x2c50c0,11,
-0x2c5100,14,
-0x2c5140,14,
-0x2c5180,61,
-0x2c5278,4,
-0x2c5290,2,
-0x2c52a0,2,
-0x2c52b0,3,
-0x2c52c0,11,
-0x2c5300,14,
-0x2c5340,14,
-0x2c5380,61,
-0x2c5478,4,
-0x2c5490,2,
-0x2c54a0,2,
-0x2c54b0,3,
-0x2c54c0,11,
-0x2c5500,14,
-0x2c5540,14,
-0x2c5580,61,
-0x2c5678,4,
-0x2c5690,2,
-0x2c56a0,2,
-0x2c56b0,3,
-0x2c56c0,11,
-0x2c5700,14,
-0x2c5740,14,
-0x2c5780,62,
-0x2c587c,1,
-0x2c5a00,8,
-0x2c5a24,15,
-0x2c5a64,23,
-0x2c5ac4,6,
-0x2c5b00,4,
-0x2c5b20,3,
-0x2c5c00,6,
-0x2c5c40,14,
-0x2c5c80,9,
-0x2c5d00,9,
-0x2c5d2c,1,
-0x2c5d40,3,
-0x2c5d60,1,
-0x2c5d80,3,
-0x2c5e00,2,
-0x2c5e0c,1,
-0x2c5e14,5,
-0x2c5e2c,1,
-0x2c5e34,5,
-0x2c5e4c,1,
-0x2c5e54,5,
-0x2c5e6c,1,
-0x2c5e74,5,
-0x2c5e8c,1,
-0x2c5e94,5,
-0x2c5eac,1,
-0x2c5eb4,3,
-0x2c6000,14,
-0x2c6070,3,
-0x2c6080,6,
-0x2c6100,9,
-0x2c6204,1,
-0x2c620c,6,
-0x2c6240,13,
-0x2c6280,16,
-0x2c6800,19,
-0x2c6850,10,
-0x2c6880,19,
-0x2c68d0,10,
-0x2c6900,19,
-0x2c6950,10,
-0x2c6980,19,
-0x2c69d0,10,
-0x2c6a00,19,
-0x2c6a50,10,
-0x2c6a80,19,
-0x2c6ad0,10,
-0x2c6b00,19,
-0x2c6b50,10,
-0x2c6b80,19,
-0x2c6bd0,10,
-0x2c6c00,19,
-0x2c6c60,6,
-0x2c6c84,1,
-0x2c6c94,8,
-0x2c6cb8,9,
-0x2c6ce0,4,
-0x2c7000,6,
-0x2c7020,3,
-0x2c7040,7,
-0x2c7060,6,
-0x2c7100,5,
-0x2c7138,1,
-0x2c7144,1,
-0x2c7150,2,
-0x2c8000,6,
-0x2c8020,3,
-0x2c8030,9,
-0x2c8100,6,
-0x2c8120,10,
-0x2c8150,8,
-0x2c8400,1,
-0x2c8428,1,
-0x2c8450,1,
-0x2c8478,1,
-0x2c84a0,8,
-0x2c85ac,1,
-0x2c85d8,4,
-0x2c8600,6,
-0x2c8620,6,
-0x2c8640,3,
-0x2c8800,6,
-0x2c8820,3,
-0x2c8830,4,
-0x2c8858,2,
-0x2c8864,1,
-0x2c8874,3,
-0x2c8898,2,
-0x2c88a4,1,
-0x2c88b4,3,
-0x2c9000,6,
-0x2c9020,6,
-0x2c9040,3,
-0x2c9080,14,
-0x2c90bc,1,
-0x2c90c4,13,
-0x2c90fc,1,
-0x2c9200,20,
-0x2c925c,30,
-0x2c9300,24,
-0x2c9380,2,
-0x2c93a0,1,
-0x2c93c0,11,
-0x2c9404,3,
-0x2c9420,11,
-0x2c9460,3,
-0x2c9480,6,
-0x2c9500,6,
-0x2c9520,6,
-0x2c9540,1,
-0x2c9558,2,
-0x2c9600,17,
-0x2c9800,410,
-0x2ca000,6,
-0x2ca020,6,
-0x2ca040,3,
-0x2ca080,14,
-0x2ca0bc,1,
-0x2ca0c4,13,
-0x2ca0fc,1,
-0x2ca200,20,
-0x2ca25c,30,
-0x2ca300,24,
-0x2ca380,2,
-0x2ca3a0,1,
-0x2ca3c0,11,
-0x2ca404,3,
-0x2ca420,11,
-0x2ca460,3,
-0x2ca480,6,
-0x2ca500,6,
-0x2ca520,6,
-0x2ca540,1,
-0x2ca558,2,
-0x2ca600,17,
-0x2ca800,410,
-0x2cb000,4,
-0x2cb020,25,
-0x2cb088,8,
-0x2cb100,4,
-0x2cb120,25,
-0x2cb188,8,
-0x2cb200,34,
-0x2cb300,37,
-0x2cb400,16,
-0x2cb464,1,
-0x2cb474,3,
-0x2cb500,6,
-0x2cb520,2,
-0x2cb530,9,
-0x2cb570,10,
-0x2cb5a0,2,
-0x2cb5b0,9,
-0x2cb5f0,4,
-0x2cb620,7,
-0x2cb640,16,
-0x2cb700,6,
-0x2cb720,6,
-0x2cb740,6,
-0x2cb760,6,
-0x2cb780,3,
-0x2cb800,5,
-0x2cb818,1,
-0x2cb854,6,
-0x2cb880,2,
-0x2cb8a4,1,
-0x2cb8ac,2,
-0x2cba00,28,
-0x2cba7c,13,
-0x2cbab4,1,
-0x2cbabc,10,
-0x2cbb04,1,
-0x2cbb0c,5,
-0x2cbb24,1,
-0x2cbb34,9,
-0x2cbb60,6,
-0x2cbb80,22,
-0x2cbbe0,3,
-0x2cbbf0,2,
-0x2cbc00,5,
-0x2cbc18,1,
-0x2cbc54,6,
-0x2cbc80,2,
-0x2cbca4,1,
-0x2cbcac,2,
-0x2cbe00,28,
-0x2cbe7c,13,
-0x2cbeb4,1,
-0x2cbebc,10,
-0x2cbf04,1,
-0x2cbf0c,5,
-0x2cbf24,1,
-0x2cbf34,9,
-0x2cbf60,6,
-0x2cbf80,22,
-0x2cbfe0,3,
-0x2cbff0,2,
-0x2cc008,2,
-0x2cc014,11,
-0x2cc044,1,
-0x2cc04c,3,
-0x2cc05c,1,
-0x2cc064,1,
-0x2cc07c,1,
-0x2cc500,2,
-0x2cc518,1,
-0x2cc520,3,
-0x2cc540,6,
-0x2cc580,10,
-0x2cc808,2,
-0x2cc814,11,
-0x2cc844,1,
-0x2cc84c,3,
-0x2cc85c,1,
-0x2cc864,1,
-0x2cc87c,1,
-0x2ccd00,2,
-0x2ccd18,1,
-0x2ccd20,3,
-0x2ccd40,6,
-0x2ccd80,10,
-0x2cd800,2,
-0x2cd828,2,
-0x2cd850,2,
-0x2cd878,2,
-0x2cd8a0,6,
-0x2cd9ac,1,
-0x2cd9d8,4,
-0x2cda00,6,
-0x2cda20,6,
-0x2cda40,6,
-0x2cda60,6,
-0x2cda80,3,
-0x2cdc00,6,
-0x2cdc20,3,
-0x2cdc40,2,
-0x2cdc60,1,
-0x2d0000,5,
-0x2d0020,4,
-0x2d0034,17,
-0x2d0080,1,
-0x2d00a0,6,
-0x2d0100,5,
-0x2d0120,4,
-0x2d0134,17,
-0x2d0180,1,
-0x2d01a0,6,
-0x2d0200,5,
-0x2d0220,4,
-0x2d0234,17,
-0x2d0280,1,
-0x2d02a0,6,
-0x2d0300,5,
-0x2d0320,4,
-0x2d0334,17,
-0x2d0380,1,
-0x2d03a0,6,
-0x2d0500,6,
-0x2d051c,7,
-0x2d0540,1,
-0x2d0c00,13,
-0x2d0c40,12,
-0x2d0c80,13,
-0x2d0cc0,12,
-0x2d0d00,6,
-0x2d0d20,6,
-0x2d0d80,14,
-0x2d0dc0,2,
-0x2d0e40,11,
-0x2d0e80,6,
-0x2d0ea0,6,
-0x2d1000,2,
-0x2d1010,5,
-0x2d1060,32,
-0x2d1100,8,
-0x2d1180,3,
-0x2d1190,2,
-0x2d119c,5,
-0x2d1218,9,
-0x2d1240,3,
-0x2d1250,6,
-0x2d1280,1,
-0x2d1288,6,
-0x2d12a4,1,
-0x2d1400,8,
-0x2d1424,2,
-0x2d1500,5,
-0x2d1520,4,
-0x2d1540,5,
-0x2d1560,4,
-0x2d1800,24,
-0x2d1864,5,
-0x2d1880,8,
-0x2d1900,13,
-0x2d1980,4,
-0x2d19a0,6,
-0x2d1a40,1,
-0x2d1a60,1,
-0x2d1a68,23,
-0x2d1ac8,6,
-0x2d1b00,17,
-0x2d1b48,6,
-0x2d1b80,12,
-0x2d1c00,6,
-0x2d1c20,6,
-0x2d1c40,6,
-0x2d1c60,3,
-0x2d1d00,6,
-0x2d1d20,6,
-0x2d1d40,3,
-0x2d2000,5,
-0x2d2020,4,
-0x2d2034,17,
-0x2d2080,1,
-0x2d20a0,6,
-0x2d2100,5,
-0x2d2120,4,
-0x2d2134,17,
-0x2d2180,1,
-0x2d21a0,6,
-0x2d2200,5,
-0x2d2220,4,
-0x2d2234,17,
-0x2d2280,1,
-0x2d22a0,6,
-0x2d2300,5,
-0x2d2320,4,
-0x2d2334,17,
-0x2d2380,1,
-0x2d23a0,6,
-0x2d2500,6,
-0x2d251c,7,
-0x2d2540,1,
-0x2d2c00,13,
-0x2d2c40,12,
-0x2d2c80,13,
-0x2d2cc0,12,
-0x2d2d00,6,
-0x2d2d20,6,
-0x2d2d80,14,
-0x2d2dc0,2,
-0x2d2e40,11,
-0x2d2e80,6,
-0x2d2ea0,6,
-0x2d3000,2,
-0x2d3010,5,
-0x2d3060,32,
-0x2d3100,8,
-0x2d3180,3,
-0x2d3190,2,
-0x2d319c,5,
-0x2d3218,9,
-0x2d3240,3,
-0x2d3250,6,
-0x2d3280,1,
-0x2d3288,6,
-0x2d32a4,1,
-0x2d3400,8,
-0x2d3424,2,
-0x2d3500,5,
-0x2d3520,4,
-0x2d3540,5,
-0x2d3560,4,
-0x2d3800,24,
-0x2d3864,5,
-0x2d3880,8,
-0x2d3900,13,
-0x2d3980,4,
-0x2d39a0,6,
-0x2d3a40,1,
-0x2d3a60,1,
-0x2d3a68,23,
-0x2d3ac8,6,
-0x2d3b00,17,
-0x2d3b48,6,
-0x2d3b80,12,
-0x2d3c00,6,
-0x2d3c20,6,
-0x2d3c40,6,
-0x2d3c60,3,
-0x2d3d00,6,
-0x2d3d20,6,
-0x2d3d40,3,
-0x2d4000,29,
-0x2d4078,4,
-0x2d4090,2,
-0x2d40a0,2,
-0x2d40b0,3,
-0x2d40c0,11,
-0x2d4100,14,
-0x2d4140,14,
-0x2d4180,61,
-0x2d4278,4,
-0x2d4290,2,
-0x2d42a0,2,
-0x2d42b0,3,
-0x2d42c0,11,
-0x2d4300,14,
-0x2d4340,14,
-0x2d4380,61,
-0x2d4478,4,
-0x2d4490,2,
-0x2d44a0,2,
-0x2d44b0,3,
-0x2d44c0,11,
-0x2d4500,14,
-0x2d4540,14,
-0x2d4580,61,
-0x2d4678,4,
-0x2d4690,2,
-0x2d46a0,2,
-0x2d46b0,3,
-0x2d46c0,11,
-0x2d4700,14,
-0x2d4740,14,
-0x2d4780,62,
-0x2d487c,1,
-0x2d4a00,8,
-0x2d4a24,15,
-0x2d4a64,23,
-0x2d4ac4,6,
-0x2d4b00,4,
-0x2d4b20,3,
-0x2d4c00,6,
-0x2d4c40,14,
-0x2d4c80,9,
-0x2d4d00,9,
-0x2d4d2c,1,
-0x2d4d40,3,
-0x2d4d60,1,
-0x2d4d80,3,
-0x2d4e00,2,
-0x2d4e0c,1,
-0x2d4e14,5,
-0x2d4e2c,1,
-0x2d4e34,5,
-0x2d4e4c,1,
-0x2d4e54,5,
-0x2d4e6c,1,
-0x2d4e74,5,
-0x2d4e8c,1,
-0x2d4e94,5,
-0x2d4eac,1,
-0x2d4eb4,3,
-0x2d5000,29,
-0x2d5078,4,
-0x2d5090,2,
-0x2d50a0,2,
-0x2d50b0,3,
-0x2d50c0,11,
-0x2d5100,14,
-0x2d5140,14,
-0x2d5180,61,
-0x2d5278,4,
-0x2d5290,2,
-0x2d52a0,2,
-0x2d52b0,3,
-0x2d52c0,11,
-0x2d5300,14,
-0x2d5340,14,
-0x2d5380,61,
-0x2d5478,4,
-0x2d5490,2,
-0x2d54a0,2,
-0x2d54b0,3,
-0x2d54c0,11,
-0x2d5500,14,
-0x2d5540,14,
-0x2d5580,61,
-0x2d5678,4,
-0x2d5690,2,
-0x2d56a0,2,
-0x2d56b0,3,
-0x2d56c0,11,
-0x2d5700,14,
-0x2d5740,14,
-0x2d5780,62,
-0x2d587c,1,
-0x2d5a00,8,
-0x2d5a24,15,
-0x2d5a64,23,
-0x2d5ac4,6,
-0x2d5b00,4,
-0x2d5b20,3,
-0x2d5c00,6,
-0x2d5c40,14,
-0x2d5c80,9,
-0x2d5d00,9,
-0x2d5d2c,1,
-0x2d5d40,3,
-0x2d5d60,1,
-0x2d5d80,3,
-0x2d5e00,2,
-0x2d5e0c,1,
-0x2d5e14,5,
-0x2d5e2c,1,
-0x2d5e34,5,
-0x2d5e4c,1,
-0x2d5e54,5,
-0x2d5e6c,1,
-0x2d5e74,5,
-0x2d5e8c,1,
-0x2d5e94,5,
-0x2d5eac,1,
-0x2d5eb4,3,
-0x2d6000,14,
-0x2d6070,3,
-0x2d6080,6,
-0x2d6100,9,
-0x2d6204,1,
-0x2d620c,6,
-0x2d6240,13,
-0x2d6280,16,
-0x2d6400,8,
-0x2d6424,15,
-0x2d6464,15,
-0x2d64a4,15,
-0x2d64e4,23,
-0x2d6544,6,
-0x2d6580,10,
-0x2d65ac,1,
-0x2d65b4,5,
-0x2d65cc,1,
-0x2d65d4,5,
-0x2d65ec,1,
-0x2d65f4,13,
-0x2d6680,7,
-0x2d66a0,5,
-0x2d66c0,5,
-0x2d66e0,4,
-0x2d6800,19,
-0x2d6850,10,
-0x2d6880,19,
-0x2d68d0,10,
-0x2d6900,19,
-0x2d6950,10,
-0x2d6980,19,
-0x2d69d0,10,
-0x2d6a00,19,
-0x2d6a50,10,
-0x2d6a80,19,
-0x2d6ad0,10,
-0x2d6b00,19,
-0x2d6b50,10,
-0x2d6b80,19,
-0x2d6bd0,10,
-0x2d6c00,19,
-0x2d6c60,6,
-0x2d6c84,1,
-0x2d6c94,8,
-0x2d6cb8,9,
-0x2d6ce0,4,
-0x2d7000,6,
-0x2d7020,3,
-0x2d7040,7,
-0x2d7060,6,
-0x2d7100,5,
-0x2d7138,1,
-0x2d7144,1,
-0x2d7150,2,
-0x2d8000,6,
-0x2d8020,3,
-0x2d8030,9,
-0x2d8100,6,
-0x2d8120,10,
-0x2d8150,8,
-0x2d8400,1,
-0x2d8428,1,
-0x2d8450,1,
-0x2d8478,1,
-0x2d84a0,8,
-0x2d85ac,1,
-0x2d85d8,4,
-0x2d8600,6,
-0x2d8620,6,
-0x2d8640,3,
-0x2d8800,6,
-0x2d8820,3,
-0x2d8830,4,
-0x2d8858,2,
-0x2d8864,1,
-0x2d8874,3,
-0x2d8898,2,
-0x2d88a4,1,
-0x2d88b4,3,
-0x2d9000,6,
-0x2d9020,6,
-0x2d9040,3,
-0x2d9080,14,
-0x2d90bc,1,
-0x2d90c4,13,
-0x2d90fc,1,
-0x2d9200,20,
-0x2d925c,30,
-0x2d9300,24,
-0x2d9380,2,
-0x2d93a0,1,
-0x2d93c0,11,
-0x2d9404,3,
-0x2d9420,11,
-0x2d9460,3,
-0x2d9480,6,
-0x2d9500,6,
-0x2d9520,6,
-0x2d9540,1,
-0x2d9558,2,
-0x2d9600,17,
-0x2d9800,410,
-0x2da000,6,
-0x2da020,6,
-0x2da040,3,
-0x2da080,14,
-0x2da0bc,1,
-0x2da0c4,13,
-0x2da0fc,1,
-0x2da200,20,
-0x2da25c,30,
-0x2da300,24,
-0x2da380,2,
-0x2da3a0,1,
-0x2da3c0,11,
-0x2da404,3,
-0x2da420,11,
-0x2da460,3,
-0x2da480,6,
-0x2da500,6,
-0x2da520,6,
-0x2da540,1,
-0x2da558,2,
-0x2da600,17,
-0x2da800,410,
-0x2db000,4,
-0x2db020,25,
-0x2db088,8,
-0x2db100,4,
-0x2db120,25,
-0x2db188,8,
-0x2db200,34,
-0x2db300,37,
-0x2db400,16,
-0x2db464,1,
-0x2db474,3,
-0x2db500,6,
-0x2db520,2,
-0x2db530,9,
-0x2db570,10,
-0x2db5a0,2,
-0x2db5b0,9,
-0x2db5f0,4,
-0x2db620,7,
-0x2db640,16,
-0x2db700,6,
-0x2db720,6,
-0x2db740,6,
-0x2db760,6,
-0x2db780,3,
-0x2db800,5,
-0x2db818,1,
-0x2db854,6,
-0x2db880,2,
-0x2db8a4,1,
-0x2db8ac,2,
-0x2dba00,28,
-0x2dba7c,13,
-0x2dbab4,1,
-0x2dbabc,10,
-0x2dbb04,1,
-0x2dbb0c,5,
-0x2dbb24,1,
-0x2dbb34,9,
-0x2dbb60,6,
-0x2dbb80,22,
-0x2dbbe0,3,
-0x2dbbf0,2,
-0x2dbc00,5,
-0x2dbc18,1,
-0x2dbc54,6,
-0x2dbc80,2,
-0x2dbca4,1,
-0x2dbcac,2,
-0x2dbe00,28,
-0x2dbe7c,13,
-0x2dbeb4,1,
-0x2dbebc,10,
-0x2dbf04,1,
-0x2dbf0c,5,
-0x2dbf24,1,
-0x2dbf34,9,
-0x2dbf60,6,
-0x2dbf80,22,
-0x2dbfe0,3,
-0x2dbff0,2,
-0x2dc008,2,
-0x2dc014,11,
-0x2dc044,1,
-0x2dc04c,3,
-0x2dc05c,1,
-0x2dc064,1,
-0x2dc07c,1,
-0x2dc500,2,
-0x2dc518,1,
-0x2dc520,3,
-0x2dc540,6,
-0x2dc580,10,
-0x2dc808,2,
-0x2dc814,11,
-0x2dc844,1,
-0x2dc84c,3,
-0x2dc85c,1,
-0x2dc864,1,
-0x2dc87c,1,
-0x2dcd00,2,
-0x2dcd18,1,
-0x2dcd20,3,
-0x2dcd40,6,
-0x2dcd80,10,
-0x2dd800,2,
-0x2dd828,2,
-0x2dd850,2,
-0x2dd878,2,
-0x2dd8a0,6,
-0x2dd9ac,1,
-0x2dd9d8,4,
-0x2dda00,6,
-0x2dda20,6,
-0x2dda40,6,
-0x2dda60,6,
-0x2dda80,3,
-0x2ddc00,6,
-0x2ddc20,3,
-0x2ddc40,2,
-0x2ddc60,1,
-0x2e0000,5,
-0x2e0020,4,
-0x2e0034,17,
-0x2e0080,1,
-0x2e00a0,6,
-0x2e0100,5,
-0x2e0120,4,
-0x2e0134,17,
-0x2e0180,1,
-0x2e01a0,6,
-0x2e0200,5,
-0x2e0220,4,
-0x2e0234,17,
-0x2e0280,1,
-0x2e02a0,6,
-0x2e0300,5,
-0x2e0320,4,
-0x2e0334,17,
-0x2e0380,1,
-0x2e03a0,6,
-0x2e0500,6,
-0x2e051c,7,
-0x2e0540,1,
-0x2e0c00,13,
-0x2e0c40,12,
-0x2e0c80,13,
-0x2e0cc0,12,
-0x2e0d00,6,
-0x2e0d20,6,
-0x2e0d80,14,
-0x2e0dc0,2,
-0x2e0e40,11,
-0x2e0e80,6,
-0x2e0ea0,6,
-0x2e1000,2,
-0x2e1010,5,
-0x2e1060,32,
-0x2e1100,8,
-0x2e1180,3,
-0x2e1190,2,
-0x2e119c,5,
-0x2e1218,9,
-0x2e1240,3,
-0x2e1250,6,
-0x2e1280,1,
-0x2e1288,6,
-0x2e12a4,1,
-0x2e1400,8,
-0x2e1424,2,
-0x2e1500,5,
-0x2e1520,4,
-0x2e1540,5,
-0x2e1560,4,
-0x2e1800,24,
-0x2e1864,5,
-0x2e1880,8,
-0x2e1900,13,
-0x2e1980,4,
-0x2e19a0,6,
-0x2e1a40,1,
-0x2e1a60,1,
-0x2e1a68,23,
-0x2e1ac8,6,
-0x2e1b00,17,
-0x2e1b48,6,
-0x2e1b80,12,
-0x2e1c00,6,
-0x2e1c20,6,
-0x2e1c40,6,
-0x2e1c60,3,
-0x2e1d00,6,
-0x2e1d20,6,
-0x2e1d40,3,
-0x2e2000,5,
-0x2e2020,4,
-0x2e2034,17,
-0x2e2080,1,
-0x2e20a0,6,
-0x2e2100,5,
-0x2e2120,4,
-0x2e2134,17,
-0x2e2180,1,
-0x2e21a0,6,
-0x2e2200,5,
-0x2e2220,4,
-0x2e2234,17,
-0x2e2280,1,
-0x2e22a0,6,
-0x2e2300,5,
-0x2e2320,4,
-0x2e2334,17,
-0x2e2380,1,
-0x2e23a0,6,
-0x2e2500,6,
-0x2e251c,7,
-0x2e2540,1,
-0x2e2c00,13,
-0x2e2c40,12,
-0x2e2c80,13,
-0x2e2cc0,12,
-0x2e2d00,6,
-0x2e2d20,6,
-0x2e2d80,14,
-0x2e2dc0,2,
-0x2e2e40,11,
-0x2e2e80,6,
-0x2e2ea0,6,
-0x2e3000,2,
-0x2e3010,5,
-0x2e3060,32,
-0x2e3100,8,
-0x2e3180,3,
-0x2e3190,2,
-0x2e319c,5,
-0x2e3218,9,
-0x2e3240,3,
-0x2e3250,6,
-0x2e3280,1,
-0x2e3288,6,
-0x2e32a4,1,
-0x2e3400,8,
-0x2e3424,2,
-0x2e3500,5,
-0x2e3520,4,
-0x2e3540,5,
-0x2e3560,4,
-0x2e3800,24,
-0x2e3864,5,
-0x2e3880,8,
-0x2e3900,13,
-0x2e3980,4,
-0x2e39a0,6,
-0x2e3a40,1,
-0x2e3a60,1,
-0x2e3a68,23,
-0x2e3ac8,6,
-0x2e3b00,17,
-0x2e3b48,6,
-0x2e3b80,12,
-0x2e3c00,6,
-0x2e3c20,6,
-0x2e3c40,6,
-0x2e3c60,3,
-0x2e3d00,6,
-0x2e3d20,6,
-0x2e3d40,3,
-0x2e4000,29,
-0x2e4078,4,
-0x2e4090,2,
-0x2e40a0,2,
-0x2e40b0,3,
-0x2e40c0,11,
-0x2e4100,14,
-0x2e4140,14,
-0x2e4180,61,
-0x2e4278,4,
-0x2e4290,2,
-0x2e42a0,2,
-0x2e42b0,3,
-0x2e42c0,11,
-0x2e4300,14,
-0x2e4340,14,
-0x2e4380,61,
-0x2e4478,4,
-0x2e4490,2,
-0x2e44a0,2,
-0x2e44b0,3,
-0x2e44c0,11,
-0x2e4500,14,
-0x2e4540,14,
-0x2e4580,61,
-0x2e4678,4,
-0x2e4690,2,
-0x2e46a0,2,
-0x2e46b0,3,
-0x2e46c0,11,
-0x2e4700,14,
-0x2e4740,14,
-0x2e4780,62,
-0x2e487c,1,
-0x2e4a00,8,
-0x2e4a24,15,
-0x2e4a64,23,
-0x2e4ac4,6,
-0x2e4b00,4,
-0x2e4b20,3,
-0x2e4c00,6,
-0x2e4c40,14,
-0x2e4c80,9,
-0x2e4d00,9,
-0x2e4d2c,1,
-0x2e4d40,3,
-0x2e4d60,1,
-0x2e4d80,3,
-0x2e4e00,2,
-0x2e4e0c,1,
-0x2e4e14,5,
-0x2e4e2c,1,
-0x2e4e34,5,
-0x2e4e4c,1,
-0x2e4e54,5,
-0x2e4e6c,1,
-0x2e4e74,5,
-0x2e4e8c,1,
-0x2e4e94,5,
-0x2e4eac,1,
-0x2e4eb4,3,
-0x2e5000,29,
-0x2e5078,4,
-0x2e5090,2,
-0x2e50a0,2,
-0x2e50b0,3,
-0x2e50c0,11,
-0x2e5100,14,
-0x2e5140,14,
-0x2e5180,61,
-0x2e5278,4,
-0x2e5290,2,
-0x2e52a0,2,
-0x2e52b0,3,
-0x2e52c0,11,
-0x2e5300,14,
-0x2e5340,14,
-0x2e5380,61,
-0x2e5478,4,
-0x2e5490,2,
-0x2e54a0,2,
-0x2e54b0,3,
-0x2e54c0,11,
-0x2e5500,14,
-0x2e5540,14,
-0x2e5580,61,
-0x2e5678,4,
-0x2e5690,2,
-0x2e56a0,2,
-0x2e56b0,3,
-0x2e56c0,11,
-0x2e5700,14,
-0x2e5740,14,
-0x2e5780,62,
-0x2e587c,1,
-0x2e5a00,8,
-0x2e5a24,15,
-0x2e5a64,23,
-0x2e5ac4,6,
-0x2e5b00,4,
-0x2e5b20,3,
-0x2e5c00,6,
-0x2e5c40,14,
-0x2e5c80,9,
-0x2e5d00,9,
-0x2e5d2c,1,
-0x2e5d40,3,
-0x2e5d60,1,
-0x2e5d80,3,
-0x2e5e00,2,
-0x2e5e0c,1,
-0x2e5e14,5,
-0x2e5e2c,1,
-0x2e5e34,5,
-0x2e5e4c,1,
-0x2e5e54,5,
-0x2e5e6c,1,
-0x2e5e74,5,
-0x2e5e8c,1,
-0x2e5e94,5,
-0x2e5eac,1,
-0x2e5eb4,3,
-0x2e6000,14,
-0x2e6070,3,
-0x2e6080,6,
-0x2e6100,9,
-0x2e6204,1,
-0x2e620c,6,
-0x2e6240,13,
-0x2e6280,16,
-0x2e6800,19,
-0x2e6850,10,
-0x2e6880,19,
-0x2e68d0,10,
-0x2e6900,19,
-0x2e6950,10,
-0x2e6980,19,
-0x2e69d0,10,
-0x2e6a00,19,
-0x2e6a50,10,
-0x2e6a80,19,
-0x2e6ad0,10,
-0x2e6b00,19,
-0x2e6b50,10,
-0x2e6b80,19,
-0x2e6bd0,10,
-0x2e6c00,19,
-0x2e6c60,6,
-0x2e6c84,1,
-0x2e6c94,8,
-0x2e6cb8,9,
-0x2e6ce0,4,
-0x2e7000,6,
-0x2e7020,3,
-0x2e7040,7,
-0x2e7060,6,
-0x2e7100,5,
-0x2e7138,1,
-0x2e7144,1,
-0x2e7150,2,
-0x2e8000,6,
-0x2e8020,3,
-0x2e8030,9,
-0x2e8100,6,
-0x2e8120,10,
-0x2e8150,8,
-0x2e8400,1,
-0x2e8428,1,
-0x2e8450,1,
-0x2e8478,1,
-0x2e84a0,8,
-0x2e85ac,1,
-0x2e85d8,4,
-0x2e8600,6,
-0x2e8620,6,
-0x2e8640,3,
-0x2e8800,6,
-0x2e8820,3,
-0x2e8830,4,
-0x2e8858,2,
-0x2e8864,1,
-0x2e8874,3,
-0x2e8898,2,
-0x2e88a4,1,
-0x2e88b4,3,
-0x2e9000,6,
-0x2e9020,6,
-0x2e9040,3,
-0x2e9080,14,
-0x2e90bc,1,
-0x2e90c4,13,
-0x2e90fc,1,
-0x2e9200,20,
-0x2e925c,30,
-0x2e9300,24,
-0x2e9380,2,
-0x2e93a0,1,
-0x2e93c0,11,
-0x2e9404,3,
-0x2e9420,11,
-0x2e9460,3,
-0x2e9480,6,
-0x2e9500,6,
-0x2e9520,6,
-0x2e9540,1,
-0x2e9558,2,
-0x2e9600,17,
-0x2e9800,410,
-0x2ea000,6,
-0x2ea020,6,
-0x2ea040,3,
-0x2ea080,14,
-0x2ea0bc,1,
-0x2ea0c4,13,
-0x2ea0fc,1,
-0x2ea200,20,
-0x2ea25c,30,
-0x2ea300,24,
-0x2ea380,2,
-0x2ea3a0,1,
-0x2ea3c0,11,
-0x2ea404,3,
-0x2ea420,11,
-0x2ea460,3,
-0x2ea480,6,
-0x2ea500,6,
-0x2ea520,6,
-0x2ea540,1,
-0x2ea558,2,
-0x2ea600,17,
-0x2ea800,410,
-0x2eb000,4,
-0x2eb020,25,
-0x2eb088,8,
-0x2eb100,4,
-0x2eb120,25,
-0x2eb188,8,
-0x2eb200,34,
-0x2eb300,37,
-0x2eb400,16,
-0x2eb464,1,
-0x2eb474,3,
-0x2eb500,6,
-0x2eb520,2,
-0x2eb530,9,
-0x2eb570,10,
-0x2eb5a0,2,
-0x2eb5b0,9,
-0x2eb5f0,4,
-0x2eb620,7,
-0x2eb640,16,
-0x2eb700,6,
-0x2eb720,6,
-0x2eb740,6,
-0x2eb760,6,
-0x2eb780,3,
-0x2eb800,5,
-0x2eb818,1,
-0x2eb854,6,
-0x2eb880,2,
-0x2eb8a4,1,
-0x2eb8ac,2,
-0x2eba00,28,
-0x2eba7c,13,
-0x2ebab4,1,
-0x2ebabc,10,
-0x2ebb04,1,
-0x2ebb0c,5,
-0x2ebb24,1,
-0x2ebb34,9,
-0x2ebb60,6,
-0x2ebb80,22,
-0x2ebbe0,3,
-0x2ebbf0,2,
-0x2ebc00,5,
-0x2ebc18,1,
-0x2ebc54,6,
-0x2ebc80,2,
-0x2ebca4,1,
-0x2ebcac,2,
-0x2ebe00,28,
-0x2ebe7c,13,
-0x2ebeb4,1,
-0x2ebebc,10,
-0x2ebf04,1,
-0x2ebf0c,5,
-0x2ebf24,1,
-0x2ebf34,9,
-0x2ebf60,6,
-0x2ebf80,22,
-0x2ebfe0,3,
-0x2ebff0,2,
-0x2ec008,2,
-0x2ec014,11,
-0x2ec044,1,
-0x2ec04c,3,
-0x2ec05c,1,
-0x2ec064,1,
-0x2ec07c,1,
-0x2ec500,2,
-0x2ec518,1,
-0x2ec520,3,
-0x2ec540,6,
-0x2ec580,10,
-0x2ec808,2,
-0x2ec814,11,
-0x2ec844,1,
-0x2ec84c,3,
-0x2ec85c,1,
-0x2ec864,1,
-0x2ec87c,1,
-0x2ecd00,2,
-0x2ecd18,1,
-0x2ecd20,3,
-0x2ecd40,6,
-0x2ecd80,10,
-0x2ed800,2,
-0x2ed828,2,
-0x2ed850,2,
-0x2ed878,2,
-0x2ed8a0,6,
-0x2ed9ac,1,
-0x2ed9d8,4,
-0x2eda00,6,
-0x2eda20,6,
-0x2eda40,6,
-0x2eda60,6,
-0x2eda80,3,
-0x2edc00,6,
-0x2edc20,3,
-0x2edc40,2,
-0x2edc60,1,
-0x2f0000,5,
-0x2f0020,4,
-0x2f0034,17,
-0x2f0080,1,
-0x2f00a0,6,
-0x2f0100,5,
-0x2f0120,4,
-0x2f0134,17,
-0x2f0180,1,
-0x2f01a0,6,
-0x2f0200,5,
-0x2f0220,4,
-0x2f0234,17,
-0x2f0280,1,
-0x2f02a0,6,
-0x2f0300,5,
-0x2f0320,4,
-0x2f0334,17,
-0x2f0380,1,
-0x2f03a0,6,
-0x2f0500,6,
-0x2f051c,7,
-0x2f0540,1,
-0x2f0c00,13,
-0x2f0c40,12,
-0x2f0c80,13,
-0x2f0cc0,12,
-0x2f0d00,6,
-0x2f0d20,6,
-0x2f0d80,14,
-0x2f0dc0,2,
-0x2f0e40,11,
-0x2f0e80,6,
-0x2f0ea0,6,
-0x2f1000,2,
-0x2f1010,5,
-0x2f1060,32,
-0x2f1100,8,
-0x2f1180,3,
-0x2f1190,2,
-0x2f119c,5,
-0x2f1218,9,
-0x2f1240,3,
-0x2f1250,6,
-0x2f1280,1,
-0x2f1288,6,
-0x2f12a4,1,
-0x2f1400,8,
-0x2f1424,2,
-0x2f1500,5,
-0x2f1520,4,
-0x2f1540,5,
-0x2f1560,4,
-0x2f1800,24,
-0x2f1864,5,
-0x2f1880,8,
-0x2f1900,13,
-0x2f1980,4,
-0x2f19a0,6,
-0x2f1a40,1,
-0x2f1a60,1,
-0x2f1a68,23,
-0x2f1ac8,6,
-0x2f1b00,17,
-0x2f1b48,6,
-0x2f1b80,12,
-0x2f1c00,6,
-0x2f1c20,6,
-0x2f1c40,6,
-0x2f1c60,3,
-0x2f1d00,6,
-0x2f1d20,6,
-0x2f1d40,3,
-0x2f2000,5,
-0x2f2020,4,
-0x2f2034,17,
-0x2f2080,1,
-0x2f20a0,6,
-0x2f2100,5,
-0x2f2120,4,
-0x2f2134,17,
-0x2f2180,1,
-0x2f21a0,6,
-0x2f2200,5,
-0x2f2220,4,
-0x2f2234,17,
-0x2f2280,1,
-0x2f22a0,6,
-0x2f2300,5,
-0x2f2320,4,
-0x2f2334,17,
-0x2f2380,1,
-0x2f23a0,6,
-0x2f2500,6,
-0x2f251c,7,
-0x2f2540,1,
-0x2f2c00,13,
-0x2f2c40,12,
-0x2f2c80,13,
-0x2f2cc0,12,
-0x2f2d00,6,
-0x2f2d20,6,
-0x2f2d80,14,
-0x2f2dc0,2,
-0x2f2e40,11,
-0x2f2e80,6,
-0x2f2ea0,6,
-0x2f3000,2,
-0x2f3010,5,
-0x2f3060,32,
-0x2f3100,8,
-0x2f3180,3,
-0x2f3190,2,
-0x2f319c,5,
-0x2f3218,9,
-0x2f3240,3,
-0x2f3250,6,
-0x2f3280,1,
-0x2f3288,6,
-0x2f32a4,1,
-0x2f3400,8,
-0x2f3424,2,
-0x2f3500,5,
-0x2f3520,4,
-0x2f3540,5,
-0x2f3560,4,
-0x2f3800,24,
-0x2f3864,5,
-0x2f3880,8,
-0x2f3900,13,
-0x2f3980,4,
-0x2f39a0,6,
-0x2f3a40,1,
-0x2f3a60,1,
-0x2f3a68,23,
-0x2f3ac8,6,
-0x2f3b00,17,
-0x2f3b48,6,
-0x2f3b80,12,
-0x2f3c00,6,
-0x2f3c20,6,
-0x2f3c40,6,
-0x2f3c60,3,
-0x2f3d00,6,
-0x2f3d20,6,
-0x2f3d40,3,
-0x2f4000,29,
-0x2f4078,4,
-0x2f4090,2,
-0x2f40a0,2,
-0x2f40b0,3,
-0x2f40c0,11,
-0x2f4100,14,
-0x2f4140,14,
-0x2f4180,61,
-0x2f4278,4,
-0x2f4290,2,
-0x2f42a0,2,
-0x2f42b0,3,
-0x2f42c0,11,
-0x2f4300,14,
-0x2f4340,14,
-0x2f4380,61,
-0x2f4478,4,
-0x2f4490,2,
-0x2f44a0,2,
-0x2f44b0,3,
-0x2f44c0,11,
-0x2f4500,14,
-0x2f4540,14,
-0x2f4580,61,
-0x2f4678,4,
-0x2f4690,2,
-0x2f46a0,2,
-0x2f46b0,3,
-0x2f46c0,11,
-0x2f4700,14,
-0x2f4740,14,
-0x2f4780,62,
-0x2f487c,1,
-0x2f4a00,8,
-0x2f4a24,15,
-0x2f4a64,23,
-0x2f4ac4,6,
-0x2f4b00,4,
-0x2f4b20,3,
-0x2f4c00,6,
-0x2f4c40,14,
-0x2f4c80,9,
-0x2f4d00,9,
-0x2f4d2c,1,
-0x2f4d40,3,
-0x2f4d60,1,
-0x2f4d80,3,
-0x2f4e00,2,
-0x2f4e0c,1,
-0x2f4e14,5,
-0x2f4e2c,1,
-0x2f4e34,5,
-0x2f4e4c,1,
-0x2f4e54,5,
-0x2f4e6c,1,
-0x2f4e74,5,
-0x2f4e8c,1,
-0x2f4e94,5,
-0x2f4eac,1,
-0x2f4eb4,3,
-0x2f5000,29,
-0x2f5078,4,
-0x2f5090,2,
-0x2f50a0,2,
-0x2f50b0,3,
-0x2f50c0,11,
-0x2f5100,14,
-0x2f5140,14,
-0x2f5180,61,
-0x2f5278,4,
-0x2f5290,2,
-0x2f52a0,2,
-0x2f52b0,3,
-0x2f52c0,11,
-0x2f5300,14,
-0x2f5340,14,
-0x2f5380,61,
-0x2f5478,4,
-0x2f5490,2,
-0x2f54a0,2,
-0x2f54b0,3,
-0x2f54c0,11,
-0x2f5500,14,
-0x2f5540,14,
-0x2f5580,61,
-0x2f5678,4,
-0x2f5690,2,
-0x2f56a0,2,
-0x2f56b0,3,
-0x2f56c0,11,
-0x2f5700,14,
-0x2f5740,14,
-0x2f5780,62,
-0x2f587c,1,
-0x2f5a00,8,
-0x2f5a24,15,
-0x2f5a64,23,
-0x2f5ac4,6,
-0x2f5b00,4,
-0x2f5b20,3,
-0x2f5c00,6,
-0x2f5c40,14,
-0x2f5c80,9,
-0x2f5d00,9,
-0x2f5d2c,1,
-0x2f5d40,3,
-0x2f5d60,1,
-0x2f5d80,3,
-0x2f5e00,2,
-0x2f5e0c,1,
-0x2f5e14,5,
-0x2f5e2c,1,
-0x2f5e34,5,
-0x2f5e4c,1,
-0x2f5e54,5,
-0x2f5e6c,1,
-0x2f5e74,5,
-0x2f5e8c,1,
-0x2f5e94,5,
-0x2f5eac,1,
-0x2f5eb4,3,
-0x2f6000,14,
-0x2f6070,3,
-0x2f6080,6,
-0x2f6100,9,
-0x2f6204,1,
-0x2f620c,6,
-0x2f6240,13,
-0x2f6280,16,
-0x2f6800,19,
-0x2f6850,10,
-0x2f6880,19,
-0x2f68d0,10,
-0x2f6900,19,
-0x2f6950,10,
-0x2f6980,19,
-0x2f69d0,10,
-0x2f6a00,19,
-0x2f6a50,10,
-0x2f6a80,19,
-0x2f6ad0,10,
-0x2f6b00,19,
-0x2f6b50,10,
-0x2f6b80,19,
-0x2f6bd0,10,
-0x2f6c00,19,
-0x2f6c60,6,
-0x2f6c84,1,
-0x2f6c94,8,
-0x2f6cb8,9,
-0x2f6ce0,4,
-0x2f7000,6,
-0x2f7020,3,
-0x2f7040,7,
-0x2f7060,6,
-0x2f7100,5,
-0x2f7138,1,
-0x2f7144,1,
-0x2f7150,2,
-0x2f8000,6,
-0x2f8020,3,
-0x2f8030,9,
-0x2f8100,6,
-0x2f8120,10,
-0x2f8150,8,
-0x2f8400,1,
-0x2f8428,1,
-0x2f8450,1,
-0x2f8478,1,
-0x2f84a0,8,
-0x2f85ac,1,
-0x2f85d8,4,
-0x2f8600,6,
-0x2f8620,6,
-0x2f8640,3,
-0x2f8800,6,
-0x2f8820,3,
-0x2f8830,4,
-0x2f8858,2,
-0x2f8864,1,
-0x2f8874,3,
-0x2f8898,2,
-0x2f88a4,1,
-0x2f88b4,3,
-0x2f9000,6,
-0x2f9020,6,
-0x2f9040,3,
-0x2f9080,14,
-0x2f90bc,1,
-0x2f90c4,13,
-0x2f90fc,1,
-0x2f9200,20,
-0x2f925c,30,
-0x2f9300,24,
-0x2f9380,2,
-0x2f93a0,1,
-0x2f93c0,11,
-0x2f9404,3,
-0x2f9420,11,
-0x2f9460,3,
-0x2f9480,6,
-0x2f9500,6,
-0x2f9520,6,
-0x2f9540,1,
-0x2f9558,2,
-0x2f9600,17,
-0x2f9800,410,
-0x2fa000,6,
-0x2fa020,6,
-0x2fa040,3,
-0x2fa080,14,
-0x2fa0bc,1,
-0x2fa0c4,13,
-0x2fa0fc,1,
-0x2fa200,20,
-0x2fa25c,30,
-0x2fa300,24,
-0x2fa380,2,
-0x2fa3a0,1,
-0x2fa3c0,11,
-0x2fa404,3,
-0x2fa420,11,
-0x2fa460,3,
-0x2fa480,6,
-0x2fa500,6,
-0x2fa520,6,
-0x2fa540,1,
-0x2fa558,2,
-0x2fa600,17,
-0x2fa800,410,
-0x2fb000,4,
-0x2fb020,25,
-0x2fb088,8,
-0x2fb100,4,
-0x2fb120,25,
-0x2fb188,8,
-0x2fb200,34,
-0x2fb300,37,
-0x2fb400,16,
-0x2fb464,1,
-0x2fb474,3,
-0x2fb500,6,
-0x2fb520,2,
-0x2fb530,9,
-0x2fb570,10,
-0x2fb5a0,2,
-0x2fb5b0,9,
-0x2fb5f0,4,
-0x2fb620,7,
-0x2fb640,16,
-0x2fb700,6,
-0x2fb720,6,
-0x2fb740,6,
-0x2fb760,6,
-0x2fb780,3,
-0x2fb800,5,
-0x2fb818,1,
-0x2fb854,6,
-0x2fb880,2,
-0x2fb8a4,1,
-0x2fb8ac,2,
-0x2fba00,28,
-0x2fba7c,13,
-0x2fbab4,1,
-0x2fbabc,10,
-0x2fbb04,1,
-0x2fbb0c,5,
-0x2fbb24,1,
-0x2fbb34,9,
-0x2fbb60,6,
-0x2fbb80,22,
-0x2fbbe0,3,
-0x2fbbf0,2,
-0x2fbc00,5,
-0x2fbc18,1,
-0x2fbc54,6,
-0x2fbc80,2,
-0x2fbca4,1,
-0x2fbcac,2,
-0x2fbe00,28,
-0x2fbe7c,13,
-0x2fbeb4,1,
-0x2fbebc,10,
-0x2fbf04,1,
-0x2fbf0c,5,
-0x2fbf24,1,
-0x2fbf34,9,
-0x2fbf60,6,
-0x2fbf80,22,
-0x2fbfe0,3,
-0x2fbff0,2,
-0x2fc008,2,
-0x2fc014,11,
-0x2fc044,1,
-0x2fc04c,3,
-0x2fc05c,1,
-0x2fc064,1,
-0x2fc07c,1,
-0x2fc500,2,
-0x2fc518,1,
-0x2fc520,3,
-0x2fc540,6,
-0x2fc580,10,
-0x2fc808,2,
-0x2fc814,11,
-0x2fc844,1,
-0x2fc84c,3,
-0x2fc85c,1,
-0x2fc864,1,
-0x2fc87c,1,
-0x2fcd00,2,
-0x2fcd18,1,
-0x2fcd20,3,
-0x2fcd40,6,
-0x2fcd80,10,
-0x2fd800,2,
-0x2fd828,2,
-0x2fd850,2,
-0x2fd878,2,
-0x2fd8a0,6,
-0x2fd9ac,1,
-0x2fd9d8,4,
-0x2fda00,6,
-0x2fda20,6,
-0x2fda40,6,
-0x2fda60,6,
-0x2fda80,3,
-0x2fdc00,6,
-0x2fdc20,3,
-0x2fdc40,2,
-0x2fdc60,1,
-0x300000,5,
-0x300020,4,
-0x300034,17,
-0x300080,1,
-0x3000a0,6,
-0x300100,5,
-0x300120,4,
-0x300134,17,
-0x300180,1,
-0x3001a0,6,
-0x300200,5,
-0x300220,4,
-0x300234,17,
-0x300280,1,
-0x3002a0,6,
-0x300300,5,
-0x300320,4,
-0x300334,17,
-0x300380,1,
-0x3003a0,6,
-0x300500,6,
-0x30051c,7,
-0x300540,1,
-0x300c00,13,
-0x300c40,12,
-0x300c80,13,
-0x300cc0,12,
-0x300d00,6,
-0x300d20,6,
-0x300d80,14,
-0x300dc0,2,
-0x300e40,11,
-0x300e80,6,
-0x300ea0,6,
-0x301000,2,
-0x301010,5,
-0x301060,32,
-0x301100,8,
-0x301180,3,
-0x301190,2,
-0x30119c,5,
-0x301218,9,
-0x301240,3,
-0x301250,6,
-0x301280,1,
-0x301288,6,
-0x3012a4,1,
-0x301400,8,
-0x301424,2,
-0x301500,5,
-0x301520,4,
-0x301540,5,
-0x301560,4,
-0x301800,24,
-0x301864,5,
-0x301880,8,
-0x301900,13,
-0x301980,4,
-0x3019a0,6,
-0x301a40,1,
-0x301a60,1,
-0x301a68,23,
-0x301ac8,6,
-0x301b00,17,
-0x301b48,6,
-0x301b80,12,
-0x301c00,6,
-0x301c20,6,
-0x301c40,6,
-0x301c60,3,
-0x301d00,6,
-0x301d20,6,
-0x301d40,3,
-0x302000,5,
-0x302020,4,
-0x302034,17,
-0x302080,1,
-0x3020a0,6,
-0x302100,5,
-0x302120,4,
-0x302134,17,
-0x302180,1,
-0x3021a0,6,
-0x302200,5,
-0x302220,4,
-0x302234,17,
-0x302280,1,
-0x3022a0,6,
-0x302300,5,
-0x302320,4,
-0x302334,17,
-0x302380,1,
-0x3023a0,6,
-0x302500,6,
-0x30251c,7,
-0x302540,1,
-0x302c00,13,
-0x302c40,12,
-0x302c80,13,
-0x302cc0,12,
-0x302d00,6,
-0x302d20,6,
-0x302d80,14,
-0x302dc0,2,
-0x302e40,11,
-0x302e80,6,
-0x302ea0,6,
-0x303000,2,
-0x303010,5,
-0x303060,32,
-0x303100,8,
-0x303180,3,
-0x303190,2,
-0x30319c,5,
-0x303218,9,
-0x303240,3,
-0x303250,6,
-0x303280,1,
-0x303288,6,
-0x3032a4,1,
-0x303400,8,
-0x303424,2,
-0x303500,5,
-0x303520,4,
-0x303540,5,
-0x303560,4,
-0x303800,24,
-0x303864,5,
-0x303880,8,
-0x303900,13,
-0x303980,4,
-0x3039a0,6,
-0x303a40,1,
-0x303a60,1,
-0x303a68,23,
-0x303ac8,6,
-0x303b00,17,
-0x303b48,6,
-0x303b80,12,
-0x303c00,6,
-0x303c20,6,
-0x303c40,6,
-0x303c60,3,
-0x303d00,6,
-0x303d20,6,
-0x303d40,3,
-0x304000,29,
-0x304078,4,
-0x304090,2,
-0x3040a0,2,
-0x3040b0,3,
-0x3040c0,11,
-0x304100,14,
-0x304140,14,
-0x304180,61,
-0x304278,4,
-0x304290,2,
-0x3042a0,2,
-0x3042b0,3,
-0x3042c0,11,
-0x304300,14,
-0x304340,14,
-0x304380,61,
-0x304478,4,
-0x304490,2,
-0x3044a0,2,
-0x3044b0,3,
-0x3044c0,11,
-0x304500,14,
-0x304540,14,
-0x304580,61,
-0x304678,4,
-0x304690,2,
-0x3046a0,2,
-0x3046b0,3,
-0x3046c0,11,
-0x304700,14,
-0x304740,14,
-0x304780,62,
-0x30487c,1,
-0x304a00,8,
-0x304a24,15,
-0x304a64,23,
-0x304ac4,6,
-0x304b00,4,
-0x304b20,3,
-0x304c00,6,
-0x304c40,14,
-0x304c80,9,
-0x304d00,9,
-0x304d2c,1,
-0x304d40,3,
-0x304d60,1,
-0x304d80,3,
-0x304e00,2,
-0x304e0c,1,
-0x304e14,5,
-0x304e2c,1,
-0x304e34,5,
-0x304e4c,1,
-0x304e54,5,
-0x304e6c,1,
-0x304e74,5,
-0x304e8c,1,
-0x304e94,5,
-0x304eac,1,
-0x304eb4,3,
-0x305000,29,
-0x305078,4,
-0x305090,2,
-0x3050a0,2,
-0x3050b0,3,
-0x3050c0,11,
-0x305100,14,
-0x305140,14,
-0x305180,61,
-0x305278,4,
-0x305290,2,
-0x3052a0,2,
-0x3052b0,3,
-0x3052c0,11,
-0x305300,14,
-0x305340,14,
-0x305380,61,
-0x305478,4,
-0x305490,2,
-0x3054a0,2,
-0x3054b0,3,
-0x3054c0,11,
-0x305500,14,
-0x305540,14,
-0x305580,61,
-0x305678,4,
-0x305690,2,
-0x3056a0,2,
-0x3056b0,3,
-0x3056c0,11,
-0x305700,14,
-0x305740,14,
-0x305780,62,
-0x30587c,1,
-0x305a00,8,
-0x305a24,15,
-0x305a64,23,
-0x305ac4,6,
-0x305b00,4,
-0x305b20,3,
-0x305c00,6,
-0x305c40,14,
-0x305c80,9,
-0x305d00,9,
-0x305d2c,1,
-0x305d40,3,
-0x305d60,1,
-0x305d80,3,
-0x305e00,2,
-0x305e0c,1,
-0x305e14,5,
-0x305e2c,1,
-0x305e34,5,
-0x305e4c,1,
-0x305e54,5,
-0x305e6c,1,
-0x305e74,5,
-0x305e8c,1,
-0x305e94,5,
-0x305eac,1,
-0x305eb4,3,
-0x306000,14,
-0x306070,3,
-0x306080,6,
-0x306100,9,
-0x306204,1,
-0x30620c,6,
-0x306240,13,
-0x306280,16,
-0x306800,19,
-0x306850,10,
-0x306880,19,
-0x3068d0,10,
-0x306900,19,
-0x306950,10,
-0x306980,19,
-0x3069d0,10,
-0x306a00,19,
-0x306a50,10,
-0x306a80,19,
-0x306ad0,10,
-0x306b00,19,
-0x306b50,10,
-0x306b80,19,
-0x306bd0,10,
-0x306c00,19,
-0x306c60,6,
-0x306c84,1,
-0x306c94,8,
-0x306cb8,9,
-0x306ce0,4,
-0x307000,6,
-0x307020,3,
-0x307040,7,
-0x307060,6,
-0x307100,5,
-0x307138,1,
-0x307144,1,
-0x307150,2,
-0x308000,6,
-0x308020,3,
-0x308030,9,
-0x308100,6,
-0x308120,10,
-0x308150,8,
-0x308400,1,
-0x308428,1,
-0x308450,1,
-0x308478,1,
-0x3084a0,8,
-0x3085ac,1,
-0x3085d8,4,
-0x308600,6,
-0x308620,6,
-0x308640,3,
-0x308800,6,
-0x308820,3,
-0x308830,4,
-0x308858,2,
-0x308864,1,
-0x308874,3,
-0x308898,2,
-0x3088a4,1,
-0x3088b4,3,
-0x309000,6,
-0x309020,6,
-0x309040,3,
-0x309080,14,
-0x3090bc,1,
-0x3090c4,13,
-0x3090fc,1,
-0x309200,20,
-0x30925c,30,
-0x309300,24,
-0x309380,2,
-0x3093a0,1,
-0x3093c0,11,
-0x309404,3,
-0x309420,11,
-0x309460,3,
-0x309480,6,
-0x309500,6,
-0x309520,6,
-0x309540,1,
-0x309558,2,
-0x309600,17,
-0x309800,410,
-0x30a000,6,
-0x30a020,6,
-0x30a040,3,
-0x30a080,14,
-0x30a0bc,1,
-0x30a0c4,13,
-0x30a0fc,1,
-0x30a200,20,
-0x30a25c,30,
-0x30a300,24,
-0x30a380,2,
-0x30a3a0,1,
-0x30a3c0,11,
-0x30a404,3,
-0x30a420,11,
-0x30a460,3,
-0x30a480,6,
-0x30a500,6,
-0x30a520,6,
-0x30a540,1,
-0x30a558,2,
-0x30a600,17,
-0x30a800,410,
-0x30b000,4,
-0x30b020,25,
-0x30b088,8,
-0x30b100,4,
-0x30b120,25,
-0x30b188,8,
-0x30b200,34,
-0x30b300,37,
-0x30b400,16,
-0x30b464,1,
-0x30b474,3,
-0x30b500,6,
-0x30b520,2,
-0x30b530,9,
-0x30b570,10,
-0x30b5a0,2,
-0x30b5b0,9,
-0x30b5f0,4,
-0x30b620,7,
-0x30b640,16,
-0x30b700,6,
-0x30b720,6,
-0x30b740,6,
-0x30b760,6,
-0x30b780,3,
-0x30b800,5,
-0x30b818,1,
-0x30b854,6,
-0x30b880,2,
-0x30b8a4,1,
-0x30b8ac,2,
-0x30ba00,28,
-0x30ba7c,13,
-0x30bab4,1,
-0x30babc,10,
-0x30bb04,1,
-0x30bb0c,5,
-0x30bb24,1,
-0x30bb34,9,
-0x30bb60,6,
-0x30bb80,22,
-0x30bbe0,3,
-0x30bbf0,2,
-0x30bc00,5,
-0x30bc18,1,
-0x30bc54,6,
-0x30bc80,2,
-0x30bca4,1,
-0x30bcac,2,
-0x30be00,28,
-0x30be7c,13,
-0x30beb4,1,
-0x30bebc,10,
-0x30bf04,1,
-0x30bf0c,5,
-0x30bf24,1,
-0x30bf34,9,
-0x30bf60,6,
-0x30bf80,22,
-0x30bfe0,3,
-0x30bff0,2,
-0x30c008,2,
-0x30c014,11,
-0x30c044,1,
-0x30c04c,3,
-0x30c05c,1,
-0x30c064,1,
-0x30c07c,1,
-0x30c500,2,
-0x30c518,1,
-0x30c520,3,
-0x30c540,6,
-0x30c580,10,
-0x30c808,2,
-0x30c814,11,
-0x30c844,1,
-0x30c84c,3,
-0x30c85c,1,
-0x30c864,1,
-0x30c87c,1,
-0x30cd00,2,
-0x30cd18,1,
-0x30cd20,3,
-0x30cd40,6,
-0x30cd80,10,
-0x30d800,2,
-0x30d828,2,
-0x30d850,2,
-0x30d878,2,
-0x30d8a0,6,
-0x30d9ac,1,
-0x30d9d8,4,
-0x30da00,6,
-0x30da20,6,
-0x30da40,6,
-0x30da60,6,
-0x30da80,3,
-0x30dc00,6,
-0x30dc20,3,
-0x30dc40,2,
-0x30dc60,1,
-0x310000,5,
-0x310020,4,
-0x310034,17,
-0x310080,1,
-0x3100a0,6,
-0x310100,5,
-0x310120,4,
-0x310134,17,
-0x310180,1,
-0x3101a0,6,
-0x310200,5,
-0x310220,4,
-0x310234,17,
-0x310280,1,
-0x3102a0,6,
-0x310300,5,
-0x310320,4,
-0x310334,17,
-0x310380,1,
-0x3103a0,6,
-0x310500,6,
-0x31051c,7,
-0x310540,1,
-0x310c00,13,
-0x310c40,12,
-0x310c80,13,
-0x310cc0,12,
-0x310d00,6,
-0x310d20,6,
-0x310d80,14,
-0x310dc0,2,
-0x310e40,11,
-0x310e80,6,
-0x310ea0,6,
-0x311000,2,
-0x311010,5,
-0x311060,32,
-0x311100,8,
-0x311180,3,
-0x311190,2,
-0x31119c,5,
-0x311218,9,
-0x311240,3,
-0x311250,6,
-0x311280,1,
-0x311288,6,
-0x3112a4,1,
-0x311400,8,
-0x311424,2,
-0x311500,5,
-0x311520,4,
-0x311540,5,
-0x311560,4,
-0x311800,24,
-0x311864,5,
-0x311880,8,
-0x311900,13,
-0x311980,4,
-0x3119a0,6,
-0x311a40,1,
-0x311a60,1,
-0x311a68,23,
-0x311ac8,6,
-0x311b00,17,
-0x311b48,6,
-0x311b80,12,
-0x311c00,6,
-0x311c20,6,
-0x311c40,6,
-0x311c60,3,
-0x311d00,6,
-0x311d20,6,
-0x311d40,3,
-0x312000,5,
-0x312020,4,
-0x312034,17,
-0x312080,1,
-0x3120a0,6,
-0x312100,5,
-0x312120,4,
-0x312134,17,
-0x312180,1,
-0x3121a0,6,
-0x312200,5,
-0x312220,4,
-0x312234,17,
-0x312280,1,
-0x3122a0,6,
-0x312300,5,
-0x312320,4,
-0x312334,17,
-0x312380,1,
-0x3123a0,6,
-0x312500,6,
-0x31251c,7,
-0x312540,1,
-0x312c00,13,
-0x312c40,12,
-0x312c80,13,
-0x312cc0,12,
-0x312d00,6,
-0x312d20,6,
-0x312d80,14,
-0x312dc0,2,
-0x312e40,11,
-0x312e80,6,
-0x312ea0,6,
-0x313000,2,
-0x313010,5,
-0x313060,32,
-0x313100,8,
-0x313180,3,
-0x313190,2,
-0x31319c,5,
-0x313218,9,
-0x313240,3,
-0x313250,6,
-0x313280,1,
-0x313288,6,
-0x3132a4,1,
-0x313400,8,
-0x313424,2,
-0x313500,5,
-0x313520,4,
-0x313540,5,
-0x313560,4,
-0x313800,24,
-0x313864,5,
-0x313880,8,
-0x313900,13,
-0x313980,4,
-0x3139a0,6,
-0x313a40,1,
-0x313a60,1,
-0x313a68,23,
-0x313ac8,6,
-0x313b00,17,
-0x313b48,6,
-0x313b80,12,
-0x313c00,6,
-0x313c20,6,
-0x313c40,6,
-0x313c60,3,
-0x313d00,6,
-0x313d20,6,
-0x313d40,3,
-0x314000,29,
-0x314078,4,
-0x314090,2,
-0x3140a0,2,
-0x3140b0,3,
-0x3140c0,11,
-0x314100,14,
-0x314140,14,
-0x314180,61,
-0x314278,4,
-0x314290,2,
-0x3142a0,2,
-0x3142b0,3,
-0x3142c0,11,
-0x314300,14,
-0x314340,14,
-0x314380,61,
-0x314478,4,
-0x314490,2,
-0x3144a0,2,
-0x3144b0,3,
-0x3144c0,11,
-0x314500,14,
-0x314540,14,
-0x314580,61,
-0x314678,4,
-0x314690,2,
-0x3146a0,2,
-0x3146b0,3,
-0x3146c0,11,
-0x314700,14,
-0x314740,14,
-0x314780,62,
-0x31487c,1,
-0x314a00,8,
-0x314a24,15,
-0x314a64,23,
-0x314ac4,6,
-0x314b00,4,
-0x314b20,3,
-0x314c00,6,
-0x314c40,14,
-0x314c80,9,
-0x314d00,9,
-0x314d2c,1,
-0x314d40,3,
-0x314d60,1,
-0x314d80,3,
-0x314e00,2,
-0x314e0c,1,
-0x314e14,5,
-0x314e2c,1,
-0x314e34,5,
-0x314e4c,1,
-0x314e54,5,
-0x314e6c,1,
-0x314e74,5,
-0x314e8c,1,
-0x314e94,5,
-0x314eac,1,
-0x314eb4,3,
-0x315000,29,
-0x315078,4,
-0x315090,2,
-0x3150a0,2,
-0x3150b0,3,
-0x3150c0,11,
-0x315100,14,
-0x315140,14,
-0x315180,61,
-0x315278,4,
-0x315290,2,
-0x3152a0,2,
-0x3152b0,3,
-0x3152c0,11,
-0x315300,14,
-0x315340,14,
-0x315380,61,
-0x315478,4,
-0x315490,2,
-0x3154a0,2,
-0x3154b0,3,
-0x3154c0,11,
-0x315500,14,
-0x315540,14,
-0x315580,61,
-0x315678,4,
-0x315690,2,
-0x3156a0,2,
-0x3156b0,3,
-0x3156c0,11,
-0x315700,14,
-0x315740,14,
-0x315780,62,
-0x31587c,1,
-0x315a00,8,
-0x315a24,15,
-0x315a64,23,
-0x315ac4,6,
-0x315b00,4,
-0x315b20,3,
-0x315c00,6,
-0x315c40,14,
-0x315c80,9,
-0x315d00,9,
-0x315d2c,1,
-0x315d40,3,
-0x315d60,1,
-0x315d80,3,
-0x315e00,2,
-0x315e0c,1,
-0x315e14,5,
-0x315e2c,1,
-0x315e34,5,
-0x315e4c,1,
-0x315e54,5,
-0x315e6c,1,
-0x315e74,5,
-0x315e8c,1,
-0x315e94,5,
-0x315eac,1,
-0x315eb4,3,
-0x316000,14,
-0x316070,3,
-0x316080,6,
-0x316100,9,
-0x316204,1,
-0x31620c,6,
-0x316240,13,
-0x316280,16,
-0x316800,19,
-0x316850,10,
-0x316880,19,
-0x3168d0,10,
-0x316900,19,
-0x316950,10,
-0x316980,19,
-0x3169d0,10,
-0x316a00,19,
-0x316a50,10,
-0x316a80,19,
-0x316ad0,10,
-0x316b00,19,
-0x316b50,10,
-0x316b80,19,
-0x316bd0,10,
-0x316c00,19,
-0x316c60,6,
-0x316c84,1,
-0x316c94,8,
-0x316cb8,9,
-0x316ce0,4,
-0x317000,6,
-0x317020,3,
-0x317040,7,
-0x317060,6,
-0x317100,5,
-0x317138,1,
-0x317144,1,
-0x317150,2,
-0x318000,6,
-0x318020,3,
-0x318030,9,
-0x318100,6,
-0x318120,10,
-0x318150,8,
-0x318400,1,
-0x318428,1,
-0x318450,1,
-0x318478,1,
-0x3184a0,8,
-0x3185ac,1,
-0x3185d8,4,
-0x318600,6,
-0x318620,6,
-0x318640,3,
-0x318800,6,
-0x318820,3,
-0x318830,4,
-0x318858,2,
-0x318864,1,
-0x318874,3,
-0x318898,2,
-0x3188a4,1,
-0x3188b4,3,
-0x319000,6,
-0x319020,6,
-0x319040,3,
-0x319080,14,
-0x3190bc,1,
-0x3190c4,13,
-0x3190fc,1,
-0x319200,20,
-0x31925c,30,
-0x319300,24,
-0x319380,2,
-0x3193a0,1,
-0x3193c0,11,
-0x319404,3,
-0x319420,11,
-0x319460,3,
-0x319480,6,
-0x319500,6,
-0x319520,6,
-0x319540,1,
-0x319558,2,
-0x319600,17,
-0x319800,410,
-0x31a000,6,
-0x31a020,6,
-0x31a040,3,
-0x31a080,14,
-0x31a0bc,1,
-0x31a0c4,13,
-0x31a0fc,1,
-0x31a200,20,
-0x31a25c,30,
-0x31a300,24,
-0x31a380,2,
-0x31a3a0,1,
-0x31a3c0,11,
-0x31a404,3,
-0x31a420,11,
-0x31a460,3,
-0x31a480,6,
-0x31a500,6,
-0x31a520,6,
-0x31a540,1,
-0x31a558,2,
-0x31a600,17,
-0x31a800,410,
-0x31b000,4,
-0x31b020,25,
-0x31b088,8,
-0x31b100,4,
-0x31b120,25,
-0x31b188,8,
-0x31b200,34,
-0x31b300,37,
-0x31b400,16,
-0x31b464,1,
-0x31b474,3,
-0x31b500,6,
-0x31b520,2,
-0x31b530,9,
-0x31b570,10,
-0x31b5a0,2,
-0x31b5b0,9,
-0x31b5f0,4,
-0x31b620,7,
-0x31b640,16,
-0x31b700,6,
-0x31b720,6,
-0x31b740,6,
-0x31b760,6,
-0x31b780,3,
-0x31b800,5,
-0x31b818,1,
-0x31b854,6,
-0x31b880,2,
-0x31b8a4,1,
-0x31b8ac,2,
-0x31ba00,28,
-0x31ba7c,13,
-0x31bab4,1,
-0x31babc,10,
-0x31bb04,1,
-0x31bb0c,5,
-0x31bb24,1,
-0x31bb34,9,
-0x31bb60,6,
-0x31bb80,22,
-0x31bbe0,3,
-0x31bbf0,2,
-0x31bc00,5,
-0x31bc18,1,
-0x31bc54,6,
-0x31bc80,2,
-0x31bca4,1,
-0x31bcac,2,
-0x31be00,28,
-0x31be7c,13,
-0x31beb4,1,
-0x31bebc,10,
-0x31bf04,1,
-0x31bf0c,5,
-0x31bf24,1,
-0x31bf34,9,
-0x31bf60,6,
-0x31bf80,22,
-0x31bfe0,3,
-0x31bff0,2,
-0x31c008,2,
-0x31c014,11,
-0x31c044,1,
-0x31c04c,3,
-0x31c05c,1,
-0x31c064,1,
-0x31c07c,1,
-0x31c500,2,
-0x31c518,1,
-0x31c520,3,
-0x31c540,6,
-0x31c580,10,
-0x31c808,2,
-0x31c814,11,
-0x31c844,1,
-0x31c84c,3,
-0x31c85c,1,
-0x31c864,1,
-0x31c87c,1,
-0x31cd00,2,
-0x31cd18,1,
-0x31cd20,3,
-0x31cd40,6,
-0x31cd80,10,
-0x31d800,2,
-0x31d828,2,
-0x31d850,2,
-0x31d878,2,
-0x31d8a0,6,
-0x31d9ac,1,
-0x31d9d8,4,
-0x31da00,6,
-0x31da20,6,
-0x31da40,6,
-0x31da60,6,
-0x31da80,3,
-0x31dc00,6,
-0x31dc20,3,
-0x31dc40,2,
-0x31dc60,1,
diff --git a/mstdump/mstdump_dbs/SwitchIB2.csv b/mstdump/mstdump_dbs/SwitchIB2.csv
deleted file mode 100644 (file)
index cd74222..0000000
+++ /dev/null
@@ -1,13081 +0,0 @@
-#Addr, Size, Enable addr
-0x000400,1,
-0x000408,14,
-0x000480,1,
-0x000488,18,
-0x000500,9,
-0x000534,2,
-0x00054c,4,
-0x00056c,11,
-0x0005ac,8,
-0x0005d0,1,
-0x000604,1,
-0x00060c,13,
-0x000644,1,
-0x000654,3,
-0x000664,1,
-0x00066c,8,
-0x0006a8,3,
-0x0006c0,8,
-0x000700,6,
-0x000760,4,
-0x000780,8,
-0x0007b8,8,
-0x0007dc,10,
-0x000808,14,
-0x000880,1,
-0x000888,18,
-0x000900,9,
-0x000934,2,
-0x00094c,4,
-0x00096c,11,
-0x0009ac,8,
-0x0009d0,1,
-0x000a04,1,
-0x000a0c,13,
-0x000a44,1,
-0x000a54,3,
-0x000a64,1,
-0x000a6c,8,
-0x000aa8,3,
-0x000ac0,8,
-0x000b00,6,
-0x000b60,4,
-0x000b80,8,
-0x000bb8,8,
-0x000bdc,10,
-0x000c08,14,
-0x000c80,1,
-0x000c88,18,
-0x000d00,9,
-0x000d34,2,
-0x000d4c,4,
-0x000d6c,11,
-0x000dac,8,
-0x000dd0,1,
-0x000e04,1,
-0x000e0c,13,
-0x000e44,1,
-0x000e54,3,
-0x000e64,1,
-0x000e6c,8,
-0x000ea8,3,
-0x000ec0,8,
-0x000f00,6,
-0x000f60,4,
-0x000f80,8,
-0x000fb8,8,
-0x000fdc,10,
-0x001008,14,
-0x001080,1,
-0x001088,18,
-0x001100,9,
-0x001134,2,
-0x00114c,4,
-0x00116c,11,
-0x0011ac,8,
-0x0011d0,1,
-0x001204,1,
-0x00120c,13,
-0x001244,1,
-0x001254,3,
-0x001264,1,
-0x00126c,8,
-0x0012a8,3,
-0x0012c0,8,
-0x001300,6,
-0x001360,4,
-0x001380,8,
-0x0013b8,8,
-0x0013dc,10,
-0x001408,14,
-0x001480,1,
-0x001488,18,
-0x001500,9,
-0x001534,2,
-0x00154c,4,
-0x00156c,11,
-0x0015ac,8,
-0x0015d0,1,
-0x001604,1,
-0x00160c,13,
-0x001644,1,
-0x001654,3,
-0x001664,1,
-0x00166c,8,
-0x0016a8,3,
-0x0016c0,8,
-0x001700,6,
-0x001760,4,
-0x001780,8,
-0x0017b8,8,
-0x0017dc,10,
-0x001808,14,
-0x001880,1,
-0x001888,18,
-0x001900,9,
-0x001934,2,
-0x00194c,4,
-0x00196c,11,
-0x0019ac,8,
-0x0019d0,1,
-0x001a04,1,
-0x001a0c,13,
-0x001a44,1,
-0x001a54,3,
-0x001a64,1,
-0x001a6c,8,
-0x001aa8,3,
-0x001ac0,8,
-0x001b00,6,
-0x001b60,4,
-0x001b80,8,
-0x001bb8,8,
-0x001bdc,10,
-0x001c08,14,
-0x001c80,1,
-0x001c88,18,
-0x001d00,9,
-0x001d34,2,
-0x001d4c,4,
-0x001d6c,11,
-0x001dac,8,
-0x001dd0,1,
-0x001e04,1,
-0x001e0c,13,
-0x001e44,1,
-0x001e54,3,
-0x001e64,1,
-0x001e6c,8,
-0x001ea8,3,
-0x001ec0,8,
-0x001f00,6,
-0x001f60,4,
-0x001f80,8,
-0x001fb8,8,
-0x001fdc,10,
-0x002008,14,
-0x002080,1,
-0x002088,18,
-0x002100,9,
-0x002134,2,
-0x00214c,4,
-0x00216c,11,
-0x0021ac,8,
-0x0021d0,1,
-0x002204,1,
-0x00220c,13,
-0x002244,1,
-0x002254,3,
-0x002264,1,
-0x00226c,8,
-0x0022a8,3,
-0x0022c0,8,
-0x002300,6,
-0x002360,4,
-0x002380,8,
-0x0023b8,8,
-0x0023dc,10,
-0x002408,14,
-0x002480,1,
-0x002488,18,
-0x002500,9,
-0x002534,2,
-0x00254c,4,
-0x00256c,11,
-0x0025ac,8,
-0x0025d0,1,
-0x002604,1,
-0x00260c,13,
-0x002644,1,
-0x002654,3,
-0x002664,1,
-0x00266c,8,
-0x0026a8,3,
-0x0026c0,8,
-0x002700,6,
-0x002760,4,
-0x002780,8,
-0x0027b8,8,
-0x0027dc,10,
-0x002808,14,
-0x002880,1,
-0x002888,18,
-0x002900,9,
-0x002934,2,
-0x00294c,4,
-0x00296c,11,
-0x0029ac,8,
-0x0029d0,1,
-0x002a04,1,
-0x002a0c,13,
-0x002a44,1,
-0x002a54,3,
-0x002a64,1,
-0x002a6c,8,
-0x002aa8,3,
-0x002ac0,8,
-0x002b00,6,
-0x002b60,4,
-0x002b80,8,
-0x002bb8,8,
-0x002bdc,10,
-0x002c08,14,
-0x002c80,1,
-0x002c88,18,
-0x002d00,9,
-0x002d34,2,
-0x002d4c,4,
-0x002d6c,11,
-0x002dac,8,
-0x002dd0,1,
-0x002e04,1,
-0x002e0c,13,
-0x002e44,1,
-0x002e54,3,
-0x002e64,1,
-0x002e6c,8,
-0x002ea8,3,
-0x002ec0,8,
-0x002f00,6,
-0x002f60,4,
-0x002f80,8,
-0x002fb8,8,
-0x002fdc,10,
-0x003008,14,
-0x003080,1,
-0x003088,18,
-0x003100,9,
-0x003134,2,
-0x00314c,4,
-0x00316c,11,
-0x0031ac,8,
-0x0031d0,1,
-0x003204,1,
-0x00320c,13,
-0x003244,1,
-0x003254,3,
-0x003264,1,
-0x00326c,8,
-0x0032a8,3,
-0x0032c0,8,
-0x003300,6,
-0x003360,4,
-0x003380,8,
-0x0033b8,8,
-0x0033dc,10,
-0x003408,14,
-0x003480,1,
-0x003488,18,
-0x003500,9,
-0x003534,2,
-0x00354c,4,
-0x00356c,11,
-0x0035ac,8,
-0x0035d0,1,
-0x003604,1,
-0x00360c,13,
-0x003644,1,
-0x003654,3,
-0x003664,1,
-0x00366c,8,
-0x0036a8,3,
-0x0036c0,8,
-0x003700,6,
-0x003760,4,
-0x003780,8,
-0x0037b8,8,
-0x0037dc,10,
-0x003808,14,
-0x003880,1,
-0x003888,18,
-0x003900,9,
-0x003934,2,
-0x00394c,4,
-0x00396c,11,
-0x0039ac,8,
-0x0039d0,1,
-0x003a04,1,
-0x003a0c,13,
-0x003a44,1,
-0x003a54,3,
-0x003a64,1,
-0x003a6c,8,
-0x003aa8,3,
-0x003ac0,8,
-0x003b00,6,
-0x003b60,4,
-0x003b80,8,
-0x003bb8,8,
-0x003bdc,10,
-0x003c08,14,
-0x003c80,1,
-0x003c88,18,
-0x003d00,9,
-0x003d34,2,
-0x003d4c,4,
-0x003d6c,11,
-0x003dac,8,
-0x003dd0,1,
-0x003e04,1,
-0x003e0c,13,
-0x003e44,1,
-0x003e54,3,
-0x003e64,1,
-0x003e6c,8,
-0x003ea8,3,
-0x003ec0,8,
-0x003f00,6,
-0x003f60,4,
-0x003f80,8,
-0x003fb8,8,
-0x003fdc,10,
-0x004008,14,
-0x004080,1,
-0x004088,18,
-0x004100,9,
-0x004134,2,
-0x00414c,4,
-0x00416c,11,
-0x0041ac,8,
-0x0041d0,1,
-0x004204,1,
-0x00420c,13,
-0x004244,1,
-0x004254,3,
-0x004264,1,
-0x00426c,8,
-0x0042a8,3,
-0x0042c0,8,
-0x004300,6,
-0x004360,4,
-0x004380,8,
-0x0043b8,8,
-0x0043dc,10,
-0x004408,14,
-0x004480,1,
-0x004488,18,
-0x004500,9,
-0x004534,2,
-0x00454c,4,
-0x00456c,11,
-0x0045ac,8,
-0x0045d0,1,
-0x004604,1,
-0x00460c,13,
-0x004644,1,
-0x004654,3,
-0x004664,1,
-0x00466c,8,
-0x0046a8,3,
-0x0046c0,8,
-0x004700,6,
-0x004760,4,
-0x004780,8,
-0x0047b8,8,
-0x0047dc,10,
-0x004808,14,
-0x004880,1,
-0x004888,18,
-0x004900,9,
-0x004934,2,
-0x00494c,4,
-0x00496c,11,
-0x0049ac,8,
-0x0049d0,1,
-0x004a04,1,
-0x004a0c,13,
-0x004a44,1,
-0x004a54,3,
-0x004a64,1,
-0x004a6c,8,
-0x004aa8,3,
-0x004ac0,8,
-0x004b00,6,
-0x004b60,4,
-0x004b80,8,
-0x004bb8,8,
-0x004bdc,10,
-0x004c08,14,
-0x004c80,1,
-0x004c88,18,
-0x004d00,9,
-0x004d34,2,
-0x004d4c,4,
-0x004d6c,11,
-0x004dac,8,
-0x004dd0,1,
-0x004e04,1,
-0x004e0c,13,
-0x004e44,1,
-0x004e54,3,
-0x004e64,1,
-0x004e6c,8,
-0x004ea8,3,
-0x004ec0,8,
-0x004f00,6,
-0x004f60,4,
-0x004f80,8,
-0x004fb8,8,
-0x004fdc,10,
-0x005008,14,
-0x005080,1,
-0x005088,18,
-0x005100,9,
-0x005134,2,
-0x00514c,4,
-0x00516c,11,
-0x0051ac,8,
-0x0051d0,1,
-0x005204,1,
-0x00520c,13,
-0x005244,1,
-0x005254,3,
-0x005264,1,
-0x00526c,8,
-0x0052a8,3,
-0x0052c0,8,
-0x005300,6,
-0x005360,4,
-0x005380,8,
-0x0053b8,8,
-0x0053dc,10,
-0x005428,1,
-0x005450,1,
-0x005478,1,
-0x0054a0,1,
-0x0055ac,1,
-0x0055d8,4,
-0x005600,6,
-0x005620,6,
-0x005640,3,
-0x005800,13,
-0x005840,6,
-0x005860,3,
-0x005880,2,
-0x005904,2,
-0x005918,1,
-0x005940,1,
-0x008400,1,
-0x008408,14,
-0x008480,1,
-0x008488,18,
-0x008500,9,
-0x008534,2,
-0x00854c,4,
-0x00856c,11,
-0x0085ac,8,
-0x0085d0,1,
-0x008604,1,
-0x00860c,13,
-0x008644,1,
-0x008654,3,
-0x008664,1,
-0x00866c,8,
-0x0086a8,3,
-0x0086c0,8,
-0x008700,6,
-0x008760,4,
-0x008780,8,
-0x0087b8,8,
-0x0087dc,10,
-0x008808,14,
-0x008880,1,
-0x008888,18,
-0x008900,9,
-0x008934,2,
-0x00894c,4,
-0x00896c,11,
-0x0089ac,8,
-0x0089d0,1,
-0x008a04,1,
-0x008a0c,13,
-0x008a44,1,
-0x008a54,3,
-0x008a64,1,
-0x008a6c,8,
-0x008aa8,3,
-0x008ac0,8,
-0x008b00,6,
-0x008b60,4,
-0x008b80,8,
-0x008bb8,8,
-0x008bdc,10,
-0x008c08,14,
-0x008c80,1,
-0x008c88,18,
-0x008d00,9,
-0x008d34,2,
-0x008d4c,4,
-0x008d6c,11,
-0x008dac,8,
-0x008dd0,1,
-0x008e04,1,
-0x008e0c,13,
-0x008e44,1,
-0x008e54,3,
-0x008e64,1,
-0x008e6c,8,
-0x008ea8,3,
-0x008ec0,8,
-0x008f00,6,
-0x008f60,4,
-0x008f80,8,
-0x008fb8,8,
-0x008fdc,10,
-0x009008,14,
-0x009080,1,
-0x009088,18,
-0x009100,9,
-0x009134,2,
-0x00914c,4,
-0x00916c,11,
-0x0091ac,8,
-0x0091d0,1,
-0x009204,1,
-0x00920c,13,
-0x009244,1,
-0x009254,3,
-0x009264,1,
-0x00926c,8,
-0x0092a8,3,
-0x0092c0,8,
-0x009300,6,
-0x009360,4,
-0x009380,8,
-0x0093b8,8,
-0x0093dc,10,
-0x009408,14,
-0x009480,1,
-0x009488,18,
-0x009500,9,
-0x009534,2,
-0x00954c,4,
-0x00956c,11,
-0x0095ac,8,
-0x0095d0,1,
-0x009604,1,
-0x00960c,13,
-0x009644,1,
-0x009654,3,
-0x009664,1,
-0x00966c,8,
-0x0096a8,3,
-0x0096c0,8,
-0x009700,6,
-0x009760,4,
-0x009780,8,
-0x0097b8,8,
-0x0097dc,10,
-0x009808,14,
-0x009880,1,
-0x009888,18,
-0x009900,9,
-0x009934,2,
-0x00994c,4,
-0x00996c,11,
-0x0099ac,8,
-0x0099d0,1,
-0x009a04,1,
-0x009a0c,13,
-0x009a44,1,
-0x009a54,3,
-0x009a64,1,
-0x009a6c,8,
-0x009aa8,3,
-0x009ac0,8,
-0x009b00,6,
-0x009b60,4,
-0x009b80,8,
-0x009bb8,8,
-0x009bdc,10,
-0x009c08,14,
-0x009c80,1,
-0x009c88,18,
-0x009d00,9,
-0x009d34,2,
-0x009d4c,4,
-0x009d6c,11,
-0x009dac,8,
-0x009dd0,1,
-0x009e04,1,
-0x009e0c,13,
-0x009e44,1,
-0x009e54,3,
-0x009e64,1,
-0x009e6c,8,
-0x009ea8,3,
-0x009ec0,8,
-0x009f00,6,
-0x009f60,4,
-0x009f80,8,
-0x009fb8,8,
-0x009fdc,10,
-0x00a008,14,
-0x00a080,1,
-0x00a088,18,
-0x00a100,9,
-0x00a134,2,
-0x00a14c,4,
-0x00a16c,11,
-0x00a1ac,8,
-0x00a1d0,1,
-0x00a204,1,
-0x00a20c,13,
-0x00a244,1,
-0x00a254,3,
-0x00a264,1,
-0x00a26c,8,
-0x00a2a8,3,
-0x00a2c0,8,
-0x00a300,6,
-0x00a360,4,
-0x00a380,8,
-0x00a3b8,8,
-0x00a3dc,10,
-0x00a408,14,
-0x00a480,1,
-0x00a488,18,
-0x00a500,9,
-0x00a534,2,
-0x00a54c,4,
-0x00a56c,11,
-0x00a5ac,8,
-0x00a5d0,1,
-0x00a604,1,
-0x00a60c,13,
-0x00a644,1,
-0x00a654,3,
-0x00a664,1,
-0x00a66c,8,
-0x00a6a8,3,
-0x00a6c0,8,
-0x00a700,6,
-0x00a760,4,
-0x00a780,8,
-0x00a7b8,8,
-0x00a7dc,10,
-0x00a808,14,
-0x00a880,1,
-0x00a888,18,
-0x00a900,9,
-0x00a934,2,
-0x00a94c,4,
-0x00a96c,11,
-0x00a9ac,8,
-0x00a9d0,1,
-0x00aa04,1,
-0x00aa0c,13,
-0x00aa44,1,
-0x00aa54,3,
-0x00aa64,1,
-0x00aa6c,8,
-0x00aaa8,3,
-0x00aac0,8,
-0x00ab00,6,
-0x00ab60,4,
-0x00ab80,8,
-0x00abb8,8,
-0x00abdc,10,
-0x00ac08,14,
-0x00ac80,1,
-0x00ac88,18,
-0x00ad00,9,
-0x00ad34,2,
-0x00ad4c,4,
-0x00ad6c,11,
-0x00adac,8,
-0x00add0,1,
-0x00ae04,1,
-0x00ae0c,13,
-0x00ae44,1,
-0x00ae54,3,
-0x00ae64,1,
-0x00ae6c,8,
-0x00aea8,3,
-0x00aec0,8,
-0x00af00,6,
-0x00af60,4,
-0x00af80,8,
-0x00afb8,8,
-0x00afdc,10,
-0x00b008,14,
-0x00b080,1,
-0x00b088,18,
-0x00b100,9,
-0x00b134,2,
-0x00b14c,4,
-0x00b16c,11,
-0x00b1ac,8,
-0x00b1d0,1,
-0x00b204,1,
-0x00b20c,13,
-0x00b244,1,
-0x00b254,3,
-0x00b264,1,
-0x00b26c,8,
-0x00b2a8,3,
-0x00b2c0,8,
-0x00b300,6,
-0x00b360,4,
-0x00b380,8,
-0x00b3b8,8,
-0x00b3dc,10,
-0x00b408,14,
-0x00b480,1,
-0x00b488,18,
-0x00b500,9,
-0x00b534,2,
-0x00b54c,4,
-0x00b56c,11,
-0x00b5ac,8,
-0x00b5d0,1,
-0x00b604,1,
-0x00b60c,13,
-0x00b644,1,
-0x00b654,3,
-0x00b664,1,
-0x00b66c,8,
-0x00b6a8,3,
-0x00b6c0,8,
-0x00b700,6,
-0x00b760,4,
-0x00b780,8,
-0x00b7b8,8,
-0x00b7dc,10,
-0x00b808,14,
-0x00b880,1,
-0x00b888,18,
-0x00b900,9,
-0x00b934,2,
-0x00b94c,4,
-0x00b96c,11,
-0x00b9ac,8,
-0x00b9d0,1,
-0x00ba04,1,
-0x00ba0c,13,
-0x00ba44,1,
-0x00ba54,3,
-0x00ba64,1,
-0x00ba6c,8,
-0x00baa8,3,
-0x00bac0,8,
-0x00bb00,6,
-0x00bb60,4,
-0x00bb80,8,
-0x00bbb8,8,
-0x00bbdc,10,
-0x00bc08,14,
-0x00bc80,1,
-0x00bc88,18,
-0x00bd00,9,
-0x00bd34,2,
-0x00bd4c,4,
-0x00bd6c,11,
-0x00bdac,8,
-0x00bdd0,1,
-0x00be04,1,
-0x00be0c,13,
-0x00be44,1,
-0x00be54,3,
-0x00be64,1,
-0x00be6c,8,
-0x00bea8,3,
-0x00bec0,8,
-0x00bf00,6,
-0x00bf60,4,
-0x00bf80,8,
-0x00bfb8,8,
-0x00bfdc,10,
-0x00c008,14,
-0x00c080,1,
-0x00c088,18,
-0x00c100,9,
-0x00c134,2,
-0x00c14c,4,
-0x00c16c,11,
-0x00c1ac,8,
-0x00c1d0,1,
-0x00c204,1,
-0x00c20c,13,
-0x00c244,1,
-0x00c254,3,
-0x00c264,1,
-0x00c26c,8,
-0x00c2a8,3,
-0x00c2c0,8,
-0x00c300,6,
-0x00c360,4,
-0x00c380,8,
-0x00c3b8,8,
-0x00c3dc,10,
-0x00c408,14,
-0x00c480,1,
-0x00c488,18,
-0x00c500,9,
-0x00c534,2,
-0x00c54c,4,
-0x00c56c,11,
-0x00c5ac,8,
-0x00c5d0,1,
-0x00c604,1,
-0x00c60c,13,
-0x00c644,1,
-0x00c654,3,
-0x00c664,1,
-0x00c66c,8,
-0x00c6a8,3,
-0x00c6c0,8,
-0x00c700,6,
-0x00c760,4,
-0x00c780,8,
-0x00c7b8,8,
-0x00c7dc,10,
-0x00c808,14,
-0x00c880,1,
-0x00c888,18,
-0x00c900,9,
-0x00c934,2,
-0x00c94c,4,
-0x00c96c,11,
-0x00c9ac,8,
-0x00c9d0,1,
-0x00ca04,1,
-0x00ca0c,13,
-0x00ca44,1,
-0x00ca54,3,
-0x00ca64,1,
-0x00ca6c,8,
-0x00caa8,3,
-0x00cac0,8,
-0x00cb00,6,
-0x00cb60,4,
-0x00cb80,8,
-0x00cbb8,8,
-0x00cbdc,10,
-0x00cc08,14,
-0x00cc80,1,
-0x00cc88,18,
-0x00cd00,9,
-0x00cd34,2,
-0x00cd4c,4,
-0x00cd6c,11,
-0x00cdac,8,
-0x00cdd0,1,
-0x00ce04,1,
-0x00ce0c,13,
-0x00ce44,1,
-0x00ce54,3,
-0x00ce64,1,
-0x00ce6c,8,
-0x00cea8,3,
-0x00cec0,8,
-0x00cf00,6,
-0x00cf60,4,
-0x00cf80,8,
-0x00cfb8,8,
-0x00cfdc,10,
-0x00d008,14,
-0x00d080,1,
-0x00d088,18,
-0x00d100,9,
-0x00d134,2,
-0x00d14c,4,
-0x00d16c,11,
-0x00d1ac,8,
-0x00d1d0,1,
-0x00d204,1,
-0x00d20c,13,
-0x00d244,1,
-0x00d254,3,
-0x00d264,1,
-0x00d26c,8,
-0x00d2a8,3,
-0x00d2c0,8,
-0x00d300,6,
-0x00d360,4,
-0x00d380,8,
-0x00d3b8,8,
-0x00d3dc,10,
-0x00d428,1,
-0x00d450,1,
-0x00d478,1,
-0x00d4a0,1,
-0x00d5ac,1,
-0x00d5d8,4,
-0x00d600,6,
-0x00d620,6,
-0x00d640,3,
-0x00d800,13,
-0x00d840,6,
-0x00d860,3,
-0x00d880,2,
-0x00d904,2,
-0x00d918,1,
-0x00d940,1,
-0x010000,1,
-0x010008,10,
-0x010034,16,
-0x010080,33,
-0x010110,5,
-0x010128,2,
-0x010134,1,
-0x01013c,13,
-0x010174,1,
-0x01017c,7,
-0x0101a0,17,
-0x0101e8,3,
-0x010200,1,
-0x010208,10,
-0x010234,16,
-0x010280,33,
-0x010310,5,
-0x010328,2,
-0x010334,1,
-0x01033c,13,
-0x010374,1,
-0x01037c,7,
-0x0103a0,17,
-0x0103e8,3,
-0x010400,1,
-0x010408,10,
-0x010434,16,
-0x010480,33,
-0x010510,5,
-0x010528,2,
-0x010534,1,
-0x01053c,13,
-0x010574,1,
-0x01057c,7,
-0x0105a0,17,
-0x0105e8,3,
-0x010600,1,
-0x010608,10,
-0x010634,16,
-0x010680,33,
-0x010710,5,
-0x010728,2,
-0x010734,1,
-0x01073c,13,
-0x010774,1,
-0x01077c,7,
-0x0107a0,17,
-0x0107e8,3,
-0x010800,1,
-0x010808,10,
-0x010834,16,
-0x010880,33,
-0x010910,5,
-0x010928,2,
-0x010934,1,
-0x01093c,13,
-0x010974,1,
-0x01097c,7,
-0x0109a0,17,
-0x0109e8,3,
-0x010a00,1,
-0x010a08,10,
-0x010a34,16,
-0x010a80,33,
-0x010b10,5,
-0x010b28,2,
-0x010b34,1,
-0x010b3c,13,
-0x010b74,1,
-0x010b7c,7,
-0x010ba0,17,
-0x010be8,3,
-0x010c00,1,
-0x010c08,10,
-0x010c34,16,
-0x010c80,33,
-0x010d10,5,
-0x010d28,2,
-0x010d34,1,
-0x010d3c,13,
-0x010d74,1,
-0x010d7c,7,
-0x010da0,17,
-0x010de8,3,
-0x010e00,1,
-0x010e08,10,
-0x010e34,16,
-0x010e80,33,
-0x010f10,5,
-0x010f28,2,
-0x010f34,1,
-0x010f3c,13,
-0x010f74,1,
-0x010f7c,7,
-0x010fa0,17,
-0x010fe8,3,
-0x011000,1,
-0x011008,10,
-0x011034,16,
-0x011080,33,
-0x011110,5,
-0x011128,2,
-0x011134,1,
-0x01113c,13,
-0x011174,1,
-0x01117c,7,
-0x0111a0,17,
-0x0111e8,3,
-0x011200,1,
-0x011208,10,
-0x011234,16,
-0x011280,33,
-0x011310,5,
-0x011328,2,
-0x011334,1,
-0x01133c,13,
-0x011374,1,
-0x01137c,7,
-0x0113a0,17,
-0x0113e8,3,
-0x011400,1,
-0x011408,10,
-0x011434,16,
-0x011480,33,
-0x011510,5,
-0x011528,2,
-0x011534,1,
-0x01153c,13,
-0x011574,1,
-0x01157c,7,
-0x0115a0,17,
-0x0115e8,3,
-0x011600,1,
-0x011608,10,
-0x011634,16,
-0x011680,33,
-0x011710,5,
-0x011728,2,
-0x011734,1,
-0x01173c,13,
-0x011774,1,
-0x01177c,7,
-0x0117a0,17,
-0x0117e8,3,
-0x011800,1,
-0x011808,10,
-0x011834,16,
-0x011880,33,
-0x011910,5,
-0x011928,2,
-0x011934,1,
-0x01193c,13,
-0x011974,1,
-0x01197c,7,
-0x0119a0,17,
-0x0119e8,3,
-0x011a00,1,
-0x011a08,10,
-0x011a34,16,
-0x011a80,33,
-0x011b10,5,
-0x011b28,2,
-0x011b34,1,
-0x011b3c,13,
-0x011b74,1,
-0x011b7c,7,
-0x011ba0,17,
-0x011be8,3,
-0x011c00,1,
-0x011c08,10,
-0x011c34,16,
-0x011c80,33,
-0x011d10,5,
-0x011d28,2,
-0x011d34,1,
-0x011d3c,13,
-0x011d74,1,
-0x011d7c,7,
-0x011da0,17,
-0x011de8,3,
-0x011e00,1,
-0x011e08,10,
-0x011e34,16,
-0x011e80,33,
-0x011f10,5,
-0x011f28,2,
-0x011f34,1,
-0x011f3c,13,
-0x011f74,1,
-0x011f7c,7,
-0x011fa0,17,
-0x011fe8,3,
-0x012000,1,
-0x012008,10,
-0x012034,16,
-0x012080,33,
-0x012110,5,
-0x012128,2,
-0x012134,1,
-0x01213c,13,
-0x012174,1,
-0x01217c,7,
-0x0121a0,17,
-0x0121e8,3,
-0x012200,1,
-0x012208,10,
-0x012234,16,
-0x012280,33,
-0x012310,5,
-0x012328,2,
-0x012334,1,
-0x01233c,13,
-0x012374,1,
-0x01237c,7,
-0x0123a0,17,
-0x0123e8,3,
-0x012800,2,
-0x01280c,37,
-0x0128a4,64,
-0x012a00,84,
-0x012b54,2,
-0x012b7c,1,
-0x012b84,1,
-0x012b8c,4,
-0x012ba4,1,
-0x012bac,75,
-0x012d00,60,
-0x012dfc,7,
-0x012e20,6,
-0x012e40,6,
-0x012e60,6,
-0x012e80,3,
-0x012f00,14,
-0x012f40,1,
-0x013000,3,
-0x013028,3,
-0x013050,3,
-0x013078,3,
-0x0130a0,6,
-0x0131ac,1,
-0x0131d8,4,
-0x013200,6,
-0x013220,6,
-0x013240,6,
-0x013260,6,
-0x013280,6,
-0x0132a0,6,
-0x0132c0,3,
-0x013400,6,
-0x013420,3,
-0x013440,3,
-0x013500,13,
-0x013540,1,
-0x013900,1,
-0x014000,1,
-0x014008,10,
-0x014034,16,
-0x014080,33,
-0x014110,5,
-0x014128,2,
-0x014134,1,
-0x01413c,13,
-0x014174,1,
-0x01417c,7,
-0x0141a0,17,
-0x0141e8,3,
-0x014200,1,
-0x014208,10,
-0x014234,16,
-0x014280,33,
-0x014310,5,
-0x014328,2,
-0x014334,1,
-0x01433c,13,
-0x014374,1,
-0x01437c,7,
-0x0143a0,17,
-0x0143e8,3,
-0x014400,1,
-0x014408,10,
-0x014434,16,
-0x014480,33,
-0x014510,5,
-0x014528,2,
-0x014534,1,
-0x01453c,13,
-0x014574,1,
-0x01457c,7,
-0x0145a0,17,
-0x0145e8,3,
-0x014600,1,
-0x014608,10,
-0x014634,16,
-0x014680,33,
-0x014710,5,
-0x014728,2,
-0x014734,1,
-0x01473c,13,
-0x014774,1,
-0x01477c,7,
-0x0147a0,17,
-0x0147e8,3,
-0x014800,1,
-0x014808,10,
-0x014834,16,
-0x014880,33,
-0x014910,5,
-0x014928,2,
-0x014934,1,
-0x01493c,13,
-0x014974,1,
-0x01497c,7,
-0x0149a0,17,
-0x0149e8,3,
-0x014a00,1,
-0x014a08,10,
-0x014a34,16,
-0x014a80,33,
-0x014b10,5,
-0x014b28,2,
-0x014b34,1,
-0x014b3c,13,
-0x014b74,1,
-0x014b7c,7,
-0x014ba0,17,
-0x014be8,3,
-0x014c00,1,
-0x014c08,10,
-0x014c34,16,
-0x014c80,33,
-0x014d10,5,
-0x014d28,2,
-0x014d34,1,
-0x014d3c,13,
-0x014d74,1,
-0x014d7c,7,
-0x014da0,17,
-0x014de8,3,
-0x014e00,1,
-0x014e08,10,
-0x014e34,16,
-0x014e80,33,
-0x014f10,5,
-0x014f28,2,
-0x014f34,1,
-0x014f3c,13,
-0x014f74,1,
-0x014f7c,7,
-0x014fa0,17,
-0x014fe8,3,
-0x015000,1,
-0x015008,10,
-0x015034,16,
-0x015080,33,
-0x015110,5,
-0x015128,2,
-0x015134,1,
-0x01513c,13,
-0x015174,1,
-0x01517c,7,
-0x0151a0,17,
-0x0151e8,3,
-0x015200,1,
-0x015208,10,
-0x015234,16,
-0x015280,33,
-0x015310,5,
-0x015328,2,
-0x015334,1,
-0x01533c,13,
-0x015374,1,
-0x01537c,7,
-0x0153a0,17,
-0x0153e8,3,
-0x015400,1,
-0x015408,10,
-0x015434,16,
-0x015480,33,
-0x015510,5,
-0x015528,2,
-0x015534,1,
-0x01553c,13,
-0x015574,1,
-0x01557c,7,
-0x0155a0,17,
-0x0155e8,3,
-0x015600,1,
-0x015608,10,
-0x015634,16,
-0x015680,33,
-0x015710,5,
-0x015728,2,
-0x015734,1,
-0x01573c,13,
-0x015774,1,
-0x01577c,7,
-0x0157a0,17,
-0x0157e8,3,
-0x015800,1,
-0x015808,10,
-0x015834,16,
-0x015880,33,
-0x015910,5,
-0x015928,2,
-0x015934,1,
-0x01593c,13,
-0x015974,1,
-0x01597c,7,
-0x0159a0,17,
-0x0159e8,3,
-0x015a00,1,
-0x015a08,10,
-0x015a34,16,
-0x015a80,33,
-0x015b10,5,
-0x015b28,2,
-0x015b34,1,
-0x015b3c,13,
-0x015b74,1,
-0x015b7c,7,
-0x015ba0,17,
-0x015be8,3,
-0x015c00,1,
-0x015c08,10,
-0x015c34,16,
-0x015c80,33,
-0x015d10,5,
-0x015d28,2,
-0x015d34,1,
-0x015d3c,13,
-0x015d74,1,
-0x015d7c,7,
-0x015da0,17,
-0x015de8,3,
-0x015e00,1,
-0x015e08,10,
-0x015e34,16,
-0x015e80,33,
-0x015f10,5,
-0x015f28,2,
-0x015f34,1,
-0x015f3c,13,
-0x015f74,1,
-0x015f7c,7,
-0x015fa0,17,
-0x015fe8,3,
-0x016000,1,
-0x016008,10,
-0x016034,16,
-0x016080,33,
-0x016110,5,
-0x016128,2,
-0x016134,1,
-0x01613c,13,
-0x016174,1,
-0x01617c,7,
-0x0161a0,17,
-0x0161e8,3,
-0x016200,1,
-0x016208,10,
-0x016234,16,
-0x016280,33,
-0x016310,5,
-0x016328,2,
-0x016334,1,
-0x01633c,13,
-0x016374,1,
-0x01637c,7,
-0x0163a0,17,
-0x0163e8,3,
-0x016800,2,
-0x01680c,37,
-0x0168a4,64,
-0x016a00,84,
-0x016b54,2,
-0x016b7c,1,
-0x016b84,1,
-0x016b8c,4,
-0x016ba4,1,
-0x016bac,75,
-0x016d00,60,
-0x016dfc,7,
-0x016e20,6,
-0x016e40,6,
-0x016e60,6,
-0x016e80,3,
-0x016f00,14,
-0x016f40,1,
-0x017000,3,
-0x017028,3,
-0x017050,3,
-0x017078,3,
-0x0170a0,6,
-0x0171ac,1,
-0x0171d8,4,
-0x017200,6,
-0x017220,6,
-0x017240,6,
-0x017260,6,
-0x017280,6,
-0x0172a0,6,
-0x0172c0,3,
-0x017400,6,
-0x017420,3,
-0x017440,3,
-0x017500,13,
-0x017540,1,
-0x017900,1,
-0x018000,9,
-0x018030,8,
-0x018080,9,
-0x0180b0,8,
-0x018100,9,
-0x018130,8,
-0x018180,9,
-0x0181b0,8,
-0x018200,9,
-0x018230,8,
-0x018280,9,
-0x0182b0,8,
-0x018300,9,
-0x018330,8,
-0x018380,9,
-0x0183b0,8,
-0x018400,9,
-0x018430,8,
-0x018480,9,
-0x0184b0,8,
-0x018500,9,
-0x018530,8,
-0x018580,9,
-0x0185b0,8,
-0x018600,9,
-0x018630,8,
-0x018680,9,
-0x0186b0,8,
-0x018700,9,
-0x018730,8,
-0x018780,9,
-0x0187b0,8,
-0x018800,9,
-0x018830,8,
-0x018880,9,
-0x0188b0,8,
-0x018900,9,
-0x018930,8,
-0x018980,9,
-0x0189b0,8,
-0x018a00,9,
-0x018a30,8,
-0x018a80,9,
-0x018ab0,8,
-0x018b00,9,
-0x018b30,8,
-0x018b80,9,
-0x018bb0,8,
-0x018c00,9,
-0x018c30,8,
-0x018c80,9,
-0x018cb0,8,
-0x018d00,9,
-0x018d30,8,
-0x018d80,9,
-0x018db0,8,
-0x018e00,9,
-0x018e30,8,
-0x018e80,9,
-0x018eb0,8,
-0x018f00,9,
-0x018f30,8,
-0x018f80,9,
-0x018fb0,8,
-0x019000,9,
-0x019030,8,
-0x019080,9,
-0x0190b0,8,
-0x019100,9,
-0x019130,8,
-0x019180,9,
-0x0191b0,8,
-0x019200,6,
-0x019220,3,
-0x019230,10,
-0x019260,3,
-0x019270,10,
-0x0192a0,3,
-0x0192b0,10,
-0x0192e0,3,
-0x0192f0,10,
-0x019320,3,
-0x019330,10,
-0x019360,3,
-0x019370,10,
-0x0193a0,3,
-0x0193b0,10,
-0x0193e0,3,
-0x0193f0,10,
-0x019420,3,
-0x019430,10,
-0x019460,3,
-0x019470,10,
-0x0194a0,3,
-0x0194b0,10,
-0x0194e0,3,
-0x0194f0,10,
-0x019520,3,
-0x019530,10,
-0x019560,3,
-0x019570,10,
-0x0195a0,3,
-0x0195b0,10,
-0x0195e0,3,
-0x0195f0,10,
-0x019620,3,
-0x019630,10,
-0x019660,3,
-0x019670,10,
-0x0196a0,3,
-0x0196b0,10,
-0x0196e0,3,
-0x0196f0,10,
-0x019720,3,
-0x019730,10,
-0x019760,3,
-0x019770,10,
-0x0197a0,3,
-0x0197b0,10,
-0x0197e0,3,
-0x0197f0,10,
-0x019820,3,
-0x019830,10,
-0x019860,3,
-0x019870,10,
-0x0198a0,3,
-0x0198b0,10,
-0x0198e0,3,
-0x0198f0,10,
-0x019920,3,
-0x019930,10,
-0x019960,3,
-0x019970,10,
-0x0199a0,3,
-0x0199b0,10,
-0x0199e0,3,
-0x0199f0,10,
-0x019a20,3,
-0x019a30,10,
-0x019a60,3,
-0x019a70,10,
-0x019aa0,3,
-0x019ab0,10,
-0x019ae0,3,
-0x019af0,4,
-0x01a400,13,
-0x01a440,6,
-0x01a460,3,
-0x01a480,8,
-0x01a4b0,7,
-0x01a4d0,3,
-0x01a500,6,
-0x01a520,6,
-0x01a540,6,
-0x01a560,6,
-0x01a580,6,
-0x01a5a0,6,
-0x01a5c0,6,
-0x01a5e0,6,
-0x01a600,6,
-0x01a620,6,
-0x01a640,6,
-0x01a660,6,
-0x01a680,6,
-0x01a6a0,6,
-0x01a6c0,6,
-0x01a6e0,6,
-0x01a700,6,
-0x01a720,6,
-0x01a740,6,
-0x01a760,6,
-0x01a780,6,
-0x01a7a0,6,
-0x01a7c0,6,
-0x01a7e0,6,
-0x01a800,6,
-0x01a820,6,
-0x01a840,6,
-0x01a860,6,
-0x01a880,6,
-0x01a8a0,6,
-0x01a8c0,6,
-0x01a8e0,6,
-0x01a900,6,
-0x01a920,6,
-0x01a940,6,
-0x01a960,6,
-0x01ab00,6,
-0x01ab20,3,
-0x01ab30,10,
-0x01ab60,3,
-0x01ab70,10,
-0x01aba0,3,
-0x01abb0,10,
-0x01abe0,3,
-0x01abf0,9,
-0x01acf4,3,
-0x01b000,38,
-0x01b100,37,
-0x01b200,18,
-0x01b400,6,
-0x01b420,6,
-0x01b440,6,
-0x01b460,6,
-0x01b480,6,
-0x01b4a0,6,
-0x01b4c0,6,
-0x01b4e0,6,
-0x01b500,6,
-0x01b520,6,
-0x01b540,6,
-0x01b560,6,
-0x01b580,6,
-0x01b5a0,6,
-0x01b5c0,6,
-0x01b5e0,6,
-0x01b600,6,
-0x01b620,6,
-0x01b640,3,
-0x01b800,6,
-0x01b820,6,
-0x01b840,6,
-0x01b860,6,
-0x01b880,6,
-0x01b8a0,6,
-0x01b8c0,6,
-0x01b8e0,6,
-0x01b900,6,
-0x01b920,6,
-0x01b940,6,
-0x01b960,6,
-0x01b980,6,
-0x01b9a0,6,
-0x01b9c0,6,
-0x01b9e0,6,
-0x01ba00,6,
-0x01ba20,6,
-0x01ba40,6,
-0x01ba60,3,
-0x01bc00,2,
-0x01c000,22,
-0x01c060,3,
-0x01c070,26,
-0x01c0e0,3,
-0x01c0f0,26,
-0x01c160,3,
-0x01c170,26,
-0x01c1e0,3,
-0x01c1f0,26,
-0x01c260,3,
-0x01c270,26,
-0x01c2e0,3,
-0x01c2f0,26,
-0x01c360,3,
-0x01c370,26,
-0x01c3e0,3,
-0x01c3f0,26,
-0x01c460,3,
-0x01c470,26,
-0x01c4e0,3,
-0x01c4f0,26,
-0x01c560,3,
-0x01c570,26,
-0x01c5e0,3,
-0x01c5f0,26,
-0x01c660,3,
-0x01c670,26,
-0x01c6e0,3,
-0x01c6f0,26,
-0x01c760,3,
-0x01c770,26,
-0x01c7e0,3,
-0x01c7f0,26,
-0x01c860,3,
-0x01c870,26,
-0x01c8e0,3,
-0x01c8f0,26,
-0x01c960,3,
-0x01c970,26,
-0x01c9e0,3,
-0x01c9f0,26,
-0x01ca60,3,
-0x01ca70,26,
-0x01cae0,3,
-0x01caf0,26,
-0x01cb60,3,
-0x01cb70,26,
-0x01cbe0,3,
-0x01cbf0,26,
-0x01cc60,3,
-0x01cc70,26,
-0x01cce0,3,
-0x01ccf0,26,
-0x01cd60,3,
-0x01cd70,26,
-0x01cde0,3,
-0x01cdf0,26,
-0x01ce60,3,
-0x01ce70,26,
-0x01cee0,3,
-0x01cef0,26,
-0x01cf60,3,
-0x01cf70,26,
-0x01cfe0,3,
-0x01cff0,26,
-0x01d060,3,
-0x01d070,26,
-0x01d0e0,3,
-0x01d0f0,26,
-0x01d160,3,
-0x01d170,26,
-0x01d1e0,3,
-0x01d1f0,6,
-0x01d800,6,
-0x01d820,4,
-0x01d840,8,
-0x01d87c,7,
-0x01d8a0,4,
-0x01d8c0,8,
-0x01d8fc,7,
-0x01d920,4,
-0x01d940,8,
-0x01d97c,7,
-0x01d9a0,4,
-0x01d9c0,8,
-0x01d9fc,7,
-0x01da20,4,
-0x01da40,8,
-0x01da7c,7,
-0x01daa0,4,
-0x01dac0,8,
-0x01dafc,7,
-0x01db20,4,
-0x01db40,8,
-0x01db7c,7,
-0x01dba0,4,
-0x01dbc0,8,
-0x01dbfc,7,
-0x01dc20,4,
-0x01dc40,8,
-0x01dc7c,7,
-0x01dca0,4,
-0x01dcc0,8,
-0x01dcfc,7,
-0x01dd20,4,
-0x01dd40,8,
-0x01dd7c,7,
-0x01dda0,4,
-0x01ddc0,8,
-0x01ddfc,7,
-0x01de20,4,
-0x01de40,8,
-0x01de7c,7,
-0x01dea0,4,
-0x01dec0,8,
-0x01defc,7,
-0x01df20,4,
-0x01df40,8,
-0x01df7c,7,
-0x01dfa0,4,
-0x01dfc0,8,
-0x01dffc,7,
-0x01e020,4,
-0x01e040,8,
-0x01e07c,7,
-0x01e0a0,4,
-0x01e0c0,8,
-0x01e0fc,7,
-0x01e120,4,
-0x01e140,8,
-0x01e17c,7,
-0x01e1a0,4,
-0x01e1c0,8,
-0x01e1fc,7,
-0x01e220,4,
-0x01e240,8,
-0x01e27c,7,
-0x01e2a0,4,
-0x01e2c0,8,
-0x01e2fc,7,
-0x01e320,4,
-0x01e340,8,
-0x01e37c,7,
-0x01e3a0,4,
-0x01e3c0,8,
-0x01e3fc,7,
-0x01e420,4,
-0x01e440,8,
-0x01e47c,7,
-0x01e4a0,4,
-0x01e4c0,8,
-0x01e4fc,7,
-0x01e520,4,
-0x01e540,8,
-0x01e57c,7,
-0x01e5a0,4,
-0x01e5c0,8,
-0x01e5fc,7,
-0x01e620,4,
-0x01e640,8,
-0x01e67c,7,
-0x01e6a0,4,
-0x01e6c0,8,
-0x01e6fc,7,
-0x01e720,4,
-0x01e740,8,
-0x01e77c,7,
-0x01e7a0,4,
-0x01e7c0,8,
-0x01e7fc,7,
-0x01e820,4,
-0x01e840,8,
-0x01e87c,7,
-0x01e8a0,4,
-0x01e8c0,8,
-0x01e8fc,7,
-0x01e920,4,
-0x01e940,8,
-0x01e97c,7,
-0x01e9a0,4,
-0x01e9c0,8,
-0x01e9fc,7,
-0x01ea20,4,
-0x01ea40,8,
-0x01ea7c,7,
-0x01eaa0,4,
-0x01eac0,8,
-0x01eafc,1,
-0x01f408,13,
-0x01f440,1,
-0x01f448,1,
-0x01f45c,4,
-0x01f470,10,
-0x01f4a0,6,
-0x01f4c0,6,
-0x01f4e0,3,
-0x01f800,4,
-0x01f828,4,
-0x01f850,4,
-0x01f878,4,
-0x01f8a0,4,
-0x01f9ac,1,
-0x01f9d8,4,
-0x01fa00,6,
-0x01fa20,6,
-0x01fa40,6,
-0x01fa60,6,
-0x01fa80,6,
-0x01faa0,6,
-0x01fac0,6,
-0x01fae0,6,
-0x01fb00,3,
-0x01fc00,13,
-0x01fc40,3,
-0x01fc50,6,
-0x01fc6c,1,
-0x01fc80,6,
-0x01fca0,6,
-0x01fcc0,6,
-0x01fce0,3,
-0x01fd00,1,
-0x01fd80,6,
-0x01fda0,6,
-0x01fdc0,6,
-0x01fde0,3,
-0x01fe00,1,
-0x01fe08,4,
-0x01fffc,1,
-0x049000,6,
-0x049020,20,
-0x049080,10,
-0x0490b0,1,
-0x0490c0,3,
-0x0490d0,3,
-0x049100,2,
-0x049110,3,
-0x049120,4,
-0x049140,7,
-0x049160,7,
-0x049180,3,
-0x049190,1,
-0x049200,6,
-0x049220,20,
-0x049280,10,
-0x0492b0,1,
-0x0492c0,3,
-0x0492d0,3,
-0x049300,2,
-0x049310,3,
-0x049320,4,
-0x049340,7,
-0x049360,7,
-0x049380,3,
-0x049390,1,
-0x049400,6,
-0x049420,20,
-0x049480,10,
-0x0494b0,1,
-0x0494c0,3,
-0x0494d0,3,
-0x049500,2,
-0x049510,3,
-0x049520,4,
-0x049540,7,
-0x049560,7,
-0x049580,3,
-0x049590,1,
-0x049608,2,
-0x049620,1,
-0x049648,2,
-0x049660,1,
-0x049688,2,
-0x0496a0,1,
-0x0496c8,2,
-0x0496e0,1,
-0x049708,2,
-0x049720,1,
-0x049748,2,
-0x049760,1,
-0x049788,2,
-0x0497a0,1,
-0x0497c8,2,
-0x0497e0,1,
-0x049804,28,
-0x049880,3,
-0x0498a0,2,
-0x0498c0,1,
-0x0498e0,3,
-0x049a00,13,
-0x049a40,2,
-0x049a4c,4,
-0x050400,11,
-0x050430,6,
-0x050460,3,
-0x0504a0,3,
-0x050700,13,
-0x050740,7,
-0x050760,7,
-0x051800,162,
-0x051a90,2,
-0x051aa0,2,
-0x051c00,8,
-0x051d00,26,
-0x051d84,1,
-0x051d94,9,
-0x051e00,16,
-0x058400,12,
-0x058440,7,
-0x058460,2,
-0x058480,12,
-0x0584c0,7,
-0x0584e0,2,
-0x058500,6,
-0x058520,6,
-0x058540,3,
-0x058584,1,
-0x058590,9,
-0x0585e0,7,
-0x058600,10,
-0x058640,10,
-0x058680,15,
-0x0586d8,9,
-0x058800,6,
-0x058820,6,
-0x058840,6,
-0x058860,6,
-0x058880,6,
-0x0588a0,6,
-0x0588c0,6,
-0x0588e0,6,
-0x058900,3,
-0x058a00,6,
-0x058b00,6,
-0x058b20,6,
-0x058b40,6,
-0x058b60,6,
-0x058b80,6,
-0x058ba0,6,
-0x058bc0,3,
-0x060000,32,
-0x060200,64,
-0x060400,96,
-0x060600,2,
-0x060800,96,
-0x060a00,2,
-0x060c20,8,
-0x060f80,6,
-0x060fa0,7,
-0x060fd8,2,
-0x060fe4,1,
-0x060ff0,10,
-0x061020,16,
-0x061084,1,
-0x0610c0,16,
-0x061204,1,
-0x061220,8,
-0x061250,3,
-0x061260,5,
-0x061280,6,
-0x0612a0,6,
-0x061300,3,
-0x061310,2,
-0x061320,2,
-0x061330,1,
-0x061340,3,
-0x062000,16,
-0x062060,7,
-0x062080,5,
-0x062100,2,
-0x06210c,2,
-0x062118,1,
-0x062120,1,
-0x062180,10,
-0x0621b0,2,
-0x0621c0,2,
-0x0621d0,5,
-0x062200,3,
-0x062210,3,
-0x062280,4,
-0x063600,5,
-0x063620,14,
-0x063660,5,
-0x063684,1,
-0x06368c,10,
-0x063700,1,
-0x063800,5,
-0x063820,12,
-0x063860,5,
-0x063884,1,
-0x06388c,10,
-0x063904,1,
-0x06390c,5,
-0x063940,1,
-0x063950,2,
-0x0639fc,1,
-0x064000,5,
-0x064020,1,
-0x064030,1,
-0x064040,1,
-0x064050,1,
-0x064060,1,
-0x064070,1,
-0x064080,1,
-0x064090,1,
-0x0640a0,1,
-0x0640b0,1,
-0x0640c0,1,
-0x0640d0,1,
-0x0640e0,1,
-0x0640f0,1,
-0x064100,1,
-0x064110,1,
-0x064120,1,
-0x064130,1,
-0x064140,1,
-0x064150,1,
-0x064160,1,
-0x064170,1,
-0x064180,1,
-0x064190,1,
-0x0641a0,1,
-0x0641b0,1,
-0x0641c0,1,
-0x0641d0,1,
-0x0641e0,1,
-0x0641f0,1,
-0x064200,1,
-0x064210,1,
-0x064220,1,
-0x064230,1,
-0x064240,1,
-0x064250,1,
-0x064260,1,
-0x064270,1,
-0x064280,1,
-0x064290,1,
-0x0642a0,1,
-0x0642b0,1,
-0x0642c0,1,
-0x0642d0,1,
-0x0642e0,1,
-0x0642f0,1,
-0x064300,1,
-0x064310,1,
-0x064320,1,
-0x064330,1,
-0x064340,1,
-0x064350,1,
-0x064360,1,
-0x064370,1,
-0x064380,1,
-0x064390,1,
-0x0643a0,1,
-0x0643b0,1,
-0x0643c0,1,
-0x0643d0,1,
-0x0643e0,1,
-0x0643f0,1,
-0x064400,1,
-0x064410,1,
-0x064420,1,
-0x064430,1,
-0x064440,1,
-0x064450,1,
-0x064460,1,
-0x064470,1,
-0x064480,1,
-0x064490,1,
-0x0644a0,1,
-0x0644b0,1,
-0x0644c0,1,
-0x0644d0,1,
-0x0644e0,1,
-0x0644f0,1,
-0x064500,1,
-0x064510,1,
-0x064520,1,
-0x064530,1,
-0x064540,1,
-0x064550,1,
-0x064560,1,
-0x064570,1,
-0x064580,1,
-0x064590,1,
-0x0645a0,1,
-0x0645b0,1,
-0x0645c0,1,
-0x0645d0,1,
-0x0645e0,1,
-0x0645f0,1,
-0x064600,1,
-0x064610,1,
-0x064620,1,
-0x064630,1,
-0x064640,1,
-0x064650,1,
-0x064660,1,
-0x064670,1,
-0x064680,1,
-0x064690,1,
-0x0646a0,1,
-0x0646b0,1,
-0x0646c0,1,
-0x0646d0,1,
-0x0646e0,1,
-0x0646f0,1,
-0x064700,1,
-0x064710,1,
-0x064720,1,
-0x064730,1,
-0x064740,1,
-0x064750,1,
-0x064760,1,
-0x064770,1,
-0x064780,1,
-0x064790,1,
-0x0647a0,1,
-0x0647b0,1,
-0x0647c0,1,
-0x0647d0,1,
-0x0647e0,1,
-0x0647f0,1,
-0x064800,1,
-0x064810,1,
-0x064820,1,
-0x064830,1,
-0x064840,1,
-0x064850,1,
-0x064860,1,
-0x064870,1,
-0x064880,1,
-0x064890,1,
-0x0648a0,1,
-0x0648b0,1,
-0x0648c0,1,
-0x0648d0,1,
-0x0648e0,1,
-0x0648f0,1,
-0x064900,1,
-0x064910,1,
-0x064920,1,
-0x064930,1,
-0x064940,1,
-0x064950,1,
-0x064960,1,
-0x064970,1,
-0x064980,1,
-0x064990,1,
-0x0649a0,1,
-0x0649b0,1,
-0x0649c0,1,
-0x0649d0,1,
-0x0649e0,1,
-0x0649f0,1,
-0x064a00,1,
-0x064a10,1,
-0x064a20,1,
-0x064a30,1,
-0x064a40,1,
-0x064a50,1,
-0x064a60,1,
-0x064a70,1,
-0x064a80,1,
-0x064a90,1,
-0x064aa0,1,
-0x064ab0,1,
-0x064ac0,1,
-0x064ad0,1,
-0x064ae0,1,
-0x064af0,1,
-0x064b00,1,
-0x064b10,1,
-0x064b20,1,
-0x064b30,1,
-0x064b40,1,
-0x064b50,1,
-0x064b60,1,
-0x064b70,1,
-0x064b80,1,
-0x064b90,1,
-0x064ba0,1,
-0x064bb0,1,
-0x064bc0,1,
-0x064bd0,1,
-0x064be0,1,
-0x064bf0,1,
-0x064c00,1,
-0x064c10,1,
-0x064c20,1,
-0x064c30,1,
-0x064c40,1,
-0x064c50,1,
-0x064c60,1,
-0x064c70,1,
-0x064c80,1,
-0x064c90,1,
-0x064ca0,1,
-0x064cb0,1,
-0x064cc0,1,
-0x064cd0,1,
-0x064ce0,1,
-0x064cf0,1,
-0x064d00,1,
-0x064d10,1,
-0x064d20,1,
-0x064d30,1,
-0x064d40,1,
-0x064d50,1,
-0x064d60,1,
-0x064d70,1,
-0x064d80,1,
-0x064d90,1,
-0x064da0,1,
-0x064db0,1,
-0x064dc0,1,
-0x064dd0,1,
-0x064de0,1,
-0x064df0,1,
-0x064e00,1,
-0x064e10,1,
-0x064e20,1,
-0x064e30,1,
-0x064e40,1,
-0x064e50,1,
-0x064e60,1,
-0x064e70,1,
-0x064e80,1,
-0x064e90,1,
-0x064ea0,1,
-0x064eb0,1,
-0x064ec0,1,
-0x064ed0,1,
-0x064ee0,1,
-0x064ef0,1,
-0x064f00,1,
-0x064f10,1,
-0x064f20,1,
-0x064f30,1,
-0x064f40,1,
-0x064f50,1,
-0x064f60,1,
-0x064f70,1,
-0x064f80,1,
-0x064f90,1,
-0x064fa0,1,
-0x064fb0,1,
-0x064fc0,1,
-0x064fd0,1,
-0x064fe0,1,
-0x064ff0,1,
-0x065000,8,
-0x066000,5,
-0x066020,1,
-0x066030,1,
-0x066040,1,
-0x066050,1,
-0x066060,1,
-0x066070,1,
-0x066080,1,
-0x066090,1,
-0x0660a0,1,
-0x0660b0,1,
-0x0660c0,1,
-0x0660d0,1,
-0x0660e0,1,
-0x0660f0,1,
-0x066100,1,
-0x066110,1,
-0x066120,1,
-0x066130,1,
-0x066140,1,
-0x066150,1,
-0x066160,1,
-0x066170,1,
-0x066180,1,
-0x066190,1,
-0x0661a0,1,
-0x0661b0,1,
-0x0661c0,1,
-0x0661d0,1,
-0x0661e0,1,
-0x0661f0,1,
-0x066200,1,
-0x066210,1,
-0x066220,1,
-0x066230,1,
-0x066240,1,
-0x066250,1,
-0x066260,1,
-0x066270,1,
-0x066280,1,
-0x066290,1,
-0x0662a0,1,
-0x0662b0,1,
-0x0662c0,1,
-0x0662d0,1,
-0x0662e0,1,
-0x0662f0,1,
-0x066300,1,
-0x066310,1,
-0x066320,1,
-0x066330,1,
-0x066340,1,
-0x066350,1,
-0x066360,1,
-0x066370,1,
-0x066380,1,
-0x066390,1,
-0x0663a0,1,
-0x0663b0,1,
-0x0663c0,1,
-0x0663d0,1,
-0x0663e0,1,
-0x0663f0,1,
-0x066400,1,
-0x066410,1,
-0x066420,1,
-0x066430,1,
-0x066440,1,
-0x066450,1,
-0x066460,1,
-0x066470,1,
-0x066480,1,
-0x066490,1,
-0x0664a0,1,
-0x0664b0,1,
-0x0664c0,1,
-0x0664d0,1,
-0x0664e0,1,
-0x0664f0,1,
-0x066500,1,
-0x066510,1,
-0x066520,1,
-0x066530,1,
-0x066540,1,
-0x066550,1,
-0x066560,1,
-0x066570,1,
-0x066580,1,
-0x066590,1,
-0x0665a0,1,
-0x0665b0,1,
-0x0665c0,1,
-0x0665d0,1,
-0x0665e0,1,
-0x0665f0,1,
-0x066600,1,
-0x066610,1,
-0x066620,1,
-0x066630,1,
-0x066640,1,
-0x066650,1,
-0x066660,1,
-0x066670,1,
-0x066680,1,
-0x066690,1,
-0x0666a0,1,
-0x0666b0,1,
-0x0666c0,1,
-0x0666d0,1,
-0x0666e0,1,
-0x0666f0,1,
-0x066700,1,
-0x066710,1,
-0x066720,1,
-0x066730,1,
-0x066740,1,
-0x066750,1,
-0x066760,1,
-0x066770,1,
-0x066780,1,
-0x066790,1,
-0x0667a0,1,
-0x0667b0,1,
-0x0667c0,1,
-0x0667d0,1,
-0x0667e0,1,
-0x0667f0,1,
-0x066800,1,
-0x066810,1,
-0x066820,1,
-0x066830,1,
-0x066840,1,
-0x066850,1,
-0x066860,1,
-0x066870,1,
-0x066880,1,
-0x066890,1,
-0x0668a0,1,
-0x0668b0,1,
-0x0668c0,1,
-0x0668d0,1,
-0x0668e0,1,
-0x0668f0,1,
-0x066900,1,
-0x066910,1,
-0x066920,1,
-0x066930,1,
-0x066940,1,
-0x066950,1,
-0x066960,1,
-0x066970,1,
-0x066980,1,
-0x066990,1,
-0x0669a0,1,
-0x0669b0,1,
-0x0669c0,1,
-0x0669d0,1,
-0x0669e0,1,
-0x0669f0,1,
-0x066a00,1,
-0x066a10,1,
-0x066a20,1,
-0x066a30,1,
-0x066a40,1,
-0x066a50,1,
-0x066a60,1,
-0x066a70,1,
-0x066a80,1,
-0x066a90,1,
-0x066aa0,1,
-0x066ab0,1,
-0x066ac0,1,
-0x066ad0,1,
-0x066ae0,1,
-0x066af0,1,
-0x066b00,1,
-0x066b10,1,
-0x066b20,1,
-0x066b30,1,
-0x066b40,1,
-0x066b50,1,
-0x066b60,1,
-0x066b70,1,
-0x066b80,1,
-0x066b90,1,
-0x066ba0,1,
-0x066bb0,1,
-0x066bc0,1,
-0x066bd0,1,
-0x066be0,1,
-0x066bf0,1,
-0x066c00,1,
-0x066c10,1,
-0x066c20,1,
-0x066c30,1,
-0x066c40,1,
-0x066c50,1,
-0x066c60,1,
-0x066c70,1,
-0x066c80,1,
-0x066c90,1,
-0x066ca0,1,
-0x066cb0,1,
-0x066cc0,1,
-0x066cd0,1,
-0x066ce0,1,
-0x066cf0,1,
-0x066d00,1,
-0x066d10,1,
-0x066d20,1,
-0x066d30,1,
-0x066d40,1,
-0x066d50,1,
-0x066d60,1,
-0x066d70,1,
-0x066d80,1,
-0x066d90,1,
-0x066da0,1,
-0x066db0,1,
-0x066dc0,1,
-0x066dd0,1,
-0x066de0,1,
-0x066df0,1,
-0x066e00,1,
-0x066e10,1,
-0x066e20,1,
-0x066e30,1,
-0x066e40,1,
-0x066e50,1,
-0x066e60,1,
-0x066e70,1,
-0x066e80,1,
-0x066e90,1,
-0x066ea0,1,
-0x066eb0,1,
-0x066ec0,1,
-0x066ed0,1,
-0x066ee0,1,
-0x066ef0,1,
-0x066f00,1,
-0x066f10,1,
-0x066f20,1,
-0x066f30,1,
-0x066f40,1,
-0x066f50,1,
-0x066f60,1,
-0x066f70,1,
-0x066f80,1,
-0x066f90,1,
-0x066fa0,1,
-0x066fb0,1,
-0x066fc0,1,
-0x066fd0,1,
-0x066fe0,1,
-0x066ff0,1,
-0x067000,16,
-0x067100,8,
-0x067124,7,
-0x067144,7,
-0x067200,3,
-0x0677f8,2,
-0x06f008,2,
-0x06f014,11,
-0x06f044,1,
-0x06f04c,3,
-0x06f05c,1,
-0x06f064,1,
-0x06f07c,1,
-0x06f500,2,
-0x06f518,1,
-0x06f520,3,
-0x06f540,6,
-0x06f580,10,
-0x06f800,2,
-0x070000,4,
-0x070020,25,
-0x070088,8,
-0x070100,6,
-0x070120,7,
-0x070140,4,
-0x070200,24,
-0x070280,1,
-0x070288,4,
-0x070300,37,
-0x070b00,14,
-0x070b40,14,
-0x070b84,1,
-0x070c00,1,
-0x070c10,3,
-0x070c3c,3,
-0x070c50,8,
-0x071000,7,
-0x072000,7,
-0x073000,114,
-0x0731d0,3,
-0x0731e0,3,
-0x0731f0,3,
-0x073200,2,
-0x073210,7,
-0x073230,1,
-0x073240,48,
-0x073338,15,
-0x074000,8,
-0x074044,3,
-0x074060,4,
-0x074080,8,
-0x075000,1025,
-0x07600c,1,
-0x07f000,2,
-0x07f028,2,
-0x07f050,2,
-0x07f078,2,
-0x07f0a0,23,
-0x07f1ac,1,
-0x07f1d8,4,
-0x07f200,6,
-0x07f220,6,
-0x07f240,6,
-0x07f260,6,
-0x07f280,3,
-0x07fa00,6,
-0x07fb00,7,
-0x07fb20,7,
-0x07fb40,7,
-0x07fb60,1,
-0x07fb70,1,
-0x07fb80,7,
-0x07fc00,3,
-0x080000,32771,
-0x0a0010,2,
-0x0a001c,6,
-0x0a0038,2,
-0x0a0048,2,
-0x0a0058,2,
-0x0a0064,16,
-0x0a00ac,14,
-0x0a00f0,1,
-0x0a00fc,35,
-0x0a01e0,1,
-0x0a01e8,5,
-0x0a0200,3,
-0x0a0210,2,
-0x0a021c,6,
-0x0a0238,2,
-0x0a0248,2,
-0x0a0258,2,
-0x0a0264,16,
-0x0a02ac,14,
-0x0a02f0,1,
-0x0a02fc,35,
-0x0a03e0,1,
-0x0a03e8,5,
-0x0a0400,3,
-0x0a0410,2,
-0x0a041c,6,
-0x0a0438,2,
-0x0a0448,2,
-0x0a0458,2,
-0x0a0464,16,
-0x0a04ac,14,
-0x0a04f0,1,
-0x0a04fc,35,
-0x0a05e0,1,
-0x0a05e8,5,
-0x0a0600,3,
-0x0a0610,2,
-0x0a061c,6,
-0x0a0638,2,
-0x0a0648,2,
-0x0a0658,2,
-0x0a0664,16,
-0x0a06ac,14,
-0x0a06f0,1,
-0x0a06fc,35,
-0x0a07e0,1,
-0x0a07e8,5,
-0x0a0800,3,
-0x0a0810,2,
-0x0a081c,6,
-0x0a0838,2,
-0x0a0848,2,
-0x0a0858,2,
-0x0a0864,16,
-0x0a08ac,14,
-0x0a08f0,1,
-0x0a08fc,35,
-0x0a09e0,1,
-0x0a09e8,5,
-0x0a0a00,3,
-0x0a0a10,2,
-0x0a0a1c,6,
-0x0a0a38,2,
-0x0a0a48,2,
-0x0a0a58,2,
-0x0a0a64,16,
-0x0a0aac,14,
-0x0a0af0,1,
-0x0a0afc,35,
-0x0a0be0,1,
-0x0a0be8,5,
-0x0a0c00,3,
-0x0a0c10,2,
-0x0a0c1c,6,
-0x0a0c38,2,
-0x0a0c48,2,
-0x0a0c58,2,
-0x0a0c64,16,
-0x0a0cac,14,
-0x0a0cf0,1,
-0x0a0cfc,35,
-0x0a0de0,1,
-0x0a0de8,5,
-0x0a0e00,3,
-0x0a0e10,2,
-0x0a0e1c,6,
-0x0a0e38,2,
-0x0a0e48,2,
-0x0a0e58,2,
-0x0a0e64,16,
-0x0a0eac,14,
-0x0a0ef0,1,
-0x0a0efc,35,
-0x0a0fe0,1,
-0x0a0fe8,5,
-0x0a1000,128,
-0x0a1208,2,
-0x0a1218,2,
-0x0a1404,17,
-0x0a1484,1,
-0x0a14a0,17,
-0x0a1504,1,
-0x0a1540,17,
-0x0a15e0,8,
-0x0a1604,3,
-0x0a1700,33,
-0x0a1800,6,
-0x0a1820,10,
-0x0a1870,1,
-0x0a1c00,2,
-0x0a1c28,2,
-0x0a1c50,2,
-0x0a1c78,2,
-0x0a1ca0,7,
-0x0a1dac,1,
-0x0a1dd8,4,
-0x0a1e00,6,
-0x0a1e20,6,
-0x0a1e40,6,
-0x0a1e60,6,
-0x0a1e80,3,
-0x0a2010,2,
-0x0a201c,1,
-0x0a2028,2,
-0x0a2040,8,
-0x0a2064,5,
-0x0a20d0,8,
-0x0a20f4,22,
-0x0a2150,3,
-0x0a2160,8,
-0x0a2184,3,
-0x0a21a0,8,
-0x0a2200,4,
-0x0a2218,52,
-0x0a2300,8,
-0x0a2330,3,
-0x0a2600,1,
-0x0a2800,6,
-0x0a2820,6,
-0x0a2840,6,
-0x0a2860,6,
-0x0a2880,3,
-0x0a2900,6,
-0x0a2920,6,
-0x0a2940,3,
-0x0a2980,6,
-0x0a29a0,6,
-0x0a29c0,6,
-0x0a29e0,3,
-0x0a2a00,6,
-0x0a2a20,3,
-0x0a2a30,1,
-0x0a3120,6,
-0x0a3140,6,
-0x0a3160,6,
-0x0a3180,6,
-0x0a31a0,6,
-0x0a31c0,6,
-0x0a3604,2,
-0x0a3700,16,
-0x0a3a00,1,
-0x0a3b00,8,
-0x0a8000,8192,
-0x0c1000,1,
-0x0c1028,1,
-0x0c1050,1,
-0x0c1078,1,
-0x0c10a0,9,
-0x0c11ac,1,
-0x0c11d8,4,
-0x0c1200,6,
-0x0c1220,6,
-0x0c1240,3,
-0x0c1400,6,
-0x0c1420,3,
-0x0c1500,13,
-0x0c1540,3,
-0x0c2000,14,
-0x0c2070,3,
-0x0c2080,6,
-0x0c2100,9,
-0x0c2204,1,
-0x0c220c,6,
-0x0c2240,13,
-0x0c2280,16,
-0x0c2400,8,
-0x0c2424,15,
-0x0c2464,15,
-0x0c24a4,15,
-0x0c24e4,30,
-0x0c2580,10,
-0x0c25ac,1,
-0x0c25b4,5,
-0x0c25cc,1,
-0x0c25d4,5,
-0x0c25ec,1,
-0x0c25f4,13,
-0x0c2680,4,
-0x0c2694,2,
-0x0c26a0,5,
-0x0c26c0,5,
-0x0c26e0,4,
-0x0c2800,19,
-0x0c2850,10,
-0x0c2880,19,
-0x0c28d0,10,
-0x0c2900,19,
-0x0c2950,10,
-0x0c2980,19,
-0x0c29d0,10,
-0x0c2a00,19,
-0x0c2a50,10,
-0x0c2a80,19,
-0x0c2ad0,10,
-0x0c2b00,19,
-0x0c2b50,10,
-0x0c2b80,19,
-0x0c2bd0,10,
-0x0c2c00,19,
-0x0c2c60,6,
-0x0c2c84,1,
-0x0c2c94,8,
-0x0c2cb8,9,
-0x0c2ce0,4,
-0x0c3000,29,
-0x0c3078,4,
-0x0c3090,2,
-0x0c30a0,7,
-0x0c30c0,11,
-0x0c3100,14,
-0x0c3140,14,
-0x0c3180,61,
-0x0c3278,4,
-0x0c3290,2,
-0x0c32a0,7,
-0x0c32c0,11,
-0x0c3300,14,
-0x0c3340,14,
-0x0c3380,61,
-0x0c3478,4,
-0x0c3490,2,
-0x0c34a0,7,
-0x0c34c0,11,
-0x0c3500,14,
-0x0c3540,14,
-0x0c3580,61,
-0x0c3678,4,
-0x0c3690,2,
-0x0c36a0,7,
-0x0c36c0,11,
-0x0c3700,14,
-0x0c3740,14,
-0x0c3780,67,
-0x0c3890,1,
-0x0c3a00,8,
-0x0c3a24,15,
-0x0c3a64,30,
-0x0c3b00,4,
-0x0c3b20,2,
-0x0c3c00,6,
-0x0c3c40,14,
-0x0c3c80,9,
-0x0c3d00,9,
-0x0c3d2c,1,
-0x0c3d40,3,
-0x0c3d60,1,
-0x0c3d80,3,
-0x0c3e00,2,
-0x0c3e0c,1,
-0x0c3e14,5,
-0x0c3e2c,1,
-0x0c3e34,5,
-0x0c3e4c,1,
-0x0c3e54,5,
-0x0c3e6c,1,
-0x0c3e74,5,
-0x0c3e8c,1,
-0x0c3e94,5,
-0x0c3eac,1,
-0x0c3eb4,3,
-0x0c8000,25,
-0x0c8068,4,
-0x0c807c,4,
-0x0c80a0,3,
-0x0c80b0,2,
-0x0c80c8,6,
-0x0c8180,6,
-0x0ca000,3,
-0x0ca010,21,
-0x0ca068,14,
-0x0ca0a4,2,
-0x0ca0b0,2,
-0x0ca0c0,14,
-0x0ca100,12,
-0x0ca140,4,
-0x0ca160,1,
-0x0ca184,1,
-0x0ca194,2,
-0x0ca1b8,3,
-0x0ca1d0,5,
-0x0ca1e8,3,
-0x0ca1f8,8,
-0x0ca220,6,
-0x0ca240,3,
-0x0ca280,6,
-0x0ca2a0,6,
-0x0ca2c0,3,
-0x0ca300,6,
-0x0ca320,6,
-0x0ca340,6,
-0x0ca360,6,
-0x0ca380,6,
-0x0ca3a0,6,
-0x0ca3c0,6,
-0x0ca3e0,6,
-0x0ca400,6,
-0x0ca6fc,1,
-0x0ca800,72,
-0x0cb000,4,
-0x0cb044,1,
-0x0cb04c,1,
-0x0cb100,8,
-0x0cb1f0,6,
-0x0cb210,3,
-0x0cb220,2,
-0x0cb230,3,
-0x0cb240,2,
-0x0cb250,3,
-0x0cb260,2,
-0x0cb270,3,
-0x0cb280,1,
-0x0cb400,5,
-0x0cb59c,1,
-0x0cb5ac,9,
-0x0d0000,5,
-0x0d0020,4,
-0x0d0034,17,
-0x0d0080,1,
-0x0d00a0,6,
-0x0d0100,5,
-0x0d0120,4,
-0x0d0134,17,
-0x0d0180,1,
-0x0d01a0,6,
-0x0d0200,5,
-0x0d0220,4,
-0x0d0234,17,
-0x0d0280,1,
-0x0d02a0,6,
-0x0d0300,5,
-0x0d0320,4,
-0x0d0334,17,
-0x0d0380,1,
-0x0d03a0,6,
-0x0d0400,6,
-0x0d0440,6,
-0x0d0480,3,
-0x0d04c0,3,
-0x0d0500,6,
-0x0d051c,7,
-0x0d0540,1,
-0x0d0c00,13,
-0x0d0c40,12,
-0x0d0c80,13,
-0x0d0cc0,12,
-0x0d0d00,6,
-0x0d0d20,6,
-0x0d0e40,11,
-0x0d0e80,6,
-0x0d0ea0,6,
-0x0d1000,2,
-0x0d1010,5,
-0x0d1040,3,
-0x0d1050,3,
-0x0d1060,32,
-0x0d1100,8,
-0x0d1140,8,
-0x0d1180,3,
-0x0d1190,2,
-0x0d119c,9,
-0x0d1218,9,
-0x0d1240,3,
-0x0d1250,6,
-0x0d1280,1,
-0x0d1288,6,
-0x0d12a4,1,
-0x0d12c0,1,
-0x0d12c8,6,
-0x0d12e4,1,
-0x0d1400,8,
-0x0d1424,2,
-0x0d1800,24,
-0x0d1864,5,
-0x0d1880,8,
-0x0d1900,13,
-0x0d1980,4,
-0x0d19a0,6,
-0x0d19c0,6,
-0x0d19dc,1,
-0x0d1a00,6,
-0x0d1a1c,1,
-0x0d1a40,1,
-0x0d1a60,1,
-0x0d1a68,23,
-0x0d1ac8,6,
-0x0d1b00,17,
-0x0d1b48,6,
-0x0d1b80,12,
-0x0d1c00,6,
-0x0d1c20,6,
-0x0d1c40,6,
-0x0d1c60,3,
-0x0d1d00,6,
-0x0d1d20,6,
-0x0d1d40,3,
-0x0d1d80,6,
-0x0d1da0,6,
-0x0d1dc0,3,
-0x0d4000,5,
-0x0d4038,1,
-0x0d4044,1,
-0x0d4050,2,
-0x0d4100,6,
-0x0d8000,6,
-0x0d8020,3,
-0x0d8030,8,
-0x0d8100,6,
-0x0d8120,10,
-0x0d8150,8,
-0x0d8800,6,
-0x0d8820,3,
-0x0d8830,4,
-0x0d8858,2,
-0x0d8864,1,
-0x0d8874,3,
-0x0d8898,2,
-0x0d88a4,1,
-0x0d88b4,3,
-0x0d9000,6,
-0x0d9020,6,
-0x0d9040,3,
-0x0d9080,14,
-0x0d90bc,1,
-0x0d90c4,13,
-0x0d90fc,5,
-0x0d9120,4,
-0x0d9140,3,
-0x0d9180,3,
-0x0d9190,3,
-0x0d91a0,1,
-0x0d91e0,6,
-0x0d9200,20,
-0x0d925c,30,
-0x0d9300,24,
-0x0d9380,2,
-0x0d93a0,1,
-0x0d93c0,11,
-0x0d9404,3,
-0x0d9420,11,
-0x0d9460,3,
-0x0d9480,6,
-0x0d9500,6,
-0x0d9520,6,
-0x0d9540,1,
-0x0d9558,2,
-0x0d9600,17,
-0x0d9800,410,
-0x0da000,6,
-0x0da020,6,
-0x0da040,3,
-0x0da080,14,
-0x0da0bc,1,
-0x0da0c4,13,
-0x0da0fc,5,
-0x0da120,4,
-0x0da140,3,
-0x0da180,3,
-0x0da190,3,
-0x0da1a0,1,
-0x0da1e0,6,
-0x0da200,20,
-0x0da25c,30,
-0x0da300,24,
-0x0da380,2,
-0x0da3a0,1,
-0x0da3c0,11,
-0x0da404,3,
-0x0da420,11,
-0x0da460,3,
-0x0da480,6,
-0x0da500,6,
-0x0da520,6,
-0x0da540,1,
-0x0da558,2,
-0x0da600,17,
-0x0da800,410,
-0x0db800,5,
-0x0db818,1,
-0x0db854,6,
-0x0db880,2,
-0x0db8a4,1,
-0x0db8ac,2,
-0x0dba00,28,
-0x0dba7c,13,
-0x0dbab4,1,
-0x0dbabc,10,
-0x0dbb04,1,
-0x0dbb0c,5,
-0x0dbb24,1,
-0x0dbb34,9,
-0x0dbb60,6,
-0x0dbb80,22,
-0x0dbbe0,3,
-0x0dbbf0,2,
-0x0dbc00,5,
-0x0dbc18,1,
-0x0dbc54,6,
-0x0dbc80,2,
-0x0dbca4,1,
-0x0dbcac,2,
-0x0dbe00,28,
-0x0dbe7c,13,
-0x0dbeb4,1,
-0x0dbebc,10,
-0x0dbf04,1,
-0x0dbf0c,5,
-0x0dbf24,1,
-0x0dbf34,9,
-0x0dbf60,6,
-0x0dbf80,22,
-0x0dbfe0,3,
-0x0dbff0,2,
-0x0dc000,1,
-0x0e8000,1,
-0x0e8008,2,
-0x0e8058,3,
-0x0e8120,2,
-0x0e8130,2,
-0x0e8140,1,
-0x0e8184,11,
-0x0e81c4,3,
-0x0e81dc,3,
-0x0e8280,13,
-0x0e8400,16,
-0x0e8444,7,
-0x0e8500,4,
-0x0e8804,1,
-0x0e8824,7,
-0x0e8844,1,
-0x0e884c,27,
-0x0e88d4,2,
-0x0e8c00,1,
-0x0e8c08,3,
-0x0e8c80,20,
-0x0e8d00,3,
-0x0e8d20,6,
-0x0e8d80,4,
-0x0e8da0,6,
-0x0e8dbc,7,
-0x0e8e00,21,
-0x0e8e80,6,
-0x0e8ea0,6,
-0x0e8ec0,3,
-0x0e9000,35,
-0x0e9090,2,
-0x0e90f0,1,
-0x0e90f8,1,
-0x0e9100,1,
-0x0e9108,5,
-0x0e9138,2,
-0x0e9144,1,
-0x0e9160,13,
-0x0e91a0,3,
-0x0e9200,2,
-0x0e9214,11,
-0x0e9244,7,
-0x0e92b8,2,
-0x0e92c4,7,
-0x0e9310,1,
-0x0e9340,4,
-0x0e9380,7,
-0x0e9400,14,
-0x0e9440,10,
-0x0e947c,1,
-0x0e9700,2,
-0x0e9720,8,
-0x0e9800,3,
-0x0e9810,3,
-0x0e9820,3,
-0x0e9830,3,
-0x0e9840,3,
-0x0e9850,3,
-0x0e9860,3,
-0x0e9870,3,
-0x0e9880,3,
-0x0e9890,3,
-0x0e98a0,3,
-0x0e98b0,3,
-0x0e98c0,3,
-0x0e98d0,3,
-0x0e98e0,3,
-0x0e98f0,3,
-0x0e9900,68,
-0x0e9c00,36,
-0x0e9d00,3,
-0x0e9d40,2,
-0x0e9d4c,1,
-0x0e9d84,1,
-0x0e9d90,4,
-0x0e9e00,6,
-0x0e9e20,6,
-0x0e9e40,6,
-0x0e9e60,3,
-0x0e9e80,6,
-0x0e9ea0,3,
-0x0e9f80,13,
-0x0e9fc0,2,
-0x0ea000,1,
-0x0ea028,1,
-0x0ea050,1,
-0x0ea078,1,
-0x0ea0a0,3,
-0x0ea1ac,1,
-0x0ea1d8,4,
-0x0ea200,6,
-0x0ea220,6,
-0x0ea240,3,
-0x0ea400,6,
-0x0ea420,2,
-0x0ea430,2,
-0x0ea440,2,
-0x0ea450,6,
-0x0ea470,2,
-0x0ea490,24,
-0x0ea520,8,
-0x0ea604,1,
-0x0ea6f0,72,
-0x0f0000,3,
-0x0f0014,11,
-0x0f0044,15,
-0x0f00f0,3,
-0x0f0100,1,
-0x0f0108,3,
-0x0f0118,1,
-0x0f0130,4,
-0x0f0180,3,
-0x0f0190,2,
-0x0f01a0,3,
-0x0f01c0,2,
-0x0f01d0,10,
-0x0f0200,61,
-0x0f0404,9,
-0x0f0440,12,
-0x0f0480,5,
-0x0f04b8,19,
-0x0f05a0,1,
-0x0f05c0,8,
-0x0f0800,17,
-0x0f0850,9,
-0x0f0880,9,
-0x0f08b0,9,
-0x0f08e0,9,
-0x0f0920,4,
-0x0f093c,5,
-0x0f095c,5,
-0x0f097c,5,
-0x0f099c,5,
-0x0f09bc,5,
-0x0f09dc,1,
-0x0f0a90,2,
-0x0f0c00,128,
-0x0f0e04,1,
-0x0f0e14,9,
-0x0f0e3c,1,
-0x0f1000,3,
-0x0f1010,4,
-0x0f1030,2,
-0x0f1080,10,
-0x0f10c0,1,
-0x0f10e0,2,
-0x0f10ec,1,
-0x0f10f4,3,
-0x0f1400,6,
-0x0f1420,6,
-0x0f1440,6,
-0x0f1460,6,
-0x0f1480,6,
-0x0f14a0,6,
-0x0f14c0,6,
-0x0f14e0,6,
-0x0f1500,6,
-0x0f1520,6,
-0x0f1540,6,
-0x0f1560,6,
-0x0f1580,6,
-0x0f15a0,6,
-0x0f15c0,6,
-0x0f15e0,6,
-0x0f1600,6,
-0x0f1620,3,
-0x0f1800,3,
-0x0f2000,2,
-0x0f200c,3,
-0x0f2020,8,
-0x0f2060,6,
-0x0f2080,2,
-0x0f208c,3,
-0x0f20a0,8,
-0x0f20e0,6,
-0x0f2100,2,
-0x0f210c,3,
-0x0f2120,8,
-0x0f2160,6,
-0x0f2180,2,
-0x0f218c,3,
-0x0f21a0,8,
-0x0f21e0,6,
-0x0f2200,2,
-0x0f220c,3,
-0x0f2220,8,
-0x0f2260,6,
-0x0f2280,2,
-0x0f228c,3,
-0x0f22a0,8,
-0x0f22e0,6,
-0x0f2300,2,
-0x0f230c,3,
-0x0f2320,8,
-0x0f2360,6,
-0x0f2380,2,
-0x0f238c,3,
-0x0f23a0,8,
-0x0f23e0,6,
-0x0f2400,2,
-0x0f240c,3,
-0x0f2420,8,
-0x0f2460,6,
-0x0f2480,2,
-0x0f248c,3,
-0x0f24a0,8,
-0x0f24e0,6,
-0x0f2500,2,
-0x0f250c,3,
-0x0f2520,8,
-0x0f2560,6,
-0x0f2580,2,
-0x0f258c,3,
-0x0f25a0,8,
-0x0f25e0,6,
-0x0f2600,2,
-0x0f260c,3,
-0x0f2620,8,
-0x0f2660,6,
-0x0f2680,2,
-0x0f268c,3,
-0x0f26a0,8,
-0x0f26e0,6,
-0x0f2700,2,
-0x0f270c,3,
-0x0f2720,8,
-0x0f2760,6,
-0x0f2780,2,
-0x0f278c,3,
-0x0f27a0,8,
-0x0f27e0,6,
-0x0f2800,2,
-0x0f280c,3,
-0x0f2820,8,
-0x0f2860,6,
-0x0f2880,2,
-0x0f288c,3,
-0x0f28a0,8,
-0x0f28e0,6,
-0x0f2900,2,
-0x0f290c,3,
-0x0f2920,8,
-0x0f2960,6,
-0x0f2980,2,
-0x0f298c,3,
-0x0f29a0,8,
-0x0f29e0,6,
-0x0f4000,7,
-0x0f4020,4,
-0x0f4204,1,
-0x0f4280,35,
-0x0f4310,4,
-0x0f4404,1,
-0x0f4480,34,
-0x0f4510,10,
-0x0f453c,3,
-0x0f4800,7,
-0x0f4820,4,
-0x0f4a04,1,
-0x0f4a80,35,
-0x0f4b10,4,
-0x0f4c04,1,
-0x0f4c80,34,
-0x0f4d10,10,
-0x0f4d3c,3,
-0x0f5000,7,
-0x0f5020,4,
-0x0f5204,1,
-0x0f5280,35,
-0x0f5310,4,
-0x0f5404,1,
-0x0f5480,34,
-0x0f5510,10,
-0x0f553c,3,
-0x0f5800,7,
-0x0f5820,4,
-0x0f5a04,1,
-0x0f5a80,35,
-0x0f5b10,4,
-0x0f5c04,1,
-0x0f5c80,34,
-0x0f5d10,10,
-0x0f5d3c,3,
-0x0f6000,7,
-0x0f6020,4,
-0x0f6204,1,
-0x0f6280,35,
-0x0f6310,4,
-0x0f6404,1,
-0x0f6480,34,
-0x0f6510,10,
-0x0f653c,3,
-0x0f6800,7,
-0x0f6820,4,
-0x0f6a04,1,
-0x0f6a80,35,
-0x0f6b10,4,
-0x0f6c04,1,
-0x0f6c80,34,
-0x0f6d10,10,
-0x0f6d3c,3,
-0x0f8000,9,
-0x0f8100,6,
-0x0f8120,6,
-0x0f8140,3,
-0x0f8180,10,
-0x0f81c0,3,
-0x0f81d0,2,
-0x0f8200,9,
-0x0f8300,6,
-0x0f8320,6,
-0x0f8340,3,
-0x0f8380,10,
-0x0f83c0,3,
-0x0f83d0,2,
-0x0f8400,9,
-0x0f8500,6,
-0x0f8520,6,
-0x0f8540,3,
-0x0f8580,10,
-0x0f85c0,3,
-0x0f85d0,2,
-0x0f8600,9,
-0x0f8700,6,
-0x0f8720,6,
-0x0f8740,3,
-0x0f8780,10,
-0x0f87c0,3,
-0x0f87d0,2,
-0x0f8800,9,
-0x0f8900,6,
-0x0f8920,6,
-0x0f8940,3,
-0x0f8980,10,
-0x0f89c0,3,
-0x0f89d0,2,
-0x0f8a00,9,
-0x0f8b00,6,
-0x0f8b20,6,
-0x0f8b40,3,
-0x0f8b80,10,
-0x0f8bc0,3,
-0x0f8bd0,2,
-0x0f8c00,9,
-0x0f8d00,6,
-0x0f8d20,6,
-0x0f8d40,3,
-0x0f8d80,10,
-0x0f8dc0,3,
-0x0f8dd0,2,
-0x0f8e00,9,
-0x0f8f00,6,
-0x0f8f20,6,
-0x0f8f40,3,
-0x0f8f80,10,
-0x0f8fc0,3,
-0x0f8fd0,2,
-0x0f9000,9,
-0x0f9100,6,
-0x0f9120,6,
-0x0f9140,3,
-0x0f9180,10,
-0x0f91c0,3,
-0x0f91d0,2,
-0x0f9200,9,
-0x0f9300,6,
-0x0f9320,6,
-0x0f9340,3,
-0x0f9380,10,
-0x0f93c0,3,
-0x0f93d0,2,
-0x0f9400,9,
-0x0f9500,6,
-0x0f9520,6,
-0x0f9540,3,
-0x0f9580,10,
-0x0f95c0,3,
-0x0f95d0,2,
-0x0f9600,9,
-0x0f9700,6,
-0x0f9720,6,
-0x0f9740,3,
-0x0f9780,10,
-0x0f97c0,3,
-0x0f97d0,2,
-0x0f9800,9,
-0x0f9900,6,
-0x0f9920,6,
-0x0f9940,3,
-0x0f9980,10,
-0x0f99c0,3,
-0x0f99d0,2,
-0x0f9a00,9,
-0x0f9b00,6,
-0x0f9b20,6,
-0x0f9b40,3,
-0x0f9b80,10,
-0x0f9bc0,3,
-0x0f9bd0,2,
-0x0f9c00,9,
-0x0f9d00,6,
-0x0f9d20,6,
-0x0f9d40,3,
-0x0f9d80,10,
-0x0f9dc0,3,
-0x0f9dd0,2,
-0x0f9e00,9,
-0x0f9f00,6,
-0x0f9f20,6,
-0x0f9f40,3,
-0x0f9f80,10,
-0x0f9fc0,3,
-0x0f9fd0,2,
-0x0fa000,9,
-0x0fa100,6,
-0x0fa120,6,
-0x0fa140,3,
-0x0fa180,10,
-0x0fa1c0,3,
-0x0fa1d0,2,
-0x0fa200,9,
-0x0fa300,6,
-0x0fa320,6,
-0x0fa340,3,
-0x0fa380,10,
-0x0fa3c0,3,
-0x0fa3d0,2,
-0x0fa400,9,
-0x0fa480,10,
-0x0fa4c0,1,
-0x0fa4e0,2,
-0x0fa4ec,1,
-0x0fa4f4,9,
-0x0fa520,6,
-0x0fa540,3,
-0x0fa580,6,
-0x0fa5c0,3,
-0x0fa5d0,6,
-0x0fa600,9,
-0x0fa680,10,
-0x0fa6c0,1,
-0x0fa6e0,2,
-0x0fa6ec,1,
-0x0fa6f4,9,
-0x0fa720,6,
-0x0fa740,3,
-0x0fa780,6,
-0x0fa7c0,3,
-0x0fa7d0,6,
-0x0fa800,9,
-0x0fa880,10,
-0x0fa8c0,1,
-0x0fa8e0,2,
-0x0fa8ec,1,
-0x0fa8f4,9,
-0x0fa920,6,
-0x0fa940,3,
-0x0fa980,8,
-0x0fa9c0,3,
-0x0fa9d0,2,
-0x0faa00,9,
-0x0faa80,10,
-0x0faac0,1,
-0x0faae0,2,
-0x0faaec,1,
-0x0faaf4,9,
-0x0fab20,6,
-0x0fab40,3,
-0x0fab80,8,
-0x0fabc0,3,
-0x0fabd0,2,
-0x0fac00,9,
-0x0fac80,10,
-0x0facc0,1,
-0x0face0,2,
-0x0facec,1,
-0x0facf4,9,
-0x0fad20,6,
-0x0fad40,3,
-0x0fad80,10,
-0x0fadc0,3,
-0x0fadd0,2,
-0x0fade8,2,
-0x0fae00,9,
-0x0fae80,10,
-0x0faec0,1,
-0x0faee0,2,
-0x0faeec,1,
-0x0faef4,9,
-0x0faf20,6,
-0x0faf40,3,
-0x0faf80,12,
-0x0fafc0,3,
-0x0fafd0,2,
-0x0fb000,9,
-0x0fb100,6,
-0x0fb120,6,
-0x0fb140,3,
-0x0fb180,4,
-0x0fb1a8,2,
-0x0fb1c0,3,
-0x0fb1d0,2,
-0x100000,6,
-0x100100,30,
-0x100180,5,
-0x100200,6,
-0x100300,30,
-0x100380,5,
-0x100400,11,
-0x100430,29,
-0x100500,2,
-0x10050c,4,
-0x100520,5,
-0x10053c,1,
-0x100544,1,
-0x10054c,5,
-0x100564,3,
-0x100600,4,
-0x100620,6,
-0x100640,6,
-0x100660,6,
-0x100680,6,
-0x1006a0,4,
-0x100800,6,
-0x100820,6,
-0x100840,6,
-0x100860,3,
-0x100884,14,
-0x1008c0,16,
-0x100c00,20,
-0x100c58,4,
-0x100c70,2,
-0x100c7c,7,
-0x100d00,4,
-0x100d30,2,
-0x100d3c,12,
-0x100d70,2,
-0x100d80,3,
-0x100e00,32,
-0x101000,6,
-0x101100,30,
-0x101180,5,
-0x101200,6,
-0x101300,30,
-0x101380,5,
-0x101400,11,
-0x101430,29,
-0x101500,2,
-0x10150c,4,
-0x101520,5,
-0x10153c,1,
-0x101544,1,
-0x10154c,5,
-0x101564,3,
-0x101600,4,
-0x101620,6,
-0x101640,6,
-0x101660,6,
-0x101680,6,
-0x1016a0,4,
-0x101800,6,
-0x101820,6,
-0x101840,6,
-0x101860,3,
-0x101884,14,
-0x1018c0,16,
-0x101c00,20,
-0x101c58,4,
-0x101c70,2,
-0x101c7c,7,
-0x101d00,4,
-0x101d30,2,
-0x101d3c,12,
-0x101d70,2,
-0x101d80,3,
-0x101e00,32,
-0x102000,6,
-0x102100,30,
-0x102180,5,
-0x102200,6,
-0x102300,30,
-0x102380,5,
-0x102400,11,
-0x102430,29,
-0x102500,2,
-0x10250c,4,
-0x102520,5,
-0x10253c,1,
-0x102544,1,
-0x10254c,5,
-0x102564,3,
-0x102600,4,
-0x102620,6,
-0x102640,6,
-0x102660,6,
-0x102680,6,
-0x1026a0,4,
-0x102800,6,
-0x102820,6,
-0x102840,6,
-0x102860,3,
-0x102884,14,
-0x1028c0,16,
-0x102c00,20,
-0x102c58,4,
-0x102c70,2,
-0x102c7c,7,
-0x102d00,4,
-0x102d30,2,
-0x102d3c,12,
-0x102d70,2,
-0x102d80,3,
-0x102e00,32,
-0x103000,6,
-0x103100,30,
-0x103180,5,
-0x103200,6,
-0x103300,30,
-0x103380,5,
-0x103400,11,
-0x103430,29,
-0x103500,2,
-0x10350c,4,
-0x103520,5,
-0x10353c,1,
-0x103544,1,
-0x10354c,5,
-0x103564,3,
-0x103600,4,
-0x103620,6,
-0x103640,6,
-0x103660,6,
-0x103680,6,
-0x1036a0,4,
-0x103800,6,
-0x103820,6,
-0x103840,6,
-0x103860,3,
-0x103884,14,
-0x1038c0,16,
-0x103c00,20,
-0x103c58,4,
-0x103c70,2,
-0x103c7c,7,
-0x103d00,4,
-0x103d30,2,
-0x103d3c,12,
-0x103d70,2,
-0x103d80,3,
-0x103e00,32,
-0x104000,6,
-0x104100,30,
-0x104180,5,
-0x104200,6,
-0x104300,30,
-0x104380,5,
-0x104400,11,
-0x104430,29,
-0x104500,2,
-0x10450c,4,
-0x104520,5,
-0x10453c,1,
-0x104544,1,
-0x10454c,5,
-0x104564,3,
-0x104600,4,
-0x104620,6,
-0x104640,6,
-0x104660,6,
-0x104680,6,
-0x1046a0,4,
-0x104800,6,
-0x104820,6,
-0x104840,6,
-0x104860,3,
-0x104884,14,
-0x1048c0,16,
-0x104c00,20,
-0x104c58,4,
-0x104c70,2,
-0x104c7c,7,
-0x104d00,4,
-0x104d30,2,
-0x104d3c,12,
-0x104d70,2,
-0x104d80,3,
-0x104e00,32,
-0x105000,6,
-0x105100,30,
-0x105180,5,
-0x105200,6,
-0x105300,30,
-0x105380,5,
-0x105400,11,
-0x105430,29,
-0x105500,2,
-0x10550c,4,
-0x105520,5,
-0x10553c,1,
-0x105544,1,
-0x10554c,5,
-0x105564,3,
-0x105600,4,
-0x105620,6,
-0x105640,6,
-0x105660,6,
-0x105680,6,
-0x1056a0,4,
-0x105800,6,
-0x105820,6,
-0x105840,6,
-0x105860,3,
-0x105884,14,
-0x1058c0,16,
-0x105c00,20,
-0x105c58,4,
-0x105c70,2,
-0x105c7c,7,
-0x105d00,4,
-0x105d30,2,
-0x105d3c,12,
-0x105d70,2,
-0x105d80,3,
-0x105e00,32,
-0x106000,6,
-0x106100,30,
-0x106180,5,
-0x106200,6,
-0x106300,30,
-0x106380,5,
-0x106400,11,
-0x106430,29,
-0x106500,2,
-0x10650c,4,
-0x106520,5,
-0x10653c,1,
-0x106544,1,
-0x10654c,5,
-0x106564,3,
-0x106600,4,
-0x106620,6,
-0x106640,6,
-0x106660,6,
-0x106680,6,
-0x1066a0,4,
-0x106800,6,
-0x106820,6,
-0x106840,6,
-0x106860,3,
-0x106884,14,
-0x1068c0,16,
-0x106c00,20,
-0x106c58,4,
-0x106c70,2,
-0x106c7c,7,
-0x106d00,4,
-0x106d30,2,
-0x106d3c,12,
-0x106d70,2,
-0x106d80,3,
-0x106e00,32,
-0x107000,6,
-0x107100,30,
-0x107180,5,
-0x107200,6,
-0x107300,30,
-0x107380,5,
-0x107400,11,
-0x107430,29,
-0x107500,2,
-0x10750c,4,
-0x107520,5,
-0x10753c,1,
-0x107544,1,
-0x10754c,5,
-0x107564,3,
-0x107600,4,
-0x107620,6,
-0x107640,6,
-0x107660,6,
-0x107680,6,
-0x1076a0,4,
-0x107800,6,
-0x107820,6,
-0x107840,6,
-0x107860,3,
-0x107884,14,
-0x1078c0,16,
-0x107c00,20,
-0x107c58,4,
-0x107c70,2,
-0x107c7c,7,
-0x107d00,4,
-0x107d30,2,
-0x107d3c,12,
-0x107d70,2,
-0x107d80,3,
-0x107e00,32,
-0x108000,6,
-0x108100,30,
-0x108180,5,
-0x108200,6,
-0x108300,30,
-0x108380,5,
-0x108400,11,
-0x108430,29,
-0x108500,2,
-0x10850c,4,
-0x108520,5,
-0x10853c,1,
-0x108544,1,
-0x10854c,5,
-0x108564,3,
-0x108600,4,
-0x108620,6,
-0x108640,6,
-0x108660,6,
-0x108680,6,
-0x1086a0,4,
-0x108800,6,
-0x108820,6,
-0x108840,6,
-0x108860,3,
-0x108884,14,
-0x1088c0,16,
-0x108c00,20,
-0x108c58,4,
-0x108c70,2,
-0x108c7c,7,
-0x108d00,4,
-0x108d30,2,
-0x108d3c,12,
-0x108d70,2,
-0x108d80,3,
-0x108e00,32,
-0x109000,6,
-0x109100,30,
-0x109180,5,
-0x109200,6,
-0x109300,30,
-0x109380,5,
-0x109400,11,
-0x109430,29,
-0x109500,2,
-0x10950c,4,
-0x109520,5,
-0x10953c,1,
-0x109544,1,
-0x10954c,5,
-0x109564,3,
-0x109600,4,
-0x109620,6,
-0x109640,6,
-0x109660,6,
-0x109680,6,
-0x1096a0,4,
-0x109800,6,
-0x109820,6,
-0x109840,6,
-0x109860,3,
-0x109884,14,
-0x1098c0,16,
-0x109c00,20,
-0x109c58,4,
-0x109c70,2,
-0x109c7c,7,
-0x109d00,4,
-0x109d30,2,
-0x109d3c,12,
-0x109d70,2,
-0x109d80,3,
-0x109e00,32,
-0x10a000,1,
-0x113ffc,6,
-0x114018,3,
-0x114028,3,
-0x114038,3,
-0x114048,3,
-0x114058,3,
-0x114068,3,
-0x114078,3,
-0x114088,12,
-0x1140c8,13,
-0x114100,29,
-0x114178,11,
-0x1141c0,3,
-0x1141d0,3,
-0x1141e0,6,
-0x114400,5,
-0x114428,5,
-0x114450,5,
-0x114478,5,
-0x1144a0,4,
-0x1145ac,1,
-0x1145d8,4,
-0x114600,6,
-0x114620,6,
-0x114640,6,
-0x114660,6,
-0x114680,6,
-0x1146a0,6,
-0x1146c0,6,
-0x1146e0,6,
-0x114700,6,
-0x114720,6,
-0x114740,3,
-0x114900,7,
-0x114920,36,
-0x114c00,1,
-0x114c08,1,
-0x114c10,5,
-0x114c38,1,
-0x114c60,7,
-0x115000,1,
-0x115008,11,
-0x115038,10,
-0x115068,3,
-0x115104,4,
-0x115128,3,
-0x115204,5,
-0x115220,10,
-0x115250,3,
-0x115280,6,
-0x1152a0,6,
-0x1152c0,6,
-0x1152e0,3,
-0x115300,7,
-0x140000,6,
-0x140100,30,
-0x140180,5,
-0x140200,6,
-0x140300,30,
-0x140380,5,
-0x140400,11,
-0x140430,29,
-0x140500,2,
-0x14050c,4,
-0x140520,5,
-0x14053c,1,
-0x140544,1,
-0x14054c,5,
-0x140564,3,
-0x140600,4,
-0x140620,6,
-0x140640,6,
-0x140660,6,
-0x140680,6,
-0x1406a0,4,
-0x140800,6,
-0x140820,6,
-0x140840,6,
-0x140860,3,
-0x140884,14,
-0x1408c0,16,
-0x140c00,20,
-0x140c58,4,
-0x140c70,2,
-0x140c7c,7,
-0x140d00,4,
-0x140d30,2,
-0x140d3c,12,
-0x140d70,2,
-0x140d80,3,
-0x140e00,32,
-0x141000,6,
-0x141100,30,
-0x141180,5,
-0x141200,6,
-0x141300,30,
-0x141380,5,
-0x141400,11,
-0x141430,29,
-0x141500,2,
-0x14150c,4,
-0x141520,5,
-0x14153c,1,
-0x141544,1,
-0x14154c,5,
-0x141564,3,
-0x141600,4,
-0x141620,6,
-0x141640,6,
-0x141660,6,
-0x141680,6,
-0x1416a0,4,
-0x141800,6,
-0x141820,6,
-0x141840,6,
-0x141860,3,
-0x141884,14,
-0x1418c0,16,
-0x141c00,20,
-0x141c58,4,
-0x141c70,2,
-0x141c7c,7,
-0x141d00,4,
-0x141d30,2,
-0x141d3c,12,
-0x141d70,2,
-0x141d80,3,
-0x141e00,32,
-0x142000,6,
-0x142100,30,
-0x142180,5,
-0x142200,6,
-0x142300,30,
-0x142380,5,
-0x142400,11,
-0x142430,29,
-0x142500,2,
-0x14250c,4,
-0x142520,5,
-0x14253c,1,
-0x142544,1,
-0x14254c,5,
-0x142564,3,
-0x142600,4,
-0x142620,6,
-0x142640,6,
-0x142660,6,
-0x142680,6,
-0x1426a0,4,
-0x142800,6,
-0x142820,6,
-0x142840,6,
-0x142860,3,
-0x142884,14,
-0x1428c0,16,
-0x142c00,20,
-0x142c58,4,
-0x142c70,2,
-0x142c7c,7,
-0x142d00,4,
-0x142d30,2,
-0x142d3c,12,
-0x142d70,2,
-0x142d80,3,
-0x142e00,32,
-0x143000,6,
-0x143100,30,
-0x143180,5,
-0x143200,6,
-0x143300,30,
-0x143380,5,
-0x143400,11,
-0x143430,29,
-0x143500,2,
-0x14350c,4,
-0x143520,5,
-0x14353c,1,
-0x143544,1,
-0x14354c,5,
-0x143564,3,
-0x143600,4,
-0x143620,6,
-0x143640,6,
-0x143660,6,
-0x143680,6,
-0x1436a0,4,
-0x143800,6,
-0x143820,6,
-0x143840,6,
-0x143860,3,
-0x143884,14,
-0x1438c0,16,
-0x143c00,20,
-0x143c58,4,
-0x143c70,2,
-0x143c7c,7,
-0x143d00,4,
-0x143d30,2,
-0x143d3c,12,
-0x143d70,2,
-0x143d80,3,
-0x143e00,32,
-0x144000,6,
-0x144100,30,
-0x144180,5,
-0x144200,6,
-0x144300,30,
-0x144380,5,
-0x144400,11,
-0x144430,29,
-0x144500,2,
-0x14450c,4,
-0x144520,5,
-0x14453c,1,
-0x144544,1,
-0x14454c,5,
-0x144564,3,
-0x144600,4,
-0x144620,6,
-0x144640,6,
-0x144660,6,
-0x144680,6,
-0x1446a0,4,
-0x144800,6,
-0x144820,6,
-0x144840,6,
-0x144860,3,
-0x144884,14,
-0x1448c0,16,
-0x144c00,20,
-0x144c58,4,
-0x144c70,2,
-0x144c7c,7,
-0x144d00,4,
-0x144d30,2,
-0x144d3c,12,
-0x144d70,2,
-0x144d80,3,
-0x144e00,32,
-0x145000,6,
-0x145100,30,
-0x145180,5,
-0x145200,6,
-0x145300,30,
-0x145380,5,
-0x145400,11,
-0x145430,29,
-0x145500,2,
-0x14550c,4,
-0x145520,5,
-0x14553c,1,
-0x145544,1,
-0x14554c,5,
-0x145564,3,
-0x145600,4,
-0x145620,6,
-0x145640,6,
-0x145660,6,
-0x145680,6,
-0x1456a0,4,
-0x145800,6,
-0x145820,6,
-0x145840,6,
-0x145860,3,
-0x145884,14,
-0x1458c0,16,
-0x145c00,20,
-0x145c58,4,
-0x145c70,2,
-0x145c7c,7,
-0x145d00,4,
-0x145d30,2,
-0x145d3c,12,
-0x145d70,2,
-0x145d80,3,
-0x145e00,32,
-0x146000,6,
-0x146100,30,
-0x146180,5,
-0x146200,6,
-0x146300,30,
-0x146380,5,
-0x146400,11,
-0x146430,29,
-0x146500,2,
-0x14650c,4,
-0x146520,5,
-0x14653c,1,
-0x146544,1,
-0x14654c,5,
-0x146564,3,
-0x146600,4,
-0x146620,6,
-0x146640,6,
-0x146660,6,
-0x146680,6,
-0x1466a0,4,
-0x146800,6,
-0x146820,6,
-0x146840,6,
-0x146860,3,
-0x146884,14,
-0x1468c0,16,
-0x146c00,20,
-0x146c58,4,
-0x146c70,2,
-0x146c7c,7,
-0x146d00,4,
-0x146d30,2,
-0x146d3c,12,
-0x146d70,2,
-0x146d80,3,
-0x146e00,32,
-0x147000,6,
-0x147100,30,
-0x147180,5,
-0x147200,6,
-0x147300,30,
-0x147380,5,
-0x147400,11,
-0x147430,29,
-0x147500,2,
-0x14750c,4,
-0x147520,5,
-0x14753c,1,
-0x147544,1,
-0x14754c,5,
-0x147564,3,
-0x147600,4,
-0x147620,6,
-0x147640,6,
-0x147660,6,
-0x147680,6,
-0x1476a0,4,
-0x147800,6,
-0x147820,6,
-0x147840,6,
-0x147860,3,
-0x147884,14,
-0x1478c0,16,
-0x147c00,20,
-0x147c58,4,
-0x147c70,2,
-0x147c7c,7,
-0x147d00,4,
-0x147d30,2,
-0x147d3c,12,
-0x147d70,2,
-0x147d80,3,
-0x147e00,32,
-0x148000,6,
-0x148100,30,
-0x148180,5,
-0x148200,6,
-0x148300,30,
-0x148380,5,
-0x148400,11,
-0x148430,29,
-0x148500,2,
-0x14850c,4,
-0x148520,5,
-0x14853c,1,
-0x148544,1,
-0x14854c,5,
-0x148564,3,
-0x148600,4,
-0x148620,6,
-0x148640,6,
-0x148660,6,
-0x148680,6,
-0x1486a0,4,
-0x148800,6,
-0x148820,6,
-0x148840,6,
-0x148860,3,
-0x148884,14,
-0x1488c0,16,
-0x148c00,20,
-0x148c58,4,
-0x148c70,2,
-0x148c7c,7,
-0x148d00,4,
-0x148d30,2,
-0x148d3c,12,
-0x148d70,2,
-0x148d80,3,
-0x148e00,32,
-0x149000,6,
-0x149100,30,
-0x149180,5,
-0x149200,6,
-0x149300,30,
-0x149380,5,
-0x149400,11,
-0x149430,29,
-0x149500,2,
-0x14950c,4,
-0x149520,5,
-0x14953c,1,
-0x149544,1,
-0x14954c,5,
-0x149564,3,
-0x149600,4,
-0x149620,6,
-0x149640,6,
-0x149660,6,
-0x149680,6,
-0x1496a0,4,
-0x149800,6,
-0x149820,6,
-0x149840,6,
-0x149860,3,
-0x149884,14,
-0x1498c0,16,
-0x149c00,20,
-0x149c58,4,
-0x149c70,2,
-0x149c7c,7,
-0x149d00,4,
-0x149d30,2,
-0x149d3c,12,
-0x149d70,2,
-0x149d80,3,
-0x149e00,32,
-0x14a000,1,
-0x153ffc,6,
-0x154018,3,
-0x154028,3,
-0x154038,3,
-0x154048,3,
-0x154058,3,
-0x154068,3,
-0x154078,3,
-0x154088,12,
-0x1540c8,13,
-0x154100,29,
-0x154178,11,
-0x1541c0,3,
-0x1541d0,3,
-0x1541e0,6,
-0x154400,5,
-0x154428,5,
-0x154450,5,
-0x154478,5,
-0x1544a0,4,
-0x1545ac,1,
-0x1545d8,4,
-0x154600,6,
-0x154620,6,
-0x154640,6,
-0x154660,6,
-0x154680,6,
-0x1546a0,6,
-0x1546c0,6,
-0x1546e0,6,
-0x154700,6,
-0x154720,6,
-0x154740,3,
-0x154900,7,
-0x154920,36,
-0x154c00,1,
-0x154c08,1,
-0x154c10,5,
-0x154c38,1,
-0x154c60,7,
-0x155000,1,
-0x155008,11,
-0x155038,10,
-0x155068,3,
-0x155104,4,
-0x155128,3,
-0x155204,5,
-0x155220,10,
-0x155250,3,
-0x155280,6,
-0x1552a0,6,
-0x1552c0,6,
-0x1552e0,3,
-0x155300,7,
-0x180000,6,
-0x180020,6,
-0x180040,6,
-0x180060,6,
-0x180080,6,
-0x1800a0,6,
-0x1800c0,3,
-0x180100,1,
-0x180110,1,
-0x188000,11,
-0x188040,61,
-0x188140,2,
-0x188190,67,
-0x1882a0,3,
-0x1882b0,2,
-0x1882cc,24,
-0x188330,2,
-0x188604,1,
-0x188630,40,
-0x188764,1,
-0x18876c,1,
-0x188800,1,
-0x189004,1,
-0x18900c,13,
-0x189044,1,
-0x18904c,3,
-0x189084,1,
-0x189090,4,
-0x1890a4,1,
-0x1890ac,1,
-0x1890b4,1,
-0x1890bc,1,
-0x189404,1,
-0x189474,35,
-0x189504,1,
-0x18950c,3,
-0x189604,16,
-0x189804,1,
-0x18982c,23,
-0x189904,27,
-0x189980,12,
-0x1899c4,1,
-0x1899cc,2,
-0x189c00,2,
-0x189ffc,1,
-0x18a004,1,
-0x18a07c,33,
-0x18a104,1,
-0x18a120,11,
-0x18a184,3,
-0x18a194,31,
-0x18a8e0,1,
-0x18b004,1,
-0x18b020,8,
-0x18b044,1,
-0x18b060,10,
-0x18b104,1,
-0x18b178,34,
-0x18b204,1,
-0x18b218,12,
-0x18b280,2,
-0x18b304,1,
-0x18b30c,1,
-0x18b314,1,
-0x18b31c,1,
-0x18b324,1,
-0x18b32c,2,
-0x18b340,2,
-0x18b400,2,
-0x18b808,1,
-0x18c000,298,
-0x18c804,6,
-0x18c8e0,1,
-0x18d000,1,
-0x18d028,1,
-0x18d050,1,
-0x18d078,1,
-0x18d0a0,14,
-0x18d1ac,1,
-0x18d1d8,4,
-0x18d200,6,
-0x18d220,6,
-0x18d240,3,
-0x18d400,2,
-0x18d500,6,
-0x18d520,6,
-0x18d540,6,
-0x18d560,6,
-0x18d580,6,
-0x18d5a0,6,
-0x18d5c0,3,
-0x18d600,13,
-0x18d640,1,
-0x18d700,1,
-0x200000,5,
-0x200020,4,
-0x200034,17,
-0x200080,1,
-0x2000a0,6,
-0x200100,5,
-0x200120,4,
-0x200134,17,
-0x200180,1,
-0x2001a0,6,
-0x200200,5,
-0x200220,4,
-0x200234,17,
-0x200280,1,
-0x2002a0,6,
-0x200300,5,
-0x200320,4,
-0x200334,17,
-0x200380,1,
-0x2003a0,6,
-0x200500,6,
-0x20051c,7,
-0x200540,1,
-0x200c00,13,
-0x200c40,12,
-0x200c80,13,
-0x200cc0,12,
-0x200d00,6,
-0x200d20,6,
-0x200d80,14,
-0x200dc0,2,
-0x200e40,11,
-0x200e80,6,
-0x200ea0,6,
-0x201000,2,
-0x201010,5,
-0x201060,32,
-0x201100,8,
-0x201180,3,
-0x201190,2,
-0x20119c,5,
-0x201218,9,
-0x201240,3,
-0x201250,6,
-0x201280,1,
-0x201288,6,
-0x2012a4,1,
-0x201400,8,
-0x201424,2,
-0x201500,5,
-0x201520,4,
-0x201540,5,
-0x201560,4,
-0x201800,24,
-0x201864,5,
-0x201880,8,
-0x201900,13,
-0x201980,4,
-0x2019a0,6,
-0x201a40,1,
-0x201a60,1,
-0x201a68,23,
-0x201ac8,6,
-0x201b00,17,
-0x201b48,6,
-0x201b80,12,
-0x201c00,6,
-0x201c20,6,
-0x201c40,6,
-0x201c60,3,
-0x201d00,6,
-0x201d20,6,
-0x201d40,3,
-0x202000,5,
-0x202020,4,
-0x202034,17,
-0x202080,1,
-0x2020a0,6,
-0x202100,5,
-0x202120,4,
-0x202134,17,
-0x202180,1,
-0x2021a0,6,
-0x202200,5,
-0x202220,4,
-0x202234,17,
-0x202280,1,
-0x2022a0,6,
-0x202300,5,
-0x202320,4,
-0x202334,17,
-0x202380,1,
-0x2023a0,6,
-0x202500,6,
-0x20251c,7,
-0x202540,1,
-0x202c00,13,
-0x202c40,12,
-0x202c80,13,
-0x202cc0,12,
-0x202d00,6,
-0x202d20,6,
-0x202d80,14,
-0x202dc0,2,
-0x202e40,11,
-0x202e80,6,
-0x202ea0,6,
-0x203000,2,
-0x203010,5,
-0x203060,32,
-0x203100,8,
-0x203180,3,
-0x203190,2,
-0x20319c,5,
-0x203218,9,
-0x203240,3,
-0x203250,6,
-0x203280,1,
-0x203288,6,
-0x2032a4,1,
-0x203400,8,
-0x203424,2,
-0x203500,5,
-0x203520,4,
-0x203540,5,
-0x203560,4,
-0x203800,24,
-0x203864,5,
-0x203880,8,
-0x203900,13,
-0x203980,4,
-0x2039a0,6,
-0x203a40,1,
-0x203a60,1,
-0x203a68,23,
-0x203ac8,6,
-0x203b00,17,
-0x203b48,6,
-0x203b80,12,
-0x203c00,6,
-0x203c20,6,
-0x203c40,6,
-0x203c60,3,
-0x203d00,6,
-0x203d20,6,
-0x203d40,3,
-0x204000,29,
-0x204078,4,
-0x204090,2,
-0x2040a0,7,
-0x2040c0,11,
-0x204100,14,
-0x204140,14,
-0x204180,61,
-0x204278,4,
-0x204290,2,
-0x2042a0,7,
-0x2042c0,11,
-0x204300,14,
-0x204340,14,
-0x204380,61,
-0x204478,4,
-0x204490,2,
-0x2044a0,7,
-0x2044c0,11,
-0x204500,14,
-0x204540,14,
-0x204580,61,
-0x204678,4,
-0x204690,2,
-0x2046a0,7,
-0x2046c0,11,
-0x204700,14,
-0x204740,14,
-0x204780,67,
-0x204890,1,
-0x204a00,8,
-0x204a24,15,
-0x204a64,30,
-0x204b00,4,
-0x204b20,2,
-0x204c00,6,
-0x204c40,14,
-0x204c80,9,
-0x204d00,9,
-0x204d2c,1,
-0x204d40,3,
-0x204d60,1,
-0x204d80,3,
-0x204e00,2,
-0x204e0c,1,
-0x204e14,5,
-0x204e2c,1,
-0x204e34,5,
-0x204e4c,1,
-0x204e54,5,
-0x204e6c,1,
-0x204e74,5,
-0x204e8c,1,
-0x204e94,5,
-0x204eac,1,
-0x204eb4,3,
-0x205000,29,
-0x205078,4,
-0x205090,2,
-0x2050a0,7,
-0x2050c0,11,
-0x205100,14,
-0x205140,14,
-0x205180,61,
-0x205278,4,
-0x205290,2,
-0x2052a0,7,
-0x2052c0,11,
-0x205300,14,
-0x205340,14,
-0x205380,61,
-0x205478,4,
-0x205490,2,
-0x2054a0,7,
-0x2054c0,11,
-0x205500,14,
-0x205540,14,
-0x205580,61,
-0x205678,4,
-0x205690,2,
-0x2056a0,7,
-0x2056c0,11,
-0x205700,14,
-0x205740,14,
-0x205780,67,
-0x205890,1,
-0x205a00,8,
-0x205a24,15,
-0x205a64,30,
-0x205b00,4,
-0x205b20,2,
-0x205c00,6,
-0x205c40,14,
-0x205c80,9,
-0x205d00,9,
-0x205d2c,1,
-0x205d40,3,
-0x205d60,1,
-0x205d80,3,
-0x205e00,2,
-0x205e0c,1,
-0x205e14,5,
-0x205e2c,1,
-0x205e34,5,
-0x205e4c,1,
-0x205e54,5,
-0x205e6c,1,
-0x205e74,5,
-0x205e8c,1,
-0x205e94,5,
-0x205eac,1,
-0x205eb4,3,
-0x206000,14,
-0x206070,3,
-0x206080,6,
-0x206100,9,
-0x206204,1,
-0x20620c,6,
-0x206240,13,
-0x206280,16,
-0x206800,19,
-0x206850,10,
-0x206880,19,
-0x2068d0,10,
-0x206900,19,
-0x206950,10,
-0x206980,19,
-0x2069d0,10,
-0x206a00,19,
-0x206a50,10,
-0x206a80,19,
-0x206ad0,10,
-0x206b00,19,
-0x206b50,10,
-0x206b80,19,
-0x206bd0,10,
-0x206c00,19,
-0x206c60,6,
-0x206c84,1,
-0x206c94,8,
-0x206cb8,9,
-0x206ce0,4,
-0x207000,6,
-0x207020,3,
-0x207040,7,
-0x207060,6,
-0x207100,5,
-0x207138,1,
-0x207144,1,
-0x207150,2,
-0x208000,6,
-0x208020,3,
-0x208030,9,
-0x208100,6,
-0x208120,10,
-0x208150,8,
-0x208400,1,
-0x208428,1,
-0x208450,1,
-0x208478,1,
-0x2084a0,8,
-0x2085ac,1,
-0x2085d8,4,
-0x208600,6,
-0x208620,6,
-0x208640,3,
-0x208800,6,
-0x208820,3,
-0x208830,4,
-0x208858,2,
-0x208864,1,
-0x208874,3,
-0x208898,2,
-0x2088a4,1,
-0x2088b4,3,
-0x209000,6,
-0x209020,6,
-0x209040,3,
-0x209080,14,
-0x2090bc,1,
-0x2090c4,13,
-0x2090fc,1,
-0x209200,20,
-0x20925c,30,
-0x209300,24,
-0x209380,2,
-0x2093a0,1,
-0x2093c0,11,
-0x209404,3,
-0x209420,11,
-0x209460,3,
-0x209480,6,
-0x209500,6,
-0x209520,6,
-0x209540,1,
-0x209558,2,
-0x209600,17,
-0x209800,410,
-0x20a000,6,
-0x20a020,6,
-0x20a040,3,
-0x20a080,14,
-0x20a0bc,1,
-0x20a0c4,13,
-0x20a0fc,1,
-0x20a200,20,
-0x20a25c,30,
-0x20a300,24,
-0x20a380,2,
-0x20a3a0,1,
-0x20a3c0,11,
-0x20a404,3,
-0x20a420,11,
-0x20a460,3,
-0x20a480,6,
-0x20a500,6,
-0x20a520,6,
-0x20a540,1,
-0x20a558,2,
-0x20a600,17,
-0x20a800,410,
-0x20b000,4,
-0x20b020,25,
-0x20b088,8,
-0x20b100,4,
-0x20b120,25,
-0x20b188,8,
-0x20b200,34,
-0x20b300,37,
-0x20b400,16,
-0x20b464,1,
-0x20b474,3,
-0x20b500,6,
-0x20b520,2,
-0x20b530,9,
-0x20b570,10,
-0x20b5a0,2,
-0x20b5b0,9,
-0x20b5f0,4,
-0x20b620,7,
-0x20b640,16,
-0x20b700,6,
-0x20b720,6,
-0x20b740,6,
-0x20b760,6,
-0x20b780,3,
-0x20b800,5,
-0x20b818,1,
-0x20b854,6,
-0x20b880,2,
-0x20b8a4,1,
-0x20b8ac,2,
-0x20ba00,28,
-0x20ba7c,13,
-0x20bab4,1,
-0x20babc,10,
-0x20bb04,1,
-0x20bb0c,5,
-0x20bb24,1,
-0x20bb34,9,
-0x20bb60,6,
-0x20bb80,22,
-0x20bbe0,3,
-0x20bbf0,2,
-0x20bc00,5,
-0x20bc18,1,
-0x20bc54,6,
-0x20bc80,2,
-0x20bca4,1,
-0x20bcac,2,
-0x20be00,28,
-0x20be7c,13,
-0x20beb4,1,
-0x20bebc,10,
-0x20bf04,1,
-0x20bf0c,5,
-0x20bf24,1,
-0x20bf34,9,
-0x20bf60,6,
-0x20bf80,22,
-0x20bfe0,3,
-0x20bff0,2,
-0x20c008,2,
-0x20c014,11,
-0x20c044,1,
-0x20c04c,3,
-0x20c05c,1,
-0x20c064,1,
-0x20c07c,1,
-0x20c500,2,
-0x20c518,1,
-0x20c520,3,
-0x20c540,6,
-0x20c580,10,
-0x20c808,2,
-0x20c814,11,
-0x20c844,1,
-0x20c84c,3,
-0x20c85c,1,
-0x20c864,1,
-0x20c87c,1,
-0x20cd00,2,
-0x20cd18,1,
-0x20cd20,3,
-0x20cd40,6,
-0x20cd80,10,
-0x20d800,2,
-0x20d828,2,
-0x20d850,2,
-0x20d878,2,
-0x20d8a0,6,
-0x20d9ac,1,
-0x20d9d8,4,
-0x20da00,6,
-0x20da20,6,
-0x20da40,6,
-0x20da60,6,
-0x20da80,3,
-0x20dc00,6,
-0x20dc20,3,
-0x20dc40,2,
-0x20dc60,1,
-0x210000,5,
-0x210020,4,
-0x210034,17,
-0x210080,1,
-0x2100a0,6,
-0x210100,5,
-0x210120,4,
-0x210134,17,
-0x210180,1,
-0x2101a0,6,
-0x210200,5,
-0x210220,4,
-0x210234,17,
-0x210280,1,
-0x2102a0,6,
-0x210300,5,
-0x210320,4,
-0x210334,17,
-0x210380,1,
-0x2103a0,6,
-0x210500,6,
-0x21051c,7,
-0x210540,1,
-0x210c00,13,
-0x210c40,12,
-0x210c80,13,
-0x210cc0,12,
-0x210d00,6,
-0x210d20,6,
-0x210d80,14,
-0x210dc0,2,
-0x210e40,11,
-0x210e80,6,
-0x210ea0,6,
-0x211000,2,
-0x211010,5,
-0x211060,32,
-0x211100,8,
-0x211180,3,
-0x211190,2,
-0x21119c,5,
-0x211218,9,
-0x211240,3,
-0x211250,6,
-0x211280,1,
-0x211288,6,
-0x2112a4,1,
-0x211400,8,
-0x211424,2,
-0x211500,5,
-0x211520,4,
-0x211540,5,
-0x211560,4,
-0x211800,24,
-0x211864,5,
-0x211880,8,
-0x211900,13,
-0x211980,4,
-0x2119a0,6,
-0x211a40,1,
-0x211a60,1,
-0x211a68,23,
-0x211ac8,6,
-0x211b00,17,
-0x211b48,6,
-0x211b80,12,
-0x211c00,6,
-0x211c20,6,
-0x211c40,6,
-0x211c60,3,
-0x211d00,6,
-0x211d20,6,
-0x211d40,3,
-0x212000,5,
-0x212020,4,
-0x212034,17,
-0x212080,1,
-0x2120a0,6,
-0x212100,5,
-0x212120,4,
-0x212134,17,
-0x212180,1,
-0x2121a0,6,
-0x212200,5,
-0x212220,4,
-0x212234,17,
-0x212280,1,
-0x2122a0,6,
-0x212300,5,
-0x212320,4,
-0x212334,17,
-0x212380,1,
-0x2123a0,6,
-0x212500,6,
-0x21251c,7,
-0x212540,1,
-0x212c00,13,
-0x212c40,12,
-0x212c80,13,
-0x212cc0,12,
-0x212d00,6,
-0x212d20,6,
-0x212d80,14,
-0x212dc0,2,
-0x212e40,11,
-0x212e80,6,
-0x212ea0,6,
-0x213000,2,
-0x213010,5,
-0x213060,32,
-0x213100,8,
-0x213180,3,
-0x213190,2,
-0x21319c,5,
-0x213218,9,
-0x213240,3,
-0x213250,6,
-0x213280,1,
-0x213288,6,
-0x2132a4,1,
-0x213400,8,
-0x213424,2,
-0x213500,5,
-0x213520,4,
-0x213540,5,
-0x213560,4,
-0x213800,24,
-0x213864,5,
-0x213880,8,
-0x213900,13,
-0x213980,4,
-0x2139a0,6,
-0x213a40,1,
-0x213a60,1,
-0x213a68,23,
-0x213ac8,6,
-0x213b00,17,
-0x213b48,6,
-0x213b80,12,
-0x213c00,6,
-0x213c20,6,
-0x213c40,6,
-0x213c60,3,
-0x213d00,6,
-0x213d20,6,
-0x213d40,3,
-0x214000,29,
-0x214078,4,
-0x214090,2,
-0x2140a0,7,
-0x2140c0,11,
-0x214100,14,
-0x214140,14,
-0x214180,61,
-0x214278,4,
-0x214290,2,
-0x2142a0,7,
-0x2142c0,11,
-0x214300,14,
-0x214340,14,
-0x214380,61,
-0x214478,4,
-0x214490,2,
-0x2144a0,7,
-0x2144c0,11,
-0x214500,14,
-0x214540,14,
-0x214580,61,
-0x214678,4,
-0x214690,2,
-0x2146a0,7,
-0x2146c0,11,
-0x214700,14,
-0x214740,14,
-0x214780,67,
-0x214890,1,
-0x214a00,8,
-0x214a24,15,
-0x214a64,30,
-0x214b00,4,
-0x214b20,2,
-0x214c00,6,
-0x214c40,14,
-0x214c80,9,
-0x214d00,9,
-0x214d2c,1,
-0x214d40,3,
-0x214d60,1,
-0x214d80,3,
-0x214e00,2,
-0x214e0c,1,
-0x214e14,5,
-0x214e2c,1,
-0x214e34,5,
-0x214e4c,1,
-0x214e54,5,
-0x214e6c,1,
-0x214e74,5,
-0x214e8c,1,
-0x214e94,5,
-0x214eac,1,
-0x214eb4,3,
-0x215000,29,
-0x215078,4,
-0x215090,2,
-0x2150a0,7,
-0x2150c0,11,
-0x215100,14,
-0x215140,14,
-0x215180,61,
-0x215278,4,
-0x215290,2,
-0x2152a0,7,
-0x2152c0,11,
-0x215300,14,
-0x215340,14,
-0x215380,61,
-0x215478,4,
-0x215490,2,
-0x2154a0,7,
-0x2154c0,11,
-0x215500,14,
-0x215540,14,
-0x215580,61,
-0x215678,4,
-0x215690,2,
-0x2156a0,7,
-0x2156c0,11,
-0x215700,14,
-0x215740,14,
-0x215780,67,
-0x215890,1,
-0x215a00,8,
-0x215a24,15,
-0x215a64,30,
-0x215b00,4,
-0x215b20,2,
-0x215c00,6,
-0x215c40,14,
-0x215c80,9,
-0x215d00,9,
-0x215d2c,1,
-0x215d40,3,
-0x215d60,1,
-0x215d80,3,
-0x215e00,2,
-0x215e0c,1,
-0x215e14,5,
-0x215e2c,1,
-0x215e34,5,
-0x215e4c,1,
-0x215e54,5,
-0x215e6c,1,
-0x215e74,5,
-0x215e8c,1,
-0x215e94,5,
-0x215eac,1,
-0x215eb4,3,
-0x216000,14,
-0x216070,3,
-0x216080,6,
-0x216100,9,
-0x216204,1,
-0x21620c,6,
-0x216240,13,
-0x216280,16,
-0x216800,19,
-0x216850,10,
-0x216880,19,
-0x2168d0,10,
-0x216900,19,
-0x216950,10,
-0x216980,19,
-0x2169d0,10,
-0x216a00,19,
-0x216a50,10,
-0x216a80,19,
-0x216ad0,10,
-0x216b00,19,
-0x216b50,10,
-0x216b80,19,
-0x216bd0,10,
-0x216c00,19,
-0x216c60,6,
-0x216c84,1,
-0x216c94,8,
-0x216cb8,9,
-0x216ce0,4,
-0x217000,6,
-0x217020,3,
-0x217040,7,
-0x217060,6,
-0x217100,5,
-0x217138,1,
-0x217144,1,
-0x217150,2,
-0x218000,6,
-0x218020,3,
-0x218030,9,
-0x218100,6,
-0x218120,10,
-0x218150,8,
-0x218400,1,
-0x218428,1,
-0x218450,1,
-0x218478,1,
-0x2184a0,8,
-0x2185ac,1,
-0x2185d8,4,
-0x218600,6,
-0x218620,6,
-0x218640,3,
-0x218800,6,
-0x218820,3,
-0x218830,4,
-0x218858,2,
-0x218864,1,
-0x218874,3,
-0x218898,2,
-0x2188a4,1,
-0x2188b4,3,
-0x219000,6,
-0x219020,6,
-0x219040,3,
-0x219080,14,
-0x2190bc,1,
-0x2190c4,13,
-0x2190fc,1,
-0x219200,20,
-0x21925c,30,
-0x219300,24,
-0x219380,2,
-0x2193a0,1,
-0x2193c0,11,
-0x219404,3,
-0x219420,11,
-0x219460,3,
-0x219480,6,
-0x219500,6,
-0x219520,6,
-0x219540,1,
-0x219558,2,
-0x219600,17,
-0x219800,410,
-0x21a000,6,
-0x21a020,6,
-0x21a040,3,
-0x21a080,14,
-0x21a0bc,1,
-0x21a0c4,13,
-0x21a0fc,1,
-0x21a200,20,
-0x21a25c,30,
-0x21a300,24,
-0x21a380,2,
-0x21a3a0,1,
-0x21a3c0,11,
-0x21a404,3,
-0x21a420,11,
-0x21a460,3,
-0x21a480,6,
-0x21a500,6,
-0x21a520,6,
-0x21a540,1,
-0x21a558,2,
-0x21a600,17,
-0x21a800,410,
-0x21b000,4,
-0x21b020,25,
-0x21b088,8,
-0x21b100,4,
-0x21b120,25,
-0x21b188,8,
-0x21b200,34,
-0x21b300,37,
-0x21b400,16,
-0x21b464,1,
-0x21b474,3,
-0x21b500,6,
-0x21b520,2,
-0x21b530,9,
-0x21b570,10,
-0x21b5a0,2,
-0x21b5b0,9,
-0x21b5f0,4,
-0x21b620,7,
-0x21b640,16,
-0x21b700,6,
-0x21b720,6,
-0x21b740,6,
-0x21b760,6,
-0x21b780,3,
-0x21b800,5,
-0x21b818,1,
-0x21b854,6,
-0x21b880,2,
-0x21b8a4,1,
-0x21b8ac,2,
-0x21ba00,28,
-0x21ba7c,13,
-0x21bab4,1,
-0x21babc,10,
-0x21bb04,1,
-0x21bb0c,5,
-0x21bb24,1,
-0x21bb34,9,
-0x21bb60,6,
-0x21bb80,22,
-0x21bbe0,3,
-0x21bbf0,2,
-0x21bc00,5,
-0x21bc18,1,
-0x21bc54,6,
-0x21bc80,2,
-0x21bca4,1,
-0x21bcac,2,
-0x21be00,28,
-0x21be7c,13,
-0x21beb4,1,
-0x21bebc,10,
-0x21bf04,1,
-0x21bf0c,5,
-0x21bf24,1,
-0x21bf34,9,
-0x21bf60,6,
-0x21bf80,22,
-0x21bfe0,3,
-0x21bff0,2,
-0x21c008,2,
-0x21c014,11,
-0x21c044,1,
-0x21c04c,3,
-0x21c05c,1,
-0x21c064,1,
-0x21c07c,1,
-0x21c500,2,
-0x21c518,1,
-0x21c520,3,
-0x21c540,6,
-0x21c580,10,
-0x21c808,2,
-0x21c814,11,
-0x21c844,1,
-0x21c84c,3,
-0x21c85c,1,
-0x21c864,1,
-0x21c87c,1,
-0x21cd00,2,
-0x21cd18,1,
-0x21cd20,3,
-0x21cd40,6,
-0x21cd80,10,
-0x21d800,2,
-0x21d828,2,
-0x21d850,2,
-0x21d878,2,
-0x21d8a0,6,
-0x21d9ac,1,
-0x21d9d8,4,
-0x21da00,6,
-0x21da20,6,
-0x21da40,6,
-0x21da60,6,
-0x21da80,3,
-0x21dc00,6,
-0x21dc20,3,
-0x21dc40,2,
-0x21dc60,1,
-0x220000,5,
-0x220020,4,
-0x220034,17,
-0x220080,1,
-0x2200a0,6,
-0x220100,5,
-0x220120,4,
-0x220134,17,
-0x220180,1,
-0x2201a0,6,
-0x220200,5,
-0x220220,4,
-0x220234,17,
-0x220280,1,
-0x2202a0,6,
-0x220300,5,
-0x220320,4,
-0x220334,17,
-0x220380,1,
-0x2203a0,6,
-0x220500,6,
-0x22051c,7,
-0x220540,1,
-0x220c00,13,
-0x220c40,12,
-0x220c80,13,
-0x220cc0,12,
-0x220d00,6,
-0x220d20,6,
-0x220d80,14,
-0x220dc0,2,
-0x220e40,11,
-0x220e80,6,
-0x220ea0,6,
-0x221000,2,
-0x221010,5,
-0x221060,32,
-0x221100,8,
-0x221180,3,
-0x221190,2,
-0x22119c,5,
-0x221218,9,
-0x221240,3,
-0x221250,6,
-0x221280,1,
-0x221288,6,
-0x2212a4,1,
-0x221400,8,
-0x221424,2,
-0x221500,5,
-0x221520,4,
-0x221540,5,
-0x221560,4,
-0x221800,24,
-0x221864,5,
-0x221880,8,
-0x221900,13,
-0x221980,4,
-0x2219a0,6,
-0x221a40,1,
-0x221a60,1,
-0x221a68,23,
-0x221ac8,6,
-0x221b00,17,
-0x221b48,6,
-0x221b80,12,
-0x221c00,6,
-0x221c20,6,
-0x221c40,6,
-0x221c60,3,
-0x221d00,6,
-0x221d20,6,
-0x221d40,3,
-0x222000,5,
-0x222020,4,
-0x222034,17,
-0x222080,1,
-0x2220a0,6,
-0x222100,5,
-0x222120,4,
-0x222134,17,
-0x222180,1,
-0x2221a0,6,
-0x222200,5,
-0x222220,4,
-0x222234,17,
-0x222280,1,
-0x2222a0,6,
-0x222300,5,
-0x222320,4,
-0x222334,17,
-0x222380,1,
-0x2223a0,6,
-0x222500,6,
-0x22251c,7,
-0x222540,1,
-0x222c00,13,
-0x222c40,12,
-0x222c80,13,
-0x222cc0,12,
-0x222d00,6,
-0x222d20,6,
-0x222d80,14,
-0x222dc0,2,
-0x222e40,11,
-0x222e80,6,
-0x222ea0,6,
-0x223000,2,
-0x223010,5,
-0x223060,32,
-0x223100,8,
-0x223180,3,
-0x223190,2,
-0x22319c,5,
-0x223218,9,
-0x223240,3,
-0x223250,6,
-0x223280,1,
-0x223288,6,
-0x2232a4,1,
-0x223400,8,
-0x223424,2,
-0x223500,5,
-0x223520,4,
-0x223540,5,
-0x223560,4,
-0x223800,24,
-0x223864,5,
-0x223880,8,
-0x223900,13,
-0x223980,4,
-0x2239a0,6,
-0x223a40,1,
-0x223a60,1,
-0x223a68,23,
-0x223ac8,6,
-0x223b00,17,
-0x223b48,6,
-0x223b80,12,
-0x223c00,6,
-0x223c20,6,
-0x223c40,6,
-0x223c60,3,
-0x223d00,6,
-0x223d20,6,
-0x223d40,3,
-0x224000,29,
-0x224078,4,
-0x224090,2,
-0x2240a0,7,
-0x2240c0,11,
-0x224100,14,
-0x224140,14,
-0x224180,61,
-0x224278,4,
-0x224290,2,
-0x2242a0,7,
-0x2242c0,11,
-0x224300,14,
-0x224340,14,
-0x224380,61,
-0x224478,4,
-0x224490,2,
-0x2244a0,7,
-0x2244c0,11,
-0x224500,14,
-0x224540,14,
-0x224580,61,
-0x224678,4,
-0x224690,2,
-0x2246a0,7,
-0x2246c0,11,
-0x224700,14,
-0x224740,14,
-0x224780,67,
-0x224890,1,
-0x224a00,8,
-0x224a24,15,
-0x224a64,30,
-0x224b00,4,
-0x224b20,2,
-0x224c00,6,
-0x224c40,14,
-0x224c80,9,
-0x224d00,9,
-0x224d2c,1,
-0x224d40,3,
-0x224d60,1,
-0x224d80,3,
-0x224e00,2,
-0x224e0c,1,
-0x224e14,5,
-0x224e2c,1,
-0x224e34,5,
-0x224e4c,1,
-0x224e54,5,
-0x224e6c,1,
-0x224e74,5,
-0x224e8c,1,
-0x224e94,5,
-0x224eac,1,
-0x224eb4,3,
-0x225000,29,
-0x225078,4,
-0x225090,2,
-0x2250a0,7,
-0x2250c0,11,
-0x225100,14,
-0x225140,14,
-0x225180,61,
-0x225278,4,
-0x225290,2,
-0x2252a0,7,
-0x2252c0,11,
-0x225300,14,
-0x225340,14,
-0x225380,61,
-0x225478,4,
-0x225490,2,
-0x2254a0,7,
-0x2254c0,11,
-0x225500,14,
-0x225540,14,
-0x225580,61,
-0x225678,4,
-0x225690,2,
-0x2256a0,7,
-0x2256c0,11,
-0x225700,14,
-0x225740,14,
-0x225780,67,
-0x225890,1,
-0x225a00,8,
-0x225a24,15,
-0x225a64,30,
-0x225b00,4,
-0x225b20,2,
-0x225c00,6,
-0x225c40,14,
-0x225c80,9,
-0x225d00,9,
-0x225d2c,1,
-0x225d40,3,
-0x225d60,1,
-0x225d80,3,
-0x225e00,2,
-0x225e0c,1,
-0x225e14,5,
-0x225e2c,1,
-0x225e34,5,
-0x225e4c,1,
-0x225e54,5,
-0x225e6c,1,
-0x225e74,5,
-0x225e8c,1,
-0x225e94,5,
-0x225eac,1,
-0x225eb4,3,
-0x226000,14,
-0x226070,3,
-0x226080,6,
-0x226100,9,
-0x226204,1,
-0x22620c,6,
-0x226240,13,
-0x226280,16,
-0x226800,19,
-0x226850,10,
-0x226880,19,
-0x2268d0,10,
-0x226900,19,
-0x226950,10,
-0x226980,19,
-0x2269d0,10,
-0x226a00,19,
-0x226a50,10,
-0x226a80,19,
-0x226ad0,10,
-0x226b00,19,
-0x226b50,10,
-0x226b80,19,
-0x226bd0,10,
-0x226c00,19,
-0x226c60,6,
-0x226c84,1,
-0x226c94,8,
-0x226cb8,9,
-0x226ce0,4,
-0x227000,6,
-0x227020,3,
-0x227040,7,
-0x227060,6,
-0x227100,5,
-0x227138,1,
-0x227144,1,
-0x227150,2,
-0x228000,6,
-0x228020,3,
-0x228030,9,
-0x228100,6,
-0x228120,10,
-0x228150,8,
-0x228400,1,
-0x228428,1,
-0x228450,1,
-0x228478,1,
-0x2284a0,8,
-0x2285ac,1,
-0x2285d8,4,
-0x228600,6,
-0x228620,6,
-0x228640,3,
-0x228800,6,
-0x228820,3,
-0x228830,4,
-0x228858,2,
-0x228864,1,
-0x228874,3,
-0x228898,2,
-0x2288a4,1,
-0x2288b4,3,
-0x229000,6,
-0x229020,6,
-0x229040,3,
-0x229080,14,
-0x2290bc,1,
-0x2290c4,13,
-0x2290fc,1,
-0x229200,20,
-0x22925c,30,
-0x229300,24,
-0x229380,2,
-0x2293a0,1,
-0x2293c0,11,
-0x229404,3,
-0x229420,11,
-0x229460,3,
-0x229480,6,
-0x229500,6,
-0x229520,6,
-0x229540,1,
-0x229558,2,
-0x229600,17,
-0x229800,410,
-0x22a000,6,
-0x22a020,6,
-0x22a040,3,
-0x22a080,14,
-0x22a0bc,1,
-0x22a0c4,13,
-0x22a0fc,1,
-0x22a200,20,
-0x22a25c,30,
-0x22a300,24,
-0x22a380,2,
-0x22a3a0,1,
-0x22a3c0,11,
-0x22a404,3,
-0x22a420,11,
-0x22a460,3,
-0x22a480,6,
-0x22a500,6,
-0x22a520,6,
-0x22a540,1,
-0x22a558,2,
-0x22a600,17,
-0x22a800,410,
-0x22b000,4,
-0x22b020,25,
-0x22b088,8,
-0x22b100,4,
-0x22b120,25,
-0x22b188,8,
-0x22b200,34,
-0x22b300,37,
-0x22b400,16,
-0x22b464,1,
-0x22b474,3,
-0x22b500,6,
-0x22b520,2,
-0x22b530,9,
-0x22b570,10,
-0x22b5a0,2,
-0x22b5b0,9,
-0x22b5f0,4,
-0x22b620,7,
-0x22b640,16,
-0x22b700,6,
-0x22b720,6,
-0x22b740,6,
-0x22b760,6,
-0x22b780,3,
-0x22b800,5,
-0x22b818,1,
-0x22b854,6,
-0x22b880,2,
-0x22b8a4,1,
-0x22b8ac,2,
-0x22ba00,28,
-0x22ba7c,13,
-0x22bab4,1,
-0x22babc,10,
-0x22bb04,1,
-0x22bb0c,5,
-0x22bb24,1,
-0x22bb34,9,
-0x22bb60,6,
-0x22bb80,22,
-0x22bbe0,3,
-0x22bbf0,2,
-0x22bc00,5,
-0x22bc18,1,
-0x22bc54,6,
-0x22bc80,2,
-0x22bca4,1,
-0x22bcac,2,
-0x22be00,28,
-0x22be7c,13,
-0x22beb4,1,
-0x22bebc,10,
-0x22bf04,1,
-0x22bf0c,5,
-0x22bf24,1,
-0x22bf34,9,
-0x22bf60,6,
-0x22bf80,22,
-0x22bfe0,3,
-0x22bff0,2,
-0x22c008,2,
-0x22c014,11,
-0x22c044,1,
-0x22c04c,3,
-0x22c05c,1,
-0x22c064,1,
-0x22c07c,1,
-0x22c500,2,
-0x22c518,1,
-0x22c520,3,
-0x22c540,6,
-0x22c580,10,
-0x22c808,2,
-0x22c814,11,
-0x22c844,1,
-0x22c84c,3,
-0x22c85c,1,
-0x22c864,1,
-0x22c87c,1,
-0x22cd00,2,
-0x22cd18,1,
-0x22cd20,3,
-0x22cd40,6,
-0x22cd80,10,
-0x22d800,2,
-0x22d828,2,
-0x22d850,2,
-0x22d878,2,
-0x22d8a0,6,
-0x22d9ac,1,
-0x22d9d8,4,
-0x22da00,6,
-0x22da20,6,
-0x22da40,6,
-0x22da60,6,
-0x22da80,3,
-0x22dc00,6,
-0x22dc20,3,
-0x22dc40,2,
-0x22dc60,1,
-0x230000,5,
-0x230020,4,
-0x230034,17,
-0x230080,1,
-0x2300a0,6,
-0x230100,5,
-0x230120,4,
-0x230134,17,
-0x230180,1,
-0x2301a0,6,
-0x230200,5,
-0x230220,4,
-0x230234,17,
-0x230280,1,
-0x2302a0,6,
-0x230300,5,
-0x230320,4,
-0x230334,17,
-0x230380,1,
-0x2303a0,6,
-0x230500,6,
-0x23051c,7,
-0x230540,1,
-0x230c00,13,
-0x230c40,12,
-0x230c80,13,
-0x230cc0,12,
-0x230d00,6,
-0x230d20,6,
-0x230d80,14,
-0x230dc0,2,
-0x230e40,11,
-0x230e80,6,
-0x230ea0,6,
-0x231000,2,
-0x231010,5,
-0x231060,32,
-0x231100,8,
-0x231180,3,
-0x231190,2,
-0x23119c,5,
-0x231218,9,
-0x231240,3,
-0x231250,6,
-0x231280,1,
-0x231288,6,
-0x2312a4,1,
-0x231400,8,
-0x231424,2,
-0x231500,5,
-0x231520,4,
-0x231540,5,
-0x231560,4,
-0x231800,24,
-0x231864,5,
-0x231880,8,
-0x231900,13,
-0x231980,4,
-0x2319a0,6,
-0x231a40,1,
-0x231a60,1,
-0x231a68,23,
-0x231ac8,6,
-0x231b00,17,
-0x231b48,6,
-0x231b80,12,
-0x231c00,6,
-0x231c20,6,
-0x231c40,6,
-0x231c60,3,
-0x231d00,6,
-0x231d20,6,
-0x231d40,3,
-0x232000,5,
-0x232020,4,
-0x232034,17,
-0x232080,1,
-0x2320a0,6,
-0x232100,5,
-0x232120,4,
-0x232134,17,
-0x232180,1,
-0x2321a0,6,
-0x232200,5,
-0x232220,4,
-0x232234,17,
-0x232280,1,
-0x2322a0,6,
-0x232300,5,
-0x232320,4,
-0x232334,17,
-0x232380,1,
-0x2323a0,6,
-0x232500,6,
-0x23251c,7,
-0x232540,1,
-0x232c00,13,
-0x232c40,12,
-0x232c80,13,
-0x232cc0,12,
-0x232d00,6,
-0x232d20,6,
-0x232d80,14,
-0x232dc0,2,
-0x232e40,11,
-0x232e80,6,
-0x232ea0,6,
-0x233000,2,
-0x233010,5,
-0x233060,32,
-0x233100,8,
-0x233180,3,
-0x233190,2,
-0x23319c,5,
-0x233218,9,
-0x233240,3,
-0x233250,6,
-0x233280,1,
-0x233288,6,
-0x2332a4,1,
-0x233400,8,
-0x233424,2,
-0x233500,5,
-0x233520,4,
-0x233540,5,
-0x233560,4,
-0x233800,24,
-0x233864,5,
-0x233880,8,
-0x233900,13,
-0x233980,4,
-0x2339a0,6,
-0x233a40,1,
-0x233a60,1,
-0x233a68,23,
-0x233ac8,6,
-0x233b00,17,
-0x233b48,6,
-0x233b80,12,
-0x233c00,6,
-0x233c20,6,
-0x233c40,6,
-0x233c60,3,
-0x233d00,6,
-0x233d20,6,
-0x233d40,3,
-0x234000,29,
-0x234078,4,
-0x234090,2,
-0x2340a0,7,
-0x2340c0,11,
-0x234100,14,
-0x234140,14,
-0x234180,61,
-0x234278,4,
-0x234290,2,
-0x2342a0,7,
-0x2342c0,11,
-0x234300,14,
-0x234340,14,
-0x234380,61,
-0x234478,4,
-0x234490,2,
-0x2344a0,7,
-0x2344c0,11,
-0x234500,14,
-0x234540,14,
-0x234580,61,
-0x234678,4,
-0x234690,2,
-0x2346a0,7,
-0x2346c0,11,
-0x234700,14,
-0x234740,14,
-0x234780,67,
-0x234890,1,
-0x234a00,8,
-0x234a24,15,
-0x234a64,30,
-0x234b00,4,
-0x234b20,2,
-0x234c00,6,
-0x234c40,14,
-0x234c80,9,
-0x234d00,9,
-0x234d2c,1,
-0x234d40,3,
-0x234d60,1,
-0x234d80,3,
-0x234e00,2,
-0x234e0c,1,
-0x234e14,5,
-0x234e2c,1,
-0x234e34,5,
-0x234e4c,1,
-0x234e54,5,
-0x234e6c,1,
-0x234e74,5,
-0x234e8c,1,
-0x234e94,5,
-0x234eac,1,
-0x234eb4,3,
-0x235000,29,
-0x235078,4,
-0x235090,2,
-0x2350a0,7,
-0x2350c0,11,
-0x235100,14,
-0x235140,14,
-0x235180,61,
-0x235278,4,
-0x235290,2,
-0x2352a0,7,
-0x2352c0,11,
-0x235300,14,
-0x235340,14,
-0x235380,61,
-0x235478,4,
-0x235490,2,
-0x2354a0,7,
-0x2354c0,11,
-0x235500,14,
-0x235540,14,
-0x235580,61,
-0x235678,4,
-0x235690,2,
-0x2356a0,7,
-0x2356c0,11,
-0x235700,14,
-0x235740,14,
-0x235780,67,
-0x235890,1,
-0x235a00,8,
-0x235a24,15,
-0x235a64,30,
-0x235b00,4,
-0x235b20,2,
-0x235c00,6,
-0x235c40,14,
-0x235c80,9,
-0x235d00,9,
-0x235d2c,1,
-0x235d40,3,
-0x235d60,1,
-0x235d80,3,
-0x235e00,2,
-0x235e0c,1,
-0x235e14,5,
-0x235e2c,1,
-0x235e34,5,
-0x235e4c,1,
-0x235e54,5,
-0x235e6c,1,
-0x235e74,5,
-0x235e8c,1,
-0x235e94,5,
-0x235eac,1,
-0x235eb4,3,
-0x236000,14,
-0x236070,3,
-0x236080,6,
-0x236100,9,
-0x236204,1,
-0x23620c,6,
-0x236240,13,
-0x236280,16,
-0x236800,19,
-0x236850,10,
-0x236880,19,
-0x2368d0,10,
-0x236900,19,
-0x236950,10,
-0x236980,19,
-0x2369d0,10,
-0x236a00,19,
-0x236a50,10,
-0x236a80,19,
-0x236ad0,10,
-0x236b00,19,
-0x236b50,10,
-0x236b80,19,
-0x236bd0,10,
-0x236c00,19,
-0x236c60,6,
-0x236c84,1,
-0x236c94,8,
-0x236cb8,9,
-0x236ce0,4,
-0x237000,6,
-0x237020,3,
-0x237040,7,
-0x237060,6,
-0x237100,5,
-0x237138,1,
-0x237144,1,
-0x237150,2,
-0x238000,6,
-0x238020,3,
-0x238030,9,
-0x238100,6,
-0x238120,10,
-0x238150,8,
-0x238400,1,
-0x238428,1,
-0x238450,1,
-0x238478,1,
-0x2384a0,8,
-0x2385ac,1,
-0x2385d8,4,
-0x238600,6,
-0x238620,6,
-0x238640,3,
-0x238800,6,
-0x238820,3,
-0x238830,4,
-0x238858,2,
-0x238864,1,
-0x238874,3,
-0x238898,2,
-0x2388a4,1,
-0x2388b4,3,
-0x239000,6,
-0x239020,6,
-0x239040,3,
-0x239080,14,
-0x2390bc,1,
-0x2390c4,13,
-0x2390fc,1,
-0x239200,20,
-0x23925c,30,
-0x239300,24,
-0x239380,2,
-0x2393a0,1,
-0x2393c0,11,
-0x239404,3,
-0x239420,11,
-0x239460,3,
-0x239480,6,
-0x239500,6,
-0x239520,6,
-0x239540,1,
-0x239558,2,
-0x239600,17,
-0x239800,410,
-0x23a000,6,
-0x23a020,6,
-0x23a040,3,
-0x23a080,14,
-0x23a0bc,1,
-0x23a0c4,13,
-0x23a0fc,1,
-0x23a200,20,
-0x23a25c,30,
-0x23a300,24,
-0x23a380,2,
-0x23a3a0,1,
-0x23a3c0,11,
-0x23a404,3,
-0x23a420,11,
-0x23a460,3,
-0x23a480,6,
-0x23a500,6,
-0x23a520,6,
-0x23a540,1,
-0x23a558,2,
-0x23a600,17,
-0x23a800,410,
-0x23b000,4,
-0x23b020,25,
-0x23b088,8,
-0x23b100,4,
-0x23b120,25,
-0x23b188,8,
-0x23b200,34,
-0x23b300,37,
-0x23b400,16,
-0x23b464,1,
-0x23b474,3,
-0x23b500,6,
-0x23b520,2,
-0x23b530,9,
-0x23b570,10,
-0x23b5a0,2,
-0x23b5b0,9,
-0x23b5f0,4,
-0x23b620,7,
-0x23b640,16,
-0x23b700,6,
-0x23b720,6,
-0x23b740,6,
-0x23b760,6,
-0x23b780,3,
-0x23b800,5,
-0x23b818,1,
-0x23b854,6,
-0x23b880,2,
-0x23b8a4,1,
-0x23b8ac,2,
-0x23ba00,28,
-0x23ba7c,13,
-0x23bab4,1,
-0x23babc,10,
-0x23bb04,1,
-0x23bb0c,5,
-0x23bb24,1,
-0x23bb34,9,
-0x23bb60,6,
-0x23bb80,22,
-0x23bbe0,3,
-0x23bbf0,2,
-0x23bc00,5,
-0x23bc18,1,
-0x23bc54,6,
-0x23bc80,2,
-0x23bca4,1,
-0x23bcac,2,
-0x23be00,28,
-0x23be7c,13,
-0x23beb4,1,
-0x23bebc,10,
-0x23bf04,1,
-0x23bf0c,5,
-0x23bf24,1,
-0x23bf34,9,
-0x23bf60,6,
-0x23bf80,22,
-0x23bfe0,3,
-0x23bff0,2,
-0x23c008,2,
-0x23c014,11,
-0x23c044,1,
-0x23c04c,3,
-0x23c05c,1,
-0x23c064,1,
-0x23c07c,1,
-0x23c500,2,
-0x23c518,1,
-0x23c520,3,
-0x23c540,6,
-0x23c580,10,
-0x23c808,2,
-0x23c814,11,
-0x23c844,1,
-0x23c84c,3,
-0x23c85c,1,
-0x23c864,1,
-0x23c87c,1,
-0x23cd00,2,
-0x23cd18,1,
-0x23cd20,3,
-0x23cd40,6,
-0x23cd80,10,
-0x23d800,2,
-0x23d828,2,
-0x23d850,2,
-0x23d878,2,
-0x23d8a0,6,
-0x23d9ac,1,
-0x23d9d8,4,
-0x23da00,6,
-0x23da20,6,
-0x23da40,6,
-0x23da60,6,
-0x23da80,3,
-0x23dc00,6,
-0x23dc20,3,
-0x23dc40,2,
-0x23dc60,1,
-0x240000,5,
-0x240020,4,
-0x240034,17,
-0x240080,1,
-0x2400a0,6,
-0x240100,5,
-0x240120,4,
-0x240134,17,
-0x240180,1,
-0x2401a0,6,
-0x240200,5,
-0x240220,4,
-0x240234,17,
-0x240280,1,
-0x2402a0,6,
-0x240300,5,
-0x240320,4,
-0x240334,17,
-0x240380,1,
-0x2403a0,6,
-0x240500,6,
-0x24051c,7,
-0x240540,1,
-0x240c00,13,
-0x240c40,12,
-0x240c80,13,
-0x240cc0,12,
-0x240d00,6,
-0x240d20,6,
-0x240d80,14,
-0x240dc0,2,
-0x240e40,11,
-0x240e80,6,
-0x240ea0,6,
-0x241000,2,
-0x241010,5,
-0x241060,32,
-0x241100,8,
-0x241180,3,
-0x241190,2,
-0x24119c,5,
-0x241218,9,
-0x241240,3,
-0x241250,6,
-0x241280,1,
-0x241288,6,
-0x2412a4,1,
-0x241400,8,
-0x241424,2,
-0x241500,5,
-0x241520,4,
-0x241540,5,
-0x241560,4,
-0x241800,24,
-0x241864,5,
-0x241880,8,
-0x241900,13,
-0x241980,4,
-0x2419a0,6,
-0x241a40,1,
-0x241a60,1,
-0x241a68,23,
-0x241ac8,6,
-0x241b00,17,
-0x241b48,6,
-0x241b80,12,
-0x241c00,6,
-0x241c20,6,
-0x241c40,6,
-0x241c60,3,
-0x241d00,6,
-0x241d20,6,
-0x241d40,3,
-0x242000,5,
-0x242020,4,
-0x242034,17,
-0x242080,1,
-0x2420a0,6,
-0x242100,5,
-0x242120,4,
-0x242134,17,
-0x242180,1,
-0x2421a0,6,
-0x242200,5,
-0x242220,4,
-0x242234,17,
-0x242280,1,
-0x2422a0,6,
-0x242300,5,
-0x242320,4,
-0x242334,17,
-0x242380,1,
-0x2423a0,6,
-0x242500,6,
-0x24251c,7,
-0x242540,1,
-0x242c00,13,
-0x242c40,12,
-0x242c80,13,
-0x242cc0,12,
-0x242d00,6,
-0x242d20,6,
-0x242d80,14,
-0x242dc0,2,
-0x242e40,11,
-0x242e80,6,
-0x242ea0,6,
-0x243000,2,
-0x243010,5,
-0x243060,32,
-0x243100,8,
-0x243180,3,
-0x243190,2,
-0x24319c,5,
-0x243218,9,
-0x243240,3,
-0x243250,6,
-0x243280,1,
-0x243288,6,
-0x2432a4,1,
-0x243400,8,
-0x243424,2,
-0x243500,5,
-0x243520,4,
-0x243540,5,
-0x243560,4,
-0x243800,24,
-0x243864,5,
-0x243880,8,
-0x243900,13,
-0x243980,4,
-0x2439a0,6,
-0x243a40,1,
-0x243a60,1,
-0x243a68,23,
-0x243ac8,6,
-0x243b00,17,
-0x243b48,6,
-0x243b80,12,
-0x243c00,6,
-0x243c20,6,
-0x243c40,6,
-0x243c60,3,
-0x243d00,6,
-0x243d20,6,
-0x243d40,3,
-0x244000,29,
-0x244078,4,
-0x244090,2,
-0x2440a0,7,
-0x2440c0,11,
-0x244100,14,
-0x244140,14,
-0x244180,61,
-0x244278,4,
-0x244290,2,
-0x2442a0,7,
-0x2442c0,11,
-0x244300,14,
-0x244340,14,
-0x244380,61,
-0x244478,4,
-0x244490,2,
-0x2444a0,7,
-0x2444c0,11,
-0x244500,14,
-0x244540,14,
-0x244580,61,
-0x244678,4,
-0x244690,2,
-0x2446a0,7,
-0x2446c0,11,
-0x244700,14,
-0x244740,14,
-0x244780,67,
-0x244890,1,
-0x244a00,8,
-0x244a24,15,
-0x244a64,30,
-0x244b00,4,
-0x244b20,2,
-0x244c00,6,
-0x244c40,14,
-0x244c80,9,
-0x244d00,9,
-0x244d2c,1,
-0x244d40,3,
-0x244d60,1,
-0x244d80,3,
-0x244e00,2,
-0x244e0c,1,
-0x244e14,5,
-0x244e2c,1,
-0x244e34,5,
-0x244e4c,1,
-0x244e54,5,
-0x244e6c,1,
-0x244e74,5,
-0x244e8c,1,
-0x244e94,5,
-0x244eac,1,
-0x244eb4,3,
-0x245000,29,
-0x245078,4,
-0x245090,2,
-0x2450a0,7,
-0x2450c0,11,
-0x245100,14,
-0x245140,14,
-0x245180,61,
-0x245278,4,
-0x245290,2,
-0x2452a0,7,
-0x2452c0,11,
-0x245300,14,
-0x245340,14,
-0x245380,61,
-0x245478,4,
-0x245490,2,
-0x2454a0,7,
-0x2454c0,11,
-0x245500,14,
-0x245540,14,
-0x245580,61,
-0x245678,4,
-0x245690,2,
-0x2456a0,7,
-0x2456c0,11,
-0x245700,14,
-0x245740,14,
-0x245780,67,
-0x245890,1,
-0x245a00,8,
-0x245a24,15,
-0x245a64,30,
-0x245b00,4,
-0x245b20,2,
-0x245c00,6,
-0x245c40,14,
-0x245c80,9,
-0x245d00,9,
-0x245d2c,1,
-0x245d40,3,
-0x245d60,1,
-0x245d80,3,
-0x245e00,2,
-0x245e0c,1,
-0x245e14,5,
-0x245e2c,1,
-0x245e34,5,
-0x245e4c,1,
-0x245e54,5,
-0x245e6c,1,
-0x245e74,5,
-0x245e8c,1,
-0x245e94,5,
-0x245eac,1,
-0x245eb4,3,
-0x246000,14,
-0x246070,3,
-0x246080,6,
-0x246100,9,
-0x246204,1,
-0x24620c,6,
-0x246240,13,
-0x246280,16,
-0x246400,8,
-0x246424,15,
-0x246464,15,
-0x2464a4,15,
-0x2464e4,30,
-0x246580,10,
-0x2465ac,1,
-0x2465b4,5,
-0x2465cc,1,
-0x2465d4,5,
-0x2465ec,1,
-0x2465f4,13,
-0x246680,4,
-0x246694,2,
-0x2466a0,5,
-0x2466c0,5,
-0x2466e0,4,
-0x246800,19,
-0x246850,10,
-0x246880,19,
-0x2468d0,10,
-0x246900,19,
-0x246950,10,
-0x246980,19,
-0x2469d0,10,
-0x246a00,19,
-0x246a50,10,
-0x246a80,19,
-0x246ad0,10,
-0x246b00,19,
-0x246b50,10,
-0x246b80,19,
-0x246bd0,10,
-0x246c00,19,
-0x246c60,6,
-0x246c84,1,
-0x246c94,8,
-0x246cb8,9,
-0x246ce0,4,
-0x247000,6,
-0x247020,3,
-0x247040,7,
-0x247060,6,
-0x247100,5,
-0x247138,1,
-0x247144,1,
-0x247150,2,
-0x248000,6,
-0x248020,3,
-0x248030,9,
-0x248100,6,
-0x248120,10,
-0x248150,8,
-0x248400,1,
-0x248428,1,
-0x248450,1,
-0x248478,1,
-0x2484a0,8,
-0x2485ac,1,
-0x2485d8,4,
-0x248600,6,
-0x248620,6,
-0x248640,3,
-0x248800,6,
-0x248820,3,
-0x248830,4,
-0x248858,2,
-0x248864,1,
-0x248874,3,
-0x248898,2,
-0x2488a4,1,
-0x2488b4,3,
-0x249000,6,
-0x249020,6,
-0x249040,3,
-0x249080,14,
-0x2490bc,1,
-0x2490c4,13,
-0x2490fc,1,
-0x249200,20,
-0x24925c,30,
-0x249300,24,
-0x249380,2,
-0x2493a0,1,
-0x2493c0,11,
-0x249404,3,
-0x249420,11,
-0x249460,3,
-0x249480,6,
-0x249500,6,
-0x249520,6,
-0x249540,1,
-0x249558,2,
-0x249600,17,
-0x249800,410,
-0x24a000,6,
-0x24a020,6,
-0x24a040,3,
-0x24a080,14,
-0x24a0bc,1,
-0x24a0c4,13,
-0x24a0fc,1,
-0x24a200,20,
-0x24a25c,30,
-0x24a300,24,
-0x24a380,2,
-0x24a3a0,1,
-0x24a3c0,11,
-0x24a404,3,
-0x24a420,11,
-0x24a460,3,
-0x24a480,6,
-0x24a500,6,
-0x24a520,6,
-0x24a540,1,
-0x24a558,2,
-0x24a600,17,
-0x24a800,410,
-0x24b000,4,
-0x24b020,25,
-0x24b088,8,
-0x24b100,4,
-0x24b120,25,
-0x24b188,8,
-0x24b200,34,
-0x24b300,37,
-0x24b400,16,
-0x24b464,1,
-0x24b474,3,
-0x24b500,6,
-0x24b520,2,
-0x24b530,9,
-0x24b570,10,
-0x24b5a0,2,
-0x24b5b0,9,
-0x24b5f0,4,
-0x24b620,7,
-0x24b640,16,
-0x24b700,6,
-0x24b720,6,
-0x24b740,6,
-0x24b760,6,
-0x24b780,3,
-0x24b800,5,
-0x24b818,1,
-0x24b854,6,
-0x24b880,2,
-0x24b8a4,1,
-0x24b8ac,2,
-0x24ba00,28,
-0x24ba7c,13,
-0x24bab4,1,
-0x24babc,10,
-0x24bb04,1,
-0x24bb0c,5,
-0x24bb24,1,
-0x24bb34,9,
-0x24bb60,6,
-0x24bb80,22,
-0x24bbe0,3,
-0x24bbf0,2,
-0x24bc00,5,
-0x24bc18,1,
-0x24bc54,6,
-0x24bc80,2,
-0x24bca4,1,
-0x24bcac,2,
-0x24be00,28,
-0x24be7c,13,
-0x24beb4,1,
-0x24bebc,10,
-0x24bf04,1,
-0x24bf0c,5,
-0x24bf24,1,
-0x24bf34,9,
-0x24bf60,6,
-0x24bf80,22,
-0x24bfe0,3,
-0x24bff0,2,
-0x24c008,2,
-0x24c014,11,
-0x24c044,1,
-0x24c04c,3,
-0x24c05c,1,
-0x24c064,1,
-0x24c07c,1,
-0x24c500,2,
-0x24c518,1,
-0x24c520,3,
-0x24c540,6,
-0x24c580,10,
-0x24c808,2,
-0x24c814,11,
-0x24c844,1,
-0x24c84c,3,
-0x24c85c,1,
-0x24c864,1,
-0x24c87c,1,
-0x24cd00,2,
-0x24cd18,1,
-0x24cd20,3,
-0x24cd40,6,
-0x24cd80,10,
-0x24d800,2,
-0x24d828,2,
-0x24d850,2,
-0x24d878,2,
-0x24d8a0,6,
-0x24d9ac,1,
-0x24d9d8,4,
-0x24da00,6,
-0x24da20,6,
-0x24da40,6,
-0x24da60,6,
-0x24da80,3,
-0x24dc00,6,
-0x24dc20,3,
-0x24dc40,2,
-0x24dc60,1,
-0x250000,5,
-0x250020,4,
-0x250034,17,
-0x250080,1,
-0x2500a0,6,
-0x250100,5,
-0x250120,4,
-0x250134,17,
-0x250180,1,
-0x2501a0,6,
-0x250200,5,
-0x250220,4,
-0x250234,17,
-0x250280,1,
-0x2502a0,6,
-0x250300,5,
-0x250320,4,
-0x250334,17,
-0x250380,1,
-0x2503a0,6,
-0x250500,6,
-0x25051c,7,
-0x250540,1,
-0x250c00,13,
-0x250c40,12,
-0x250c80,13,
-0x250cc0,12,
-0x250d00,6,
-0x250d20,6,
-0x250d80,14,
-0x250dc0,2,
-0x250e40,11,
-0x250e80,6,
-0x250ea0,6,
-0x251000,2,
-0x251010,5,
-0x251060,32,
-0x251100,8,
-0x251180,3,
-0x251190,2,
-0x25119c,5,
-0x251218,9,
-0x251240,3,
-0x251250,6,
-0x251280,1,
-0x251288,6,
-0x2512a4,1,
-0x251400,8,
-0x251424,2,
-0x251500,5,
-0x251520,4,
-0x251540,5,
-0x251560,4,
-0x251800,24,
-0x251864,5,
-0x251880,8,
-0x251900,13,
-0x251980,4,
-0x2519a0,6,
-0x251a40,1,
-0x251a60,1,
-0x251a68,23,
-0x251ac8,6,
-0x251b00,17,
-0x251b48,6,
-0x251b80,12,
-0x251c00,6,
-0x251c20,6,
-0x251c40,6,
-0x251c60,3,
-0x251d00,6,
-0x251d20,6,
-0x251d40,3,
-0x252000,5,
-0x252020,4,
-0x252034,17,
-0x252080,1,
-0x2520a0,6,
-0x252100,5,
-0x252120,4,
-0x252134,17,
-0x252180,1,
-0x2521a0,6,
-0x252200,5,
-0x252220,4,
-0x252234,17,
-0x252280,1,
-0x2522a0,6,
-0x252300,5,
-0x252320,4,
-0x252334,17,
-0x252380,1,
-0x2523a0,6,
-0x252500,6,
-0x25251c,7,
-0x252540,1,
-0x252c00,13,
-0x252c40,12,
-0x252c80,13,
-0x252cc0,12,
-0x252d00,6,
-0x252d20,6,
-0x252d80,14,
-0x252dc0,2,
-0x252e40,11,
-0x252e80,6,
-0x252ea0,6,
-0x253000,2,
-0x253010,5,
-0x253060,32,
-0x253100,8,
-0x253180,3,
-0x253190,2,
-0x25319c,5,
-0x253218,9,
-0x253240,3,
-0x253250,6,
-0x253280,1,
-0x253288,6,
-0x2532a4,1,
-0x253400,8,
-0x253424,2,
-0x253500,5,
-0x253520,4,
-0x253540,5,
-0x253560,4,
-0x253800,24,
-0x253864,5,
-0x253880,8,
-0x253900,13,
-0x253980,4,
-0x2539a0,6,
-0x253a40,1,
-0x253a60,1,
-0x253a68,23,
-0x253ac8,6,
-0x253b00,17,
-0x253b48,6,
-0x253b80,12,
-0x253c00,6,
-0x253c20,6,
-0x253c40,6,
-0x253c60,3,
-0x253d00,6,
-0x253d20,6,
-0x253d40,3,
-0x254000,29,
-0x254078,4,
-0x254090,2,
-0x2540a0,7,
-0x2540c0,11,
-0x254100,14,
-0x254140,14,
-0x254180,61,
-0x254278,4,
-0x254290,2,
-0x2542a0,7,
-0x2542c0,11,
-0x254300,14,
-0x254340,14,
-0x254380,61,
-0x254478,4,
-0x254490,2,
-0x2544a0,7,
-0x2544c0,11,
-0x254500,14,
-0x254540,14,
-0x254580,61,
-0x254678,4,
-0x254690,2,
-0x2546a0,7,
-0x2546c0,11,
-0x254700,14,
-0x254740,14,
-0x254780,67,
-0x254890,1,
-0x254a00,8,
-0x254a24,15,
-0x254a64,30,
-0x254b00,4,
-0x254b20,2,
-0x254c00,6,
-0x254c40,14,
-0x254c80,9,
-0x254d00,9,
-0x254d2c,1,
-0x254d40,3,
-0x254d60,1,
-0x254d80,3,
-0x254e00,2,
-0x254e0c,1,
-0x254e14,5,
-0x254e2c,1,
-0x254e34,5,
-0x254e4c,1,
-0x254e54,5,
-0x254e6c,1,
-0x254e74,5,
-0x254e8c,1,
-0x254e94,5,
-0x254eac,1,
-0x254eb4,3,
-0x255000,29,
-0x255078,4,
-0x255090,2,
-0x2550a0,7,
-0x2550c0,11,
-0x255100,14,
-0x255140,14,
-0x255180,61,
-0x255278,4,
-0x255290,2,
-0x2552a0,7,
-0x2552c0,11,
-0x255300,14,
-0x255340,14,
-0x255380,61,
-0x255478,4,
-0x255490,2,
-0x2554a0,7,
-0x2554c0,11,
-0x255500,14,
-0x255540,14,
-0x255580,61,
-0x255678,4,
-0x255690,2,
-0x2556a0,7,
-0x2556c0,11,
-0x255700,14,
-0x255740,14,
-0x255780,67,
-0x255890,1,
-0x255a00,8,
-0x255a24,15,
-0x255a64,30,
-0x255b00,4,
-0x255b20,2,
-0x255c00,6,
-0x255c40,14,
-0x255c80,9,
-0x255d00,9,
-0x255d2c,1,
-0x255d40,3,
-0x255d60,1,
-0x255d80,3,
-0x255e00,2,
-0x255e0c,1,
-0x255e14,5,
-0x255e2c,1,
-0x255e34,5,
-0x255e4c,1,
-0x255e54,5,
-0x255e6c,1,
-0x255e74,5,
-0x255e8c,1,
-0x255e94,5,
-0x255eac,1,
-0x255eb4,3,
-0x256000,14,
-0x256070,3,
-0x256080,6,
-0x256100,9,
-0x256204,1,
-0x25620c,6,
-0x256240,13,
-0x256280,16,
-0x256800,19,
-0x256850,10,
-0x256880,19,
-0x2568d0,10,
-0x256900,19,
-0x256950,10,
-0x256980,19,
-0x2569d0,10,
-0x256a00,19,
-0x256a50,10,
-0x256a80,19,
-0x256ad0,10,
-0x256b00,19,
-0x256b50,10,
-0x256b80,19,
-0x256bd0,10,
-0x256c00,19,
-0x256c60,6,
-0x256c84,1,
-0x256c94,8,
-0x256cb8,9,
-0x256ce0,4,
-0x257000,6,
-0x257020,3,
-0x257040,7,
-0x257060,6,
-0x257100,5,
-0x257138,1,
-0x257144,1,
-0x257150,2,
-0x258000,6,
-0x258020,3,
-0x258030,9,
-0x258100,6,
-0x258120,10,
-0x258150,8,
-0x258400,1,
-0x258428,1,
-0x258450,1,
-0x258478,1,
-0x2584a0,8,
-0x2585ac,1,
-0x2585d8,4,
-0x258600,6,
-0x258620,6,
-0x258640,3,
-0x258800,6,
-0x258820,3,
-0x258830,4,
-0x258858,2,
-0x258864,1,
-0x258874,3,
-0x258898,2,
-0x2588a4,1,
-0x2588b4,3,
-0x259000,6,
-0x259020,6,
-0x259040,3,
-0x259080,14,
-0x2590bc,1,
-0x2590c4,13,
-0x2590fc,1,
-0x259200,20,
-0x25925c,30,
-0x259300,24,
-0x259380,2,
-0x2593a0,1,
-0x2593c0,11,
-0x259404,3,
-0x259420,11,
-0x259460,3,
-0x259480,6,
-0x259500,6,
-0x259520,6,
-0x259540,1,
-0x259558,2,
-0x259600,17,
-0x259800,410,
-0x25a000,6,
-0x25a020,6,
-0x25a040,3,
-0x25a080,14,
-0x25a0bc,1,
-0x25a0c4,13,
-0x25a0fc,1,
-0x25a200,20,
-0x25a25c,30,
-0x25a300,24,
-0x25a380,2,
-0x25a3a0,1,
-0x25a3c0,11,
-0x25a404,3,
-0x25a420,11,
-0x25a460,3,
-0x25a480,6,
-0x25a500,6,
-0x25a520,6,
-0x25a540,1,
-0x25a558,2,
-0x25a600,17,
-0x25a800,410,
-0x25b000,4,
-0x25b020,25,
-0x25b088,8,
-0x25b100,4,
-0x25b120,25,
-0x25b188,8,
-0x25b200,34,
-0x25b300,37,
-0x25b400,16,
-0x25b464,1,
-0x25b474,3,
-0x25b500,6,
-0x25b520,2,
-0x25b530,9,
-0x25b570,10,
-0x25b5a0,2,
-0x25b5b0,9,
-0x25b5f0,4,
-0x25b620,7,
-0x25b640,16,
-0x25b700,6,
-0x25b720,6,
-0x25b740,6,
-0x25b760,6,
-0x25b780,3,
-0x25b800,5,
-0x25b818,1,
-0x25b854,6,
-0x25b880,2,
-0x25b8a4,1,
-0x25b8ac,2,
-0x25ba00,28,
-0x25ba7c,13,
-0x25bab4,1,
-0x25babc,10,
-0x25bb04,1,
-0x25bb0c,5,
-0x25bb24,1,
-0x25bb34,9,
-0x25bb60,6,
-0x25bb80,22,
-0x25bbe0,3,
-0x25bbf0,2,
-0x25bc00,5,
-0x25bc18,1,
-0x25bc54,6,
-0x25bc80,2,
-0x25bca4,1,
-0x25bcac,2,
-0x25be00,28,
-0x25be7c,13,
-0x25beb4,1,
-0x25bebc,10,
-0x25bf04,1,
-0x25bf0c,5,
-0x25bf24,1,
-0x25bf34,9,
-0x25bf60,6,
-0x25bf80,22,
-0x25bfe0,3,
-0x25bff0,2,
-0x25c008,2,
-0x25c014,11,
-0x25c044,1,
-0x25c04c,3,
-0x25c05c,1,
-0x25c064,1,
-0x25c07c,1,
-0x25c500,2,
-0x25c518,1,
-0x25c520,3,
-0x25c540,6,
-0x25c580,10,
-0x25c808,2,
-0x25c814,11,
-0x25c844,1,
-0x25c84c,3,
-0x25c85c,1,
-0x25c864,1,
-0x25c87c,1,
-0x25cd00,2,
-0x25cd18,1,
-0x25cd20,3,
-0x25cd40,6,
-0x25cd80,10,
-0x25d800,2,
-0x25d828,2,
-0x25d850,2,
-0x25d878,2,
-0x25d8a0,6,
-0x25d9ac,1,
-0x25d9d8,4,
-0x25da00,6,
-0x25da20,6,
-0x25da40,6,
-0x25da60,6,
-0x25da80,3,
-0x25dc00,6,
-0x25dc20,3,
-0x25dc40,2,
-0x25dc60,1,
-0x260000,5,
-0x260020,4,
-0x260034,17,
-0x260080,1,
-0x2600a0,6,
-0x260100,5,
-0x260120,4,
-0x260134,17,
-0x260180,1,
-0x2601a0,6,
-0x260200,5,
-0x260220,4,
-0x260234,17,
-0x260280,1,
-0x2602a0,6,
-0x260300,5,
-0x260320,4,
-0x260334,17,
-0x260380,1,
-0x2603a0,6,
-0x260500,6,
-0x26051c,7,
-0x260540,1,
-0x260c00,13,
-0x260c40,12,
-0x260c80,13,
-0x260cc0,12,
-0x260d00,6,
-0x260d20,6,
-0x260d80,14,
-0x260dc0,2,
-0x260e40,11,
-0x260e80,6,
-0x260ea0,6,
-0x261000,2,
-0x261010,5,
-0x261060,32,
-0x261100,8,
-0x261180,3,
-0x261190,2,
-0x26119c,5,
-0x261218,9,
-0x261240,3,
-0x261250,6,
-0x261280,1,
-0x261288,6,
-0x2612a4,1,
-0x261400,8,
-0x261424,2,
-0x261500,5,
-0x261520,4,
-0x261540,5,
-0x261560,4,
-0x261800,24,
-0x261864,5,
-0x261880,8,
-0x261900,13,
-0x261980,4,
-0x2619a0,6,
-0x261a40,1,
-0x261a60,1,
-0x261a68,23,
-0x261ac8,6,
-0x261b00,17,
-0x261b48,6,
-0x261b80,12,
-0x261c00,6,
-0x261c20,6,
-0x261c40,6,
-0x261c60,3,
-0x261d00,6,
-0x261d20,6,
-0x261d40,3,
-0x262000,5,
-0x262020,4,
-0x262034,17,
-0x262080,1,
-0x2620a0,6,
-0x262100,5,
-0x262120,4,
-0x262134,17,
-0x262180,1,
-0x2621a0,6,
-0x262200,5,
-0x262220,4,
-0x262234,17,
-0x262280,1,
-0x2622a0,6,
-0x262300,5,
-0x262320,4,
-0x262334,17,
-0x262380,1,
-0x2623a0,6,
-0x262500,6,
-0x26251c,7,
-0x262540,1,
-0x262c00,13,
-0x262c40,12,
-0x262c80,13,
-0x262cc0,12,
-0x262d00,6,
-0x262d20,6,
-0x262d80,14,
-0x262dc0,2,
-0x262e40,11,
-0x262e80,6,
-0x262ea0,6,
-0x263000,2,
-0x263010,5,
-0x263060,32,
-0x263100,8,
-0x263180,3,
-0x263190,2,
-0x26319c,5,
-0x263218,9,
-0x263240,3,
-0x263250,6,
-0x263280,1,
-0x263288,6,
-0x2632a4,1,
-0x263400,8,
-0x263424,2,
-0x263500,5,
-0x263520,4,
-0x263540,5,
-0x263560,4,
-0x263800,24,
-0x263864,5,
-0x263880,8,
-0x263900,13,
-0x263980,4,
-0x2639a0,6,
-0x263a40,1,
-0x263a60,1,
-0x263a68,23,
-0x263ac8,6,
-0x263b00,17,
-0x263b48,6,
-0x263b80,12,
-0x263c00,6,
-0x263c20,6,
-0x263c40,6,
-0x263c60,3,
-0x263d00,6,
-0x263d20,6,
-0x263d40,3,
-0x264000,29,
-0x264078,4,
-0x264090,2,
-0x2640a0,7,
-0x2640c0,11,
-0x264100,14,
-0x264140,14,
-0x264180,61,
-0x264278,4,
-0x264290,2,
-0x2642a0,7,
-0x2642c0,11,
-0x264300,14,
-0x264340,14,
-0x264380,61,
-0x264478,4,
-0x264490,2,
-0x2644a0,7,
-0x2644c0,11,
-0x264500,14,
-0x264540,14,
-0x264580,61,
-0x264678,4,
-0x264690,2,
-0x2646a0,7,
-0x2646c0,11,
-0x264700,14,
-0x264740,14,
-0x264780,67,
-0x264890,1,
-0x264a00,8,
-0x264a24,15,
-0x264a64,30,
-0x264b00,4,
-0x264b20,2,
-0x264c00,6,
-0x264c40,14,
-0x264c80,9,
-0x264d00,9,
-0x264d2c,1,
-0x264d40,3,
-0x264d60,1,
-0x264d80,3,
-0x264e00,2,
-0x264e0c,1,
-0x264e14,5,
-0x264e2c,1,
-0x264e34,5,
-0x264e4c,1,
-0x264e54,5,
-0x264e6c,1,
-0x264e74,5,
-0x264e8c,1,
-0x264e94,5,
-0x264eac,1,
-0x264eb4,3,
-0x265000,29,
-0x265078,4,
-0x265090,2,
-0x2650a0,7,
-0x2650c0,11,
-0x265100,14,
-0x265140,14,
-0x265180,61,
-0x265278,4,
-0x265290,2,
-0x2652a0,7,
-0x2652c0,11,
-0x265300,14,
-0x265340,14,
-0x265380,61,
-0x265478,4,
-0x265490,2,
-0x2654a0,7,
-0x2654c0,11,
-0x265500,14,
-0x265540,14,
-0x265580,61,
-0x265678,4,
-0x265690,2,
-0x2656a0,7,
-0x2656c0,11,
-0x265700,14,
-0x265740,14,
-0x265780,67,
-0x265890,1,
-0x265a00,8,
-0x265a24,15,
-0x265a64,30,
-0x265b00,4,
-0x265b20,2,
-0x265c00,6,
-0x265c40,14,
-0x265c80,9,
-0x265d00,9,
-0x265d2c,1,
-0x265d40,3,
-0x265d60,1,
-0x265d80,3,
-0x265e00,2,
-0x265e0c,1,
-0x265e14,5,
-0x265e2c,1,
-0x265e34,5,
-0x265e4c,1,
-0x265e54,5,
-0x265e6c,1,
-0x265e74,5,
-0x265e8c,1,
-0x265e94,5,
-0x265eac,1,
-0x265eb4,3,
-0x266000,14,
-0x266070,3,
-0x266080,6,
-0x266100,9,
-0x266204,1,
-0x26620c,6,
-0x266240,13,
-0x266280,16,
-0x266800,19,
-0x266850,10,
-0x266880,19,
-0x2668d0,10,
-0x266900,19,
-0x266950,10,
-0x266980,19,
-0x2669d0,10,
-0x266a00,19,
-0x266a50,10,
-0x266a80,19,
-0x266ad0,10,
-0x266b00,19,
-0x266b50,10,
-0x266b80,19,
-0x266bd0,10,
-0x266c00,19,
-0x266c60,6,
-0x266c84,1,
-0x266c94,8,
-0x266cb8,9,
-0x266ce0,4,
-0x267000,6,
-0x267020,3,
-0x267040,7,
-0x267060,6,
-0x267100,5,
-0x267138,1,
-0x267144,1,
-0x267150,2,
-0x268000,6,
-0x268020,3,
-0x268030,9,
-0x268100,6,
-0x268120,10,
-0x268150,8,
-0x268400,1,
-0x268428,1,
-0x268450,1,
-0x268478,1,
-0x2684a0,8,
-0x2685ac,1,
-0x2685d8,4,
-0x268600,6,
-0x268620,6,
-0x268640,3,
-0x268800,6,
-0x268820,3,
-0x268830,4,
-0x268858,2,
-0x268864,1,
-0x268874,3,
-0x268898,2,
-0x2688a4,1,
-0x2688b4,3,
-0x269000,6,
-0x269020,6,
-0x269040,3,
-0x269080,14,
-0x2690bc,1,
-0x2690c4,13,
-0x2690fc,1,
-0x269200,20,
-0x26925c,30,
-0x269300,24,
-0x269380,2,
-0x2693a0,1,
-0x2693c0,11,
-0x269404,3,
-0x269420,11,
-0x269460,3,
-0x269480,6,
-0x269500,6,
-0x269520,6,
-0x269540,1,
-0x269558,2,
-0x269600,17,
-0x269800,410,
-0x26a000,6,
-0x26a020,6,
-0x26a040,3,
-0x26a080,14,
-0x26a0bc,1,
-0x26a0c4,13,
-0x26a0fc,1,
-0x26a200,20,
-0x26a25c,30,
-0x26a300,24,
-0x26a380,2,
-0x26a3a0,1,
-0x26a3c0,11,
-0x26a404,3,
-0x26a420,11,
-0x26a460,3,
-0x26a480,6,
-0x26a500,6,
-0x26a520,6,
-0x26a540,1,
-0x26a558,2,
-0x26a600,17,
-0x26a800,410,
-0x26b000,4,
-0x26b020,25,
-0x26b088,8,
-0x26b100,4,
-0x26b120,25,
-0x26b188,8,
-0x26b200,34,
-0x26b300,37,
-0x26b400,16,
-0x26b464,1,
-0x26b474,3,
-0x26b500,6,
-0x26b520,2,
-0x26b530,9,
-0x26b570,10,
-0x26b5a0,2,
-0x26b5b0,9,
-0x26b5f0,4,
-0x26b620,7,
-0x26b640,16,
-0x26b700,6,
-0x26b720,6,
-0x26b740,6,
-0x26b760,6,
-0x26b780,3,
-0x26b800,5,
-0x26b818,1,
-0x26b854,6,
-0x26b880,2,
-0x26b8a4,1,
-0x26b8ac,2,
-0x26ba00,28,
-0x26ba7c,13,
-0x26bab4,1,
-0x26babc,10,
-0x26bb04,1,
-0x26bb0c,5,
-0x26bb24,1,
-0x26bb34,9,
-0x26bb60,6,
-0x26bb80,22,
-0x26bbe0,3,
-0x26bbf0,2,
-0x26bc00,5,
-0x26bc18,1,
-0x26bc54,6,
-0x26bc80,2,
-0x26bca4,1,
-0x26bcac,2,
-0x26be00,28,
-0x26be7c,13,
-0x26beb4,1,
-0x26bebc,10,
-0x26bf04,1,
-0x26bf0c,5,
-0x26bf24,1,
-0x26bf34,9,
-0x26bf60,6,
-0x26bf80,22,
-0x26bfe0,3,
-0x26bff0,2,
-0x26c008,2,
-0x26c014,11,
-0x26c044,1,
-0x26c04c,3,
-0x26c05c,1,
-0x26c064,1,
-0x26c07c,1,
-0x26c500,2,
-0x26c518,1,
-0x26c520,3,
-0x26c540,6,
-0x26c580,10,
-0x26c808,2,
-0x26c814,11,
-0x26c844,1,
-0x26c84c,3,
-0x26c85c,1,
-0x26c864,1,
-0x26c87c,1,
-0x26cd00,2,
-0x26cd18,1,
-0x26cd20,3,
-0x26cd40,6,
-0x26cd80,10,
-0x26d800,2,
-0x26d828,2,
-0x26d850,2,
-0x26d878,2,
-0x26d8a0,6,
-0x26d9ac,1,
-0x26d9d8,4,
-0x26da00,6,
-0x26da20,6,
-0x26da40,6,
-0x26da60,6,
-0x26da80,3,
-0x26dc00,6,
-0x26dc20,3,
-0x26dc40,2,
-0x26dc60,1,
-0x270000,5,
-0x270020,4,
-0x270034,17,
-0x270080,1,
-0x2700a0,6,
-0x270100,5,
-0x270120,4,
-0x270134,17,
-0x270180,1,
-0x2701a0,6,
-0x270200,5,
-0x270220,4,
-0x270234,17,
-0x270280,1,
-0x2702a0,6,
-0x270300,5,
-0x270320,4,
-0x270334,17,
-0x270380,1,
-0x2703a0,6,
-0x270500,6,
-0x27051c,7,
-0x270540,1,
-0x270c00,13,
-0x270c40,12,
-0x270c80,13,
-0x270cc0,12,
-0x270d00,6,
-0x270d20,6,
-0x270d80,14,
-0x270dc0,2,
-0x270e40,11,
-0x270e80,6,
-0x270ea0,6,
-0x271000,2,
-0x271010,5,
-0x271060,32,
-0x271100,8,
-0x271180,3,
-0x271190,2,
-0x27119c,5,
-0x271218,9,
-0x271240,3,
-0x271250,6,
-0x271280,1,
-0x271288,6,
-0x2712a4,1,
-0x271400,8,
-0x271424,2,
-0x271500,5,
-0x271520,4,
-0x271540,5,
-0x271560,4,
-0x271800,24,
-0x271864,5,
-0x271880,8,
-0x271900,13,
-0x271980,4,
-0x2719a0,6,
-0x271a40,1,
-0x271a60,1,
-0x271a68,23,
-0x271ac8,6,
-0x271b00,17,
-0x271b48,6,
-0x271b80,12,
-0x271c00,6,
-0x271c20,6,
-0x271c40,6,
-0x271c60,3,
-0x271d00,6,
-0x271d20,6,
-0x271d40,3,
-0x272000,5,
-0x272020,4,
-0x272034,17,
-0x272080,1,
-0x2720a0,6,
-0x272100,5,
-0x272120,4,
-0x272134,17,
-0x272180,1,
-0x2721a0,6,
-0x272200,5,
-0x272220,4,
-0x272234,17,
-0x272280,1,
-0x2722a0,6,
-0x272300,5,
-0x272320,4,
-0x272334,17,
-0x272380,1,
-0x2723a0,6,
-0x272500,6,
-0x27251c,7,
-0x272540,1,
-0x272c00,13,
-0x272c40,12,
-0x272c80,13,
-0x272cc0,12,
-0x272d00,6,
-0x272d20,6,
-0x272d80,14,
-0x272dc0,2,
-0x272e40,11,
-0x272e80,6,
-0x272ea0,6,
-0x273000,2,
-0x273010,5,
-0x273060,32,
-0x273100,8,
-0x273180,3,
-0x273190,2,
-0x27319c,5,
-0x273218,9,
-0x273240,3,
-0x273250,6,
-0x273280,1,
-0x273288,6,
-0x2732a4,1,
-0x273400,8,
-0x273424,2,
-0x273500,5,
-0x273520,4,
-0x273540,5,
-0x273560,4,
-0x273800,24,
-0x273864,5,
-0x273880,8,
-0x273900,13,
-0x273980,4,
-0x2739a0,6,
-0x273a40,1,
-0x273a60,1,
-0x273a68,23,
-0x273ac8,6,
-0x273b00,17,
-0x273b48,6,
-0x273b80,12,
-0x273c00,6,
-0x273c20,6,
-0x273c40,6,
-0x273c60,3,
-0x273d00,6,
-0x273d20,6,
-0x273d40,3,
-0x274000,29,
-0x274078,4,
-0x274090,2,
-0x2740a0,7,
-0x2740c0,11,
-0x274100,14,
-0x274140,14,
-0x274180,61,
-0x274278,4,
-0x274290,2,
-0x2742a0,7,
-0x2742c0,11,
-0x274300,14,
-0x274340,14,
-0x274380,61,
-0x274478,4,
-0x274490,2,
-0x2744a0,7,
-0x2744c0,11,
-0x274500,14,
-0x274540,14,
-0x274580,61,
-0x274678,4,
-0x274690,2,
-0x2746a0,7,
-0x2746c0,11,
-0x274700,14,
-0x274740,14,
-0x274780,67,
-0x274890,1,
-0x274a00,8,
-0x274a24,15,
-0x274a64,30,
-0x274b00,4,
-0x274b20,2,
-0x274c00,6,
-0x274c40,14,
-0x274c80,9,
-0x274d00,9,
-0x274d2c,1,
-0x274d40,3,
-0x274d60,1,
-0x274d80,3,
-0x274e00,2,
-0x274e0c,1,
-0x274e14,5,
-0x274e2c,1,
-0x274e34,5,
-0x274e4c,1,
-0x274e54,5,
-0x274e6c,1,
-0x274e74,5,
-0x274e8c,1,
-0x274e94,5,
-0x274eac,1,
-0x274eb4,3,
-0x275000,29,
-0x275078,4,
-0x275090,2,
-0x2750a0,7,
-0x2750c0,11,
-0x275100,14,
-0x275140,14,
-0x275180,61,
-0x275278,4,
-0x275290,2,
-0x2752a0,7,
-0x2752c0,11,
-0x275300,14,
-0x275340,14,
-0x275380,61,
-0x275478,4,
-0x275490,2,
-0x2754a0,7,
-0x2754c0,11,
-0x275500,14,
-0x275540,14,
-0x275580,61,
-0x275678,4,
-0x275690,2,
-0x2756a0,7,
-0x2756c0,11,
-0x275700,14,
-0x275740,14,
-0x275780,67,
-0x275890,1,
-0x275a00,8,
-0x275a24,15,
-0x275a64,30,
-0x275b00,4,
-0x275b20,2,
-0x275c00,6,
-0x275c40,14,
-0x275c80,9,
-0x275d00,9,
-0x275d2c,1,
-0x275d40,3,
-0x275d60,1,
-0x275d80,3,
-0x275e00,2,
-0x275e0c,1,
-0x275e14,5,
-0x275e2c,1,
-0x275e34,5,
-0x275e4c,1,
-0x275e54,5,
-0x275e6c,1,
-0x275e74,5,
-0x275e8c,1,
-0x275e94,5,
-0x275eac,1,
-0x275eb4,3,
-0x276000,14,
-0x276070,3,
-0x276080,6,
-0x276100,9,
-0x276204,1,
-0x27620c,6,
-0x276240,13,
-0x276280,16,
-0x276800,19,
-0x276850,10,
-0x276880,19,
-0x2768d0,10,
-0x276900,19,
-0x276950,10,
-0x276980,19,
-0x2769d0,10,
-0x276a00,19,
-0x276a50,10,
-0x276a80,19,
-0x276ad0,10,
-0x276b00,19,
-0x276b50,10,
-0x276b80,19,
-0x276bd0,10,
-0x276c00,19,
-0x276c60,6,
-0x276c84,1,
-0x276c94,8,
-0x276cb8,9,
-0x276ce0,4,
-0x277000,6,
-0x277020,3,
-0x277040,7,
-0x277060,6,
-0x277100,5,
-0x277138,1,
-0x277144,1,
-0x277150,2,
-0x278000,6,
-0x278020,3,
-0x278030,9,
-0x278100,6,
-0x278120,10,
-0x278150,8,
-0x278400,1,
-0x278428,1,
-0x278450,1,
-0x278478,1,
-0x2784a0,8,
-0x2785ac,1,
-0x2785d8,4,
-0x278600,6,
-0x278620,6,
-0x278640,3,
-0x278800,6,
-0x278820,3,
-0x278830,4,
-0x278858,2,
-0x278864,1,
-0x278874,3,
-0x278898,2,
-0x2788a4,1,
-0x2788b4,3,
-0x279000,6,
-0x279020,6,
-0x279040,3,
-0x279080,14,
-0x2790bc,1,
-0x2790c4,13,
-0x2790fc,1,
-0x279200,20,
-0x27925c,30,
-0x279300,24,
-0x279380,2,
-0x2793a0,1,
-0x2793c0,11,
-0x279404,3,
-0x279420,11,
-0x279460,3,
-0x279480,6,
-0x279500,6,
-0x279520,6,
-0x279540,1,
-0x279558,2,
-0x279600,17,
-0x279800,410,
-0x27a000,6,
-0x27a020,6,
-0x27a040,3,
-0x27a080,14,
-0x27a0bc,1,
-0x27a0c4,13,
-0x27a0fc,1,
-0x27a200,20,
-0x27a25c,30,
-0x27a300,24,
-0x27a380,2,
-0x27a3a0,1,
-0x27a3c0,11,
-0x27a404,3,
-0x27a420,11,
-0x27a460,3,
-0x27a480,6,
-0x27a500,6,
-0x27a520,6,
-0x27a540,1,
-0x27a558,2,
-0x27a600,17,
-0x27a800,410,
-0x27b000,4,
-0x27b020,25,
-0x27b088,8,
-0x27b100,4,
-0x27b120,25,
-0x27b188,8,
-0x27b200,34,
-0x27b300,37,
-0x27b400,16,
-0x27b464,1,
-0x27b474,3,
-0x27b500,6,
-0x27b520,2,
-0x27b530,9,
-0x27b570,10,
-0x27b5a0,2,
-0x27b5b0,9,
-0x27b5f0,4,
-0x27b620,7,
-0x27b640,16,
-0x27b700,6,
-0x27b720,6,
-0x27b740,6,
-0x27b760,6,
-0x27b780,3,
-0x27b800,5,
-0x27b818,1,
-0x27b854,6,
-0x27b880,2,
-0x27b8a4,1,
-0x27b8ac,2,
-0x27ba00,28,
-0x27ba7c,13,
-0x27bab4,1,
-0x27babc,10,
-0x27bb04,1,
-0x27bb0c,5,
-0x27bb24,1,
-0x27bb34,9,
-0x27bb60,6,
-0x27bb80,22,
-0x27bbe0,3,
-0x27bbf0,2,
-0x27bc00,5,
-0x27bc18,1,
-0x27bc54,6,
-0x27bc80,2,
-0x27bca4,1,
-0x27bcac,2,
-0x27be00,28,
-0x27be7c,13,
-0x27beb4,1,
-0x27bebc,10,
-0x27bf04,1,
-0x27bf0c,5,
-0x27bf24,1,
-0x27bf34,9,
-0x27bf60,6,
-0x27bf80,22,
-0x27bfe0,3,
-0x27bff0,2,
-0x27c008,2,
-0x27c014,11,
-0x27c044,1,
-0x27c04c,3,
-0x27c05c,1,
-0x27c064,1,
-0x27c07c,1,
-0x27c500,2,
-0x27c518,1,
-0x27c520,3,
-0x27c540,6,
-0x27c580,10,
-0x27c808,2,
-0x27c814,11,
-0x27c844,1,
-0x27c84c,3,
-0x27c85c,1,
-0x27c864,1,
-0x27c87c,1,
-0x27cd00,2,
-0x27cd18,1,
-0x27cd20,3,
-0x27cd40,6,
-0x27cd80,10,
-0x27d800,2,
-0x27d828,2,
-0x27d850,2,
-0x27d878,2,
-0x27d8a0,6,
-0x27d9ac,1,
-0x27d9d8,4,
-0x27da00,6,
-0x27da20,6,
-0x27da40,6,
-0x27da60,6,
-0x27da80,3,
-0x27dc00,6,
-0x27dc20,3,
-0x27dc40,2,
-0x27dc60,1,
-0x280000,5,
-0x280020,4,
-0x280034,17,
-0x280080,1,
-0x2800a0,6,
-0x280100,5,
-0x280120,4,
-0x280134,17,
-0x280180,1,
-0x2801a0,6,
-0x280200,5,
-0x280220,4,
-0x280234,17,
-0x280280,1,
-0x2802a0,6,
-0x280300,5,
-0x280320,4,
-0x280334,17,
-0x280380,1,
-0x2803a0,6,
-0x280500,6,
-0x28051c,7,
-0x280540,1,
-0x280c00,13,
-0x280c40,12,
-0x280c80,13,
-0x280cc0,12,
-0x280d00,6,
-0x280d20,6,
-0x280d80,14,
-0x280dc0,2,
-0x280e40,11,
-0x280e80,6,
-0x280ea0,6,
-0x281000,2,
-0x281010,5,
-0x281060,32,
-0x281100,8,
-0x281180,3,
-0x281190,2,
-0x28119c,5,
-0x281218,9,
-0x281240,3,
-0x281250,6,
-0x281280,1,
-0x281288,6,
-0x2812a4,1,
-0x281400,8,
-0x281424,2,
-0x281500,5,
-0x281520,4,
-0x281540,5,
-0x281560,4,
-0x281800,24,
-0x281864,5,
-0x281880,8,
-0x281900,13,
-0x281980,4,
-0x2819a0,6,
-0x281a40,1,
-0x281a60,1,
-0x281a68,23,
-0x281ac8,6,
-0x281b00,17,
-0x281b48,6,
-0x281b80,12,
-0x281c00,6,
-0x281c20,6,
-0x281c40,6,
-0x281c60,3,
-0x281d00,6,
-0x281d20,6,
-0x281d40,3,
-0x282000,5,
-0x282020,4,
-0x282034,17,
-0x282080,1,
-0x2820a0,6,
-0x282100,5,
-0x282120,4,
-0x282134,17,
-0x282180,1,
-0x2821a0,6,
-0x282200,5,
-0x282220,4,
-0x282234,17,
-0x282280,1,
-0x2822a0,6,
-0x282300,5,
-0x282320,4,
-0x282334,17,
-0x282380,1,
-0x2823a0,6,
-0x282500,6,
-0x28251c,7,
-0x282540,1,
-0x282c00,13,
-0x282c40,12,
-0x282c80,13,
-0x282cc0,12,
-0x282d00,6,
-0x282d20,6,
-0x282d80,14,
-0x282dc0,2,
-0x282e40,11,
-0x282e80,6,
-0x282ea0,6,
-0x283000,2,
-0x283010,5,
-0x283060,32,
-0x283100,8,
-0x283180,3,
-0x283190,2,
-0x28319c,5,
-0x283218,9,
-0x283240,3,
-0x283250,6,
-0x283280,1,
-0x283288,6,
-0x2832a4,1,
-0x283400,8,
-0x283424,2,
-0x283500,5,
-0x283520,4,
-0x283540,5,
-0x283560,4,
-0x283800,24,
-0x283864,5,
-0x283880,8,
-0x283900,13,
-0x283980,4,
-0x2839a0,6,
-0x283a40,1,
-0x283a60,1,
-0x283a68,23,
-0x283ac8,6,
-0x283b00,17,
-0x283b48,6,
-0x283b80,12,
-0x283c00,6,
-0x283c20,6,
-0x283c40,6,
-0x283c60,3,
-0x283d00,6,
-0x283d20,6,
-0x283d40,3,
-0x284000,29,
-0x284078,4,
-0x284090,2,
-0x2840a0,7,
-0x2840c0,11,
-0x284100,14,
-0x284140,14,
-0x284180,61,
-0x284278,4,
-0x284290,2,
-0x2842a0,7,
-0x2842c0,11,
-0x284300,14,
-0x284340,14,
-0x284380,61,
-0x284478,4,
-0x284490,2,
-0x2844a0,7,
-0x2844c0,11,
-0x284500,14,
-0x284540,14,
-0x284580,61,
-0x284678,4,
-0x284690,2,
-0x2846a0,7,
-0x2846c0,11,
-0x284700,14,
-0x284740,14,
-0x284780,67,
-0x284890,1,
-0x284a00,8,
-0x284a24,15,
-0x284a64,30,
-0x284b00,4,
-0x284b20,2,
-0x284c00,6,
-0x284c40,14,
-0x284c80,9,
-0x284d00,9,
-0x284d2c,1,
-0x284d40,3,
-0x284d60,1,
-0x284d80,3,
-0x284e00,2,
-0x284e0c,1,
-0x284e14,5,
-0x284e2c,1,
-0x284e34,5,
-0x284e4c,1,
-0x284e54,5,
-0x284e6c,1,
-0x284e74,5,
-0x284e8c,1,
-0x284e94,5,
-0x284eac,1,
-0x284eb4,3,
-0x285000,29,
-0x285078,4,
-0x285090,2,
-0x2850a0,7,
-0x2850c0,11,
-0x285100,14,
-0x285140,14,
-0x285180,61,
-0x285278,4,
-0x285290,2,
-0x2852a0,7,
-0x2852c0,11,
-0x285300,14,
-0x285340,14,
-0x285380,61,
-0x285478,4,
-0x285490,2,
-0x2854a0,7,
-0x2854c0,11,
-0x285500,14,
-0x285540,14,
-0x285580,61,
-0x285678,4,
-0x285690,2,
-0x2856a0,7,
-0x2856c0,11,
-0x285700,14,
-0x285740,14,
-0x285780,67,
-0x285890,1,
-0x285a00,8,
-0x285a24,15,
-0x285a64,30,
-0x285b00,4,
-0x285b20,2,
-0x285c00,6,
-0x285c40,14,
-0x285c80,9,
-0x285d00,9,
-0x285d2c,1,
-0x285d40,3,
-0x285d60,1,
-0x285d80,3,
-0x285e00,2,
-0x285e0c,1,
-0x285e14,5,
-0x285e2c,1,
-0x285e34,5,
-0x285e4c,1,
-0x285e54,5,
-0x285e6c,1,
-0x285e74,5,
-0x285e8c,1,
-0x285e94,5,
-0x285eac,1,
-0x285eb4,3,
-0x286000,14,
-0x286070,3,
-0x286080,6,
-0x286100,9,
-0x286204,1,
-0x28620c,6,
-0x286240,13,
-0x286280,16,
-0x286800,19,
-0x286850,10,
-0x286880,19,
-0x2868d0,10,
-0x286900,19,
-0x286950,10,
-0x286980,19,
-0x2869d0,10,
-0x286a00,19,
-0x286a50,10,
-0x286a80,19,
-0x286ad0,10,
-0x286b00,19,
-0x286b50,10,
-0x286b80,19,
-0x286bd0,10,
-0x286c00,19,
-0x286c60,6,
-0x286c84,1,
-0x286c94,8,
-0x286cb8,9,
-0x286ce0,4,
-0x287000,6,
-0x287020,3,
-0x287040,7,
-0x287060,6,
-0x287100,5,
-0x287138,1,
-0x287144,1,
-0x287150,2,
-0x288000,6,
-0x288020,3,
-0x288030,9,
-0x288100,6,
-0x288120,10,
-0x288150,8,
-0x288400,1,
-0x288428,1,
-0x288450,1,
-0x288478,1,
-0x2884a0,8,
-0x2885ac,1,
-0x2885d8,4,
-0x288600,6,
-0x288620,6,
-0x288640,3,
-0x288800,6,
-0x288820,3,
-0x288830,4,
-0x288858,2,
-0x288864,1,
-0x288874,3,
-0x288898,2,
-0x2888a4,1,
-0x2888b4,3,
-0x289000,6,
-0x289020,6,
-0x289040,3,
-0x289080,14,
-0x2890bc,1,
-0x2890c4,13,
-0x2890fc,1,
-0x289200,20,
-0x28925c,30,
-0x289300,24,
-0x289380,2,
-0x2893a0,1,
-0x2893c0,11,
-0x289404,3,
-0x289420,11,
-0x289460,3,
-0x289480,6,
-0x289500,6,
-0x289520,6,
-0x289540,1,
-0x289558,2,
-0x289600,17,
-0x289800,410,
-0x28a000,6,
-0x28a020,6,
-0x28a040,3,
-0x28a080,14,
-0x28a0bc,1,
-0x28a0c4,13,
-0x28a0fc,1,
-0x28a200,20,
-0x28a25c,30,
-0x28a300,24,
-0x28a380,2,
-0x28a3a0,1,
-0x28a3c0,11,
-0x28a404,3,
-0x28a420,11,
-0x28a460,3,
-0x28a480,6,
-0x28a500,6,
-0x28a520,6,
-0x28a540,1,
-0x28a558,2,
-0x28a600,17,
-0x28a800,410,
-0x28b000,4,
-0x28b020,25,
-0x28b088,8,
-0x28b100,4,
-0x28b120,25,
-0x28b188,8,
-0x28b200,34,
-0x28b300,37,
-0x28b400,16,
-0x28b464,1,
-0x28b474,3,
-0x28b500,6,
-0x28b520,2,
-0x28b530,9,
-0x28b570,10,
-0x28b5a0,2,
-0x28b5b0,9,
-0x28b5f0,4,
-0x28b620,7,
-0x28b640,16,
-0x28b700,6,
-0x28b720,6,
-0x28b740,6,
-0x28b760,6,
-0x28b780,3,
-0x28b800,5,
-0x28b818,1,
-0x28b854,6,
-0x28b880,2,
-0x28b8a4,1,
-0x28b8ac,2,
-0x28ba00,28,
-0x28ba7c,13,
-0x28bab4,1,
-0x28babc,10,
-0x28bb04,1,
-0x28bb0c,5,
-0x28bb24,1,
-0x28bb34,9,
-0x28bb60,6,
-0x28bb80,22,
-0x28bbe0,3,
-0x28bbf0,2,
-0x28bc00,5,
-0x28bc18,1,
-0x28bc54,6,
-0x28bc80,2,
-0x28bca4,1,
-0x28bcac,2,
-0x28be00,28,
-0x28be7c,13,
-0x28beb4,1,
-0x28bebc,10,
-0x28bf04,1,
-0x28bf0c,5,
-0x28bf24,1,
-0x28bf34,9,
-0x28bf60,6,
-0x28bf80,22,
-0x28bfe0,3,
-0x28bff0,2,
-0x28c008,2,
-0x28c014,11,
-0x28c044,1,
-0x28c04c,3,
-0x28c05c,1,
-0x28c064,1,
-0x28c07c,1,
-0x28c500,2,
-0x28c518,1,
-0x28c520,3,
-0x28c540,6,
-0x28c580,10,
-0x28c808,2,
-0x28c814,11,
-0x28c844,1,
-0x28c84c,3,
-0x28c85c,1,
-0x28c864,1,
-0x28c87c,1,
-0x28cd00,2,
-0x28cd18,1,
-0x28cd20,3,
-0x28cd40,6,
-0x28cd80,10,
-0x28d800,2,
-0x28d828,2,
-0x28d850,2,
-0x28d878,2,
-0x28d8a0,6,
-0x28d9ac,1,
-0x28d9d8,4,
-0x28da00,6,
-0x28da20,6,
-0x28da40,6,
-0x28da60,6,
-0x28da80,3,
-0x28dc00,6,
-0x28dc20,3,
-0x28dc40,2,
-0x28dc60,1,
-0x290000,5,
-0x290020,4,
-0x290034,17,
-0x290080,1,
-0x2900a0,6,
-0x290100,5,
-0x290120,4,
-0x290134,17,
-0x290180,1,
-0x2901a0,6,
-0x290200,5,
-0x290220,4,
-0x290234,17,
-0x290280,1,
-0x2902a0,6,
-0x290300,5,
-0x290320,4,
-0x290334,17,
-0x290380,1,
-0x2903a0,6,
-0x290500,6,
-0x29051c,7,
-0x290540,1,
-0x290c00,13,
-0x290c40,12,
-0x290c80,13,
-0x290cc0,12,
-0x290d00,6,
-0x290d20,6,
-0x290d80,14,
-0x290dc0,2,
-0x290e40,11,
-0x290e80,6,
-0x290ea0,6,
-0x291000,2,
-0x291010,5,
-0x291060,32,
-0x291100,8,
-0x291180,3,
-0x291190,2,
-0x29119c,5,
-0x291218,9,
-0x291240,3,
-0x291250,6,
-0x291280,1,
-0x291288,6,
-0x2912a4,1,
-0x291400,8,
-0x291424,2,
-0x291500,5,
-0x291520,4,
-0x291540,5,
-0x291560,4,
-0x291800,24,
-0x291864,5,
-0x291880,8,
-0x291900,13,
-0x291980,4,
-0x2919a0,6,
-0x291a40,1,
-0x291a60,1,
-0x291a68,23,
-0x291ac8,6,
-0x291b00,17,
-0x291b48,6,
-0x291b80,12,
-0x291c00,6,
-0x291c20,6,
-0x291c40,6,
-0x291c60,3,
-0x291d00,6,
-0x291d20,6,
-0x291d40,3,
-0x292000,5,
-0x292020,4,
-0x292034,17,
-0x292080,1,
-0x2920a0,6,
-0x292100,5,
-0x292120,4,
-0x292134,17,
-0x292180,1,
-0x2921a0,6,
-0x292200,5,
-0x292220,4,
-0x292234,17,
-0x292280,1,
-0x2922a0,6,
-0x292300,5,
-0x292320,4,
-0x292334,17,
-0x292380,1,
-0x2923a0,6,
-0x292500,6,
-0x29251c,7,
-0x292540,1,
-0x292c00,13,
-0x292c40,12,
-0x292c80,13,
-0x292cc0,12,
-0x292d00,6,
-0x292d20,6,
-0x292d80,14,
-0x292dc0,2,
-0x292e40,11,
-0x292e80,6,
-0x292ea0,6,
-0x293000,2,
-0x293010,5,
-0x293060,32,
-0x293100,8,
-0x293180,3,
-0x293190,2,
-0x29319c,5,
-0x293218,9,
-0x293240,3,
-0x293250,6,
-0x293280,1,
-0x293288,6,
-0x2932a4,1,
-0x293400,8,
-0x293424,2,
-0x293500,5,
-0x293520,4,
-0x293540,5,
-0x293560,4,
-0x293800,24,
-0x293864,5,
-0x293880,8,
-0x293900,13,
-0x293980,4,
-0x2939a0,6,
-0x293a40,1,
-0x293a60,1,
-0x293a68,23,
-0x293ac8,6,
-0x293b00,17,
-0x293b48,6,
-0x293b80,12,
-0x293c00,6,
-0x293c20,6,
-0x293c40,6,
-0x293c60,3,
-0x293d00,6,
-0x293d20,6,
-0x293d40,3,
-0x294000,29,
-0x294078,4,
-0x294090,2,
-0x2940a0,7,
-0x2940c0,11,
-0x294100,14,
-0x294140,14,
-0x294180,61,
-0x294278,4,
-0x294290,2,
-0x2942a0,7,
-0x2942c0,11,
-0x294300,14,
-0x294340,14,
-0x294380,61,
-0x294478,4,
-0x294490,2,
-0x2944a0,7,
-0x2944c0,11,
-0x294500,14,
-0x294540,14,
-0x294580,61,
-0x294678,4,
-0x294690,2,
-0x2946a0,7,
-0x2946c0,11,
-0x294700,14,
-0x294740,14,
-0x294780,67,
-0x294890,1,
-0x294a00,8,
-0x294a24,15,
-0x294a64,30,
-0x294b00,4,
-0x294b20,2,
-0x294c00,6,
-0x294c40,14,
-0x294c80,9,
-0x294d00,9,
-0x294d2c,1,
-0x294d40,3,
-0x294d60,1,
-0x294d80,3,
-0x294e00,2,
-0x294e0c,1,
-0x294e14,5,
-0x294e2c,1,
-0x294e34,5,
-0x294e4c,1,
-0x294e54,5,
-0x294e6c,1,
-0x294e74,5,
-0x294e8c,1,
-0x294e94,5,
-0x294eac,1,
-0x294eb4,3,
-0x295000,29,
-0x295078,4,
-0x295090,2,
-0x2950a0,7,
-0x2950c0,11,
-0x295100,14,
-0x295140,14,
-0x295180,61,
-0x295278,4,
-0x295290,2,
-0x2952a0,7,
-0x2952c0,11,
-0x295300,14,
-0x295340,14,
-0x295380,61,
-0x295478,4,
-0x295490,2,
-0x2954a0,7,
-0x2954c0,11,
-0x295500,14,
-0x295540,14,
-0x295580,61,
-0x295678,4,
-0x295690,2,
-0x2956a0,7,
-0x2956c0,11,
-0x295700,14,
-0x295740,14,
-0x295780,67,
-0x295890,1,
-0x295a00,8,
-0x295a24,15,
-0x295a64,30,
-0x295b00,4,
-0x295b20,2,
-0x295c00,6,
-0x295c40,14,
-0x295c80,9,
-0x295d00,9,
-0x295d2c,1,
-0x295d40,3,
-0x295d60,1,
-0x295d80,3,
-0x295e00,2,
-0x295e0c,1,
-0x295e14,5,
-0x295e2c,1,
-0x295e34,5,
-0x295e4c,1,
-0x295e54,5,
-0x295e6c,1,
-0x295e74,5,
-0x295e8c,1,
-0x295e94,5,
-0x295eac,1,
-0x295eb4,3,
-0x296000,14,
-0x296070,3,
-0x296080,6,
-0x296100,9,
-0x296204,1,
-0x29620c,6,
-0x296240,13,
-0x296280,16,
-0x296800,19,
-0x296850,10,
-0x296880,19,
-0x2968d0,10,
-0x296900,19,
-0x296950,10,
-0x296980,19,
-0x2969d0,10,
-0x296a00,19,
-0x296a50,10,
-0x296a80,19,
-0x296ad0,10,
-0x296b00,19,
-0x296b50,10,
-0x296b80,19,
-0x296bd0,10,
-0x296c00,19,
-0x296c60,6,
-0x296c84,1,
-0x296c94,8,
-0x296cb8,9,
-0x296ce0,4,
-0x297000,6,
-0x297020,3,
-0x297040,7,
-0x297060,6,
-0x297100,5,
-0x297138,1,
-0x297144,1,
-0x297150,2,
-0x298000,6,
-0x298020,3,
-0x298030,9,
-0x298100,6,
-0x298120,10,
-0x298150,8,
-0x298400,1,
-0x298428,1,
-0x298450,1,
-0x298478,1,
-0x2984a0,8,
-0x2985ac,1,
-0x2985d8,4,
-0x298600,6,
-0x298620,6,
-0x298640,3,
-0x298800,6,
-0x298820,3,
-0x298830,4,
-0x298858,2,
-0x298864,1,
-0x298874,3,
-0x298898,2,
-0x2988a4,1,
-0x2988b4,3,
-0x299000,6,
-0x299020,6,
-0x299040,3,
-0x299080,14,
-0x2990bc,1,
-0x2990c4,13,
-0x2990fc,1,
-0x299200,20,
-0x29925c,30,
-0x299300,24,
-0x299380,2,
-0x2993a0,1,
-0x2993c0,11,
-0x299404,3,
-0x299420,11,
-0x299460,3,
-0x299480,6,
-0x299500,6,
-0x299520,6,
-0x299540,1,
-0x299558,2,
-0x299600,17,
-0x299800,410,
-0x29a000,6,
-0x29a020,6,
-0x29a040,3,
-0x29a080,14,
-0x29a0bc,1,
-0x29a0c4,13,
-0x29a0fc,1,
-0x29a200,20,
-0x29a25c,30,
-0x29a300,24,
-0x29a380,2,
-0x29a3a0,1,
-0x29a3c0,11,
-0x29a404,3,
-0x29a420,11,
-0x29a460,3,
-0x29a480,6,
-0x29a500,6,
-0x29a520,6,
-0x29a540,1,
-0x29a558,2,
-0x29a600,17,
-0x29a800,410,
-0x29b000,4,
-0x29b020,25,
-0x29b088,8,
-0x29b100,4,
-0x29b120,25,
-0x29b188,8,
-0x29b200,34,
-0x29b300,37,
-0x29b400,16,
-0x29b464,1,
-0x29b474,3,
-0x29b500,6,
-0x29b520,2,
-0x29b530,9,
-0x29b570,10,
-0x29b5a0,2,
-0x29b5b0,9,
-0x29b5f0,4,
-0x29b620,7,
-0x29b640,16,
-0x29b700,6,
-0x29b720,6,
-0x29b740,6,
-0x29b760,6,
-0x29b780,3,
-0x29b800,5,
-0x29b818,1,
-0x29b854,6,
-0x29b880,2,
-0x29b8a4,1,
-0x29b8ac,2,
-0x29ba00,28,
-0x29ba7c,13,
-0x29bab4,1,
-0x29babc,10,
-0x29bb04,1,
-0x29bb0c,5,
-0x29bb24,1,
-0x29bb34,9,
-0x29bb60,6,
-0x29bb80,22,
-0x29bbe0,3,
-0x29bbf0,2,
-0x29bc00,5,
-0x29bc18,1,
-0x29bc54,6,
-0x29bc80,2,
-0x29bca4,1,
-0x29bcac,2,
-0x29be00,28,
-0x29be7c,13,
-0x29beb4,1,
-0x29bebc,10,
-0x29bf04,1,
-0x29bf0c,5,
-0x29bf24,1,
-0x29bf34,9,
-0x29bf60,6,
-0x29bf80,22,
-0x29bfe0,3,
-0x29bff0,2,
-0x29c008,2,
-0x29c014,11,
-0x29c044,1,
-0x29c04c,3,
-0x29c05c,1,
-0x29c064,1,
-0x29c07c,1,
-0x29c500,2,
-0x29c518,1,
-0x29c520,3,
-0x29c540,6,
-0x29c580,10,
-0x29c808,2,
-0x29c814,11,
-0x29c844,1,
-0x29c84c,3,
-0x29c85c,1,
-0x29c864,1,
-0x29c87c,1,
-0x29cd00,2,
-0x29cd18,1,
-0x29cd20,3,
-0x29cd40,6,
-0x29cd80,10,
-0x29d800,2,
-0x29d828,2,
-0x29d850,2,
-0x29d878,2,
-0x29d8a0,6,
-0x29d9ac,1,
-0x29d9d8,4,
-0x29da00,6,
-0x29da20,6,
-0x29da40,6,
-0x29da60,6,
-0x29da80,3,
-0x29dc00,6,
-0x29dc20,3,
-0x29dc40,2,
-0x29dc60,1,
-0x2a0000,5,
-0x2a0020,4,
-0x2a0034,17,
-0x2a0080,1,
-0x2a00a0,6,
-0x2a0100,5,
-0x2a0120,4,
-0x2a0134,17,
-0x2a0180,1,
-0x2a01a0,6,
-0x2a0200,5,
-0x2a0220,4,
-0x2a0234,17,
-0x2a0280,1,
-0x2a02a0,6,
-0x2a0300,5,
-0x2a0320,4,
-0x2a0334,17,
-0x2a0380,1,
-0x2a03a0,6,
-0x2a0500,6,
-0x2a051c,7,
-0x2a0540,1,
-0x2a0c00,13,
-0x2a0c40,12,
-0x2a0c80,13,
-0x2a0cc0,12,
-0x2a0d00,6,
-0x2a0d20,6,
-0x2a0d80,14,
-0x2a0dc0,2,
-0x2a0e40,11,
-0x2a0e80,6,
-0x2a0ea0,6,
-0x2a1000,2,
-0x2a1010,5,
-0x2a1060,32,
-0x2a1100,8,
-0x2a1180,3,
-0x2a1190,2,
-0x2a119c,5,
-0x2a1218,9,
-0x2a1240,3,
-0x2a1250,6,
-0x2a1280,1,
-0x2a1288,6,
-0x2a12a4,1,
-0x2a1400,8,
-0x2a1424,2,
-0x2a1500,5,
-0x2a1520,4,
-0x2a1540,5,
-0x2a1560,4,
-0x2a1800,24,
-0x2a1864,5,
-0x2a1880,8,
-0x2a1900,13,
-0x2a1980,4,
-0x2a19a0,6,
-0x2a1a40,1,
-0x2a1a60,1,
-0x2a1a68,23,
-0x2a1ac8,6,
-0x2a1b00,17,
-0x2a1b48,6,
-0x2a1b80,12,
-0x2a1c00,6,
-0x2a1c20,6,
-0x2a1c40,6,
-0x2a1c60,3,
-0x2a1d00,6,
-0x2a1d20,6,
-0x2a1d40,3,
-0x2a2000,5,
-0x2a2020,4,
-0x2a2034,17,
-0x2a2080,1,
-0x2a20a0,6,
-0x2a2100,5,
-0x2a2120,4,
-0x2a2134,17,
-0x2a2180,1,
-0x2a21a0,6,
-0x2a2200,5,
-0x2a2220,4,
-0x2a2234,17,
-0x2a2280,1,
-0x2a22a0,6,
-0x2a2300,5,
-0x2a2320,4,
-0x2a2334,17,
-0x2a2380,1,
-0x2a23a0,6,
-0x2a2500,6,
-0x2a251c,7,
-0x2a2540,1,
-0x2a2c00,13,
-0x2a2c40,12,
-0x2a2c80,13,
-0x2a2cc0,12,
-0x2a2d00,6,
-0x2a2d20,6,
-0x2a2d80,14,
-0x2a2dc0,2,
-0x2a2e40,11,
-0x2a2e80,6,
-0x2a2ea0,6,
-0x2a3000,2,
-0x2a3010,5,
-0x2a3060,32,
-0x2a3100,8,
-0x2a3180,3,
-0x2a3190,2,
-0x2a319c,5,
-0x2a3218,9,
-0x2a3240,3,
-0x2a3250,6,
-0x2a3280,1,
-0x2a3288,6,
-0x2a32a4,1,
-0x2a3400,8,
-0x2a3424,2,
-0x2a3500,5,
-0x2a3520,4,
-0x2a3540,5,
-0x2a3560,4,
-0x2a3800,24,
-0x2a3864,5,
-0x2a3880,8,
-0x2a3900,13,
-0x2a3980,4,
-0x2a39a0,6,
-0x2a3a40,1,
-0x2a3a60,1,
-0x2a3a68,23,
-0x2a3ac8,6,
-0x2a3b00,17,
-0x2a3b48,6,
-0x2a3b80,12,
-0x2a3c00,6,
-0x2a3c20,6,
-0x2a3c40,6,
-0x2a3c60,3,
-0x2a3d00,6,
-0x2a3d20,6,
-0x2a3d40,3,
-0x2a4000,29,
-0x2a4078,4,
-0x2a4090,2,
-0x2a40a0,7,
-0x2a40c0,11,
-0x2a4100,14,
-0x2a4140,14,
-0x2a4180,61,
-0x2a4278,4,
-0x2a4290,2,
-0x2a42a0,7,
-0x2a42c0,11,
-0x2a4300,14,
-0x2a4340,14,
-0x2a4380,61,
-0x2a4478,4,
-0x2a4490,2,
-0x2a44a0,7,
-0x2a44c0,11,
-0x2a4500,14,
-0x2a4540,14,
-0x2a4580,61,
-0x2a4678,4,
-0x2a4690,2,
-0x2a46a0,7,
-0x2a46c0,11,
-0x2a4700,14,
-0x2a4740,14,
-0x2a4780,67,
-0x2a4890,1,
-0x2a4a00,8,
-0x2a4a24,15,
-0x2a4a64,30,
-0x2a4b00,4,
-0x2a4b20,2,
-0x2a4c00,6,
-0x2a4c40,14,
-0x2a4c80,9,
-0x2a4d00,9,
-0x2a4d2c,1,
-0x2a4d40,3,
-0x2a4d60,1,
-0x2a4d80,3,
-0x2a4e00,2,
-0x2a4e0c,1,
-0x2a4e14,5,
-0x2a4e2c,1,
-0x2a4e34,5,
-0x2a4e4c,1,
-0x2a4e54,5,
-0x2a4e6c,1,
-0x2a4e74,5,
-0x2a4e8c,1,
-0x2a4e94,5,
-0x2a4eac,1,
-0x2a4eb4,3,
-0x2a5000,29,
-0x2a5078,4,
-0x2a5090,2,
-0x2a50a0,7,
-0x2a50c0,11,
-0x2a5100,14,
-0x2a5140,14,
-0x2a5180,61,
-0x2a5278,4,
-0x2a5290,2,
-0x2a52a0,7,
-0x2a52c0,11,
-0x2a5300,14,
-0x2a5340,14,
-0x2a5380,61,
-0x2a5478,4,
-0x2a5490,2,
-0x2a54a0,7,
-0x2a54c0,11,
-0x2a5500,14,
-0x2a5540,14,
-0x2a5580,61,
-0x2a5678,4,
-0x2a5690,2,
-0x2a56a0,7,
-0x2a56c0,11,
-0x2a5700,14,
-0x2a5740,14,
-0x2a5780,67,
-0x2a5890,1,
-0x2a5a00,8,
-0x2a5a24,15,
-0x2a5a64,30,
-0x2a5b00,4,
-0x2a5b20,2,
-0x2a5c00,6,
-0x2a5c40,14,
-0x2a5c80,9,
-0x2a5d00,9,
-0x2a5d2c,1,
-0x2a5d40,3,
-0x2a5d60,1,
-0x2a5d80,3,
-0x2a5e00,2,
-0x2a5e0c,1,
-0x2a5e14,5,
-0x2a5e2c,1,
-0x2a5e34,5,
-0x2a5e4c,1,
-0x2a5e54,5,
-0x2a5e6c,1,
-0x2a5e74,5,
-0x2a5e8c,1,
-0x2a5e94,5,
-0x2a5eac,1,
-0x2a5eb4,3,
-0x2a6000,14,
-0x2a6070,3,
-0x2a6080,6,
-0x2a6100,9,
-0x2a6204,1,
-0x2a620c,6,
-0x2a6240,13,
-0x2a6280,16,
-0x2a6800,19,
-0x2a6850,10,
-0x2a6880,19,
-0x2a68d0,10,
-0x2a6900,19,
-0x2a6950,10,
-0x2a6980,19,
-0x2a69d0,10,
-0x2a6a00,19,
-0x2a6a50,10,
-0x2a6a80,19,
-0x2a6ad0,10,
-0x2a6b00,19,
-0x2a6b50,10,
-0x2a6b80,19,
-0x2a6bd0,10,
-0x2a6c00,19,
-0x2a6c60,6,
-0x2a6c84,1,
-0x2a6c94,8,
-0x2a6cb8,9,
-0x2a6ce0,4,
-0x2a7000,6,
-0x2a7020,3,
-0x2a7040,7,
-0x2a7060,6,
-0x2a7100,5,
-0x2a7138,1,
-0x2a7144,1,
-0x2a7150,2,
-0x2a8000,6,
-0x2a8020,3,
-0x2a8030,9,
-0x2a8100,6,
-0x2a8120,10,
-0x2a8150,8,
-0x2a8400,1,
-0x2a8428,1,
-0x2a8450,1,
-0x2a8478,1,
-0x2a84a0,8,
-0x2a85ac,1,
-0x2a85d8,4,
-0x2a8600,6,
-0x2a8620,6,
-0x2a8640,3,
-0x2a8800,6,
-0x2a8820,3,
-0x2a8830,4,
-0x2a8858,2,
-0x2a8864,1,
-0x2a8874,3,
-0x2a8898,2,
-0x2a88a4,1,
-0x2a88b4,3,
-0x2a9000,6,
-0x2a9020,6,
-0x2a9040,3,
-0x2a9080,14,
-0x2a90bc,1,
-0x2a90c4,13,
-0x2a90fc,1,
-0x2a9200,20,
-0x2a925c,30,
-0x2a9300,24,
-0x2a9380,2,
-0x2a93a0,1,
-0x2a93c0,11,
-0x2a9404,3,
-0x2a9420,11,
-0x2a9460,3,
-0x2a9480,6,
-0x2a9500,6,
-0x2a9520,6,
-0x2a9540,1,
-0x2a9558,2,
-0x2a9600,17,
-0x2a9800,410,
-0x2aa000,6,
-0x2aa020,6,
-0x2aa040,3,
-0x2aa080,14,
-0x2aa0bc,1,
-0x2aa0c4,13,
-0x2aa0fc,1,
-0x2aa200,20,
-0x2aa25c,30,
-0x2aa300,24,
-0x2aa380,2,
-0x2aa3a0,1,
-0x2aa3c0,11,
-0x2aa404,3,
-0x2aa420,11,
-0x2aa460,3,
-0x2aa480,6,
-0x2aa500,6,
-0x2aa520,6,
-0x2aa540,1,
-0x2aa558,2,
-0x2aa600,17,
-0x2aa800,410,
-0x2ab000,4,
-0x2ab020,25,
-0x2ab088,8,
-0x2ab100,4,
-0x2ab120,25,
-0x2ab188,8,
-0x2ab200,34,
-0x2ab300,37,
-0x2ab400,16,
-0x2ab464,1,
-0x2ab474,3,
-0x2ab500,6,
-0x2ab520,2,
-0x2ab530,9,
-0x2ab570,10,
-0x2ab5a0,2,
-0x2ab5b0,9,
-0x2ab5f0,4,
-0x2ab620,7,
-0x2ab640,16,
-0x2ab700,6,
-0x2ab720,6,
-0x2ab740,6,
-0x2ab760,6,
-0x2ab780,3,
-0x2ab800,5,
-0x2ab818,1,
-0x2ab854,6,
-0x2ab880,2,
-0x2ab8a4,1,
-0x2ab8ac,2,
-0x2aba00,28,
-0x2aba7c,13,
-0x2abab4,1,
-0x2ababc,10,
-0x2abb04,1,
-0x2abb0c,5,
-0x2abb24,1,
-0x2abb34,9,
-0x2abb60,6,
-0x2abb80,22,
-0x2abbe0,3,
-0x2abbf0,2,
-0x2abc00,5,
-0x2abc18,1,
-0x2abc54,6,
-0x2abc80,2,
-0x2abca4,1,
-0x2abcac,2,
-0x2abe00,28,
-0x2abe7c,13,
-0x2abeb4,1,
-0x2abebc,10,
-0x2abf04,1,
-0x2abf0c,5,
-0x2abf24,1,
-0x2abf34,9,
-0x2abf60,6,
-0x2abf80,22,
-0x2abfe0,3,
-0x2abff0,2,
-0x2ac008,2,
-0x2ac014,11,
-0x2ac044,1,
-0x2ac04c,3,
-0x2ac05c,1,
-0x2ac064,1,
-0x2ac07c,1,
-0x2ac500,2,
-0x2ac518,1,
-0x2ac520,3,
-0x2ac540,6,
-0x2ac580,10,
-0x2ac808,2,
-0x2ac814,11,
-0x2ac844,1,
-0x2ac84c,3,
-0x2ac85c,1,
-0x2ac864,1,
-0x2ac87c,1,
-0x2acd00,2,
-0x2acd18,1,
-0x2acd20,3,
-0x2acd40,6,
-0x2acd80,10,
-0x2ad800,2,
-0x2ad828,2,
-0x2ad850,2,
-0x2ad878,2,
-0x2ad8a0,6,
-0x2ad9ac,1,
-0x2ad9d8,4,
-0x2ada00,6,
-0x2ada20,6,
-0x2ada40,6,
-0x2ada60,6,
-0x2ada80,3,
-0x2adc00,6,
-0x2adc20,3,
-0x2adc40,2,
-0x2adc60,1,
-0x2b0000,5,
-0x2b0020,4,
-0x2b0034,17,
-0x2b0080,1,
-0x2b00a0,6,
-0x2b0100,5,
-0x2b0120,4,
-0x2b0134,17,
-0x2b0180,1,
-0x2b01a0,6,
-0x2b0200,5,
-0x2b0220,4,
-0x2b0234,17,
-0x2b0280,1,
-0x2b02a0,6,
-0x2b0300,5,
-0x2b0320,4,
-0x2b0334,17,
-0x2b0380,1,
-0x2b03a0,6,
-0x2b0500,6,
-0x2b051c,7,
-0x2b0540,1,
-0x2b0c00,13,
-0x2b0c40,12,
-0x2b0c80,13,
-0x2b0cc0,12,
-0x2b0d00,6,
-0x2b0d20,6,
-0x2b0d80,14,
-0x2b0dc0,2,
-0x2b0e40,11,
-0x2b0e80,6,
-0x2b0ea0,6,
-0x2b1000,2,
-0x2b1010,5,
-0x2b1060,32,
-0x2b1100,8,
-0x2b1180,3,
-0x2b1190,2,
-0x2b119c,5,
-0x2b1218,9,
-0x2b1240,3,
-0x2b1250,6,
-0x2b1280,1,
-0x2b1288,6,
-0x2b12a4,1,
-0x2b1400,8,
-0x2b1424,2,
-0x2b1500,5,
-0x2b1520,4,
-0x2b1540,5,
-0x2b1560,4,
-0x2b1800,24,
-0x2b1864,5,
-0x2b1880,8,
-0x2b1900,13,
-0x2b1980,4,
-0x2b19a0,6,
-0x2b1a40,1,
-0x2b1a60,1,
-0x2b1a68,23,
-0x2b1ac8,6,
-0x2b1b00,17,
-0x2b1b48,6,
-0x2b1b80,12,
-0x2b1c00,6,
-0x2b1c20,6,
-0x2b1c40,6,
-0x2b1c60,3,
-0x2b1d00,6,
-0x2b1d20,6,
-0x2b1d40,3,
-0x2b2000,5,
-0x2b2020,4,
-0x2b2034,17,
-0x2b2080,1,
-0x2b20a0,6,
-0x2b2100,5,
-0x2b2120,4,
-0x2b2134,17,
-0x2b2180,1,
-0x2b21a0,6,
-0x2b2200,5,
-0x2b2220,4,
-0x2b2234,17,
-0x2b2280,1,
-0x2b22a0,6,
-0x2b2300,5,
-0x2b2320,4,
-0x2b2334,17,
-0x2b2380,1,
-0x2b23a0,6,
-0x2b2500,6,
-0x2b251c,7,
-0x2b2540,1,
-0x2b2c00,13,
-0x2b2c40,12,
-0x2b2c80,13,
-0x2b2cc0,12,
-0x2b2d00,6,
-0x2b2d20,6,
-0x2b2d80,14,
-0x2b2dc0,2,
-0x2b2e40,11,
-0x2b2e80,6,
-0x2b2ea0,6,
-0x2b3000,2,
-0x2b3010,5,
-0x2b3060,32,
-0x2b3100,8,
-0x2b3180,3,
-0x2b3190,2,
-0x2b319c,5,
-0x2b3218,9,
-0x2b3240,3,
-0x2b3250,6,
-0x2b3280,1,
-0x2b3288,6,
-0x2b32a4,1,
-0x2b3400,8,
-0x2b3424,2,
-0x2b3500,5,
-0x2b3520,4,
-0x2b3540,5,
-0x2b3560,4,
-0x2b3800,24,
-0x2b3864,5,
-0x2b3880,8,
-0x2b3900,13,
-0x2b3980,4,
-0x2b39a0,6,
-0x2b3a40,1,
-0x2b3a60,1,
-0x2b3a68,23,
-0x2b3ac8,6,
-0x2b3b00,17,
-0x2b3b48,6,
-0x2b3b80,12,
-0x2b3c00,6,
-0x2b3c20,6,
-0x2b3c40,6,
-0x2b3c60,3,
-0x2b3d00,6,
-0x2b3d20,6,
-0x2b3d40,3,
-0x2b4000,29,
-0x2b4078,4,
-0x2b4090,2,
-0x2b40a0,7,
-0x2b40c0,11,
-0x2b4100,14,
-0x2b4140,14,
-0x2b4180,61,
-0x2b4278,4,
-0x2b4290,2,
-0x2b42a0,7,
-0x2b42c0,11,
-0x2b4300,14,
-0x2b4340,14,
-0x2b4380,61,
-0x2b4478,4,
-0x2b4490,2,
-0x2b44a0,7,
-0x2b44c0,11,
-0x2b4500,14,
-0x2b4540,14,
-0x2b4580,61,
-0x2b4678,4,
-0x2b4690,2,
-0x2b46a0,7,
-0x2b46c0,11,
-0x2b4700,14,
-0x2b4740,14,
-0x2b4780,67,
-0x2b4890,1,
-0x2b4a00,8,
-0x2b4a24,15,
-0x2b4a64,30,
-0x2b4b00,4,
-0x2b4b20,2,
-0x2b4c00,6,
-0x2b4c40,14,
-0x2b4c80,9,
-0x2b4d00,9,
-0x2b4d2c,1,
-0x2b4d40,3,
-0x2b4d60,1,
-0x2b4d80,3,
-0x2b4e00,2,
-0x2b4e0c,1,
-0x2b4e14,5,
-0x2b4e2c,1,
-0x2b4e34,5,
-0x2b4e4c,1,
-0x2b4e54,5,
-0x2b4e6c,1,
-0x2b4e74,5,
-0x2b4e8c,1,
-0x2b4e94,5,
-0x2b4eac,1,
-0x2b4eb4,3,
-0x2b5000,29,
-0x2b5078,4,
-0x2b5090,2,
-0x2b50a0,7,
-0x2b50c0,11,
-0x2b5100,14,
-0x2b5140,14,
-0x2b5180,61,
-0x2b5278,4,
-0x2b5290,2,
-0x2b52a0,7,
-0x2b52c0,11,
-0x2b5300,14,
-0x2b5340,14,
-0x2b5380,61,
-0x2b5478,4,
-0x2b5490,2,
-0x2b54a0,7,
-0x2b54c0,11,
-0x2b5500,14,
-0x2b5540,14,
-0x2b5580,61,
-0x2b5678,4,
-0x2b5690,2,
-0x2b56a0,7,
-0x2b56c0,11,
-0x2b5700,14,
-0x2b5740,14,
-0x2b5780,67,
-0x2b5890,1,
-0x2b5a00,8,
-0x2b5a24,15,
-0x2b5a64,30,
-0x2b5b00,4,
-0x2b5b20,2,
-0x2b5c00,6,
-0x2b5c40,14,
-0x2b5c80,9,
-0x2b5d00,9,
-0x2b5d2c,1,
-0x2b5d40,3,
-0x2b5d60,1,
-0x2b5d80,3,
-0x2b5e00,2,
-0x2b5e0c,1,
-0x2b5e14,5,
-0x2b5e2c,1,
-0x2b5e34,5,
-0x2b5e4c,1,
-0x2b5e54,5,
-0x2b5e6c,1,
-0x2b5e74,5,
-0x2b5e8c,1,
-0x2b5e94,5,
-0x2b5eac,1,
-0x2b5eb4,3,
-0x2b6000,14,
-0x2b6070,3,
-0x2b6080,6,
-0x2b6100,9,
-0x2b6204,1,
-0x2b620c,6,
-0x2b6240,13,
-0x2b6280,16,
-0x2b6800,19,
-0x2b6850,10,
-0x2b6880,19,
-0x2b68d0,10,
-0x2b6900,19,
-0x2b6950,10,
-0x2b6980,19,
-0x2b69d0,10,
-0x2b6a00,19,
-0x2b6a50,10,
-0x2b6a80,19,
-0x2b6ad0,10,
-0x2b6b00,19,
-0x2b6b50,10,
-0x2b6b80,19,
-0x2b6bd0,10,
-0x2b6c00,19,
-0x2b6c60,6,
-0x2b6c84,1,
-0x2b6c94,8,
-0x2b6cb8,9,
-0x2b6ce0,4,
-0x2b7000,6,
-0x2b7020,3,
-0x2b7040,7,
-0x2b7060,6,
-0x2b7100,5,
-0x2b7138,1,
-0x2b7144,1,
-0x2b7150,2,
-0x2b8000,6,
-0x2b8020,3,
-0x2b8030,9,
-0x2b8100,6,
-0x2b8120,10,
-0x2b8150,8,
-0x2b8400,1,
-0x2b8428,1,
-0x2b8450,1,
-0x2b8478,1,
-0x2b84a0,8,
-0x2b85ac,1,
-0x2b85d8,4,
-0x2b8600,6,
-0x2b8620,6,
-0x2b8640,3,
-0x2b8800,6,
-0x2b8820,3,
-0x2b8830,4,
-0x2b8858,2,
-0x2b8864,1,
-0x2b8874,3,
-0x2b8898,2,
-0x2b88a4,1,
-0x2b88b4,3,
-0x2b9000,6,
-0x2b9020,6,
-0x2b9040,3,
-0x2b9080,14,
-0x2b90bc,1,
-0x2b90c4,13,
-0x2b90fc,1,
-0x2b9200,20,
-0x2b925c,30,
-0x2b9300,24,
-0x2b9380,2,
-0x2b93a0,1,
-0x2b93c0,11,
-0x2b9404,3,
-0x2b9420,11,
-0x2b9460,3,
-0x2b9480,6,
-0x2b9500,6,
-0x2b9520,6,
-0x2b9540,1,
-0x2b9558,2,
-0x2b9600,17,
-0x2b9800,410,
-0x2ba000,6,
-0x2ba020,6,
-0x2ba040,3,
-0x2ba080,14,
-0x2ba0bc,1,
-0x2ba0c4,13,
-0x2ba0fc,1,
-0x2ba200,20,
-0x2ba25c,30,
-0x2ba300,24,
-0x2ba380,2,
-0x2ba3a0,1,
-0x2ba3c0,11,
-0x2ba404,3,
-0x2ba420,11,
-0x2ba460,3,
-0x2ba480,6,
-0x2ba500,6,
-0x2ba520,6,
-0x2ba540,1,
-0x2ba558,2,
-0x2ba600,17,
-0x2ba800,410,
-0x2bb000,4,
-0x2bb020,25,
-0x2bb088,8,
-0x2bb100,4,
-0x2bb120,25,
-0x2bb188,8,
-0x2bb200,34,
-0x2bb300,37,
-0x2bb400,16,
-0x2bb464,1,
-0x2bb474,3,
-0x2bb500,6,
-0x2bb520,2,
-0x2bb530,9,
-0x2bb570,10,
-0x2bb5a0,2,
-0x2bb5b0,9,
-0x2bb5f0,4,
-0x2bb620,7,
-0x2bb640,16,
-0x2bb700,6,
-0x2bb720,6,
-0x2bb740,6,
-0x2bb760,6,
-0x2bb780,3,
-0x2bb800,5,
-0x2bb818,1,
-0x2bb854,6,
-0x2bb880,2,
-0x2bb8a4,1,
-0x2bb8ac,2,
-0x2bba00,28,
-0x2bba7c,13,
-0x2bbab4,1,
-0x2bbabc,10,
-0x2bbb04,1,
-0x2bbb0c,5,
-0x2bbb24,1,
-0x2bbb34,9,
-0x2bbb60,6,
-0x2bbb80,22,
-0x2bbbe0,3,
-0x2bbbf0,2,
-0x2bbc00,5,
-0x2bbc18,1,
-0x2bbc54,6,
-0x2bbc80,2,
-0x2bbca4,1,
-0x2bbcac,2,
-0x2bbe00,28,
-0x2bbe7c,13,
-0x2bbeb4,1,
-0x2bbebc,10,
-0x2bbf04,1,
-0x2bbf0c,5,
-0x2bbf24,1,
-0x2bbf34,9,
-0x2bbf60,6,
-0x2bbf80,22,
-0x2bbfe0,3,
-0x2bbff0,2,
-0x2bc008,2,
-0x2bc014,11,
-0x2bc044,1,
-0x2bc04c,3,
-0x2bc05c,1,
-0x2bc064,1,
-0x2bc07c,1,
-0x2bc500,2,
-0x2bc518,1,
-0x2bc520,3,
-0x2bc540,6,
-0x2bc580,10,
-0x2bc808,2,
-0x2bc814,11,
-0x2bc844,1,
-0x2bc84c,3,
-0x2bc85c,1,
-0x2bc864,1,
-0x2bc87c,1,
-0x2bcd00,2,
-0x2bcd18,1,
-0x2bcd20,3,
-0x2bcd40,6,
-0x2bcd80,10,
-0x2bd800,2,
-0x2bd828,2,
-0x2bd850,2,
-0x2bd878,2,
-0x2bd8a0,6,
-0x2bd9ac,1,
-0x2bd9d8,4,
-0x2bda00,6,
-0x2bda20,6,
-0x2bda40,6,
-0x2bda60,6,
-0x2bda80,3,
-0x2bdc00,6,
-0x2bdc20,3,
-0x2bdc40,2,
-0x2bdc60,1,
-0x2c0000,5,
-0x2c0020,4,
-0x2c0034,17,
-0x2c0080,1,
-0x2c00a0,6,
-0x2c0100,5,
-0x2c0120,4,
-0x2c0134,17,
-0x2c0180,1,
-0x2c01a0,6,
-0x2c0200,5,
-0x2c0220,4,
-0x2c0234,17,
-0x2c0280,1,
-0x2c02a0,6,
-0x2c0300,5,
-0x2c0320,4,
-0x2c0334,17,
-0x2c0380,1,
-0x2c03a0,6,
-0x2c0500,6,
-0x2c051c,7,
-0x2c0540,1,
-0x2c0c00,13,
-0x2c0c40,12,
-0x2c0c80,13,
-0x2c0cc0,12,
-0x2c0d00,6,
-0x2c0d20,6,
-0x2c0d80,14,
-0x2c0dc0,2,
-0x2c0e40,11,
-0x2c0e80,6,
-0x2c0ea0,6,
-0x2c1000,2,
-0x2c1010,5,
-0x2c1060,32,
-0x2c1100,8,
-0x2c1180,3,
-0x2c1190,2,
-0x2c119c,5,
-0x2c1218,9,
-0x2c1240,3,
-0x2c1250,6,
-0x2c1280,1,
-0x2c1288,6,
-0x2c12a4,1,
-0x2c1400,8,
-0x2c1424,2,
-0x2c1500,5,
-0x2c1520,4,
-0x2c1540,5,
-0x2c1560,4,
-0x2c1800,24,
-0x2c1864,5,
-0x2c1880,8,
-0x2c1900,13,
-0x2c1980,4,
-0x2c19a0,6,
-0x2c1a40,1,
-0x2c1a60,1,
-0x2c1a68,23,
-0x2c1ac8,6,
-0x2c1b00,17,
-0x2c1b48,6,
-0x2c1b80,12,
-0x2c1c00,6,
-0x2c1c20,6,
-0x2c1c40,6,
-0x2c1c60,3,
-0x2c1d00,6,
-0x2c1d20,6,
-0x2c1d40,3,
-0x2c2000,5,
-0x2c2020,4,
-0x2c2034,17,
-0x2c2080,1,
-0x2c20a0,6,
-0x2c2100,5,
-0x2c2120,4,
-0x2c2134,17,
-0x2c2180,1,
-0x2c21a0,6,
-0x2c2200,5,
-0x2c2220,4,
-0x2c2234,17,
-0x2c2280,1,
-0x2c22a0,6,
-0x2c2300,5,
-0x2c2320,4,
-0x2c2334,17,
-0x2c2380,1,
-0x2c23a0,6,
-0x2c2500,6,
-0x2c251c,7,
-0x2c2540,1,
-0x2c2c00,13,
-0x2c2c40,12,
-0x2c2c80,13,
-0x2c2cc0,12,
-0x2c2d00,6,
-0x2c2d20,6,
-0x2c2d80,14,
-0x2c2dc0,2,
-0x2c2e40,11,
-0x2c2e80,6,
-0x2c2ea0,6,
-0x2c3000,2,
-0x2c3010,5,
-0x2c3060,32,
-0x2c3100,8,
-0x2c3180,3,
-0x2c3190,2,
-0x2c319c,5,
-0x2c3218,9,
-0x2c3240,3,
-0x2c3250,6,
-0x2c3280,1,
-0x2c3288,6,
-0x2c32a4,1,
-0x2c3400,8,
-0x2c3424,2,
-0x2c3500,5,
-0x2c3520,4,
-0x2c3540,5,
-0x2c3560,4,
-0x2c3800,24,
-0x2c3864,5,
-0x2c3880,8,
-0x2c3900,13,
-0x2c3980,4,
-0x2c39a0,6,
-0x2c3a40,1,
-0x2c3a60,1,
-0x2c3a68,23,
-0x2c3ac8,6,
-0x2c3b00,17,
-0x2c3b48,6,
-0x2c3b80,12,
-0x2c3c00,6,
-0x2c3c20,6,
-0x2c3c40,6,
-0x2c3c60,3,
-0x2c3d00,6,
-0x2c3d20,6,
-0x2c3d40,3,
-0x2c4000,29,
-0x2c4078,4,
-0x2c4090,2,
-0x2c40a0,7,
-0x2c40c0,11,
-0x2c4100,14,
-0x2c4140,14,
-0x2c4180,61,
-0x2c4278,4,
-0x2c4290,2,
-0x2c42a0,7,
-0x2c42c0,11,
-0x2c4300,14,
-0x2c4340,14,
-0x2c4380,61,
-0x2c4478,4,
-0x2c4490,2,
-0x2c44a0,7,
-0x2c44c0,11,
-0x2c4500,14,
-0x2c4540,14,
-0x2c4580,61,
-0x2c4678,4,
-0x2c4690,2,
-0x2c46a0,7,
-0x2c46c0,11,
-0x2c4700,14,
-0x2c4740,14,
-0x2c4780,67,
-0x2c4890,1,
-0x2c4a00,8,
-0x2c4a24,15,
-0x2c4a64,30,
-0x2c4b00,4,
-0x2c4b20,2,
-0x2c4c00,6,
-0x2c4c40,14,
-0x2c4c80,9,
-0x2c4d00,9,
-0x2c4d2c,1,
-0x2c4d40,3,
-0x2c4d60,1,
-0x2c4d80,3,
-0x2c4e00,2,
-0x2c4e0c,1,
-0x2c4e14,5,
-0x2c4e2c,1,
-0x2c4e34,5,
-0x2c4e4c,1,
-0x2c4e54,5,
-0x2c4e6c,1,
-0x2c4e74,5,
-0x2c4e8c,1,
-0x2c4e94,5,
-0x2c4eac,1,
-0x2c4eb4,3,
-0x2c5000,29,
-0x2c5078,4,
-0x2c5090,2,
-0x2c50a0,7,
-0x2c50c0,11,
-0x2c5100,14,
-0x2c5140,14,
-0x2c5180,61,
-0x2c5278,4,
-0x2c5290,2,
-0x2c52a0,7,
-0x2c52c0,11,
-0x2c5300,14,
-0x2c5340,14,
-0x2c5380,61,
-0x2c5478,4,
-0x2c5490,2,
-0x2c54a0,7,
-0x2c54c0,11,
-0x2c5500,14,
-0x2c5540,14,
-0x2c5580,61,
-0x2c5678,4,
-0x2c5690,2,
-0x2c56a0,7,
-0x2c56c0,11,
-0x2c5700,14,
-0x2c5740,14,
-0x2c5780,67,
-0x2c5890,1,
-0x2c5a00,8,
-0x2c5a24,15,
-0x2c5a64,30,
-0x2c5b00,4,
-0x2c5b20,2,
-0x2c5c00,6,
-0x2c5c40,14,
-0x2c5c80,9,
-0x2c5d00,9,
-0x2c5d2c,1,
-0x2c5d40,3,
-0x2c5d60,1,
-0x2c5d80,3,
-0x2c5e00,2,
-0x2c5e0c,1,
-0x2c5e14,5,
-0x2c5e2c,1,
-0x2c5e34,5,
-0x2c5e4c,1,
-0x2c5e54,5,
-0x2c5e6c,1,
-0x2c5e74,5,
-0x2c5e8c,1,
-0x2c5e94,5,
-0x2c5eac,1,
-0x2c5eb4,3,
-0x2c6000,14,
-0x2c6070,3,
-0x2c6080,6,
-0x2c6100,9,
-0x2c6204,1,
-0x2c620c,6,
-0x2c6240,13,
-0x2c6280,16,
-0x2c6800,19,
-0x2c6850,10,
-0x2c6880,19,
-0x2c68d0,10,
-0x2c6900,19,
-0x2c6950,10,
-0x2c6980,19,
-0x2c69d0,10,
-0x2c6a00,19,
-0x2c6a50,10,
-0x2c6a80,19,
-0x2c6ad0,10,
-0x2c6b00,19,
-0x2c6b50,10,
-0x2c6b80,19,
-0x2c6bd0,10,
-0x2c6c00,19,
-0x2c6c60,6,
-0x2c6c84,1,
-0x2c6c94,8,
-0x2c6cb8,9,
-0x2c6ce0,4,
-0x2c7000,6,
-0x2c7020,3,
-0x2c7040,7,
-0x2c7060,6,
-0x2c7100,5,
-0x2c7138,1,
-0x2c7144,1,
-0x2c7150,2,
-0x2c8000,6,
-0x2c8020,3,
-0x2c8030,9,
-0x2c8100,6,
-0x2c8120,10,
-0x2c8150,8,
-0x2c8400,1,
-0x2c8428,1,
-0x2c8450,1,
-0x2c8478,1,
-0x2c84a0,8,
-0x2c85ac,1,
-0x2c85d8,4,
-0x2c8600,6,
-0x2c8620,6,
-0x2c8640,3,
-0x2c8800,6,
-0x2c8820,3,
-0x2c8830,4,
-0x2c8858,2,
-0x2c8864,1,
-0x2c8874,3,
-0x2c8898,2,
-0x2c88a4,1,
-0x2c88b4,3,
-0x2c9000,6,
-0x2c9020,6,
-0x2c9040,3,
-0x2c9080,14,
-0x2c90bc,1,
-0x2c90c4,13,
-0x2c90fc,1,
-0x2c9200,20,
-0x2c925c,30,
-0x2c9300,24,
-0x2c9380,2,
-0x2c93a0,1,
-0x2c93c0,11,
-0x2c9404,3,
-0x2c9420,11,
-0x2c9460,3,
-0x2c9480,6,
-0x2c9500,6,
-0x2c9520,6,
-0x2c9540,1,
-0x2c9558,2,
-0x2c9600,17,
-0x2c9800,410,
-0x2ca000,6,
-0x2ca020,6,
-0x2ca040,3,
-0x2ca080,14,
-0x2ca0bc,1,
-0x2ca0c4,13,
-0x2ca0fc,1,
-0x2ca200,20,
-0x2ca25c,30,
-0x2ca300,24,
-0x2ca380,2,
-0x2ca3a0,1,
-0x2ca3c0,11,
-0x2ca404,3,
-0x2ca420,11,
-0x2ca460,3,
-0x2ca480,6,
-0x2ca500,6,
-0x2ca520,6,
-0x2ca540,1,
-0x2ca558,2,
-0x2ca600,17,
-0x2ca800,410,
-0x2cb000,4,
-0x2cb020,25,
-0x2cb088,8,
-0x2cb100,4,
-0x2cb120,25,
-0x2cb188,8,
-0x2cb200,34,
-0x2cb300,37,
-0x2cb400,16,
-0x2cb464,1,
-0x2cb474,3,
-0x2cb500,6,
-0x2cb520,2,
-0x2cb530,9,
-0x2cb570,10,
-0x2cb5a0,2,
-0x2cb5b0,9,
-0x2cb5f0,4,
-0x2cb620,7,
-0x2cb640,16,
-0x2cb700,6,
-0x2cb720,6,
-0x2cb740,6,
-0x2cb760,6,
-0x2cb780,3,
-0x2cb800,5,
-0x2cb818,1,
-0x2cb854,6,
-0x2cb880,2,
-0x2cb8a4,1,
-0x2cb8ac,2,
-0x2cba00,28,
-0x2cba7c,13,
-0x2cbab4,1,
-0x2cbabc,10,
-0x2cbb04,1,
-0x2cbb0c,5,
-0x2cbb24,1,
-0x2cbb34,9,
-0x2cbb60,6,
-0x2cbb80,22,
-0x2cbbe0,3,
-0x2cbbf0,2,
-0x2cbc00,5,
-0x2cbc18,1,
-0x2cbc54,6,
-0x2cbc80,2,
-0x2cbca4,1,
-0x2cbcac,2,
-0x2cbe00,28,
-0x2cbe7c,13,
-0x2cbeb4,1,
-0x2cbebc,10,
-0x2cbf04,1,
-0x2cbf0c,5,
-0x2cbf24,1,
-0x2cbf34,9,
-0x2cbf60,6,
-0x2cbf80,22,
-0x2cbfe0,3,
-0x2cbff0,2,
-0x2cc008,2,
-0x2cc014,11,
-0x2cc044,1,
-0x2cc04c,3,
-0x2cc05c,1,
-0x2cc064,1,
-0x2cc07c,1,
-0x2cc500,2,
-0x2cc518,1,
-0x2cc520,3,
-0x2cc540,6,
-0x2cc580,10,
-0x2cc808,2,
-0x2cc814,11,
-0x2cc844,1,
-0x2cc84c,3,
-0x2cc85c,1,
-0x2cc864,1,
-0x2cc87c,1,
-0x2ccd00,2,
-0x2ccd18,1,
-0x2ccd20,3,
-0x2ccd40,6,
-0x2ccd80,10,
-0x2cd800,2,
-0x2cd828,2,
-0x2cd850,2,
-0x2cd878,2,
-0x2cd8a0,6,
-0x2cd9ac,1,
-0x2cd9d8,4,
-0x2cda00,6,
-0x2cda20,6,
-0x2cda40,6,
-0x2cda60,6,
-0x2cda80,3,
-0x2cdc00,6,
-0x2cdc20,3,
-0x2cdc40,2,
-0x2cdc60,1,
-0x2d0000,5,
-0x2d0020,4,
-0x2d0034,17,
-0x2d0080,1,
-0x2d00a0,6,
-0x2d0100,5,
-0x2d0120,4,
-0x2d0134,17,
-0x2d0180,1,
-0x2d01a0,6,
-0x2d0200,5,
-0x2d0220,4,
-0x2d0234,17,
-0x2d0280,1,
-0x2d02a0,6,
-0x2d0300,5,
-0x2d0320,4,
-0x2d0334,17,
-0x2d0380,1,
-0x2d03a0,6,
-0x2d0500,6,
-0x2d051c,7,
-0x2d0540,1,
-0x2d0c00,13,
-0x2d0c40,12,
-0x2d0c80,13,
-0x2d0cc0,12,
-0x2d0d00,6,
-0x2d0d20,6,
-0x2d0d80,14,
-0x2d0dc0,2,
-0x2d0e40,11,
-0x2d0e80,6,
-0x2d0ea0,6,
-0x2d1000,2,
-0x2d1010,5,
-0x2d1060,32,
-0x2d1100,8,
-0x2d1180,3,
-0x2d1190,2,
-0x2d119c,5,
-0x2d1218,9,
-0x2d1240,3,
-0x2d1250,6,
-0x2d1280,1,
-0x2d1288,6,
-0x2d12a4,1,
-0x2d1400,8,
-0x2d1424,2,
-0x2d1500,5,
-0x2d1520,4,
-0x2d1540,5,
-0x2d1560,4,
-0x2d1800,24,
-0x2d1864,5,
-0x2d1880,8,
-0x2d1900,13,
-0x2d1980,4,
-0x2d19a0,6,
-0x2d1a40,1,
-0x2d1a60,1,
-0x2d1a68,23,
-0x2d1ac8,6,
-0x2d1b00,17,
-0x2d1b48,6,
-0x2d1b80,12,
-0x2d1c00,6,
-0x2d1c20,6,
-0x2d1c40,6,
-0x2d1c60,3,
-0x2d1d00,6,
-0x2d1d20,6,
-0x2d1d40,3,
-0x2d2000,5,
-0x2d2020,4,
-0x2d2034,17,
-0x2d2080,1,
-0x2d20a0,6,
-0x2d2100,5,
-0x2d2120,4,
-0x2d2134,17,
-0x2d2180,1,
-0x2d21a0,6,
-0x2d2200,5,
-0x2d2220,4,
-0x2d2234,17,
-0x2d2280,1,
-0x2d22a0,6,
-0x2d2300,5,
-0x2d2320,4,
-0x2d2334,17,
-0x2d2380,1,
-0x2d23a0,6,
-0x2d2500,6,
-0x2d251c,7,
-0x2d2540,1,
-0x2d2c00,13,
-0x2d2c40,12,
-0x2d2c80,13,
-0x2d2cc0,12,
-0x2d2d00,6,
-0x2d2d20,6,
-0x2d2d80,14,
-0x2d2dc0,2,
-0x2d2e40,11,
-0x2d2e80,6,
-0x2d2ea0,6,
-0x2d3000,2,
-0x2d3010,5,
-0x2d3060,32,
-0x2d3100,8,
-0x2d3180,3,
-0x2d3190,2,
-0x2d319c,5,
-0x2d3218,9,
-0x2d3240,3,
-0x2d3250,6,
-0x2d3280,1,
-0x2d3288,6,
-0x2d32a4,1,
-0x2d3400,8,
-0x2d3424,2,
-0x2d3500,5,
-0x2d3520,4,
-0x2d3540,5,
-0x2d3560,4,
-0x2d3800,24,
-0x2d3864,5,
-0x2d3880,8,
-0x2d3900,13,
-0x2d3980,4,
-0x2d39a0,6,
-0x2d3a40,1,
-0x2d3a60,1,
-0x2d3a68,23,
-0x2d3ac8,6,
-0x2d3b00,17,
-0x2d3b48,6,
-0x2d3b80,12,
-0x2d3c00,6,
-0x2d3c20,6,
-0x2d3c40,6,
-0x2d3c60,3,
-0x2d3d00,6,
-0x2d3d20,6,
-0x2d3d40,3,
-0x2d4000,29,
-0x2d4078,4,
-0x2d4090,2,
-0x2d40a0,7,
-0x2d40c0,11,
-0x2d4100,14,
-0x2d4140,14,
-0x2d4180,61,
-0x2d4278,4,
-0x2d4290,2,
-0x2d42a0,7,
-0x2d42c0,11,
-0x2d4300,14,
-0x2d4340,14,
-0x2d4380,61,
-0x2d4478,4,
-0x2d4490,2,
-0x2d44a0,7,
-0x2d44c0,11,
-0x2d4500,14,
-0x2d4540,14,
-0x2d4580,61,
-0x2d4678,4,
-0x2d4690,2,
-0x2d46a0,7,
-0x2d46c0,11,
-0x2d4700,14,
-0x2d4740,14,
-0x2d4780,67,
-0x2d4890,1,
-0x2d4a00,8,
-0x2d4a24,15,
-0x2d4a64,30,
-0x2d4b00,4,
-0x2d4b20,2,
-0x2d4c00,6,
-0x2d4c40,14,
-0x2d4c80,9,
-0x2d4d00,9,
-0x2d4d2c,1,
-0x2d4d40,3,
-0x2d4d60,1,
-0x2d4d80,3,
-0x2d4e00,2,
-0x2d4e0c,1,
-0x2d4e14,5,
-0x2d4e2c,1,
-0x2d4e34,5,
-0x2d4e4c,1,
-0x2d4e54,5,
-0x2d4e6c,1,
-0x2d4e74,5,
-0x2d4e8c,1,
-0x2d4e94,5,
-0x2d4eac,1,
-0x2d4eb4,3,
-0x2d5000,29,
-0x2d5078,4,
-0x2d5090,2,
-0x2d50a0,7,
-0x2d50c0,11,
-0x2d5100,14,
-0x2d5140,14,
-0x2d5180,61,
-0x2d5278,4,
-0x2d5290,2,
-0x2d52a0,7,
-0x2d52c0,11,
-0x2d5300,14,
-0x2d5340,14,
-0x2d5380,61,
-0x2d5478,4,
-0x2d5490,2,
-0x2d54a0,7,
-0x2d54c0,11,
-0x2d5500,14,
-0x2d5540,14,
-0x2d5580,61,
-0x2d5678,4,
-0x2d5690,2,
-0x2d56a0,7,
-0x2d56c0,11,
-0x2d5700,14,
-0x2d5740,14,
-0x2d5780,67,
-0x2d5890,1,
-0x2d5a00,8,
-0x2d5a24,15,
-0x2d5a64,30,
-0x2d5b00,4,
-0x2d5b20,2,
-0x2d5c00,6,
-0x2d5c40,14,
-0x2d5c80,9,
-0x2d5d00,9,
-0x2d5d2c,1,
-0x2d5d40,3,
-0x2d5d60,1,
-0x2d5d80,3,
-0x2d5e00,2,
-0x2d5e0c,1,
-0x2d5e14,5,
-0x2d5e2c,1,
-0x2d5e34,5,
-0x2d5e4c,1,
-0x2d5e54,5,
-0x2d5e6c,1,
-0x2d5e74,5,
-0x2d5e8c,1,
-0x2d5e94,5,
-0x2d5eac,1,
-0x2d5eb4,3,
-0x2d6000,14,
-0x2d6070,3,
-0x2d6080,6,
-0x2d6100,9,
-0x2d6204,1,
-0x2d620c,6,
-0x2d6240,13,
-0x2d6280,16,
-0x2d6400,8,
-0x2d6424,15,
-0x2d6464,15,
-0x2d64a4,15,
-0x2d64e4,30,
-0x2d6580,10,
-0x2d65ac,1,
-0x2d65b4,5,
-0x2d65cc,1,
-0x2d65d4,5,
-0x2d65ec,1,
-0x2d65f4,13,
-0x2d6680,4,
-0x2d6694,2,
-0x2d66a0,5,
-0x2d66c0,5,
-0x2d66e0,4,
-0x2d6800,19,
-0x2d6850,10,
-0x2d6880,19,
-0x2d68d0,10,
-0x2d6900,19,
-0x2d6950,10,
-0x2d6980,19,
-0x2d69d0,10,
-0x2d6a00,19,
-0x2d6a50,10,
-0x2d6a80,19,
-0x2d6ad0,10,
-0x2d6b00,19,
-0x2d6b50,10,
-0x2d6b80,19,
-0x2d6bd0,10,
-0x2d6c00,19,
-0x2d6c60,6,
-0x2d6c84,1,
-0x2d6c94,8,
-0x2d6cb8,9,
-0x2d6ce0,4,
-0x2d7000,6,
-0x2d7020,3,
-0x2d7040,7,
-0x2d7060,6,
-0x2d7100,5,
-0x2d7138,1,
-0x2d7144,1,
-0x2d7150,2,
-0x2d8000,6,
-0x2d8020,3,
-0x2d8030,9,
-0x2d8100,6,
-0x2d8120,10,
-0x2d8150,8,
-0x2d8400,1,
-0x2d8428,1,
-0x2d8450,1,
-0x2d8478,1,
-0x2d84a0,8,
-0x2d85ac,1,
-0x2d85d8,4,
-0x2d8600,6,
-0x2d8620,6,
-0x2d8640,3,
-0x2d8800,6,
-0x2d8820,3,
-0x2d8830,4,
-0x2d8858,2,
-0x2d8864,1,
-0x2d8874,3,
-0x2d8898,2,
-0x2d88a4,1,
-0x2d88b4,3,
-0x2d9000,6,
-0x2d9020,6,
-0x2d9040,3,
-0x2d9080,14,
-0x2d90bc,1,
-0x2d90c4,13,
-0x2d90fc,1,
-0x2d9200,20,
-0x2d925c,30,
-0x2d9300,24,
-0x2d9380,2,
-0x2d93a0,1,
-0x2d93c0,11,
-0x2d9404,3,
-0x2d9420,11,
-0x2d9460,3,
-0x2d9480,6,
-0x2d9500,6,
-0x2d9520,6,
-0x2d9540,1,
-0x2d9558,2,
-0x2d9600,17,
-0x2d9800,410,
-0x2da000,6,
-0x2da020,6,
-0x2da040,3,
-0x2da080,14,
-0x2da0bc,1,
-0x2da0c4,13,
-0x2da0fc,1,
-0x2da200,20,
-0x2da25c,30,
-0x2da300,24,
-0x2da380,2,
-0x2da3a0,1,
-0x2da3c0,11,
-0x2da404,3,
-0x2da420,11,
-0x2da460,3,
-0x2da480,6,
-0x2da500,6,
-0x2da520,6,
-0x2da540,1,
-0x2da558,2,
-0x2da600,17,
-0x2da800,410,
-0x2db000,4,
-0x2db020,25,
-0x2db088,8,
-0x2db100,4,
-0x2db120,25,
-0x2db188,8,
-0x2db200,34,
-0x2db300,37,
-0x2db400,16,
-0x2db464,1,
-0x2db474,3,
-0x2db500,6,
-0x2db520,2,
-0x2db530,9,
-0x2db570,10,
-0x2db5a0,2,
-0x2db5b0,9,
-0x2db5f0,4,
-0x2db620,7,
-0x2db640,16,
-0x2db700,6,
-0x2db720,6,
-0x2db740,6,
-0x2db760,6,
-0x2db780,3,
-0x2db800,5,
-0x2db818,1,
-0x2db854,6,
-0x2db880,2,
-0x2db8a4,1,
-0x2db8ac,2,
-0x2dba00,28,
-0x2dba7c,13,
-0x2dbab4,1,
-0x2dbabc,10,
-0x2dbb04,1,
-0x2dbb0c,5,
-0x2dbb24,1,
-0x2dbb34,9,
-0x2dbb60,6,
-0x2dbb80,22,
-0x2dbbe0,3,
-0x2dbbf0,2,
-0x2dbc00,5,
-0x2dbc18,1,
-0x2dbc54,6,
-0x2dbc80,2,
-0x2dbca4,1,
-0x2dbcac,2,
-0x2dbe00,28,
-0x2dbe7c,13,
-0x2dbeb4,1,
-0x2dbebc,10,
-0x2dbf04,1,
-0x2dbf0c,5,
-0x2dbf24,1,
-0x2dbf34,9,
-0x2dbf60,6,
-0x2dbf80,22,
-0x2dbfe0,3,
-0x2dbff0,2,
-0x2dc008,2,
-0x2dc014,11,
-0x2dc044,1,
-0x2dc04c,3,
-0x2dc05c,1,
-0x2dc064,1,
-0x2dc07c,1,
-0x2dc500,2,
-0x2dc518,1,
-0x2dc520,3,
-0x2dc540,6,
-0x2dc580,10,
-0x2dc808,2,
-0x2dc814,11,
-0x2dc844,1,
-0x2dc84c,3,
-0x2dc85c,1,
-0x2dc864,1,
-0x2dc87c,1,
-0x2dcd00,2,
-0x2dcd18,1,
-0x2dcd20,3,
-0x2dcd40,6,
-0x2dcd80,10,
-0x2dd800,2,
-0x2dd828,2,
-0x2dd850,2,
-0x2dd878,2,
-0x2dd8a0,6,
-0x2dd9ac,1,
-0x2dd9d8,4,
-0x2dda00,6,
-0x2dda20,6,
-0x2dda40,6,
-0x2dda60,6,
-0x2dda80,3,
-0x2ddc00,6,
-0x2ddc20,3,
-0x2ddc40,2,
-0x2ddc60,1,
-0x2e0000,5,
-0x2e0020,4,
-0x2e0034,17,
-0x2e0080,1,
-0x2e00a0,6,
-0x2e0100,5,
-0x2e0120,4,
-0x2e0134,17,
-0x2e0180,1,
-0x2e01a0,6,
-0x2e0200,5,
-0x2e0220,4,
-0x2e0234,17,
-0x2e0280,1,
-0x2e02a0,6,
-0x2e0300,5,
-0x2e0320,4,
-0x2e0334,17,
-0x2e0380,1,
-0x2e03a0,6,
-0x2e0500,6,
-0x2e051c,7,
-0x2e0540,1,
-0x2e0c00,13,
-0x2e0c40,12,
-0x2e0c80,13,
-0x2e0cc0,12,
-0x2e0d00,6,
-0x2e0d20,6,
-0x2e0d80,14,
-0x2e0dc0,2,
-0x2e0e40,11,
-0x2e0e80,6,
-0x2e0ea0,6,
-0x2e1000,2,
-0x2e1010,5,
-0x2e1060,32,
-0x2e1100,8,
-0x2e1180,3,
-0x2e1190,2,
-0x2e119c,5,
-0x2e1218,9,
-0x2e1240,3,
-0x2e1250,6,
-0x2e1280,1,
-0x2e1288,6,
-0x2e12a4,1,
-0x2e1400,8,
-0x2e1424,2,
-0x2e1500,5,
-0x2e1520,4,
-0x2e1540,5,
-0x2e1560,4,
-0x2e1800,24,
-0x2e1864,5,
-0x2e1880,8,
-0x2e1900,13,
-0x2e1980,4,
-0x2e19a0,6,
-0x2e1a40,1,
-0x2e1a60,1,
-0x2e1a68,23,
-0x2e1ac8,6,
-0x2e1b00,17,
-0x2e1b48,6,
-0x2e1b80,12,
-0x2e1c00,6,
-0x2e1c20,6,
-0x2e1c40,6,
-0x2e1c60,3,
-0x2e1d00,6,
-0x2e1d20,6,
-0x2e1d40,3,
-0x2e2000,5,
-0x2e2020,4,
-0x2e2034,17,
-0x2e2080,1,
-0x2e20a0,6,
-0x2e2100,5,
-0x2e2120,4,
-0x2e2134,17,
-0x2e2180,1,
-0x2e21a0,6,
-0x2e2200,5,
-0x2e2220,4,
-0x2e2234,17,
-0x2e2280,1,
-0x2e22a0,6,
-0x2e2300,5,
-0x2e2320,4,
-0x2e2334,17,
-0x2e2380,1,
-0x2e23a0,6,
-0x2e2500,6,
-0x2e251c,7,
-0x2e2540,1,
-0x2e2c00,13,
-0x2e2c40,12,
-0x2e2c80,13,
-0x2e2cc0,12,
-0x2e2d00,6,
-0x2e2d20,6,
-0x2e2d80,14,
-0x2e2dc0,2,
-0x2e2e40,11,
-0x2e2e80,6,
-0x2e2ea0,6,
-0x2e3000,2,
-0x2e3010,5,
-0x2e3060,32,
-0x2e3100,8,
-0x2e3180,3,
-0x2e3190,2,
-0x2e319c,5,
-0x2e3218,9,
-0x2e3240,3,
-0x2e3250,6,
-0x2e3280,1,
-0x2e3288,6,
-0x2e32a4,1,
-0x2e3400,8,
-0x2e3424,2,
-0x2e3500,5,
-0x2e3520,4,
-0x2e3540,5,
-0x2e3560,4,
-0x2e3800,24,
-0x2e3864,5,
-0x2e3880,8,
-0x2e3900,13,
-0x2e3980,4,
-0x2e39a0,6,
-0x2e3a40,1,
-0x2e3a60,1,
-0x2e3a68,23,
-0x2e3ac8,6,
-0x2e3b00,17,
-0x2e3b48,6,
-0x2e3b80,12,
-0x2e3c00,6,
-0x2e3c20,6,
-0x2e3c40,6,
-0x2e3c60,3,
-0x2e3d00,6,
-0x2e3d20,6,
-0x2e3d40,3,
-0x2e4000,29,
-0x2e4078,4,
-0x2e4090,2,
-0x2e40a0,7,
-0x2e40c0,11,
-0x2e4100,14,
-0x2e4140,14,
-0x2e4180,61,
-0x2e4278,4,
-0x2e4290,2,
-0x2e42a0,7,
-0x2e42c0,11,
-0x2e4300,14,
-0x2e4340,14,
-0x2e4380,61,
-0x2e4478,4,
-0x2e4490,2,
-0x2e44a0,7,
-0x2e44c0,11,
-0x2e4500,14,
-0x2e4540,14,
-0x2e4580,61,
-0x2e4678,4,
-0x2e4690,2,
-0x2e46a0,7,
-0x2e46c0,11,
-0x2e4700,14,
-0x2e4740,14,
-0x2e4780,67,
-0x2e4890,1,
-0x2e4a00,8,
-0x2e4a24,15,
-0x2e4a64,30,
-0x2e4b00,4,
-0x2e4b20,2,
-0x2e4c00,6,
-0x2e4c40,14,
-0x2e4c80,9,
-0x2e4d00,9,
-0x2e4d2c,1,
-0x2e4d40,3,
-0x2e4d60,1,
-0x2e4d80,3,
-0x2e4e00,2,
-0x2e4e0c,1,
-0x2e4e14,5,
-0x2e4e2c,1,
-0x2e4e34,5,
-0x2e4e4c,1,
-0x2e4e54,5,
-0x2e4e6c,1,
-0x2e4e74,5,
-0x2e4e8c,1,
-0x2e4e94,5,
-0x2e4eac,1,
-0x2e4eb4,3,
-0x2e5000,29,
-0x2e5078,4,
-0x2e5090,2,
-0x2e50a0,7,
-0x2e50c0,11,
-0x2e5100,14,
-0x2e5140,14,
-0x2e5180,61,
-0x2e5278,4,
-0x2e5290,2,
-0x2e52a0,7,
-0x2e52c0,11,
-0x2e5300,14,
-0x2e5340,14,
-0x2e5380,61,
-0x2e5478,4,
-0x2e5490,2,
-0x2e54a0,7,
-0x2e54c0,11,
-0x2e5500,14,
-0x2e5540,14,
-0x2e5580,61,
-0x2e5678,4,
-0x2e5690,2,
-0x2e56a0,7,
-0x2e56c0,11,
-0x2e5700,14,
-0x2e5740,14,
-0x2e5780,67,
-0x2e5890,1,
-0x2e5a00,8,
-0x2e5a24,15,
-0x2e5a64,30,
-0x2e5b00,4,
-0x2e5b20,2,
-0x2e5c00,6,
-0x2e5c40,14,
-0x2e5c80,9,
-0x2e5d00,9,
-0x2e5d2c,1,
-0x2e5d40,3,
-0x2e5d60,1,
-0x2e5d80,3,
-0x2e5e00,2,
-0x2e5e0c,1,
-0x2e5e14,5,
-0x2e5e2c,1,
-0x2e5e34,5,
-0x2e5e4c,1,
-0x2e5e54,5,
-0x2e5e6c,1,
-0x2e5e74,5,
-0x2e5e8c,1,
-0x2e5e94,5,
-0x2e5eac,1,
-0x2e5eb4,3,
-0x2e6000,14,
-0x2e6070,3,
-0x2e6080,6,
-0x2e6100,9,
-0x2e6204,1,
-0x2e620c,6,
-0x2e6240,13,
-0x2e6280,16,
-0x2e6800,19,
-0x2e6850,10,
-0x2e6880,19,
-0x2e68d0,10,
-0x2e6900,19,
-0x2e6950,10,
-0x2e6980,19,
-0x2e69d0,10,
-0x2e6a00,19,
-0x2e6a50,10,
-0x2e6a80,19,
-0x2e6ad0,10,
-0x2e6b00,19,
-0x2e6b50,10,
-0x2e6b80,19,
-0x2e6bd0,10,
-0x2e6c00,19,
-0x2e6c60,6,
-0x2e6c84,1,
-0x2e6c94,8,
-0x2e6cb8,9,
-0x2e6ce0,4,
-0x2e7000,6,
-0x2e7020,3,
-0x2e7040,7,
-0x2e7060,6,
-0x2e7100,5,
-0x2e7138,1,
-0x2e7144,1,
-0x2e7150,2,
-0x2e8000,6,
-0x2e8020,3,
-0x2e8030,9,
-0x2e8100,6,
-0x2e8120,10,
-0x2e8150,8,
-0x2e8400,1,
-0x2e8428,1,
-0x2e8450,1,
-0x2e8478,1,
-0x2e84a0,8,
-0x2e85ac,1,
-0x2e85d8,4,
-0x2e8600,6,
-0x2e8620,6,
-0x2e8640,3,
-0x2e8800,6,
-0x2e8820,3,
-0x2e8830,4,
-0x2e8858,2,
-0x2e8864,1,
-0x2e8874,3,
-0x2e8898,2,
-0x2e88a4,1,
-0x2e88b4,3,
-0x2e9000,6,
-0x2e9020,6,
-0x2e9040,3,
-0x2e9080,14,
-0x2e90bc,1,
-0x2e90c4,13,
-0x2e90fc,1,
-0x2e9200,20,
-0x2e925c,30,
-0x2e9300,24,
-0x2e9380,2,
-0x2e93a0,1,
-0x2e93c0,11,
-0x2e9404,3,
-0x2e9420,11,
-0x2e9460,3,
-0x2e9480,6,
-0x2e9500,6,
-0x2e9520,6,
-0x2e9540,1,
-0x2e9558,2,
-0x2e9600,17,
-0x2e9800,410,
-0x2ea000,6,
-0x2ea020,6,
-0x2ea040,3,
-0x2ea080,14,
-0x2ea0bc,1,
-0x2ea0c4,13,
-0x2ea0fc,1,
-0x2ea200,20,
-0x2ea25c,30,
-0x2ea300,24,
-0x2ea380,2,
-0x2ea3a0,1,
-0x2ea3c0,11,
-0x2ea404,3,
-0x2ea420,11,
-0x2ea460,3,
-0x2ea480,6,
-0x2ea500,6,
-0x2ea520,6,
-0x2ea540,1,
-0x2ea558,2,
-0x2ea600,17,
-0x2ea800,410,
-0x2eb000,4,
-0x2eb020,25,
-0x2eb088,8,
-0x2eb100,4,
-0x2eb120,25,
-0x2eb188,8,
-0x2eb200,34,
-0x2eb300,37,
-0x2eb400,16,
-0x2eb464,1,
-0x2eb474,3,
-0x2eb500,6,
-0x2eb520,2,
-0x2eb530,9,
-0x2eb570,10,
-0x2eb5a0,2,
-0x2eb5b0,9,
-0x2eb5f0,4,
-0x2eb620,7,
-0x2eb640,16,
-0x2eb700,6,
-0x2eb720,6,
-0x2eb740,6,
-0x2eb760,6,
-0x2eb780,3,
-0x2eb800,5,
-0x2eb818,1,
-0x2eb854,6,
-0x2eb880,2,
-0x2eb8a4,1,
-0x2eb8ac,2,
-0x2eba00,28,
-0x2eba7c,13,
-0x2ebab4,1,
-0x2ebabc,10,
-0x2ebb04,1,
-0x2ebb0c,5,
-0x2ebb24,1,
-0x2ebb34,9,
-0x2ebb60,6,
-0x2ebb80,22,
-0x2ebbe0,3,
-0x2ebbf0,2,
-0x2ebc00,5,
-0x2ebc18,1,
-0x2ebc54,6,
-0x2ebc80,2,
-0x2ebca4,1,
-0x2ebcac,2,
-0x2ebe00,28,
-0x2ebe7c,13,
-0x2ebeb4,1,
-0x2ebebc,10,
-0x2ebf04,1,
-0x2ebf0c,5,
-0x2ebf24,1,
-0x2ebf34,9,
-0x2ebf60,6,
-0x2ebf80,22,
-0x2ebfe0,3,
-0x2ebff0,2,
-0x2ec008,2,
-0x2ec014,11,
-0x2ec044,1,
-0x2ec04c,3,
-0x2ec05c,1,
-0x2ec064,1,
-0x2ec07c,1,
-0x2ec500,2,
-0x2ec518,1,
-0x2ec520,3,
-0x2ec540,6,
-0x2ec580,10,
-0x2ec808,2,
-0x2ec814,11,
-0x2ec844,1,
-0x2ec84c,3,
-0x2ec85c,1,
-0x2ec864,1,
-0x2ec87c,1,
-0x2ecd00,2,
-0x2ecd18,1,
-0x2ecd20,3,
-0x2ecd40,6,
-0x2ecd80,10,
-0x2ed800,2,
-0x2ed828,2,
-0x2ed850,2,
-0x2ed878,2,
-0x2ed8a0,6,
-0x2ed9ac,1,
-0x2ed9d8,4,
-0x2eda00,6,
-0x2eda20,6,
-0x2eda40,6,
-0x2eda60,6,
-0x2eda80,3,
-0x2edc00,6,
-0x2edc20,3,
-0x2edc40,2,
-0x2edc60,1,
-0x2f0000,5,
-0x2f0020,4,
-0x2f0034,17,
-0x2f0080,1,
-0x2f00a0,6,
-0x2f0100,5,
-0x2f0120,4,
-0x2f0134,17,
-0x2f0180,1,
-0x2f01a0,6,
-0x2f0200,5,
-0x2f0220,4,
-0x2f0234,17,
-0x2f0280,1,
-0x2f02a0,6,
-0x2f0300,5,
-0x2f0320,4,
-0x2f0334,17,
-0x2f0380,1,
-0x2f03a0,6,
-0x2f0500,6,
-0x2f051c,7,
-0x2f0540,1,
-0x2f0c00,13,
-0x2f0c40,12,
-0x2f0c80,13,
-0x2f0cc0,12,
-0x2f0d00,6,
-0x2f0d20,6,
-0x2f0d80,14,
-0x2f0dc0,2,
-0x2f0e40,11,
-0x2f0e80,6,
-0x2f0ea0,6,
-0x2f1000,2,
-0x2f1010,5,
-0x2f1060,32,
-0x2f1100,8,
-0x2f1180,3,
-0x2f1190,2,
-0x2f119c,5,
-0x2f1218,9,
-0x2f1240,3,
-0x2f1250,6,
-0x2f1280,1,
-0x2f1288,6,
-0x2f12a4,1,
-0x2f1400,8,
-0x2f1424,2,
-0x2f1500,5,
-0x2f1520,4,
-0x2f1540,5,
-0x2f1560,4,
-0x2f1800,24,
-0x2f1864,5,
-0x2f1880,8,
-0x2f1900,13,
-0x2f1980,4,
-0x2f19a0,6,
-0x2f1a40,1,
-0x2f1a60,1,
-0x2f1a68,23,
-0x2f1ac8,6,
-0x2f1b00,17,
-0x2f1b48,6,
-0x2f1b80,12,
-0x2f1c00,6,
-0x2f1c20,6,
-0x2f1c40,6,
-0x2f1c60,3,
-0x2f1d00,6,
-0x2f1d20,6,
-0x2f1d40,3,
-0x2f2000,5,
-0x2f2020,4,
-0x2f2034,17,
-0x2f2080,1,
-0x2f20a0,6,
-0x2f2100,5,
-0x2f2120,4,
-0x2f2134,17,
-0x2f2180,1,
-0x2f21a0,6,
-0x2f2200,5,
-0x2f2220,4,
-0x2f2234,17,
-0x2f2280,1,
-0x2f22a0,6,
-0x2f2300,5,
-0x2f2320,4,
-0x2f2334,17,
-0x2f2380,1,
-0x2f23a0,6,
-0x2f2500,6,
-0x2f251c,7,
-0x2f2540,1,
-0x2f2c00,13,
-0x2f2c40,12,
-0x2f2c80,13,
-0x2f2cc0,12,
-0x2f2d00,6,
-0x2f2d20,6,
-0x2f2d80,14,
-0x2f2dc0,2,
-0x2f2e40,11,
-0x2f2e80,6,
-0x2f2ea0,6,
-0x2f3000,2,
-0x2f3010,5,
-0x2f3060,32,
-0x2f3100,8,
-0x2f3180,3,
-0x2f3190,2,
-0x2f319c,5,
-0x2f3218,9,
-0x2f3240,3,
-0x2f3250,6,
-0x2f3280,1,
-0x2f3288,6,
-0x2f32a4,1,
-0x2f3400,8,
-0x2f3424,2,
-0x2f3500,5,
-0x2f3520,4,
-0x2f3540,5,
-0x2f3560,4,
-0x2f3800,24,
-0x2f3864,5,
-0x2f3880,8,
-0x2f3900,13,
-0x2f3980,4,
-0x2f39a0,6,
-0x2f3a40,1,
-0x2f3a60,1,
-0x2f3a68,23,
-0x2f3ac8,6,
-0x2f3b00,17,
-0x2f3b48,6,
-0x2f3b80,12,
-0x2f3c00,6,
-0x2f3c20,6,
-0x2f3c40,6,
-0x2f3c60,3,
-0x2f3d00,6,
-0x2f3d20,6,
-0x2f3d40,3,
-0x2f4000,29,
-0x2f4078,4,
-0x2f4090,2,
-0x2f40a0,7,
-0x2f40c0,11,
-0x2f4100,14,
-0x2f4140,14,
-0x2f4180,61,
-0x2f4278,4,
-0x2f4290,2,
-0x2f42a0,7,
-0x2f42c0,11,
-0x2f4300,14,
-0x2f4340,14,
-0x2f4380,61,
-0x2f4478,4,
-0x2f4490,2,
-0x2f44a0,7,
-0x2f44c0,11,
-0x2f4500,14,
-0x2f4540,14,
-0x2f4580,61,
-0x2f4678,4,
-0x2f4690,2,
-0x2f46a0,7,
-0x2f46c0,11,
-0x2f4700,14,
-0x2f4740,14,
-0x2f4780,67,
-0x2f4890,1,
-0x2f4a00,8,
-0x2f4a24,15,
-0x2f4a64,30,
-0x2f4b00,4,
-0x2f4b20,2,
-0x2f4c00,6,
-0x2f4c40,14,
-0x2f4c80,9,
-0x2f4d00,9,
-0x2f4d2c,1,
-0x2f4d40,3,
-0x2f4d60,1,
-0x2f4d80,3,
-0x2f4e00,2,
-0x2f4e0c,1,
-0x2f4e14,5,
-0x2f4e2c,1,
-0x2f4e34,5,
-0x2f4e4c,1,
-0x2f4e54,5,
-0x2f4e6c,1,
-0x2f4e74,5,
-0x2f4e8c,1,
-0x2f4e94,5,
-0x2f4eac,1,
-0x2f4eb4,3,
-0x2f5000,29,
-0x2f5078,4,
-0x2f5090,2,
-0x2f50a0,7,
-0x2f50c0,11,
-0x2f5100,14,
-0x2f5140,14,
-0x2f5180,61,
-0x2f5278,4,
-0x2f5290,2,
-0x2f52a0,7,
-0x2f52c0,11,
-0x2f5300,14,
-0x2f5340,14,
-0x2f5380,61,
-0x2f5478,4,
-0x2f5490,2,
-0x2f54a0,7,
-0x2f54c0,11,
-0x2f5500,14,
-0x2f5540,14,
-0x2f5580,61,
-0x2f5678,4,
-0x2f5690,2,
-0x2f56a0,7,
-0x2f56c0,11,
-0x2f5700,14,
-0x2f5740,14,
-0x2f5780,67,
-0x2f5890,1,
-0x2f5a00,8,
-0x2f5a24,15,
-0x2f5a64,30,
-0x2f5b00,4,
-0x2f5b20,2,
-0x2f5c00,6,
-0x2f5c40,14,
-0x2f5c80,9,
-0x2f5d00,9,
-0x2f5d2c,1,
-0x2f5d40,3,
-0x2f5d60,1,
-0x2f5d80,3,
-0x2f5e00,2,
-0x2f5e0c,1,
-0x2f5e14,5,
-0x2f5e2c,1,
-0x2f5e34,5,
-0x2f5e4c,1,
-0x2f5e54,5,
-0x2f5e6c,1,
-0x2f5e74,5,
-0x2f5e8c,1,
-0x2f5e94,5,
-0x2f5eac,1,
-0x2f5eb4,3,
-0x2f6000,14,
-0x2f6070,3,
-0x2f6080,6,
-0x2f6100,9,
-0x2f6204,1,
-0x2f620c,6,
-0x2f6240,13,
-0x2f6280,16,
-0x2f6800,19,
-0x2f6850,10,
-0x2f6880,19,
-0x2f68d0,10,
-0x2f6900,19,
-0x2f6950,10,
-0x2f6980,19,
-0x2f69d0,10,
-0x2f6a00,19,
-0x2f6a50,10,
-0x2f6a80,19,
-0x2f6ad0,10,
-0x2f6b00,19,
-0x2f6b50,10,
-0x2f6b80,19,
-0x2f6bd0,10,
-0x2f6c00,19,
-0x2f6c60,6,
-0x2f6c84,1,
-0x2f6c94,8,
-0x2f6cb8,9,
-0x2f6ce0,4,
-0x2f7000,6,
-0x2f7020,3,
-0x2f7040,7,
-0x2f7060,6,
-0x2f7100,5,
-0x2f7138,1,
-0x2f7144,1,
-0x2f7150,2,
-0x2f8000,6,
-0x2f8020,3,
-0x2f8030,9,
-0x2f8100,6,
-0x2f8120,10,
-0x2f8150,8,
-0x2f8400,1,
-0x2f8428,1,
-0x2f8450,1,
-0x2f8478,1,
-0x2f84a0,8,
-0x2f85ac,1,
-0x2f85d8,4,
-0x2f8600,6,
-0x2f8620,6,
-0x2f8640,3,
-0x2f8800,6,
-0x2f8820,3,
-0x2f8830,4,
-0x2f8858,2,
-0x2f8864,1,
-0x2f8874,3,
-0x2f8898,2,
-0x2f88a4,1,
-0x2f88b4,3,
-0x2f9000,6,
-0x2f9020,6,
-0x2f9040,3,
-0x2f9080,14,
-0x2f90bc,1,
-0x2f90c4,13,
-0x2f90fc,1,
-0x2f9200,20,
-0x2f925c,30,
-0x2f9300,24,
-0x2f9380,2,
-0x2f93a0,1,
-0x2f93c0,11,
-0x2f9404,3,
-0x2f9420,11,
-0x2f9460,3,
-0x2f9480,6,
-0x2f9500,6,
-0x2f9520,6,
-0x2f9540,1,
-0x2f9558,2,
-0x2f9600,17,
-0x2f9800,410,
-0x2fa000,6,
-0x2fa020,6,
-0x2fa040,3,
-0x2fa080,14,
-0x2fa0bc,1,
-0x2fa0c4,13,
-0x2fa0fc,1,
-0x2fa200,20,
-0x2fa25c,30,
-0x2fa300,24,
-0x2fa380,2,
-0x2fa3a0,1,
-0x2fa3c0,11,
-0x2fa404,3,
-0x2fa420,11,
-0x2fa460,3,
-0x2fa480,6,
-0x2fa500,6,
-0x2fa520,6,
-0x2fa540,1,
-0x2fa558,2,
-0x2fa600,17,
-0x2fa800,410,
-0x2fb000,4,
-0x2fb020,25,
-0x2fb088,8,
-0x2fb100,4,
-0x2fb120,25,
-0x2fb188,8,
-0x2fb200,34,
-0x2fb300,37,
-0x2fb400,16,
-0x2fb464,1,
-0x2fb474,3,
-0x2fb500,6,
-0x2fb520,2,
-0x2fb530,9,
-0x2fb570,10,
-0x2fb5a0,2,
-0x2fb5b0,9,
-0x2fb5f0,4,
-0x2fb620,7,
-0x2fb640,16,
-0x2fb700,6,
-0x2fb720,6,
-0x2fb740,6,
-0x2fb760,6,
-0x2fb780,3,
-0x2fb800,5,
-0x2fb818,1,
-0x2fb854,6,
-0x2fb880,2,
-0x2fb8a4,1,
-0x2fb8ac,2,
-0x2fba00,28,
-0x2fba7c,13,
-0x2fbab4,1,
-0x2fbabc,10,
-0x2fbb04,1,
-0x2fbb0c,5,
-0x2fbb24,1,
-0x2fbb34,9,
-0x2fbb60,6,
-0x2fbb80,22,
-0x2fbbe0,3,
-0x2fbbf0,2,
-0x2fbc00,5,
-0x2fbc18,1,
-0x2fbc54,6,
-0x2fbc80,2,
-0x2fbca4,1,
-0x2fbcac,2,
-0x2fbe00,28,
-0x2fbe7c,13,
-0x2fbeb4,1,
-0x2fbebc,10,
-0x2fbf04,1,
-0x2fbf0c,5,
-0x2fbf24,1,
-0x2fbf34,9,
-0x2fbf60,6,
-0x2fbf80,22,
-0x2fbfe0,3,
-0x2fbff0,2,
-0x2fc008,2,
-0x2fc014,11,
-0x2fc044,1,
-0x2fc04c,3,
-0x2fc05c,1,
-0x2fc064,1,
-0x2fc07c,1,
-0x2fc500,2,
-0x2fc518,1,
-0x2fc520,3,
-0x2fc540,6,
-0x2fc580,10,
-0x2fc808,2,
-0x2fc814,11,
-0x2fc844,1,
-0x2fc84c,3,
-0x2fc85c,1,
-0x2fc864,1,
-0x2fc87c,1,
-0x2fcd00,2,
-0x2fcd18,1,
-0x2fcd20,3,
-0x2fcd40,6,
-0x2fcd80,10,
-0x2fd800,2,
-0x2fd828,2,
-0x2fd850,2,
-0x2fd878,2,
-0x2fd8a0,6,
-0x2fd9ac,1,
-0x2fd9d8,4,
-0x2fda00,6,
-0x2fda20,6,
-0x2fda40,6,
-0x2fda60,6,
-0x2fda80,3,
-0x2fdc00,6,
-0x2fdc20,3,
-0x2fdc40,2,
-0x2fdc60,1,
-0x300000,5,
-0x300020,4,
-0x300034,17,
-0x300080,1,
-0x3000a0,6,
-0x300100,5,
-0x300120,4,
-0x300134,17,
-0x300180,1,
-0x3001a0,6,
-0x300200,5,
-0x300220,4,
-0x300234,17,
-0x300280,1,
-0x3002a0,6,
-0x300300,5,
-0x300320,4,
-0x300334,17,
-0x300380,1,
-0x3003a0,6,
-0x300500,6,
-0x30051c,7,
-0x300540,1,
-0x300c00,13,
-0x300c40,12,
-0x300c80,13,
-0x300cc0,12,
-0x300d00,6,
-0x300d20,6,
-0x300d80,14,
-0x300dc0,2,
-0x300e40,11,
-0x300e80,6,
-0x300ea0,6,
-0x301000,2,
-0x301010,5,
-0x301060,32,
-0x301100,8,
-0x301180,3,
-0x301190,2,
-0x30119c,5,
-0x301218,9,
-0x301240,3,
-0x301250,6,
-0x301280,1,
-0x301288,6,
-0x3012a4,1,
-0x301400,8,
-0x301424,2,
-0x301500,5,
-0x301520,4,
-0x301540,5,
-0x301560,4,
-0x301800,24,
-0x301864,5,
-0x301880,8,
-0x301900,13,
-0x301980,4,
-0x3019a0,6,
-0x301a40,1,
-0x301a60,1,
-0x301a68,23,
-0x301ac8,6,
-0x301b00,17,
-0x301b48,6,
-0x301b80,12,
-0x301c00,6,
-0x301c20,6,
-0x301c40,6,
-0x301c60,3,
-0x301d00,6,
-0x301d20,6,
-0x301d40,3,
-0x302000,5,
-0x302020,4,
-0x302034,17,
-0x302080,1,
-0x3020a0,6,
-0x302100,5,
-0x302120,4,
-0x302134,17,
-0x302180,1,
-0x3021a0,6,
-0x302200,5,
-0x302220,4,
-0x302234,17,
-0x302280,1,
-0x3022a0,6,
-0x302300,5,
-0x302320,4,
-0x302334,17,
-0x302380,1,
-0x3023a0,6,
-0x302500,6,
-0x30251c,7,
-0x302540,1,
-0x302c00,13,
-0x302c40,12,
-0x302c80,13,
-0x302cc0,12,
-0x302d00,6,
-0x302d20,6,
-0x302d80,14,
-0x302dc0,2,
-0x302e40,11,
-0x302e80,6,
-0x302ea0,6,
-0x303000,2,
-0x303010,5,
-0x303060,32,
-0x303100,8,
-0x303180,3,
-0x303190,2,
-0x30319c,5,
-0x303218,9,
-0x303240,3,
-0x303250,6,
-0x303280,1,
-0x303288,6,
-0x3032a4,1,
-0x303400,8,
-0x303424,2,
-0x303500,5,
-0x303520,4,
-0x303540,5,
-0x303560,4,
-0x303800,24,
-0x303864,5,
-0x303880,8,
-0x303900,13,
-0x303980,4,
-0x3039a0,6,
-0x303a40,1,
-0x303a60,1,
-0x303a68,23,
-0x303ac8,6,
-0x303b00,17,
-0x303b48,6,
-0x303b80,12,
-0x303c00,6,
-0x303c20,6,
-0x303c40,6,
-0x303c60,3,
-0x303d00,6,
-0x303d20,6,
-0x303d40,3,
-0x304000,29,
-0x304078,4,
-0x304090,2,
-0x3040a0,7,
-0x3040c0,11,
-0x304100,14,
-0x304140,14,
-0x304180,61,
-0x304278,4,
-0x304290,2,
-0x3042a0,7,
-0x3042c0,11,
-0x304300,14,
-0x304340,14,
-0x304380,61,
-0x304478,4,
-0x304490,2,
-0x3044a0,7,
-0x3044c0,11,
-0x304500,14,
-0x304540,14,
-0x304580,61,
-0x304678,4,
-0x304690,2,
-0x3046a0,7,
-0x3046c0,11,
-0x304700,14,
-0x304740,14,
-0x304780,67,
-0x304890,1,
-0x304a00,8,
-0x304a24,15,
-0x304a64,30,
-0x304b00,4,
-0x304b20,2,
-0x304c00,6,
-0x304c40,14,
-0x304c80,9,
-0x304d00,9,
-0x304d2c,1,
-0x304d40,3,
-0x304d60,1,
-0x304d80,3,
-0x304e00,2,
-0x304e0c,1,
-0x304e14,5,
-0x304e2c,1,
-0x304e34,5,
-0x304e4c,1,
-0x304e54,5,
-0x304e6c,1,
-0x304e74,5,
-0x304e8c,1,
-0x304e94,5,
-0x304eac,1,
-0x304eb4,3,
-0x305000,29,
-0x305078,4,
-0x305090,2,
-0x3050a0,7,
-0x3050c0,11,
-0x305100,14,
-0x305140,14,
-0x305180,61,
-0x305278,4,
-0x305290,2,
-0x3052a0,7,
-0x3052c0,11,
-0x305300,14,
-0x305340,14,
-0x305380,61,
-0x305478,4,
-0x305490,2,
-0x3054a0,7,
-0x3054c0,11,
-0x305500,14,
-0x305540,14,
-0x305580,61,
-0x305678,4,
-0x305690,2,
-0x3056a0,7,
-0x3056c0,11,
-0x305700,14,
-0x305740,14,
-0x305780,67,
-0x305890,1,
-0x305a00,8,
-0x305a24,15,
-0x305a64,30,
-0x305b00,4,
-0x305b20,2,
-0x305c00,6,
-0x305c40,14,
-0x305c80,9,
-0x305d00,9,
-0x305d2c,1,
-0x305d40,3,
-0x305d60,1,
-0x305d80,3,
-0x305e00,2,
-0x305e0c,1,
-0x305e14,5,
-0x305e2c,1,
-0x305e34,5,
-0x305e4c,1,
-0x305e54,5,
-0x305e6c,1,
-0x305e74,5,
-0x305e8c,1,
-0x305e94,5,
-0x305eac,1,
-0x305eb4,3,
-0x306000,14,
-0x306070,3,
-0x306080,6,
-0x306100,9,
-0x306204,1,
-0x30620c,6,
-0x306240,13,
-0x306280,16,
-0x306800,19,
-0x306850,10,
-0x306880,19,
-0x3068d0,10,
-0x306900,19,
-0x306950,10,
-0x306980,19,
-0x3069d0,10,
-0x306a00,19,
-0x306a50,10,
-0x306a80,19,
-0x306ad0,10,
-0x306b00,19,
-0x306b50,10,
-0x306b80,19,
-0x306bd0,10,
-0x306c00,19,
-0x306c60,6,
-0x306c84,1,
-0x306c94,8,
-0x306cb8,9,
-0x306ce0,4,
-0x307000,6,
-0x307020,3,
-0x307040,7,
-0x307060,6,
-0x307100,5,
-0x307138,1,
-0x307144,1,
-0x307150,2,
-0x308000,6,
-0x308020,3,
-0x308030,9,
-0x308100,6,
-0x308120,10,
-0x308150,8,
-0x308400,1,
-0x308428,1,
-0x308450,1,
-0x308478,1,
-0x3084a0,8,
-0x3085ac,1,
-0x3085d8,4,
-0x308600,6,
-0x308620,6,
-0x308640,3,
-0x308800,6,
-0x308820,3,
-0x308830,4,
-0x308858,2,
-0x308864,1,
-0x308874,3,
-0x308898,2,
-0x3088a4,1,
-0x3088b4,3,
-0x309000,6,
-0x309020,6,
-0x309040,3,
-0x309080,14,
-0x3090bc,1,
-0x3090c4,13,
-0x3090fc,1,
-0x309200,20,
-0x30925c,30,
-0x309300,24,
-0x309380,2,
-0x3093a0,1,
-0x3093c0,11,
-0x309404,3,
-0x309420,11,
-0x309460,3,
-0x309480,6,
-0x309500,6,
-0x309520,6,
-0x309540,1,
-0x309558,2,
-0x309600,17,
-0x309800,410,
-0x30a000,6,
-0x30a020,6,
-0x30a040,3,
-0x30a080,14,
-0x30a0bc,1,
-0x30a0c4,13,
-0x30a0fc,1,
-0x30a200,20,
-0x30a25c,30,
-0x30a300,24,
-0x30a380,2,
-0x30a3a0,1,
-0x30a3c0,11,
-0x30a404,3,
-0x30a420,11,
-0x30a460,3,
-0x30a480,6,
-0x30a500,6,
-0x30a520,6,
-0x30a540,1,
-0x30a558,2,
-0x30a600,17,
-0x30a800,410,
-0x30b000,4,
-0x30b020,25,
-0x30b088,8,
-0x30b100,4,
-0x30b120,25,
-0x30b188,8,
-0x30b200,34,
-0x30b300,37,
-0x30b400,16,
-0x30b464,1,
-0x30b474,3,
-0x30b500,6,
-0x30b520,2,
-0x30b530,9,
-0x30b570,10,
-0x30b5a0,2,
-0x30b5b0,9,
-0x30b5f0,4,
-0x30b620,7,
-0x30b640,16,
-0x30b700,6,
-0x30b720,6,
-0x30b740,6,
-0x30b760,6,
-0x30b780,3,
-0x30b800,5,
-0x30b818,1,
-0x30b854,6,
-0x30b880,2,
-0x30b8a4,1,
-0x30b8ac,2,
-0x30ba00,28,
-0x30ba7c,13,
-0x30bab4,1,
-0x30babc,10,
-0x30bb04,1,
-0x30bb0c,5,
-0x30bb24,1,
-0x30bb34,9,
-0x30bb60,6,
-0x30bb80,22,
-0x30bbe0,3,
-0x30bbf0,2,
-0x30bc00,5,
-0x30bc18,1,
-0x30bc54,6,
-0x30bc80,2,
-0x30bca4,1,
-0x30bcac,2,
-0x30be00,28,
-0x30be7c,13,
-0x30beb4,1,
-0x30bebc,10,
-0x30bf04,1,
-0x30bf0c,5,
-0x30bf24,1,
-0x30bf34,9,
-0x30bf60,6,
-0x30bf80,22,
-0x30bfe0,3,
-0x30bff0,2,
-0x30c008,2,
-0x30c014,11,
-0x30c044,1,
-0x30c04c,3,
-0x30c05c,1,
-0x30c064,1,
-0x30c07c,1,
-0x30c500,2,
-0x30c518,1,
-0x30c520,3,
-0x30c540,6,
-0x30c580,10,
-0x30c808,2,
-0x30c814,11,
-0x30c844,1,
-0x30c84c,3,
-0x30c85c,1,
-0x30c864,1,
-0x30c87c,1,
-0x30cd00,2,
-0x30cd18,1,
-0x30cd20,3,
-0x30cd40,6,
-0x30cd80,10,
-0x30d800,2,
-0x30d828,2,
-0x30d850,2,
-0x30d878,2,
-0x30d8a0,6,
-0x30d9ac,1,
-0x30d9d8,4,
-0x30da00,6,
-0x30da20,6,
-0x30da40,6,
-0x30da60,6,
-0x30da80,3,
-0x30dc00,6,
-0x30dc20,3,
-0x30dc40,2,
-0x30dc60,1,
-0x310000,5,
-0x310020,4,
-0x310034,17,
-0x310080,1,
-0x3100a0,6,
-0x310100,5,
-0x310120,4,
-0x310134,17,
-0x310180,1,
-0x3101a0,6,
-0x310200,5,
-0x310220,4,
-0x310234,17,
-0x310280,1,
-0x3102a0,6,
-0x310300,5,
-0x310320,4,
-0x310334,17,
-0x310380,1,
-0x3103a0,6,
-0x310500,6,
-0x31051c,7,
-0x310540,1,
-0x310c00,13,
-0x310c40,12,
-0x310c80,13,
-0x310cc0,12,
-0x310d00,6,
-0x310d20,6,
-0x310d80,14,
-0x310dc0,2,
-0x310e40,11,
-0x310e80,6,
-0x310ea0,6,
-0x311000,2,
-0x311010,5,
-0x311060,32,
-0x311100,8,
-0x311180,3,
-0x311190,2,
-0x31119c,5,
-0x311218,9,
-0x311240,3,
-0x311250,6,
-0x311280,1,
-0x311288,6,
-0x3112a4,1,
-0x311400,8,
-0x311424,2,
-0x311500,5,
-0x311520,4,
-0x311540,5,
-0x311560,4,
-0x311800,24,
-0x311864,5,
-0x311880,8,
-0x311900,13,
-0x311980,4,
-0x3119a0,6,
-0x311a40,1,
-0x311a60,1,
-0x311a68,23,
-0x311ac8,6,
-0x311b00,17,
-0x311b48,6,
-0x311b80,12,
-0x311c00,6,
-0x311c20,6,
-0x311c40,6,
-0x311c60,3,
-0x311d00,6,
-0x311d20,6,
-0x311d40,3,
-0x312000,5,
-0x312020,4,
-0x312034,17,
-0x312080,1,
-0x3120a0,6,
-0x312100,5,
-0x312120,4,
-0x312134,17,
-0x312180,1,
-0x3121a0,6,
-0x312200,5,
-0x312220,4,
-0x312234,17,
-0x312280,1,
-0x3122a0,6,
-0x312300,5,
-0x312320,4,
-0x312334,17,
-0x312380,1,
-0x3123a0,6,
-0x312500,6,
-0x31251c,7,
-0x312540,1,
-0x312c00,13,
-0x312c40,12,
-0x312c80,13,
-0x312cc0,12,
-0x312d00,6,
-0x312d20,6,
-0x312d80,14,
-0x312dc0,2,
-0x312e40,11,
-0x312e80,6,
-0x312ea0,6,
-0x313000,2,
-0x313010,5,
-0x313060,32,
-0x313100,8,
-0x313180,3,
-0x313190,2,
-0x31319c,5,
-0x313218,9,
-0x313240,3,
-0x313250,6,
-0x313280,1,
-0x313288,6,
-0x3132a4,1,
-0x313400,8,
-0x313424,2,
-0x313500,5,
-0x313520,4,
-0x313540,5,
-0x313560,4,
-0x313800,24,
-0x313864,5,
-0x313880,8,
-0x313900,13,
-0x313980,4,
-0x3139a0,6,
-0x313a40,1,
-0x313a60,1,
-0x313a68,23,
-0x313ac8,6,
-0x313b00,17,
-0x313b48,6,
-0x313b80,12,
-0x313c00,6,
-0x313c20,6,
-0x313c40,6,
-0x313c60,3,
-0x313d00,6,
-0x313d20,6,
-0x313d40,3,
-0x314000,29,
-0x314078,4,
-0x314090,2,
-0x3140a0,7,
-0x3140c0,11,
-0x314100,14,
-0x314140,14,
-0x314180,61,
-0x314278,4,
-0x314290,2,
-0x3142a0,7,
-0x3142c0,11,
-0x314300,14,
-0x314340,14,
-0x314380,61,
-0x314478,4,
-0x314490,2,
-0x3144a0,7,
-0x3144c0,11,
-0x314500,14,
-0x314540,14,
-0x314580,61,
-0x314678,4,
-0x314690,2,
-0x3146a0,7,
-0x3146c0,11,
-0x314700,14,
-0x314740,14,
-0x314780,67,
-0x314890,1,
-0x314a00,8,
-0x314a24,15,
-0x314a64,30,
-0x314b00,4,
-0x314b20,2,
-0x314c00,6,
-0x314c40,14,
-0x314c80,9,
-0x314d00,9,
-0x314d2c,1,
-0x314d40,3,
-0x314d60,1,
-0x314d80,3,
-0x314e00,2,
-0x314e0c,1,
-0x314e14,5,
-0x314e2c,1,
-0x314e34,5,
-0x314e4c,1,
-0x314e54,5,
-0x314e6c,1,
-0x314e74,5,
-0x314e8c,1,
-0x314e94,5,
-0x314eac,1,
-0x314eb4,3,
-0x315000,29,
-0x315078,4,
-0x315090,2,
-0x3150a0,7,
-0x3150c0,11,
-0x315100,14,
-0x315140,14,
-0x315180,61,
-0x315278,4,
-0x315290,2,
-0x3152a0,7,
-0x3152c0,11,
-0x315300,14,
-0x315340,14,
-0x315380,61,
-0x315478,4,
-0x315490,2,
-0x3154a0,7,
-0x3154c0,11,
-0x315500,14,
-0x315540,14,
-0x315580,61,
-0x315678,4,
-0x315690,2,
-0x3156a0,7,
-0x3156c0,11,
-0x315700,14,
-0x315740,14,
-0x315780,67,
-0x315890,1,
-0x315a00,8,
-0x315a24,15,
-0x315a64,30,
-0x315b00,4,
-0x315b20,2,
-0x315c00,6,
-0x315c40,14,
-0x315c80,9,
-0x315d00,9,
-0x315d2c,1,
-0x315d40,3,
-0x315d60,1,
-0x315d80,3,
-0x315e00,2,
-0x315e0c,1,
-0x315e14,5,
-0x315e2c,1,
-0x315e34,5,
-0x315e4c,1,
-0x315e54,5,
-0x315e6c,1,
-0x315e74,5,
-0x315e8c,1,
-0x315e94,5,
-0x315eac,1,
-0x315eb4,3,
-0x316000,14,
-0x316070,3,
-0x316080,6,
-0x316100,9,
-0x316204,1,
-0x31620c,6,
-0x316240,13,
-0x316280,16,
-0x316800,19,
-0x316850,10,
-0x316880,19,
-0x3168d0,10,
-0x316900,19,
-0x316950,10,
-0x316980,19,
-0x3169d0,10,
-0x316a00,19,
-0x316a50,10,
-0x316a80,19,
-0x316ad0,10,
-0x316b00,19,
-0x316b50,10,
-0x316b80,19,
-0x316bd0,10,
-0x316c00,19,
-0x316c60,6,
-0x316c84,1,
-0x316c94,8,
-0x316cb8,9,
-0x316ce0,4,
-0x317000,6,
-0x317020,3,
-0x317040,7,
-0x317060,6,
-0x317100,5,
-0x317138,1,
-0x317144,1,
-0x317150,2,
-0x318000,6,
-0x318020,3,
-0x318030,9,
-0x318100,6,
-0x318120,10,
-0x318150,8,
-0x318400,1,
-0x318428,1,
-0x318450,1,
-0x318478,1,
-0x3184a0,8,
-0x3185ac,1,
-0x3185d8,4,
-0x318600,6,
-0x318620,6,
-0x318640,3,
-0x318800,6,
-0x318820,3,
-0x318830,4,
-0x318858,2,
-0x318864,1,
-0x318874,3,
-0x318898,2,
-0x3188a4,1,
-0x3188b4,3,
-0x319000,6,
-0x319020,6,
-0x319040,3,
-0x319080,14,
-0x3190bc,1,
-0x3190c4,13,
-0x3190fc,1,
-0x319200,20,
-0x31925c,30,
-0x319300,24,
-0x319380,2,
-0x3193a0,1,
-0x3193c0,11,
-0x319404,3,
-0x319420,11,
-0x319460,3,
-0x319480,6,
-0x319500,6,
-0x319520,6,
-0x319540,1,
-0x319558,2,
-0x319600,17,
-0x319800,410,
-0x31a000,6,
-0x31a020,6,
-0x31a040,3,
-0x31a080,14,
-0x31a0bc,1,
-0x31a0c4,13,
-0x31a0fc,1,
-0x31a200,20,
-0x31a25c,30,
-0x31a300,24,
-0x31a380,2,
-0x31a3a0,1,
-0x31a3c0,11,
-0x31a404,3,
-0x31a420,11,
-0x31a460,3,
-0x31a480,6,
-0x31a500,6,
-0x31a520,6,
-0x31a540,1,
-0x31a558,2,
-0x31a600,17,
-0x31a800,410,
-0x31b000,4,
-0x31b020,25,
-0x31b088,8,
-0x31b100,4,
-0x31b120,25,
-0x31b188,8,
-0x31b200,34,
-0x31b300,37,
-0x31b400,16,
-0x31b464,1,
-0x31b474,3,
-0x31b500,6,
-0x31b520,2,
-0x31b530,9,
-0x31b570,10,
-0x31b5a0,2,
-0x31b5b0,9,
-0x31b5f0,4,
-0x31b620,7,
-0x31b640,16,
-0x31b700,6,
-0x31b720,6,
-0x31b740,6,
-0x31b760,6,
-0x31b780,3,
-0x31b800,5,
-0x31b818,1,
-0x31b854,6,
-0x31b880,2,
-0x31b8a4,1,
-0x31b8ac,2,
-0x31ba00,28,
-0x31ba7c,13,
-0x31bab4,1,
-0x31babc,10,
-0x31bb04,1,
-0x31bb0c,5,
-0x31bb24,1,
-0x31bb34,9,
-0x31bb60,6,
-0x31bb80,22,
-0x31bbe0,3,
-0x31bbf0,2,
-0x31bc00,5,
-0x31bc18,1,
-0x31bc54,6,
-0x31bc80,2,
-0x31bca4,1,
-0x31bcac,2,
-0x31be00,28,
-0x31be7c,13,
-0x31beb4,1,
-0x31bebc,10,
-0x31bf04,1,
-0x31bf0c,5,
-0x31bf24,1,
-0x31bf34,9,
-0x31bf60,6,
-0x31bf80,22,
-0x31bfe0,3,
-0x31bff0,2,
-0x31c008,2,
-0x31c014,11,
-0x31c044,1,
-0x31c04c,3,
-0x31c05c,1,
-0x31c064,1,
-0x31c07c,1,
-0x31c500,2,
-0x31c518,1,
-0x31c520,3,
-0x31c540,6,
-0x31c580,10,
-0x31c808,2,
-0x31c814,11,
-0x31c844,1,
-0x31c84c,3,
-0x31c85c,1,
-0x31c864,1,
-0x31c87c,1,
-0x31cd00,2,
-0x31cd18,1,
-0x31cd20,3,
-0x31cd40,6,
-0x31cd80,10,
-0x31d800,2,
-0x31d828,2,
-0x31d850,2,
-0x31d878,2,
-0x31d8a0,6,
-0x31d9ac,1,
-0x31d9d8,4,
-0x31da00,6,
-0x31da20,6,
-0x31da40,6,
-0x31da60,6,
-0x31da80,3,
-0x31dc00,6,
-0x31dc20,3,
-0x31dc40,2,
-0x31dc60,1,
diff --git a/mstdump/mstdump_dbs/SwitchX.csv b/mstdump/mstdump_dbs/SwitchX.csv
deleted file mode 100755 (executable)
index 1501724..0000000
+++ /dev/null
@@ -1,10265 +0,0 @@
-#Addr, Size, Enable addr
-0x000000,1,
-0x000010,2,
-0x000020,3,
-0x000030,7,
-0x000100,7,
-0x000120,3,
-0x000130,2,
-0x000404,1,
-0x000414,3,
-0x000424,1,
-0x00042c,10,
-0x000460,11,
-0x000490,7,
-0x0004b0,4,
-0x0004c4,1,
-0x0004cc,6,
-0x0004f0,2,
-0x000500,5,
-0x000520,33,
-0x0005b0,6,
-0x000a00,1,
-0x000a08,7,
-0x000a2c,38,
-0x000ac8,12,
-0x000b00,1,
-0x000b10,2,
-0x000b20,8,
-0x000b44,1,
-0x000b60,8,
-0x000b84,1,
-0x000b94,3,
-0x000ba4,1,
-0x000bac,1,
-0x000bb4,1,
-0x000bbc,4,
-0x000bd0,7,
-0x000bf0,15,
-0x000c30,6,
-0x000c60,14,
-0x000d04,1,
-0x000d24,9,
-0x000d60,1,
-0x000d70,2,
-0x000da0,2,
-0x000db4,1,
-0x000dbc,4,
-0x000dd0,7,
-0x000df0,15,
-0x000e30,5,
-0x000e60,14,
-0x000f60,1,
-0x000f70,2,
-0x000fa0,2,
-0x000fb4,1,
-0x000fbc,4,
-0x000fd0,7,
-0x000ff0,132,
-0x001204,1,
-0x00121c,9,
-0x001284,3,
-0x001294,3,
-0x001300,10,
-0x00132c,10,
-0x001500,3,
-0x001520,25,
-0x001594,13,
-0x0015cc,6,
-0x0015fc,2,
-0x001610,2,
-0x001804,1,
-0x001814,3,
-0x001824,1,
-0x00182c,10,
-0x001860,11,
-0x001890,7,
-0x0018b0,4,
-0x0018c4,1,
-0x0018cc,6,
-0x0018f0,2,
-0x001900,5,
-0x001920,49,
-0x001c04,1,
-0x001c10,24,
-0x001c80,1,
-0x001c90,2,
-0x001ca0,1,
-0x001cb0,2,
-0x001cc8,5,
-0x001d00,22,
-0x002004,14,
-0x002040,7,
-0x00206c,3,
-0x0021fc,97,
-0x002400,96,
-0x002600,96,
-0x003000,20,
-0x003064,3,
-0x003074,2,
-0x003080,20,
-0x0030e4,3,
-0x0030f4,2,
-0x003100,20,
-0x003164,3,
-0x003174,2,
-0x003180,20,
-0x0031e4,3,
-0x0031f4,2,
-0x003200,20,
-0x003264,3,
-0x003274,2,
-0x003280,1,
-0x003400,20,
-0x003464,3,
-0x003474,2,
-0x003480,20,
-0x0034e4,3,
-0x0034f4,2,
-0x003500,20,
-0x003564,3,
-0x003574,2,
-0x003580,20,
-0x0035e4,3,
-0x0035f4,2,
-0x003600,20,
-0x003664,3,
-0x003674,2,
-0x003680,20,
-0x0036e4,3,
-0x0036f4,2,
-0x003700,1,
-0x003804,12,
-0x003840,5,
-0x00385c,13,
-0x003900,3,
-0x003910,7,
-0x003930,4,
-0x003944,1,
-0x003954,3,
-0x003964,4,
-0x003978,5,
-0x003990,2,
-0x003a00,77,
-0x003c00,31,
-0x003c80,7,
-0x003ca0,33,
-0x003d40,6,
-0x003d64,1,
-0x003d70,16,
-0x003dc0,14,
-0x003e04,57,
-0x004000,2,
-0x004018,2,
-0x004034,2,
-0x004104,6,
-0x004134,2,
-0x00414c,1,
-0x004170,3,
-0x004200,1,
-0x004210,2,
-0x004220,1,
-0x004230,2,
-0x0042c0,1,
-0x004400,64,
-0x008000,1,
-0x008010,2,
-0x008020,3,
-0x008030,7,
-0x008100,7,
-0x008120,3,
-0x008130,2,
-0x008404,1,
-0x008414,3,
-0x008424,1,
-0x00842c,10,
-0x008460,11,
-0x008490,7,
-0x0084b0,4,
-0x0084c4,1,
-0x0084cc,6,
-0x0084f0,2,
-0x008500,5,
-0x008520,33,
-0x0085b0,6,
-0x008a00,1,
-0x008a08,7,
-0x008a2c,38,
-0x008ac8,12,
-0x008b00,1,
-0x008b10,2,
-0x008b20,8,
-0x008b44,1,
-0x008b60,8,
-0x008b84,1,
-0x008b94,3,
-0x008ba4,1,
-0x008bac,1,
-0x008bb4,1,
-0x008bbc,4,
-0x008bd0,7,
-0x008bf0,15,
-0x008c30,6,
-0x008c60,14,
-0x008d04,1,
-0x008d24,9,
-0x008d60,1,
-0x008d70,2,
-0x008da0,2,
-0x008db4,1,
-0x008dbc,4,
-0x008dd0,7,
-0x008df0,15,
-0x008e30,5,
-0x008e60,14,
-0x008f60,1,
-0x008f70,2,
-0x008fa0,2,
-0x008fb4,1,
-0x008fbc,4,
-0x008fd0,7,
-0x008ff0,132,
-0x009204,1,
-0x00921c,9,
-0x009284,3,
-0x009294,3,
-0x009300,10,
-0x00932c,10,
-0x009500,3,
-0x009520,25,
-0x009594,13,
-0x0095cc,6,
-0x0095fc,2,
-0x009610,2,
-0x009804,1,
-0x009814,3,
-0x009824,1,
-0x00982c,10,
-0x009860,11,
-0x009890,7,
-0x0098b0,4,
-0x0098c4,1,
-0x0098cc,6,
-0x0098f0,2,
-0x009900,5,
-0x009920,49,
-0x009c04,1,
-0x009c10,24,
-0x009c80,1,
-0x009c90,2,
-0x009ca0,1,
-0x009cb0,2,
-0x009cc8,5,
-0x009d00,22,
-0x00a004,14,
-0x00a040,7,
-0x00a06c,3,
-0x00a1fc,97,
-0x00a400,96,
-0x00a600,96,
-0x00b000,20,
-0x00b064,3,
-0x00b074,2,
-0x00b080,20,
-0x00b0e4,3,
-0x00b0f4,2,
-0x00b100,20,
-0x00b164,3,
-0x00b174,2,
-0x00b180,20,
-0x00b1e4,3,
-0x00b1f4,2,
-0x00b200,20,
-0x00b264,3,
-0x00b274,2,
-0x00b280,1,
-0x00b400,20,
-0x00b464,3,
-0x00b474,2,
-0x00b480,20,
-0x00b4e4,3,
-0x00b4f4,2,
-0x00b500,20,
-0x00b564,3,
-0x00b574,2,
-0x00b580,20,
-0x00b5e4,3,
-0x00b5f4,2,
-0x00b600,20,
-0x00b664,3,
-0x00b674,2,
-0x00b680,20,
-0x00b6e4,3,
-0x00b6f4,2,
-0x00b700,1,
-0x00b804,12,
-0x00b840,5,
-0x00b85c,13,
-0x00b900,3,
-0x00b910,7,
-0x00b930,4,
-0x00b944,1,
-0x00b954,3,
-0x00b964,4,
-0x00b978,5,
-0x00b990,2,
-0x00ba00,77,
-0x00bc00,31,
-0x00bc80,7,
-0x00bca0,33,
-0x00bd40,6,
-0x00bd64,1,
-0x00bd70,16,
-0x00bdc0,14,
-0x00be04,57,
-0x00c000,2,
-0x00c018,2,
-0x00c034,2,
-0x00c104,6,
-0x00c134,2,
-0x00c14c,1,
-0x00c170,3,
-0x00c200,1,
-0x00c210,2,
-0x00c220,1,
-0x00c230,2,
-0x00c2c0,1,
-0x00c400,64,
-0x010000,1,
-0x010010,2,
-0x010020,3,
-0x010030,7,
-0x010100,7,
-0x010120,3,
-0x010130,2,
-0x010404,1,
-0x010414,3,
-0x010424,1,
-0x01042c,10,
-0x010460,11,
-0x010490,7,
-0x0104b0,4,
-0x0104c4,1,
-0x0104cc,6,
-0x0104f0,2,
-0x010500,5,
-0x010520,33,
-0x0105b0,6,
-0x010a00,1,
-0x010a08,7,
-0x010a2c,38,
-0x010ac8,12,
-0x010b00,1,
-0x010b10,2,
-0x010b20,8,
-0x010b44,1,
-0x010b60,8,
-0x010b84,1,
-0x010b94,3,
-0x010ba4,1,
-0x010bac,1,
-0x010bb4,1,
-0x010bbc,4,
-0x010bd0,7,
-0x010bf0,15,
-0x010c30,6,
-0x010c60,14,
-0x010d04,1,
-0x010d24,9,
-0x010d60,1,
-0x010d70,2,
-0x010da0,2,
-0x010db4,1,
-0x010dbc,4,
-0x010dd0,7,
-0x010df0,15,
-0x010e30,5,
-0x010e60,14,
-0x010f60,1,
-0x010f70,2,
-0x010fa0,2,
-0x010fb4,1,
-0x010fbc,4,
-0x010fd0,7,
-0x010ff0,132,
-0x011204,1,
-0x01121c,9,
-0x011284,3,
-0x011294,3,
-0x011300,10,
-0x01132c,10,
-0x011500,3,
-0x011520,25,
-0x011594,13,
-0x0115cc,6,
-0x0115fc,2,
-0x011610,2,
-0x011804,1,
-0x011814,3,
-0x011824,1,
-0x01182c,10,
-0x011860,11,
-0x011890,7,
-0x0118b0,4,
-0x0118c4,1,
-0x0118cc,6,
-0x0118f0,2,
-0x011900,5,
-0x011920,49,
-0x011c04,1,
-0x011c10,24,
-0x011c80,1,
-0x011c90,2,
-0x011ca0,1,
-0x011cb0,2,
-0x011cc8,5,
-0x011d00,22,
-0x012004,14,
-0x012040,7,
-0x01206c,3,
-0x0121fc,97,
-0x012400,96,
-0x012600,96,
-0x013000,20,
-0x013064,3,
-0x013074,2,
-0x013080,20,
-0x0130e4,3,
-0x0130f4,2,
-0x013100,20,
-0x013164,3,
-0x013174,2,
-0x013180,20,
-0x0131e4,3,
-0x0131f4,2,
-0x013200,20,
-0x013264,3,
-0x013274,2,
-0x013280,1,
-0x013400,20,
-0x013464,3,
-0x013474,2,
-0x013480,20,
-0x0134e4,3,
-0x0134f4,2,
-0x013500,20,
-0x013564,3,
-0x013574,2,
-0x013580,20,
-0x0135e4,3,
-0x0135f4,2,
-0x013600,20,
-0x013664,3,
-0x013674,2,
-0x013680,20,
-0x0136e4,3,
-0x0136f4,2,
-0x013700,1,
-0x013804,12,
-0x013840,5,
-0x01385c,13,
-0x013900,3,
-0x013910,7,
-0x013930,4,
-0x013944,1,
-0x013954,3,
-0x013964,4,
-0x013978,5,
-0x013990,2,
-0x013a00,77,
-0x013c00,31,
-0x013c80,7,
-0x013ca0,33,
-0x013d40,6,
-0x013d64,1,
-0x013d70,16,
-0x013dc0,14,
-0x013e04,57,
-0x014000,2,
-0x014018,2,
-0x014034,2,
-0x014104,6,
-0x014134,2,
-0x01414c,1,
-0x014170,3,
-0x014200,1,
-0x014210,2,
-0x014220,1,
-0x014230,2,
-0x0142c0,1,
-0x014400,64,
-0x018000,1,
-0x018010,2,
-0x018020,3,
-0x018030,7,
-0x018100,7,
-0x018120,3,
-0x018130,2,
-0x018404,1,
-0x018414,3,
-0x018424,1,
-0x01842c,10,
-0x018460,11,
-0x018490,7,
-0x0184b0,4,
-0x0184c4,1,
-0x0184cc,6,
-0x0184f0,2,
-0x018500,5,
-0x018520,33,
-0x0185b0,6,
-0x018a00,1,
-0x018a08,7,
-0x018a2c,38,
-0x018ac8,12,
-0x018b00,1,
-0x018b10,2,
-0x018b20,8,
-0x018b44,1,
-0x018b60,8,
-0x018b84,1,
-0x018b94,3,
-0x018ba4,1,
-0x018bac,1,
-0x018bb4,1,
-0x018bbc,4,
-0x018bd0,7,
-0x018bf0,15,
-0x018c30,6,
-0x018c60,14,
-0x018d04,1,
-0x018d24,9,
-0x018d60,1,
-0x018d70,2,
-0x018da0,2,
-0x018db4,1,
-0x018dbc,4,
-0x018dd0,7,
-0x018df0,15,
-0x018e30,5,
-0x018e60,14,
-0x018f60,1,
-0x018f70,2,
-0x018fa0,2,
-0x018fb4,1,
-0x018fbc,4,
-0x018fd0,7,
-0x018ff0,132,
-0x019204,1,
-0x01921c,9,
-0x019284,3,
-0x019294,3,
-0x019300,10,
-0x01932c,10,
-0x019500,3,
-0x019520,25,
-0x019594,13,
-0x0195cc,6,
-0x0195fc,2,
-0x019610,2,
-0x019804,1,
-0x019814,3,
-0x019824,1,
-0x01982c,10,
-0x019860,11,
-0x019890,7,
-0x0198b0,4,
-0x0198c4,1,
-0x0198cc,6,
-0x0198f0,2,
-0x019900,5,
-0x019920,49,
-0x019c04,1,
-0x019c10,24,
-0x019c80,1,
-0x019c90,2,
-0x019ca0,1,
-0x019cb0,2,
-0x019cc8,5,
-0x019d00,22,
-0x01a004,14,
-0x01a040,7,
-0x01a06c,3,
-0x01a1fc,97,
-0x01a400,96,
-0x01a600,96,
-0x01b000,20,
-0x01b064,3,
-0x01b074,2,
-0x01b080,20,
-0x01b0e4,3,
-0x01b0f4,2,
-0x01b100,20,
-0x01b164,3,
-0x01b174,2,
-0x01b180,20,
-0x01b1e4,3,
-0x01b1f4,2,
-0x01b200,20,
-0x01b264,3,
-0x01b274,2,
-0x01b280,1,
-0x01b400,20,
-0x01b464,3,
-0x01b474,2,
-0x01b480,20,
-0x01b4e4,3,
-0x01b4f4,2,
-0x01b500,20,
-0x01b564,3,
-0x01b574,2,
-0x01b580,20,
-0x01b5e4,3,
-0x01b5f4,2,
-0x01b600,20,
-0x01b664,3,
-0x01b674,2,
-0x01b680,20,
-0x01b6e4,3,
-0x01b6f4,2,
-0x01b700,1,
-0x01b804,12,
-0x01b840,5,
-0x01b85c,13,
-0x01b900,3,
-0x01b910,7,
-0x01b930,4,
-0x01b944,1,
-0x01b954,3,
-0x01b964,4,
-0x01b978,5,
-0x01b990,2,
-0x01ba00,77,
-0x01bc00,31,
-0x01bc80,7,
-0x01bca0,33,
-0x01bd40,6,
-0x01bd64,1,
-0x01bd70,16,
-0x01bdc0,14,
-0x01be04,57,
-0x01c000,2,
-0x01c018,2,
-0x01c034,2,
-0x01c104,6,
-0x01c134,2,
-0x01c14c,1,
-0x01c170,3,
-0x01c200,1,
-0x01c210,2,
-0x01c220,1,
-0x01c230,2,
-0x01c2c0,1,
-0x01c400,64,
-0x020000,1,
-0x020010,2,
-0x020020,3,
-0x020030,7,
-0x020100,7,
-0x020120,3,
-0x020130,2,
-0x020404,1,
-0x020414,3,
-0x020424,1,
-0x02042c,10,
-0x020460,11,
-0x020490,7,
-0x0204b0,4,
-0x0204c4,1,
-0x0204cc,6,
-0x0204f0,2,
-0x020500,5,
-0x020520,33,
-0x0205b0,6,
-0x020a00,1,
-0x020a08,7,
-0x020a2c,38,
-0x020ac8,12,
-0x020b00,1,
-0x020b10,2,
-0x020b20,8,
-0x020b44,1,
-0x020b60,8,
-0x020b84,1,
-0x020b94,3,
-0x020ba4,1,
-0x020bac,1,
-0x020bb4,1,
-0x020bbc,4,
-0x020bd0,7,
-0x020bf0,15,
-0x020c30,6,
-0x020c60,14,
-0x020d04,1,
-0x020d24,9,
-0x020d60,1,
-0x020d70,2,
-0x020da0,2,
-0x020db4,1,
-0x020dbc,4,
-0x020dd0,7,
-0x020df0,15,
-0x020e30,5,
-0x020e60,14,
-0x020f60,1,
-0x020f70,2,
-0x020fa0,2,
-0x020fb4,1,
-0x020fbc,4,
-0x020fd0,7,
-0x020ff0,132,
-0x021204,1,
-0x02121c,9,
-0x021284,3,
-0x021294,3,
-0x021300,10,
-0x02132c,10,
-0x021500,3,
-0x021520,25,
-0x021594,13,
-0x0215cc,6,
-0x0215fc,2,
-0x021610,2,
-0x021804,1,
-0x021814,3,
-0x021824,1,
-0x02182c,10,
-0x021860,11,
-0x021890,7,
-0x0218b0,4,
-0x0218c4,1,
-0x0218cc,6,
-0x0218f0,2,
-0x021900,5,
-0x021920,49,
-0x021c04,1,
-0x021c10,24,
-0x021c80,1,
-0x021c90,2,
-0x021ca0,1,
-0x021cb0,2,
-0x021cc8,5,
-0x021d00,22,
-0x022004,14,
-0x022040,7,
-0x02206c,3,
-0x0221fc,97,
-0x022400,96,
-0x022600,96,
-0x023000,20,
-0x023064,3,
-0x023074,2,
-0x023080,20,
-0x0230e4,3,
-0x0230f4,2,
-0x023100,20,
-0x023164,3,
-0x023174,2,
-0x023180,20,
-0x0231e4,3,
-0x0231f4,2,
-0x023200,20,
-0x023264,3,
-0x023274,2,
-0x023280,1,
-0x023400,20,
-0x023464,3,
-0x023474,2,
-0x023480,20,
-0x0234e4,3,
-0x0234f4,2,
-0x023500,20,
-0x023564,3,
-0x023574,2,
-0x023580,20,
-0x0235e4,3,
-0x0235f4,2,
-0x023600,20,
-0x023664,3,
-0x023674,2,
-0x023680,20,
-0x0236e4,3,
-0x0236f4,2,
-0x023700,1,
-0x023804,12,
-0x023840,5,
-0x02385c,13,
-0x023900,3,
-0x023910,7,
-0x023930,4,
-0x023944,1,
-0x023954,3,
-0x023964,4,
-0x023978,5,
-0x023990,2,
-0x023a00,77,
-0x023c00,31,
-0x023c80,7,
-0x023ca0,33,
-0x023d40,6,
-0x023d64,1,
-0x023d70,16,
-0x023dc0,14,
-0x023e04,57,
-0x024000,2,
-0x024018,2,
-0x024034,2,
-0x024104,6,
-0x024134,2,
-0x02414c,1,
-0x024170,3,
-0x024200,1,
-0x024210,2,
-0x024220,1,
-0x024230,2,
-0x0242c0,1,
-0x024400,64,
-0x028000,1,
-0x028010,2,
-0x028020,3,
-0x028030,7,
-0x028100,7,
-0x028120,3,
-0x028130,2,
-0x028404,1,
-0x028414,3,
-0x028424,1,
-0x02842c,10,
-0x028460,11,
-0x028490,7,
-0x0284b0,4,
-0x0284c4,1,
-0x0284cc,6,
-0x0284f0,2,
-0x028500,5,
-0x028520,33,
-0x0285b0,6,
-0x028a00,1,
-0x028a08,7,
-0x028a2c,38,
-0x028ac8,12,
-0x028b00,1,
-0x028b10,2,
-0x028b20,8,
-0x028b44,1,
-0x028b60,8,
-0x028b84,1,
-0x028b94,3,
-0x028ba4,1,
-0x028bac,1,
-0x028bb4,1,
-0x028bbc,4,
-0x028bd0,7,
-0x028bf0,15,
-0x028c30,6,
-0x028c60,14,
-0x028d04,1,
-0x028d24,9,
-0x028d60,1,
-0x028d70,2,
-0x028da0,2,
-0x028db4,1,
-0x028dbc,4,
-0x028dd0,7,
-0x028df0,15,
-0x028e30,5,
-0x028e60,14,
-0x028f60,1,
-0x028f70,2,
-0x028fa0,2,
-0x028fb4,1,
-0x028fbc,4,
-0x028fd0,7,
-0x028ff0,132,
-0x029204,1,
-0x02921c,9,
-0x029284,3,
-0x029294,3,
-0x029300,10,
-0x02932c,10,
-0x029500,3,
-0x029520,25,
-0x029594,13,
-0x0295cc,6,
-0x0295fc,2,
-0x029610,2,
-0x029804,1,
-0x029814,3,
-0x029824,1,
-0x02982c,10,
-0x029860,11,
-0x029890,7,
-0x0298b0,4,
-0x0298c4,1,
-0x0298cc,6,
-0x0298f0,2,
-0x029900,5,
-0x029920,49,
-0x029c04,1,
-0x029c10,24,
-0x029c80,1,
-0x029c90,2,
-0x029ca0,1,
-0x029cb0,2,
-0x029cc8,5,
-0x029d00,22,
-0x02a004,14,
-0x02a040,7,
-0x02a06c,3,
-0x02a1fc,97,
-0x02a400,96,
-0x02a600,96,
-0x02b000,20,
-0x02b064,3,
-0x02b074,2,
-0x02b080,20,
-0x02b0e4,3,
-0x02b0f4,2,
-0x02b100,20,
-0x02b164,3,
-0x02b174,2,
-0x02b180,20,
-0x02b1e4,3,
-0x02b1f4,2,
-0x02b200,20,
-0x02b264,3,
-0x02b274,2,
-0x02b280,1,
-0x02b400,20,
-0x02b464,3,
-0x02b474,2,
-0x02b480,20,
-0x02b4e4,3,
-0x02b4f4,2,
-0x02b500,20,
-0x02b564,3,
-0x02b574,2,
-0x02b580,20,
-0x02b5e4,3,
-0x02b5f4,2,
-0x02b600,20,
-0x02b664,3,
-0x02b674,2,
-0x02b680,20,
-0x02b6e4,3,
-0x02b6f4,2,
-0x02b700,1,
-0x02b804,12,
-0x02b840,5,
-0x02b85c,13,
-0x02b900,3,
-0x02b910,7,
-0x02b930,4,
-0x02b944,1,
-0x02b954,3,
-0x02b964,4,
-0x02b978,5,
-0x02b990,2,
-0x02ba00,77,
-0x02bc00,31,
-0x02bc80,7,
-0x02bca0,33,
-0x02bd40,6,
-0x02bd64,1,
-0x02bd70,16,
-0x02bdc0,14,
-0x02be04,57,
-0x02c000,2,
-0x02c018,2,
-0x02c034,2,
-0x02c104,6,
-0x02c134,2,
-0x02c14c,1,
-0x02c170,3,
-0x02c200,1,
-0x02c210,2,
-0x02c220,1,
-0x02c230,2,
-0x02c2c0,1,
-0x02c400,64,
-0x030000,2,
-0x030018,2,
-0x030034,2,
-0x030104,3,
-0x030134,2,
-0x03014c,1,
-0x030170,2,
-0x030200,1,
-0x030210,2,
-0x030220,1,
-0x030230,2,
-0x030420,3,
-0x030430,4,
-0x030460,4,
-0x030474,3,
-0x030484,7,
-0x0304a4,7,
-0x0304c4,7,
-0x0304e4,2,
-0x0304f0,9,
-0x03051c,5,
-0x030584,7,
-0x0305a4,7,
-0x0305c4,7,
-0x0305e4,11,
-0x030620,1,
-0x0306dc,9,
-0x03071c,9,
-0x03075c,9,
-0x03079c,9,
-0x0307dc,13,
-0x030820,1,
-0x03091c,9,
-0x03095c,9,
-0x03099c,9,
-0x0309dc,13,
-0x030a20,1,
-0x030b1c,9,
-0x030b5c,9,
-0x030b9c,9,
-0x030bdc,13,
-0x030c20,1,
-0x030d1c,9,
-0x030d5c,9,
-0x030d9c,9,
-0x030ddc,9,
-0x03100c,12,
-0x031040,5,
-0x03105c,5,
-0x031074,3,
-0x031088,42,
-0x0311fc,49,
-0x031300,3,
-0x031330,12,
-0x031400,14,
-0x031440,12,
-0x031480,5,
-0x03149c,1,
-0x031800,24,
-0x031880,2,
-0x031890,3,
-0x0318a0,3,
-0x0318b0,2,
-0x031a00,1,
-0x031a10,2,
-0x031a20,1,
-0x031a30,2,
-0x031a40,1,
-0x031a50,2,
-0x031a80,1,
-0x031a90,2,
-0x031aa0,1,
-0x031ab0,2,
-0x031ac0,3,
-0x031b04,1,
-0x031b24,7,
-0x031b44,1,
-0x031b64,7,
-0x031b84,1,
-0x031ba4,7,
-0x031bc4,1,
-0x031be4,9,
-0x031c0c,3,
-0x031c40,16,
-0x031d04,2,
-0x031d18,10,
-0x031d44,2,
-0x031d58,10,
-0x031d84,2,
-0x031d98,10,
-0x031dc4,2,
-0x031dd8,10,
-0x031e04,2,
-0x031e18,2,
-0x031e24,2,
-0x031e38,2,
-0x031e44,2,
-0x031e58,2,
-0x031e64,2,
-0x031e78,2,
-0x031f04,3,
-0x031f14,3,
-0x032010,3,
-0x032020,1,
-0x032028,13,
-0x032060,5,
-0x032078,15,
-0x0320b8,1,
-0x0320c0,3,
-0x0320e0,3,
-0x032100,3,
-0x032110,3,
-0x032120,3,
-0x032130,3,
-0x032140,3,
-0x032150,3,
-0x032160,3,
-0x032170,3,
-0x032180,3,
-0x032200,33,
-0x032290,29,
-0x032308,10,
-0x032334,2,
-0x032340,9,
-0x032368,2,
-0x032380,27,
-0x0323f0,1,
-0x032400,10,
-0x03242c,28,
-0x0324a0,2,
-0x0324b4,5,
-0x0324d4,5,
-0x0324f4,6,
-0x032560,3,
-0x032570,1,
-0x0325fc,45,
-0x032800,160,
-0x032b00,1,
-0x032c00,16,
-0x032c44,1,
-0x032c4c,3,
-0x032c60,2,
-0x032c6c,2,
-0x032cc0,80,
-0x032e04,3,
-0x032e24,3,
-0x032e34,3,
-0x032e44,3,
-0x032e54,3,
-0x032e64,3,
-0x032e74,3,
-0x032e84,1,
-0x032e90,4,
-0x032ea4,1,
-0x032eb0,4,
-0x032ec4,1,
-0x032ed0,4,
-0x032ee4,1,
-0x032ef0,4,
-0x032f04,1,
-0x032f10,4,
-0x032f24,1,
-0x032f30,4,
-0x032f44,1,
-0x032f50,4,
-0x032f64,1,
-0x032f70,4,
-0x032f84,1,
-0x032f90,4,
-0x032fa4,1,
-0x032fb0,4,
-0x032fc4,1,
-0x032fd0,4,
-0x032fe4,1,
-0x032ff0,4,
-0x033c04,8,
-0x033e00,1,
-0x033e18,11,
-0x033e58,11,
-0x033e98,11,
-0x033ed8,11,
-0x033f10,13,
-0x033f50,13,
-0x033f90,13,
-0x033fd0,14,
-0x034018,2,
-0x034034,2,
-0x034104,3,
-0x034134,2,
-0x03414c,1,
-0x034170,2,
-0x034200,1,
-0x034210,2,
-0x034220,1,
-0x034230,2,
-0x034420,3,
-0x034430,4,
-0x034460,4,
-0x034474,3,
-0x034484,7,
-0x0344a4,7,
-0x0344c4,7,
-0x0344e4,2,
-0x0344f0,9,
-0x03451c,5,
-0x034584,7,
-0x0345a4,7,
-0x0345c4,7,
-0x0345e4,11,
-0x034620,1,
-0x0346dc,9,
-0x03471c,9,
-0x03475c,9,
-0x03479c,9,
-0x0347dc,13,
-0x034820,1,
-0x03491c,9,
-0x03495c,9,
-0x03499c,9,
-0x0349dc,13,
-0x034a20,1,
-0x034b1c,9,
-0x034b5c,9,
-0x034b9c,9,
-0x034bdc,13,
-0x034c20,1,
-0x034d1c,9,
-0x034d5c,9,
-0x034d9c,9,
-0x034ddc,9,
-0x03500c,12,
-0x035040,5,
-0x03505c,5,
-0x035074,3,
-0x035088,42,
-0x0351fc,49,
-0x035300,3,
-0x035330,12,
-0x035400,14,
-0x035440,12,
-0x035480,5,
-0x03549c,1,
-0x035800,24,
-0x035880,2,
-0x035890,3,
-0x0358a0,3,
-0x0358b0,2,
-0x035a00,1,
-0x035a10,2,
-0x035a20,1,
-0x035a30,2,
-0x035a40,1,
-0x035a50,2,
-0x035a80,1,
-0x035a90,2,
-0x035aa0,1,
-0x035ab0,2,
-0x035ac0,3,
-0x035b04,1,
-0x035b24,7,
-0x035b44,1,
-0x035b64,7,
-0x035b84,1,
-0x035ba4,7,
-0x035bc4,1,
-0x035be4,9,
-0x035c0c,3,
-0x035c40,16,
-0x035d04,2,
-0x035d18,10,
-0x035d44,2,
-0x035d58,10,
-0x035d84,2,
-0x035d98,10,
-0x035dc4,2,
-0x035dd8,10,
-0x035e04,2,
-0x035e18,2,
-0x035e24,2,
-0x035e38,2,
-0x035e44,2,
-0x035e58,2,
-0x035e64,2,
-0x035e78,2,
-0x035f04,3,
-0x035f14,3,
-0x036010,3,
-0x036020,1,
-0x036028,13,
-0x036060,5,
-0x036078,15,
-0x0360b8,1,
-0x0360c0,3,
-0x0360e0,3,
-0x036100,3,
-0x036110,3,
-0x036120,3,
-0x036130,3,
-0x036140,3,
-0x036150,3,
-0x036160,3,
-0x036170,3,
-0x036180,3,
-0x036200,33,
-0x036290,29,
-0x036308,10,
-0x036334,2,
-0x036340,9,
-0x036368,2,
-0x036380,27,
-0x0363f0,1,
-0x036400,10,
-0x03642c,28,
-0x0364a0,2,
-0x0364b4,5,
-0x0364d4,5,
-0x0364f4,6,
-0x036560,3,
-0x036570,1,
-0x0365fc,45,
-0x036800,160,
-0x036b00,1,
-0x036c00,16,
-0x036c44,1,
-0x036c4c,3,
-0x036c60,2,
-0x036c6c,2,
-0x036cc0,80,
-0x036e04,3,
-0x036e24,3,
-0x036e34,3,
-0x036e44,3,
-0x036e54,3,
-0x036e64,3,
-0x036e74,3,
-0x036e84,1,
-0x036e90,4,
-0x036ea4,1,
-0x036eb0,4,
-0x036ec4,1,
-0x036ed0,4,
-0x036ee4,1,
-0x036ef0,4,
-0x036f04,1,
-0x036f10,4,
-0x036f24,1,
-0x036f30,4,
-0x036f44,1,
-0x036f50,4,
-0x036f64,1,
-0x036f70,4,
-0x036f84,1,
-0x036f90,4,
-0x036fa4,1,
-0x036fb0,4,
-0x036fc4,1,
-0x036fd0,4,
-0x036fe4,1,
-0x036ff0,4,
-0x037c04,8,
-0x037e00,1,
-0x037e18,11,
-0x037e58,11,
-0x037e98,11,
-0x037ed8,11,
-0x037f10,13,
-0x037f50,13,
-0x037f90,13,
-0x037fd0,21,
-0x038030,3,
-0x038040,3,
-0x038080,9,
-0x0380b0,3,
-0x0380c0,3,
-0x038100,9,
-0x038130,3,
-0x038140,3,
-0x038180,9,
-0x0381b0,3,
-0x0381c0,3,
-0x038200,9,
-0x038230,3,
-0x038240,3,
-0x038280,9,
-0x0382b0,3,
-0x0382c0,3,
-0x040000,3,
-0x04001c,2,
-0x040030,1,
-0x040048,2,
-0x040058,2,
-0x040068,11,
-0x04009c,2,
-0x0400ac,14,
-0x040180,1,
-0x0401c0,1,
-0x0401c8,2,
-0x0401e0,1,
-0x0401e8,3,
-0x0401f8,1,
-0x040200,3,
-0x04021c,2,
-0x040230,1,
-0x040248,2,
-0x040258,2,
-0x040268,11,
-0x04029c,2,
-0x0402ac,14,
-0x040380,1,
-0x0403c0,1,
-0x0403c8,2,
-0x0403e0,1,
-0x0403e8,3,
-0x0403f8,1,
-0x040400,3,
-0x04041c,2,
-0x040430,1,
-0x040448,2,
-0x040458,2,
-0x040468,11,
-0x04049c,2,
-0x0404ac,14,
-0x040580,1,
-0x0405c0,1,
-0x0405c8,2,
-0x0405e0,1,
-0x0405e8,3,
-0x0405f8,1,
-0x040600,3,
-0x04061c,2,
-0x040630,1,
-0x040648,2,
-0x040658,2,
-0x040668,11,
-0x04069c,2,
-0x0406ac,14,
-0x040780,1,
-0x0407c0,1,
-0x0407c8,2,
-0x0407e0,1,
-0x0407e8,3,
-0x0407f8,1,
-0x040800,128,
-0x040a04,2,
-0x040a18,2,
-0x040c04,9,
-0x040c44,2,
-0x040c50,10,
-0x040c7c,1,
-0x040c84,1,
-0x040c8c,6,
-0x040cb0,3,
-0x040cc0,1,
-0x040cd0,2,
-0x040ce0,1,
-0x040cf0,2,
-0x040d00,1,
-0x040d10,2,
-0x040d20,1,
-0x040d30,2,
-0x040d40,1,
-0x040d50,2,
-0x040d60,1,
-0x040d70,2,
-0x040d88,2,
-0x040da0,1,
-0x040dc8,2,
-0x040de0,1,
-0x040e08,2,
-0x040e20,1,
-0x040e48,2,
-0x040e60,1,
-0x040e88,2,
-0x040ea0,1,
-0x040ec8,2,
-0x040ee0,1,
-0x040f08,2,
-0x040f20,1,
-0x040f48,2,
-0x040f60,1,
-0x040f80,3,
-0x040ffc,1,
-0x041900,4,
-0x041940,5,
-0x042000,24,
-0x042200,24,
-0x042400,48,
-0x042600,2,
-0x042800,48,
-0x042a00,2,
-0x042fdc,1,
-0x042fe4,1,
-0x042ff4,3,
-0x043010,4,
-0x043030,7,
-0x043100,11,
-0x043140,7,
-0x043160,2,
-0x044000,8,
-0x044040,8,
-0x044080,8,
-0x0440e8,2,
-0x044100,64,
-0x050040,4,
-0x050060,3,
-0x050070,16,
-0x0500d8,14,
-0x050120,3,
-0x050130,29,
-0x0501b8,6,
-0x050200,36,
-0x051100,14,
-0x05113c,5,
-0x051160,3,
-0x051170,1,
-0x0517fc,20,
-0x051894,8,
-0x0518b8,16,
-0x051900,14,
-0x053c00,18,
-0x053c60,5,
-0x053c8c,8,
-0x053d00,1,
-0x053e00,16,
-0x053e60,5,
-0x053e8c,8,
-0x053f04,1,
-0x053f0c,7,
-0x053f40,1,
-0x053ffc,6,
-0x054020,1,
-0x054030,1,
-0x054040,1,
-0x054050,1,
-0x054060,1,
-0x054070,1,
-0x054080,1,
-0x054090,1,
-0x0540a0,1,
-0x0540b0,1,
-0x0540c0,1,
-0x0540d0,1,
-0x0540e0,1,
-0x0540f0,1,
-0x054100,1,
-0x054110,1,
-0x054120,1,
-0x054130,1,
-0x054140,1,
-0x054150,1,
-0x054160,1,
-0x054170,1,
-0x054180,1,
-0x054190,1,
-0x0541a0,1,
-0x0541b0,1,
-0x0541c0,1,
-0x0541d0,1,
-0x0541e0,1,
-0x0541f0,1,
-0x054200,1,
-0x054210,1,
-0x054220,1,
-0x054230,1,
-0x054240,1,
-0x054250,1,
-0x054260,1,
-0x054270,1,
-0x054280,1,
-0x054290,1,
-0x0542a0,1,
-0x0542b0,1,
-0x0542c0,1,
-0x0542d0,1,
-0x0542e0,1,
-0x0542f0,1,
-0x054300,1,
-0x054310,1,
-0x054320,1,
-0x054330,1,
-0x054340,1,
-0x054350,1,
-0x054360,1,
-0x054370,1,
-0x054380,1,
-0x054390,1,
-0x0543a0,1,
-0x0543b0,1,
-0x0543c0,1,
-0x0543d0,1,
-0x0543e0,1,
-0x0543f0,1,
-0x054400,1,
-0x054410,1,
-0x054420,1,
-0x054430,1,
-0x054440,1,
-0x054450,1,
-0x054460,1,
-0x054470,1,
-0x054480,1,
-0x054490,1,
-0x0544a0,1,
-0x0544b0,1,
-0x0544c0,1,
-0x0544d0,1,
-0x0544e0,1,
-0x0544f0,1,
-0x054500,1,
-0x054510,1,
-0x054520,1,
-0x054530,1,
-0x054540,1,
-0x054550,1,
-0x054560,1,
-0x054570,1,
-0x054580,1,
-0x054590,1,
-0x0545a0,1,
-0x0545b0,1,
-0x0545c0,1,
-0x0545d0,1,
-0x0545e0,1,
-0x0545f0,1,
-0x054600,1,
-0x054610,1,
-0x054620,1,
-0x054630,1,
-0x054640,1,
-0x054650,1,
-0x054660,1,
-0x054670,1,
-0x054680,1,
-0x054690,1,
-0x0546a0,1,
-0x0546b0,1,
-0x0546c0,1,
-0x0546d0,1,
-0x0546e0,1,
-0x0546f0,1,
-0x054700,1,
-0x054710,1,
-0x054720,1,
-0x054730,1,
-0x054740,1,
-0x054750,1,
-0x054760,1,
-0x054770,1,
-0x054780,1,
-0x054790,1,
-0x0547a0,1,
-0x0547b0,1,
-0x0547c0,1,
-0x0547d0,1,
-0x0547e0,1,
-0x0547f0,1,
-0x054800,1,
-0x054810,1,
-0x054820,1,
-0x054830,1,
-0x054840,1,
-0x054850,1,
-0x054860,1,
-0x054870,1,
-0x054880,1,
-0x054890,1,
-0x0548a0,1,
-0x0548b0,1,
-0x0548c0,1,
-0x0548d0,1,
-0x0548e0,1,
-0x0548f0,1,
-0x054900,1,
-0x054910,1,
-0x054920,1,
-0x054930,1,
-0x054940,1,
-0x054950,1,
-0x054960,1,
-0x054970,1,
-0x054980,1,
-0x054990,1,
-0x0549a0,1,
-0x0549b0,1,
-0x0549c0,1,
-0x0549d0,1,
-0x0549e0,1,
-0x0549f0,1,
-0x054a00,1,
-0x054a10,1,
-0x054a20,1,
-0x054a30,1,
-0x054a40,1,
-0x054a50,1,
-0x054a60,1,
-0x054a70,1,
-0x054a80,1,
-0x054a90,1,
-0x054aa0,1,
-0x054ab0,1,
-0x054ac0,1,
-0x054ad0,1,
-0x054ae0,1,
-0x054af0,1,
-0x054b00,1,
-0x054b10,1,
-0x054b20,1,
-0x054b30,1,
-0x054b40,1,
-0x054b50,1,
-0x054b60,1,
-0x054b70,1,
-0x054b80,1,
-0x054b90,1,
-0x054ba0,1,
-0x054bb0,1,
-0x054bc0,1,
-0x054bd0,1,
-0x054be0,1,
-0x054bf0,1,
-0x054c00,1,
-0x054c10,1,
-0x054c20,1,
-0x054c30,1,
-0x054c40,1,
-0x054c50,1,
-0x054c60,1,
-0x054c70,1,
-0x054c80,1,
-0x054c90,1,
-0x054ca0,1,
-0x054cb0,1,
-0x054cc0,1,
-0x054cd0,1,
-0x054ce0,1,
-0x054cf0,1,
-0x054d00,1,
-0x054d10,1,
-0x054d20,1,
-0x054d30,1,
-0x054d40,1,
-0x054d50,1,
-0x054d60,1,
-0x054d70,1,
-0x054d80,1,
-0x054d90,1,
-0x054da0,1,
-0x054db0,1,
-0x054dc0,1,
-0x054dd0,1,
-0x054de0,1,
-0x054df0,1,
-0x054e00,1,
-0x054e10,1,
-0x054e20,1,
-0x054e30,1,
-0x054e40,1,
-0x054e50,1,
-0x054e60,1,
-0x054e70,1,
-0x054e80,1,
-0x054e90,1,
-0x054ea0,1,
-0x054eb0,1,
-0x054ec0,1,
-0x054ed0,1,
-0x054ee0,1,
-0x054ef0,1,
-0x054f00,1,
-0x054f10,1,
-0x054f20,1,
-0x054f30,1,
-0x054f40,1,
-0x054f50,1,
-0x054f60,1,
-0x054f70,1,
-0x054f80,1,
-0x054f90,1,
-0x054fa0,1,
-0x054fb0,1,
-0x054fc0,1,
-0x054fd0,1,
-0x054fe0,1,
-0x054ff0,1,
-0x055000,8,
-0x056000,5,
-0x056020,1,
-0x056030,1,
-0x056040,1,
-0x056050,1,
-0x056060,1,
-0x056070,1,
-0x056080,1,
-0x056090,1,
-0x0560a0,1,
-0x0560b0,1,
-0x0560c0,1,
-0x0560d0,1,
-0x0560e0,1,
-0x0560f0,1,
-0x056100,1,
-0x056110,1,
-0x056120,1,
-0x056130,1,
-0x056140,1,
-0x056150,1,
-0x056160,1,
-0x056170,1,
-0x056180,1,
-0x056190,1,
-0x0561a0,1,
-0x0561b0,1,
-0x0561c0,1,
-0x0561d0,1,
-0x0561e0,1,
-0x0561f0,1,
-0x056200,1,
-0x056210,1,
-0x056220,1,
-0x056230,1,
-0x056240,1,
-0x056250,1,
-0x056260,1,
-0x056270,1,
-0x056280,1,
-0x056290,1,
-0x0562a0,1,
-0x0562b0,1,
-0x0562c0,1,
-0x0562d0,1,
-0x0562e0,1,
-0x0562f0,1,
-0x056300,1,
-0x056310,1,
-0x056320,1,
-0x056330,1,
-0x056340,1,
-0x056350,1,
-0x056360,1,
-0x056370,1,
-0x056380,1,
-0x056390,1,
-0x0563a0,1,
-0x0563b0,1,
-0x0563c0,1,
-0x0563d0,1,
-0x0563e0,1,
-0x0563f0,1,
-0x056400,1,
-0x056410,1,
-0x056420,1,
-0x056430,1,
-0x056440,1,
-0x056450,1,
-0x056460,1,
-0x056470,1,
-0x056480,1,
-0x056490,1,
-0x0564a0,1,
-0x0564b0,1,
-0x0564c0,1,
-0x0564d0,1,
-0x0564e0,1,
-0x0564f0,1,
-0x056500,1,
-0x056510,1,
-0x056520,1,
-0x056530,1,
-0x056540,1,
-0x056550,1,
-0x056560,1,
-0x056570,1,
-0x056580,1,
-0x056590,1,
-0x0565a0,1,
-0x0565b0,1,
-0x0565c0,1,
-0x0565d0,1,
-0x0565e0,1,
-0x0565f0,1,
-0x056600,1,
-0x056610,1,
-0x056620,1,
-0x056630,1,
-0x056640,1,
-0x056650,1,
-0x056660,1,
-0x056670,1,
-0x056680,1,
-0x056690,1,
-0x0566a0,1,
-0x0566b0,1,
-0x0566c0,1,
-0x0566d0,1,
-0x0566e0,1,
-0x0566f0,1,
-0x056700,1,
-0x056710,1,
-0x056720,1,
-0x056730,1,
-0x056740,1,
-0x056750,1,
-0x056760,1,
-0x056770,1,
-0x056780,1,
-0x056790,1,
-0x0567a0,1,
-0x0567b0,1,
-0x0567c0,1,
-0x0567d0,1,
-0x0567e0,1,
-0x0567f0,1,
-0x056800,1,
-0x056810,1,
-0x056820,1,
-0x056830,1,
-0x056840,1,
-0x056850,1,
-0x056860,1,
-0x056870,1,
-0x056880,1,
-0x056890,1,
-0x0568a0,1,
-0x0568b0,1,
-0x0568c0,1,
-0x0568d0,1,
-0x0568e0,1,
-0x0568f0,1,
-0x056900,1,
-0x056910,1,
-0x056920,1,
-0x056930,1,
-0x056940,1,
-0x056950,1,
-0x056960,1,
-0x056970,1,
-0x056980,1,
-0x056990,1,
-0x0569a0,1,
-0x0569b0,1,
-0x0569c0,1,
-0x0569d0,1,
-0x0569e0,1,
-0x0569f0,1,
-0x056a00,1,
-0x056a10,1,
-0x056a20,1,
-0x056a30,1,
-0x056a40,1,
-0x056a50,1,
-0x056a60,1,
-0x056a70,1,
-0x056a80,1,
-0x056a90,1,
-0x056aa0,1,
-0x056ab0,1,
-0x056ac0,1,
-0x056ad0,1,
-0x056ae0,1,
-0x056af0,1,
-0x056b00,1,
-0x056b10,1,
-0x056b20,1,
-0x056b30,1,
-0x056b40,1,
-0x056b50,1,
-0x056b60,1,
-0x056b70,1,
-0x056b80,1,
-0x056b90,1,
-0x056ba0,1,
-0x056bb0,1,
-0x056bc0,1,
-0x056bd0,1,
-0x056be0,1,
-0x056bf0,1,
-0x056c00,1,
-0x056c10,1,
-0x056c20,1,
-0x056c30,1,
-0x056c40,1,
-0x056c50,1,
-0x056c60,1,
-0x056c70,1,
-0x056c80,1,
-0x056c90,1,
-0x056ca0,1,
-0x056cb0,1,
-0x056cc0,1,
-0x056cd0,1,
-0x056ce0,1,
-0x056cf0,1,
-0x056d00,1,
-0x056d10,1,
-0x056d20,1,
-0x056d30,1,
-0x056d40,1,
-0x056d50,1,
-0x056d60,1,
-0x056d70,1,
-0x056d80,1,
-0x056d90,1,
-0x056da0,1,
-0x056db0,1,
-0x056dc0,1,
-0x056dd0,1,
-0x056de0,1,
-0x056df0,1,
-0x056e00,1,
-0x056e10,1,
-0x056e20,1,
-0x056e30,1,
-0x056e40,1,
-0x056e50,1,
-0x056e60,1,
-0x056e70,1,
-0x056e80,1,
-0x056e90,1,
-0x056ea0,1,
-0x056eb0,1,
-0x056ec0,1,
-0x056ed0,1,
-0x056ee0,1,
-0x056ef0,1,
-0x056f00,1,
-0x056f10,1,
-0x056f20,1,
-0x056f30,1,
-0x056f40,1,
-0x056f50,1,
-0x056f60,1,
-0x056f70,1,
-0x056f80,1,
-0x056f90,1,
-0x056fa0,1,
-0x056fb0,1,
-0x056fc0,1,
-0x056fd0,1,
-0x056fe0,1,
-0x056ff0,1,
-0x057000,16,
-0x057100,8,
-0x057124,7,
-0x057144,7,
-0x057200,3,
-0x0577f8,2,
-0x058000,3,
-0x058018,3,
-0x058034,3,
-0x058104,6,
-0x058134,3,
-0x05814c,1,
-0x058170,3,
-0x058200,1,
-0x058210,2,
-0x058220,1,
-0x058230,2,
-0x058240,1,
-0x058250,2,
-0x058400,32,
-0x058484,4,
-0x060000,16384,
-0x070200,28,
-0x070284,1,
-0x070290,4,
-0x070300,1,
-0x070314,4,
-0x070c00,1,
-0x070c24,1,
-0x070c2c,1,
-0x070c40,2,
-0x070e00,12,
-0x070e34,1,
-0x070e40,1,
-0x070e50,2,
-0x071000,7,
-0x072000,7,
-0x073000,840,
-0x074004,3,
-0x074200,1,
-0x074210,2,
-0x074220,1,
-0x074230,2,
-0x074480,16,
-0x0744c4,35,
-0x074560,15,
-0x080000,2,
-0x080018,2,
-0x080034,2,
-0x080104,3,
-0x080134,2,
-0x08014c,1,
-0x080170,2,
-0x080200,1,
-0x080210,2,
-0x080220,1,
-0x080230,2,
-0x080400,1,
-0x080410,2,
-0x080420,3,
-0x080430,22,
-0x0804ac,1,
-0x0804c0,6,
-0x080500,1,
-0x080510,2,
-0x080520,3,
-0x080540,8,
-0x080580,6,
-0x0805a0,6,
-0x080600,10,
-0x080640,10,
-0x080680,10,
-0x0806c0,10,
-0x080700,10,
-0x080740,10,
-0x080800,5,
-0x080820,5,
-0x080890,10,
-0x0808e0,1,
-0x0808f0,2,
-0x080900,5,
-0x080920,5,
-0x080990,10,
-0x0809e0,1,
-0x0809f0,2,
-0x080a00,1,
-0x080a10,2,
-0x080a20,1,
-0x080a30,2,
-0x080a48,3,
-0x080a80,3,
-0x080a90,1,
-0x080a98,12,
-0x080b04,2,
-0x080b14,3,
-0x080b24,2,
-0x080b34,3,
-0x080b80,5,
-0x080b98,3,
-0x080bb0,2,
-0x080bc0,5,
-0x080bd8,3,
-0x080bf0,2,
-0x080c00,10,
-0x080c2c,12,
-0x080c80,26,
-0x080d00,2,
-0x080d20,1,
-0x080e00,10,
-0x080e2c,12,
-0x080e80,26,
-0x080f00,2,
-0x080f20,1,
-0x081000,5,
-0x081020,5,
-0x081090,10,
-0x0810e0,1,
-0x0810f0,2,
-0x081100,5,
-0x081120,5,
-0x081190,10,
-0x0811e0,1,
-0x0811f0,2,
-0x081200,1,
-0x081210,2,
-0x081220,1,
-0x081230,2,
-0x081248,3,
-0x081280,3,
-0x081290,1,
-0x081298,12,
-0x081304,2,
-0x081314,3,
-0x081324,2,
-0x081334,3,
-0x081380,5,
-0x081398,3,
-0x0813b0,2,
-0x0813c0,5,
-0x0813d8,3,
-0x0813f0,2,
-0x081400,10,
-0x08142c,12,
-0x081480,26,
-0x081500,2,
-0x081520,1,
-0x081600,10,
-0x08162c,12,
-0x081680,26,
-0x081700,2,
-0x081720,1,
-0x081800,5,
-0x081820,5,
-0x081890,10,
-0x0818e0,1,
-0x0818f0,2,
-0x081900,5,
-0x081920,5,
-0x081990,10,
-0x0819e0,1,
-0x0819f0,2,
-0x081a00,1,
-0x081a10,2,
-0x081a20,1,
-0x081a30,2,
-0x081a48,3,
-0x081a80,3,
-0x081a90,1,
-0x081a98,12,
-0x081b04,2,
-0x081b14,3,
-0x081b24,2,
-0x081b34,3,
-0x081b80,5,
-0x081b98,3,
-0x081bb0,2,
-0x081bc0,5,
-0x081bd8,3,
-0x081bf0,2,
-0x081c00,10,
-0x081c2c,12,
-0x081c80,26,
-0x081d00,2,
-0x081d20,1,
-0x081e00,10,
-0x081e2c,12,
-0x081e80,26,
-0x081f00,2,
-0x081f20,1,
-0x082000,7,
-0x082020,8,
-0x082044,8,
-0x082080,7,
-0x0820a0,8,
-0x0820c4,8,
-0x082100,7,
-0x082120,8,
-0x082144,8,
-0x082180,7,
-0x0821a0,8,
-0x0821c4,8,
-0x082200,7,
-0x082220,8,
-0x082244,8,
-0x082280,7,
-0x0822a0,8,
-0x0822c4,8,
-0x082400,1,
-0x082418,1,
-0x082434,1,
-0x082504,1,
-0x082534,1,
-0x08254c,1,
-0x082570,2,
-0x082600,1,
-0x082610,2,
-0x082804,15,
-0x082844,15,
-0x082884,15,
-0x0828c4,15,
-0x082904,15,
-0x082944,16,
-0x082990,2,
-0x0829a0,1,
-0x0829b0,2,
-0x0829c0,2,
-0x082a00,400,
-0x083080,28,
-0x083100,28,
-0x083184,2,
-0x083194,3,
-0x0831a4,2,
-0x0831b4,10,
-0x083200,7,
-0x083260,20,
-0x0832c0,2,
-0x0832cc,2,
-0x0832d8,3,
-0x083300,1,
-0x083310,2,
-0x083320,1,
-0x083330,2,
-0x083340,1,
-0x083350,2,
-0x083360,1,
-0x083370,2,
-0x083380,1,
-0x083400,16,
-0x083480,28,
-0x083500,28,
-0x083584,2,
-0x083594,3,
-0x0835a4,2,
-0x0835b4,10,
-0x083600,7,
-0x083660,20,
-0x0836c0,2,
-0x0836cc,2,
-0x0836d8,3,
-0x083700,1,
-0x083710,2,
-0x083720,1,
-0x083730,2,
-0x083740,1,
-0x083750,2,
-0x083760,1,
-0x083770,2,
-0x083780,1,
-0x083800,16,
-0x083880,28,
-0x083900,28,
-0x083984,2,
-0x083994,3,
-0x0839a4,2,
-0x0839b4,10,
-0x083a00,7,
-0x083a60,20,
-0x083ac0,2,
-0x083acc,2,
-0x083ad8,3,
-0x083b00,1,
-0x083b10,2,
-0x083b20,1,
-0x083b30,2,
-0x083b40,1,
-0x083b50,2,
-0x083b60,1,
-0x083b70,2,
-0x083b80,1,
-0x083c00,18,
-0x083c60,5,
-0x083c78,7,
-0x083c98,6,
-0x083ce0,3,
-0x083d04,7,
-0x083d30,1,
-0x083d44,7,
-0x083d70,1,
-0x083d84,7,
-0x083db0,1,
-0x083dc4,7,
-0x083df0,1,
-0x083e04,7,
-0x083e30,1,
-0x083e44,7,
-0x083e70,1,
-0x083e84,7,
-0x083eb0,1,
-0x083ec4,7,
-0x083ef0,1,
-0x083f00,1,
-0x083f24,1,
-0x083f30,4,
-0x083f44,1,
-0x083f50,4,
-0x083fa0,3,
-0x084000,5,
-0x084018,3,
-0x084080,2,
-0x08408c,1,
-0x0840a0,9,
-0x0840d0,2,
-0x0840e0,1,
-0x0840e8,1,
-0x084100,2,
-0x08410c,1,
-0x084120,9,
-0x084150,2,
-0x084160,1,
-0x084168,1,
-0x084180,2,
-0x08418c,1,
-0x0841a0,9,
-0x0841d0,2,
-0x0841e0,1,
-0x0841e8,1,
-0x084200,2,
-0x08420c,1,
-0x084220,9,
-0x084250,2,
-0x084260,1,
-0x084268,1,
-0x084284,2,
-0x0842a8,2,
-0x0842b4,1,
-0x0842c4,2,
-0x0842e8,2,
-0x0842f4,1,
-0x084400,3,
-0x084410,15,
-0x084450,16,
-0x08449c,1,
-0x0844b0,9,
-0x0844e0,1,
-0x0844f0,3,
-0x084500,12,
-0x084534,4,
-0x084558,1,
-0x084580,1,
-0x084594,2,
-0x0845ac,11,
-0x0845ec,4,
-0x084600,15,
-0x084640,3,
-0x084650,3,
-0x084660,1,
-0x084670,2,
-0x084680,1,
-0x084690,2,
-0x0846c0,4,
-0x0846d4,8,
-0x084700,4,
-0x084714,8,
-0x084800,5,
-0x084818,3,
-0x084880,2,
-0x08488c,1,
-0x0848a0,9,
-0x0848d0,2,
-0x0848e0,1,
-0x0848e8,1,
-0x084900,2,
-0x08490c,1,
-0x084920,9,
-0x084950,2,
-0x084960,1,
-0x084968,1,
-0x084980,2,
-0x08498c,1,
-0x0849a0,9,
-0x0849d0,2,
-0x0849e0,1,
-0x0849e8,1,
-0x084a00,2,
-0x084a0c,1,
-0x084a20,9,
-0x084a50,2,
-0x084a60,1,
-0x084a68,1,
-0x084a84,2,
-0x084aa8,2,
-0x084ab4,1,
-0x084ac4,2,
-0x084ae8,2,
-0x084af4,1,
-0x084c00,3,
-0x084c10,15,
-0x084c50,16,
-0x084c9c,1,
-0x084cb0,9,
-0x084ce0,1,
-0x084cf0,3,
-0x084d00,12,
-0x084d34,4,
-0x084d58,1,
-0x084d80,1,
-0x084d94,2,
-0x084dac,11,
-0x084dec,4,
-0x084e00,15,
-0x084e40,3,
-0x084e50,3,
-0x084e60,1,
-0x084e70,2,
-0x084e80,1,
-0x084e90,2,
-0x084ec0,4,
-0x084ed4,8,
-0x084f00,4,
-0x084f14,8,
-0x085000,5,
-0x085018,3,
-0x085080,2,
-0x08508c,1,
-0x0850a0,9,
-0x0850d0,2,
-0x0850e0,1,
-0x0850e8,1,
-0x085100,2,
-0x08510c,1,
-0x085120,9,
-0x085150,2,
-0x085160,1,
-0x085168,1,
-0x085180,2,
-0x08518c,1,
-0x0851a0,9,
-0x0851d0,2,
-0x0851e0,1,
-0x0851e8,1,
-0x085200,2,
-0x08520c,1,
-0x085220,9,
-0x085250,2,
-0x085260,1,
-0x085268,1,
-0x085284,2,
-0x0852a8,2,
-0x0852b4,1,
-0x0852c4,2,
-0x0852e8,2,
-0x0852f4,1,
-0x085400,3,
-0x085410,15,
-0x085450,16,
-0x08549c,1,
-0x0854b0,9,
-0x0854e0,1,
-0x0854f0,3,
-0x085500,12,
-0x085534,4,
-0x085558,1,
-0x085580,1,
-0x085594,2,
-0x0855ac,11,
-0x0855ec,4,
-0x085600,15,
-0x085640,3,
-0x085650,3,
-0x085660,1,
-0x085670,2,
-0x085680,1,
-0x085690,2,
-0x0856c0,4,
-0x0856d4,8,
-0x085700,4,
-0x085714,8,
-0x085800,31,
-0x085880,8,
-0x0858a4,1,
-0x0858b4,20,
-0x085910,2,
-0x085920,3,
-0x085934,1,
-0x08593c,2,
-0x085950,2,
-0x085a00,11,
-0x085a4c,8,
-0x085a70,2,
-0x085a7c,33,
-0x085c00,8,
-0x085c40,2,
-0x085c4c,11,
-0x085c80,8,
-0x085cc0,2,
-0x085ccc,11,
-0x085d00,8,
-0x085d40,2,
-0x085d4c,11,
-0x085d80,8,
-0x085dc0,2,
-0x085dcc,11,
-0x085e00,8,
-0x085e40,2,
-0x085e4c,11,
-0x085e80,8,
-0x085ec0,2,
-0x085ecc,11,
-0x085f00,9,
-0x085f30,2,
-0x085f40,49,
-0x086018,1,
-0x086034,1,
-0x086104,1,
-0x086134,1,
-0x08614c,1,
-0x086170,2,
-0x086200,1,
-0x086210,2,
-0x086400,5,
-0x086418,9,
-0x086440,5,
-0x086460,1,
-0x086470,2,
-0x086500,5,
-0x086518,9,
-0x086540,5,
-0x086560,1,
-0x086570,2,
-0x086600,5,
-0x086618,9,
-0x086640,5,
-0x086660,1,
-0x086670,2,
-0x086700,1,
-0x086800,6,
-0x08681c,3,
-0x08682c,3,
-0x08683c,8,
-0x086860,1,
-0x086868,1,
-0x086870,2,
-0x086880,1,
-0x086890,2,
-0x0868a0,1,
-0x0868b0,2,
-0x0868c0,1,
-0x0868d0,2,
-0x0868e0,1,
-0x0868f0,2,
-0x086900,29,
-0x086980,27,
-0x0869f0,1,
-0x086c00,6,
-0x086c1c,3,
-0x086c2c,3,
-0x086c3c,8,
-0x086c60,1,
-0x086c68,1,
-0x086c70,2,
-0x086c80,1,
-0x086c90,2,
-0x086ca0,1,
-0x086cb0,2,
-0x086cc0,1,
-0x086cd0,2,
-0x086ce0,1,
-0x086cf0,2,
-0x086d00,29,
-0x086d80,27,
-0x086df0,1,
-0x087000,6,
-0x08701c,3,
-0x08702c,3,
-0x08703c,8,
-0x087060,1,
-0x087068,1,
-0x087070,2,
-0x087080,1,
-0x087090,2,
-0x0870a0,1,
-0x0870b0,2,
-0x0870c0,1,
-0x0870d0,2,
-0x0870e0,1,
-0x0870f0,2,
-0x087100,29,
-0x087180,27,
-0x0871f0,1,
-0x087400,6,
-0x08741c,3,
-0x08742c,3,
-0x08743c,8,
-0x087460,1,
-0x087468,1,
-0x087470,2,
-0x087480,1,
-0x087490,2,
-0x0874a0,1,
-0x0874b0,2,
-0x0874c0,1,
-0x0874d0,2,
-0x0874e0,1,
-0x0874f0,2,
-0x087500,29,
-0x087580,27,
-0x0875f0,1,
-0x087800,6,
-0x08781c,3,
-0x08782c,3,
-0x08783c,8,
-0x087860,1,
-0x087868,1,
-0x087870,2,
-0x087880,1,
-0x087890,2,
-0x0878a0,1,
-0x0878b0,2,
-0x0878c0,1,
-0x0878d0,2,
-0x0878e0,1,
-0x0878f0,2,
-0x087900,29,
-0x087980,27,
-0x0879f0,1,
-0x087c00,6,
-0x087c1c,3,
-0x087c2c,3,
-0x087c3c,8,
-0x087c60,1,
-0x087c68,1,
-0x087c70,2,
-0x087c80,1,
-0x087c90,2,
-0x087ca0,1,
-0x087cb0,2,
-0x087cc0,1,
-0x087cd0,2,
-0x087ce0,1,
-0x087cf0,2,
-0x087d00,29,
-0x087d80,27,
-0x087df0,1,
-0x088000,2,
-0x088018,2,
-0x088034,2,
-0x088104,3,
-0x088134,2,
-0x08814c,1,
-0x088170,2,
-0x088200,1,
-0x088210,2,
-0x088220,1,
-0x088230,2,
-0x088400,1,
-0x088410,2,
-0x088420,3,
-0x088430,22,
-0x0884ac,1,
-0x0884c0,6,
-0x088500,1,
-0x088510,2,
-0x088520,3,
-0x088540,8,
-0x088580,6,
-0x0885a0,6,
-0x088600,10,
-0x088640,10,
-0x088680,10,
-0x0886c0,10,
-0x088700,10,
-0x088740,10,
-0x088800,5,
-0x088820,5,
-0x088890,10,
-0x0888e0,1,
-0x0888f0,2,
-0x088900,5,
-0x088920,5,
-0x088990,10,
-0x0889e0,1,
-0x0889f0,2,
-0x088a00,1,
-0x088a10,2,
-0x088a20,1,
-0x088a30,2,
-0x088a48,3,
-0x088a80,3,
-0x088a90,1,
-0x088a98,12,
-0x088b04,2,
-0x088b14,3,
-0x088b24,2,
-0x088b34,3,
-0x088b80,5,
-0x088b98,3,
-0x088bb0,2,
-0x088bc0,5,
-0x088bd8,3,
-0x088bf0,2,
-0x088c00,10,
-0x088c2c,12,
-0x088c80,26,
-0x088d00,2,
-0x088d20,1,
-0x088e00,10,
-0x088e2c,12,
-0x088e80,26,
-0x088f00,2,
-0x088f20,1,
-0x089000,5,
-0x089020,5,
-0x089090,10,
-0x0890e0,1,
-0x0890f0,2,
-0x089100,5,
-0x089120,5,
-0x089190,10,
-0x0891e0,1,
-0x0891f0,2,
-0x089200,1,
-0x089210,2,
-0x089220,1,
-0x089230,2,
-0x089248,3,
-0x089280,3,
-0x089290,1,
-0x089298,12,
-0x089304,2,
-0x089314,3,
-0x089324,2,
-0x089334,3,
-0x089380,5,
-0x089398,3,
-0x0893b0,2,
-0x0893c0,5,
-0x0893d8,3,
-0x0893f0,2,
-0x089400,10,
-0x08942c,12,
-0x089480,26,
-0x089500,2,
-0x089520,1,
-0x089600,10,
-0x08962c,12,
-0x089680,26,
-0x089700,2,
-0x089720,1,
-0x089800,5,
-0x089820,5,
-0x089890,10,
-0x0898e0,1,
-0x0898f0,2,
-0x089900,5,
-0x089920,5,
-0x089990,10,
-0x0899e0,1,
-0x0899f0,2,
-0x089a00,1,
-0x089a10,2,
-0x089a20,1,
-0x089a30,2,
-0x089a48,3,
-0x089a80,3,
-0x089a90,1,
-0x089a98,12,
-0x089b04,2,
-0x089b14,3,
-0x089b24,2,
-0x089b34,3,
-0x089b80,5,
-0x089b98,3,
-0x089bb0,2,
-0x089bc0,5,
-0x089bd8,3,
-0x089bf0,2,
-0x089c00,10,
-0x089c2c,12,
-0x089c80,26,
-0x089d00,2,
-0x089d20,1,
-0x089e00,10,
-0x089e2c,12,
-0x089e80,26,
-0x089f00,2,
-0x089f20,1,
-0x08a000,7,
-0x08a020,8,
-0x08a044,8,
-0x08a080,7,
-0x08a0a0,8,
-0x08a0c4,8,
-0x08a100,7,
-0x08a120,8,
-0x08a144,8,
-0x08a180,7,
-0x08a1a0,8,
-0x08a1c4,8,
-0x08a200,7,
-0x08a220,8,
-0x08a244,8,
-0x08a280,7,
-0x08a2a0,8,
-0x08a2c4,8,
-0x08a400,1,
-0x08a418,1,
-0x08a434,1,
-0x08a504,1,
-0x08a534,1,
-0x08a54c,1,
-0x08a570,2,
-0x08a600,1,
-0x08a610,2,
-0x08a804,15,
-0x08a844,15,
-0x08a884,15,
-0x08a8c4,15,
-0x08a904,15,
-0x08a944,16,
-0x08a990,2,
-0x08a9a0,1,
-0x08a9b0,2,
-0x08a9c0,2,
-0x08aa00,400,
-0x08b080,28,
-0x08b100,28,
-0x08b184,2,
-0x08b194,3,
-0x08b1a4,2,
-0x08b1b4,10,
-0x08b200,7,
-0x08b260,20,
-0x08b2c0,2,
-0x08b2cc,2,
-0x08b2d8,3,
-0x08b300,1,
-0x08b310,2,
-0x08b320,1,
-0x08b330,2,
-0x08b340,1,
-0x08b350,2,
-0x08b360,1,
-0x08b370,2,
-0x08b380,1,
-0x08b400,16,
-0x08b480,28,
-0x08b500,28,
-0x08b584,2,
-0x08b594,3,
-0x08b5a4,2,
-0x08b5b4,10,
-0x08b600,7,
-0x08b660,20,
-0x08b6c0,2,
-0x08b6cc,2,
-0x08b6d8,3,
-0x08b700,1,
-0x08b710,2,
-0x08b720,1,
-0x08b730,2,
-0x08b740,1,
-0x08b750,2,
-0x08b760,1,
-0x08b770,2,
-0x08b780,1,
-0x08b800,16,
-0x08b880,28,
-0x08b900,28,
-0x08b984,2,
-0x08b994,3,
-0x08b9a4,2,
-0x08b9b4,10,
-0x08ba00,7,
-0x08ba60,20,
-0x08bac0,2,
-0x08bacc,2,
-0x08bad8,3,
-0x08bb00,1,
-0x08bb10,2,
-0x08bb20,1,
-0x08bb30,2,
-0x08bb40,1,
-0x08bb50,2,
-0x08bb60,1,
-0x08bb70,2,
-0x08bb80,1,
-0x08bc00,18,
-0x08bc60,5,
-0x08bc78,7,
-0x08bc98,6,
-0x08bce0,3,
-0x08bd04,7,
-0x08bd30,1,
-0x08bd44,7,
-0x08bd70,1,
-0x08bd84,7,
-0x08bdb0,1,
-0x08bdc4,7,
-0x08bdf0,1,
-0x08be04,7,
-0x08be30,1,
-0x08be44,7,
-0x08be70,1,
-0x08be84,7,
-0x08beb0,1,
-0x08bec4,7,
-0x08bef0,1,
-0x08bf00,1,
-0x08bf24,1,
-0x08bf30,4,
-0x08bf44,1,
-0x08bf50,4,
-0x08bfa0,3,
-0x08c000,5,
-0x08c018,3,
-0x08c080,2,
-0x08c08c,1,
-0x08c0a0,9,
-0x08c0d0,2,
-0x08c0e0,1,
-0x08c0e8,1,
-0x08c100,2,
-0x08c10c,1,
-0x08c120,9,
-0x08c150,2,
-0x08c160,1,
-0x08c168,1,
-0x08c180,2,
-0x08c18c,1,
-0x08c1a0,9,
-0x08c1d0,2,
-0x08c1e0,1,
-0x08c1e8,1,
-0x08c200,2,
-0x08c20c,1,
-0x08c220,9,
-0x08c250,2,
-0x08c260,1,
-0x08c268,1,
-0x08c284,2,
-0x08c2a8,2,
-0x08c2b4,1,
-0x08c2c4,2,
-0x08c2e8,2,
-0x08c2f4,1,
-0x08c400,3,
-0x08c410,15,
-0x08c450,16,
-0x08c49c,1,
-0x08c4b0,9,
-0x08c4e0,1,
-0x08c4f0,3,
-0x08c500,12,
-0x08c534,4,
-0x08c558,1,
-0x08c580,1,
-0x08c594,2,
-0x08c5ac,11,
-0x08c5ec,4,
-0x08c600,15,
-0x08c640,3,
-0x08c650,3,
-0x08c660,1,
-0x08c670,2,
-0x08c680,1,
-0x08c690,2,
-0x08c6c0,4,
-0x08c6d4,8,
-0x08c700,4,
-0x08c714,8,
-0x08c800,5,
-0x08c818,3,
-0x08c880,2,
-0x08c88c,1,
-0x08c8a0,9,
-0x08c8d0,2,
-0x08c8e0,1,
-0x08c8e8,1,
-0x08c900,2,
-0x08c90c,1,
-0x08c920,9,
-0x08c950,2,
-0x08c960,1,
-0x08c968,1,
-0x08c980,2,
-0x08c98c,1,
-0x08c9a0,9,
-0x08c9d0,2,
-0x08c9e0,1,
-0x08c9e8,1,
-0x08ca00,2,
-0x08ca0c,1,
-0x08ca20,9,
-0x08ca50,2,
-0x08ca60,1,
-0x08ca68,1,
-0x08ca84,2,
-0x08caa8,2,
-0x08cab4,1,
-0x08cac4,2,
-0x08cae8,2,
-0x08caf4,1,
-0x08cc00,3,
-0x08cc10,15,
-0x08cc50,16,
-0x08cc9c,1,
-0x08ccb0,9,
-0x08cce0,1,
-0x08ccf0,3,
-0x08cd00,12,
-0x08cd34,4,
-0x08cd58,1,
-0x08cd80,1,
-0x08cd94,2,
-0x08cdac,11,
-0x08cdec,4,
-0x08ce00,15,
-0x08ce40,3,
-0x08ce50,3,
-0x08ce60,1,
-0x08ce70,2,
-0x08ce80,1,
-0x08ce90,2,
-0x08cec0,4,
-0x08ced4,8,
-0x08cf00,4,
-0x08cf14,8,
-0x08d000,5,
-0x08d018,3,
-0x08d080,2,
-0x08d08c,1,
-0x08d0a0,9,
-0x08d0d0,2,
-0x08d0e0,1,
-0x08d0e8,1,
-0x08d100,2,
-0x08d10c,1,
-0x08d120,9,
-0x08d150,2,
-0x08d160,1,
-0x08d168,1,
-0x08d180,2,
-0x08d18c,1,
-0x08d1a0,9,
-0x08d1d0,2,
-0x08d1e0,1,
-0x08d1e8,1,
-0x08d200,2,
-0x08d20c,1,
-0x08d220,9,
-0x08d250,2,
-0x08d260,1,
-0x08d268,1,
-0x08d284,2,
-0x08d2a8,2,
-0x08d2b4,1,
-0x08d2c4,2,
-0x08d2e8,2,
-0x08d2f4,1,
-0x08d400,3,
-0x08d410,15,
-0x08d450,16,
-0x08d49c,1,
-0x08d4b0,9,
-0x08d4e0,1,
-0x08d4f0,3,
-0x08d500,12,
-0x08d534,4,
-0x08d558,1,
-0x08d580,1,
-0x08d594,2,
-0x08d5ac,11,
-0x08d5ec,4,
-0x08d600,15,
-0x08d640,3,
-0x08d650,3,
-0x08d660,1,
-0x08d670,2,
-0x08d680,1,
-0x08d690,2,
-0x08d6c0,4,
-0x08d6d4,8,
-0x08d700,4,
-0x08d714,8,
-0x08d800,31,
-0x08d880,8,
-0x08d8a4,1,
-0x08d8b4,20,
-0x08d910,2,
-0x08d920,3,
-0x08d934,1,
-0x08d93c,2,
-0x08d950,2,
-0x08da00,11,
-0x08da4c,8,
-0x08da70,2,
-0x08da7c,33,
-0x08dc00,8,
-0x08dc40,2,
-0x08dc4c,11,
-0x08dc80,8,
-0x08dcc0,2,
-0x08dccc,11,
-0x08dd00,8,
-0x08dd40,2,
-0x08dd4c,11,
-0x08dd80,8,
-0x08ddc0,2,
-0x08ddcc,11,
-0x08de00,8,
-0x08de40,2,
-0x08de4c,11,
-0x08de80,8,
-0x08dec0,2,
-0x08decc,11,
-0x08df00,9,
-0x08df30,2,
-0x08df40,49,
-0x08e018,1,
-0x08e034,1,
-0x08e104,1,
-0x08e134,1,
-0x08e14c,1,
-0x08e170,2,
-0x08e200,1,
-0x08e210,2,
-0x08e400,5,
-0x08e418,9,
-0x08e440,5,
-0x08e460,1,
-0x08e470,2,
-0x08e500,5,
-0x08e518,9,
-0x08e540,5,
-0x08e560,1,
-0x08e570,2,
-0x08e600,5,
-0x08e618,9,
-0x08e640,5,
-0x08e660,1,
-0x08e670,2,
-0x08e700,1,
-0x08e800,6,
-0x08e81c,3,
-0x08e82c,3,
-0x08e83c,8,
-0x08e860,1,
-0x08e868,1,
-0x08e870,2,
-0x08e880,1,
-0x08e890,2,
-0x08e8a0,1,
-0x08e8b0,2,
-0x08e8c0,1,
-0x08e8d0,2,
-0x08e8e0,1,
-0x08e8f0,2,
-0x08e900,29,
-0x08e980,27,
-0x08e9f0,1,
-0x08ec00,6,
-0x08ec1c,3,
-0x08ec2c,3,
-0x08ec3c,8,
-0x08ec60,1,
-0x08ec68,1,
-0x08ec70,2,
-0x08ec80,1,
-0x08ec90,2,
-0x08eca0,1,
-0x08ecb0,2,
-0x08ecc0,1,
-0x08ecd0,2,
-0x08ece0,1,
-0x08ecf0,2,
-0x08ed00,29,
-0x08ed80,27,
-0x08edf0,1,
-0x08f000,6,
-0x08f01c,3,
-0x08f02c,3,
-0x08f03c,8,
-0x08f060,1,
-0x08f068,1,
-0x08f070,2,
-0x08f080,1,
-0x08f090,2,
-0x08f0a0,1,
-0x08f0b0,2,
-0x08f0c0,1,
-0x08f0d0,2,
-0x08f0e0,1,
-0x08f0f0,2,
-0x08f100,29,
-0x08f180,27,
-0x08f1f0,1,
-0x08f400,6,
-0x08f41c,3,
-0x08f42c,3,
-0x08f43c,8,
-0x08f460,1,
-0x08f468,1,
-0x08f470,2,
-0x08f480,1,
-0x08f490,2,
-0x08f4a0,1,
-0x08f4b0,2,
-0x08f4c0,1,
-0x08f4d0,2,
-0x08f4e0,1,
-0x08f4f0,2,
-0x08f500,29,
-0x08f580,27,
-0x08f5f0,1,
-0x08f800,6,
-0x08f81c,3,
-0x08f82c,3,
-0x08f83c,8,
-0x08f860,1,
-0x08f868,1,
-0x08f870,2,
-0x08f880,1,
-0x08f890,2,
-0x08f8a0,1,
-0x08f8b0,2,
-0x08f8c0,1,
-0x08f8d0,2,
-0x08f8e0,1,
-0x08f8f0,2,
-0x08f900,29,
-0x08f980,27,
-0x08f9f0,1,
-0x08fc00,6,
-0x08fc1c,3,
-0x08fc2c,3,
-0x08fc3c,8,
-0x08fc60,1,
-0x08fc68,1,
-0x08fc70,2,
-0x08fc80,1,
-0x08fc90,2,
-0x08fca0,1,
-0x08fcb0,2,
-0x08fcc0,1,
-0x08fcd0,2,
-0x08fce0,1,
-0x08fcf0,2,
-0x08fd00,29,
-0x08fd80,27,
-0x08fdf0,1,
-0x090000,2,
-0x090018,2,
-0x090034,2,
-0x090104,3,
-0x090134,2,
-0x09014c,1,
-0x090170,2,
-0x090200,1,
-0x090210,2,
-0x090220,1,
-0x090230,2,
-0x090400,1,
-0x090410,2,
-0x090420,3,
-0x090430,22,
-0x0904ac,1,
-0x0904c0,6,
-0x090500,1,
-0x090510,2,
-0x090520,3,
-0x090540,8,
-0x090580,6,
-0x0905a0,6,
-0x090600,10,
-0x090640,10,
-0x090680,10,
-0x0906c0,10,
-0x090700,10,
-0x090740,10,
-0x090800,5,
-0x090820,5,
-0x090890,10,
-0x0908e0,1,
-0x0908f0,2,
-0x090900,5,
-0x090920,5,
-0x090990,10,
-0x0909e0,1,
-0x0909f0,2,
-0x090a00,1,
-0x090a10,2,
-0x090a20,1,
-0x090a30,2,
-0x090a48,3,
-0x090a80,3,
-0x090a90,1,
-0x090a98,12,
-0x090b04,2,
-0x090b14,3,
-0x090b24,2,
-0x090b34,3,
-0x090b80,5,
-0x090b98,3,
-0x090bb0,2,
-0x090bc0,5,
-0x090bd8,3,
-0x090bf0,2,
-0x090c00,10,
-0x090c2c,12,
-0x090c80,26,
-0x090d00,2,
-0x090d20,1,
-0x090e00,10,
-0x090e2c,12,
-0x090e80,26,
-0x090f00,2,
-0x090f20,1,
-0x091000,5,
-0x091020,5,
-0x091090,10,
-0x0910e0,1,
-0x0910f0,2,
-0x091100,5,
-0x091120,5,
-0x091190,10,
-0x0911e0,1,
-0x0911f0,2,
-0x091200,1,
-0x091210,2,
-0x091220,1,
-0x091230,2,
-0x091248,3,
-0x091280,3,
-0x091290,1,
-0x091298,12,
-0x091304,2,
-0x091314,3,
-0x091324,2,
-0x091334,3,
-0x091380,5,
-0x091398,3,
-0x0913b0,2,
-0x0913c0,5,
-0x0913d8,3,
-0x0913f0,2,
-0x091400,10,
-0x09142c,12,
-0x091480,26,
-0x091500,2,
-0x091520,1,
-0x091600,10,
-0x09162c,12,
-0x091680,26,
-0x091700,2,
-0x091720,1,
-0x091800,5,
-0x091820,5,
-0x091890,10,
-0x0918e0,1,
-0x0918f0,2,
-0x091900,5,
-0x091920,5,
-0x091990,10,
-0x0919e0,1,
-0x0919f0,2,
-0x091a00,1,
-0x091a10,2,
-0x091a20,1,
-0x091a30,2,
-0x091a48,3,
-0x091a80,3,
-0x091a90,1,
-0x091a98,12,
-0x091b04,2,
-0x091b14,3,
-0x091b24,2,
-0x091b34,3,
-0x091b80,5,
-0x091b98,3,
-0x091bb0,2,
-0x091bc0,5,
-0x091bd8,3,
-0x091bf0,2,
-0x091c00,10,
-0x091c2c,12,
-0x091c80,26,
-0x091d00,2,
-0x091d20,1,
-0x091e00,10,
-0x091e2c,12,
-0x091e80,26,
-0x091f00,2,
-0x091f20,1,
-0x092000,7,
-0x092020,8,
-0x092044,8,
-0x092080,7,
-0x0920a0,8,
-0x0920c4,8,
-0x092100,7,
-0x092120,8,
-0x092144,8,
-0x092180,7,
-0x0921a0,8,
-0x0921c4,8,
-0x092200,7,
-0x092220,8,
-0x092244,8,
-0x092280,7,
-0x0922a0,8,
-0x0922c4,8,
-0x092400,1,
-0x092418,1,
-0x092434,1,
-0x092504,1,
-0x092534,1,
-0x09254c,1,
-0x092570,2,
-0x092600,1,
-0x092610,2,
-0x092804,15,
-0x092844,15,
-0x092884,15,
-0x0928c4,15,
-0x092904,15,
-0x092944,16,
-0x092990,2,
-0x0929a0,1,
-0x0929b0,2,
-0x0929c0,2,
-0x092a00,400,
-0x093080,28,
-0x093100,28,
-0x093184,2,
-0x093194,3,
-0x0931a4,2,
-0x0931b4,10,
-0x093200,7,
-0x093260,20,
-0x0932c0,2,
-0x0932cc,2,
-0x0932d8,3,
-0x093300,1,
-0x093310,2,
-0x093320,1,
-0x093330,2,
-0x093340,1,
-0x093350,2,
-0x093360,1,
-0x093370,2,
-0x093380,1,
-0x093400,16,
-0x093480,28,
-0x093500,28,
-0x093584,2,
-0x093594,3,
-0x0935a4,2,
-0x0935b4,10,
-0x093600,7,
-0x093660,20,
-0x0936c0,2,
-0x0936cc,2,
-0x0936d8,3,
-0x093700,1,
-0x093710,2,
-0x093720,1,
-0x093730,2,
-0x093740,1,
-0x093750,2,
-0x093760,1,
-0x093770,2,
-0x093780,1,
-0x093800,16,
-0x093880,28,
-0x093900,28,
-0x093984,2,
-0x093994,3,
-0x0939a4,2,
-0x0939b4,10,
-0x093a00,7,
-0x093a60,20,
-0x093ac0,2,
-0x093acc,2,
-0x093ad8,3,
-0x093b00,1,
-0x093b10,2,
-0x093b20,1,
-0x093b30,2,
-0x093b40,1,
-0x093b50,2,
-0x093b60,1,
-0x093b70,2,
-0x093b80,1,
-0x093c00,18,
-0x093c60,5,
-0x093c78,7,
-0x093c98,6,
-0x093ce0,3,
-0x093d04,7,
-0x093d30,1,
-0x093d44,7,
-0x093d70,1,
-0x093d84,7,
-0x093db0,1,
-0x093dc4,7,
-0x093df0,1,
-0x093e04,7,
-0x093e30,1,
-0x093e44,7,
-0x093e70,1,
-0x093e84,7,
-0x093eb0,1,
-0x093ec4,7,
-0x093ef0,1,
-0x093f00,1,
-0x093f24,1,
-0x093f30,4,
-0x093f44,1,
-0x093f50,4,
-0x093fa0,3,
-0x094000,5,
-0x094018,3,
-0x094080,2,
-0x09408c,1,
-0x0940a0,9,
-0x0940d0,2,
-0x0940e0,1,
-0x0940e8,1,
-0x094100,2,
-0x09410c,1,
-0x094120,9,
-0x094150,2,
-0x094160,1,
-0x094168,1,
-0x094180,2,
-0x09418c,1,
-0x0941a0,9,
-0x0941d0,2,
-0x0941e0,1,
-0x0941e8,1,
-0x094200,2,
-0x09420c,1,
-0x094220,9,
-0x094250,2,
-0x094260,1,
-0x094268,1,
-0x094284,2,
-0x0942a8,2,
-0x0942b4,1,
-0x0942c4,2,
-0x0942e8,2,
-0x0942f4,1,
-0x094400,3,
-0x094410,15,
-0x094450,16,
-0x09449c,1,
-0x0944b0,9,
-0x0944e0,1,
-0x0944f0,3,
-0x094500,12,
-0x094534,4,
-0x094558,1,
-0x094580,1,
-0x094594,2,
-0x0945ac,11,
-0x0945ec,4,
-0x094600,15,
-0x094640,3,
-0x094650,3,
-0x094660,1,
-0x094670,2,
-0x094680,1,
-0x094690,2,
-0x0946c0,4,
-0x0946d4,8,
-0x094700,4,
-0x094714,8,
-0x094800,5,
-0x094818,3,
-0x094880,2,
-0x09488c,1,
-0x0948a0,9,
-0x0948d0,2,
-0x0948e0,1,
-0x0948e8,1,
-0x094900,2,
-0x09490c,1,
-0x094920,9,
-0x094950,2,
-0x094960,1,
-0x094968,1,
-0x094980,2,
-0x09498c,1,
-0x0949a0,9,
-0x0949d0,2,
-0x0949e0,1,
-0x0949e8,1,
-0x094a00,2,
-0x094a0c,1,
-0x094a20,9,
-0x094a50,2,
-0x094a60,1,
-0x094a68,1,
-0x094a84,2,
-0x094aa8,2,
-0x094ab4,1,
-0x094ac4,2,
-0x094ae8,2,
-0x094af4,1,
-0x094c00,3,
-0x094c10,15,
-0x094c50,16,
-0x094c9c,1,
-0x094cb0,9,
-0x094ce0,1,
-0x094cf0,3,
-0x094d00,12,
-0x094d34,4,
-0x094d58,1,
-0x094d80,1,
-0x094d94,2,
-0x094dac,11,
-0x094dec,4,
-0x094e00,15,
-0x094e40,3,
-0x094e50,3,
-0x094e60,1,
-0x094e70,2,
-0x094e80,1,
-0x094e90,2,
-0x094ec0,4,
-0x094ed4,8,
-0x094f00,4,
-0x094f14,8,
-0x095000,5,
-0x095018,3,
-0x095080,2,
-0x09508c,1,
-0x0950a0,9,
-0x0950d0,2,
-0x0950e0,1,
-0x0950e8,1,
-0x095100,2,
-0x09510c,1,
-0x095120,9,
-0x095150,2,
-0x095160,1,
-0x095168,1,
-0x095180,2,
-0x09518c,1,
-0x0951a0,9,
-0x0951d0,2,
-0x0951e0,1,
-0x0951e8,1,
-0x095200,2,
-0x09520c,1,
-0x095220,9,
-0x095250,2,
-0x095260,1,
-0x095268,1,
-0x095284,2,
-0x0952a8,2,
-0x0952b4,1,
-0x0952c4,2,
-0x0952e8,2,
-0x0952f4,1,
-0x095400,3,
-0x095410,15,
-0x095450,16,
-0x09549c,1,
-0x0954b0,9,
-0x0954e0,1,
-0x0954f0,3,
-0x095500,12,
-0x095534,4,
-0x095558,1,
-0x095580,1,
-0x095594,2,
-0x0955ac,11,
-0x0955ec,4,
-0x095600,15,
-0x095640,3,
-0x095650,3,
-0x095660,1,
-0x095670,2,
-0x095680,1,
-0x095690,2,
-0x0956c0,4,
-0x0956d4,8,
-0x095700,4,
-0x095714,8,
-0x095800,31,
-0x095880,8,
-0x0958a4,1,
-0x0958b4,20,
-0x095910,2,
-0x095920,3,
-0x095934,1,
-0x09593c,2,
-0x095950,2,
-0x095a00,11,
-0x095a4c,8,
-0x095a70,2,
-0x095a7c,33,
-0x095c00,8,
-0x095c40,2,
-0x095c4c,11,
-0x095c80,8,
-0x095cc0,2,
-0x095ccc,11,
-0x095d00,8,
-0x095d40,2,
-0x095d4c,11,
-0x095d80,8,
-0x095dc0,2,
-0x095dcc,11,
-0x095e00,8,
-0x095e40,2,
-0x095e4c,11,
-0x095e80,8,
-0x095ec0,2,
-0x095ecc,11,
-0x095f00,9,
-0x095f30,2,
-0x095f40,49,
-0x096018,1,
-0x096034,1,
-0x096104,1,
-0x096134,1,
-0x09614c,1,
-0x096170,2,
-0x096200,1,
-0x096210,2,
-0x096400,5,
-0x096418,9,
-0x096440,5,
-0x096460,1,
-0x096470,2,
-0x096500,5,
-0x096518,9,
-0x096540,5,
-0x096560,1,
-0x096570,2,
-0x096600,5,
-0x096618,9,
-0x096640,5,
-0x096660,1,
-0x096670,2,
-0x096700,1,
-0x096800,6,
-0x09681c,3,
-0x09682c,3,
-0x09683c,8,
-0x096860,1,
-0x096868,1,
-0x096870,2,
-0x096880,1,
-0x096890,2,
-0x0968a0,1,
-0x0968b0,2,
-0x0968c0,1,
-0x0968d0,2,
-0x0968e0,1,
-0x0968f0,2,
-0x096900,29,
-0x096980,27,
-0x0969f0,1,
-0x096c00,6,
-0x096c1c,3,
-0x096c2c,3,
-0x096c3c,8,
-0x096c60,1,
-0x096c68,1,
-0x096c70,2,
-0x096c80,1,
-0x096c90,2,
-0x096ca0,1,
-0x096cb0,2,
-0x096cc0,1,
-0x096cd0,2,
-0x096ce0,1,
-0x096cf0,2,
-0x096d00,29,
-0x096d80,27,
-0x096df0,1,
-0x097000,6,
-0x09701c,3,
-0x09702c,3,
-0x09703c,8,
-0x097060,1,
-0x097068,1,
-0x097070,2,
-0x097080,1,
-0x097090,2,
-0x0970a0,1,
-0x0970b0,2,
-0x0970c0,1,
-0x0970d0,2,
-0x0970e0,1,
-0x0970f0,2,
-0x097100,29,
-0x097180,27,
-0x0971f0,1,
-0x097400,6,
-0x09741c,3,
-0x09742c,3,
-0x09743c,8,
-0x097460,1,
-0x097468,1,
-0x097470,2,
-0x097480,1,
-0x097490,2,
-0x0974a0,1,
-0x0974b0,2,
-0x0974c0,1,
-0x0974d0,2,
-0x0974e0,1,
-0x0974f0,2,
-0x097500,29,
-0x097580,27,
-0x0975f0,1,
-0x097800,6,
-0x09781c,3,
-0x09782c,3,
-0x09783c,8,
-0x097860,1,
-0x097868,1,
-0x097870,2,
-0x097880,1,
-0x097890,2,
-0x0978a0,1,
-0x0978b0,2,
-0x0978c0,1,
-0x0978d0,2,
-0x0978e0,1,
-0x0978f0,2,
-0x097900,29,
-0x097980,27,
-0x0979f0,1,
-0x097c00,6,
-0x097c1c,3,
-0x097c2c,3,
-0x097c3c,8,
-0x097c60,1,
-0x097c68,1,
-0x097c70,2,
-0x097c80,1,
-0x097c90,2,
-0x097ca0,1,
-0x097cb0,2,
-0x097cc0,1,
-0x097cd0,2,
-0x097ce0,1,
-0x097cf0,2,
-0x097d00,29,
-0x097d80,27,
-0x097df0,1,
-0x098000,2,
-0x098018,2,
-0x098034,2,
-0x098104,3,
-0x098134,2,
-0x09814c,1,
-0x098170,2,
-0x098200,1,
-0x098210,2,
-0x098220,1,
-0x098230,2,
-0x098400,1,
-0x098410,2,
-0x098420,3,
-0x098430,22,
-0x0984ac,1,
-0x0984c0,6,
-0x098500,1,
-0x098510,2,
-0x098520,3,
-0x098540,8,
-0x098580,6,
-0x0985a0,6,
-0x098600,10,
-0x098640,10,
-0x098680,10,
-0x0986c0,10,
-0x098700,10,
-0x098740,10,
-0x098800,5,
-0x098820,5,
-0x098890,10,
-0x0988e0,1,
-0x0988f0,2,
-0x098900,5,
-0x098920,5,
-0x098990,10,
-0x0989e0,1,
-0x0989f0,2,
-0x098a00,1,
-0x098a10,2,
-0x098a20,1,
-0x098a30,2,
-0x098a48,3,
-0x098a80,3,
-0x098a90,1,
-0x098a98,12,
-0x098b04,2,
-0x098b14,3,
-0x098b24,2,
-0x098b34,3,
-0x098b80,5,
-0x098b98,3,
-0x098bb0,2,
-0x098bc0,5,
-0x098bd8,3,
-0x098bf0,2,
-0x098c00,10,
-0x098c2c,12,
-0x098c80,26,
-0x098d00,2,
-0x098d20,1,
-0x098e00,10,
-0x098e2c,12,
-0x098e80,26,
-0x098f00,2,
-0x098f20,1,
-0x099000,5,
-0x099020,5,
-0x099090,10,
-0x0990e0,1,
-0x0990f0,2,
-0x099100,5,
-0x099120,5,
-0x099190,10,
-0x0991e0,1,
-0x0991f0,2,
-0x099200,1,
-0x099210,2,
-0x099220,1,
-0x099230,2,
-0x099248,3,
-0x099280,3,
-0x099290,1,
-0x099298,12,
-0x099304,2,
-0x099314,3,
-0x099324,2,
-0x099334,3,
-0x099380,5,
-0x099398,3,
-0x0993b0,2,
-0x0993c0,5,
-0x0993d8,3,
-0x0993f0,2,
-0x099400,10,
-0x09942c,12,
-0x099480,26,
-0x099500,2,
-0x099520,1,
-0x099600,10,
-0x09962c,12,
-0x099680,26,
-0x099700,2,
-0x099720,1,
-0x099800,5,
-0x099820,5,
-0x099890,10,
-0x0998e0,1,
-0x0998f0,2,
-0x099900,5,
-0x099920,5,
-0x099990,10,
-0x0999e0,1,
-0x0999f0,2,
-0x099a00,1,
-0x099a10,2,
-0x099a20,1,
-0x099a30,2,
-0x099a48,3,
-0x099a80,3,
-0x099a90,1,
-0x099a98,12,
-0x099b04,2,
-0x099b14,3,
-0x099b24,2,
-0x099b34,3,
-0x099b80,5,
-0x099b98,3,
-0x099bb0,2,
-0x099bc0,5,
-0x099bd8,3,
-0x099bf0,2,
-0x099c00,10,
-0x099c2c,12,
-0x099c80,26,
-0x099d00,2,
-0x099d20,1,
-0x099e00,10,
-0x099e2c,12,
-0x099e80,26,
-0x099f00,2,
-0x099f20,1,
-0x09a000,7,
-0x09a020,8,
-0x09a044,8,
-0x09a080,7,
-0x09a0a0,8,
-0x09a0c4,8,
-0x09a100,7,
-0x09a120,8,
-0x09a144,8,
-0x09a180,7,
-0x09a1a0,8,
-0x09a1c4,8,
-0x09a200,7,
-0x09a220,8,
-0x09a244,8,
-0x09a280,7,
-0x09a2a0,8,
-0x09a2c4,8,
-0x09a400,1,
-0x09a418,1,
-0x09a434,1,
-0x09a504,1,
-0x09a534,1,
-0x09a54c,1,
-0x09a570,2,
-0x09a600,1,
-0x09a610,2,
-0x09a804,15,
-0x09a844,15,
-0x09a884,15,
-0x09a8c4,15,
-0x09a904,15,
-0x09a944,16,
-0x09a990,2,
-0x09a9a0,1,
-0x09a9b0,2,
-0x09a9c0,2,
-0x09aa00,400,
-0x09b080,28,
-0x09b100,28,
-0x09b184,2,
-0x09b194,3,
-0x09b1a4,2,
-0x09b1b4,10,
-0x09b200,7,
-0x09b260,20,
-0x09b2c0,2,
-0x09b2cc,2,
-0x09b2d8,3,
-0x09b300,1,
-0x09b310,2,
-0x09b320,1,
-0x09b330,2,
-0x09b340,1,
-0x09b350,2,
-0x09b360,1,
-0x09b370,2,
-0x09b380,1,
-0x09b400,16,
-0x09b480,28,
-0x09b500,28,
-0x09b584,2,
-0x09b594,3,
-0x09b5a4,2,
-0x09b5b4,10,
-0x09b600,7,
-0x09b660,20,
-0x09b6c0,2,
-0x09b6cc,2,
-0x09b6d8,3,
-0x09b700,1,
-0x09b710,2,
-0x09b720,1,
-0x09b730,2,
-0x09b740,1,
-0x09b750,2,
-0x09b760,1,
-0x09b770,2,
-0x09b780,1,
-0x09b800,16,
-0x09b880,28,
-0x09b900,28,
-0x09b984,2,
-0x09b994,3,
-0x09b9a4,2,
-0x09b9b4,10,
-0x09ba00,7,
-0x09ba60,20,
-0x09bac0,2,
-0x09bacc,2,
-0x09bad8,3,
-0x09bb00,1,
-0x09bb10,2,
-0x09bb20,1,
-0x09bb30,2,
-0x09bb40,1,
-0x09bb50,2,
-0x09bb60,1,
-0x09bb70,2,
-0x09bb80,1,
-0x09bc00,18,
-0x09bc60,5,
-0x09bc78,7,
-0x09bc98,6,
-0x09bce0,3,
-0x09bd04,7,
-0x09bd30,1,
-0x09bd44,7,
-0x09bd70,1,
-0x09bd84,7,
-0x09bdb0,1,
-0x09bdc4,7,
-0x09bdf0,1,
-0x09be04,7,
-0x09be30,1,
-0x09be44,7,
-0x09be70,1,
-0x09be84,7,
-0x09beb0,1,
-0x09bec4,7,
-0x09bef0,1,
-0x09bf00,1,
-0x09bf24,1,
-0x09bf30,4,
-0x09bf44,1,
-0x09bf50,4,
-0x09bfa0,3,
-0x09c000,5,
-0x09c018,3,
-0x09c080,2,
-0x09c08c,1,
-0x09c0a0,9,
-0x09c0d0,2,
-0x09c0e0,1,
-0x09c0e8,1,
-0x09c100,2,
-0x09c10c,1,
-0x09c120,9,
-0x09c150,2,
-0x09c160,1,
-0x09c168,1,
-0x09c180,2,
-0x09c18c,1,
-0x09c1a0,9,
-0x09c1d0,2,
-0x09c1e0,1,
-0x09c1e8,1,
-0x09c200,2,
-0x09c20c,1,
-0x09c220,9,
-0x09c250,2,
-0x09c260,1,
-0x09c268,1,
-0x09c284,2,
-0x09c2a8,2,
-0x09c2b4,1,
-0x09c2c4,2,
-0x09c2e8,2,
-0x09c2f4,1,
-0x09c400,3,
-0x09c410,15,
-0x09c450,16,
-0x09c49c,1,
-0x09c4b0,9,
-0x09c4e0,1,
-0x09c4f0,3,
-0x09c500,12,
-0x09c534,4,
-0x09c558,1,
-0x09c580,1,
-0x09c594,2,
-0x09c5ac,11,
-0x09c5ec,4,
-0x09c600,15,
-0x09c640,3,
-0x09c650,3,
-0x09c660,1,
-0x09c670,2,
-0x09c680,1,
-0x09c690,2,
-0x09c6c0,4,
-0x09c6d4,8,
-0x09c700,4,
-0x09c714,8,
-0x09c800,5,
-0x09c818,3,
-0x09c880,2,
-0x09c88c,1,
-0x09c8a0,9,
-0x09c8d0,2,
-0x09c8e0,1,
-0x09c8e8,1,
-0x09c900,2,
-0x09c90c,1,
-0x09c920,9,
-0x09c950,2,
-0x09c960,1,
-0x09c968,1,
-0x09c980,2,
-0x09c98c,1,
-0x09c9a0,9,
-0x09c9d0,2,
-0x09c9e0,1,
-0x09c9e8,1,
-0x09ca00,2,
-0x09ca0c,1,
-0x09ca20,9,
-0x09ca50,2,
-0x09ca60,1,
-0x09ca68,1,
-0x09ca84,2,
-0x09caa8,2,
-0x09cab4,1,
-0x09cac4,2,
-0x09cae8,2,
-0x09caf4,1,
-0x09cc00,3,
-0x09cc10,15,
-0x09cc50,16,
-0x09cc9c,1,
-0x09ccb0,9,
-0x09cce0,1,
-0x09ccf0,3,
-0x09cd00,12,
-0x09cd34,4,
-0x09cd58,1,
-0x09cd80,1,
-0x09cd94,2,
-0x09cdac,11,
-0x09cdec,4,
-0x09ce00,15,
-0x09ce40,3,
-0x09ce50,3,
-0x09ce60,1,
-0x09ce70,2,
-0x09ce80,1,
-0x09ce90,2,
-0x09cec0,4,
-0x09ced4,8,
-0x09cf00,4,
-0x09cf14,8,
-0x09d000,5,
-0x09d018,3,
-0x09d080,2,
-0x09d08c,1,
-0x09d0a0,9,
-0x09d0d0,2,
-0x09d0e0,1,
-0x09d0e8,1,
-0x09d100,2,
-0x09d10c,1,
-0x09d120,9,
-0x09d150,2,
-0x09d160,1,
-0x09d168,1,
-0x09d180,2,
-0x09d18c,1,
-0x09d1a0,9,
-0x09d1d0,2,
-0x09d1e0,1,
-0x09d1e8,1,
-0x09d200,2,
-0x09d20c,1,
-0x09d220,9,
-0x09d250,2,
-0x09d260,1,
-0x09d268,1,
-0x09d284,2,
-0x09d2a8,2,
-0x09d2b4,1,
-0x09d2c4,2,
-0x09d2e8,2,
-0x09d2f4,1,
-0x09d400,3,
-0x09d410,15,
-0x09d450,16,
-0x09d49c,1,
-0x09d4b0,9,
-0x09d4e0,1,
-0x09d4f0,3,
-0x09d500,12,
-0x09d534,4,
-0x09d558,1,
-0x09d580,1,
-0x09d594,2,
-0x09d5ac,11,
-0x09d5ec,4,
-0x09d600,15,
-0x09d640,3,
-0x09d650,3,
-0x09d660,1,
-0x09d670,2,
-0x09d680,1,
-0x09d690,2,
-0x09d6c0,4,
-0x09d6d4,8,
-0x09d700,4,
-0x09d714,8,
-0x09d800,31,
-0x09d880,8,
-0x09d8a4,1,
-0x09d8b4,20,
-0x09d910,2,
-0x09d920,3,
-0x09d934,1,
-0x09d93c,2,
-0x09d950,2,
-0x09da00,11,
-0x09da4c,8,
-0x09da70,2,
-0x09da7c,33,
-0x09dc00,8,
-0x09dc40,2,
-0x09dc4c,11,
-0x09dc80,8,
-0x09dcc0,2,
-0x09dccc,11,
-0x09dd00,8,
-0x09dd40,2,
-0x09dd4c,11,
-0x09dd80,8,
-0x09ddc0,2,
-0x09ddcc,11,
-0x09de00,8,
-0x09de40,2,
-0x09de4c,11,
-0x09de80,8,
-0x09dec0,2,
-0x09decc,11,
-0x09df00,9,
-0x09df30,2,
-0x09df40,49,
-0x09e018,1,
-0x09e034,1,
-0x09e104,1,
-0x09e134,1,
-0x09e14c,1,
-0x09e170,2,
-0x09e200,1,
-0x09e210,2,
-0x09e400,5,
-0x09e418,9,
-0x09e440,5,
-0x09e460,1,
-0x09e470,2,
-0x09e500,5,
-0x09e518,9,
-0x09e540,5,
-0x09e560,1,
-0x09e570,2,
-0x09e600,5,
-0x09e618,9,
-0x09e640,5,
-0x09e660,1,
-0x09e670,2,
-0x09e700,1,
-0x09e800,6,
-0x09e81c,3,
-0x09e82c,3,
-0x09e83c,8,
-0x09e860,1,
-0x09e868,1,
-0x09e870,2,
-0x09e880,1,
-0x09e890,2,
-0x09e8a0,1,
-0x09e8b0,2,
-0x09e8c0,1,
-0x09e8d0,2,
-0x09e8e0,1,
-0x09e8f0,2,
-0x09e900,29,
-0x09e980,27,
-0x09e9f0,1,
-0x09ec00,6,
-0x09ec1c,3,
-0x09ec2c,3,
-0x09ec3c,8,
-0x09ec60,1,
-0x09ec68,1,
-0x09ec70,2,
-0x09ec80,1,
-0x09ec90,2,
-0x09eca0,1,
-0x09ecb0,2,
-0x09ecc0,1,
-0x09ecd0,2,
-0x09ece0,1,
-0x09ecf0,2,
-0x09ed00,29,
-0x09ed80,27,
-0x09edf0,1,
-0x09f000,6,
-0x09f01c,3,
-0x09f02c,3,
-0x09f03c,8,
-0x09f060,1,
-0x09f068,1,
-0x09f070,2,
-0x09f080,1,
-0x09f090,2,
-0x09f0a0,1,
-0x09f0b0,2,
-0x09f0c0,1,
-0x09f0d0,2,
-0x09f0e0,1,
-0x09f0f0,2,
-0x09f100,29,
-0x09f180,27,
-0x09f1f0,1,
-0x09f400,6,
-0x09f41c,3,
-0x09f42c,3,
-0x09f43c,8,
-0x09f460,1,
-0x09f468,1,
-0x09f470,2,
-0x09f480,1,
-0x09f490,2,
-0x09f4a0,1,
-0x09f4b0,2,
-0x09f4c0,1,
-0x09f4d0,2,
-0x09f4e0,1,
-0x09f4f0,2,
-0x09f500,29,
-0x09f580,27,
-0x09f5f0,1,
-0x09f800,6,
-0x09f81c,3,
-0x09f82c,3,
-0x09f83c,8,
-0x09f860,1,
-0x09f868,1,
-0x09f870,2,
-0x09f880,1,
-0x09f890,2,
-0x09f8a0,1,
-0x09f8b0,2,
-0x09f8c0,1,
-0x09f8d0,2,
-0x09f8e0,1,
-0x09f8f0,2,
-0x09f900,29,
-0x09f980,27,
-0x09f9f0,1,
-0x09fc00,6,
-0x09fc1c,3,
-0x09fc2c,3,
-0x09fc3c,8,
-0x09fc60,1,
-0x09fc68,1,
-0x09fc70,2,
-0x09fc80,1,
-0x09fc90,2,
-0x09fca0,1,
-0x09fcb0,2,
-0x09fcc0,1,
-0x09fcd0,2,
-0x09fce0,1,
-0x09fcf0,2,
-0x09fd00,29,
-0x09fd80,27,
-0x09fdf0,1,
-0x0a0000,2,
-0x0a0018,2,
-0x0a0034,2,
-0x0a0104,3,
-0x0a0134,2,
-0x0a014c,1,
-0x0a0170,2,
-0x0a0200,1,
-0x0a0210,2,
-0x0a0220,1,
-0x0a0230,2,
-0x0a0400,1,
-0x0a0410,2,
-0x0a0420,3,
-0x0a0430,22,
-0x0a04ac,1,
-0x0a04c0,6,
-0x0a0500,1,
-0x0a0510,2,
-0x0a0520,3,
-0x0a0540,8,
-0x0a0580,6,
-0x0a05a0,6,
-0x0a0600,10,
-0x0a0640,10,
-0x0a0680,10,
-0x0a06c0,10,
-0x0a0700,10,
-0x0a0740,10,
-0x0a0800,5,
-0x0a0820,5,
-0x0a0890,10,
-0x0a08e0,1,
-0x0a08f0,2,
-0x0a0900,5,
-0x0a0920,5,
-0x0a0990,10,
-0x0a09e0,1,
-0x0a09f0,2,
-0x0a0a00,1,
-0x0a0a10,2,
-0x0a0a20,1,
-0x0a0a30,2,
-0x0a0a48,3,
-0x0a0a80,3,
-0x0a0a90,1,
-0x0a0a98,12,
-0x0a0b04,2,
-0x0a0b14,3,
-0x0a0b24,2,
-0x0a0b34,3,
-0x0a0b80,5,
-0x0a0b98,3,
-0x0a0bb0,2,
-0x0a0bc0,5,
-0x0a0bd8,3,
-0x0a0bf0,2,
-0x0a0c00,10,
-0x0a0c2c,12,
-0x0a0c80,26,
-0x0a0d00,2,
-0x0a0d20,1,
-0x0a0e00,10,
-0x0a0e2c,12,
-0x0a0e80,26,
-0x0a0f00,2,
-0x0a0f20,1,
-0x0a1000,5,
-0x0a1020,5,
-0x0a1090,10,
-0x0a10e0,1,
-0x0a10f0,2,
-0x0a1100,5,
-0x0a1120,5,
-0x0a1190,10,
-0x0a11e0,1,
-0x0a11f0,2,
-0x0a1200,1,
-0x0a1210,2,
-0x0a1220,1,
-0x0a1230,2,
-0x0a1248,3,
-0x0a1280,3,
-0x0a1290,1,
-0x0a1298,12,
-0x0a1304,2,
-0x0a1314,3,
-0x0a1324,2,
-0x0a1334,3,
-0x0a1380,5,
-0x0a1398,3,
-0x0a13b0,2,
-0x0a13c0,5,
-0x0a13d8,3,
-0x0a13f0,2,
-0x0a1400,10,
-0x0a142c,12,
-0x0a1480,26,
-0x0a1500,2,
-0x0a1520,1,
-0x0a1600,10,
-0x0a162c,12,
-0x0a1680,26,
-0x0a1700,2,
-0x0a1720,1,
-0x0a1800,5,
-0x0a1820,5,
-0x0a1890,10,
-0x0a18e0,1,
-0x0a18f0,2,
-0x0a1900,5,
-0x0a1920,5,
-0x0a1990,10,
-0x0a19e0,1,
-0x0a19f0,2,
-0x0a1a00,1,
-0x0a1a10,2,
-0x0a1a20,1,
-0x0a1a30,2,
-0x0a1a48,3,
-0x0a1a80,3,
-0x0a1a90,1,
-0x0a1a98,12,
-0x0a1b04,2,
-0x0a1b14,3,
-0x0a1b24,2,
-0x0a1b34,3,
-0x0a1b80,5,
-0x0a1b98,3,
-0x0a1bb0,2,
-0x0a1bc0,5,
-0x0a1bd8,3,
-0x0a1bf0,2,
-0x0a1c00,10,
-0x0a1c2c,12,
-0x0a1c80,26,
-0x0a1d00,2,
-0x0a1d20,1,
-0x0a1e00,10,
-0x0a1e2c,12,
-0x0a1e80,26,
-0x0a1f00,2,
-0x0a1f20,1,
-0x0a2000,7,
-0x0a2020,8,
-0x0a2044,8,
-0x0a2080,7,
-0x0a20a0,8,
-0x0a20c4,8,
-0x0a2100,7,
-0x0a2120,8,
-0x0a2144,8,
-0x0a2180,7,
-0x0a21a0,8,
-0x0a21c4,8,
-0x0a2200,7,
-0x0a2220,8,
-0x0a2244,8,
-0x0a2280,7,
-0x0a22a0,8,
-0x0a22c4,8,
-0x0a2400,1,
-0x0a2418,1,
-0x0a2434,1,
-0x0a2504,1,
-0x0a2534,1,
-0x0a254c,1,
-0x0a2570,2,
-0x0a2600,1,
-0x0a2610,2,
-0x0a2804,15,
-0x0a2844,15,
-0x0a2884,15,
-0x0a28c4,15,
-0x0a2904,15,
-0x0a2944,16,
-0x0a2990,2,
-0x0a29a0,1,
-0x0a29b0,2,
-0x0a29c0,2,
-0x0a2a00,400,
-0x0a3080,28,
-0x0a3100,28,
-0x0a3184,2,
-0x0a3194,3,
-0x0a31a4,2,
-0x0a31b4,10,
-0x0a3200,7,
-0x0a3260,20,
-0x0a32c0,2,
-0x0a32cc,2,
-0x0a32d8,3,
-0x0a3300,1,
-0x0a3310,2,
-0x0a3320,1,
-0x0a3330,2,
-0x0a3340,1,
-0x0a3350,2,
-0x0a3360,1,
-0x0a3370,2,
-0x0a3380,1,
-0x0a3400,16,
-0x0a3480,28,
-0x0a3500,28,
-0x0a3584,2,
-0x0a3594,3,
-0x0a35a4,2,
-0x0a35b4,10,
-0x0a3600,7,
-0x0a3660,20,
-0x0a36c0,2,
-0x0a36cc,2,
-0x0a36d8,3,
-0x0a3700,1,
-0x0a3710,2,
-0x0a3720,1,
-0x0a3730,2,
-0x0a3740,1,
-0x0a3750,2,
-0x0a3760,1,
-0x0a3770,2,
-0x0a3780,1,
-0x0a3800,16,
-0x0a3880,28,
-0x0a3900,28,
-0x0a3984,2,
-0x0a3994,3,
-0x0a39a4,2,
-0x0a39b4,10,
-0x0a3a00,7,
-0x0a3a60,20,
-0x0a3ac0,2,
-0x0a3acc,2,
-0x0a3ad8,3,
-0x0a3b00,1,
-0x0a3b10,2,
-0x0a3b20,1,
-0x0a3b30,2,
-0x0a3b40,1,
-0x0a3b50,2,
-0x0a3b60,1,
-0x0a3b70,2,
-0x0a3b80,1,
-0x0a3c00,18,
-0x0a3c60,5,
-0x0a3c78,7,
-0x0a3c98,6,
-0x0a3ce0,3,
-0x0a3d04,7,
-0x0a3d30,1,
-0x0a3d44,7,
-0x0a3d70,1,
-0x0a3d84,7,
-0x0a3db0,1,
-0x0a3dc4,7,
-0x0a3df0,1,
-0x0a3e04,7,
-0x0a3e30,1,
-0x0a3e44,7,
-0x0a3e70,1,
-0x0a3e84,7,
-0x0a3eb0,1,
-0x0a3ec4,7,
-0x0a3ef0,1,
-0x0a3f00,1,
-0x0a3f24,1,
-0x0a3f30,4,
-0x0a3f44,1,
-0x0a3f50,4,
-0x0a3fa0,3,
-0x0a4000,5,
-0x0a4018,3,
-0x0a4080,2,
-0x0a408c,1,
-0x0a40a0,9,
-0x0a40d0,2,
-0x0a40e0,1,
-0x0a40e8,1,
-0x0a4100,2,
-0x0a410c,1,
-0x0a4120,9,
-0x0a4150,2,
-0x0a4160,1,
-0x0a4168,1,
-0x0a4180,2,
-0x0a418c,1,
-0x0a41a0,9,
-0x0a41d0,2,
-0x0a41e0,1,
-0x0a41e8,1,
-0x0a4200,2,
-0x0a420c,1,
-0x0a4220,9,
-0x0a4250,2,
-0x0a4260,1,
-0x0a4268,1,
-0x0a4284,2,
-0x0a42a8,2,
-0x0a42b4,1,
-0x0a42c4,2,
-0x0a42e8,2,
-0x0a42f4,1,
-0x0a4400,3,
-0x0a4410,15,
-0x0a4450,16,
-0x0a449c,1,
-0x0a44b0,9,
-0x0a44e0,1,
-0x0a44f0,3,
-0x0a4500,12,
-0x0a4534,4,
-0x0a4558,1,
-0x0a4580,1,
-0x0a4594,2,
-0x0a45ac,11,
-0x0a45ec,4,
-0x0a4600,15,
-0x0a4640,3,
-0x0a4650,3,
-0x0a4660,1,
-0x0a4670,2,
-0x0a4680,1,
-0x0a4690,2,
-0x0a46c0,4,
-0x0a46d4,8,
-0x0a4700,4,
-0x0a4714,8,
-0x0a4800,5,
-0x0a4818,3,
-0x0a4880,2,
-0x0a488c,1,
-0x0a48a0,9,
-0x0a48d0,2,
-0x0a48e0,1,
-0x0a48e8,1,
-0x0a4900,2,
-0x0a490c,1,
-0x0a4920,9,
-0x0a4950,2,
-0x0a4960,1,
-0x0a4968,1,
-0x0a4980,2,
-0x0a498c,1,
-0x0a49a0,9,
-0x0a49d0,2,
-0x0a49e0,1,
-0x0a49e8,1,
-0x0a4a00,2,
-0x0a4a0c,1,
-0x0a4a20,9,
-0x0a4a50,2,
-0x0a4a60,1,
-0x0a4a68,1,
-0x0a4a84,2,
-0x0a4aa8,2,
-0x0a4ab4,1,
-0x0a4ac4,2,
-0x0a4ae8,2,
-0x0a4af4,1,
-0x0a4c00,3,
-0x0a4c10,15,
-0x0a4c50,16,
-0x0a4c9c,1,
-0x0a4cb0,9,
-0x0a4ce0,1,
-0x0a4cf0,3,
-0x0a4d00,12,
-0x0a4d34,4,
-0x0a4d58,1,
-0x0a4d80,1,
-0x0a4d94,2,
-0x0a4dac,11,
-0x0a4dec,4,
-0x0a4e00,15,
-0x0a4e40,3,
-0x0a4e50,3,
-0x0a4e60,1,
-0x0a4e70,2,
-0x0a4e80,1,
-0x0a4e90,2,
-0x0a4ec0,4,
-0x0a4ed4,8,
-0x0a4f00,4,
-0x0a4f14,8,
-0x0a5000,5,
-0x0a5018,3,
-0x0a5080,2,
-0x0a508c,1,
-0x0a50a0,9,
-0x0a50d0,2,
-0x0a50e0,1,
-0x0a50e8,1,
-0x0a5100,2,
-0x0a510c,1,
-0x0a5120,9,
-0x0a5150,2,
-0x0a5160,1,
-0x0a5168,1,
-0x0a5180,2,
-0x0a518c,1,
-0x0a51a0,9,
-0x0a51d0,2,
-0x0a51e0,1,
-0x0a51e8,1,
-0x0a5200,2,
-0x0a520c,1,
-0x0a5220,9,
-0x0a5250,2,
-0x0a5260,1,
-0x0a5268,1,
-0x0a5284,2,
-0x0a52a8,2,
-0x0a52b4,1,
-0x0a52c4,2,
-0x0a52e8,2,
-0x0a52f4,1,
-0x0a5400,3,
-0x0a5410,15,
-0x0a5450,16,
-0x0a549c,1,
-0x0a54b0,9,
-0x0a54e0,1,
-0x0a54f0,3,
-0x0a5500,12,
-0x0a5534,4,
-0x0a5558,1,
-0x0a5580,1,
-0x0a5594,2,
-0x0a55ac,11,
-0x0a55ec,4,
-0x0a5600,15,
-0x0a5640,3,
-0x0a5650,3,
-0x0a5660,1,
-0x0a5670,2,
-0x0a5680,1,
-0x0a5690,2,
-0x0a56c0,4,
-0x0a56d4,8,
-0x0a5700,4,
-0x0a5714,8,
-0x0a5800,31,
-0x0a5880,8,
-0x0a58a4,1,
-0x0a58b4,20,
-0x0a5910,2,
-0x0a5920,3,
-0x0a5934,1,
-0x0a593c,2,
-0x0a5950,2,
-0x0a5a00,11,
-0x0a5a4c,8,
-0x0a5a70,2,
-0x0a5a7c,33,
-0x0a5c00,8,
-0x0a5c40,2,
-0x0a5c4c,11,
-0x0a5c80,8,
-0x0a5cc0,2,
-0x0a5ccc,11,
-0x0a5d00,8,
-0x0a5d40,2,
-0x0a5d4c,11,
-0x0a5d80,8,
-0x0a5dc0,2,
-0x0a5dcc,11,
-0x0a5e00,8,
-0x0a5e40,2,
-0x0a5e4c,11,
-0x0a5e80,8,
-0x0a5ec0,2,
-0x0a5ecc,11,
-0x0a5f00,9,
-0x0a5f30,2,
-0x0a5f40,49,
-0x0a6018,1,
-0x0a6034,1,
-0x0a6104,1,
-0x0a6134,1,
-0x0a614c,1,
-0x0a6170,2,
-0x0a6200,1,
-0x0a6210,2,
-0x0a6400,5,
-0x0a6418,9,
-0x0a6440,5,
-0x0a6460,1,
-0x0a6470,2,
-0x0a6500,5,
-0x0a6518,9,
-0x0a6540,5,
-0x0a6560,1,
-0x0a6570,2,
-0x0a6600,5,
-0x0a6618,9,
-0x0a6640,5,
-0x0a6660,1,
-0x0a6670,2,
-0x0a6700,1,
-0x0a6800,6,
-0x0a681c,3,
-0x0a682c,3,
-0x0a683c,8,
-0x0a6860,1,
-0x0a6868,1,
-0x0a6870,2,
-0x0a6880,1,
-0x0a6890,2,
-0x0a68a0,1,
-0x0a68b0,2,
-0x0a68c0,1,
-0x0a68d0,2,
-0x0a68e0,1,
-0x0a68f0,2,
-0x0a6900,29,
-0x0a6980,27,
-0x0a69f0,1,
-0x0a6c00,6,
-0x0a6c1c,3,
-0x0a6c2c,3,
-0x0a6c3c,8,
-0x0a6c60,1,
-0x0a6c68,1,
-0x0a6c70,2,
-0x0a6c80,1,
-0x0a6c90,2,
-0x0a6ca0,1,
-0x0a6cb0,2,
-0x0a6cc0,1,
-0x0a6cd0,2,
-0x0a6ce0,1,
-0x0a6cf0,2,
-0x0a6d00,29,
-0x0a6d80,27,
-0x0a6df0,1,
-0x0a7000,6,
-0x0a701c,3,
-0x0a702c,3,
-0x0a703c,8,
-0x0a7060,1,
-0x0a7068,1,
-0x0a7070,2,
-0x0a7080,1,
-0x0a7090,2,
-0x0a70a0,1,
-0x0a70b0,2,
-0x0a70c0,1,
-0x0a70d0,2,
-0x0a70e0,1,
-0x0a70f0,2,
-0x0a7100,29,
-0x0a7180,27,
-0x0a71f0,1,
-0x0a7400,6,
-0x0a741c,3,
-0x0a742c,3,
-0x0a743c,8,
-0x0a7460,1,
-0x0a7468,1,
-0x0a7470,2,
-0x0a7480,1,
-0x0a7490,2,
-0x0a74a0,1,
-0x0a74b0,2,
-0x0a74c0,1,
-0x0a74d0,2,
-0x0a74e0,1,
-0x0a74f0,2,
-0x0a7500,29,
-0x0a7580,27,
-0x0a75f0,1,
-0x0a7800,6,
-0x0a781c,3,
-0x0a782c,3,
-0x0a783c,8,
-0x0a7860,1,
-0x0a7868,1,
-0x0a7870,2,
-0x0a7880,1,
-0x0a7890,2,
-0x0a78a0,1,
-0x0a78b0,2,
-0x0a78c0,1,
-0x0a78d0,2,
-0x0a78e0,1,
-0x0a78f0,2,
-0x0a7900,29,
-0x0a7980,27,
-0x0a79f0,1,
-0x0a7c00,6,
-0x0a7c1c,3,
-0x0a7c2c,3,
-0x0a7c3c,8,
-0x0a7c60,1,
-0x0a7c68,1,
-0x0a7c70,2,
-0x0a7c80,1,
-0x0a7c90,2,
-0x0a7ca0,1,
-0x0a7cb0,2,
-0x0a7cc0,1,
-0x0a7cd0,2,
-0x0a7ce0,1,
-0x0a7cf0,2,
-0x0a7d00,29,
-0x0a7d80,27,
-0x0a7df0,1,
-0x0a8000,2,
-0x0a8018,2,
-0x0a8034,2,
-0x0a8104,3,
-0x0a8134,2,
-0x0a814c,1,
-0x0a8170,2,
-0x0a8200,1,
-0x0a8210,2,
-0x0a8220,1,
-0x0a8230,2,
-0x0a8400,1,
-0x0a8410,2,
-0x0a8420,3,
-0x0a8430,22,
-0x0a84ac,1,
-0x0a84c0,6,
-0x0a8500,1,
-0x0a8510,2,
-0x0a8520,3,
-0x0a8540,8,
-0x0a8580,6,
-0x0a85a0,6,
-0x0a8600,10,
-0x0a8640,10,
-0x0a8680,10,
-0x0a86c0,10,
-0x0a8700,10,
-0x0a8740,10,
-0x0a8800,5,
-0x0a8820,5,
-0x0a8890,10,
-0x0a88e0,1,
-0x0a88f0,2,
-0x0a8900,5,
-0x0a8920,5,
-0x0a8990,10,
-0x0a89e0,1,
-0x0a89f0,2,
-0x0a8a00,1,
-0x0a8a10,2,
-0x0a8a20,1,
-0x0a8a30,2,
-0x0a8a48,3,
-0x0a8a80,3,
-0x0a8a90,1,
-0x0a8a98,12,
-0x0a8b04,2,
-0x0a8b14,3,
-0x0a8b24,2,
-0x0a8b34,3,
-0x0a8b80,5,
-0x0a8b98,3,
-0x0a8bb0,2,
-0x0a8bc0,5,
-0x0a8bd8,3,
-0x0a8bf0,2,
-0x0a8c00,10,
-0x0a8c2c,12,
-0x0a8c80,26,
-0x0a8d00,2,
-0x0a8d20,1,
-0x0a8e00,10,
-0x0a8e2c,12,
-0x0a8e80,26,
-0x0a8f00,2,
-0x0a8f20,1,
-0x0a9000,5,
-0x0a9020,5,
-0x0a9090,10,
-0x0a90e0,1,
-0x0a90f0,2,
-0x0a9100,5,
-0x0a9120,5,
-0x0a9190,10,
-0x0a91e0,1,
-0x0a91f0,2,
-0x0a9200,1,
-0x0a9210,2,
-0x0a9220,1,
-0x0a9230,2,
-0x0a9248,3,
-0x0a9280,3,
-0x0a9290,1,
-0x0a9298,12,
-0x0a9304,2,
-0x0a9314,3,
-0x0a9324,2,
-0x0a9334,3,
-0x0a9380,5,
-0x0a9398,3,
-0x0a93b0,2,
-0x0a93c0,5,
-0x0a93d8,3,
-0x0a93f0,2,
-0x0a9400,10,
-0x0a942c,12,
-0x0a9480,26,
-0x0a9500,2,
-0x0a9520,1,
-0x0a9600,10,
-0x0a962c,12,
-0x0a9680,26,
-0x0a9700,2,
-0x0a9720,1,
-0x0a9800,5,
-0x0a9820,5,
-0x0a9890,10,
-0x0a98e0,1,
-0x0a98f0,2,
-0x0a9900,5,
-0x0a9920,5,
-0x0a9990,10,
-0x0a99e0,1,
-0x0a99f0,2,
-0x0a9a00,1,
-0x0a9a10,2,
-0x0a9a20,1,
-0x0a9a30,2,
-0x0a9a48,3,
-0x0a9a80,3,
-0x0a9a90,1,
-0x0a9a98,12,
-0x0a9b04,2,
-0x0a9b14,3,
-0x0a9b24,2,
-0x0a9b34,3,
-0x0a9b80,5,
-0x0a9b98,3,
-0x0a9bb0,2,
-0x0a9bc0,5,
-0x0a9bd8,3,
-0x0a9bf0,2,
-0x0a9c00,10,
-0x0a9c2c,12,
-0x0a9c80,26,
-0x0a9d00,2,
-0x0a9d20,1,
-0x0a9e00,10,
-0x0a9e2c,12,
-0x0a9e80,26,
-0x0a9f00,2,
-0x0a9f20,1,
-0x0aa000,7,
-0x0aa020,8,
-0x0aa044,8,
-0x0aa080,7,
-0x0aa0a0,8,
-0x0aa0c4,8,
-0x0aa100,7,
-0x0aa120,8,
-0x0aa144,8,
-0x0aa180,7,
-0x0aa1a0,8,
-0x0aa1c4,8,
-0x0aa200,7,
-0x0aa220,8,
-0x0aa244,8,
-0x0aa280,7,
-0x0aa2a0,8,
-0x0aa2c4,8,
-0x0aa400,1,
-0x0aa418,1,
-0x0aa434,1,
-0x0aa504,1,
-0x0aa534,1,
-0x0aa54c,1,
-0x0aa570,2,
-0x0aa600,1,
-0x0aa610,2,
-0x0aa804,15,
-0x0aa844,15,
-0x0aa884,15,
-0x0aa8c4,15,
-0x0aa904,15,
-0x0aa944,16,
-0x0aa990,2,
-0x0aa9a0,1,
-0x0aa9b0,2,
-0x0aa9c0,2,
-0x0aaa00,400,
-0x0ab080,28,
-0x0ab100,28,
-0x0ab184,2,
-0x0ab194,3,
-0x0ab1a4,2,
-0x0ab1b4,10,
-0x0ab200,7,
-0x0ab260,20,
-0x0ab2c0,2,
-0x0ab2cc,2,
-0x0ab2d8,3,
-0x0ab300,1,
-0x0ab310,2,
-0x0ab320,1,
-0x0ab330,2,
-0x0ab340,1,
-0x0ab350,2,
-0x0ab360,1,
-0x0ab370,2,
-0x0ab380,1,
-0x0ab400,16,
-0x0ab480,28,
-0x0ab500,28,
-0x0ab584,2,
-0x0ab594,3,
-0x0ab5a4,2,
-0x0ab5b4,10,
-0x0ab600,7,
-0x0ab660,20,
-0x0ab6c0,2,
-0x0ab6cc,2,
-0x0ab6d8,3,
-0x0ab700,1,
-0x0ab710,2,
-0x0ab720,1,
-0x0ab730,2,
-0x0ab740,1,
-0x0ab750,2,
-0x0ab760,1,
-0x0ab770,2,
-0x0ab780,1,
-0x0ab800,16,
-0x0ab880,28,
-0x0ab900,28,
-0x0ab984,2,
-0x0ab994,3,
-0x0ab9a4,2,
-0x0ab9b4,10,
-0x0aba00,7,
-0x0aba60,20,
-0x0abac0,2,
-0x0abacc,2,
-0x0abad8,3,
-0x0abb00,1,
-0x0abb10,2,
-0x0abb20,1,
-0x0abb30,2,
-0x0abb40,1,
-0x0abb50,2,
-0x0abb60,1,
-0x0abb70,2,
-0x0abb80,1,
-0x0abc00,18,
-0x0abc60,5,
-0x0abc78,7,
-0x0abc98,6,
-0x0abce0,3,
-0x0abd04,7,
-0x0abd30,1,
-0x0abd44,7,
-0x0abd70,1,
-0x0abd84,7,
-0x0abdb0,1,
-0x0abdc4,7,
-0x0abdf0,1,
-0x0abe04,7,
-0x0abe30,1,
-0x0abe44,7,
-0x0abe70,1,
-0x0abe84,7,
-0x0abeb0,1,
-0x0abec4,7,
-0x0abef0,1,
-0x0abf00,1,
-0x0abf24,1,
-0x0abf30,4,
-0x0abf44,1,
-0x0abf50,4,
-0x0abfa0,3,
-0x0ac000,5,
-0x0ac018,3,
-0x0ac080,2,
-0x0ac08c,1,
-0x0ac0a0,9,
-0x0ac0d0,2,
-0x0ac0e0,1,
-0x0ac0e8,1,
-0x0ac100,2,
-0x0ac10c,1,
-0x0ac120,9,
-0x0ac150,2,
-0x0ac160,1,
-0x0ac168,1,
-0x0ac180,2,
-0x0ac18c,1,
-0x0ac1a0,9,
-0x0ac1d0,2,
-0x0ac1e0,1,
-0x0ac1e8,1,
-0x0ac200,2,
-0x0ac20c,1,
-0x0ac220,9,
-0x0ac250,2,
-0x0ac260,1,
-0x0ac268,1,
-0x0ac284,2,
-0x0ac2a8,2,
-0x0ac2b4,1,
-0x0ac2c4,2,
-0x0ac2e8,2,
-0x0ac2f4,1,
-0x0ac400,3,
-0x0ac410,15,
-0x0ac450,16,
-0x0ac49c,1,
-0x0ac4b0,9,
-0x0ac4e0,1,
-0x0ac4f0,3,
-0x0ac500,12,
-0x0ac534,4,
-0x0ac558,1,
-0x0ac580,1,
-0x0ac594,2,
-0x0ac5ac,11,
-0x0ac5ec,4,
-0x0ac600,15,
-0x0ac640,3,
-0x0ac650,3,
-0x0ac660,1,
-0x0ac670,2,
-0x0ac680,1,
-0x0ac690,2,
-0x0ac6c0,4,
-0x0ac6d4,8,
-0x0ac700,4,
-0x0ac714,8,
-0x0ac800,5,
-0x0ac818,3,
-0x0ac880,2,
-0x0ac88c,1,
-0x0ac8a0,9,
-0x0ac8d0,2,
-0x0ac8e0,1,
-0x0ac8e8,1,
-0x0ac900,2,
-0x0ac90c,1,
-0x0ac920,9,
-0x0ac950,2,
-0x0ac960,1,
-0x0ac968,1,
-0x0ac980,2,
-0x0ac98c,1,
-0x0ac9a0,9,
-0x0ac9d0,2,
-0x0ac9e0,1,
-0x0ac9e8,1,
-0x0aca00,2,
-0x0aca0c,1,
-0x0aca20,9,
-0x0aca50,2,
-0x0aca60,1,
-0x0aca68,1,
-0x0aca84,2,
-0x0acaa8,2,
-0x0acab4,1,
-0x0acac4,2,
-0x0acae8,2,
-0x0acaf4,1,
-0x0acc00,3,
-0x0acc10,15,
-0x0acc50,16,
-0x0acc9c,1,
-0x0accb0,9,
-0x0acce0,1,
-0x0accf0,3,
-0x0acd00,12,
-0x0acd34,4,
-0x0acd58,1,
-0x0acd80,1,
-0x0acd94,2,
-0x0acdac,11,
-0x0acdec,4,
-0x0ace00,15,
-0x0ace40,3,
-0x0ace50,3,
-0x0ace60,1,
-0x0ace70,2,
-0x0ace80,1,
-0x0ace90,2,
-0x0acec0,4,
-0x0aced4,8,
-0x0acf00,4,
-0x0acf14,8,
-0x0ad000,5,
-0x0ad018,3,
-0x0ad080,2,
-0x0ad08c,1,
-0x0ad0a0,9,
-0x0ad0d0,2,
-0x0ad0e0,1,
-0x0ad0e8,1,
-0x0ad100,2,
-0x0ad10c,1,
-0x0ad120,9,
-0x0ad150,2,
-0x0ad160,1,
-0x0ad168,1,
-0x0ad180,2,
-0x0ad18c,1,
-0x0ad1a0,9,
-0x0ad1d0,2,
-0x0ad1e0,1,
-0x0ad1e8,1,
-0x0ad200,2,
-0x0ad20c,1,
-0x0ad220,9,
-0x0ad250,2,
-0x0ad260,1,
-0x0ad268,1,
-0x0ad284,2,
-0x0ad2a8,2,
-0x0ad2b4,1,
-0x0ad2c4,2,
-0x0ad2e8,2,
-0x0ad2f4,1,
-0x0ad400,3,
-0x0ad410,15,
-0x0ad450,16,
-0x0ad49c,1,
-0x0ad4b0,9,
-0x0ad4e0,1,
-0x0ad4f0,3,
-0x0ad500,12,
-0x0ad534,4,
-0x0ad558,1,
-0x0ad580,1,
-0x0ad594,2,
-0x0ad5ac,11,
-0x0ad5ec,4,
-0x0ad600,15,
-0x0ad640,3,
-0x0ad650,3,
-0x0ad660,1,
-0x0ad670,2,
-0x0ad680,1,
-0x0ad690,2,
-0x0ad6c0,4,
-0x0ad6d4,8,
-0x0ad700,4,
-0x0ad714,8,
-0x0ad800,31,
-0x0ad880,8,
-0x0ad8a4,1,
-0x0ad8b4,20,
-0x0ad910,2,
-0x0ad920,3,
-0x0ad934,1,
-0x0ad93c,2,
-0x0ad950,2,
-0x0ada00,11,
-0x0ada4c,8,
-0x0ada70,2,
-0x0ada7c,33,
-0x0adc00,8,
-0x0adc40,2,
-0x0adc4c,11,
-0x0adc80,8,
-0x0adcc0,2,
-0x0adccc,11,
-0x0add00,8,
-0x0add40,2,
-0x0add4c,11,
-0x0add80,8,
-0x0addc0,2,
-0x0addcc,11,
-0x0ade00,8,
-0x0ade40,2,
-0x0ade4c,11,
-0x0ade80,8,
-0x0adec0,2,
-0x0adecc,11,
-0x0adf00,9,
-0x0adf30,2,
-0x0adf40,49,
-0x0ae018,1,
-0x0ae034,1,
-0x0ae104,1,
-0x0ae134,1,
-0x0ae14c,1,
-0x0ae170,2,
-0x0ae200,1,
-0x0ae210,2,
-0x0ae400,5,
-0x0ae418,9,
-0x0ae440,5,
-0x0ae460,1,
-0x0ae470,2,
-0x0ae500,5,
-0x0ae518,9,
-0x0ae540,5,
-0x0ae560,1,
-0x0ae570,2,
-0x0ae600,5,
-0x0ae618,9,
-0x0ae640,5,
-0x0ae660,1,
-0x0ae670,2,
-0x0ae700,1,
-0x0ae800,6,
-0x0ae81c,3,
-0x0ae82c,3,
-0x0ae83c,8,
-0x0ae860,1,
-0x0ae868,1,
-0x0ae870,2,
-0x0ae880,1,
-0x0ae890,2,
-0x0ae8a0,1,
-0x0ae8b0,2,
-0x0ae8c0,1,
-0x0ae8d0,2,
-0x0ae8e0,1,
-0x0ae8f0,2,
-0x0ae900,29,
-0x0ae980,27,
-0x0ae9f0,1,
-0x0aec00,6,
-0x0aec1c,3,
-0x0aec2c,3,
-0x0aec3c,8,
-0x0aec60,1,
-0x0aec68,1,
-0x0aec70,2,
-0x0aec80,1,
-0x0aec90,2,
-0x0aeca0,1,
-0x0aecb0,2,
-0x0aecc0,1,
-0x0aecd0,2,
-0x0aece0,1,
-0x0aecf0,2,
-0x0aed00,29,
-0x0aed80,27,
-0x0aedf0,1,
-0x0af000,6,
-0x0af01c,3,
-0x0af02c,3,
-0x0af03c,8,
-0x0af060,1,
-0x0af068,1,
-0x0af070,2,
-0x0af080,1,
-0x0af090,2,
-0x0af0a0,1,
-0x0af0b0,2,
-0x0af0c0,1,
-0x0af0d0,2,
-0x0af0e0,1,
-0x0af0f0,2,
-0x0af100,29,
-0x0af180,27,
-0x0af1f0,1,
-0x0af400,6,
-0x0af41c,3,
-0x0af42c,3,
-0x0af43c,8,
-0x0af460,1,
-0x0af468,1,
-0x0af470,2,
-0x0af480,1,
-0x0af490,2,
-0x0af4a0,1,
-0x0af4b0,2,
-0x0af4c0,1,
-0x0af4d0,2,
-0x0af4e0,1,
-0x0af4f0,2,
-0x0af500,29,
-0x0af580,27,
-0x0af5f0,1,
-0x0af800,6,
-0x0af81c,3,
-0x0af82c,3,
-0x0af83c,8,
-0x0af860,1,
-0x0af868,1,
-0x0af870,2,
-0x0af880,1,
-0x0af890,2,
-0x0af8a0,1,
-0x0af8b0,2,
-0x0af8c0,1,
-0x0af8d0,2,
-0x0af8e0,1,
-0x0af8f0,2,
-0x0af900,29,
-0x0af980,27,
-0x0af9f0,1,
-0x0afc00,6,
-0x0afc1c,3,
-0x0afc2c,3,
-0x0afc3c,8,
-0x0afc60,1,
-0x0afc68,1,
-0x0afc70,2,
-0x0afc80,1,
-0x0afc90,2,
-0x0afca0,1,
-0x0afcb0,2,
-0x0afcc0,1,
-0x0afcd0,2,
-0x0afce0,1,
-0x0afcf0,2,
-0x0afd00,29,
-0x0afd80,27,
-0x0afdf0,1,
-0x0b0000,2,
-0x0b0018,2,
-0x0b0034,2,
-0x0b0104,3,
-0x0b0134,2,
-0x0b014c,1,
-0x0b0170,2,
-0x0b0200,1,
-0x0b0210,2,
-0x0b0220,1,
-0x0b0230,2,
-0x0b0400,1,
-0x0b0410,2,
-0x0b0420,3,
-0x0b0430,22,
-0x0b04ac,1,
-0x0b04c0,6,
-0x0b0500,1,
-0x0b0510,2,
-0x0b0520,3,
-0x0b0540,8,
-0x0b0580,6,
-0x0b05a0,6,
-0x0b0600,10,
-0x0b0640,10,
-0x0b0680,10,
-0x0b06c0,10,
-0x0b0700,10,
-0x0b0740,10,
-0x0b0800,5,
-0x0b0820,5,
-0x0b0890,10,
-0x0b08e0,1,
-0x0b08f0,2,
-0x0b0900,5,
-0x0b0920,5,
-0x0b0990,10,
-0x0b09e0,1,
-0x0b09f0,2,
-0x0b0a00,1,
-0x0b0a10,2,
-0x0b0a20,1,
-0x0b0a30,2,
-0x0b0a48,3,
-0x0b0a80,3,
-0x0b0a90,1,
-0x0b0a98,12,
-0x0b0b04,2,
-0x0b0b14,3,
-0x0b0b24,2,
-0x0b0b34,3,
-0x0b0b80,5,
-0x0b0b98,3,
-0x0b0bb0,2,
-0x0b0bc0,5,
-0x0b0bd8,3,
-0x0b0bf0,2,
-0x0b0c00,10,
-0x0b0c2c,12,
-0x0b0c80,26,
-0x0b0d00,2,
-0x0b0d20,1,
-0x0b0e00,10,
-0x0b0e2c,12,
-0x0b0e80,26,
-0x0b0f00,2,
-0x0b0f20,1,
-0x0b1000,5,
-0x0b1020,5,
-0x0b1090,10,
-0x0b10e0,1,
-0x0b10f0,2,
-0x0b1100,5,
-0x0b1120,5,
-0x0b1190,10,
-0x0b11e0,1,
-0x0b11f0,2,
-0x0b1200,1,
-0x0b1210,2,
-0x0b1220,1,
-0x0b1230,2,
-0x0b1248,3,
-0x0b1280,3,
-0x0b1290,1,
-0x0b1298,12,
-0x0b1304,2,
-0x0b1314,3,
-0x0b1324,2,
-0x0b1334,3,
-0x0b1380,5,
-0x0b1398,3,
-0x0b13b0,2,
-0x0b13c0,5,
-0x0b13d8,3,
-0x0b13f0,2,
-0x0b1400,10,
-0x0b142c,12,
-0x0b1480,26,
-0x0b1500,2,
-0x0b1520,1,
-0x0b1600,10,
-0x0b162c,12,
-0x0b1680,26,
-0x0b1700,2,
-0x0b1720,1,
-0x0b1800,5,
-0x0b1820,5,
-0x0b1890,10,
-0x0b18e0,1,
-0x0b18f0,2,
-0x0b1900,5,
-0x0b1920,5,
-0x0b1990,10,
-0x0b19e0,1,
-0x0b19f0,2,
-0x0b1a00,1,
-0x0b1a10,2,
-0x0b1a20,1,
-0x0b1a30,2,
-0x0b1a48,3,
-0x0b1a80,3,
-0x0b1a90,1,
-0x0b1a98,12,
-0x0b1b04,2,
-0x0b1b14,3,
-0x0b1b24,2,
-0x0b1b34,3,
-0x0b1b80,5,
-0x0b1b98,3,
-0x0b1bb0,2,
-0x0b1bc0,5,
-0x0b1bd8,3,
-0x0b1bf0,2,
-0x0b1c00,10,
-0x0b1c2c,12,
-0x0b1c80,26,
-0x0b1d00,2,
-0x0b1d20,1,
-0x0b1e00,10,
-0x0b1e2c,12,
-0x0b1e80,26,
-0x0b1f00,2,
-0x0b1f20,1,
-0x0b2000,7,
-0x0b2020,8,
-0x0b2044,8,
-0x0b2080,7,
-0x0b20a0,8,
-0x0b20c4,8,
-0x0b2100,7,
-0x0b2120,8,
-0x0b2144,8,
-0x0b2180,7,
-0x0b21a0,8,
-0x0b21c4,8,
-0x0b2200,7,
-0x0b2220,8,
-0x0b2244,8,
-0x0b2280,7,
-0x0b22a0,8,
-0x0b22c4,8,
-0x0b2400,1,
-0x0b2418,1,
-0x0b2434,1,
-0x0b2504,1,
-0x0b2534,1,
-0x0b254c,1,
-0x0b2570,2,
-0x0b2600,1,
-0x0b2610,2,
-0x0b2804,15,
-0x0b2844,15,
-0x0b2884,15,
-0x0b28c4,15,
-0x0b2904,15,
-0x0b2944,16,
-0x0b2990,2,
-0x0b29a0,1,
-0x0b29b0,2,
-0x0b29c0,2,
-0x0b2a00,400,
-0x0b3080,28,
-0x0b3100,28,
-0x0b3184,2,
-0x0b3194,3,
-0x0b31a4,2,
-0x0b31b4,10,
-0x0b3200,7,
-0x0b3260,20,
-0x0b32c0,2,
-0x0b32cc,2,
-0x0b32d8,3,
-0x0b3300,1,
-0x0b3310,2,
-0x0b3320,1,
-0x0b3330,2,
-0x0b3340,1,
-0x0b3350,2,
-0x0b3360,1,
-0x0b3370,2,
-0x0b3380,1,
-0x0b3400,16,
-0x0b3480,28,
-0x0b3500,28,
-0x0b3584,2,
-0x0b3594,3,
-0x0b35a4,2,
-0x0b35b4,10,
-0x0b3600,7,
-0x0b3660,20,
-0x0b36c0,2,
-0x0b36cc,2,
-0x0b36d8,3,
-0x0b3700,1,
-0x0b3710,2,
-0x0b3720,1,
-0x0b3730,2,
-0x0b3740,1,
-0x0b3750,2,
-0x0b3760,1,
-0x0b3770,2,
-0x0b3780,1,
-0x0b3800,16,
-0x0b3880,28,
-0x0b3900,28,
-0x0b3984,2,
-0x0b3994,3,
-0x0b39a4,2,
-0x0b39b4,10,
-0x0b3a00,7,
-0x0b3a60,20,
-0x0b3ac0,2,
-0x0b3acc,2,
-0x0b3ad8,3,
-0x0b3b00,1,
-0x0b3b10,2,
-0x0b3b20,1,
-0x0b3b30,2,
-0x0b3b40,1,
-0x0b3b50,2,
-0x0b3b60,1,
-0x0b3b70,2,
-0x0b3b80,1,
-0x0b3c00,18,
-0x0b3c60,5,
-0x0b3c78,7,
-0x0b3c98,6,
-0x0b3ce0,3,
-0x0b3d04,7,
-0x0b3d30,1,
-0x0b3d44,7,
-0x0b3d70,1,
-0x0b3d84,7,
-0x0b3db0,1,
-0x0b3dc4,7,
-0x0b3df0,1,
-0x0b3e04,7,
-0x0b3e30,1,
-0x0b3e44,7,
-0x0b3e70,1,
-0x0b3e84,7,
-0x0b3eb0,1,
-0x0b3ec4,7,
-0x0b3ef0,1,
-0x0b3f00,1,
-0x0b3f24,1,
-0x0b3f30,4,
-0x0b3f44,1,
-0x0b3f50,4,
-0x0b3fa0,3,
-0x0b4000,5,
-0x0b4018,3,
-0x0b4080,2,
-0x0b408c,1,
-0x0b40a0,9,
-0x0b40d0,2,
-0x0b40e0,1,
-0x0b40e8,1,
-0x0b4100,2,
-0x0b410c,1,
-0x0b4120,9,
-0x0b4150,2,
-0x0b4160,1,
-0x0b4168,1,
-0x0b4180,2,
-0x0b418c,1,
-0x0b41a0,9,
-0x0b41d0,2,
-0x0b41e0,1,
-0x0b41e8,1,
-0x0b4200,2,
-0x0b420c,1,
-0x0b4220,9,
-0x0b4250,2,
-0x0b4260,1,
-0x0b4268,1,
-0x0b4284,2,
-0x0b42a8,2,
-0x0b42b4,1,
-0x0b42c4,2,
-0x0b42e8,2,
-0x0b42f4,1,
-0x0b4400,3,
-0x0b4410,15,
-0x0b4450,16,
-0x0b449c,1,
-0x0b44b0,9,
-0x0b44e0,1,
-0x0b44f0,3,
-0x0b4500,12,
-0x0b4534,4,
-0x0b4558,1,
-0x0b4580,1,
-0x0b4594,2,
-0x0b45ac,11,
-0x0b45ec,4,
-0x0b4600,15,
-0x0b4640,3,
-0x0b4650,3,
-0x0b4660,1,
-0x0b4670,2,
-0x0b4680,1,
-0x0b4690,2,
-0x0b46c0,4,
-0x0b46d4,8,
-0x0b4700,4,
-0x0b4714,8,
-0x0b4800,5,
-0x0b4818,3,
-0x0b4880,2,
-0x0b488c,1,
-0x0b48a0,9,
-0x0b48d0,2,
-0x0b48e0,1,
-0x0b48e8,1,
-0x0b4900,2,
-0x0b490c,1,
-0x0b4920,9,
-0x0b4950,2,
-0x0b4960,1,
-0x0b4968,1,
-0x0b4980,2,
-0x0b498c,1,
-0x0b49a0,9,
-0x0b49d0,2,
-0x0b49e0,1,
-0x0b49e8,1,
-0x0b4a00,2,
-0x0b4a0c,1,
-0x0b4a20,9,
-0x0b4a50,2,
-0x0b4a60,1,
-0x0b4a68,1,
-0x0b4a84,2,
-0x0b4aa8,2,
-0x0b4ab4,1,
-0x0b4ac4,2,
-0x0b4ae8,2,
-0x0b4af4,1,
-0x0b4c00,3,
-0x0b4c10,15,
-0x0b4c50,16,
-0x0b4c9c,1,
-0x0b4cb0,9,
-0x0b4ce0,1,
-0x0b4cf0,3,
-0x0b4d00,12,
-0x0b4d34,4,
-0x0b4d58,1,
-0x0b4d80,1,
-0x0b4d94,2,
-0x0b4dac,11,
-0x0b4dec,4,
-0x0b4e00,15,
-0x0b4e40,3,
-0x0b4e50,3,
-0x0b4e60,1,
-0x0b4e70,2,
-0x0b4e80,1,
-0x0b4e90,2,
-0x0b4ec0,4,
-0x0b4ed4,8,
-0x0b4f00,4,
-0x0b4f14,8,
-0x0b5000,5,
-0x0b5018,3,
-0x0b5080,2,
-0x0b508c,1,
-0x0b50a0,9,
-0x0b50d0,2,
-0x0b50e0,1,
-0x0b50e8,1,
-0x0b5100,2,
-0x0b510c,1,
-0x0b5120,9,
-0x0b5150,2,
-0x0b5160,1,
-0x0b5168,1,
-0x0b5180,2,
-0x0b518c,1,
-0x0b51a0,9,
-0x0b51d0,2,
-0x0b51e0,1,
-0x0b51e8,1,
-0x0b5200,2,
-0x0b520c,1,
-0x0b5220,9,
-0x0b5250,2,
-0x0b5260,1,
-0x0b5268,1,
-0x0b5284,2,
-0x0b52a8,2,
-0x0b52b4,1,
-0x0b52c4,2,
-0x0b52e8,2,
-0x0b52f4,1,
-0x0b5400,3,
-0x0b5410,15,
-0x0b5450,16,
-0x0b549c,1,
-0x0b54b0,9,
-0x0b54e0,1,
-0x0b54f0,3,
-0x0b5500,12,
-0x0b5534,4,
-0x0b5558,1,
-0x0b5580,1,
-0x0b5594,2,
-0x0b55ac,11,
-0x0b55ec,4,
-0x0b5600,15,
-0x0b5640,3,
-0x0b5650,3,
-0x0b5660,1,
-0x0b5670,2,
-0x0b5680,1,
-0x0b5690,2,
-0x0b56c0,4,
-0x0b56d4,8,
-0x0b5700,4,
-0x0b5714,8,
-0x0b5800,31,
-0x0b5880,8,
-0x0b58a4,1,
-0x0b58b4,20,
-0x0b5910,2,
-0x0b5920,3,
-0x0b5934,1,
-0x0b593c,2,
-0x0b5950,2,
-0x0b5a00,11,
-0x0b5a4c,8,
-0x0b5a70,2,
-0x0b5a7c,33,
-0x0b5c00,8,
-0x0b5c40,2,
-0x0b5c4c,11,
-0x0b5c80,8,
-0x0b5cc0,2,
-0x0b5ccc,11,
-0x0b5d00,8,
-0x0b5d40,2,
-0x0b5d4c,11,
-0x0b5d80,8,
-0x0b5dc0,2,
-0x0b5dcc,11,
-0x0b5e00,8,
-0x0b5e40,2,
-0x0b5e4c,11,
-0x0b5e80,8,
-0x0b5ec0,2,
-0x0b5ecc,11,
-0x0b5f00,9,
-0x0b5f30,2,
-0x0b5f40,49,
-0x0b6018,1,
-0x0b6034,1,
-0x0b6104,1,
-0x0b6134,1,
-0x0b614c,1,
-0x0b6170,2,
-0x0b6200,1,
-0x0b6210,2,
-0x0b6400,5,
-0x0b6418,9,
-0x0b6440,5,
-0x0b6460,1,
-0x0b6470,2,
-0x0b6500,5,
-0x0b6518,9,
-0x0b6540,5,
-0x0b6560,1,
-0x0b6570,2,
-0x0b6600,5,
-0x0b6618,9,
-0x0b6640,5,
-0x0b6660,1,
-0x0b6670,2,
-0x0b6700,1,
-0x0b6800,6,
-0x0b681c,3,
-0x0b682c,3,
-0x0b683c,8,
-0x0b6860,1,
-0x0b6868,1,
-0x0b6870,2,
-0x0b6880,1,
-0x0b6890,2,
-0x0b68a0,1,
-0x0b68b0,2,
-0x0b68c0,1,
-0x0b68d0,2,
-0x0b68e0,1,
-0x0b68f0,2,
-0x0b6900,29,
-0x0b6980,27,
-0x0b69f0,1,
-0x0b6c00,6,
-0x0b6c1c,3,
-0x0b6c2c,3,
-0x0b6c3c,8,
-0x0b6c60,1,
-0x0b6c68,1,
-0x0b6c70,2,
-0x0b6c80,1,
-0x0b6c90,2,
-0x0b6ca0,1,
-0x0b6cb0,2,
-0x0b6cc0,1,
-0x0b6cd0,2,
-0x0b6ce0,1,
-0x0b6cf0,2,
-0x0b6d00,29,
-0x0b6d80,27,
-0x0b6df0,1,
-0x0b7000,6,
-0x0b701c,3,
-0x0b702c,3,
-0x0b703c,8,
-0x0b7060,1,
-0x0b7068,1,
-0x0b7070,2,
-0x0b7080,1,
-0x0b7090,2,
-0x0b70a0,1,
-0x0b70b0,2,
-0x0b70c0,1,
-0x0b70d0,2,
-0x0b70e0,1,
-0x0b70f0,2,
-0x0b7100,29,
-0x0b7180,27,
-0x0b71f0,1,
-0x0b7400,6,
-0x0b741c,3,
-0x0b742c,3,
-0x0b743c,8,
-0x0b7460,1,
-0x0b7468,1,
-0x0b7470,2,
-0x0b7480,1,
-0x0b7490,2,
-0x0b74a0,1,
-0x0b74b0,2,
-0x0b74c0,1,
-0x0b74d0,2,
-0x0b74e0,1,
-0x0b74f0,2,
-0x0b7500,29,
-0x0b7580,27,
-0x0b75f0,1,
-0x0b7800,6,
-0x0b781c,3,
-0x0b782c,3,
-0x0b783c,8,
-0x0b7860,1,
-0x0b7868,1,
-0x0b7870,2,
-0x0b7880,1,
-0x0b7890,2,
-0x0b78a0,1,
-0x0b78b0,2,
-0x0b78c0,1,
-0x0b78d0,2,
-0x0b78e0,1,
-0x0b78f0,2,
-0x0b7900,29,
-0x0b7980,27,
-0x0b79f0,1,
-0x0b7c00,6,
-0x0b7c1c,3,
-0x0b7c2c,3,
-0x0b7c3c,8,
-0x0b7c60,1,
-0x0b7c68,1,
-0x0b7c70,2,
-0x0b7c80,1,
-0x0b7c90,2,
-0x0b7ca0,1,
-0x0b7cb0,2,
-0x0b7cc0,1,
-0x0b7cd0,2,
-0x0b7ce0,1,
-0x0b7cf0,2,
-0x0b7d00,29,
-0x0b7d80,27,
-0x0b7df0,1,
-0x0b8000,2,
-0x0b8018,2,
-0x0b8034,2,
-0x0b8104,3,
-0x0b8134,2,
-0x0b814c,1,
-0x0b8170,2,
-0x0b8200,1,
-0x0b8210,2,
-0x0b8220,1,
-0x0b8230,2,
-0x0b8400,1,
-0x0b8410,2,
-0x0b8420,3,
-0x0b8430,22,
-0x0b84ac,1,
-0x0b84c0,6,
-0x0b8500,1,
-0x0b8510,2,
-0x0b8520,3,
-0x0b8540,8,
-0x0b8580,6,
-0x0b85a0,6,
-0x0b8600,10,
-0x0b8640,10,
-0x0b8680,10,
-0x0b86c0,10,
-0x0b8700,10,
-0x0b8740,10,
-0x0b8800,5,
-0x0b8820,5,
-0x0b8890,10,
-0x0b88e0,1,
-0x0b88f0,2,
-0x0b8900,5,
-0x0b8920,5,
-0x0b8990,10,
-0x0b89e0,1,
-0x0b89f0,2,
-0x0b8a00,1,
-0x0b8a10,2,
-0x0b8a20,1,
-0x0b8a30,2,
-0x0b8a48,3,
-0x0b8a80,3,
-0x0b8a90,1,
-0x0b8a98,12,
-0x0b8b04,2,
-0x0b8b14,3,
-0x0b8b24,2,
-0x0b8b34,3,
-0x0b8b80,5,
-0x0b8b98,3,
-0x0b8bb0,2,
-0x0b8bc0,5,
-0x0b8bd8,3,
-0x0b8bf0,2,
-0x0b8c00,10,
-0x0b8c2c,12,
-0x0b8c80,26,
-0x0b8d00,2,
-0x0b8d20,1,
-0x0b8e00,10,
-0x0b8e2c,12,
-0x0b8e80,26,
-0x0b8f00,2,
-0x0b8f20,1,
-0x0b9000,5,
-0x0b9020,5,
-0x0b9090,10,
-0x0b90e0,1,
-0x0b90f0,2,
-0x0b9100,5,
-0x0b9120,5,
-0x0b9190,10,
-0x0b91e0,1,
-0x0b91f0,2,
-0x0b9200,1,
-0x0b9210,2,
-0x0b9220,1,
-0x0b9230,2,
-0x0b9248,3,
-0x0b9280,3,
-0x0b9290,1,
-0x0b9298,12,
-0x0b9304,2,
-0x0b9314,3,
-0x0b9324,2,
-0x0b9334,3,
-0x0b9380,5,
-0x0b9398,3,
-0x0b93b0,2,
-0x0b93c0,5,
-0x0b93d8,3,
-0x0b93f0,2,
-0x0b9400,10,
-0x0b942c,12,
-0x0b9480,26,
-0x0b9500,2,
-0x0b9520,1,
-0x0b9600,10,
-0x0b962c,12,
-0x0b9680,26,
-0x0b9700,2,
-0x0b9720,1,
-0x0b9800,5,
-0x0b9820,5,
-0x0b9890,10,
-0x0b98e0,1,
-0x0b98f0,2,
-0x0b9900,5,
-0x0b9920,5,
-0x0b9990,10,
-0x0b99e0,1,
-0x0b99f0,2,
-0x0b9a00,1,
-0x0b9a10,2,
-0x0b9a20,1,
-0x0b9a30,2,
-0x0b9a48,3,
-0x0b9a80,3,
-0x0b9a90,1,
-0x0b9a98,12,
-0x0b9b04,2,
-0x0b9b14,3,
-0x0b9b24,2,
-0x0b9b34,3,
-0x0b9b80,5,
-0x0b9b98,3,
-0x0b9bb0,2,
-0x0b9bc0,5,
-0x0b9bd8,3,
-0x0b9bf0,2,
-0x0b9c00,10,
-0x0b9c2c,12,
-0x0b9c80,26,
-0x0b9d00,2,
-0x0b9d20,1,
-0x0b9e00,10,
-0x0b9e2c,12,
-0x0b9e80,26,
-0x0b9f00,2,
-0x0b9f20,1,
-0x0ba000,7,
-0x0ba020,8,
-0x0ba044,8,
-0x0ba080,7,
-0x0ba0a0,8,
-0x0ba0c4,8,
-0x0ba100,7,
-0x0ba120,8,
-0x0ba144,8,
-0x0ba180,7,
-0x0ba1a0,8,
-0x0ba1c4,8,
-0x0ba200,7,
-0x0ba220,8,
-0x0ba244,8,
-0x0ba280,7,
-0x0ba2a0,8,
-0x0ba2c4,8,
-0x0ba400,1,
-0x0ba418,1,
-0x0ba434,1,
-0x0ba504,1,
-0x0ba534,1,
-0x0ba54c,1,
-0x0ba570,2,
-0x0ba600,1,
-0x0ba610,2,
-0x0ba804,15,
-0x0ba844,15,
-0x0ba884,15,
-0x0ba8c4,15,
-0x0ba904,15,
-0x0ba944,16,
-0x0ba990,2,
-0x0ba9a0,1,
-0x0ba9b0,2,
-0x0ba9c0,2,
-0x0baa00,400,
-0x0bb080,28,
-0x0bb100,28,
-0x0bb184,2,
-0x0bb194,3,
-0x0bb1a4,2,
-0x0bb1b4,10,
-0x0bb200,7,
-0x0bb260,20,
-0x0bb2c0,2,
-0x0bb2cc,2,
-0x0bb2d8,3,
-0x0bb300,1,
-0x0bb310,2,
-0x0bb320,1,
-0x0bb330,2,
-0x0bb340,1,
-0x0bb350,2,
-0x0bb360,1,
-0x0bb370,2,
-0x0bb380,1,
-0x0bb400,16,
-0x0bb480,28,
-0x0bb500,28,
-0x0bb584,2,
-0x0bb594,3,
-0x0bb5a4,2,
-0x0bb5b4,10,
-0x0bb600,7,
-0x0bb660,20,
-0x0bb6c0,2,
-0x0bb6cc,2,
-0x0bb6d8,3,
-0x0bb700,1,
-0x0bb710,2,
-0x0bb720,1,
-0x0bb730,2,
-0x0bb740,1,
-0x0bb750,2,
-0x0bb760,1,
-0x0bb770,2,
-0x0bb780,1,
-0x0bb800,16,
-0x0bb880,28,
-0x0bb900,28,
-0x0bb984,2,
-0x0bb994,3,
-0x0bb9a4,2,
-0x0bb9b4,10,
-0x0bba00,7,
-0x0bba60,20,
-0x0bbac0,2,
-0x0bbacc,2,
-0x0bbad8,3,
-0x0bbb00,1,
-0x0bbb10,2,
-0x0bbb20,1,
-0x0bbb30,2,
-0x0bbb40,1,
-0x0bbb50,2,
-0x0bbb60,1,
-0x0bbb70,2,
-0x0bbb80,1,
-0x0bbc00,18,
-0x0bbc60,5,
-0x0bbc78,7,
-0x0bbc98,6,
-0x0bbce0,3,
-0x0bbd04,7,
-0x0bbd30,1,
-0x0bbd44,7,
-0x0bbd70,1,
-0x0bbd84,7,
-0x0bbdb0,1,
-0x0bbdc4,7,
-0x0bbdf0,1,
-0x0bbe04,7,
-0x0bbe30,1,
-0x0bbe44,7,
-0x0bbe70,1,
-0x0bbe84,7,
-0x0bbeb0,1,
-0x0bbec4,7,
-0x0bbef0,1,
-0x0bbf00,1,
-0x0bbf24,1,
-0x0bbf30,4,
-0x0bbf44,1,
-0x0bbf50,4,
-0x0bbfa0,3,
-0x0bc000,5,
-0x0bc018,3,
-0x0bc080,2,
-0x0bc08c,1,
-0x0bc0a0,9,
-0x0bc0d0,2,
-0x0bc0e0,1,
-0x0bc0e8,1,
-0x0bc100,2,
-0x0bc10c,1,
-0x0bc120,9,
-0x0bc150,2,
-0x0bc160,1,
-0x0bc168,1,
-0x0bc180,2,
-0x0bc18c,1,
-0x0bc1a0,9,
-0x0bc1d0,2,
-0x0bc1e0,1,
-0x0bc1e8,1,
-0x0bc200,2,
-0x0bc20c,1,
-0x0bc220,9,
-0x0bc250,2,
-0x0bc260,1,
-0x0bc268,1,
-0x0bc284,2,
-0x0bc2a8,2,
-0x0bc2b4,1,
-0x0bc2c4,2,
-0x0bc2e8,2,
-0x0bc2f4,1,
-0x0bc400,3,
-0x0bc410,15,
-0x0bc450,16,
-0x0bc49c,1,
-0x0bc4b0,9,
-0x0bc4e0,1,
-0x0bc4f0,3,
-0x0bc500,12,
-0x0bc534,4,
-0x0bc558,1,
-0x0bc580,1,
-0x0bc594,2,
-0x0bc5ac,11,
-0x0bc5ec,4,
-0x0bc600,15,
-0x0bc640,3,
-0x0bc650,3,
-0x0bc660,1,
-0x0bc670,2,
-0x0bc680,1,
-0x0bc690,2,
-0x0bc6c0,4,
-0x0bc6d4,8,
-0x0bc700,4,
-0x0bc714,8,
-0x0bc800,5,
-0x0bc818,3,
-0x0bc880,2,
-0x0bc88c,1,
-0x0bc8a0,9,
-0x0bc8d0,2,
-0x0bc8e0,1,
-0x0bc8e8,1,
-0x0bc900,2,
-0x0bc90c,1,
-0x0bc920,9,
-0x0bc950,2,
-0x0bc960,1,
-0x0bc968,1,
-0x0bc980,2,
-0x0bc98c,1,
-0x0bc9a0,9,
-0x0bc9d0,2,
-0x0bc9e0,1,
-0x0bc9e8,1,
-0x0bca00,2,
-0x0bca0c,1,
-0x0bca20,9,
-0x0bca50,2,
-0x0bca60,1,
-0x0bca68,1,
-0x0bca84,2,
-0x0bcaa8,2,
-0x0bcab4,1,
-0x0bcac4,2,
-0x0bcae8,2,
-0x0bcaf4,1,
-0x0bcc00,3,
-0x0bcc10,15,
-0x0bcc50,16,
-0x0bcc9c,1,
-0x0bccb0,9,
-0x0bcce0,1,
-0x0bccf0,3,
-0x0bcd00,12,
-0x0bcd34,4,
-0x0bcd58,1,
-0x0bcd80,1,
-0x0bcd94,2,
-0x0bcdac,11,
-0x0bcdec,4,
-0x0bce00,15,
-0x0bce40,3,
-0x0bce50,3,
-0x0bce60,1,
-0x0bce70,2,
-0x0bce80,1,
-0x0bce90,2,
-0x0bcec0,4,
-0x0bced4,8,
-0x0bcf00,4,
-0x0bcf14,8,
-0x0bd000,5,
-0x0bd018,3,
-0x0bd080,2,
-0x0bd08c,1,
-0x0bd0a0,9,
-0x0bd0d0,2,
-0x0bd0e0,1,
-0x0bd0e8,1,
-0x0bd100,2,
-0x0bd10c,1,
-0x0bd120,9,
-0x0bd150,2,
-0x0bd160,1,
-0x0bd168,1,
-0x0bd180,2,
-0x0bd18c,1,
-0x0bd1a0,9,
-0x0bd1d0,2,
-0x0bd1e0,1,
-0x0bd1e8,1,
-0x0bd200,2,
-0x0bd20c,1,
-0x0bd220,9,
-0x0bd250,2,
-0x0bd260,1,
-0x0bd268,1,
-0x0bd284,2,
-0x0bd2a8,2,
-0x0bd2b4,1,
-0x0bd2c4,2,
-0x0bd2e8,2,
-0x0bd2f4,1,
-0x0bd400,3,
-0x0bd410,15,
-0x0bd450,16,
-0x0bd49c,1,
-0x0bd4b0,9,
-0x0bd4e0,1,
-0x0bd4f0,3,
-0x0bd500,12,
-0x0bd534,4,
-0x0bd558,1,
-0x0bd580,1,
-0x0bd594,2,
-0x0bd5ac,11,
-0x0bd5ec,4,
-0x0bd600,15,
-0x0bd640,3,
-0x0bd650,3,
-0x0bd660,1,
-0x0bd670,2,
-0x0bd680,1,
-0x0bd690,2,
-0x0bd6c0,4,
-0x0bd6d4,8,
-0x0bd700,4,
-0x0bd714,8,
-0x0bd800,31,
-0x0bd880,8,
-0x0bd8a4,1,
-0x0bd8b4,20,
-0x0bd910,2,
-0x0bd920,3,
-0x0bd934,1,
-0x0bd93c,2,
-0x0bd950,2,
-0x0bda00,11,
-0x0bda4c,8,
-0x0bda70,2,
-0x0bda7c,33,
-0x0bdc00,8,
-0x0bdc40,2,
-0x0bdc4c,11,
-0x0bdc80,8,
-0x0bdcc0,2,
-0x0bdccc,11,
-0x0bdd00,8,
-0x0bdd40,2,
-0x0bdd4c,11,
-0x0bdd80,8,
-0x0bddc0,2,
-0x0bddcc,11,
-0x0bde00,8,
-0x0bde40,2,
-0x0bde4c,11,
-0x0bde80,8,
-0x0bdec0,2,
-0x0bdecc,11,
-0x0bdf00,9,
-0x0bdf30,2,
-0x0bdf40,49,
-0x0be018,1,
-0x0be034,1,
-0x0be104,1,
-0x0be134,1,
-0x0be14c,1,
-0x0be170,2,
-0x0be200,1,
-0x0be210,2,
-0x0be400,5,
-0x0be418,9,
-0x0be440,5,
-0x0be460,1,
-0x0be470,2,
-0x0be500,5,
-0x0be518,9,
-0x0be540,5,
-0x0be560,1,
-0x0be570,2,
-0x0be600,5,
-0x0be618,9,
-0x0be640,5,
-0x0be660,1,
-0x0be670,2,
-0x0be700,1,
-0x0be800,6,
-0x0be81c,3,
-0x0be82c,3,
-0x0be83c,8,
-0x0be860,1,
-0x0be868,1,
-0x0be870,2,
-0x0be880,1,
-0x0be890,2,
-0x0be8a0,1,
-0x0be8b0,2,
-0x0be8c0,1,
-0x0be8d0,2,
-0x0be8e0,1,
-0x0be8f0,2,
-0x0be900,29,
-0x0be980,27,
-0x0be9f0,1,
-0x0bec00,6,
-0x0bec1c,3,
-0x0bec2c,3,
-0x0bec3c,8,
-0x0bec60,1,
-0x0bec68,1,
-0x0bec70,2,
-0x0bec80,1,
-0x0bec90,2,
-0x0beca0,1,
-0x0becb0,2,
-0x0becc0,1,
-0x0becd0,2,
-0x0bece0,1,
-0x0becf0,2,
-0x0bed00,29,
-0x0bed80,27,
-0x0bedf0,1,
-0x0bf000,6,
-0x0bf01c,3,
-0x0bf02c,3,
-0x0bf03c,8,
-0x0bf060,1,
-0x0bf068,1,
-0x0bf070,2,
-0x0bf080,1,
-0x0bf090,2,
-0x0bf0a0,1,
-0x0bf0b0,2,
-0x0bf0c0,1,
-0x0bf0d0,2,
-0x0bf0e0,1,
-0x0bf0f0,2,
-0x0bf100,29,
-0x0bf180,27,
-0x0bf1f0,1,
-0x0bf400,6,
-0x0bf41c,3,
-0x0bf42c,3,
-0x0bf43c,8,
-0x0bf460,1,
-0x0bf468,1,
-0x0bf470,2,
-0x0bf480,1,
-0x0bf490,2,
-0x0bf4a0,1,
-0x0bf4b0,2,
-0x0bf4c0,1,
-0x0bf4d0,2,
-0x0bf4e0,1,
-0x0bf4f0,2,
-0x0bf500,29,
-0x0bf580,27,
-0x0bf5f0,1,
-0x0bf800,6,
-0x0bf81c,3,
-0x0bf82c,3,
-0x0bf83c,8,
-0x0bf860,1,
-0x0bf868,1,
-0x0bf870,2,
-0x0bf880,1,
-0x0bf890,2,
-0x0bf8a0,1,
-0x0bf8b0,2,
-0x0bf8c0,1,
-0x0bf8d0,2,
-0x0bf8e0,1,
-0x0bf8f0,2,
-0x0bf900,29,
-0x0bf980,27,
-0x0bf9f0,1,
-0x0bfc00,6,
-0x0bfc1c,3,
-0x0bfc2c,3,
-0x0bfc3c,8,
-0x0bfc60,1,
-0x0bfc68,1,
-0x0bfc70,2,
-0x0bfc80,1,
-0x0bfc90,2,
-0x0bfca0,1,
-0x0bfcb0,2,
-0x0bfcc0,1,
-0x0bfcd0,2,
-0x0bfce0,1,
-0x0bfcf0,2,
-0x0bfd00,29,
-0x0bfd80,27,
-0x0bfdf0,1,
-0x0c0000,2,
-0x0c0018,2,
-0x0c0034,2,
-0x0c0104,3,
-0x0c0134,2,
-0x0c014c,1,
-0x0c0170,2,
-0x0c0200,1,
-0x0c0210,2,
-0x0c0220,1,
-0x0c0230,2,
-0x0c0400,1,
-0x0c0410,2,
-0x0c0420,3,
-0x0c0430,22,
-0x0c04ac,1,
-0x0c04c0,6,
-0x0c0500,1,
-0x0c0510,2,
-0x0c0520,3,
-0x0c0540,8,
-0x0c0580,6,
-0x0c05a0,6,
-0x0c0600,10,
-0x0c0640,10,
-0x0c0680,10,
-0x0c06c0,10,
-0x0c0700,10,
-0x0c0740,10,
-0x0c0800,5,
-0x0c0820,5,
-0x0c0890,10,
-0x0c08e0,1,
-0x0c08f0,2,
-0x0c0900,5,
-0x0c0920,5,
-0x0c0990,10,
-0x0c09e0,1,
-0x0c09f0,2,
-0x0c0a00,1,
-0x0c0a10,2,
-0x0c0a20,1,
-0x0c0a30,2,
-0x0c0a48,3,
-0x0c0a80,3,
-0x0c0a90,1,
-0x0c0a98,12,
-0x0c0b04,2,
-0x0c0b14,3,
-0x0c0b24,2,
-0x0c0b34,3,
-0x0c0b80,5,
-0x0c0b98,3,
-0x0c0bb0,2,
-0x0c0bc0,5,
-0x0c0bd8,3,
-0x0c0bf0,2,
-0x0c0c00,10,
-0x0c0c2c,12,
-0x0c0c80,26,
-0x0c0d00,2,
-0x0c0d20,1,
-0x0c0e00,10,
-0x0c0e2c,12,
-0x0c0e80,26,
-0x0c0f00,2,
-0x0c0f20,1,
-0x0c1000,5,
-0x0c1020,5,
-0x0c1090,10,
-0x0c10e0,1,
-0x0c10f0,2,
-0x0c1100,5,
-0x0c1120,5,
-0x0c1190,10,
-0x0c11e0,1,
-0x0c11f0,2,
-0x0c1200,1,
-0x0c1210,2,
-0x0c1220,1,
-0x0c1230,2,
-0x0c1248,3,
-0x0c1280,3,
-0x0c1290,1,
-0x0c1298,12,
-0x0c1304,2,
-0x0c1314,3,
-0x0c1324,2,
-0x0c1334,3,
-0x0c1380,5,
-0x0c1398,3,
-0x0c13b0,2,
-0x0c13c0,5,
-0x0c13d8,3,
-0x0c13f0,2,
-0x0c1400,10,
-0x0c142c,12,
-0x0c1480,26,
-0x0c1500,2,
-0x0c1520,1,
-0x0c1600,10,
-0x0c162c,12,
-0x0c1680,26,
-0x0c1700,2,
-0x0c1720,1,
-0x0c1800,5,
-0x0c1820,5,
-0x0c1890,10,
-0x0c18e0,1,
-0x0c18f0,2,
-0x0c1900,5,
-0x0c1920,5,
-0x0c1990,10,
-0x0c19e0,1,
-0x0c19f0,2,
-0x0c1a00,1,
-0x0c1a10,2,
-0x0c1a20,1,
-0x0c1a30,2,
-0x0c1a48,3,
-0x0c1a80,3,
-0x0c1a90,1,
-0x0c1a98,12,
-0x0c1b04,2,
-0x0c1b14,3,
-0x0c1b24,2,
-0x0c1b34,3,
-0x0c1b80,5,
-0x0c1b98,3,
-0x0c1bb0,2,
-0x0c1bc0,5,
-0x0c1bd8,3,
-0x0c1bf0,2,
-0x0c1c00,10,
-0x0c1c2c,12,
-0x0c1c80,26,
-0x0c1d00,2,
-0x0c1d20,1,
-0x0c1e00,10,
-0x0c1e2c,12,
-0x0c1e80,26,
-0x0c1f00,2,
-0x0c1f20,1,
-0x0c2000,7,
-0x0c2020,8,
-0x0c2044,8,
-0x0c2080,7,
-0x0c20a0,8,
-0x0c20c4,8,
-0x0c2100,7,
-0x0c2120,8,
-0x0c2144,8,
-0x0c2180,7,
-0x0c21a0,8,
-0x0c21c4,8,
-0x0c2200,7,
-0x0c2220,8,
-0x0c2244,8,
-0x0c2280,7,
-0x0c22a0,8,
-0x0c22c4,8,
-0x0c2400,1,
-0x0c2418,1,
-0x0c2434,1,
-0x0c2504,1,
-0x0c2534,1,
-0x0c254c,1,
-0x0c2570,2,
-0x0c2600,1,
-0x0c2610,2,
-0x0c2804,15,
-0x0c2844,15,
-0x0c2884,15,
-0x0c28c4,15,
-0x0c2904,15,
-0x0c2944,16,
-0x0c2990,2,
-0x0c29a0,1,
-0x0c29b0,2,
-0x0c29c0,2,
-0x0c2a00,400,
-0x0c3080,28,
-0x0c3100,28,
-0x0c3184,2,
-0x0c3194,3,
-0x0c31a4,2,
-0x0c31b4,10,
-0x0c3200,7,
-0x0c3260,20,
-0x0c32c0,2,
-0x0c32cc,2,
-0x0c32d8,3,
-0x0c3300,1,
-0x0c3310,2,
-0x0c3320,1,
-0x0c3330,2,
-0x0c3340,1,
-0x0c3350,2,
-0x0c3360,1,
-0x0c3370,2,
-0x0c3380,1,
-0x0c3400,16,
-0x0c3480,28,
-0x0c3500,28,
-0x0c3584,2,
-0x0c3594,3,
-0x0c35a4,2,
-0x0c35b4,10,
-0x0c3600,7,
-0x0c3660,20,
-0x0c36c0,2,
-0x0c36cc,2,
-0x0c36d8,3,
-0x0c3700,1,
-0x0c3710,2,
-0x0c3720,1,
-0x0c3730,2,
-0x0c3740,1,
-0x0c3750,2,
-0x0c3760,1,
-0x0c3770,2,
-0x0c3780,1,
-0x0c3800,16,
-0x0c3880,28,
-0x0c3900,28,
-0x0c3984,2,
-0x0c3994,3,
-0x0c39a4,2,
-0x0c39b4,10,
-0x0c3a00,7,
-0x0c3a60,20,
-0x0c3ac0,2,
-0x0c3acc,2,
-0x0c3ad8,3,
-0x0c3b00,1,
-0x0c3b10,2,
-0x0c3b20,1,
-0x0c3b30,2,
-0x0c3b40,1,
-0x0c3b50,2,
-0x0c3b60,1,
-0x0c3b70,2,
-0x0c3b80,1,
-0x0c3c00,18,
-0x0c3c60,5,
-0x0c3c78,7,
-0x0c3c98,6,
-0x0c3ce0,3,
-0x0c3d04,7,
-0x0c3d30,1,
-0x0c3d44,7,
-0x0c3d70,1,
-0x0c3d84,7,
-0x0c3db0,1,
-0x0c3dc4,7,
-0x0c3df0,1,
-0x0c3e04,7,
-0x0c3e30,1,
-0x0c3e44,7,
-0x0c3e70,1,
-0x0c3e84,7,
-0x0c3eb0,1,
-0x0c3ec4,7,
-0x0c3ef0,1,
-0x0c3f00,1,
-0x0c3f24,1,
-0x0c3f30,4,
-0x0c3f44,1,
-0x0c3f50,4,
-0x0c3fa0,3,
-0x0c4000,5,
-0x0c4018,3,
-0x0c4080,2,
-0x0c408c,1,
-0x0c40a0,9,
-0x0c40d0,2,
-0x0c40e0,1,
-0x0c40e8,1,
-0x0c4100,2,
-0x0c410c,1,
-0x0c4120,9,
-0x0c4150,2,
-0x0c4160,1,
-0x0c4168,1,
-0x0c4180,2,
-0x0c418c,1,
-0x0c41a0,9,
-0x0c41d0,2,
-0x0c41e0,1,
-0x0c41e8,1,
-0x0c4200,2,
-0x0c420c,1,
-0x0c4220,9,
-0x0c4250,2,
-0x0c4260,1,
-0x0c4268,1,
-0x0c4284,2,
-0x0c42a8,2,
-0x0c42b4,1,
-0x0c42c4,2,
-0x0c42e8,2,
-0x0c42f4,1,
-0x0c4400,3,
-0x0c4410,15,
-0x0c4450,16,
-0x0c449c,1,
-0x0c44b0,9,
-0x0c44e0,1,
-0x0c44f0,3,
-0x0c4500,12,
-0x0c4534,4,
-0x0c4558,1,
-0x0c4580,1,
-0x0c4594,2,
-0x0c45ac,11,
-0x0c45ec,4,
-0x0c4600,15,
-0x0c4640,3,
-0x0c4650,3,
-0x0c4660,1,
-0x0c4670,2,
-0x0c4680,1,
-0x0c4690,2,
-0x0c46c0,4,
-0x0c46d4,8,
-0x0c4700,4,
-0x0c4714,8,
-0x0c4800,5,
-0x0c4818,3,
-0x0c4880,2,
-0x0c488c,1,
-0x0c48a0,9,
-0x0c48d0,2,
-0x0c48e0,1,
-0x0c48e8,1,
-0x0c4900,2,
-0x0c490c,1,
-0x0c4920,9,
-0x0c4950,2,
-0x0c4960,1,
-0x0c4968,1,
-0x0c4980,2,
-0x0c498c,1,
-0x0c49a0,9,
-0x0c49d0,2,
-0x0c49e0,1,
-0x0c49e8,1,
-0x0c4a00,2,
-0x0c4a0c,1,
-0x0c4a20,9,
-0x0c4a50,2,
-0x0c4a60,1,
-0x0c4a68,1,
-0x0c4a84,2,
-0x0c4aa8,2,
-0x0c4ab4,1,
-0x0c4ac4,2,
-0x0c4ae8,2,
-0x0c4af4,1,
-0x0c4c00,3,
-0x0c4c10,15,
-0x0c4c50,16,
-0x0c4c9c,1,
-0x0c4cb0,9,
-0x0c4ce0,1,
-0x0c4cf0,3,
-0x0c4d00,12,
-0x0c4d34,4,
-0x0c4d58,1,
-0x0c4d80,1,
-0x0c4d94,2,
-0x0c4dac,11,
-0x0c4dec,4,
-0x0c4e00,15,
-0x0c4e40,3,
-0x0c4e50,3,
-0x0c4e60,1,
-0x0c4e70,2,
-0x0c4e80,1,
-0x0c4e90,2,
-0x0c4ec0,4,
-0x0c4ed4,8,
-0x0c4f00,4,
-0x0c4f14,8,
-0x0c5000,5,
-0x0c5018,3,
-0x0c5080,2,
-0x0c508c,1,
-0x0c50a0,9,
-0x0c50d0,2,
-0x0c50e0,1,
-0x0c50e8,1,
-0x0c5100,2,
-0x0c510c,1,
-0x0c5120,9,
-0x0c5150,2,
-0x0c5160,1,
-0x0c5168,1,
-0x0c5180,2,
-0x0c518c,1,
-0x0c51a0,9,
-0x0c51d0,2,
-0x0c51e0,1,
-0x0c51e8,1,
-0x0c5200,2,
-0x0c520c,1,
-0x0c5220,9,
-0x0c5250,2,
-0x0c5260,1,
-0x0c5268,1,
-0x0c5284,2,
-0x0c52a8,2,
-0x0c52b4,1,
-0x0c52c4,2,
-0x0c52e8,2,
-0x0c52f4,1,
-0x0c5400,3,
-0x0c5410,15,
-0x0c5450,16,
-0x0c549c,1,
-0x0c54b0,9,
-0x0c54e0,1,
-0x0c54f0,3,
-0x0c5500,12,
-0x0c5534,4,
-0x0c5558,1,
-0x0c5580,1,
-0x0c5594,2,
-0x0c55ac,11,
-0x0c55ec,4,
-0x0c5600,15,
-0x0c5640,3,
-0x0c5650,3,
-0x0c5660,1,
-0x0c5670,2,
-0x0c5680,1,
-0x0c5690,2,
-0x0c56c0,4,
-0x0c56d4,8,
-0x0c5700,4,
-0x0c5714,8,
-0x0c5800,31,
-0x0c5880,8,
-0x0c58a4,1,
-0x0c58b4,20,
-0x0c5910,2,
-0x0c5920,3,
-0x0c5934,1,
-0x0c593c,2,
-0x0c5950,2,
-0x0c5a00,11,
-0x0c5a4c,8,
-0x0c5a70,2,
-0x0c5a7c,33,
-0x0c5c00,8,
-0x0c5c40,2,
-0x0c5c4c,11,
-0x0c5c80,8,
-0x0c5cc0,2,
-0x0c5ccc,11,
-0x0c5d00,8,
-0x0c5d40,2,
-0x0c5d4c,11,
-0x0c5d80,8,
-0x0c5dc0,2,
-0x0c5dcc,11,
-0x0c5e00,8,
-0x0c5e40,2,
-0x0c5e4c,11,
-0x0c5e80,8,
-0x0c5ec0,2,
-0x0c5ecc,11,
-0x0c5f00,9,
-0x0c5f30,2,
-0x0c5f40,49,
-0x0c6018,1,
-0x0c6034,1,
-0x0c6104,1,
-0x0c6134,1,
-0x0c614c,1,
-0x0c6170,2,
-0x0c6200,1,
-0x0c6210,2,
-0x0c6400,5,
-0x0c6418,9,
-0x0c6440,5,
-0x0c6460,1,
-0x0c6470,2,
-0x0c6500,5,
-0x0c6518,9,
-0x0c6540,5,
-0x0c6560,1,
-0x0c6570,2,
-0x0c6600,5,
-0x0c6618,9,
-0x0c6640,5,
-0x0c6660,1,
-0x0c6670,2,
-0x0c6700,1,
-0x0c6800,6,
-0x0c681c,3,
-0x0c682c,3,
-0x0c683c,8,
-0x0c6860,1,
-0x0c6868,1,
-0x0c6870,2,
-0x0c6880,1,
-0x0c6890,2,
-0x0c68a0,1,
-0x0c68b0,2,
-0x0c68c0,1,
-0x0c68d0,2,
-0x0c68e0,1,
-0x0c68f0,2,
-0x0c6900,29,
-0x0c6980,27,
-0x0c69f0,1,
-0x0c6c00,6,
-0x0c6c1c,3,
-0x0c6c2c,3,
-0x0c6c3c,8,
-0x0c6c60,1,
-0x0c6c68,1,
-0x0c6c70,2,
-0x0c6c80,1,
-0x0c6c90,2,
-0x0c6ca0,1,
-0x0c6cb0,2,
-0x0c6cc0,1,
-0x0c6cd0,2,
-0x0c6ce0,1,
-0x0c6cf0,2,
-0x0c6d00,29,
-0x0c6d80,27,
-0x0c6df0,1,
-0x0c7000,6,
-0x0c701c,3,
-0x0c702c,3,
-0x0c703c,8,
-0x0c7060,1,
-0x0c7068,1,
-0x0c7070,2,
-0x0c7080,1,
-0x0c7090,2,
-0x0c70a0,1,
-0x0c70b0,2,
-0x0c70c0,1,
-0x0c70d0,2,
-0x0c70e0,1,
-0x0c70f0,2,
-0x0c7100,29,
-0x0c7180,27,
-0x0c71f0,1,
-0x0c7400,6,
-0x0c741c,3,
-0x0c742c,3,
-0x0c743c,8,
-0x0c7460,1,
-0x0c7468,1,
-0x0c7470,2,
-0x0c7480,1,
-0x0c7490,2,
-0x0c74a0,1,
-0x0c74b0,2,
-0x0c74c0,1,
-0x0c74d0,2,
-0x0c74e0,1,
-0x0c74f0,2,
-0x0c7500,29,
-0x0c7580,27,
-0x0c75f0,1,
-0x0c7800,6,
-0x0c781c,3,
-0x0c782c,3,
-0x0c783c,8,
-0x0c7860,1,
-0x0c7868,1,
-0x0c7870,2,
-0x0c7880,1,
-0x0c7890,2,
-0x0c78a0,1,
-0x0c78b0,2,
-0x0c78c0,1,
-0x0c78d0,2,
-0x0c78e0,1,
-0x0c78f0,2,
-0x0c7900,29,
-0x0c7980,27,
-0x0c79f0,1,
-0x0c7c00,6,
-0x0c7c1c,3,
-0x0c7c2c,3,
-0x0c7c3c,8,
-0x0c7c60,1,
-0x0c7c68,1,
-0x0c7c70,2,
-0x0c7c80,1,
-0x0c7c90,2,
-0x0c7ca0,1,
-0x0c7cb0,2,
-0x0c7cc0,1,
-0x0c7cd0,2,
-0x0c7ce0,1,
-0x0c7cf0,2,
-0x0c7d00,29,
-0x0c7d80,27,
-0x0c7df0,1,
-0x0c8000,2,
-0x0c8018,2,
-0x0c8034,2,
-0x0c8104,3,
-0x0c8134,2,
-0x0c814c,1,
-0x0c8170,2,
-0x0c8200,1,
-0x0c8210,2,
-0x0c8220,1,
-0x0c8230,2,
-0x0c8400,1,
-0x0c8410,2,
-0x0c8420,3,
-0x0c8430,22,
-0x0c84ac,1,
-0x0c84c0,6,
-0x0c8500,1,
-0x0c8510,2,
-0x0c8520,3,
-0x0c8540,8,
-0x0c8580,6,
-0x0c85a0,6,
-0x0c8600,10,
-0x0c8640,10,
-0x0c8680,10,
-0x0c86c0,10,
-0x0c8700,10,
-0x0c8740,10,
-0x0c8800,5,
-0x0c8820,5,
-0x0c8890,10,
-0x0c88e0,1,
-0x0c88f0,2,
-0x0c8900,5,
-0x0c8920,5,
-0x0c8990,10,
-0x0c89e0,1,
-0x0c89f0,2,
-0x0c8a00,1,
-0x0c8a10,2,
-0x0c8a20,1,
-0x0c8a30,2,
-0x0c8a48,3,
-0x0c8a80,3,
-0x0c8a90,1,
-0x0c8a98,12,
-0x0c8b04,2,
-0x0c8b14,3,
-0x0c8b24,2,
-0x0c8b34,3,
-0x0c8b80,5,
-0x0c8b98,3,
-0x0c8bb0,2,
-0x0c8bc0,5,
-0x0c8bd8,3,
-0x0c8bf0,2,
-0x0c8c00,10,
-0x0c8c2c,12,
-0x0c8c80,26,
-0x0c8d00,2,
-0x0c8d20,1,
-0x0c8e00,10,
-0x0c8e2c,12,
-0x0c8e80,26,
-0x0c8f00,2,
-0x0c8f20,1,
-0x0c9000,5,
-0x0c9020,5,
-0x0c9090,10,
-0x0c90e0,1,
-0x0c90f0,2,
-0x0c9100,5,
-0x0c9120,5,
-0x0c9190,10,
-0x0c91e0,1,
-0x0c91f0,2,
-0x0c9200,1,
-0x0c9210,2,
-0x0c9220,1,
-0x0c9230,2,
-0x0c9248,3,
-0x0c9280,3,
-0x0c9290,1,
-0x0c9298,12,
-0x0c9304,2,
-0x0c9314,3,
-0x0c9324,2,
-0x0c9334,3,
-0x0c9380,5,
-0x0c9398,3,
-0x0c93b0,2,
-0x0c93c0,5,
-0x0c93d8,3,
-0x0c93f0,2,
-0x0c9400,10,
-0x0c942c,12,
-0x0c9480,26,
-0x0c9500,2,
-0x0c9520,1,
-0x0c9600,10,
-0x0c962c,12,
-0x0c9680,26,
-0x0c9700,2,
-0x0c9720,1,
-0x0c9800,5,
-0x0c9820,5,
-0x0c9890,10,
-0x0c98e0,1,
-0x0c98f0,2,
-0x0c9900,5,
-0x0c9920,5,
-0x0c9990,10,
-0x0c99e0,1,
-0x0c99f0,2,
-0x0c9a00,1,
-0x0c9a10,2,
-0x0c9a20,1,
-0x0c9a30,2,
-0x0c9a48,3,
-0x0c9a80,3,
-0x0c9a90,1,
-0x0c9a98,12,
-0x0c9b04,2,
-0x0c9b14,3,
-0x0c9b24,2,
-0x0c9b34,3,
-0x0c9b80,5,
-0x0c9b98,3,
-0x0c9bb0,2,
-0x0c9bc0,5,
-0x0c9bd8,3,
-0x0c9bf0,2,
-0x0c9c00,10,
-0x0c9c2c,12,
-0x0c9c80,26,
-0x0c9d00,2,
-0x0c9d20,1,
-0x0c9e00,10,
-0x0c9e2c,12,
-0x0c9e80,26,
-0x0c9f00,2,
-0x0c9f20,1,
-0x0ca000,7,
-0x0ca020,8,
-0x0ca044,8,
-0x0ca080,7,
-0x0ca0a0,8,
-0x0ca0c4,8,
-0x0ca100,7,
-0x0ca120,8,
-0x0ca144,8,
-0x0ca180,7,
-0x0ca1a0,8,
-0x0ca1c4,8,
-0x0ca200,7,
-0x0ca220,8,
-0x0ca244,8,
-0x0ca280,7,
-0x0ca2a0,8,
-0x0ca2c4,8,
-0x0ca400,1,
-0x0ca418,1,
-0x0ca434,1,
-0x0ca504,1,
-0x0ca534,1,
-0x0ca54c,1,
-0x0ca570,2,
-0x0ca600,1,
-0x0ca610,2,
-0x0ca804,15,
-0x0ca844,15,
-0x0ca884,15,
-0x0ca8c4,15,
-0x0ca904,15,
-0x0ca944,16,
-0x0ca990,2,
-0x0ca9a0,1,
-0x0ca9b0,2,
-0x0ca9c0,2,
-0x0caa00,400,
-0x0cb080,28,
-0x0cb100,28,
-0x0cb184,2,
-0x0cb194,3,
-0x0cb1a4,2,
-0x0cb1b4,10,
-0x0cb200,7,
-0x0cb260,20,
-0x0cb2c0,2,
-0x0cb2cc,2,
-0x0cb2d8,3,
-0x0cb300,1,
-0x0cb310,2,
-0x0cb320,1,
-0x0cb330,2,
-0x0cb340,1,
-0x0cb350,2,
-0x0cb360,1,
-0x0cb370,2,
-0x0cb380,1,
-0x0cb400,16,
-0x0cb480,28,
-0x0cb500,28,
-0x0cb584,2,
-0x0cb594,3,
-0x0cb5a4,2,
-0x0cb5b4,10,
-0x0cb600,7,
-0x0cb660,20,
-0x0cb6c0,2,
-0x0cb6cc,2,
-0x0cb6d8,3,
-0x0cb700,1,
-0x0cb710,2,
-0x0cb720,1,
-0x0cb730,2,
-0x0cb740,1,
-0x0cb750,2,
-0x0cb760,1,
-0x0cb770,2,
-0x0cb780,1,
-0x0cb800,16,
-0x0cb880,28,
-0x0cb900,28,
-0x0cb984,2,
-0x0cb994,3,
-0x0cb9a4,2,
-0x0cb9b4,10,
-0x0cba00,7,
-0x0cba60,20,
-0x0cbac0,2,
-0x0cbacc,2,
-0x0cbad8,3,
-0x0cbb00,1,
-0x0cbb10,2,
-0x0cbb20,1,
-0x0cbb30,2,
-0x0cbb40,1,
-0x0cbb50,2,
-0x0cbb60,1,
-0x0cbb70,2,
-0x0cbb80,1,
-0x0cbc00,18,
-0x0cbc60,5,
-0x0cbc78,7,
-0x0cbc98,6,
-0x0cbce0,3,
-0x0cbd04,7,
-0x0cbd30,1,
-0x0cbd44,7,
-0x0cbd70,1,
-0x0cbd84,7,
-0x0cbdb0,1,
-0x0cbdc4,7,
-0x0cbdf0,1,
-0x0cbe04,7,
-0x0cbe30,1,
-0x0cbe44,7,
-0x0cbe70,1,
-0x0cbe84,7,
-0x0cbeb0,1,
-0x0cbec4,7,
-0x0cbef0,1,
-0x0cbf00,1,
-0x0cbf24,1,
-0x0cbf30,4,
-0x0cbf44,1,
-0x0cbf50,4,
-0x0cbfa0,3,
-0x0cc000,5,
-0x0cc018,3,
-0x0cc080,2,
-0x0cc08c,1,
-0x0cc0a0,9,
-0x0cc0d0,2,
-0x0cc0e0,1,
-0x0cc0e8,1,
-0x0cc100,2,
-0x0cc10c,1,
-0x0cc120,9,
-0x0cc150,2,
-0x0cc160,1,
-0x0cc168,1,
-0x0cc180,2,
-0x0cc18c,1,
-0x0cc1a0,9,
-0x0cc1d0,2,
-0x0cc1e0,1,
-0x0cc1e8,1,
-0x0cc200,2,
-0x0cc20c,1,
-0x0cc220,9,
-0x0cc250,2,
-0x0cc260,1,
-0x0cc268,1,
-0x0cc284,2,
-0x0cc2a8,2,
-0x0cc2b4,1,
-0x0cc2c4,2,
-0x0cc2e8,2,
-0x0cc2f4,1,
-0x0cc400,3,
-0x0cc410,15,
-0x0cc450,16,
-0x0cc49c,1,
-0x0cc4b0,9,
-0x0cc4e0,1,
-0x0cc4f0,3,
-0x0cc500,12,
-0x0cc534,4,
-0x0cc558,1,
-0x0cc580,1,
-0x0cc594,2,
-0x0cc5ac,11,
-0x0cc5ec,4,
-0x0cc600,15,
-0x0cc640,3,
-0x0cc650,3,
-0x0cc660,1,
-0x0cc670,2,
-0x0cc680,1,
-0x0cc690,2,
-0x0cc6c0,4,
-0x0cc6d4,8,
-0x0cc700,4,
-0x0cc714,8,
-0x0cc800,5,
-0x0cc818,3,
-0x0cc880,2,
-0x0cc88c,1,
-0x0cc8a0,9,
-0x0cc8d0,2,
-0x0cc8e0,1,
-0x0cc8e8,1,
-0x0cc900,2,
-0x0cc90c,1,
-0x0cc920,9,
-0x0cc950,2,
-0x0cc960,1,
-0x0cc968,1,
-0x0cc980,2,
-0x0cc98c,1,
-0x0cc9a0,9,
-0x0cc9d0,2,
-0x0cc9e0,1,
-0x0cc9e8,1,
-0x0cca00,2,
-0x0cca0c,1,
-0x0cca20,9,
-0x0cca50,2,
-0x0cca60,1,
-0x0cca68,1,
-0x0cca84,2,
-0x0ccaa8,2,
-0x0ccab4,1,
-0x0ccac4,2,
-0x0ccae8,2,
-0x0ccaf4,1,
-0x0ccc00,3,
-0x0ccc10,15,
-0x0ccc50,16,
-0x0ccc9c,1,
-0x0cccb0,9,
-0x0ccce0,1,
-0x0cccf0,3,
-0x0ccd00,12,
-0x0ccd34,4,
-0x0ccd58,1,
-0x0ccd80,1,
-0x0ccd94,2,
-0x0ccdac,11,
-0x0ccdec,4,
-0x0cce00,15,
-0x0cce40,3,
-0x0cce50,3,
-0x0cce60,1,
-0x0cce70,2,
-0x0cce80,1,
-0x0cce90,2,
-0x0ccec0,4,
-0x0cced4,8,
-0x0ccf00,4,
-0x0ccf14,8,
-0x0cd000,5,
-0x0cd018,3,
-0x0cd080,2,
-0x0cd08c,1,
-0x0cd0a0,9,
-0x0cd0d0,2,
-0x0cd0e0,1,
-0x0cd0e8,1,
-0x0cd100,2,
-0x0cd10c,1,
-0x0cd120,9,
-0x0cd150,2,
-0x0cd160,1,
-0x0cd168,1,
-0x0cd180,2,
-0x0cd18c,1,
-0x0cd1a0,9,
-0x0cd1d0,2,
-0x0cd1e0,1,
-0x0cd1e8,1,
-0x0cd200,2,
-0x0cd20c,1,
-0x0cd220,9,
-0x0cd250,2,
-0x0cd260,1,
-0x0cd268,1,
-0x0cd284,2,
-0x0cd2a8,2,
-0x0cd2b4,1,
-0x0cd2c4,2,
-0x0cd2e8,2,
-0x0cd2f4,1,
-0x0cd400,3,
-0x0cd410,15,
-0x0cd450,16,
-0x0cd49c,1,
-0x0cd4b0,9,
-0x0cd4e0,1,
-0x0cd4f0,3,
-0x0cd500,12,
-0x0cd534,4,
-0x0cd558,1,
-0x0cd580,1,
-0x0cd594,2,
-0x0cd5ac,11,
-0x0cd5ec,4,
-0x0cd600,15,
-0x0cd640,3,
-0x0cd650,3,
-0x0cd660,1,
-0x0cd670,2,
-0x0cd680,1,
-0x0cd690,2,
-0x0cd6c0,4,
-0x0cd6d4,8,
-0x0cd700,4,
-0x0cd714,8,
-0x0cd800,31,
-0x0cd880,8,
-0x0cd8a4,1,
-0x0cd8b4,20,
-0x0cd910,2,
-0x0cd920,3,
-0x0cd934,1,
-0x0cd93c,2,
-0x0cd950,2,
-0x0cda00,11,
-0x0cda4c,8,
-0x0cda70,2,
-0x0cda7c,33,
-0x0cdc00,8,
-0x0cdc40,2,
-0x0cdc4c,11,
-0x0cdc80,8,
-0x0cdcc0,2,
-0x0cdccc,11,
-0x0cdd00,8,
-0x0cdd40,2,
-0x0cdd4c,11,
-0x0cdd80,8,
-0x0cddc0,2,
-0x0cddcc,11,
-0x0cde00,8,
-0x0cde40,2,
-0x0cde4c,11,
-0x0cde80,8,
-0x0cdec0,2,
-0x0cdecc,11,
-0x0cdf00,9,
-0x0cdf30,2,
-0x0cdf40,49,
-0x0ce018,1,
-0x0ce034,1,
-0x0ce104,1,
-0x0ce134,1,
-0x0ce14c,1,
-0x0ce170,2,
-0x0ce200,1,
-0x0ce210,2,
-0x0ce400,5,
-0x0ce418,9,
-0x0ce440,5,
-0x0ce460,1,
-0x0ce470,2,
-0x0ce500,5,
-0x0ce518,9,
-0x0ce540,5,
-0x0ce560,1,
-0x0ce570,2,
-0x0ce600,5,
-0x0ce618,9,
-0x0ce640,5,
-0x0ce660,1,
-0x0ce670,2,
-0x0ce700,1,
-0x0ce800,6,
-0x0ce81c,3,
-0x0ce82c,3,
-0x0ce83c,8,
-0x0ce860,1,
-0x0ce868,1,
-0x0ce870,2,
-0x0ce880,1,
-0x0ce890,2,
-0x0ce8a0,1,
-0x0ce8b0,2,
-0x0ce8c0,1,
-0x0ce8d0,2,
-0x0ce8e0,1,
-0x0ce8f0,2,
-0x0ce900,29,
-0x0ce980,27,
-0x0ce9f0,1,
-0x0cec00,6,
-0x0cec1c,3,
-0x0cec2c,3,
-0x0cec3c,8,
-0x0cec60,1,
-0x0cec68,1,
-0x0cec70,2,
-0x0cec80,1,
-0x0cec90,2,
-0x0ceca0,1,
-0x0cecb0,2,
-0x0cecc0,1,
-0x0cecd0,2,
-0x0cece0,1,
-0x0cecf0,2,
-0x0ced00,29,
-0x0ced80,27,
-0x0cedf0,1,
-0x0cf000,6,
-0x0cf01c,3,
-0x0cf02c,3,
-0x0cf03c,8,
-0x0cf060,1,
-0x0cf068,1,
-0x0cf070,2,
-0x0cf080,1,
-0x0cf090,2,
-0x0cf0a0,1,
-0x0cf0b0,2,
-0x0cf0c0,1,
-0x0cf0d0,2,
-0x0cf0e0,1,
-0x0cf0f0,2,
-0x0cf100,29,
-0x0cf180,27,
-0x0cf1f0,1,
-0x0cf400,6,
-0x0cf41c,3,
-0x0cf42c,3,
-0x0cf43c,8,
-0x0cf460,1,
-0x0cf468,1,
-0x0cf470,2,
-0x0cf480,1,
-0x0cf490,2,
-0x0cf4a0,1,
-0x0cf4b0,2,
-0x0cf4c0,1,
-0x0cf4d0,2,
-0x0cf4e0,1,
-0x0cf4f0,2,
-0x0cf500,29,
-0x0cf580,27,
-0x0cf5f0,1,
-0x0cf800,6,
-0x0cf81c,3,
-0x0cf82c,3,
-0x0cf83c,8,
-0x0cf860,1,
-0x0cf868,1,
-0x0cf870,2,
-0x0cf880,1,
-0x0cf890,2,
-0x0cf8a0,1,
-0x0cf8b0,2,
-0x0cf8c0,1,
-0x0cf8d0,2,
-0x0cf8e0,1,
-0x0cf8f0,2,
-0x0cf900,29,
-0x0cf980,27,
-0x0cf9f0,1,
-0x0cfc00,6,
-0x0cfc1c,3,
-0x0cfc2c,3,
-0x0cfc3c,8,
-0x0cfc60,1,
-0x0cfc68,1,
-0x0cfc70,2,
-0x0cfc80,1,
-0x0cfc90,2,
-0x0cfca0,1,
-0x0cfcb0,2,
-0x0cfcc0,1,
-0x0cfcd0,2,
-0x0cfce0,1,
-0x0cfcf0,2,
-0x0cfd00,29,
-0x0cfd80,27,
-0x0cfdf0,1,
-0x0d0000,2,
-0x0d0018,2,
-0x0d0034,2,
-0x0d0104,3,
-0x0d0134,2,
-0x0d014c,1,
-0x0d0170,2,
-0x0d0200,1,
-0x0d0210,2,
-0x0d0220,1,
-0x0d0230,2,
-0x0d0400,1,
-0x0d0410,2,
-0x0d0420,3,
-0x0d0430,22,
-0x0d04ac,1,
-0x0d04c0,6,
-0x0d0500,1,
-0x0d0510,2,
-0x0d0520,3,
-0x0d0540,8,
-0x0d0580,6,
-0x0d05a0,6,
-0x0d0600,10,
-0x0d0640,10,
-0x0d0680,10,
-0x0d06c0,10,
-0x0d0700,10,
-0x0d0740,10,
-0x0d0800,5,
-0x0d0820,5,
-0x0d0890,10,
-0x0d08e0,1,
-0x0d08f0,2,
-0x0d0900,5,
-0x0d0920,5,
-0x0d0990,10,
-0x0d09e0,1,
-0x0d09f0,2,
-0x0d0a00,1,
-0x0d0a10,2,
-0x0d0a20,1,
-0x0d0a30,2,
-0x0d0a48,3,
-0x0d0a80,3,
-0x0d0a90,1,
-0x0d0a98,12,
-0x0d0b04,2,
-0x0d0b14,3,
-0x0d0b24,2,
-0x0d0b34,3,
-0x0d0b80,5,
-0x0d0b98,3,
-0x0d0bb0,2,
-0x0d0bc0,5,
-0x0d0bd8,3,
-0x0d0bf0,2,
-0x0d0c00,10,
-0x0d0c2c,12,
-0x0d0c80,26,
-0x0d0d00,2,
-0x0d0d20,1,
-0x0d0e00,10,
-0x0d0e2c,12,
-0x0d0e80,26,
-0x0d0f00,2,
-0x0d0f20,1,
-0x0d1000,5,
-0x0d1020,5,
-0x0d1090,10,
-0x0d10e0,1,
-0x0d10f0,2,
-0x0d1100,5,
-0x0d1120,5,
-0x0d1190,10,
-0x0d11e0,1,
-0x0d11f0,2,
-0x0d1200,1,
-0x0d1210,2,
-0x0d1220,1,
-0x0d1230,2,
-0x0d1248,3,
-0x0d1280,3,
-0x0d1290,1,
-0x0d1298,12,
-0x0d1304,2,
-0x0d1314,3,
-0x0d1324,2,
-0x0d1334,3,
-0x0d1380,5,
-0x0d1398,3,
-0x0d13b0,2,
-0x0d13c0,5,
-0x0d13d8,3,
-0x0d13f0,2,
-0x0d1400,10,
-0x0d142c,12,
-0x0d1480,26,
-0x0d1500,2,
-0x0d1520,1,
-0x0d1600,10,
-0x0d162c,12,
-0x0d1680,26,
-0x0d1700,2,
-0x0d1720,1,
-0x0d1800,5,
-0x0d1820,5,
-0x0d1890,10,
-0x0d18e0,1,
-0x0d18f0,2,
-0x0d1900,5,
-0x0d1920,5,
-0x0d1990,10,
-0x0d19e0,1,
-0x0d19f0,2,
-0x0d1a00,1,
-0x0d1a10,2,
-0x0d1a20,1,
-0x0d1a30,2,
-0x0d1a48,3,
-0x0d1a80,3,
-0x0d1a90,1,
-0x0d1a98,12,
-0x0d1b04,2,
-0x0d1b14,3,
-0x0d1b24,2,
-0x0d1b34,3,
-0x0d1b80,5,
-0x0d1b98,3,
-0x0d1bb0,2,
-0x0d1bc0,5,
-0x0d1bd8,3,
-0x0d1bf0,2,
-0x0d1c00,10,
-0x0d1c2c,12,
-0x0d1c80,26,
-0x0d1d00,2,
-0x0d1d20,1,
-0x0d1e00,10,
-0x0d1e2c,12,
-0x0d1e80,26,
-0x0d1f00,2,
-0x0d1f20,1,
-0x0d2000,7,
-0x0d2020,8,
-0x0d2044,8,
-0x0d2080,7,
-0x0d20a0,8,
-0x0d20c4,8,
-0x0d2100,7,
-0x0d2120,8,
-0x0d2144,8,
-0x0d2180,7,
-0x0d21a0,8,
-0x0d21c4,8,
-0x0d2200,7,
-0x0d2220,8,
-0x0d2244,8,
-0x0d2280,7,
-0x0d22a0,8,
-0x0d22c4,8,
-0x0d2400,1,
-0x0d2418,1,
-0x0d2434,1,
-0x0d2504,1,
-0x0d2534,1,
-0x0d254c,1,
-0x0d2570,2,
-0x0d2600,1,
-0x0d2610,2,
-0x0d2804,15,
-0x0d2844,15,
-0x0d2884,15,
-0x0d28c4,15,
-0x0d2904,15,
-0x0d2944,16,
-0x0d2990,2,
-0x0d29a0,1,
-0x0d29b0,2,
-0x0d29c0,2,
-0x0d2a00,400,
-0x0d3080,28,
-0x0d3100,28,
-0x0d3184,2,
-0x0d3194,3,
-0x0d31a4,2,
-0x0d31b4,10,
-0x0d3200,7,
-0x0d3260,20,
-0x0d32c0,2,
-0x0d32cc,2,
-0x0d32d8,3,
-0x0d3300,1,
-0x0d3310,2,
-0x0d3320,1,
-0x0d3330,2,
-0x0d3340,1,
-0x0d3350,2,
-0x0d3360,1,
-0x0d3370,2,
-0x0d3380,1,
-0x0d3400,16,
-0x0d3480,28,
-0x0d3500,28,
-0x0d3584,2,
-0x0d3594,3,
-0x0d35a4,2,
-0x0d35b4,10,
-0x0d3600,7,
-0x0d3660,20,
-0x0d36c0,2,
-0x0d36cc,2,
-0x0d36d8,3,
-0x0d3700,1,
-0x0d3710,2,
-0x0d3720,1,
-0x0d3730,2,
-0x0d3740,1,
-0x0d3750,2,
-0x0d3760,1,
-0x0d3770,2,
-0x0d3780,1,
-0x0d3800,16,
-0x0d3880,28,
-0x0d3900,28,
-0x0d3984,2,
-0x0d3994,3,
-0x0d39a4,2,
-0x0d39b4,10,
-0x0d3a00,7,
-0x0d3a60,20,
-0x0d3ac0,2,
-0x0d3acc,2,
-0x0d3ad8,3,
-0x0d3b00,1,
-0x0d3b10,2,
-0x0d3b20,1,
-0x0d3b30,2,
-0x0d3b40,1,
-0x0d3b50,2,
-0x0d3b60,1,
-0x0d3b70,2,
-0x0d3b80,1,
-0x0d3c00,18,
-0x0d3c60,5,
-0x0d3c78,7,
-0x0d3c98,6,
-0x0d3ce0,3,
-0x0d3d04,7,
-0x0d3d30,1,
-0x0d3d44,7,
-0x0d3d70,1,
-0x0d3d84,7,
-0x0d3db0,1,
-0x0d3dc4,7,
-0x0d3df0,1,
-0x0d3e04,7,
-0x0d3e30,1,
-0x0d3e44,7,
-0x0d3e70,1,
-0x0d3e84,7,
-0x0d3eb0,1,
-0x0d3ec4,7,
-0x0d3ef0,1,
-0x0d3f00,1,
-0x0d3f24,1,
-0x0d3f30,4,
-0x0d3f44,1,
-0x0d3f50,4,
-0x0d3fa0,3,
-0x0d4000,5,
-0x0d4018,3,
-0x0d4080,2,
-0x0d408c,1,
-0x0d40a0,9,
-0x0d40d0,2,
-0x0d40e0,1,
-0x0d40e8,1,
-0x0d4100,2,
-0x0d410c,1,
-0x0d4120,9,
-0x0d4150,2,
-0x0d4160,1,
-0x0d4168,1,
-0x0d4180,2,
-0x0d418c,1,
-0x0d41a0,9,
-0x0d41d0,2,
-0x0d41e0,1,
-0x0d41e8,1,
-0x0d4200,2,
-0x0d420c,1,
-0x0d4220,9,
-0x0d4250,2,
-0x0d4260,1,
-0x0d4268,1,
-0x0d4284,2,
-0x0d42a8,2,
-0x0d42b4,1,
-0x0d42c4,2,
-0x0d42e8,2,
-0x0d42f4,1,
-0x0d4400,3,
-0x0d4410,15,
-0x0d4450,16,
-0x0d449c,1,
-0x0d44b0,9,
-0x0d44e0,1,
-0x0d44f0,3,
-0x0d4500,12,
-0x0d4534,4,
-0x0d4558,1,
-0x0d4580,1,
-0x0d4594,2,
-0x0d45ac,11,
-0x0d45ec,4,
-0x0d4600,15,
-0x0d4640,3,
-0x0d4650,3,
-0x0d4660,1,
-0x0d4670,2,
-0x0d4680,1,
-0x0d4690,2,
-0x0d46c0,4,
-0x0d46d4,8,
-0x0d4700,4,
-0x0d4714,8,
-0x0d4800,5,
-0x0d4818,3,
-0x0d4880,2,
-0x0d488c,1,
-0x0d48a0,9,
-0x0d48d0,2,
-0x0d48e0,1,
-0x0d48e8,1,
-0x0d4900,2,
-0x0d490c,1,
-0x0d4920,9,
-0x0d4950,2,
-0x0d4960,1,
-0x0d4968,1,
-0x0d4980,2,
-0x0d498c,1,
-0x0d49a0,9,
-0x0d49d0,2,
-0x0d49e0,1,
-0x0d49e8,1,
-0x0d4a00,2,
-0x0d4a0c,1,
-0x0d4a20,9,
-0x0d4a50,2,
-0x0d4a60,1,
-0x0d4a68,1,
-0x0d4a84,2,
-0x0d4aa8,2,
-0x0d4ab4,1,
-0x0d4ac4,2,
-0x0d4ae8,2,
-0x0d4af4,1,
-0x0d4c00,3,
-0x0d4c10,15,
-0x0d4c50,16,
-0x0d4c9c,1,
-0x0d4cb0,9,
-0x0d4ce0,1,
-0x0d4cf0,3,
-0x0d4d00,12,
-0x0d4d34,4,
-0x0d4d58,1,
-0x0d4d80,1,
-0x0d4d94,2,
-0x0d4dac,11,
-0x0d4dec,4,
-0x0d4e00,15,
-0x0d4e40,3,
-0x0d4e50,3,
-0x0d4e60,1,
-0x0d4e70,2,
-0x0d4e80,1,
-0x0d4e90,2,
-0x0d4ec0,4,
-0x0d4ed4,8,
-0x0d4f00,4,
-0x0d4f14,8,
-0x0d5000,5,
-0x0d5018,3,
-0x0d5080,2,
-0x0d508c,1,
-0x0d50a0,9,
-0x0d50d0,2,
-0x0d50e0,1,
-0x0d50e8,1,
-0x0d5100,2,
-0x0d510c,1,
-0x0d5120,9,
-0x0d5150,2,
-0x0d5160,1,
-0x0d5168,1,
-0x0d5180,2,
-0x0d518c,1,
-0x0d51a0,9,
-0x0d51d0,2,
-0x0d51e0,1,
-0x0d51e8,1,
-0x0d5200,2,
-0x0d520c,1,
-0x0d5220,9,
-0x0d5250,2,
-0x0d5260,1,
-0x0d5268,1,
-0x0d5284,2,
-0x0d52a8,2,
-0x0d52b4,1,
-0x0d52c4,2,
-0x0d52e8,2,
-0x0d52f4,1,
-0x0d5400,3,
-0x0d5410,15,
-0x0d5450,16,
-0x0d549c,1,
-0x0d54b0,9,
-0x0d54e0,1,
-0x0d54f0,3,
-0x0d5500,12,
-0x0d5534,4,
-0x0d5558,1,
-0x0d5580,1,
-0x0d5594,2,
-0x0d55ac,11,
-0x0d55ec,4,
-0x0d5600,15,
-0x0d5640,3,
-0x0d5650,3,
-0x0d5660,1,
-0x0d5670,2,
-0x0d5680,1,
-0x0d5690,2,
-0x0d56c0,4,
-0x0d56d4,8,
-0x0d5700,4,
-0x0d5714,8,
-0x0d5800,31,
-0x0d5880,8,
-0x0d58a4,1,
-0x0d58b4,20,
-0x0d5910,2,
-0x0d5920,3,
-0x0d5934,1,
-0x0d593c,2,
-0x0d5950,2,
-0x0d5a00,11,
-0x0d5a4c,8,
-0x0d5a70,2,
-0x0d5a7c,33,
-0x0d5c00,8,
-0x0d5c40,2,
-0x0d5c4c,11,
-0x0d5c80,8,
-0x0d5cc0,2,
-0x0d5ccc,11,
-0x0d5d00,8,
-0x0d5d40,2,
-0x0d5d4c,11,
-0x0d5d80,8,
-0x0d5dc0,2,
-0x0d5dcc,11,
-0x0d5e00,8,
-0x0d5e40,2,
-0x0d5e4c,11,
-0x0d5e80,8,
-0x0d5ec0,2,
-0x0d5ecc,11,
-0x0d5f00,9,
-0x0d5f30,2,
-0x0d5f40,49,
-0x0d6018,1,
-0x0d6034,1,
-0x0d6104,1,
-0x0d6134,1,
-0x0d614c,1,
-0x0d6170,2,
-0x0d6200,1,
-0x0d6210,2,
-0x0d6400,5,
-0x0d6418,9,
-0x0d6440,5,
-0x0d6460,1,
-0x0d6470,2,
-0x0d6500,5,
-0x0d6518,9,
-0x0d6540,5,
-0x0d6560,1,
-0x0d6570,2,
-0x0d6600,5,
-0x0d6618,9,
-0x0d6640,5,
-0x0d6660,1,
-0x0d6670,2,
-0x0d6700,1,
-0x0d6800,6,
-0x0d681c,3,
-0x0d682c,3,
-0x0d683c,8,
-0x0d6860,1,
-0x0d6868,1,
-0x0d6870,2,
-0x0d6880,1,
-0x0d6890,2,
-0x0d68a0,1,
-0x0d68b0,2,
-0x0d68c0,1,
-0x0d68d0,2,
-0x0d68e0,1,
-0x0d68f0,2,
-0x0d6900,29,
-0x0d6980,27,
-0x0d69f0,1,
-0x0d6c00,6,
-0x0d6c1c,3,
-0x0d6c2c,3,
-0x0d6c3c,8,
-0x0d6c60,1,
-0x0d6c68,1,
-0x0d6c70,2,
-0x0d6c80,1,
-0x0d6c90,2,
-0x0d6ca0,1,
-0x0d6cb0,2,
-0x0d6cc0,1,
-0x0d6cd0,2,
-0x0d6ce0,1,
-0x0d6cf0,2,
-0x0d6d00,29,
-0x0d6d80,27,
-0x0d6df0,1,
-0x0d7000,6,
-0x0d701c,3,
-0x0d702c,3,
-0x0d703c,8,
-0x0d7060,1,
-0x0d7068,1,
-0x0d7070,2,
-0x0d7080,1,
-0x0d7090,2,
-0x0d70a0,1,
-0x0d70b0,2,
-0x0d70c0,1,
-0x0d70d0,2,
-0x0d70e0,1,
-0x0d70f0,2,
-0x0d7100,29,
-0x0d7180,27,
-0x0d71f0,1,
-0x0d7400,6,
-0x0d741c,3,
-0x0d742c,3,
-0x0d743c,8,
-0x0d7460,1,
-0x0d7468,1,
-0x0d7470,2,
-0x0d7480,1,
-0x0d7490,2,
-0x0d74a0,1,
-0x0d74b0,2,
-0x0d74c0,1,
-0x0d74d0,2,
-0x0d74e0,1,
-0x0d74f0,2,
-0x0d7500,29,
-0x0d7580,27,
-0x0d75f0,1,
-0x0d7800,6,
-0x0d781c,3,
-0x0d782c,3,
-0x0d783c,8,
-0x0d7860,1,
-0x0d7868,1,
-0x0d7870,2,
-0x0d7880,1,
-0x0d7890,2,
-0x0d78a0,1,
-0x0d78b0,2,
-0x0d78c0,1,
-0x0d78d0,2,
-0x0d78e0,1,
-0x0d78f0,2,
-0x0d7900,29,
-0x0d7980,27,
-0x0d79f0,1,
-0x0d7c00,6,
-0x0d7c1c,3,
-0x0d7c2c,3,
-0x0d7c3c,8,
-0x0d7c60,1,
-0x0d7c68,1,
-0x0d7c70,2,
-0x0d7c80,1,
-0x0d7c90,2,
-0x0d7ca0,1,
-0x0d7cb0,2,
-0x0d7cc0,1,
-0x0d7cd0,2,
-0x0d7ce0,1,
-0x0d7cf0,2,
-0x0d7d00,29,
-0x0d7d80,27,
-0x0d7df0,1,
-0x0d8000,2,
-0x0d8018,2,
-0x0d8034,2,
-0x0d8104,3,
-0x0d8134,2,
-0x0d814c,1,
-0x0d8170,2,
-0x0d8200,1,
-0x0d8210,2,
-0x0d8220,1,
-0x0d8230,2,
-0x0d8400,1,
-0x0d8410,2,
-0x0d8420,3,
-0x0d8430,22,
-0x0d84ac,1,
-0x0d84c0,6,
-0x0d8500,1,
-0x0d8510,2,
-0x0d8520,3,
-0x0d8540,8,
-0x0d8580,6,
-0x0d85a0,6,
-0x0d8600,10,
-0x0d8640,10,
-0x0d8680,10,
-0x0d86c0,10,
-0x0d8700,10,
-0x0d8740,10,
-0x0d8800,5,
-0x0d8820,5,
-0x0d8890,10,
-0x0d88e0,1,
-0x0d88f0,2,
-0x0d8900,5,
-0x0d8920,5,
-0x0d8990,10,
-0x0d89e0,1,
-0x0d89f0,2,
-0x0d8a00,1,
-0x0d8a10,2,
-0x0d8a20,1,
-0x0d8a30,2,
-0x0d8a48,3,
-0x0d8a80,3,
-0x0d8a90,1,
-0x0d8a98,12,
-0x0d8b04,2,
-0x0d8b14,3,
-0x0d8b24,2,
-0x0d8b34,3,
-0x0d8b80,5,
-0x0d8b98,3,
-0x0d8bb0,2,
-0x0d8bc0,5,
-0x0d8bd8,3,
-0x0d8bf0,2,
-0x0d8c00,10,
-0x0d8c2c,12,
-0x0d8c80,26,
-0x0d8d00,2,
-0x0d8d20,1,
-0x0d8e00,10,
-0x0d8e2c,12,
-0x0d8e80,26,
-0x0d8f00,2,
-0x0d8f20,1,
-0x0d9000,5,
-0x0d9020,5,
-0x0d9090,10,
-0x0d90e0,1,
-0x0d90f0,2,
-0x0d9100,5,
-0x0d9120,5,
-0x0d9190,10,
-0x0d91e0,1,
-0x0d91f0,2,
-0x0d9200,1,
-0x0d9210,2,
-0x0d9220,1,
-0x0d9230,2,
-0x0d9248,3,
-0x0d9280,3,
-0x0d9290,1,
-0x0d9298,12,
-0x0d9304,2,
-0x0d9314,3,
-0x0d9324,2,
-0x0d9334,3,
-0x0d9380,5,
-0x0d9398,3,
-0x0d93b0,2,
-0x0d93c0,5,
-0x0d93d8,3,
-0x0d93f0,2,
-0x0d9400,10,
-0x0d942c,12,
-0x0d9480,26,
-0x0d9500,2,
-0x0d9520,1,
-0x0d9600,10,
-0x0d962c,12,
-0x0d9680,26,
-0x0d9700,2,
-0x0d9720,1,
-0x0d9800,5,
-0x0d9820,5,
-0x0d9890,10,
-0x0d98e0,1,
-0x0d98f0,2,
-0x0d9900,5,
-0x0d9920,5,
-0x0d9990,10,
-0x0d99e0,1,
-0x0d99f0,2,
-0x0d9a00,1,
-0x0d9a10,2,
-0x0d9a20,1,
-0x0d9a30,2,
-0x0d9a48,3,
-0x0d9a80,3,
-0x0d9a90,1,
-0x0d9a98,12,
-0x0d9b04,2,
-0x0d9b14,3,
-0x0d9b24,2,
-0x0d9b34,3,
-0x0d9b80,5,
-0x0d9b98,3,
-0x0d9bb0,2,
-0x0d9bc0,5,
-0x0d9bd8,3,
-0x0d9bf0,2,
-0x0d9c00,10,
-0x0d9c2c,12,
-0x0d9c80,26,
-0x0d9d00,2,
-0x0d9d20,1,
-0x0d9e00,10,
-0x0d9e2c,12,
-0x0d9e80,26,
-0x0d9f00,2,
-0x0d9f20,1,
-0x0da000,7,
-0x0da020,8,
-0x0da044,8,
-0x0da080,7,
-0x0da0a0,8,
-0x0da0c4,8,
-0x0da100,7,
-0x0da120,8,
-0x0da144,8,
-0x0da180,7,
-0x0da1a0,8,
-0x0da1c4,8,
-0x0da200,7,
-0x0da220,8,
-0x0da244,8,
-0x0da280,7,
-0x0da2a0,8,
-0x0da2c4,8,
-0x0da400,1,
-0x0da418,1,
-0x0da434,1,
-0x0da504,1,
-0x0da534,1,
-0x0da54c,1,
-0x0da570,2,
-0x0da600,1,
-0x0da610,2,
-0x0da804,15,
-0x0da844,15,
-0x0da884,15,
-0x0da8c4,15,
-0x0da904,15,
-0x0da944,16,
-0x0da990,2,
-0x0da9a0,1,
-0x0da9b0,2,
-0x0da9c0,2,
-0x0daa00,400,
-0x0db080,28,
-0x0db100,28,
-0x0db184,2,
-0x0db194,3,
-0x0db1a4,2,
-0x0db1b4,10,
-0x0db200,7,
-0x0db260,20,
-0x0db2c0,2,
-0x0db2cc,2,
-0x0db2d8,3,
-0x0db300,1,
-0x0db310,2,
-0x0db320,1,
-0x0db330,2,
-0x0db340,1,
-0x0db350,2,
-0x0db360,1,
-0x0db370,2,
-0x0db380,1,
-0x0db400,16,
-0x0db480,28,
-0x0db500,28,
-0x0db584,2,
-0x0db594,3,
-0x0db5a4,2,
-0x0db5b4,10,
-0x0db600,7,
-0x0db660,20,
-0x0db6c0,2,
-0x0db6cc,2,
-0x0db6d8,3,
-0x0db700,1,
-0x0db710,2,
-0x0db720,1,
-0x0db730,2,
-0x0db740,1,
-0x0db750,2,
-0x0db760,1,
-0x0db770,2,
-0x0db780,1,
-0x0db800,16,
-0x0db880,28,
-0x0db900,28,
-0x0db984,2,
-0x0db994,3,
-0x0db9a4,2,
-0x0db9b4,10,
-0x0dba00,7,
-0x0dba60,20,
-0x0dbac0,2,
-0x0dbacc,2,
-0x0dbad8,3,
-0x0dbb00,1,
-0x0dbb10,2,
-0x0dbb20,1,
-0x0dbb30,2,
-0x0dbb40,1,
-0x0dbb50,2,
-0x0dbb60,1,
-0x0dbb70,2,
-0x0dbb80,1,
-0x0dbc00,18,
-0x0dbc60,5,
-0x0dbc78,7,
-0x0dbc98,6,
-0x0dbce0,3,
-0x0dbd04,7,
-0x0dbd30,1,
-0x0dbd44,7,
-0x0dbd70,1,
-0x0dbd84,7,
-0x0dbdb0,1,
-0x0dbdc4,7,
-0x0dbdf0,1,
-0x0dbe04,7,
-0x0dbe30,1,
-0x0dbe44,7,
-0x0dbe70,1,
-0x0dbe84,7,
-0x0dbeb0,1,
-0x0dbec4,7,
-0x0dbef0,1,
-0x0dbf00,1,
-0x0dbf24,1,
-0x0dbf30,4,
-0x0dbf44,1,
-0x0dbf50,4,
-0x0dbfa0,3,
-0x0dc000,5,
-0x0dc018,3,
-0x0dc080,2,
-0x0dc08c,1,
-0x0dc0a0,9,
-0x0dc0d0,2,
-0x0dc0e0,1,
-0x0dc0e8,1,
-0x0dc100,2,
-0x0dc10c,1,
-0x0dc120,9,
-0x0dc150,2,
-0x0dc160,1,
-0x0dc168,1,
-0x0dc180,2,
-0x0dc18c,1,
-0x0dc1a0,9,
-0x0dc1d0,2,
-0x0dc1e0,1,
-0x0dc1e8,1,
-0x0dc200,2,
-0x0dc20c,1,
-0x0dc220,9,
-0x0dc250,2,
-0x0dc260,1,
-0x0dc268,1,
-0x0dc284,2,
-0x0dc2a8,2,
-0x0dc2b4,1,
-0x0dc2c4,2,
-0x0dc2e8,2,
-0x0dc2f4,1,
-0x0dc400,3,
-0x0dc410,15,
-0x0dc450,16,
-0x0dc49c,1,
-0x0dc4b0,9,
-0x0dc4e0,1,
-0x0dc4f0,3,
-0x0dc500,12,
-0x0dc534,4,
-0x0dc558,1,
-0x0dc580,1,
-0x0dc594,2,
-0x0dc5ac,11,
-0x0dc5ec,4,
-0x0dc600,15,
-0x0dc640,3,
-0x0dc650,3,
-0x0dc660,1,
-0x0dc670,2,
-0x0dc680,1,
-0x0dc690,2,
-0x0dc6c0,4,
-0x0dc6d4,8,
-0x0dc700,4,
-0x0dc714,8,
-0x0dc800,5,
-0x0dc818,3,
-0x0dc880,2,
-0x0dc88c,1,
-0x0dc8a0,9,
-0x0dc8d0,2,
-0x0dc8e0,1,
-0x0dc8e8,1,
-0x0dc900,2,
-0x0dc90c,1,
-0x0dc920,9,
-0x0dc950,2,
-0x0dc960,1,
-0x0dc968,1,
-0x0dc980,2,
-0x0dc98c,1,
-0x0dc9a0,9,
-0x0dc9d0,2,
-0x0dc9e0,1,
-0x0dc9e8,1,
-0x0dca00,2,
-0x0dca0c,1,
-0x0dca20,9,
-0x0dca50,2,
-0x0dca60,1,
-0x0dca68,1,
-0x0dca84,2,
-0x0dcaa8,2,
-0x0dcab4,1,
-0x0dcac4,2,
-0x0dcae8,2,
-0x0dcaf4,1,
-0x0dcc00,3,
-0x0dcc10,15,
-0x0dcc50,16,
-0x0dcc9c,1,
-0x0dccb0,9,
-0x0dcce0,1,
-0x0dccf0,3,
-0x0dcd00,12,
-0x0dcd34,4,
-0x0dcd58,1,
-0x0dcd80,1,
-0x0dcd94,2,
-0x0dcdac,11,
-0x0dcdec,4,
-0x0dce00,15,
-0x0dce40,3,
-0x0dce50,3,
-0x0dce60,1,
-0x0dce70,2,
-0x0dce80,1,
-0x0dce90,2,
-0x0dcec0,4,
-0x0dced4,8,
-0x0dcf00,4,
-0x0dcf14,8,
-0x0dd000,5,
-0x0dd018,3,
-0x0dd080,2,
-0x0dd08c,1,
-0x0dd0a0,9,
-0x0dd0d0,2,
-0x0dd0e0,1,
-0x0dd0e8,1,
-0x0dd100,2,
-0x0dd10c,1,
-0x0dd120,9,
-0x0dd150,2,
-0x0dd160,1,
-0x0dd168,1,
-0x0dd180,2,
-0x0dd18c,1,
-0x0dd1a0,9,
-0x0dd1d0,2,
-0x0dd1e0,1,
-0x0dd1e8,1,
-0x0dd200,2,
-0x0dd20c,1,
-0x0dd220,9,
-0x0dd250,2,
-0x0dd260,1,
-0x0dd268,1,
-0x0dd284,2,
-0x0dd2a8,2,
-0x0dd2b4,1,
-0x0dd2c4,2,
-0x0dd2e8,2,
-0x0dd2f4,1,
-0x0dd400,3,
-0x0dd410,15,
-0x0dd450,16,
-0x0dd49c,1,
-0x0dd4b0,9,
-0x0dd4e0,1,
-0x0dd4f0,3,
-0x0dd500,12,
-0x0dd534,4,
-0x0dd558,1,
-0x0dd580,1,
-0x0dd594,2,
-0x0dd5ac,11,
-0x0dd5ec,4,
-0x0dd600,15,
-0x0dd640,3,
-0x0dd650,3,
-0x0dd660,1,
-0x0dd670,2,
-0x0dd680,1,
-0x0dd690,2,
-0x0dd6c0,4,
-0x0dd6d4,8,
-0x0dd700,4,
-0x0dd714,8,
-0x0dd800,31,
-0x0dd880,8,
-0x0dd8a4,1,
-0x0dd8b4,20,
-0x0dd910,2,
-0x0dd920,3,
-0x0dd934,1,
-0x0dd93c,2,
-0x0dd950,2,
-0x0dda00,11,
-0x0dda4c,8,
-0x0dda70,2,
-0x0dda7c,33,
-0x0ddc00,8,
-0x0ddc40,2,
-0x0ddc4c,11,
-0x0ddc80,8,
-0x0ddcc0,2,
-0x0ddccc,11,
-0x0ddd00,8,
-0x0ddd40,2,
-0x0ddd4c,11,
-0x0ddd80,8,
-0x0dddc0,2,
-0x0dddcc,11,
-0x0dde00,8,
-0x0dde40,2,
-0x0dde4c,11,
-0x0dde80,8,
-0x0ddec0,2,
-0x0ddecc,11,
-0x0ddf00,9,
-0x0ddf30,2,
-0x0ddf40,49,
-0x0de018,1,
-0x0de034,1,
-0x0de104,1,
-0x0de134,1,
-0x0de14c,1,
-0x0de170,2,
-0x0de200,1,
-0x0de210,2,
-0x0de400,5,
-0x0de418,9,
-0x0de440,5,
-0x0de460,1,
-0x0de470,2,
-0x0de500,5,
-0x0de518,9,
-0x0de540,5,
-0x0de560,1,
-0x0de570,2,
-0x0de600,5,
-0x0de618,9,
-0x0de640,5,
-0x0de660,1,
-0x0de670,2,
-0x0de700,1,
-0x0de800,6,
-0x0de81c,3,
-0x0de82c,3,
-0x0de83c,8,
-0x0de860,1,
-0x0de868,1,
-0x0de870,2,
-0x0de880,1,
-0x0de890,2,
-0x0de8a0,1,
-0x0de8b0,2,
-0x0de8c0,1,
-0x0de8d0,2,
-0x0de8e0,1,
-0x0de8f0,2,
-0x0de900,29,
-0x0de980,27,
-0x0de9f0,1,
-0x0dec00,6,
-0x0dec1c,3,
-0x0dec2c,3,
-0x0dec3c,8,
-0x0dec60,1,
-0x0dec68,1,
-0x0dec70,2,
-0x0dec80,1,
-0x0dec90,2,
-0x0deca0,1,
-0x0decb0,2,
-0x0decc0,1,
-0x0decd0,2,
-0x0dece0,1,
-0x0decf0,2,
-0x0ded00,29,
-0x0ded80,27,
-0x0dedf0,1,
-0x0df000,6,
-0x0df01c,3,
-0x0df02c,3,
-0x0df03c,8,
-0x0df060,1,
-0x0df068,1,
-0x0df070,2,
-0x0df080,1,
-0x0df090,2,
-0x0df0a0,1,
-0x0df0b0,2,
-0x0df0c0,1,
-0x0df0d0,2,
-0x0df0e0,1,
-0x0df0f0,2,
-0x0df100,29,
-0x0df180,27,
-0x0df1f0,1,
-0x0df400,6,
-0x0df41c,3,
-0x0df42c,3,
-0x0df43c,8,
-0x0df460,1,
-0x0df468,1,
-0x0df470,2,
-0x0df480,1,
-0x0df490,2,
-0x0df4a0,1,
-0x0df4b0,2,
-0x0df4c0,1,
-0x0df4d0,2,
-0x0df4e0,1,
-0x0df4f0,2,
-0x0df500,29,
-0x0df580,27,
-0x0df5f0,1,
-0x0df800,6,
-0x0df81c,3,
-0x0df82c,3,
-0x0df83c,8,
-0x0df860,1,
-0x0df868,1,
-0x0df870,2,
-0x0df880,1,
-0x0df890,2,
-0x0df8a0,1,
-0x0df8b0,2,
-0x0df8c0,1,
-0x0df8d0,2,
-0x0df8e0,1,
-0x0df8f0,2,
-0x0df900,29,
-0x0df980,27,
-0x0df9f0,1,
-0x0dfc00,6,
-0x0dfc1c,3,
-0x0dfc2c,3,
-0x0dfc3c,8,
-0x0dfc60,1,
-0x0dfc68,1,
-0x0dfc70,2,
-0x0dfc80,1,
-0x0dfc90,2,
-0x0dfca0,1,
-0x0dfcb0,2,
-0x0dfcc0,1,
-0x0dfcd0,2,
-0x0dfce0,1,
-0x0dfcf0,2,
-0x0dfd00,29,
-0x0dfd80,27,
-0x0dfdf0,1,
-0x0e0000,19,
-0x0e0050,39,
-0x0e00f0,46,
-0x0e01e0,1,
-0x0e01f0,2,
-0x0e0200,19,
-0x0e0250,39,
-0x0e02f0,46,
-0x0e03e0,1,
-0x0e03f0,2,
-0x0e0400,19,
-0x0e0450,39,
-0x0e04f0,46,
-0x0e05e0,1,
-0x0e05f0,2,
-0x0e0600,6,
-0x0e0620,6,
-0x0e0640,6,
-0x0e0660,6,
-0x0e0680,6,
-0x0e06a0,6,
-0x0e0704,1,
-0x0e070c,1,
-0x0e0744,1,
-0x0e074c,1,
-0x0e07fc,20,
-0x0e0850,39,
-0x0e08f0,46,
-0x0e09e0,1,
-0x0e09f0,2,
-0x0e0a00,19,
-0x0e0a50,39,
-0x0e0af0,46,
-0x0e0be0,1,
-0x0e0bf0,2,
-0x0e0c00,19,
-0x0e0c50,39,
-0x0e0cf0,46,
-0x0e0de0,1,
-0x0e0df0,2,
-0x0e0e00,6,
-0x0e0e20,6,
-0x0e0e40,6,
-0x0e0e60,6,
-0x0e0e80,6,
-0x0e0ea0,6,
-0x0e0f04,1,
-0x0e0f0c,1,
-0x0e0f44,1,
-0x0e0f4c,1,
-0x0e0ffc,20,
-0x0e1050,39,
-0x0e10f0,46,
-0x0e11e0,1,
-0x0e11f0,2,
-0x0e1200,19,
-0x0e1250,39,
-0x0e12f0,46,
-0x0e13e0,1,
-0x0e13f0,2,
-0x0e1400,19,
-0x0e1450,39,
-0x0e14f0,46,
-0x0e15e0,1,
-0x0e15f0,2,
-0x0e1600,6,
-0x0e1620,6,
-0x0e1640,6,
-0x0e1660,6,
-0x0e1680,6,
-0x0e16a0,6,
-0x0e1704,1,
-0x0e170c,1,
-0x0e1744,1,
-0x0e174c,1,
-0x0e17fc,20,
-0x0e1850,39,
-0x0e18f0,46,
-0x0e19e0,1,
-0x0e19f0,2,
-0x0e1a00,19,
-0x0e1a50,39,
-0x0e1af0,46,
-0x0e1be0,1,
-0x0e1bf0,2,
-0x0e1c00,19,
-0x0e1c50,39,
-0x0e1cf0,46,
-0x0e1de0,1,
-0x0e1df0,2,
-0x0e1e00,6,
-0x0e1e20,6,
-0x0e1e40,6,
-0x0e1e60,6,
-0x0e1e80,6,
-0x0e1ea0,6,
-0x0e1f04,1,
-0x0e1f0c,1,
-0x0e1f44,1,
-0x0e1f4c,1,
-0x0e1ffc,20,
-0x0e2050,39,
-0x0e20f0,46,
-0x0e21e0,1,
-0x0e21f0,2,
-0x0e2200,19,
-0x0e2250,39,
-0x0e22f0,46,
-0x0e23e0,1,
-0x0e23f0,2,
-0x0e2400,19,
-0x0e2450,39,
-0x0e24f0,46,
-0x0e25e0,1,
-0x0e25f0,2,
-0x0e2600,6,
-0x0e2620,6,
-0x0e2640,6,
-0x0e2660,6,
-0x0e2680,6,
-0x0e26a0,6,
-0x0e2704,1,
-0x0e270c,1,
-0x0e2744,1,
-0x0e274c,1,
-0x0e27fc,20,
-0x0e2850,39,
-0x0e28f0,46,
-0x0e29e0,1,
-0x0e29f0,2,
-0x0e2a00,19,
-0x0e2a50,39,
-0x0e2af0,46,
-0x0e2be0,1,
-0x0e2bf0,2,
-0x0e2c00,19,
-0x0e2c50,39,
-0x0e2cf0,46,
-0x0e2de0,1,
-0x0e2df0,2,
-0x0e2e00,6,
-0x0e2e20,6,
-0x0e2e40,6,
-0x0e2e60,6,
-0x0e2e80,6,
-0x0e2ea0,6,
-0x0e2f04,1,
-0x0e2f0c,1,
-0x0e2f44,1,
-0x0e2f4c,1,
-0x0e2ffc,20,
-0x0e3050,39,
-0x0e30f0,46,
-0x0e31e0,1,
-0x0e31f0,2,
-0x0e3800,1,
-0x0e3810,2,
-0x0e3820,3,
-0x0e3840,2,
-0x0e384c,2,
-0x0e3858,5,
-0x0e4000,19,
-0x0e4050,39,
-0x0e40f0,46,
-0x0e41e0,1,
-0x0e41f0,2,
-0x0e4200,19,
-0x0e4250,39,
-0x0e42f0,46,
-0x0e43e0,1,
-0x0e43f0,2,
-0x0e4400,19,
-0x0e4450,39,
-0x0e44f0,46,
-0x0e45e0,1,
-0x0e45f0,2,
-0x0e4600,6,
-0x0e4620,6,
-0x0e4640,6,
-0x0e4660,6,
-0x0e4680,6,
-0x0e46a0,6,
-0x0e4704,1,
-0x0e470c,1,
-0x0e4744,1,
-0x0e474c,1,
-0x0e47fc,20,
-0x0e4850,39,
-0x0e48f0,46,
-0x0e49e0,1,
-0x0e49f0,2,
-0x0e4a00,19,
-0x0e4a50,39,
-0x0e4af0,46,
-0x0e4be0,1,
-0x0e4bf0,2,
-0x0e4c00,19,
-0x0e4c50,39,
-0x0e4cf0,46,
-0x0e4de0,1,
-0x0e4df0,2,
-0x0e4e00,6,
-0x0e4e20,6,
-0x0e4e40,6,
-0x0e4e60,6,
-0x0e4e80,6,
-0x0e4ea0,6,
-0x0e4f04,1,
-0x0e4f0c,1,
-0x0e4f44,1,
-0x0e4f4c,1,
-0x0e4ffc,20,
-0x0e5050,39,
-0x0e50f0,46,
-0x0e51e0,1,
-0x0e51f0,2,
-0x0e5200,19,
-0x0e5250,39,
-0x0e52f0,46,
-0x0e53e0,1,
-0x0e53f0,2,
-0x0e5400,19,
-0x0e5450,39,
-0x0e54f0,46,
-0x0e55e0,1,
-0x0e55f0,2,
-0x0e5600,6,
-0x0e5620,6,
-0x0e5640,6,
-0x0e5660,6,
-0x0e5680,6,
-0x0e56a0,6,
-0x0e5704,1,
-0x0e570c,1,
-0x0e5744,1,
-0x0e574c,1,
-0x0e57fc,20,
-0x0e5850,39,
-0x0e58f0,46,
-0x0e59e0,1,
-0x0e59f0,2,
-0x0e5a00,19,
-0x0e5a50,39,
-0x0e5af0,46,
-0x0e5be0,1,
-0x0e5bf0,2,
-0x0e5c00,19,
-0x0e5c50,39,
-0x0e5cf0,46,
-0x0e5de0,1,
-0x0e5df0,2,
-0x0e5e00,6,
-0x0e5e20,6,
-0x0e5e40,6,
-0x0e5e60,6,
-0x0e5e80,6,
-0x0e5ea0,6,
-0x0e5f04,1,
-0x0e5f0c,1,
-0x0e5f44,1,
-0x0e5f4c,1,
-0x0e5ffc,20,
-0x0e6050,39,
-0x0e60f0,46,
-0x0e61e0,1,
-0x0e61f0,2,
-0x0e6200,19,
-0x0e6250,39,
-0x0e62f0,46,
-0x0e63e0,1,
-0x0e63f0,2,
-0x0e6400,19,
-0x0e6450,39,
-0x0e64f0,46,
-0x0e65e0,1,
-0x0e65f0,2,
-0x0e6600,6,
-0x0e6620,6,
-0x0e6640,6,
-0x0e6660,6,
-0x0e6680,6,
-0x0e66a0,6,
-0x0e6704,1,
-0x0e670c,1,
-0x0e6744,1,
-0x0e674c,1,
-0x0e67fc,20,
-0x0e6850,39,
-0x0e68f0,46,
-0x0e69e0,1,
-0x0e69f0,2,
-0x0e6a00,19,
-0x0e6a50,39,
-0x0e6af0,46,
-0x0e6be0,1,
-0x0e6bf0,2,
-0x0e6c00,19,
-0x0e6c50,39,
-0x0e6cf0,46,
-0x0e6de0,1,
-0x0e6df0,2,
-0x0e6e00,6,
-0x0e6e20,6,
-0x0e6e40,6,
-0x0e6e60,6,
-0x0e6e80,6,
-0x0e6ea0,6,
-0x0e6f04,1,
-0x0e6f0c,1,
-0x0e6f44,1,
-0x0e6f4c,1,
-0x0e6ffc,20,
-0x0e7050,39,
-0x0e70f0,46,
-0x0e71e0,1,
-0x0e71f0,2,
-0x0e7800,1,
-0x0e7810,2,
-0x0e7820,3,
-0x0e7840,2,
-0x0e784c,2,
-0x0e7858,5,
-0x0ec000,26,
-0x0ec070,7,
-0x0ec090,15,
-0x0ec0d0,5,
-0x0ec0f0,2,
-0x0ec100,1,
-0x0ec200,76,
-0x0ec400,26,
-0x0ec470,7,
-0x0ec490,15,
-0x0ec4d0,5,
-0x0ec4f0,2,
-0x0ec500,1,
-0x0ec600,76,
-0x0ec800,3,
-0x0ec810,15,
-0x0ec850,16,
-0x0ec89c,1,
-0x0ec8b0,9,
-0x0ec8e0,1,
-0x0ec900,7,
-0x0ec924,6,
-0x0eca00,11,
-0x0eca4c,8,
-0x0eca70,2,
-0x0eca7c,17,
-0x0ecc00,1,
-0x0ed000,13,
-0x0ed040,5,
-0x0ed058,7,
-0x0ed078,14,
-0x0ed0c0,13,
-0x0ed0fc,2,
-0x0ed10c,1,
-0x0ed120,2,
-0x0ed130,5,
-0x0ed184,13,
-0x0ed1bc,1,
-0x0ed204,1,
-0x0ed210,5,
-0x0ed244,6,
-0x0ed264,5,
-0x0ed280,2,
-0x0ed290,8,
-0x0ed2ec,1,
-0x0ed300,11,
-0x0ed330,1,
-0x0ed400,32,
-0x0ed500,2,
-0x0ed50c,11,
-0x0ed548,2,
-0x0ed554,4,
-0x0ed574,2,
-0x0ed580,9,
-0x0ed5b0,2,
-0x0ed5cc,8,
-0x0ed704,1,
-0x0ed70c,12,
-0x0ed760,1,
-0x0ed770,2,
-0x0ed780,1,
-0x0ed790,2,
-0x0ed7a0,2,
-0x0ed7ac,5,
-0x0ed800,3,
-0x0ed810,24,
-0x0ed880,9,
-0x0ed8b0,2,
-0x0ed8c0,2,
-0x0ed8d0,1,
-0x0ed8f8,2,
-0x0eda00,3,
-0x0eda10,4,
-0x0eda24,3,
-0x0eda34,4,
-0x0eda60,1,
-0x0eda70,2,
-0x0eda84,3,
-0x0edb00,3,
-0x0edc00,1,
-0x0edc18,1,
-0x0edc34,1,
-0x0edd04,3,
-0x0edd34,1,
-0x0edd4c,1,
-0x0edd70,2,
-0x0ede00,1,
-0x0ede10,2,
-0x0ee010,7,
-0x0ee030,4,
-0x0ee050,7,
-0x0ee070,4,
-0x0ee104,21,
-0x0ee160,16,
-0x0ee200,16,
-0x0ee300,2,
-0x0ee4fc,2,
-0x0ee510,2,
-0x0f0000,3,
-0x0f0014,10,
-0x0f0040,3,
-0x0f0058,5,
-0x0f0070,7,
-0x0f0090,2,
-0x0f009c,2,
-0x0f00a8,3,
-0x0f00c0,2,
-0x0f00dc,9,
-0x0f0128,2,
-0x0f0140,8,
-0x0f0164,5,
-0x0f0180,6,
-0x0f01a0,3,
-0x0f01b0,3,
-0x0f0200,38,
-0x0f0404,8,
-0x0f0440,4,
-0x0f0480,6,
-0x0f04a0,2,
-0x0f04e0,1,
-0x0f04f0,2,
-0x0f0500,6,
-0x0f0520,2,
-0x0f0560,1,
-0x0f0570,2,
-0x0f0580,1,
-0x0f0590,2,
-0x0f05a0,1,
-0x0f05b0,2,
-0x0f05c0,1,
-0x0f05d0,2,
-0x0f05e0,1,
-0x0f0600,64,
-0x0f0704,1,
-0x0f0714,9,
-0x0f0800,17,
-0x0f0850,4,
-0x0f0880,4,
-0x0f089c,5,
-0x0f08bc,5,
-0x0f08dc,1,
-0x0f0ffc,1,
-0x0f8000,1,
-0x0f8018,1,
-0x0f8034,1,
-0x0f8104,1,
-0x0f8134,1,
-0x0f814c,1,
-0x0f8170,2,
-0x0f8200,1,
-0x0f8210,2,
-0x0f8400,96,
-0x0f85a4,1,
-0x0f85ac,1,
-0x0f85b4,1,
-0x0f85bc,1,
-0x0f85c4,1,
-0x0f85cc,1,
-0x0f85d4,1,
-0x0f85dc,1,
-0x0f85e4,1,
-0x0f85ec,1,
-0x0f85f4,1,
-0x0f85fc,1,
-0x0f8604,1,
-0x0f860c,1,
-0x0f8614,1,
-0x0f861c,1,
-0x0f8624,1,
-0x0f862c,1,
-0x0f8634,1,
-0x0f863c,1,
-0x0f8644,1,
-0x0f864c,1,
-0x0f8654,1,
-0x0f865c,25,
-0x0f86c4,1,
-0x0f86d4,25,
-0x0f8740,14,
-0x0f8780,7,
-0x0f87a0,1,
-0x0f87b0,3,
-0x0f87c0,1,
-0x0f87d0,2,
-0x0f87e4,1,
-0x0f8800,1,
-0x0f8818,1,
-0x0f8834,1,
-0x0f8904,1,
-0x0f8934,1,
-0x0f894c,1,
-0x0f8970,2,
-0x0f8a00,1,
-0x0f8a10,2,
-0x0f8c00,96,
-0x0f8da4,1,
-0x0f8dac,1,
-0x0f8db4,1,
-0x0f8dbc,1,
-0x0f8dc4,1,
-0x0f8dcc,1,
-0x0f8dd4,1,
-0x0f8ddc,1,
-0x0f8de4,1,
-0x0f8dec,1,
-0x0f8df4,1,
-0x0f8dfc,1,
-0x0f8e04,1,
-0x0f8e0c,1,
-0x0f8e14,1,
-0x0f8e1c,1,
-0x0f8e24,1,
-0x0f8e2c,1,
-0x0f8e34,1,
-0x0f8e3c,1,
-0x0f8e44,1,
-0x0f8e4c,1,
-0x0f8e54,1,
-0x0f8e5c,25,
-0x0f8ec4,1,
-0x0f8ed4,25,
-0x0f8f40,14,
-0x0f8f80,7,
-0x0f8fa0,1,
-0x0f8fb0,3,
-0x0f8fc0,1,
-0x0f8fd0,2,
-0x0f8fe4,1,
-0x0f9000,3,
-0x0f9020,1,
-0x0f9030,2,
-0x0f9040,1,
-0x0f9050,2,
-0x0f9060,1,
-0x0f9070,2,
-0x0f9080,1,
-0x0f9090,2,
-0x0f90a0,1,
-0x0f90b0,2,
-0x0f90c0,1,
-0x0f90d0,2,
-0x0f90e0,1,
-0x0f90f0,2,
-0x0f9100,1,
-0x0f9110,2,
-0x0f9120,1,
-0x0f9130,2,
-0x0f9140,1,
-0x0f9150,2,
-0x0f9160,1,
-0x0f9170,2,
-0x0f9180,1,
-0x0f9190,2,
-0x0f91a0,1,
-0x0f91b0,2,
-0x0f91c0,1,
-0x0f91d0,2,
-0x0f91e0,1,
-0x0f91f0,2,
-0x0f9200,1,
-0x0f9210,2,
-0x0f9220,1,
-0x0f9230,2,
-0x0f9240,1,
-0x0f9250,2,
-0x0f9260,1,
-0x0f9270,2,
-0x0f9400,18,
-0x0f9480,18,
-0x0f9500,19,
-0x0fc000,4,
-0x0fc014,1,
-0x0fc01c,1,
-0x0fc024,1,
-0x0fc034,15,
-0x0fc074,11,
-0x0fc0a4,1,
-0x0fc0c4,3,
-0x0fc0e0,4,
-0x0fc0f4,1,
-0x0fc0fc,3,
-0x0fc10c,7,
-0x0fc130,3,
-0x0fc140,1,
-0x0fc150,2,
-0x0fc200,4,
-0x0fc214,1,
-0x0fc21c,1,
-0x0fc224,1,
-0x0fc234,15,
-0x0fc274,11,
-0x0fc2a4,1,
-0x0fc2c4,3,
-0x0fc2e0,4,
-0x0fc2f4,1,
-0x0fc2fc,3,
-0x0fc30c,7,
-0x0fc330,3,
-0x0fc340,1,
-0x0fc350,2,
-0x0fc400,4,
-0x0fc414,1,
-0x0fc41c,1,
-0x0fc424,1,
-0x0fc434,15,
-0x0fc474,11,
-0x0fc4a4,1,
-0x0fc4c4,3,
-0x0fc4e0,4,
-0x0fc4f4,1,
-0x0fc4fc,3,
-0x0fc50c,7,
-0x0fc530,3,
-0x0fc540,1,
-0x0fc550,2,
-0x0fc600,4,
-0x0fc614,1,
-0x0fc61c,1,
-0x0fc624,1,
-0x0fc634,15,
-0x0fc674,11,
-0x0fc6a4,1,
-0x0fc6c4,3,
-0x0fc6e0,4,
-0x0fc6f4,1,
-0x0fc6fc,3,
-0x0fc70c,7,
-0x0fc730,3,
-0x0fc740,1,
-0x0fc750,2,
-0x0fc800,4,
-0x0fc814,1,
-0x0fc81c,1,
-0x0fc824,1,
-0x0fc834,15,
-0x0fc874,11,
-0x0fc8a4,1,
-0x0fc8c4,3,
-0x0fc8e0,4,
-0x0fc8f4,1,
-0x0fc8fc,3,
-0x0fc90c,7,
-0x0fc930,3,
-0x0fc940,1,
-0x0fc950,2,
-0x0fca00,4,
-0x0fca14,1,
-0x0fca1c,1,
-0x0fca24,1,
-0x0fca34,15,
-0x0fca74,11,
-0x0fcaa4,1,
-0x0fcac4,3,
-0x0fcae0,4,
-0x0fcaf4,1,
-0x0fcafc,3,
-0x0fcb0c,7,
-0x0fcb30,3,
-0x0fcb40,1,
-0x0fcb50,2,
-0x0fcc00,2,
-0x0fcc24,1,
-0x0fcc34,7,
-0x0fcc80,1,
-0x0fcc90,2,
-0x0fce00,14,
-0x0fd500,2,
-0x0fd520,1,
-0x0fd530,2,
-0x0fd720,1,
-0x0fd730,2,
-0x0fd7a0,3,
-0x0fd7f0,1,
-0x0fd800,6,
-0x0fd81c,4,
-0x0fd834,2,
-0x0fd840,6,
-0x0fd85c,4,
-0x0fd874,2,
-0x0fd880,6,
-0x0fd89c,4,
-0x0fd8b4,2,
-0x0fd8c0,6,
-0x0fd8dc,4,
-0x0fd8f4,2,
-0x0fd900,6,
-0x0fd91c,4,
-0x0fd934,2,
-0x0fd940,6,
-0x0fd95c,4,
-0x0fd974,2,
-0x0fd980,6,
-0x0fd99c,4,
-0x0fd9b4,2,
-0x0fd9c0,6,
-0x0fd9dc,4,
-0x0fd9f4,2,
-0x0fda00,6,
-0x0fda1c,4,
-0x0fda34,2,
-0x0fda40,6,
-0x0fda5c,4,
-0x0fda74,2,
-0x0fda80,6,
-0x0fda9c,4,
-0x0fdab4,2,
-0x0fdac0,6,
-0x0fdadc,4,
-0x0fdaf4,2,
-0x0fdb00,1,
-0x0fdb80,2,
-0x0fdba0,1,
-0x0fdbb0,2,
-0x0fdbc0,1,
-0x0fdbd0,2,
-0x0fdbe0,1,
-0x0fdbf0,2,
-0x0fdc00,4,
-0x0fdc18,4,
-0x0fdc34,4,
-0x0fdd04,3,
-0x0fdd34,4,
-0x0fdd4c,1,
-0x0fdd70,2,
-0x0fde00,1,
-0x0fde10,2,
-0x0fde20,1,
-0x0fde30,2,
-0x0fde40,1,
-0x0fde50,2,
-0x0fde60,1,
-0x0fde70,2,
-0x0fe000,4,
-0x0fe014,1,
-0x0fe01c,1,
-0x0fe024,1,
-0x0fe034,15,
-0x0fe074,11,
-0x0fe0a4,1,
-0x0fe0c4,3,
-0x0fe0e0,4,
-0x0fe0f4,1,
-0x0fe0fc,3,
-0x0fe10c,7,
-0x0fe130,3,
-0x0fe140,1,
-0x0fe150,2,
-0x0fe200,4,
-0x0fe214,1,
-0x0fe21c,1,
-0x0fe224,1,
-0x0fe234,15,
-0x0fe274,11,
-0x0fe2a4,1,
-0x0fe2c4,3,
-0x0fe2e0,4,
-0x0fe2f4,1,
-0x0fe2fc,3,
-0x0fe30c,7,
-0x0fe330,3,
-0x0fe340,1,
-0x0fe350,2,
-0x0fe400,4,
-0x0fe414,1,
-0x0fe41c,1,
-0x0fe424,1,
-0x0fe434,15,
-0x0fe474,11,
-0x0fe4a4,1,
-0x0fe4c4,3,
-0x0fe4e0,4,
-0x0fe4f4,1,
-0x0fe4fc,3,
-0x0fe50c,7,
-0x0fe530,3,
-0x0fe540,1,
-0x0fe550,2,
-0x0fe600,4,
-0x0fe614,1,
-0x0fe61c,1,
-0x0fe624,1,
-0x0fe634,15,
-0x0fe674,11,
-0x0fe6a4,1,
-0x0fe6c4,3,
-0x0fe6e0,4,
-0x0fe6f4,1,
-0x0fe6fc,3,
-0x0fe70c,7,
-0x0fe730,3,
-0x0fe740,1,
-0x0fe750,2,
-0x0fe800,4,
-0x0fe814,1,
-0x0fe81c,1,
-0x0fe824,1,
-0x0fe834,15,
-0x0fe874,11,
-0x0fe8a4,1,
-0x0fe8c4,3,
-0x0fe8e0,4,
-0x0fe8f4,1,
-0x0fe8fc,3,
-0x0fe90c,7,
-0x0fe930,3,
-0x0fe940,1,
-0x0fe950,2,
-0x0fea00,4,
-0x0fea14,1,
-0x0fea1c,1,
-0x0fea24,1,
-0x0fea34,15,
-0x0fea74,11,
-0x0feaa4,1,
-0x0feac4,3,
-0x0feae0,4,
-0x0feaf4,1,
-0x0feafc,3,
-0x0feb0c,7,
-0x0feb30,3,
-0x0feb40,1,
-0x0feb50,2,
-0x0fec00,2,
-0x0fec24,1,
-0x0fec34,7,
-0x0fec80,1,
-0x0fec90,2,
-0x0fee00,14,
-0x0ff500,2,
-0x0ff520,1,
-0x0ff530,2,
-0x0ff720,1,
-0x0ff730,2,
-0x0ff7a0,3,
-0x0ff7f0,1,
-0x0ff800,6,
-0x0ff81c,4,
-0x0ff834,2,
-0x0ff840,6,
-0x0ff85c,4,
-0x0ff874,2,
-0x0ff880,6,
-0x0ff89c,4,
-0x0ff8b4,2,
-0x0ff8c0,6,
-0x0ff8dc,4,
-0x0ff8f4,2,
-0x0ff900,6,
-0x0ff91c,4,
-0x0ff934,2,
-0x0ff940,6,
-0x0ff95c,4,
-0x0ff974,2,
-0x0ff980,6,
-0x0ff99c,4,
-0x0ff9b4,2,
-0x0ff9c0,6,
-0x0ff9dc,4,
-0x0ff9f4,2,
-0x0ffa00,6,
-0x0ffa1c,4,
-0x0ffa34,2,
-0x0ffa40,6,
-0x0ffa5c,4,
-0x0ffa74,2,
-0x0ffa80,6,
-0x0ffa9c,4,
-0x0ffab4,2,
-0x0ffac0,6,
-0x0ffadc,4,
-0x0ffaf4,2,
-0x0ffb00,1,
-0x0ffb80,2,
-0x0ffba0,1,
-0x0ffbb0,2,
-0x0ffbc0,1,
-0x0ffbd0,2,
-0x0ffbe0,1,
-0x0ffbf0,2,
-0x0ffc00,4,
-0x0ffc18,4,
-0x0ffc34,4,
-0x0ffd04,3,
-0x0ffd34,4,
-0x0ffd4c,1,
-0x0ffd70,2,
-0x0ffe00,1,
-0x0ffe10,2,
-0x0ffe20,1,
-0x0ffe30,2,
-0x0ffe40,1,
-0x0ffe50,2,
-0x0ffe60,1,
-0x0ffe70,2,
diff --git a/mstflint.spec.in b/mstflint.spec.in
deleted file mode 100644 (file)
index 18807a8..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-%{!?ibmadlib: %define ibmadlib libibmad-devel}
-%{!?name: %define name mstflint}
-%{!?version: %define version 4.4.0}
-%{!?release: %define release 1}
-%{!?buildtype: %define buildtype "native"}
-%{!?noinband: %define noinband 0}
-%{!?nodc: %define nodc 0}
-%{!?enablecs: %define enablecs 0}
-
-%define debug_package %{nil}
-%define optflags -g -O2
-
-Summary: Mellanox firmware burning application
-Name: %{name}
-Version: %{version}
-Release: %{release} 
-License: GPL/BSD
-Url: http://openfabrics.org
-Group: System Environment/Base
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}
-Source: %{name}-%{version}.tar.gz
-ExclusiveArch: i386 i486 i586 i686 x86_64 ia64 ppc ppc64 ppc64le arm64 aarch64
-BuildRequires: zlib-devel %{ibmadlib}
-
-%description
-This package contains firmware update tool, vpd dump and register dump tools
-for network adapters based on Mellanox Technologies chips.
-
-%prep
-%setup -q
-
-%build
-
-%if %{nodc}
-    config_flags="$config_flags --disable-dc"
-%endif
-
-%if %{noinband}
-    config_flags="$config_flags --disable-inband"
-%endif
-
-%if %{enablecs}
-    config_flags="$config_flags --enable-cs"
-%endif
-
-%if %{buildtype} == "ppc"
-    config_flags="$config_flags --host=ppc-linux"
-%endif
-
-%if %{buildtype} == "ppc64"
-    config_flags="$config_flags --host=ppc64-linux --enable-static-libstdcpp=yes"
-%endif
-
-%if %{buildtype} == "ppc64le"
-    config_flags="$config_flags --host=powerpc64le-linux-gnu --enable-dynamic-ld=yes"
-%endif
-
-%if %{buildtype} == "arm64"
-    config_flags="$config_flags --host arm"
-%endif
-
-%configure ${config_flags}
-
-make
-
-%install
-rm -rf $RPM_BUILD_ROOT
-make DESTDIR=${RPM_BUILD_ROOT} install
-# remove unpackaged files from the buildroot
-rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
-
-# create softlinks to old mtcr header and lib locations
-# link mtcr_ul to old location
-mkdir -p %{buildroot}/%{_includedir}/mtcr_ul
-ln -s %{_includedir}/mstflint/mtcr.h %{buildroot}/%{_includedir}/mtcr_ul/mtcr.h
-ln -s %{_includedir}/mstflint/mtcr_com_defs.h %{buildroot}/%{_includedir}/mtcr_ul/mtcr_com_defs.h
-# link mtcr_ul to old lib path
-ln -s %{_libdir}/mstflint/libmtcr_ul.a %{buildroot}/%{_libdir}/libmtcr_ul.a 
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%defattr(-,root,root)
-%{_bindir}/mstmread
-%{_bindir}/mstmwrite
-%{_bindir}/mstflint
-%{_bindir}/mstregdump
-%{_bindir}/mstmtserver
-%{_bindir}/mstvpd
-%{_bindir}/mstmcra
-%{_bindir}/mstconfig
-%{_bindir}/hca_self_test.ofed
-
-%{_includedir}/mstflint/mtcr.h
-%{_includedir}/mstflint/mtcr_com_defs.h
-%{_includedir}/mtcr_ul/mtcr.h
-%{_includedir}/mtcr_ul/mtcr_com_defs.h
-%{_libdir}/mstflint/libmtcr_ul.a
-%{_libdir}/libmtcr_ul.a
-
-%{_datadir}/mstflint
-%{_mandir}/man1/*
-
-%changelog
-* Wed May 17 2016 Adrian Chiris <adrianc@dev.mellanox.co.il>
-   MFT 4.4.0 Updates
-   
-* Wed Mar 23 2016 Adrian Chiris <adrianc@dev.mellanox.co.il>
-   MFT 4.4.0 Updates
-
-* Mon Jan 11 2016 Adrian Chiris <adrianc@dev.mellanox.co.il>
-   MFT 4.3.0 Updates
-
-* Wed Aug 26 2015 Adrian Chiris <adrianc@dev.mellanox.co.il>
-   MFT 4.1.0 Updates
-   
-* Wed Jun 05 2015 Adrian Chiris <adrianc@dev.mellanox.co.il>
-   MFT 4.0.1 Updates
-
-* Thu Feb 05 2015 Adrian Chiris <adrianc@dev.mellanox.co.il>
-   MFT 4.0.0 Updates
-
-* Sun Dec 07 2014 Tomer Cohen <tomerc@mellanox.com>
-   Added support for multiple architectures
-
-* Mon Oct 12 2014 Oren Kladnitsky <orenk@dev.mellanox.co.il>
-   MFT 3.7.1
-
-* Mon Jul 31 2014 Oren Kladnitsky <orenk@dev.mellanox.co.il>
-   MFT 3.7.0 Updates
-
-* Mon Mar 31 2014 Oren Kladnitsky <orenk@dev.mellanox.co.il>
-   MFT 3.6.0 Updates
-
-* Tue Dec 24 2013 Oren Kladnitsky <orenk@dev.mellanox.co.il>
-   MFT 3.5.0 Updates
-
-* Wed Mar 20 2013 Oren Kladnitsky <orenk@dev.mellanox.co.il>
-   MFT 3.0.0
-
-* Thu Dec  4 2008 Oren Kladnitsky <orenk@dev.mellanox.co.il>
-   Added hca_self_test.ofed installation
-   
-* Fri Dec 23 2007 Oren Kladnitsky <orenk@dev.mellanox.co.il>
-   Added mtcr.h installation
-   
-* Fri Dec 07 2007 Ira Weiny <weiny2@llnl.gov> 1.0.0
-   initial creation
-
diff --git a/mtcr_ul/Makefile.am b/mtcr_ul/Makefile.am
deleted file mode 100644 (file)
index 76d1e78..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-AM_CPPFLAGS = -I$(top_srcdir)/include/mtcr_ul -I$(top_srcdir)/common
-
-pkglib_LIBRARIES = libmtcr_ul.a
-
-libmtcr_ul_a_SOURCES = mtcr_ul.c mtcr_ib.h  mtcr_int_defs.h\
-                       mtcr_ib_res_mgt.h mtcr_ib_res_mgt.c\
-                       mtcr_tools_cif.c mtcr_tools_cif.h\
-                       mtcr_ul_icmd_cif.c mtcr_icmd_cif.h\
-                       mtcr_ul_com_defs.h mtcr_mf.h\
-                       mtcr_ul_com.h mtcr_ul_com.c\
-                       packets_common.c packets_common.h\
-                       packets_layout.c packets_layout.h
-libmtcr_ul_a_CFLAGS = -W -Wall -g -MP -MD -fPIC -DMTCR_API="" -DMST_UL
-
-if ENABLE_INBAND
-libmtcr_ul_a_SOURCES += mtcr_ib_ofed.c
-else
-libmtcr_ul_a_CFLAGS += -DNO_INBAND
-endif
-
-libraryincludedir=$(includedir)/mstflint
-libraryinclude_HEADERS = $(top_srcdir)/include/mtcr_ul/mtcr.h  $(top_srcdir)/include/mtcr_ul/mtcr_com_defs.h
-
diff --git a/mtcr_ul/mtcr_ib.h b/mtcr_ul/mtcr_ib.h
deleted file mode 100644 (file)
index cb3ed49..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- *
- *  mtcr_ib.h - Mellanox Software tools (mst) IB related driver definitions
- *
- */
-
-#ifndef _MTCR_IB_H
-#define _MTCR_IB_H
-
- #include <mtcr.h>
-
-int mib_open(const char *name, mfile *mf, int mad_init);
-int mib_close(mfile *mf);
-int mib_read4(mfile *mf, unsigned int offset, u_int32_t *value);
-int mib_write4(mfile *mf, unsigned int offset, u_int32_t value);
-int mib_read64(mfile *mf, unsigned int offset, void *data, int length);
-int mib_write64(mfile *mf, unsigned int offset, void *data, int length);
-
-int mib_readblock(mfile *mf, unsigned int offset, u_int32_t *data, int length);
-int mib_writeblock(mfile *mf, unsigned int offset, u_int32_t *data, int length);
-int mib_swreset(mfile *mf);
-int mib_get_chunk_size(mfile *mf);
-int mib_acces_reg_mad(mfile *mf, u_int8_t *data);
-
-int mib_smp_set(mfile* mf, u_int8_t* data, u_int16_t attr_id, u_int32_t attr_mod);
-int mib_smp_get(mfile* mf, u_int8_t* data, u_int16_t attr_id, u_int32_t attr_mod);
-
-#endif
diff --git a/mtcr_ul/mtcr_ib_ofed.c b/mtcr_ul/mtcr_ib_ofed.c
deleted file mode 100644 (file)
index 971d4b8..0000000
+++ /dev/null
@@ -1,1063 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/********************************************************
-**
-*   ibvsmad.c
-*
-*   the ibvsmad library.
-*   this library provides vendor specific mad capabilities.
-*
-*   mread64, mwrite64 - IS3 I2C bus access MAD - ExtPortAccess -> I2C compliant port #1
-*   mread4 , mwrite4  - IS3 CR-Space access MAD - ConfigSpaceAccess
-*
-*
-*   author: yoniy@mellanox.co.il , Apr. 16th 2007
-*/
-
-
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <time.h>
-#include <string.h>
-#include <signal.h>
-
-#ifdef MST_UL
-#include <errno.h>
-#include "mtcr_int_defs.h"
-#endif
-
-#include "mtcr_ib.h"
-
-#ifndef __WIN__
-#include "mtcr_mf.h"
-#include "mtcr_com_defs.h"
-#endif
-
-#include <infiniband/mad.h>
-
-#ifdef __WIN__
-    #include <windows.h>
-    #include "com_def.h"
-
-    #define BAD_RET_VAL 1
-    #define LIB_IBMAD  "libibmad"
-
-    #define MY_GetPointerAddress(ivm, func_name, f_type) do { \
-                  ivm->func_name = (f_type)GetProcAddress(ivm->dl_handle, #func_name); \
-                  if (ivm->func_name == NULL) { \
-                      IBERROR(("Failed to find %s function on ibal.dll file.\n", #func_name));\
-                      errno = ENOSYS;\
-                      return -1;\
-                  }\
-    } while(0)
-
-    #define MY_GetProcAddress(ivm, func_name)  MY_GetPointerAddress(ivm, func_name, f_##func_name)
-    #define MY_GetProcAddressIgnoreFail(ivm, func_name) \
-            ivm->func_name = (f_##func_name)GetProcAddress(ivm->dl_handle, #func_name)
-    #define MY_GetVarAddress(ivm, var_name)    MY_GetPointerAddress(ivm, var_name, void*)
-
-    #define DLL_HANDLE HINSTANCE
-    #define OP_NOT_SUPPORTED EINVAL
-    #define IBMAD_CALL_CONV __stdcall
-
-
-#else
-    #include <getopt.h>
-    #include <unistd.h>
-    #include <dlfcn.h>
-    #include <asm/byteorder.h>
-
-    #define DLL_HANDLE void*
-    #define BAD_RET_VAL ~0llu
-    #define MY_DLSYM(mf, func_name) do { \
-                      const char* dl_error; \
-                      mf->func_name = dlsym(mf->dl_handle, #func_name); \
-                      if ((dl_error = dlerror()) != NULL)  {\
-                          IBERROR(("%s", dl_error));\
-                          return -1;\
-                      } \
-    } while(0)
-
-    #define MY_DLSYM_IGNORE_FAIL(mf, func_name) \
-                          mf->func_name = dlsym(mf->dl_handle, #func_name)
-
-    #define OP_NOT_SUPPORTED EOPNOTSUPP
-    #define IBMAD_CALL_CONV
-
-
-#endif
-
-
-#define __BUILD_VERSION_TAG__ 1.1
-//#include "ibvsmad.h"
-
-#undef DEBUG
-// TODO: Ask Mohammad why was the iberror changed ?
-
-// #define DEBUG(fmt, args...)  if (verbose) iberror(0, __FUNCTION__, fmt, ## args)
-// #define IBERROR(fmt, args...)   iberror(1, __FUNCTION__, fmt, ## args)
-
-#define IBERROR(args) do {               printf("-E- ibvsmad : ");\
-                                         printf args;\
-                                         printf("\n");\
-                                         errno = EINVAL;\
-                                         } while(0)
-#define DEBUG(args) do {   if (verbose) {\
-                                         printf("-D- ibvsmad : ");\
-                                         printf args;\
-                                         printf("\n");\
-                                         errno = EINVAL;\
-                                        }\
-                       } while(0)
-
-// BIT Slicing macros
-#define ONES32(size)                    ((size)?(0xffffffff>>(32-(size))):0)
-#define MASK32(offset,size)             (ONES32(size)<<(offset))
-
-#define EXTRACT_C(source,offset,size)   ((((unsigned)(source))>>(offset)) & ONES32(size))
-#define EXTRACT(src,start,len)          (((len)==32)?(src):EXTRACT_C(src,start,len))
-
-#define MERGE_C(rsrc1,rsrc2,start,len)  ((((rsrc2)<<(start)) & (MASK32((start),(len)))) | ((rsrc1) & (~MASK32((start),(len)))))
-#define MERGE(rsrc1,rsrc2,start,len)    (((len)==32)?(rsrc2):MERGE_C(rsrc1,rsrc2,start,len))
-
-#define SWAPL(l) bswap_32(l)
-
-
-#define IB_VENDOR_SPECIFIC_CLASS_0xA    0x0A
-#define IB_VENDOR_SPECIFIC_CLASS_0x9    0x09
-
-#define IB_VS_ATTR_SW_RESET         0x12
-#define IB_VS_ATTR_EXT_PORT_INFO    0x13
-#define IB_VS_ATTR_CR_ACCESS        0x50
-
-#define IB_VS_ATTRMOD_CR            0x00008000
-#define IB_VS_ATTR_EPI_ATTRMOD_I2C1 0x02
-
-#define IB_VS_CR_NUM_OF_RECORDS     1
-#define IB_VS_CR_ONE_RECORD_SIZE    4
-
-#define I2C_CHUNK_SIZE  64
-#define I2C_DEVICE_ID   0x56
-#define I2C_MEMORY_ADDR 0
-
-#define UNSUPP_DEVS_NUM   15
-#define DEVID_ADDRESS     0xf0014
-
-// Convert BYTES - DWORDS with MEMCPY BE
-#define BYTES_TO_DWORD_BE(dw_dest, byte_src) do {   u_int32_t tmp;\
-                                                    memcpy(&tmp, byte_src, 4);\
-                                                    *(dw_dest) = __be32_to_cpu(tmp);\
-                                                } while (0)
-
-#define DWORD_TO_BYTES_BE(bytes_dest, dw_src) do { u_int32_t tmp;\
-                                                   tmp = __cpu_to_be32(*(dw_src));\
-                                                   memcpy(bytes_dest, &tmp, 4);\
-                                                 } while (0)
-
-
-typedef struct ibmad_port* IBMAD_CALL_CONV (*f_mad_rpc_open_port)(char *dev_name, int dev_port,
-                                                int *mgmt_classes,
-                                                int num_classes);
-typedef void     IBMAD_CALL_CONV (*f_mad_rpc_close_port)(struct ibmad_port *srcport);
-typedef int      IBMAD_CALL_CONV (*f_ib_resolve_portid_str_via)(ib_portid_t * portid, char *addr_str,
-                                                int dest, ib_portid_t * sm_id, const struct ibmad_port *srcport);
-typedef uint8_t* IBMAD_CALL_CONV (*f_ib_vendor_call_via)(void *data, ib_portid_t *portid, ib_vendor_call_t *call,
-                                         const struct ibmad_port *srcport);
-typedef uint8_t* IBMAD_CALL_CONV (*f_smp_query_via)(void *buf, ib_portid_t *id, unsigned attrid, unsigned mod,
-                                    unsigned timeout, const struct ibmad_port *srcport);
-typedef uint8_t* IBMAD_CALL_CONV (*f_smp_query_status_via)(void *buf, ib_portid_t *id, unsigned attrid, unsigned mod,
-                                    unsigned timeout, int *rstatus, const struct ibmad_port *srcport);
-typedef uint8_t* IBMAD_CALL_CONV (*f_smp_set_via)(void *buf, ib_portid_t *id, unsigned attrid, unsigned mod,
-                                  unsigned timeout, const struct ibmad_port *srcport );
-typedef uint8_t* IBMAD_CALL_CONV (*f_smp_set_status_via)(void *buf, ib_portid_t *id, unsigned attrid, unsigned mod,
-                                  unsigned timeout, int *rstatus, const struct ibmad_port *srcport );
-
-typedef void IBMAD_CALL_CONV (*f_mad_rpc_set_retries)(struct ibmad_port *port, int retries);
-typedef void IBMAD_CALL_CONV (*f_mad_rpc_set_timeout)(struct ibmad_port *port, int timeout);
-typedef uint32_t  IBMAD_CALL_CONV (*f_mad_get_field)(void *buf, int base_offs,enum MAD_FIELDS field);
-
-typedef char*    IBMAD_CALL_CONV (*f_portid2str)(ib_portid_t *portid);
-
-
-struct __ibvsmad_hndl_t
-{
-    struct ibmad_port *srcport;
-
-    ib_portid_t portid;
-    int sock;
-    int tp;
-    int i2c_slave;
-    int use_smp;
-
-    int timeout;
-    int retries_num;
-    u_int64_t vkey;
-
-    DLL_HANDLE dl_handle;
-
-    f_mad_rpc_open_port         mad_rpc_open_port;
-    f_mad_rpc_close_port        mad_rpc_close_port;
-    f_ib_vendor_call_via        ib_vendor_call_via;
-    f_ib_resolve_portid_str_via ib_resolve_portid_str_via;
-    f_smp_query_via             smp_query_via;
-    f_smp_query_status_via      smp_query_status_via;
-    f_smp_set_via               smp_set_via;
-    f_smp_set_status_via        smp_set_status_via;
-    f_mad_rpc_set_retries       mad_rpc_set_retries;
-    f_mad_rpc_set_timeout       mad_rpc_set_timeout;
-    f_mad_get_field             mad_get_field;
-    f_portid2str            portid2str;
-
-    void*                   ibdebug;
-};
-
-typedef struct __ibvsmad_hndl_t ibvs_mad;
-
-static int verbose = 0;
-
-/********************************************************
-**
-*    Management class :     0x09 VendorSpecific
-*    Management attribute : 0x50 ConfigSpaceAccess
-*
-*/
-
-#define IB_SMP_ATTR_CR_ACCESS 0xff50
-#define IB_DATA_INDEX     8
-#define MAX_IB_SMP_DATA_SIZE    (IB_SMP_DATA_SIZE - IB_DATA_INDEX)
-#define MAX_IB_SMP_DATA_DW_NUM  MAX_IB_SMP_DATA_SIZE / 4
-
-static uint64_t
-ibvsmad_craccess_rw_smp(ibvs_mad *h, u_int32_t memory_address, int method, u_int8_t num_of_dwords, u_int32_t *data)
-{
-    u_int8_t mad_data[IB_SMP_DATA_SIZE] = {0};
-    int i;
-    u_int32_t att_mod = 0;
-    u_int8_t* p;
-    u_int64_t vkey;
-
-    if (num_of_dwords > MAX_IB_SMP_DATA_DW_NUM) {
-        IBERROR(("size is too big, maximum number of dwords is %d", MAX_IB_SMP_DATA_DW_NUM));
-        return BAD_RET_VAL;
-    }
-    // Mode 0 - block write
-    // att_mod = MERGE(att_mod, 0, 22, 2); // commented - already 0
-
-    // Cr addr:
-    att_mod = MERGE(att_mod, memory_address, 0, 16);
-    att_mod = MERGE(att_mod, EXTRACT(memory_address, 16, 8), 24, 8);
-
-    // Set the vkey
-    vkey = __cpu_to_be64(h->vkey);
-    memcpy(&mad_data[0], &vkey, 8);
-
-    // DW Size:
-    att_mod = MERGE(att_mod, num_of_dwords, 16, 6);
-
-    if (method == IB_MAD_METHOD_GET) {
-        p = h->smp_query_via(mad_data, &h->portid, IB_SMP_ATTR_CR_ACCESS, att_mod, 0, h->srcport);
-
-        if (!p) {
-            return BAD_RET_VAL;
-        }
-
-        for (i = 0; i < num_of_dwords; i++) {
-            BYTES_TO_DWORD_BE(data + i, mad_data + IB_DATA_INDEX + i * 4);
-        }
-    } else {
-        for (i = 0; i < num_of_dwords; i++) {
-            DWORD_TO_BYTES_BE(mad_data + IB_DATA_INDEX + i * 4, data + i);
-        }
-        p = h->smp_set_via(mad_data, &h->portid, IB_SMP_ATTR_CR_ACCESS, att_mod, 0, h->srcport);
-        if (!p) {
-            return BAD_RET_VAL;
-        }
-    }
-
-    return 0;
-}
-
-// TODO: Correct this value.
-#define  MAX_VS_DATA_SIZE (IB_VENDOR_RANGE1_DATA_SIZE -  IB_DATA_INDEX)
-#define  MAX_IB_VS_DATA_DW_NUM  MAX_VS_DATA_SIZE / 4
-
-static uint64_t
-ibvsmad_craccess_rw_vs(ibvs_mad *h, u_int32_t memory_address, int method, u_int8_t num_of_dwords, u_int32_t *data)
-{
-    u_int8_t vsmad_data[IB_VENDOR_RANGE1_DATA_SIZE] = {0};
-    ib_vendor_call_t call;
-    int i;
-    u_int8_t* p;
-    u_int64_t vkey;
-
-    call.method     = method;
-    call.mgmt_class = IB_VENDOR_SPECIFIC_CLASS_0x9;
-    call.attrid     = IB_VS_ATTR_CR_ACCESS;
-
-    if (h == NULL || data == NULL) {
-        return BAD_RET_VAL;
-    }
-
-    if (num_of_dwords > MAX_IB_VS_DATA_DW_NUM) {
-        IBERROR(("size (%d) is too big, maximum num of dwords is %d", num_of_dwords,
-                 MAX_IB_VS_DATA_DW_NUM)); // TBD try max size
-        return BAD_RET_VAL;
-    }
-
-    // TODO: Add the dword.
-    call.mod        = ( (EXTRACT(memory_address,0,16)<<00)&0x0000ffff ) |
-                      ( (num_of_dwords<<16)&0x00ff0000 ) |
-                      ( (EXTRACT(memory_address,16,8)<<24) & 0xff000000 );
-
-    DEBUG(("attrmod = %08x\n", call.mod));
-
-    call.oui        = IB_OPENIB_OUI;
-    call.timeout    = 0;
-    memset(&call.rmpp, 0, sizeof(call.rmpp));
-
-    DEBUG(("memory_address = 0x%08x\n", memory_address));
-    /* set MAD data section */
-
-    // TBD: currently work for 1 record only, fix for more than one.
-    // building one record:
-
-    // Set the Vkey.
-    vkey = __cpu_to_be64(h->vkey);
-    memcpy(vsmad_data, &vkey, 8);
-
-    if (method == IB_MAD_METHOD_SET)  {
-        for (i = 0; i < num_of_dwords; i++) {
-            DWORD_TO_BYTES_BE(vsmad_data + IB_DATA_INDEX + i * 4, data + i);
-        }
-    }
-
-    p = h->ib_vendor_call_via(vsmad_data, &h->portid, &call, h->srcport);
-    if (!p) {
-        return BAD_RET_VAL;
-    }
-
-    for (i = 0; i < num_of_dwords; i++) {
-        BYTES_TO_DWORD_BE(data + i, vsmad_data + IB_DATA_INDEX + i * 4);
-    }
-
-    return 0;
-}
-
-static uint64_t
-ibvsmad_craccess_rw(ibvs_mad *h, u_int32_t memory_address, int method, u_int8_t num_of_dwords, u_int32_t *data)
-{
-    if (h->use_smp) {
-        return ibvsmad_craccess_rw_smp(h,memory_address, method, num_of_dwords, data);
-    } else {
-        return ibvsmad_craccess_rw_vs (h,memory_address, method, num_of_dwords, data);
-    }
-    return 0;
-}
-
-#ifdef __WIN__
-
-
-int process_dynamic_linking(ibvs_mad *ivm, int mad_init)
-{
-
-    ivm->dl_handle = LoadLibrary(TEXT(LIB_IBMAD));
-
-    if (ivm->dl_handle != NULL )
-    {
-        MY_GetProcAddress(ivm, mad_rpc_open_port        );
-        MY_GetProcAddress(ivm, mad_rpc_close_port       );
-        MY_GetProcAddress(ivm, ib_vendor_call_via       );
-        MY_GetProcAddress(ivm, ib_resolve_portid_str_via);
-        MY_GetProcAddress(ivm, smp_query_via            );
-        MY_GetProcAddressIgnoreFail(ivm, smp_query_status_via );
-        MY_GetProcAddress(ivm, smp_set_via              );
-        MY_GetProcAddressIgnoreFail(ivm, smp_set_status_via );
-        MY_GetProcAddress(ivm, mad_rpc_set_retries      );
-        MY_GetProcAddress(ivm, mad_rpc_set_timeout      );
-        MY_GetProcAddress(ivm, portid2str               );
-        MY_GetProcAddress(ivm, mad_get_field            );
-        MY_GetVarAddress(ivm,  ibdebug                  );
-
-    } else {
-
-        IBERROR(("Failed to load "LIB_IBMAD".dll library %#x", (unsigned int)GetLastError()));
-        errno = ENOENT;
-        return -1;
-    }
-    return 0;
-}
-
-int free_dll_handle(mfile *mf) {
-    return FreeLibrary(((ibvs_mad*)(mf->ctx))->dl_handle);
-}
-
-#else
-
-int process_dynamic_linking(ibvs_mad *ivm, int mad_init)
-{
-
-    char* libs[] = {"libibmad.so.5"};
-
-    u_int32_t i;
-    (void)mad_init;
-    for (i = 0; i < sizeof(libs)/sizeof(libs[0]) ; i++) {
-        ivm->dl_handle = dlopen (libs[i], RTLD_LAZY);
-        if (ivm->dl_handle) {
-            break;
-        }
-    }
-    if (!ivm->dl_handle) {
-        const char* errstr=dlerror();
-        IBERROR(("%s", errstr));
-        //free(ivm);
-        return -1;
-
-    }
-
-    dlerror();
-
-    MY_DLSYM(ivm, mad_rpc_open_port        );
-    MY_DLSYM(ivm, mad_rpc_close_port       );
-    MY_DLSYM(ivm, ib_vendor_call_via       );
-    MY_DLSYM(ivm, ib_resolve_portid_str_via);
-    MY_DLSYM(ivm, smp_query_via            );
-    MY_DLSYM_IGNORE_FAIL(ivm, smp_query_status_via );
-    MY_DLSYM(ivm, smp_set_via              );
-    MY_DLSYM_IGNORE_FAIL(ivm, smp_set_status_via   );
-    MY_DLSYM(ivm, mad_rpc_set_retries      );
-    MY_DLSYM(ivm, mad_rpc_set_timeout      );
-    MY_DLSYM(ivm, mad_get_field            );
-    MY_DLSYM(ivm, portid2str               );
-    MY_DLSYM(ivm, ibdebug                  );
-    return 0;
-}
-
-
-int free_dll_handle(mfile *mf) {
-    return dlclose(((ibvs_mad*)(mf->ctx))->dl_handle);
-}
-
-#endif
-
-char* my_strdup(const char* name)
-{
-    int len;
-    char *buf;
-
-    if (name == NULL) {
-        return NULL;
-    }
-    len = strlen(name);
-
-    buf = malloc((len + 1) * sizeof(char));
-    if (buf == NULL) {
-        return NULL;
-
-    }
-    strcpy(buf, name);
-
-    return buf;
-}
-#define MTCR_IB_TIMEOUT     "MTCR_IB_TIMEOUT"
-#define MTCR_IB_RETRIES     "MTCR_IB_RETRIES"
-#define MTCR_IB_VKEY        "MTCR_IB_VKEY"
-#define MTCR_IBMAD_DEBUG "MTCR_IBMAD_DEBUG"
-
-int get_env_var(char *env_name, int *env_var) {
-    char* env_val;
-    env_val = getenv(env_name);
-    if (env_val) {
-        *env_var = atol(env_val);
-    }
-    return 0;
-}
-int get_64_env_var(char *env_name, u_int64_t *env_var)
-{
-    char* env_val, *endp = NULL;
-    env_val = getenv(env_name);
-    if (env_val) {
-        *env_var = strtoull(env_val, &endp, 0);
-    }
-    return 0;
-}
-
-int get_env_vars(ibvs_mad *ivm)
-{
-    get_env_var(MTCR_IB_TIMEOUT, &(ivm->timeout));
-    get_env_var(MTCR_IB_RETRIES, &(ivm->retries_num));
-    get_64_env_var(MTCR_IB_VKEY, &((ivm->vkey)));
-    return 0;
-}
-
-
-
-int is_vs_crspace_supported(ibvs_mad* h)
-{
-    u_int8_t* p;
-    u_int8_t mad_data[IB_SMP_DATA_SIZE] = {0};
-    u_int32_t dev_id;
-    u_int32_t data = 0;
-    int i = 0;
-    u_int32_t unsupported_devs[UNSUPP_DEVS_NUM] = {
-            0x6746, /* MT26438 [ConnectX-2 VPI w/ Virtualization+]"*/
-            0x6764, /* MT26468 [Mountain top]"                     */
-            0xbd34, /* IS4 IB SDR"                                 */
-            0xbd35, /* IS4 IB DDR"                                 */
-            0xbd36, /* IS4 IB QDR"                                 */
-            0xfa66, /* BridgeX VPI up, E/FC down"                  */
-            0xfa7a, /* BridgeX EN up, E/FC down"                   */
-            0x1001, /* ConnectX-2 VF"                              */
-            0x1003, /* MT27500 [ConnectX-3]"                       */
-            0x1005, /* MT27510 Family"                             */
-            0x1007, /* MT27520 ConnectX-3 Pro Family"              */
-
-    };
-    uint64_t ret = ibvsmad_craccess_rw_vs(h, DEVID_ADDRESS, IB_MAD_METHOD_GET, 1, &data);
-    if (!ret) {
-        return 1;
-    }
-    DEBUG(("Vendor Specific is not supported, checking SMP .. "));
-    p = h->smp_query_via(mad_data, &h->portid, IB_ATTR_NODE_INFO, 0, 0, h->srcport);
-
-    if (NULL == p) {
-        return 1;
-    }
-
-    dev_id  = h->mad_get_field(mad_data, 0, IB_NODE_DEVID_F);
-
-    for (i = 0; i < UNSUPP_DEVS_NUM; i++) {
-        if (dev_id == unsupported_devs[i]) {
-            return 1;
-        }
-    }
-
-    return 0;
-}
-
-
-/********************************************************
-**
-*    Initialize madrpc; Register the vendor specific management classes under
-*    the libibmad library; Resolve destination lid from input.
-*
-*/
-int mib_open(const char *name, mfile *mf, int mad_init)
-{
-    char        *ca              = 0;
-    int          mgmt_classes[4] = {IB_SMI_CLASS,
-                                    IB_SMI_DIRECT_CLASS,
-                                    IB_VENDOR_SPECIFIC_CLASS_0xA,
-                                    IB_VENDOR_SPECIFIC_CLASS_0x9};
-    ib_portid_t *sm_id           = 0;
-    int          ca_port         = 0;
-    int          dest_type       = IB_DEST_LID;
-    ibvs_mad    *ivm             = NULL;
-    char        *nbuf            = NULL;
-    char        *path_str, *p;
-    int          rc              = -1;
-    int         lid_provided = 0;
-    char        *sl_str;
-
-    char* first_comma;
-    char* second_comma;
-    //ibdebug = 1;
-    if (!mf || !name) {
-        IBERROR(("Bad(null) device argument for inband access"));
-        errno = EINVAL;
-        goto end;
-    }
-    if (!(ivm=(ibvs_mad*)malloc(sizeof(ibvs_mad))))
-    {
-        IBERROR(("can't allocate ibvsmad_mfile"));
-        errno = ENOMEM;
-        goto end;
-    }
-    memset(ivm, 0, sizeof(ibvs_mad));
-
-    nbuf = my_strdup(name);
-    if (nbuf == NULL) {
-        errno = ENOMEM;
-        goto end;
-    }
-
-    if (strncmp("ibdr-", nbuf, 5) == 0) {
-        ivm->use_smp = 1;
-        dest_type = IB_DEST_DRPATH;
-        path_str  = nbuf + 5;
-    } else if (strncmp("iblid-", nbuf, 6) == 0) {
-        ivm->use_smp = 1;
-        dest_type = IB_DEST_LID;
-        path_str  = nbuf + 6;
-    } else if ((p = strstr(nbuf, "lid-")) != 0) {
-        lid_provided = 1;
-        dest_type = IB_DEST_LID;
-        path_str  = p + 4;
-
-    } else if ((p = strstr(nbuf, "lid_noinit-")) != 0) {
-        lid_provided = 1;
-        dest_type = IB_DEST_LID;
-        path_str  = p + 11;
-        mad_init = 0;
-
-    } else {
-        IBERROR(("Bad device argument for inband access"));
-        errno = EINVAL;
-        goto end;
-    }
-
-    first_comma = strstr(nbuf, ",");
-    if (first_comma) {
-        *first_comma = '\0';
-        ca = first_comma + 1;
-
-        second_comma = strstr(ca, ",");
-        if (second_comma) {
-            char* ep;
-            *second_comma = '\0';
-
-            ca_port = strtol(second_comma + 1, &ep, 0);
-
-            if (*ep != '\0') {
-                IBERROR(("Bad port number format (%s)", second_comma+1));
-                errno = EINVAL;
-                goto end;
-            }
-
-        }
-    }
-
-    ivm->retries_num = MAD_DEF_RETRIES;
-    ivm->timeout     = MAD_DEF_TIMEOUT_MS;
-    // Get env variables.
-    get_env_vars(ivm);
-    // The DR in the device name is a '.' separated list.
-    // Change it to a ',' separated list like ibmad likes.
-    if (dest_type == IB_DEST_DRPATH) {
-        char* c;
-        for (c = path_str; *c ; c++) {
-            if (*c == '.') {
-                *c = ',';
-            }
-        }
-    }
-
-#ifdef IBVSMAD_DLOPEN
-
-    ivm->mad_rpc_open_port         = mad_rpc_open_port;
-    ivm->mad_rpc_close_port        = mad_rpc_close_port;
-    ivm->ib_vendor_call_via        = ib_vendor_call_via;
-    ivm->ib_resolve_portid_str_via = ib_resolve_portid_str_via;
-    ivm->smp_query_via             = smp_query_via;
-    ivm->smp_set_via               = smp_set_via;
-    ivm->mad_rpc_set_retries       = mad_rpc_set_retries;
-    ivm->mad_rpc_set_timeout       = mad_rpc_set_timeout;
-    ivm->mad_get_field             = mad_get_field;
-    ivm->portid2str                = portid2str;
-#else
-    if (process_dynamic_linking(ivm, mad_init) == -1 ) {
-        goto end;
-    }
-#endif
-    get_env_var(MTCR_IBMAD_DEBUG, ivm->ibdebug);
-
-    ivm->srcport = ivm->mad_rpc_open_port(ca, ca_port, mgmt_classes, 4);
-    if (ivm->srcport == NULL) {
-        goto end;
-    }
-
-    ivm->mad_rpc_set_retries(ivm->srcport, ivm->retries_num);
-    ivm->mad_rpc_set_timeout(ivm->srcport, ivm->timeout);
-
-    rc = ivm->ib_resolve_portid_str_via(&ivm->portid, (char*)path_str,
-                                        dest_type, sm_id, ivm->srcport);
-    if (rc != 0)
-    {
-        IBERROR(("can't resolve destination port %s", path_str));
-        goto end;
-    }
-
-    //TODO: Remove the SL setting if DR method is mainly used.
-
-    // For ConnectIB:
-    // If the target device is connectib or SX and we use LID rout, use the SMP LID route and not the GPM
-    if (lid_provided) {
-        if (is_vs_crspace_supported(ivm)) {
-            DEBUG(("For this LID using VS MAD"));
-            ivm->use_smp = 0;
-        } else {
-            DEBUG(("For this LID using SMP MAD"));
-            ivm->use_smp = 1;
-        }
-    }
-
-#define MTCR_IBSL_ENV "MTCR_IB_SL"
-    if (!ivm->use_smp) {
-        sl_str = getenv(MTCR_IBSL_ENV);
-        if (sl_str) {
-            char* ep;
-            u_int32_t sl = strtoul(sl_str, &ep, 0);
-            if (*ep) {
-                fprintf(stderr, "-E- Failed to parse env var %s (%s). Ignorring\n", MTCR_IBSL_ENV, sl_str);
-            } else {
-                ivm->portid.sl = (u_int8_t)sl;
-            }
-        }
-    }
-
-    mf->ctx = ivm;
-
-    if (nbuf) {
-        free(nbuf);
-    }
-
-    return 0;
-end:
-    if (ivm) {
-        free(ivm);
-    }
-    if (nbuf) {
-        free(nbuf);
-    }
-    return -1;
-}
-
-
-
-/********************************************************
-**
-*    Free resources
-*
-*/
-int
-mib_close(mfile *mf)
-{
-    if (mf) {
-        if (mf->ctx) {
-        // TODO: free the ddl handlers
-            ibvs_mad* h = (ibvs_mad*)(mf->ctx);
-            h->mad_rpc_close_port(h->srcport);
-    #ifndef IBVSMAD_DLOPEN
-            free_dll_handle(mf);
-    #endif
-            free(mf->ctx);
-            mf->ctx = NULL;
-        }
-    }
-    return 0;
-}
-
-#define CHECK_ALLIGN(length) { \
-    if (length % 4) {                                       \
-        IBERROR(("Size must be 4 aligned, got %d", length));\
-        return -1;                                          \
-    }                                                       \
-}
-
-
-int mib_get_chunk_size(mfile *mf)
-{
-    if (!mf || !mf->ctx) {
-        IBERROR(("get chunk size failed. Null Param."));
-        return -1;
-    }
-    ibvs_mad* h = (ibvs_mad*)(mf->ctx);
-    if (h->use_smp) {
-        return MAX_IB_SMP_DATA_SIZE;
-    }
-    return MAX_VS_DATA_SIZE;
-}
-
-/********************************************************
-**
-*    Read an IS3 CR-Space 32 bit register
-*
-*/
-int
-mib_read4(mfile *mf, u_int32_t memory_address, u_int32_t *data)
-{
-    if (!mf || !mf->ctx || !data) {
-        IBERROR(("cr access read failed. Null Param."));
-        return -1;
-    }
-    ibvs_mad* h = (ibvs_mad*)(mf->ctx);
-
-    DEBUG(("mread4 of 0x%08x", memory_address));
-    if (ibvsmad_craccess_rw(h, memory_address, IB_MAD_METHOD_GET, 1, data) == ~0ull) {
-        IBERROR(("cr access read to %s failed", h->portid2str(&h->portid)));
-        return -1;
-    }
-    return 4;
-}
-
-/********************************************************
-**
-*    Write an IS3 CR-Space 32 bit register
-*
-*/
-int
-mib_write4(mfile *mf, u_int32_t memory_address, u_int32_t _data)
-{
-    if (!mf || !mf->ctx) {
-        IBERROR(("cr access write failed. Null Param."));
-        return -1;
-    }
-    ibvs_mad* h = (ibvs_mad*)(mf->ctx);
-
-    u_int32_t data = _data;
-    DEBUG(("mwrite4 of 0x%08x\n", memory_address));
-
-    if (ibvsmad_craccess_rw(h, memory_address, IB_MAD_METHOD_SET, 1, &data) == ~0ull) {
-        IBERROR(("cr access write to %s failed", h->portid2str(&h->portid)));
-        return -1;
-    }
-    return 4;
-}
-
-MTCR_API int mib_readblock(mfile *mf, unsigned int offset, u_int32_t *data, int length)
-{
-    if (!mf || !mf->ctx || !data) {
-        IBERROR(("cr access read failed. Null Param."));
-        return -1;
-    }
-    ibvs_mad* h = (ibvs_mad*)(mf->ctx);
-
-    CHECK_ALLIGN(length);
-
-    if (ibvsmad_craccess_rw(h, offset, IB_MAD_METHOD_GET, (length / 4), data) == ~0ull) {
-        IBERROR(("cr access read to %s failed", h->portid2str(&h->portid)));
-        return -1;
-    }
-    return length;
-
-}
-MTCR_API int mib_writeblock(mfile *mf, unsigned int offset, u_int32_t *data, int length)
-{
-    if (!mf || !mf->ctx || !data) {
-        IBERROR(("cr access write failed. Null Param."));
-        return -1;
-    }
-    ibvs_mad* h = (ibvs_mad*)(mf->ctx);
-
-    CHECK_ALLIGN(length);
-
-    if (ibvsmad_craccess_rw(h, offset, IB_MAD_METHOD_SET, (length / 4), data) == ~0ull) {
-        IBERROR(("cr access read to %s failed", h->portid2str(&h->portid)));
-        return -1;
-    }
-    return length;
-}
-
-int is_node_managed(ibvs_mad* h)
-{
-    u_int8_t* p;
-    u_int8_t mad_data[IB_SMP_DATA_SIZE] = {0};
-    u_int8_t enhanced_port;
-
-    p = h->smp_query_via(mad_data, &h->portid, IB_ATTR_SWITCH_INFO, 0, 0, h->srcport);
-
-    if (NULL == p) {
-        return 0;
-    }
-
-    enhanced_port = EXTRACT(mad_data[16], /* Big endian */ 3, 1);
-    return enhanced_port;
-}
-/********************************************************
-**
-*    Management class :     0x0A VendorSpecific
-*    Management attribute : 0x12 SwReset
-*
-
-*/
-#define MTCR_SWRESET_ENV "MTCR_SWRESET_TIMER"
-int
-mib_swreset(mfile *mf)
-{
-    if (!mf || !mf->ctx) {
-        errno = EINVAL;
-        IBERROR(("swreset write failed. Null Param."));
-        return -1;
-    }
-
-    u_int32_t swreset_timer = 15;
-    char* ep;
-    char* swreset_env;
-    ibvs_mad* h = (ibvs_mad*)(mf->ctx);
-    u_int8_t* p;
-    u_int8_t vsmad_data[IB_VENDOR_RANGE1_DATA_SIZE] = {0};
-    ib_vendor_call_t call;
-
-    swreset_env = getenv(MTCR_SWRESET_ENV);
-    if (swreset_env) {
-
-         u_int32_t new_timer = strtol(swreset_env, &ep, 0);
-         if (*ep != '\0') {
-             fprintf(stderr, "-W- Bad %s env var format. Ignoring\n", MTCR_SWRESET_ENV);
-         } else if (swreset_timer > 255) {
-             fprintf(stderr, "-W- Bad %s env var value ( > 255). Ignoring\n", MTCR_SWRESET_ENV);
-         } else {
-            /* All OK */
-            fprintf(stderr, "-I- Set reset timer to %d seconds\n", new_timer);
-            swreset_timer = new_timer;
-         }
-    }
-
-    if (is_node_managed(h)) {
-        errno = OP_NOT_SUPPORTED;
-        return -1;
-    }
-
-    call.method     = IB_MAD_METHOD_SET;
-    call.mgmt_class = IB_VENDOR_SPECIFIC_CLASS_0xA;
-    call.attrid     = IB_VS_ATTR_SW_RESET;
-    call.mod        = swreset_timer;
-    call.oui        = IB_OPENIB_OUI;
-    call.timeout    = 0;
-    memset(&call.rmpp, 0, sizeof call.rmpp);
-
-    p = h->ib_vendor_call_via(vsmad_data, &h->portid, &call, h->srcport);
-    if (!p)
-        return -1;
-
-    return 0;
-}
-
-#define IB_SMP_ATTR_REG_ACCESS 0xff52
-
-static int mib_status_translate(int status)
-{
-    switch ((status >> 2) & 0x7) {
-    case 1:
-        return ME_MAD_BAD_VER;
-    case 2:
-        return ME_MAD_METHOD_NOT_SUPP;
-    case 3:
-        return ME_MAD_METHOD_ATTR_COMB_NOT_SUPP;
-    case 7:
-        return ME_MAD_BAD_DATA;
-    }
-
-    if (status & 0x1)
-        return ME_MAD_BUSY;
-    else if ((status >> 1) & 0x1)
-        return ME_MAD_REDIRECT;
-
-    return ME_MAD_GENERAL_ERR;
-}
-
-int mib_acces_reg_mad(mfile *mf, u_int8_t *data)
-{
-    if (!mf || !mf->ctx || !data) {
-        IBERROR(("mib_acces_reg_mad failed. Null Param."));
-        return ME_BAD_PARAMS;
-    }
-    u_int8_t* p;
-    ibvs_mad* h = (ibvs_mad*)(mf->ctx);
-    int status = -1;
-
-    // Call smp set function
-    if (h->smp_set_status_via) {
-        p = h->smp_set_status_via(data, &(h->portid), IB_SMP_ATTR_REG_ACCESS, 0, 0, &status, h->srcport);
-    } else {
-        p = h->smp_set_via(data, &(h->portid), IB_SMP_ATTR_REG_ACCESS, 0, 0, h->srcport);
-    }
-    if (!p || status > 0) {
-        if (status != -1) {
-            return mib_status_translate(status);
-        } else {
-            return -1;
-        }
-    }
-
-    return ME_OK;
-}
-
-int mib_smp_set(mfile* mf, u_int8_t* data, u_int16_t attr_id, u_int32_t attr_mod)
-{
-    if (!mf || !mf->ctx || !data) {
-        IBERROR(("mib_smp_set failed. Null Param."));
-        return ME_BAD_PARAMS;
-    }
-    u_int8_t* p;
-    int status = -1;
-    ibvs_mad* h = (ibvs_mad*)(mf->ctx);
-    // Call smp set function
-    if (h->smp_set_status_via) {
-        p = h->smp_set_status_via(data, &(h->portid), attr_id, attr_mod, 0, &status, h->srcport);
-    } else {
-        p = h->smp_set_via(data, &(h->portid), attr_id, attr_mod, 0, h->srcport);
-    }
-    if (!p || status > 0) {
-        if (status != -1) {
-            return mib_status_translate(status);
-        } else {
-            return -1;
-        }
-    }
-
-    return ME_OK;
-}
-
-int mib_smp_get(mfile* mf, u_int8_t* data, u_int16_t attr_id, u_int32_t attr_mod)
-{
-    if (!mf || !mf->ctx || !data) {
-        IBERROR(("mib_smp_get failed. Null Param."));
-        return ME_BAD_PARAMS;
-    }
-    u_int8_t* p;
-    int status = -1;
-    ibvs_mad* h = (ibvs_mad*)(mf->ctx);
-
-    // Call smp set function
-    if (h->smp_query_status_via) {
-        p = h->smp_query_status_via(data, &(h->portid), attr_id, attr_mod, 0, &status, h->srcport);
-    } else {
-        p = h->smp_query_via(data, &(h->portid), attr_id, attr_mod, 0, h->srcport);
-    }
-
-    if (!p || status > 0) {
-        if (status != -1) {
-            return mib_status_translate(status);
-        } else {
-            return -1;
-        }
-    }
-
-    return ME_OK;
-}
diff --git a/mtcr_ul/mtcr_ib_res_mgt.c b/mtcr_ul/mtcr_ib_res_mgt.c
deleted file mode 100644 (file)
index 7d4839f..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <string.h>
-
-#include "mtcr_ib.h"
-#include "mtcr_ib_res_mgt.h"
-#include "packets_common.h"
-
-
-#define IB_SMP_DATA_SIZE 48
-#define SMP_SEMAPHOE_LOCK_CMD 0xff53
-
-#define DBG_PRINTF(...) do { if (getenv("MFT_DEBUG") != NULL) { fprintf(stderr, __VA_ARGS__); } } while (0)
-
-/* Description -   */
-/* Size in bytes - 12 */
-struct semaphore_lock_cmd {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-    /* Description - The maximal Semaphore Address supported by the device. */
-    /* 0.0 - 0.7 */
-     u_int8_t semaphore_max_addr;
-    /* Description - The lease time for a lock is 50msec *2^LeaseTimeExponent */
-    /* 0.16 - 0.23 */
-     u_int8_t lease_time_exponent;
-    /* Description - Should be used to extend a lock. When a lock owner application wish to extend the lock it should set this bit to 1 and fill the Key field with key obtained by the GetResp() to successful acquiring of a lock. */
-    /* 0.31 - 4.31 */
-     u_int8_t is_lease;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-    /* Description - The specific Semaphore being queried or requested a lock for */
-    /* 4.0 - 4.15 */
-     u_int16_t semaphore_addr;
-    /* Description - 1 = Lock, 2 = Extend, 3 = Release */
-    /* 4.16 - 4.17 */
-     u_int8_t op;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-    /* Description - This field is provided by the device on a successful lock. It should be used by the user in order to either extend or release of the lock. */
-    /* 8.0 - 8.31 */
-     u_int32_t lock_key;
-};
-
-
-void semaphore_lock_cmd_pack(const struct semaphore_lock_cmd *ptr_struct, u_int8_t* ptr_buff){
-    u_int32_t offset;
-    int i=0;
-    (void)offset;
-    (void)i;
-    (void)ptr_struct;
-    (void)ptr_buff;
-
-    offset=24;
-    push_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->semaphore_max_addr);
-
-    offset=8;
-    push_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->lease_time_exponent);
-
-    offset=0;
-    push_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->is_lease);
-
-    offset=48;
-    push_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->semaphore_addr);
-
-    offset=46;
-    push_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->op);
-
-    offset=64;
-    push_to_buff_32(ptr_buff, offset, ptr_struct->lock_key);
-
-}
-
-void semaphore_lock_cmd_unpack(struct semaphore_lock_cmd *ptr_struct, u_int8_t* ptr_buff){
-    u_int32_t offset;
-    int i=0;
-    u_int8_t val=0;
-    (void)val;
-    (void)offset;
-    (void)i;
-    (void)ptr_struct;
-    (void)ptr_buff;
-
-    offset=24;
-    ptr_struct->semaphore_max_addr = (u_int8_t)pop_from_buff(ptr_buff, offset, 8);
-
-    offset=8;
-    ptr_struct->lease_time_exponent = (u_int8_t)pop_from_buff(ptr_buff, offset, 8);
-
-    offset=0;
-    ptr_struct->is_lease = (u_int8_t)pop_from_buff(ptr_buff, offset, 1);
-
-    offset=48;
-    ptr_struct->semaphore_addr = (u_int16_t)pop_from_buff(ptr_buff, offset, 16);
-
-    offset=46;
-    ptr_struct->op = (u_int8_t)pop_from_buff(ptr_buff, offset, 2);
-
-    offset=64;
-    ptr_struct->lock_key = pop_from_buff_32(ptr_buff, offset);
-
-}
-
-int mib_semaphore_lock_vs_mad(
-        mfile* mf,
-        sem_op_t op,
-        u_int32_t sem_addr,
-        u_int32_t lock_key,
-        u_int32_t* res,
-        int* is_leaseable,
-        u_int8_t* lease_time_exp,
-        sem_lock_method_t method)
-{
-#ifndef NO_INBAND
-    u_int8_t mad_data[IB_SMP_DATA_SIZE] = {0};
-    int rc = ME_OK;
-    struct semaphore_lock_cmd cmd;
-    memset(&cmd, 0, sizeof(cmd));
-    cmd.semaphore_addr = sem_addr;
-    cmd.op = op;
-    cmd.lock_key = lock_key;
-    DBG_PRINTF("#######BFORE#####\n# SEM_ADDR: 0x%x\n# OP: %d\n# Lock_Key: 0x%x\n#################\n",
-            cmd.semaphore_addr, cmd.op, cmd.lock_key);
-    semaphore_lock_cmd_pack(&cmd, mad_data);
-    if (method == SEM_LOCK_SET) {
-        rc = mib_smp_set(mf, mad_data, SMP_SEMAPHOE_LOCK_CMD, 0);
-    } else {
-        rc = mib_smp_get(mf, mad_data, SMP_SEMAPHOE_LOCK_CMD, 0);
-    }
-    semaphore_lock_cmd_unpack(&cmd, mad_data);
-    DBG_PRINTF("#######AFTER#####\n# SEM_ADDR: 0x%x\n# OP: %d\n# Lock_Key: 0x%x\n#################\n",
-                cmd.semaphore_addr, cmd.op, cmd.lock_key);
-    *res = cmd.lock_key;
-    *is_leaseable = (int)cmd.is_lease;
-    *lease_time_exp = cmd.lease_time_exponent;
-    return rc;
-#else
-    (void)mf;
-    (void)op;
-    (void)sem_addr;
-    (void)lock_key;
-    (void)res;
-    (void)is_leaseable;
-    (void)lease_time_exp;
-    (void)method;
-    return 1;
-#endif
-}
-
-int mib_semaphore_lock_is_supported(mfile* mf)
-{
-#ifndef NO_INBAND
-    u_int8_t mad_data[IB_SMP_DATA_SIZE] = {0};
-    struct semaphore_lock_cmd cmd;
-    memset(&cmd, 0, sizeof(cmd));
-    mib_smp_get(mf, mad_data, SMP_SEMAPHOE_LOCK_CMD, 0);
-    semaphore_lock_cmd_unpack(&cmd, mad_data);
-    DBG_PRINTF("###### QUERY #####\n# MAX_SEM_ADDR: 0x%x\n#################\n", cmd.semaphore_max_addr);
-    if (cmd.semaphore_max_addr > 0) {
-        return 1;
-    } else {
-        return 0;
-    }
-#else
-    (void)mf;
-    return 1;
-#endif
-}
diff --git a/mtcr_ul/mtcr_ib_res_mgt.h b/mtcr_ul/mtcr_ib_res_mgt.h
deleted file mode 100644 (file)
index d03bb33..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef _MTCR_IB_RES_MGT_H_
-#define _MTCR_IB_RES_MGT_H_
-
-#include <mtcr.h>
-
-typedef enum {
-    SMP_SEM_LOCK = 1,
-    SMP_SEM_EXTEND,
-    SMP_SEM_RELEASE
-} sem_op_t;
-
-typedef enum {
-    SEM_LOCK_GET = 0x0,
-    SEM_LOCK_SET = 0x1
-} sem_lock_method_t;
-
-MTCR_API int mib_semaphore_lock_vs_mad(
-        mfile* mf,
-        sem_op_t op,
-        u_int32_t sem_addr,
-        u_int32_t lock_key,
-        u_int32_t* res,
-        int* is_leaseable,
-        u_int8_t* lease_time_exp,
-        sem_lock_method_t method);
-
-MTCR_API int mib_semaphore_lock_is_supported(mfile* mf);
-
-#endif
diff --git a/mtcr_ul/mtcr_icmd_cif.h b/mtcr_ul/mtcr_icmd_cif.h
deleted file mode 100644 (file)
index a3cad36..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef _MTCR_ICMD_CIF     /* guard */
-#define _MTCR_ICMD_CIF
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <compatibility.h>
-#include <mtcr.h>
-#ifdef MST_UL
-#include "mtcr_mf.h"
-#include <mtcr_int_defs.h>
-#endif
-
-
-/* --------- Typedefs & Constants ---------------------------------- */
-
-#define IN
-#define OUT
-#define INOUT
-
-#define FLASH_REG_ACCESS       0x9001
-#define ICMD_MAX_CMD_SIZE   0x300 // max mailbox size
-
-/* --------- Functional API ---------------------------------------- */
-/**
- * Create a device-context for the command-interface of a ConnectIB device.
- * @param[in] mf    Open mfile to the desired device.
- * @return          zero value on success, non zero value on failure.
- **/
-int icmd_open(mfile *mf);
-
-/**
- * Close an open device-context for the command-interface of a
- * ConnectIB device.
- * @param[in] dev   A pointer to a device context, previously
- *                  obtained by a call to <tt>gcif_open</tt>.
- **/
-void icmd_close(mfile *mf);
-
-/**
- * Handles the send command procedure.
- * for completeness, but calling it is strongly advised against.
- * @param[in] dev   A pointer to a device context, previously
- *                  obtained by a call to <tt>gcif_open</tt>.
- * @return          One of the GCIF_STATUS_* values, or a raw
- *                  status value (as indicated in cr-space).
- **/
-int icmd_send_command_int(mfile     *mf,
-                      IN    int     opcode,
-                      INOUT void*   data,
-                      IN    int     write_data_size,
-                      IN    int     read_data_size,
-                      IN    int     skip_write);
-
-/**
- * Take the Tools-HCR semaphore. This functionality is provided
- * for completeness, but calling it is strongly advised against.
- * @param[in] dev   A pointer to a device context, previously
- *                  obtained by a call to <tt>gcif_open</tt>.
- * @return          One of the GCIF_STATUS_* values, or a raw
- *                  status value (as indicated in cr-space).
- **/
-int icmd_take_semaphore(mfile *mf);
-
-#undef IN
-#undef OUT
-#undef INOUT
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* _MTCR_ICMD_CIF guard */
diff --git a/mtcr_ul/mtcr_int_defs.h b/mtcr_ul/mtcr_int_defs.h
deleted file mode 100644 (file)
index 09c75cc..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef MTCR_INT_DEFS
-#define MTCR_INT_DEFS
-
-#include "mtcr_com_defs.h"
-
-typedef int (*f_mread4)        (mfile *mf, unsigned int offset, u_int32_t *value);
-typedef int (*f_mwrite4)       (mfile *mf, unsigned int offset, u_int32_t  value);
-typedef int (*f_mread4_block)  (mfile *mf, unsigned int offset, u_int32_t* data, int byte_len);
-typedef int (*f_mwrite4_block) (mfile *mf, unsigned int offset, u_int32_t* data, int byte_len);
-typedef int (*f_maccess_reg)   (mfile *mf, u_int8_t *data);
-typedef int (*f_mclose)        (mfile* mf);
-
-typedef struct ul_ctx {
-    int              fdlock;
-    /* Hermon WA */
-    int              connectx_flush; /* For ConnectX A0 */
-    int              need_flush; /* For ConnectX A0 */
-
-    f_mread4         mread4;
-    f_mwrite4        mwrite4;
-    f_mread4_block   mread4_block;
-    f_mwrite4_block  mwrite4_block;
-    f_maccess_reg    maccess_reg;
-    f_mclose         mclose;
-
-    /******** RESERVED FIELDS FOR SWITCHING METHOD IF NEEDED ******/
-    int              res_access_type;
-    int              res_fdlock;
-    f_mread4         res_mread4;
-    f_mwrite4        res_mwrite4;
-    f_mread4_block   res_mread4_block;
-    f_mwrite4_block  res_mwrite4_block;
-    /*************************************************************/
-} ul_ctx_t;
-#endif
-
-
-
diff --git a/mtcr_ul/mtcr_tools_cif.c b/mtcr_ul/mtcr_tools_cif.c
deleted file mode 100644 (file)
index 926054f..0000000
+++ /dev/null
@@ -1,550 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <bit_slice.h>
-#include <common/tools_utils.h>
-
-#include "mtcr_tools_cif.h"
-#include "mtcr_mf.h"
-
-#define TOOLS_HCR_ADDR      0x80780
-#define CR_MBOX_ADDR        0xe0000
-#define CMD_IF_SIZE         28
-#define CMD_IF_WAIT_GO         2000
-
-#define TOOLS_HCR_SEM          0xf03bc // sem47
-#define TOOLS_SEM_TRIES                1024     // Number of tries to obtain a TOOLS sem.
-
-#define MBOX_WRITE_OP          0x70
-#define MBOX_READ_OP           0x71
-#define REG_ACCESS_OP          0x3b
-
-#define MREAD4_ADV(offs, val_ptr, action_on_fail)   do {\
-                                                if (mread4 (mf, offs, val_ptr) != 4) { \
-                                                    /*fprintf(stderr, "-E- Cr read (0x%08x) failed: %s(%d)\n", (u_int32_t)(offs), strerror(errno), (u_int32_t)errno);*/ \
-                                                    action_on_fail;\
-                                                }\
-                                                /*printf("-D- %s:%d mread4: offs = %#x, val = %#x\n", __FUNCTION__, __LINE__, offs, val);*/\
-                                            } while (0)
-
-#define MWRITE4_ADV(offs, val, action_on_fail)  do {\
-                                                if (mwrite4(mf, offs, val) != 4) { \
-                                                /*fprintf(stderr, "-E- Cr write (0x%08x, 0x%08x) failed: %s(%d)\n", (u_int32_t)(offs), (u_int32_t)(val), strerror(errno), (u_int32_t)errno);*/ \
-                                                action_on_fail;\
-                                                }\
-                                                /*printf("-D- %s:%d mwrite4: offs = %#x, val = %#x\n",   __FUNCTION__, __LINE__, offs, val);*/ \
-                                            } while (0)
-#define MREAD4(offs, val_ptr) MREAD4_ADV(offs, val_ptr, return ME_CR_ERROR)
-#define MWRITE4(offs, val) MWRITE4_ADV(offs, val, return ME_CR_ERROR)
-
-
-#define TOCPUn(s, n) do {                                          \
-       u_int32_t ii;                                                                                                   \
-    u_int32_t *p = (u_int32_t *)(s);                               \
-    for (ii=0; ii<(n); ii++,p++)                         \
-        *p = __be32_to_cpu(*p);                                    \
-    } while(0)
-
-#if __BYTE_ORDER == __BIG_ENDIAN
-
-#define SWAP_DW_BE(uint64_num)\
-    (((uint64_num) & 0xffffffffULL) << 32) | (((uint64_num) >> 32) & 0xffffffffULL)
-
-#else
-#define SWAP_DW_BE(uint64_num) (uint64_num)
-#endif
-
-typedef struct tools_cmdif_t {
-    u_int32_t in_param_h;
-    u_int32_t in_param_l;
-    u_int32_t out_param_h;
-    u_int32_t out_param_l;
-    u_int32_t input_modifier;
-    u_int16_t token;
-    u_int16_t opcode;
-    u_int8_t  opcode_modifier;
-    u_int8_t  t;
-    u_int8_t  e;
-    u_int8_t  go;
-    u_int8_t  status;
-} tools_cmdif;
-
-
-static int translate_status(int status) {
-    switch (status) {
-    case 0x0:
-        return ME_OK;
-    case 0x1:
-        return ME_CMDIF_BUSY;
-    case 0x2:
-        return ME_CMDIF_BAD_OP;
-    case 0x3:
-        return ME_CMDIF_UNKN_TLV;
-    case 0x4:
-        return ME_CMDIF_BAD_SYS;
-    case 0x9:
-        return ME_CMDIF_RES_STATE;
-    default:
-        //printf("-D- Unknown status: 0x%x\n", status);
-        return ME_CMDIF_UNKN_STATUS;
-    }
-}
-
-extern void mpci_change(mfile* mf);
-
-static void tools_cmdif_pack(tools_cmdif* cmd, u_int32_t* buf) {
-    memset((char*)buf, 0, CMD_IF_SIZE);
-    buf[0] = cmd->in_param_h;
-    buf[1] = cmd->in_param_l;
-    buf[2] = cmd->input_modifier;
-    // out h
-    // out l
-    buf[5] = MERGE(buf[5], cmd->token,               16, 16);
-    buf[6] = MERGE(buf[6], cmd->opcode,               0, 12);
-    buf[6] = MERGE(buf[6], cmd->opcode_modifier,     12,  4);
-    buf[6] = MERGE(buf[6], cmd->e,                   22,  1);
-}
-
-static void tools_cmdif_unpack(tools_cmdif* cmd, u_int32_t* buf) {
-    memset(cmd, 0, sizeof(tools_cmdif));
-
-    cmd->in_param_h       = buf[0];
-    cmd->in_param_l       = buf[1];
-
-    cmd->input_modifier = buf[2];
-    cmd->out_param_h      = buf[3];
-    cmd->out_param_l      = buf[4];
-    cmd->opcode         = EXTRACT(buf[6], 0, 12);
-    cmd->opcode_modifier= EXTRACT(buf[6], 12, 4);
-    cmd->status         = EXTRACT(buf[6], 24, 8);
-}
-
-static int tools_cmdif_flash_lock(mfile* mf, int lock_state) {
-    // Obtain Semaphore
-    u_int32_t cnt=0;
-    u_int32_t word;
-    if (lock_state) {
-        do {
-            if (++cnt > TOOLS_SEM_TRIES) {
-                //printf("-E- Can not obtain Flash semaphore");
-                return ME_SEM_LOCKED;
-            }
-            MREAD4(TOOLS_HCR_SEM, &word);
-            if (word) {
-                msleep(rand() % 5);
-            }
-        } while (word);
-    } else {
-        MWRITE4(TOOLS_HCR_SEM, 0);
-    }
-
-    return ME_OK;
-}
-
-int tools_cmdif_unlock_semaphore(mfile *mf) {
-    return tools_cmdif_flash_lock(mf, 0);
-}
-
-static int tools_cmdif_wait_go(mfile* mf, int* retries)
-{
-    int i;
-    u_int8_t go_bit;
-    int wait=1;
-
-    for (i = 0; i < CMD_IF_WAIT_GO; i++) {
-        u_int32_t word;
-        MREAD4(TOOLS_HCR_ADDR + CMD_IF_SIZE - 4, &word);
-        go_bit = EXTRACT(word, 23, 1);
-        if (!go_bit) {
-            if (retries) {
-                *retries = i;
-            }
-            return 0;
-        }
-        if (i > 5) { // after some iteration put sleeps bwtween busy-wait
-               msleep(wait);  // don't hog the cpu with busy-wait
-               if (wait < 8) {
-                       wait *= 2;    // exponential backoff - up-to 8ms between polls
-               }
-        }
-    }
-    return ME_CMDIF_BUSY;
-}
-
-static int tools_cmdif_send_cmd_int(mfile* mf, tools_cmdif* cmd)
-{
-    u_int32_t raw_cmd[CMD_IF_SIZE/4];
-    int act_retries;
-    int rc;
-
-    // Check if the go BIT is ready
-    rc = tools_cmdif_wait_go(mf, NULL);
-    if (rc) {
-        //printf("tools_cmdif_send: GO bit set before command issued (rc=%d)\n", rc);
-        return ME_CMDIF_BUSY;
-    }
-    // Prepare the date of the command we're gonna execute
-    tools_cmdif_pack(cmd, raw_cmd);
-    if (mwrite4_block(mf, TOOLS_HCR_ADDR, raw_cmd, CMD_IF_SIZE) != CMD_IF_SIZE) {
-        return ME_CR_ERROR;
-    }
-
-    raw_cmd[6] = MERGE(raw_cmd[6],      1,                   23,  1); // go
-    MWRITE4(TOOLS_HCR_ADDR + 24, raw_cmd[6]);
-
-    rc = tools_cmdif_wait_go(mf, &act_retries);
-
-    if (rc) {
-        return ME_CMDIF_TOUT;
-    }
-
-    if (mread4_block(mf, TOOLS_HCR_ADDR, raw_cmd, CMD_IF_SIZE) != CMD_IF_SIZE) {
-        return ME_CR_ERROR;
-    }
-
-    tools_cmdif_unpack(cmd, raw_cmd);
-
-    if (cmd->status) {
-        //printf("-E- CMD IF Bad status. Op: 0x%x Status: 0x%x\n", cmd->opcode, cmd->status);
-        return ME_CMDIF_BAD_STATUS; // TODO - Special return code here - needs a specific attention
-    }
-    return ME_OK;
-}
-
-int tools_cmdif_send_inline_cmd_int(mfile* mf,
-                                        u_int32_t in_param[2],
-                                        u_int32_t out_param[2],
-                                        u_int32_t input_modifier,
-                                        u_int16_t opcode,
-                                        u_int8_t  opcode_modifier)
-{
-    if (!mf) {
-        return ME_BAD_PARAMS;
-    }
-    tools_cmdif cmdif;
-    memset(&cmdif, 0, sizeof(tools_cmdif));
-    cmdif.in_param_l = in_param[0];
-    cmdif.in_param_h = in_param[1];
-    cmdif.input_modifier = input_modifier;
-    cmdif.opcode = opcode;
-    cmdif.opcode_modifier = opcode_modifier;
-
-    //take semaphore
-    mpci_change(mf);
-    if (tools_cmdif_flash_lock(mf, 1)) {
-        mpci_change(mf);
-        return ME_SEM_LOCKED;
-    }
-    int rc = tools_cmdif_send_cmd_int(mf, &cmdif);
-    // release it
-    tools_cmdif_flash_lock(mf, 0);
-    mpci_change(mf);
-    if (out_param) {
-        out_param[0] = cmdif.out_param_l;
-        out_param[1] = cmdif.out_param_h;
-    }
-    if (rc || cmdif.status) {
-        return (rc != ME_CMDIF_BAD_STATUS) ? rc : translate_status(cmdif.status);
-    }
-       return rc;
-}
-
-int tools_cmdif_send_inline_cmd(mfile* mf,
-                     u_int64_t in_param,
-                     u_int64_t* out_param,
-                     u_int32_t input_modifier,
-                     u_int16_t opcode,
-                     u_int8_t  opcode_modifier)
-{
-    int rc;
-    in_param = SWAP_DW_BE(in_param);
-    rc = tools_cmdif_send_inline_cmd_int(mf, (u_int32_t*)((u_int8_t*)&in_param), (u_int32_t*)out_param, input_modifier, opcode, opcode_modifier);
-    if (out_param) {
-        *out_param = SWAP_DW_BE(*out_param);
-    }
-    return rc;
-}
-
-// read from mailbox method. output[2] is in BigEndian
-static int tools_cmdif_mbox_read(mfile* mf, u_int32_t offset, u_int32_t output[2])
-{
-       if (!mf || (offset & 0x1) != 0 || !output) {// offset should be quad word alligned (i.e only even dwords)
-               return ME_BAD_PARAMS;
-       }
-       tools_cmdif cmdif;
-       memset(&cmdif, 0, sizeof(tools_cmdif));
-       //printf("-D- offset: 0x%x\n", offset>>2);
-       cmdif.input_modifier = offset; // offset is in dwords
-       cmdif.opcode = MBOX_READ_OP;
-
-       int rc = tools_cmdif_send_cmd_int(mf, &cmdif);
-    // swap endianess because tools_cmdif_send_cmd_int returns output in CPU endianess
-       output[0] = __be32_to_cpu(cmdif.out_param_l);
-       output[1] = __be32_to_cpu(cmdif.out_param_h);
-       if (rc || cmdif.status) {
-               return (rc != ME_CMDIF_BAD_STATUS) ? rc : translate_status(cmdif.status);
-       }
-       //printf("-D- mbox read OK\n");
-       return ME_OK;
-}
-
-// write to mailbox method. input[2] is in BigEndian
-static int tools_cmdif_mbox_write(mfile* mf, u_int32_t offset, u_int32_t input[2])
-{
-       if (!mf || (offset & 0x1) != 0) {// offset should be quad word alligned (i.e only even dwords)
-               return ME_BAD_PARAMS;
-       }
-       tools_cmdif cmdif;
-       memset(&cmdif, 0, sizeof(tools_cmdif));
-       // swap endianess because tools_cmdif_send_cmd_int assumes input in CPU endianess
-       cmdif.in_param_l = __be32_to_cpu(input[0]);
-       cmdif.in_param_h = __be32_to_cpu(input[1]);
-       cmdif.input_modifier = offset; // offset is in dwords
-       cmdif.opcode = MBOX_WRITE_OP;
-       int rc = tools_cmdif_send_cmd_int(mf, &cmdif);
-
-       if (rc || cmdif.status) {
-               return (rc != ME_CMDIF_BAD_STATUS) ? rc : translate_status(cmdif.status);
-       }
-       return ME_OK;
-}
-
-static int tools_cmdif_cr_mbox_write(mfile* mf, u_int32_t offset, u_int8_t* data, int size)
-{
-    if (!mf || !data || (offset + size > TOOLS_HCR_MAX_MBOX)) {
-        return ME_BAD_PARAMS;
-    }
-    if (mwrite_buffer(mf,CR_MBOX_ADDR + offset, data, size) != size) {
-        return ME_CR_ERROR;
-    }
-    return ME_OK;
-}
-
-static int tools_cmdif_cr_mbox_read(mfile* mf, u_int32_t offset, u_int8_t* data, int size)
-{
-    if (!mf || !data || (offset + size > TOOLS_HCR_MAX_MBOX)) {
-        return ME_BAD_PARAMS;
-    }
-    if (mread_buffer(mf, CR_MBOX_ADDR + offset, data, size) != size) {
-        return ME_CR_ERROR;
-    }
-    return ME_OK;
-}
-
-int tools_cmdif_is_supported(mfile *mf)
-{
-    int rc = ME_OK;
-    // run mailbox write cmd (read command fails after driver restart or internal reset)
-    u_int32_t writebuf[2] = {0};
-    if (!mf) {
-        return ME_BAD_PARAMS;
-    }
-    mpci_change(mf);
-    // take semaphore
-    if (tools_cmdif_flash_lock(mf, 1)) {
-        rc = ME_SEM_LOCKED;
-        goto cleanup;
-    }
-    rc = tools_cmdif_mbox_write(mf, 0, writebuf);
-    if (rc) {
-        tools_cmdif_flash_lock(mf, 0);
-        goto cleanup;
-    }
-    tools_cmdif_flash_lock(mf, 0);
-cleanup:
-    mpci_change(mf);
-    return rc;
-}
-
-#define MAGIC 0xbadb00f
-int tools_cmdif_is_cr_mbox_supported(mfile *mf)
-{
-    int rc;
-    u_int32_t val = 0;
-    mpci_change(mf);
-    if ((rc = tools_cmdif_flash_lock(mf, 1))) {
-       goto cleanup_no_sem;
-    }
-    // attempt to write/read from cr-mbox
-    MWRITE4_ADV(CR_MBOX_ADDR, MAGIC, rc = ME_CR_ERROR; goto cleanup);
-    MREAD4_ADV(CR_MBOX_ADDR, &val, rc = ME_CR_ERROR; goto cleanup);
- cleanup:
-    tools_cmdif_flash_lock(mf, 0);
-cleanup_no_sem:
-    mpci_change(mf);
-    if (rc) {
-        return rc;
-    }
-    return val == MAGIC ? ME_OK : ME_CMDIF_NOT_SUPP;
-}
-
-#define COMPLEMENT_TO_QUAD_ALLIGNED(byte_sz) \
-        ((byte_sz) + ((8 - ((byte_sz) & 7) == 8) ? 0 : (8 - ((byte_sz) & 7))))
-
-int tools_cmdif_send_mbox_command_int(mfile* mf,
-                                           u_int32_t input_modifier,
-                                           u_int16_t opcode,
-                                           u_int8_t  opcode_modifier,
-                                           int data_offs_in_mbox,
-                                           void* data,
-                                           int write_data_size,
-                                           int read_data_size,
-                                           int skip_write,
-                                           int use_cr_mbox)
-{
-    int read_data_size_quad_alligned =  COMPLEMENT_TO_QUAD_ALLIGNED(read_data_size);
-    int write_data_size_quad_alligned =  COMPLEMENT_TO_QUAD_ALLIGNED(write_data_size);
-    int rc,
-        i;
-    /*printf("-D- opcode: 0x%x, opcode mod: 0x%x, data_offs_in_mbox: 0x%x, write_data_size: 0x%x(0x%x), read_data_size 0x%x(0x%x), skip_write: %d\n",\
-               opcode, opcode_modifier, data_offs_in_mbox, write_data_size, write_data_size_quad_alligned, read_data_size, read_data_size_quad_alligned, skip_write);*/
-    // check params
-    if (!mf || !data || data_offs_in_mbox < 0 || (data_offs_in_mbox & 7) != 0 || \
-            data_offs_in_mbox + read_data_size_quad_alligned > TOOLS_HCR_MAX_MBOX || \
-            data_offs_in_mbox + write_data_size_quad_alligned > TOOLS_HCR_MAX_MBOX) {
-        return ME_BAD_PARAMS;
-    }
-    mpci_change(mf);
-    //take semaphore
-    if (tools_cmdif_flash_lock(mf, 1)) {
-        mpci_change(mf);
-        return ME_SEM_LOCKED;
-    }
-
-    // write to mailbox if needed
-    u_int8_t mailbox[TOOLS_HCR_MAX_MBOX] = {0};
-    if (!skip_write) {
-        // place the data inside 256 bytes buffer (init with zeroes) and write the entire buffer to mbox
-        // it is required in the TOOLS_HCR HLD to write the ENTIRE MBOX
-
-        memcpy(&(mailbox[data_offs_in_mbox]), data, write_data_size);
-
-        if (use_cr_mbox == 1) {
-            //write mbox to virtual cr-space
-            rc = tools_cmdif_cr_mbox_write(mf, 0x0, mailbox, TOOLS_HCR_MAX_MBOX);
-            if (rc) {
-                goto cleanup;
-            }
-        } else {
-            int i;
-            for (i=0 ; i< TOOLS_HCR_MAX_MBOX; i+=8) { // it is required to write in quad word chunks
-                rc = tools_cmdif_mbox_write(mf, i/4, (u_int32_t*)&mailbox[i]);
-                if (rc) {
-                    goto cleanup;
-                }
-            }
-        }
-    }
-    // send cmd
-    tools_cmdif cmdif;
-    memset(&cmdif, 0, sizeof(tools_cmdif));
-    cmdif.opcode = opcode;
-    cmdif.opcode_modifier = opcode_modifier;
-    cmdif.input_modifier = input_modifier;
-    rc = tools_cmdif_send_cmd_int(mf, &cmdif);
-
-    if (rc || cmdif.status) {
-        if (rc == ME_CMDIF_BAD_STATUS) {
-            rc = translate_status(cmdif.status); // means that driver is down or we dont support the extended version of tools hcr.
-        }
-        goto cleanup;
-    }
-    // read from mbox
-    // read read_data_size bytes from mbox and update our data
-     if (use_cr_mbox == 1) {
-         // read mailbox from virtual CR-space
-         rc = tools_cmdif_cr_mbox_read(mf, data_offs_in_mbox, &mailbox[data_offs_in_mbox], read_data_size_quad_alligned);
-         if (rc) {
-             goto cleanup;
-         }
-     } else {
-         for (i = data_offs_in_mbox ; i< (data_offs_in_mbox + read_data_size_quad_alligned); i+=8) { // it is required to write in quad word chunks (64bits each time)
-             rc = tools_cmdif_mbox_read(mf, i/4, (u_int32_t*)&(mailbox[i]));
-             if (rc) {
-                 goto cleanup;
-             }
-         }
-     }
-    // copy data back to user
-    memcpy(data, &(mailbox[data_offs_in_mbox]), read_data_size);
-    rc = ME_OK;
-cleanup:
-    tools_cmdif_flash_lock(mf, 0);
-    mpci_change(mf);
-    return rc;
-}
-
-
-int tools_cmdif_reg_access(mfile *mf, void* data, int write_data_size, int read_data_size)
-{
-    int rc;
-    if (mf->hcr_params.supp_cr_mbox == 0) {
-        rc = tools_cmdif_is_cr_mbox_supported(mf);
-        if (rc == ME_OK) {
-            mf->hcr_params.supp_cr_mbox = 1;
-        } else if (rc == ME_CMDIF_NOT_SUPP) {
-            mf->hcr_params.supp_cr_mbox = -1;
-        } else {
-            // CR error or Semaphore locked
-            return rc;
-        }
-    }
-    if (mf->hcr_params.supp_cr_mbox == 1) {
-        rc = tools_cmdif_send_mbox_command_int(mf, 1, REG_ACCESS_OP, 0, \
-                0, data, write_data_size, read_data_size, 0, 1);
-    } else {
-        rc = tools_cmdif_send_mbox_command_int(mf, 0, REG_ACCESS_OP, 0, \
-                0, data, write_data_size, read_data_size, 0, 0);
-    }
-    return rc;
-}
-
-
-int tools_cmdif_send_mbox_command(mfile* mf,
-                                           u_int32_t input_modifier,
-                                           u_int16_t opcode,
-                                           u_int8_t  opcode_modifier,
-                                           int data_offs_in_mbox,
-                                           void* data,
-                                           int data_size,
-                                           int skip_write)
-{
-
-    return tools_cmdif_send_mbox_command_int(mf, input_modifier, opcode, opcode_modifier, \
-                                             data_offs_in_mbox, data, data_size,\
-                                             data_size, skip_write, 0);
-}
-
diff --git a/mtcr_ul/mtcr_tools_cif.h b/mtcr_ul/mtcr_tools_cif.h
deleted file mode 100644 (file)
index 7654432..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef _MTCR_TOOLS_CIF     /* guard */
-#define _MTCR_TOOLS_CIF
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#include <compatibility.h>
-#include <mtcr.h>
-
-#define FLASH_REG_ACCESS       0x9001
-
-#define TOOLS_HCR_MAX_MBOX 288
-
-// tools flash semaphore (62) will be taken at the begining of each command specified here
-// and released at the end of the command.
-
-
-/*
- * register access tools HCR
- *
- * data:                       the raw register data
- * write_data_size:    amount of data to write to the mailbox (rest assumed to be zero)
- * read_data_size:     amount of data to be read from the mailbox
- *
- * data will contain the updated register.
- */
-
-int tools_cmdif_reg_access(mfile *mf, void* data,int write_data_size, int read_data_size);
-
-/*
- * tools_cmdif_is_supported tools HCR
- *
- * check if sending registers via tools HCR is supported
- *
- */
-MTCR_API int tools_cmdif_is_supported(mfile *mf);
-MTCR_API int tools_cmdif_is_cr_mbox_supported(mfile *mf);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* _MTCR_TOOLS_CIF guard */
diff --git a/mtcr_ul/mtcr_ul.c b/mtcr_ul/mtcr_ul.c
deleted file mode 100644 (file)
index dddd1b5..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- *
- * Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  mtcr_ul.c - Mellanox Hardware Access implementation
- *
- */
-
-#include <mtcr_ul_com.h>
-#include <mtcr_ib.h>
-#include <errno.h>
-#include <common/tools_utils.h>
-#include <stdlib.h>
-
-int mread4(mfile *mf, unsigned int offset, u_int32_t *value)
-{
-    return mread4_ul(mf, offset, value);
-}
-
-int mwrite4(mfile *mf, unsigned int offset, u_int32_t value)
-{
-    return mwrite4_ul(mf, offset, value);
-}
-
-int mread4_block(mfile *mf, unsigned int offset, u_int32_t* data, int byte_len)
-{
-    return mread4_block_ul(mf, offset, data, byte_len);
-}
-
-int mwrite4_block(mfile *mf, unsigned int offset, u_int32_t* data, int byte_len)
-{
-    return mwrite4_block_ul(mf, offset, data, byte_len);
-}
-
-int msw_reset(mfile *mf)
-{
-#ifndef NO_INBAND
-    switch (mf->tp) {
-        case MST_IB:
-            return mib_swreset(mf);
-        default:
-            errno = EPERM;
-            return -1;
-    }
-#else
-    (void)mf;
-    return -1;
-#endif
-}
-
-int mhca_reset(mfile *mf)
-{
-    (void) mf;
-    errno = ENOTSUP;
-    return -1;
-}
-
-int mdevices(char *buf, int len, int mask)
-{
-    return mdevices_ul(buf, len, mask);
-}
-
-
-dev_info* mdevices_info(int mask, int* len)
-{
-    return mdevices_info_ul(mask, len);
-}
-
-void mdevices_info_destroy(dev_info* dev_info, int len)
-{
-    int i, j;
-    if (dev_info) {
-        for (i = 0; i < len; i++) {
-            if (dev_info[i].type == MDEVS_TAVOR_CR &&
-                dev_info[i].pci.ib_devs) {
-                for (j = 0; dev_info[i].pci.ib_devs[j]; j++) {
-                    if (dev_info[i].pci.ib_devs[j]) {
-                        free(dev_info[i].pci.ib_devs[j]);
-                    }
-                }
-                free(dev_info[i].pci.ib_devs);
-            }
-            if (dev_info[i].type == MDEVS_TAVOR_CR &&
-                dev_info[i].pci.net_devs) {
-                for (j = 0; dev_info[i].pci.net_devs[j]; j++) {
-                    if (dev_info[i].pci.net_devs[j]) {
-                        free(dev_info[i].pci.net_devs[j]);
-                    }
-                }
-                free(dev_info[i].pci.net_devs);
-            }
-
-        }
-        free(dev_info);
-    }
-}
-
-mfile *mopen(const char *name)
-{
-    return mopen_ul(name);
-}
-
-mfile *mopend(const char *name, int type)
-{
-    if (type != 1) {
-        return NULL;
-    }
-    return mopen(name);
-}
-
-int mclose(mfile *mf)
-{
-    return mclose_ul(mf);
-}
-
-mfile *mopen_adv(const char *name, MType mtype)
-{
-    mfile* mf = mopend(name, MST_TAVOR);
-    if (mf) {
-        if (mf->tp & mtype) {
-            return mf;
-        } else {
-            errno = EPERM;
-            mclose(mf);
-            return NULL;
-        }
-    }
-    return mf;
-}
-
-mfile *mopen_fw_ctx(void* fw_cmd_context, void* fw_cmd_func, void* extra_data)
-{
-    // not implemented
-    TOOLS_UNUSED(fw_cmd_context);
-    TOOLS_UNUSED(fw_cmd_func);
-    TOOLS_UNUSED(extra_data);
-    return NULL;
-}
-
-unsigned char mset_i2c_slave(mfile *mf, unsigned char new_i2c_slave)
-{
-    (void) mf;
-    (void) new_i2c_slave; /* compiler warning */
-    fprintf(stderr, "Warning: libmtcr: mset_i2c_slave() is not implemented and has no effect.\n");
-    return 0;
-}
-
-
-
-int maccess_reg_mad(mfile *mf, u_int8_t *data)
-{
-    return maccess_reg_mad_ul(mf, data);
-}
-
-int mos_reg_access(mfile *mf, int reg_access, void *reg_data, u_int32_t cmd_type)
-{
-    (void) mf;
-    (void) reg_data; /* compiler warning */
-    (void) cmd_type; /* compiler warning */
-    (void) reg_access; /* compiler warning */
-    fprintf(stderr, "Warning: libmtcr: mos_reg_access() is not implemented and has no effect.\n");
-    return ME_NOT_IMPLEMENTED;
-}
-
-int maccess_reg_cmdif(mfile *mf, reg_access_t reg_access, void *reg_data, u_int32_t cmd_type)
-{
-    (void) mf;
-    (void) reg_data; /* compiler warning */
-    (void) cmd_type; /* compiler warning */
-    (void) reg_access; /* compiler warning */
-    fprintf(stderr, "Warning: libmtcr: maccess_reg_cmdif() is not implemented and has no effect.\n");
-    return ME_NOT_IMPLEMENTED;
-}
-
-int mread_buffer(mfile *mf, unsigned int offset, u_int8_t* data, int byte_len)
-{
-    return mread_buffer_ul(mf, offset, data, byte_len);
-}
-
-int mwrite_buffer(mfile *mf, unsigned int offset, u_int8_t* data, int byte_len)
-{
-    return mwrite_buffer_ul(mf, offset, data, byte_len);
-}
-
-int maccess_reg(mfile *mf, u_int16_t reg_id, maccess_reg_method_t reg_method, void* reg_data, u_int32_t reg_size,
-        u_int32_t r_size_reg, u_int32_t w_size_reg, int *reg_status)
-{
-    return maccess_reg_ul(mf, reg_id, reg_method, reg_data, reg_size, r_size_reg, w_size_reg, reg_status);
-}
-
-int mget_max_reg_size(mfile *mf)
-{
-    return mget_max_reg_size_ul(mf);
-}
-
-int mget_vsec_supp(mfile* mf)
-{
-    return mf->vsec_supp;
-}
-
-MTCR_API int mget_addr_space(mfile* mf)
-{
-    return mf->address_space;
-}
-MTCR_API int mset_addr_space(mfile* mf, int space)
-{
-    switch (space) {
-        case AS_CR_SPACE:
-        case AS_ICMD:
-        case AS_SEMAPHORE:
-            break;
-        default:
-            return -1;
-    }
-    mf->address_space = space;
-    return 0;
-}
-
-int mget_mdevs_flags(mfile *mf, u_int32_t *devs_flags)
-{
-    if (mf == NULL || devs_flags == NULL) {
-        errno = EINVAL;
-        return 1;
-    }
-
-    *devs_flags = mf->flags;
-    return 0;
-}
-
-int mget_mdevs_type(mfile *mf, u_int32_t *mtype)
-{
-    if (mf == NULL || mtype == NULL) {
-        errno = EINVAL;
-        return 1;
-    }
-
-    *mtype = mf->tp;
-    return 0;
-}
-
-int mclear_pci_semaphore(const char* name)
-{
-    return mclear_pci_semaphore_ul(name);
-}
-
diff --git a/mtcr_ul/mtcr_ul_com.c b/mtcr_ul/mtcr_ul_com.c
deleted file mode 100644 (file)
index ea0ac9b..0000000
+++ /dev/null
@@ -1,2506 +0,0 @@
-/*
- *
- * Copyright (c) 2013 Mellanox Technologies Ltd.  All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- *  mtcr_ul.c - Mellanox Hardware Access implementation
- *
- */
-
-//use memory mapped /dev/mem for access
-#define CONFIG_ENABLE_MMAP 1
-//mmap /dev/mem for memory access (does not work on sparc)
-#define CONFIG_USE_DEV_MEM 1
-//use pci configuration cycles for access
-#define CONFIG_ENABLE_PCICONF 1
-
-#ifndef _XOPEN_SOURCE
-#if CONFIG_ENABLE_PCICONF && CONFIG_ENABLE_MMAP
-/* For strerror_r */
-#define _XOPEN_SOURCE 600
-#elif CONFIG_ENABLE_PCICONF
-#define _XOPEN_SOURCE 500
-#endif
-#endif
-
-#if CONFIG_ENABLE_MMAP
-#define _FILE_OFFSET_BITS 64
-#endif
-
-#define MTCR_MAP_SIZE 0x100000
-
-#include <stdio.h>
-#include <dirent.h>
-#include <string.h>
-
-#include <unistd.h>
-
-#include <netinet/in.h>
-#include <endian.h>
-#include <byteswap.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-#include <stdlib.h>
-#include <libgen.h>
-#include <sys/file.h>
-
-#if CONFIG_ENABLE_MMAP
-#include <sys/mman.h>
-#include <sys/pci.h>
-#include <sys/ioctl.h>
-#endif
-
-#include <bit_slice.h>
-#include "tools_utils.h"
-#include "mtcr_ul_com.h"
-#include "mtcr_int_defs.h"
-#include "mtcr_ib.h"
-#include "packets_layout.h"
-#include "mtcr_tools_cif.h"
-#include "mtcr_icmd_cif.h"
-#ifndef MST_UL
-#include "../mtcr_mlnxos.h"
-#endif
-#ifndef __be32_to_cpu
-#define __be32_to_cpu(x) ntohl(x)
-#endif
-#ifndef __cpu_to_be32
-#define __cpu_to_be32(x) htonl(x)
-#endif
-
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#ifndef __cpu_to_le32
-#define  __cpu_to_le32(x) (x)
-#endif
-#ifndef __le32_to_cpu
-#define  __le32_to_cpu(x) (x)
-#endif
-#elif __BYTE_ORDER == __BIG_ENDIAN
-#ifndef __cpu_to_le32
-#define  __cpu_to_le32(x) bswap_32(x)
-#endif
-#ifndef __le32_to_cpu
-#define  __le32_to_cpu(x) bswap_32(x)
-#endif
-#else
-#ifndef __cpu_to_le32
-#define  __cpu_to_le32(x) bswap_32(__cpu_to_be32(x))
-#endif
-#ifndef __le32_to_cpu
-#define  __le32_to_cpu(x) __be32_to_cpu(bswap_32(x))
-#endif
-#endif
-
-#define CX3_SW_ID    4099
-#define CX3PRO_SW_ID 4103
-
-typedef enum {
-    Clear_Vsec_Semaphore = 0x1,
-} adv_opt_t;
-
-/* Forward decl*/
-static int get_inband_dev_from_pci(char* inband_dev, char* pci_dev);
-int check_force_config(unsigned my_domain, unsigned my_bus, unsigned my_dev, unsigned my_func);
-mfile *mopen_ul_int(const char *name, u_int32_t adv_opt);
-int init_dev_info_ul(mfile* mf, const char* dev_name, unsigned domain, unsigned bus, unsigned dev, unsigned func);
-/*
- * Lock file section:
- *
- * in order to support concurrency on both MEMORY/CONFIG_CYCLES access methods
- * there is need for a sync mechanism between mtcr_ul using processes
- *
- * solution: each mfile obj shall contain a file descriptor linked to a unique, device determined file
- *           which will be used as a lock for the critical sections in read/write operations.
- *           these lock files will be created per device (dbdf format) AND per interface (memory/configuration cycles).
- */
-
-#define LOCK_FILE_DIR "/tmp/mstflint_lockfiles"
-#define LOCK_FILE_FORMAT "/tmp/mstflint_lockfiles/%04x:%02x:%02x.%x_%s"
-// lockfile example : /tmp/mstflint_lockfiles/0000:0b:00.0_config
-//                    /tmp/mstflint_lockfiles/0000:0b:00.0_mem
-// general format : /tmp/mstflint_lockfiles/<domain:bus:device.function>_<config|mem>
-#define CHECK_LOCK(rc) \
-    if(rc) {\
-        return rc;\
-    }
-
-#define MAX_RETRY_CNT 4096
-static int _flock_int(int fdlock, int operation)
-{
-    int cnt = 0;
-    if (fdlock == 0) { // in case we failed to create the lock file we ignore the locking mechanism
-        return 0;
-    }
-    do {
-        if (flock(fdlock, operation | LOCK_NB) == 0) {
-            return 0;
-        } else if (errno != EWOULDBLOCK) {
-            break; // BAD! lock/free failed
-        }
-        if ((cnt & 0xf) == 0) { // sleep every 16 retries
-            usleep(1);
-        }
-        cnt++;
-    } while (cnt < MAX_RETRY_CNT);
-    perror("failed to perform lock operation.");
-    return -1;
-
-}
-
-static int _create_lock(mfile* mf, unsigned domain, unsigned bus, unsigned dev, unsigned func)
-{
-    char fname[64] = { 0 };
-    int rc;
-    int fd = 0;
-    if (!(mf->ul_ctx)) {
-        goto cl_clean_up;
-    }
-    snprintf(fname, 64, LOCK_FILE_FORMAT, domain, bus, dev, func, mf->tp == MST_PCICONF ? "config" : "mem");
-    rc = mkdir("/tmp", 0777);
-    if (rc && errno != EEXIST) {
-        goto cl_clean_up;
-    }
-    rc = mkdir(LOCK_FILE_DIR, 0777);
-    if (rc && errno != EEXIST) {
-        goto cl_clean_up;
-    }
-
-    fd = open(fname, O_RDONLY | O_CREAT, 0777);
-    if (fd < 0) {
-        goto cl_clean_up;
-    }
-
-    ((ul_ctx_t*)mf->ul_ctx)->fdlock = fd;
-    return 0;
-
-cl_clean_up:
-    fprintf(stderr, "Warrning: Failed to create lockfile: %s (parallel access not supported)\n", fname);
-    return 0;
-}
-/*End of Lock file section */
-
-static int _extract_dbdf_from_full_name(const char *name, unsigned* domain, unsigned* bus, unsigned* dev,
-        unsigned* func)
-{
-    if (sscanf(name, "/sys/bus/pci/devices/%4x:%2x:%2x.%d/resource0", domain, bus, dev, func) == 4) {
-        return 0;
-    } else if (sscanf(name, "/sys/bus/pci/devices/%4x:%2x:%2x.%d/config", domain, bus, dev, func) == 4) {
-        return 0;
-    } else if (sscanf(name, "/proc/bus/pci/%4x:%2x/%2x.%d", domain, bus, dev, func) == 4) {
-        return 0;
-    } else if (sscanf(name, "/proc/bus/pci/%2x/%2x.%d", bus, dev, func) == 3) {
-        *domain = 0;
-        return 0;
-    }
-    // failed to extract dbdf format from name
-    errno = EINVAL;
-    return -1;
-}
-
-static int mtcr_connectx_flush(void *ptr, int fdlock)
-{
-    u_int32_t value;
-    int rc;
-    rc = _flock_int(fdlock, LOCK_EX);
-    CHECK_LOCK(rc);
-    *((u_int32_t *) ((char *) ptr + 0xf0380)) = 0x0;
-    do {
-        asm volatile ("":::"memory");
-        value = __be32_to_cpu(*((u_int32_t * )((char * )ptr + 0xf0380)));
-    } while (value);
-    rc = _flock_int(fdlock, LOCK_UN);
-    CHECK_LOCK(rc)
-    return 0;
-}
-
-int mread4_ul(mfile *mf, unsigned int offset, u_int32_t *value)
-{
-    ul_ctx_t* ctx = mf->ul_ctx;
-    return ctx->mread4(mf, offset, value);
-}
-
-int mwrite4_ul(mfile *mf, unsigned int offset, u_int32_t value)
-{
-    ul_ctx_t* ctx = mf->ul_ctx;
-    return ctx->mwrite4(mf, offset, value);
-}
-
-// TODO: Verify change 'data' type from void* to u_in32_t* does not mess up things
-static int mread_chunk_as_multi_mread4(mfile *mf, unsigned int offset, u_int32_t* data, int length)
-{
-    int i;
-    if (length % 4) {
-        return EINVAL;
-    }
-    for (i = 0; i < length; i += 4) {
-        u_int32_t value;
-        if (mread4_ul(mf, offset + i, &value) != 4) {
-            return -1;
-        }
-        memcpy((char*) data + i, &value, 4);
-    }
-    return length;
-}
-
-static int mwrite_chunk_as_multi_mwrite4(mfile *mf, unsigned int offset, u_int32_t* data, int length)
-{
-    int i;
-    if (length % 4) {
-        return EINVAL;
-    }
-    for (i = 0; i < length; i += 4) {
-        u_int32_t value;
-        memcpy(&value, (char*) data + i, 4);
-        if (mwrite4_ul(mf, offset + i, value) != 4) {
-            return -1;
-        }
-    }
-    return length;
-}
-
-/*
- * Return values:
- * 0:  OK
- * <0: Error
- * 1 : Device does not support memory access
- *
- */
-static
-int mtcr_check_signature(mfile *mf)
-{
-    unsigned signature;
-    int rc;
-    char* connectx_flush = getenv("CONNECTX_FLUSH");
-    rc = mread4_ul(mf, 0xF0014, &signature);
-    if (rc != 4) {
-        if (!errno)
-            errno = EIO;
-        return -1;
-    }
-
-    switch (signature) {
-        case 0xbad0cafe: /* secure host mode device id */
-            return 0;
-        case 0xbadacce5: /* returned upon mapping the UAR bar */
-        case 0xffffffff: /* returned when pci mem access is disabled (driver down) */
-            return 1;
-    }
-
-    if (connectx_flush == NULL || strcmp(connectx_flush, "0")) {
-        if ((signature == 0xa00190 || (signature & 0xffff) == 0x1f5 || (signature & 0xffff) == 0x1f7)
-                && mf->tp == MST_PCI) {
-            ul_ctx_t* ctx = mf->ul_ctx;
-            ctx->connectx_flush = 1;
-            if (mtcr_connectx_flush(mf->ptr, ctx->fdlock)) {
-                return -1;
-            }
-        }
-    }
-
-    return 0;
-}
-
-#if CONFIG_ENABLE_MMAP
-/*
- * The PCI interface treats multi-function devices as independent
- * devices.  The slot/function address of each device is encoded
- * in a single byte as follows:
- *
- *  7:3 = slot
- *  2:0 = function
- */
-#define PCI_DEVFN(slot,func)    ((((slot) & 0x1f) << 3) | ((func) & 0x07))
-#define PCI_SLOT(devfn)     (((devfn) >> 3) & 0x1f)
-#define PCI_FUNC(devfn)     ((devfn) & 0x07)
-
-static
-unsigned long long mtcr_procfs_get_offset(unsigned my_bus, unsigned my_dev, unsigned my_func)
-{
-    FILE* f;
-    unsigned irq;
-    unsigned long long base_addr[6], rom_base_addr, size[6], rom_size;
-
-    unsigned bus, dev, func;
-    //unsigned vendor_id;
-    //unsigned device_id;
-    unsigned int cnt;
-
-    unsigned long long offset = (unsigned long long) -1;
-
-    char buf[4048];
-
-    f = fopen("/proc/bus/pci/devices", "r");
-    if (!f)
-        return offset;
-
-    for (;;)
-        if (fgets(buf, sizeof(buf) - 1, f)) {
-            unsigned dfn, vend;
-
-            cnt = sscanf(buf, "%x %x %x %llx %llx %llx %llx %llx %llx "
-                    "%llx %llx %llx %llx %llx %llx %llx %llx", &dfn, &vend, &irq, &base_addr[0], &base_addr[1],
-                    &base_addr[2], &base_addr[3], &base_addr[4], &base_addr[5], &rom_base_addr, &size[0], &size[1],
-                    &size[2], &size[3], &size[4], &size[5], &rom_size);
-            if (cnt != 9 && cnt != 10 && cnt != 17) {
-                fprintf(stderr, "proc: parse error (read only %d items)\n", cnt);
-                fprintf(stderr, "the offending line in " "/proc/bus/pci/devices" " is "
-                        "\"%.*s\"\n", (int) sizeof(buf), buf);
-                goto error;
-            }
-            bus = dfn >> 8U;
-            dev = PCI_SLOT(dfn & 0xff);
-            func = PCI_FUNC(dfn & 0xff);
-            //vendor_id = vend >> 16U;
-            //device_id = vend & 0xffff;
-
-            if (bus == my_bus && dev == my_dev && func == my_func)
-                break;
-        } else
-            goto error;
-
-    if (cnt != 17 || size[1] != 0 || size[0] != MTCR_MAP_SIZE) {
-        if (0)
-            fprintf(stderr, "proc: unexpected region size values: "
-                    "cnt=%d, size[0]=%#llx, size[1]=%#llx\n", cnt, size[0], size[1]);
-        if (0)
-            fprintf(stderr, "the offending line in " "/proc/bus/pci/devices"
-                    " is \"%.*s\"\n", (int) sizeof(buf), buf);
-        goto error;
-    }
-
-    offset = ((unsigned long long) (base_addr[1]) << 32)
-            + ((unsigned long long) (base_addr[0]) & ~(unsigned long long) (0xfffff));
-
-    fclose(f);
-    return offset;
-
-error:
-    fclose(f);
-    errno = ENXIO;
-    return offset;
-}
-
-static
-unsigned long long mtcr_sysfs_get_offset(unsigned domain, unsigned bus, unsigned dev, unsigned func)
-{
-    unsigned long long start, end, type;
-    unsigned long long offset = (unsigned long long) -1;
-    FILE *f;
-    int cnt;
-    char mbuf[] = "/sys/bus/pci/devices/XXXX:XX:XX.X/resource";
-    sprintf(mbuf, "/sys/bus/pci/devices/%4.4x:%2.2x:%2.2x.%1.1x/resource", domain, bus, dev, func);
-
-    f = fopen(mbuf, "r");
-    if (!f)
-        return offset;
-
-    cnt = fscanf(f, "0x%llx 0x%llx 0x%llx", &start, &end, &type);
-    if (cnt != 3 || end != start + MTCR_MAP_SIZE - 1) {
-        if (0)
-            fprintf(stderr, "proc: unexpected region size values: "
-                    "cnt=%d, start=%#llx, end=%#llx\n", cnt, start, end);
-        goto error;
-    }
-
-    fclose(f);
-    return start;
-
-error:
-    fclose(f);
-    errno = ENOENT;
-    return offset;
-}
-
-//
-// PCI MEMORY ACCESS FUNCTIONS
-//
-
-static
-int mtcr_pcicr_mclose(mfile *mf)
-{
-    if (mf) {
-        if (mf->ptr) {
-            munmap(mf->ptr, MTCR_MAP_SIZE);
-        }
-        if (mf->fd > 0) {
-            close(mf->fd);
-        }
-        if (mf->res_fd > 0) {
-            close(mf->res_fd);
-        }
-    }
-    return 0;
-}
-
-static
-int mtcr_mmap(mfile *mf, const char *name, off_t off, int ioctl_needed)
-{
-    int err;
-    mf->fd = open(name, O_RDWR | O_SYNC);
-    if (mf->fd < 0)
-        return -1;
-
-    if (ioctl_needed && ioctl(mf->fd, PCIIOC_MMAP_IS_MEM) < 0) {
-        err = errno;
-        close(mf->fd);
-        errno = err;
-        return -1;
-    }
-
-    mf->ptr = mmap(NULL, MTCR_MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, mf->fd, off);
-
-    if (!mf->ptr || mf->ptr == MAP_FAILED) {
-        err = errno;
-        close(mf->fd);
-        errno = err;
-        return -1;
-    }
-    return 0;
-}
-
-int mtcr_pcicr_mread4(mfile *mf, unsigned int offset, u_int32_t *value)
-{
-    ul_ctx_t *ctx = mf->ul_ctx;
-
-    if (offset >= MTCR_MAP_SIZE) {
-        errno = EINVAL;
-        return 0;
-    }
-    if (ctx->need_flush) {
-        if (mtcr_connectx_flush(mf->ptr, ctx->fdlock)) {
-            return 0;
-        }
-        ctx->need_flush = 0;
-    }
-    *value = __be32_to_cpu(*((u_int32_t * )((char * )mf->ptr + offset)));
-    return 4;
-}
-
-int mtcr_pcicr_mwrite4(mfile *mf, unsigned int offset, u_int32_t value)
-{
-    ul_ctx_t *ctx = mf->ul_ctx;
-
-    if (offset >= MTCR_MAP_SIZE) {
-        errno = EINVAL;
-        return 0;
-    }
-    *((u_int32_t *) ((char *) mf->ptr + offset)) = __cpu_to_be32(value);
-    ctx->need_flush = ctx->connectx_flush;
-    return 4;
-}
-
-static
-int mtcr_pcicr_open(mfile *mf, const char *name, char* conf_name, off_t off, int ioctl_needed, u_int32_t adv_opt)
-{
-    int rc;
-    ul_ctx_t *ctx = mf->ul_ctx;
-
-    mf->tp = MST_PCI;
-
-    ctx->mread4 = mtcr_pcicr_mread4;
-    ctx->mwrite4 = mtcr_pcicr_mwrite4;
-    ctx->mread4_block = mread_chunk_as_multi_mread4;
-    ctx->mwrite4_block = mwrite_chunk_as_multi_mwrite4;
-    ctx->mclose = mtcr_pcicr_mclose;
-
-    mf->ptr = NULL;
-    mf->fd = -1;
-    ctx->connectx_flush = 0;
-    ctx->need_flush = 0;
-
-    rc = mtcr_mmap(mf, name, off, ioctl_needed);
-    if (rc) {
-        goto end;
-    }
-
-    rc = mtcr_check_signature(mf);
-end:
-    if (rc) {
-        mtcr_pcicr_mclose(mf);
-    } else if (conf_name != NULL) {
-        mfile* conf_mf = mopen_ul_int(conf_name, adv_opt);
-        if (conf_mf != NULL) {
-            mf->res_fd = conf_mf->fd;
-            ul_ctx_t *conf_ctx = conf_mf->ul_ctx;
-            mf->res_tp = conf_mf->tp;
-            mf->vsec_addr = conf_mf->vsec_addr;
-            mf->vsec_supp = conf_mf->vsec_supp;
-            mf->address_space = conf_mf->address_space;
-            ctx->res_fdlock = conf_ctx->fdlock;
-            ctx->res_mread4 = conf_ctx->mread4;
-            ctx->res_mwrite4 = conf_ctx->mwrite4;
-            ctx->res_mread4_block = conf_ctx->mread4_block;
-            ctx->res_mwrite4_block = conf_ctx->mwrite4_block;
-            free(conf_mf);
-        }
-    }
-
-    return rc;
-}
-
-//
-// PCI CONF ACCESS FUNCTIONS
-//
-
-#if CONFIG_ENABLE_PCICONF
-/* PCI address space related enum*/
-enum {
-    PCI_CAP_PTR = 0x34, PCI_HDR_SIZE = 0x40, PCI_EXT_SPACE_ADDR = 0xff,
-
-    PCI_CTRL_OFFSET = 0x4, // for space / semaphore / auto-increment bit
-    PCI_COUNTER_OFFSET = 0x8,
-    PCI_SEMAPHORE_OFFSET = 0xc,
-    PCI_ADDR_OFFSET = 0x10,
-    PCI_DATA_OFFSET = 0x14,
-
-    PCI_FLAG_BIT_OFFS = 31,
-
-    PCI_SPACE_BIT_OFFS = 0,
-    PCI_SPACE_BIT_LEN = 16,
-
-    PCI_STATUS_BIT_OFFS = 29,
-    PCI_STATUS_BIT_LEN = 3,
-};
-
-/* Mellanox vendor specific enum */
-enum {
-    CAP_ID = 0x9, ICMD_DOMAIN = 0x1, CR_SPACE_DOMAIN = 0x2, SEMAPHORE_DOMAIN = 0xa, IFC_MAX_RETRIES = 2048
-};
-
-/* PCI operation enum(read or write)*/
-enum {
-    READ_OP = 0, WRITE_OP = 1,
-};
-
-#define READ4_PCI(mf, val_ptr, pci_offs, err_prefix, action_on_fail)    \
-    do {                                                                \
-        int rc;                                                         \
-        int lock_rc;                                                    \
-        ul_ctx_t *pci_ctx = mf->ul_ctx;                                 \
-        lock_rc = _flock_int(pci_ctx->fdlock, LOCK_EX);                 \
-        if (lock_rc) {                                                  \
-            perror(err_prefix);                                         \
-            action_on_fail;                                             \
-        }                                                               \
-        rc = pread(mf->fd, val_ptr, 4, pci_offs);                       \
-        lock_rc = _flock_int(pci_ctx->fdlock, LOCK_UN);                 \
-        if (lock_rc) {                                                  \
-            perror(err_prefix);                                         \
-            action_on_fail;                                             \
-        }                                                               \
-        if (rc != 4 ) {                                                 \
-            if (rc < 0)                                                 \
-                perror(err_prefix);                                     \
-            action_on_fail;                                             \
-        }                                                               \
-        *val_ptr = __le32_to_cpu(*val_ptr);\
-    } while (0)
-
-#define WRITE4_PCI(mf, val, pci_offs, err_prefix, action_on_fail)           \
-        do {                                                                \
-            int rc;                                                         \
-            int lock_rc;                                                    \
-            u_int32_t val_le;                                               \
-            ul_ctx_t *pci_ctx = mf->ul_ctx;                                 \
-            val_le = __cpu_to_le32(val);                                    \
-            lock_rc = _flock_int(pci_ctx->fdlock, LOCK_EX);                 \
-            if (lock_rc) {                                                  \
-                perror(err_prefix);                                         \
-                action_on_fail;                                             \
-            }                                                               \
-            rc = pwrite(mf->fd, &val_le, 4, pci_offs);                      \
-            lock_rc = _flock_int(pci_ctx->fdlock, LOCK_UN);                 \
-            if (lock_rc) {                                                  \
-                perror(err_prefix);                                         \
-                action_on_fail;                                             \
-            }                                                               \
-            if (rc != 4 ) {                                                 \
-                if (rc < 0)                                                 \
-                    perror(err_prefix);                                     \
-                action_on_fail;                                         \
-            }                                                               \
-        } while (0)
-
-int pci_find_capability(mfile* mf, int cap_id)
-{
-    unsigned offset;
-    unsigned char visited[256] = { }; /* Prevent infinite loops */
-    unsigned char data[2];
-    int ret;
-    int lock_ret;
-    ul_ctx_t *pci_ctx = mf->ul_ctx;
-
-    // protect against parallel access
-    lock_ret = _flock_int(pci_ctx->fdlock, LOCK_EX);
-    if (lock_ret) {
-        return 0;
-    }
-
-    ret = pread(mf->fd, data, 1, PCI_CAP_PTR);
-
-    lock_ret = _flock_int(pci_ctx->fdlock, LOCK_UN);
-    if (lock_ret) {
-        return 0;
-    }
-
-    if (ret != 1) {
-        return 0;
-    }
-
-    offset = data[0];
-    while (1) {
-        if (offset < PCI_HDR_SIZE || offset > PCI_EXT_SPACE_ADDR) {
-            return 0;
-        }
-
-        lock_ret = _flock_int(pci_ctx->fdlock, LOCK_EX);
-        if (lock_ret) {
-            return 0;
-        }
-
-        ret = pread(mf->fd, data, sizeof data, offset);
-
-        lock_ret = _flock_int(pci_ctx->fdlock, LOCK_UN);
-        if (lock_ret) {
-            return 0;
-        }
-
-        if (ret != sizeof data) {
-            return 0;
-        }
-
-        visited[offset] = 1;
-
-        if (data[0] == cap_id) {
-            return offset;
-        }
-
-        offset = data[1];
-
-        if (offset > PCI_EXT_SPACE_ADDR) {
-            return 0;
-        }
-        if (visited[offset]) {
-            return 0;
-        }
-    }
-    return 0;
-}
-
-int mtcr_pciconf_cap9_sem(mfile* mf, int state)
-{
-    u_int32_t lock_val;
-    u_int32_t counter = 0;
-    int retries = 0;
-    if (!state) { // unlock
-        WRITE4_PCI(mf, 0, mf->vsec_addr + PCI_SEMAPHORE_OFFSET, "unlock semaphore", return ME_PCI_WRITE_ERROR);
-    } else { // lock
-        do {
-            if (retries > IFC_MAX_RETRIES) {
-                return ME_SEM_LOCKED;
-            }
-            // read semaphore untill 0x0
-            READ4_PCI(mf, &lock_val, mf->vsec_addr + PCI_SEMAPHORE_OFFSET, "read counter", return ME_PCI_READ_ERROR);
-            if (lock_val) { //semaphore is taken
-                retries++;
-                msleep(1); // wait for current op to end
-                continue;
-            }
-            //read ticket
-            READ4_PCI(mf, &counter, mf->vsec_addr + PCI_COUNTER_OFFSET, "read counter", return ME_PCI_READ_ERROR);
-            //write ticket to semaphore dword
-            WRITE4_PCI(mf, counter, mf->vsec_addr + PCI_SEMAPHORE_OFFSET, "write counter to semaphore",
-                    return ME_PCI_WRITE_ERROR);
-            // read back semaphore make sure ticket == semaphore else repeat
-            READ4_PCI(mf, &lock_val, mf->vsec_addr + PCI_SEMAPHORE_OFFSET, "read counter", return ME_PCI_READ_ERROR);
-            retries++;
-        } while (counter != lock_val);
-    }
-    return ME_OK;
-}
-
-int mtcr_pciconf_wait_on_flag(mfile* mf, u_int8_t expected_val)
-{
-    int retries = 0;
-    u_int32_t flag;
-    do {
-        if (retries > IFC_MAX_RETRIES) {
-            return ME_PCI_IFC_TOUT;
-        }
-        READ4_PCI(mf, &flag, mf->vsec_addr + PCI_ADDR_OFFSET, "read flag", return ME_PCI_READ_ERROR);
-        flag = EXTRACT(flag, PCI_FLAG_BIT_OFFS, 1);
-        retries++;
-        if ((retries & 0xf) == 0) { // dont sleep always
-            msleep(1);
-        }
-    } while (flag != expected_val);
-    return ME_OK;
-}
-
-int mtcr_pciconf_set_addr_space(mfile* mf, u_int16_t space)
-{
-    // read modify write
-    u_int32_t val;
-    READ4_PCI(mf, &val, mf->vsec_addr + PCI_CTRL_OFFSET, "read domain", return ME_PCI_READ_ERROR);
-    val = MERGE(val, space, PCI_SPACE_BIT_OFFS, PCI_SPACE_BIT_LEN);
-    WRITE4_PCI(mf, val, mf->vsec_addr + PCI_CTRL_OFFSET, "write domain", return ME_PCI_WRITE_ERROR);
-    // read status and make sure space is supported
-    READ4_PCI(mf, &val, mf->vsec_addr + PCI_CTRL_OFFSET, "read status", return ME_PCI_READ_ERROR);
-    if (EXTRACT(val, PCI_STATUS_BIT_OFFS, PCI_STATUS_BIT_LEN) == 0) {
-        return ME_PCI_SPACE_NOT_SUPPORTED;
-    }
-    return ME_OK;
-}
-
-int mtcr_pciconf_rw(mfile *mf, unsigned int offset, u_int32_t* data, int rw)
-{
-    int rc = ME_OK;
-    u_int32_t address = offset;
-
-    //last 2 bits must be zero as we only allow 30 bits addresses
-    if (EXTRACT(address, 30, 2)) {
-        return ME_BAD_PARAMS;
-    }
-
-    address = MERGE(address, (rw ? 1 : 0), PCI_FLAG_BIT_OFFS, 1);
-    if (rw == WRITE_OP) {
-        // write data
-        WRITE4_PCI(mf, *data, mf->vsec_addr + PCI_DATA_OFFSET, "write value", return ME_PCI_WRITE_ERROR);
-        // write address
-        WRITE4_PCI(mf, address, mf->vsec_addr + PCI_ADDR_OFFSET, "write offset", return ME_PCI_WRITE_ERROR);
-        // wait on flag
-        rc = mtcr_pciconf_wait_on_flag(mf, 0);
-    } else {
-        // write address
-        WRITE4_PCI(mf, address, mf->vsec_addr + PCI_ADDR_OFFSET, "write offset", return ME_PCI_WRITE_ERROR);
-        // wait on flag
-        rc = mtcr_pciconf_wait_on_flag(mf, 1);
-        // read data
-        READ4_PCI(mf, data, mf->vsec_addr + PCI_DATA_OFFSET, "read value", return ME_PCI_READ_ERROR);
-    }
-    return rc;
-}
-
-int mtcr_pciconf_send_pci_cmd_int(mfile *mf, int space, unsigned int offset, u_int32_t* data, int rw)
-{
-    int rc = ME_OK;
-
-    // take semaphore
-    rc = mtcr_pciconf_cap9_sem(mf, 1);
-    if (rc) {
-        return rc;
-    }
-
-    // set address space
-    rc = mtcr_pciconf_set_addr_space(mf, space);
-    if (rc) {
-        goto cleanup;
-    }
-
-    // read/write the data
-    rc = mtcr_pciconf_rw(mf, offset, data, rw);
-    cleanup:
-    // clear semaphore
-    mtcr_pciconf_cap9_sem(mf, 0);
-    return rc;
-}
-
-// adrianc: no need to lock the file semaphore if we access cr-space through mellanox vendor specific cap
-int mtcr_pciconf_mread4(mfile *mf, unsigned int offset, u_int32_t *value)
-{
-    int rc;
-    rc = mtcr_pciconf_send_pci_cmd_int(mf, mf->address_space, offset, value, READ_OP);
-    if (rc) {
-        return -1;
-    }
-    return 4;
-}
-int mtcr_pciconf_mwrite4(mfile *mf, unsigned int offset, u_int32_t value)
-{
-    int rc;
-    rc = mtcr_pciconf_send_pci_cmd_int(mf, mf->address_space, offset, &value, WRITE_OP);
-    if (rc) {
-        return -1;
-    }
-    return 4;
-}
-
-static int block_op_pciconf(mfile *mf, unsigned int offset, u_int32_t* data, int length, int rw)
-{
-    int i;
-    int rc = ME_OK;
-    int wrote_or_read = length;
-    if (length % 4) {
-        return -1;
-    }
-    // lock semaphore and set address space
-    rc = mtcr_pciconf_cap9_sem(mf, 1);
-    if (rc) {
-        return -1;
-    }
-    // set address space
-    rc = mtcr_pciconf_set_addr_space(mf, mf->address_space);
-    if (rc) {
-        wrote_or_read = -1;
-        goto cleanup;
-    }
-
-    for (i = 0; i < length; i += 4) {
-        if (mtcr_pciconf_rw(mf, offset + i, &(data[(i >> 2)]), rw)) {
-            wrote_or_read = i;
-            goto cleanup;
-        }
-    }
-    cleanup: mtcr_pciconf_cap9_sem(mf, 0);
-    return wrote_or_read;
-}
-
-static int mread4_block_pciconf(mfile *mf, unsigned int offset, u_int32_t* data, int length)
-{
-    return block_op_pciconf(mf, offset, data, length, READ_OP);
-}
-
-static int mwrite4_block_pciconf(mfile *mf, unsigned int offset, u_int32_t* data, int length)
-{
-    return block_op_pciconf(mf, offset, data, length, WRITE_OP);
-}
-
-int mtcr_pciconf_mread4_old(mfile *mf, unsigned int offset, u_int32_t *value)
-{
-    ul_ctx_t *ctx = mf->ul_ctx;
-    int rc;
-    // adrianc: PCI registers always in le32
-    offset = __cpu_to_le32(offset);
-    rc = _flock_int(ctx->fdlock, LOCK_EX);
-    if (rc) {
-        goto pciconf_read_cleanup;
-    }
-    rc = pwrite(mf->fd, &offset, 4, 22 * 4);
-    if (rc < 0) {
-        perror("write offset");
-        goto pciconf_read_cleanup;
-    }
-    if (rc != 4) {
-        rc = 0;
-        goto pciconf_read_cleanup;
-    }
-
-    rc = pread(mf->fd, value, 4, 23 * 4);
-    if (rc < 0) {
-        perror("read value");
-        goto pciconf_read_cleanup;
-    }
-    *value = __le32_to_cpu(*value);
-    pciconf_read_cleanup: _flock_int(ctx->fdlock, LOCK_UN);
-    return rc;
-}
-
-int mtcr_pciconf_mwrite4_old(mfile *mf, unsigned int offset, u_int32_t value)
-{
-    ul_ctx_t *ctx = mf->ul_ctx;
-    int rc;
-    offset = __cpu_to_le32(offset);
-    rc = _flock_int(ctx->fdlock, LOCK_EX);
-    if (rc) {
-        goto pciconf_write_cleanup;
-    }
-    rc = pwrite(mf->fd, &offset, 4, 22 * 4);
-    if (rc < 0) {
-        perror("write offset");
-        goto pciconf_write_cleanup;
-    }
-    if (rc != 4) {
-        rc = 0;
-        goto pciconf_write_cleanup;
-    }
-    value = __cpu_to_le32(value);
-    rc = pwrite(mf->fd, &value, 4, 23 * 4);
-    if (rc < 0) {
-        perror("write value");
-        goto pciconf_write_cleanup;
-    }
-    pciconf_write_cleanup: _flock_int(ctx->fdlock, LOCK_UN);
-    return rc;
-}
-
-static
-int mtcr_pciconf_mclose(mfile *mf)
-{
-    unsigned int word;
-    if (mf) {
-        // Adrianc: set address in PCI configuration space to be non-semaphore.
-        mread4_ul(mf, 0xf0014, &word);
-        if (mf->fd > 0) {
-            close(mf->fd);
-        }
-    }
-
-    return 0;
-}
-
-static
-int mtcr_pciconf_open(mfile *mf, const char *name, u_int32_t adv_opt)
-{
-    ul_ctx_t *ctx = mf->ul_ctx;
-    mf->fd = -1;
-    mf->fd = open(name, O_RDWR | O_SYNC);
-    if (mf->fd < 0) {
-        return -1;
-    }
-
-    mf->tp = MST_PCICONF;
-
-    if ((mf->vsec_addr = pci_find_capability(mf, CAP_ID))) {
-        // check if the needed spaces are supported
-        if (adv_opt & Clear_Vsec_Semaphore) {
-            mtcr_pciconf_cap9_sem(mf, 0);
-        }
-        if (mtcr_pciconf_cap9_sem(mf, 1)) {
-            close(mf->fd);
-            errno = EBUSY;
-            return -1;
-        }
-        if (mtcr_pciconf_set_addr_space(mf, ICMD_DOMAIN) || mtcr_pciconf_set_addr_space(mf, SEMAPHORE_DOMAIN)
-                || mtcr_pciconf_set_addr_space(mf, CR_SPACE_DOMAIN)) {
-            mf->vsec_supp = 0;
-        } else {
-            mf->vsec_supp = 1;
-        }
-        mtcr_pciconf_cap9_sem(mf, 0);
-    }
-
-    if (mf->vsec_supp) {
-        mf->address_space = CR_SPACE_DOMAIN;
-        ctx->mread4 = mtcr_pciconf_mread4;
-        ctx->mwrite4 = mtcr_pciconf_mwrite4;
-        ctx->mread4_block = mread4_block_pciconf;
-        ctx->mwrite4_block = mwrite4_block_pciconf;
-    } else {
-        ctx->mread4 = mtcr_pciconf_mread4_old;
-        ctx->mwrite4 = mtcr_pciconf_mwrite4_old;
-        ctx->mread4_block = mread_chunk_as_multi_mread4;
-        ctx->mwrite4_block = mwrite_chunk_as_multi_mwrite4;
-    }
-    ctx->mclose = mtcr_pciconf_mclose;
-    return 0;
-}
-#else
-static
-int mtcr_pciconf_open(mfile *mf, const char *name, u_int32_t adv_opt)
-{
-    return -1;
-}
-#endif
-
-//
-// IN-BAND ACCESS FUNCTIONS
-//
-
-static
-int mtcr_inband_open(mfile* mf, const char* name)
-{
-#ifndef NO_INBAND
-    ul_ctx_t *ctx = mf->ul_ctx;
-    mf->tp = MST_IB;
-    ctx->mread4 = mib_read4;
-    ctx->mwrite4 = mib_write4;
-    ctx->mread4_block = mib_readblock;
-    ctx->mwrite4_block = mib_writeblock;
-    ctx->maccess_reg = mib_acces_reg_mad;
-    ctx->mclose = mib_close;
-    char* p;
-    if ((p = strstr(name, "ibdr-")) != 0 || (p = strstr(name, "iblid-")) != 0 || (p = strstr(name, "lid-")) != 0) {
-        return mib_open(p, mf, 0);
-    } else {
-        return -1;
-    }
-
-#else
-    (void) name;
-    (void) mf;
-    errno = ENOSYS;
-    return -1;
-#endif
-}
-
-static MType mtcr_parse_name(const char* name, int *force, unsigned *domain_p, unsigned *bus_p, unsigned *dev_p,
-        unsigned *func_p)
-{
-    unsigned my_domain = 0;
-    unsigned my_bus;
-    unsigned my_dev;
-    unsigned my_func;
-    int scnt, r;
-    int force_config = 0;
-    char config[] = "/config";
-    char resource0[] = "/resource0";
-    char procbuspci[] = "/proc/bus/pci/";
-
-    unsigned len = strlen(name);
-    unsigned tmp;
-
-    if (len >= sizeof config && !strcmp(config, name + len + 1 - sizeof config)) {
-        *force = 1;
-        return MST_PCICONF;
-    }
-
-    if (len >= sizeof resource0 && !strcmp(resource0, name + len + 1 - sizeof resource0)) {
-        *force = 1;
-        return MST_PCI;
-    }
-
-    if (!strncmp(name, "/proc/bus/pci/", sizeof procbuspci - 1)) {
-        *force = 1;
-        return MST_PCICONF;
-    }
-
-    if (sscanf(name, "lid-%x", &tmp) == 1 || sscanf(name, "ibdr-%x", &tmp) == 1 || strstr(name, "lid-") != 0
-            || strstr(name, "ibdr-") != 0) {
-        *force = 1;
-        return MST_IB;
-    }
-
-    if (sscanf(name, "mthca%x", &tmp) == 1 || sscanf(name, "mlx4_%x", &tmp) == 1
-            || sscanf(name, "mlx5_%x", &tmp) == 1) {
-        char mbuf[4048];
-        char pbuf[4048];
-        char *base;
-
-        r = snprintf(mbuf, sizeof mbuf, "/sys/class/infiniband/%s/device", name);
-        if (r <= 0 || r >= (int) sizeof mbuf) {
-            fprintf(stderr, "Unable to print device name %s\n", name);
-            goto parse_error;
-        }
-
-        r = readlink(mbuf, pbuf, sizeof pbuf - 1);
-        if (r < 0) {
-            perror("read link");
-            fprintf(stderr, "Unable to read link %s\n", mbuf);
-            return MST_ERROR;
-        }
-        pbuf[r] = '\0';
-
-        base = basename(pbuf);
-        if (!base)
-            goto parse_error;
-        scnt = sscanf(base, "%x:%x:%x.%x", &my_domain, &my_bus, &my_dev, &my_func);
-        if (scnt != 4)
-            goto parse_error;
-        if (sscanf(name, "mlx5_%x", &tmp) == 1) {
-            force_config = 1;
-        }
-        goto name_parsed;
-    }
-
-    scnt = sscanf(name, "%x:%x.%x", &my_bus, &my_dev, &my_func);
-    if (scnt == 3) {
-        force_config = check_force_config(my_domain, my_bus, my_dev, my_func);
-        goto name_parsed;
-    }
-
-    scnt = sscanf(name, "%x:%x:%x.%x", &my_domain, &my_bus, &my_dev, &my_func);
-    if (scnt == 4) {
-        force_config = check_force_config(my_domain, my_bus, my_dev, my_func);
-        goto name_parsed;
-    }
-
-    scnt = sscanf(name, "pciconf-%x:%x.%x", &my_bus, &my_dev, &my_func);
-    if (scnt == 3) {
-        force_config = 1;
-        goto name_parsed;
-    }
-
-    scnt = sscanf(name, "pciconf-%x:%x:%x.%x", &my_domain, &my_bus, &my_dev, &my_func);
-    if (scnt == 4) {
-        force_config = 1;
-        goto name_parsed;
-    }
-
-parse_error:
-    fprintf(stderr, "Unable to parse device name %s\n", name);
-    errno = EINVAL;
-    return MST_ERROR;
-
-name_parsed:
-    *domain_p = my_domain;
-    *bus_p = my_bus;
-    *dev_p = my_dev;
-    *func_p = my_func;
-    *force = 0;
-#ifdef __aarch64__
-    // on ARM processors MMAP not supported
-    (void)force_config;
-    return MST_PCICONF;
-#else
-    if (force_config) {
-        return MST_PCICONF;
-    }
-    return MST_PCI;
-#endif
-}
-#endif
-
-int mread4_block_ul(mfile *mf, unsigned int offset, u_int32_t* data, int byte_len)
-{
-    ul_ctx_t *ctx = mf->ul_ctx;
-    return ctx->mread4_block(mf, offset, data, byte_len);
-}
-
-int mwrite4_block_ul(mfile *mf, unsigned int offset, u_int32_t* data, int byte_len)
-{
-    ul_ctx_t *ctx = mf->ul_ctx;
-    return ctx->mwrite4_block(mf, offset, data, byte_len);
-}
-
-int msw_reset_ul(mfile *mf)
-{
-#ifndef NO_INBAND
-    switch (mf->tp) {
-        case MST_IB:
-            return mib_swreset(mf);
-        default:
-            errno = EPERM;
-            return -1;
-    }
-#else
-    (void)mf;
-    return -1;
-#endif
-}
-
-int mhca_reset_ul(mfile *mf)
-{
-    (void) mf;
-    errno = ENOTSUP;
-    return -1;
-}
-
-static long supported_dev_ids[] = {
-        /* CX2 */
-        0x6340, 0x634a, 0x6368, 0x6372,
-        0x6732, 0x673c, 0x6750, 0x675a,
-        0x676e, 0x6746, 0x6764,
-        /*****/
-        0x1003, //Connect-X3
-        0x1007, //Connect-X3Pro
-        0x1011, //Connect-IB
-        0x1013, //Connect-X4
-        0x1015, //Connect-X4Lx
-        0x1017, //Connect-X5
-        0xc738, //SwitchX
-        0xcb20, //Switch-IB
-        0xcb84, //Spectrum
-        0xcf08, //Switch-IB2
-        -1 };
-
-static long live_fish_id_database[] = {
-        0x191,
-        0x246,
-        0x249,
-        0x24b,
-        0x1F6,
-        0x1F8,
-        0x1FF,
-        0x247,
-        0x209,
-        0x20b,
-        0x20d,
-        -1
-};
-
-int is_supported_devid(long devid)
-{
-    int i = 0;
-    while (supported_dev_ids[i] != -1) {
-        if (devid == supported_dev_ids[i]) {
-            return 1;
-        }
-        i++;
-    }
-    i = 0;
-    while (live_fish_id_database[i] != -1) {
-        if (devid == live_fish_id_database[i]) {
-            return 1;
-        }
-        i++;
-    }
-    return 0;
-}
-
-int is_supported_device(char* devname)
-{
-
-    char fname[64];
-    char inbuf[64];
-    FILE* f;
-    int ret_val = 0;
-    sprintf(fname, "/sys/bus/pci/devices/%s/device", devname);
-    f = fopen(fname, "r");
-    if (f == NULL) {
-        //printf("-D- Could not open file: %s\n", fname);
-        return 1;
-    }
-    if (fgets(inbuf, sizeof(inbuf), f)) {
-        long devid = strtol(inbuf, NULL, 0);
-        ret_val = is_supported_devid(devid);
-    }
-    fclose(f);
-    return ret_val;
-}
-
-int mdevices_ul(char *buf, int len, int mask)
-{
-    return mdevices_v_ul(buf, len, mask, 0);
-}
-
-int mdevices_v_ul(char *buf, int len, int mask, int verbosity)
-{
-
-#define MDEVS_TAVOR_CR  0x20
-#define MLNX_PCI_VENDOR_ID  0x15b3
-
-    FILE* f;
-    DIR* d;
-    struct dirent *dir;
-    int pos = 0;
-    int sz;
-    int rsz;
-    int ndevs = 0;
-
-    if (!(mask & MDEVS_TAVOR_CR)) {
-        return 0;
-    }
-
-    char inbuf[64];
-    char fname[64];
-
-    d = opendir("/sys/bus/pci/devices");
-    if (d == NULL) {
-        return -2;
-    }
-
-    while ((dir = readdir(d)) != NULL) {
-        if (dir->d_name[0] == '.') {
-            continue;
-        }
-        sz = strlen(dir->d_name);
-        if (sz > 2 && strcmp(dir->d_name + sz - 2, ".0") && !verbosity) {
-            continue;
-        } else if (sz > 4 && strcmp(dir->d_name + sz - 4, "00.0") && !verbosity) {
-            // Skip virtual functions
-            char physfn[64];
-            DIR* physfndir;
-            sprintf(physfn, "/sys/bus/pci/devices/%s/physfn", dir->d_name);
-            if ((physfndir = opendir(physfn)) != NULL) {
-                closedir(physfndir);
-                continue;
-            }
-        }
-        sprintf(fname, "/sys/bus/pci/devices/%s/vendor", dir->d_name);
-        f = fopen(fname, "r");
-        if (f == NULL) {
-            ndevs = -2;
-            goto cleanup_dir_opened;
-        }
-        if (fgets(inbuf, sizeof(inbuf), f)) {
-            long venid = strtoul(inbuf, NULL, 0);
-            if (venid == MLNX_PCI_VENDOR_ID && is_supported_device(dir->d_name)) {
-                rsz = sz + 1; //dev name size + place for Null char
-                if ((pos + rsz) > len) {
-                    ndevs = -1;
-                    goto cleanup_file_opened;
-                }
-                memcpy(&buf[pos], dir->d_name, rsz);
-                pos += rsz;
-                ndevs++;
-            }
-        }
-        fclose(f);
-    }
-    closedir(d);
-
-    return ndevs;
-
-cleanup_file_opened:
-    fclose(f);
-cleanup_dir_opened:
-    closedir(d);
-    return ndevs;
-}
-
-static
-int read_pci_config_header(u_int16_t domain, u_int8_t bus, u_int8_t dev, u_int8_t func, u_int8_t data[0x40])
-{
-    char proc_dev[64];
-    sprintf(proc_dev, "/sys/bus/pci/devices/%04x:%02x:%02x.%d/config", domain, bus, dev, func);
-    FILE* f = fopen(proc_dev, "r");
-    if (!f) {
-        //fprintf(stderr, "Failed to open (%s) for reading: %s\n", proc_dev, strerror(errno));
-        return 1;
-    }
-    setvbuf(f, NULL, _IONBF, 0);
-    if (fread(data, 0x40, 1, f) != 1) {
-        fprintf(stderr, "Failed to read from (%s): %s\n", proc_dev, strerror(errno));
-        fclose(f);
-        return 1;
-    }
-
-    fclose(f);
-    return 0;
-}
-
-int check_force_config(unsigned my_domain, unsigned my_bus, unsigned my_dev, unsigned my_func)
-{
-    u_int8_t conf_header[0x40];
-    u_int32_t *conf_header_32p = (u_int32_t*) conf_header;
-    if (read_pci_config_header(my_domain, my_bus, my_dev, my_func, conf_header)) {
-        return 0;
-    }
-    u_int32_t devid = __le32_to_cpu(conf_header_32p[0]) >> 16;
-    if (devid == CX3PRO_SW_ID || devid == CX3_SW_ID) {
-        return 0;
-    }
-    return 1;
-}
-#define IB_INF "infiniband:"
-#define ETH_INF "net:"
-
-static char** get_ib_net_devs(int domain, int bus, int dev, int func, int ib_eth_)
-{
-    char** ib_net_devs = NULL;
-    int i;
-    int count = 0;
-    int plan_b = 0;
-    DIR           *dir;
-    struct dirent *dirent;
-    char** ib_net_devs_r;
-    char sysfs_path[256];
-    DIR* physfndir;
-    /* Check that the DBDF is not for Virtual function */
-    sprintf(sysfs_path, "/sys/bus/pci/devices/%04x:%02x:%02x.%x/physfn", domain, bus, dev, func);
-    if ((physfndir = opendir(sysfs_path)) != NULL) {
-        closedir(physfndir);
-        return NULL;
-    }
-    if (ib_eth_)
-        sprintf(sysfs_path, "/sys/bus/pci/devices/%04x:%02x:%02x.%x/infiniband", domain, bus, dev, func);
-    else
-        sprintf(sysfs_path, "/sys/bus/pci/devices/%04x:%02x:%02x.%x/net", domain, bus, dev, func);
-
-    if ((dir = opendir(sysfs_path)) == NULL) {
-        sprintf(sysfs_path, "/sys/bus/pci/devices/%04x:%02x:%02x.%x", domain, bus, dev, func);
-        if ((dir = opendir(sysfs_path)) == NULL) {
-            return NULL;
-        }
-        plan_b = 1;
-    }
-    while ((dirent = readdir(dir)) != NULL) {
-        char *name = dirent->d_name;
-        if (!strcmp(name, ".") || !strcmp(name, ".."))
-            continue;
-        if (plan_b) {
-            char* p = NULL;
-            char* devs_inf = ib_eth_ ? IB_INF : ETH_INF;
-            p = strstr(name, devs_inf);
-            if (! p) {
-                continue;
-            }
-            name = p + strlen(devs_inf);
-        }
-        count++;
-        ib_net_devs_r = (char**)realloc(ib_net_devs, (count+1)*sizeof(char*));
-        if (!ib_net_devs_r) {
-            closedir(dir);
-            goto mem_error;
-        }
-        ib_net_devs = ib_net_devs_r;
-
-        ib_net_devs[count - 1] = (char*)malloc(strlen(name) + 1);
-        if (!ib_net_devs[count - 1]) {
-            closedir(dir);
-            goto mem_error;
-        }
-        strcpy(ib_net_devs[count - 1], name);
-
-        // Set last entry to NULL
-        ib_net_devs[count] = NULL;
-    }
-    closedir(dir);
-    return ib_net_devs;
-
-mem_error:
-    fprintf(stderr, "Memory allocation failure for ib/net devices\n");
-    if (ib_net_devs) {
-        for (i = 0; i < count; i++) {
-            if (ib_net_devs[i])
-                free(ib_net_devs[i]);
-        }
-
-        free(ib_net_devs);
-    }
-
-    return NULL;
-}
-
-static void get_numa_node(u_int16_t domain, u_int8_t bus, u_int8_t dev, u_int8_t func, char* data)
-{
-    char numa_path[64];
-    int c;
-    int i = 0;
-    sprintf(numa_path, "/sys/bus/pci/devices/%04x:%02x:%02x.%d/numa_node", domain, bus, dev, func);
-    FILE* f = fopen(numa_path, "rb");
-    if (!f) {
-        strcpy(data, "NA");
-        return;
-    }
-
-    while((c = getc(f)) != EOF && c != '\n') {
-        data[i++] = c;
-    }
-    data[i] = '\0';
-    fclose(f);
-}
-
-dev_info* mdevices_info_ul(int mask, int* len)
-{
-    return mdevices_info_v_ul(mask, len, 0);
-}
-
-dev_info* mdevices_info_v_ul(int mask, int* len, int verbosity)
-{
-    char* devs = 0;
-    char* dev_name;
-    int size = 2048;
-    int rc;
-    int i;
-
-    // Get list of devices
-    do {
-        if (devs) {
-            free(devs);
-        }
-        size *= 2;
-        devs = (char*) malloc(size);
-        rc = mdevices_v_ul(devs, size, mask, verbosity);
-    } while (rc == -1);
-
-    if (rc <= 0) {
-        *len = 0;
-        if (devs) {
-            free(devs);
-        }
-        return NULL;
-    }
-    // For each device read
-    dev_info* dev_info_arr = (dev_info*) malloc(sizeof(dev_info) * rc);
-    memset(dev_info_arr, 0, sizeof(dev_info) * rc);
-    dev_name = devs;
-    for (i = 0; i < rc; i++) {
-        int domain = 0;
-        int bus = 0;
-        int dev = 0;
-        int func = 0;
-
-        dev_info_arr[i].ul_mode = 1;
-        dev_info_arr[i].type = (Mdevs) MDEVS_TAVOR_CR;
-        u_int8_t conf_header[0x40];
-        u_int32_t *conf_header_32p = (u_int32_t*) conf_header;
-
-        // update default device name
-        strncpy(dev_info_arr[i].dev_name, dev_name, sizeof(dev_info_arr[i].dev_name) - 1);
-        strncpy(dev_info_arr[i].pci.cr_dev, dev_name, sizeof(dev_info_arr[i].pci.cr_dev) - 1);
-
-        // update dbdf
-        if (sscanf(dev_name, "%x:%x:%x.%x", &domain, &bus, &dev, &func) != 4) {
-            rc = -1;
-            len = 0;
-            free(dev_info_arr);
-            free(devs);
-            return NULL;
-        }
-        dev_info_arr[i].pci.domain = domain;
-        dev_info_arr[i].pci.bus = bus;
-        dev_info_arr[i].pci.dev = dev;
-        dev_info_arr[i].pci.func = func;
-
-        // set pci conf device
-        snprintf(dev_info_arr[i].pci.conf_dev, sizeof(dev_info_arr[i].pci.conf_dev),
-                "/sys/bus/pci/devices/%04x:%02x:%02x.%x/config", domain, bus, dev, func);
-
-
-        // Get attached infiniband devices
-        dev_info_arr[i].pci.ib_devs  = get_ib_net_devs(domain, bus, dev, func, 1);
-        dev_info_arr[i].pci.net_devs = get_ib_net_devs(domain, bus, dev, func, 0);
-        get_numa_node(domain, bus, dev, func, (char*)(dev_info_arr[i].pci.numa_node));
-
-        // read configuration space header
-        if (read_pci_config_header(domain, bus, dev, func, conf_header)) {
-            goto next;
-        }
-
-        dev_info_arr[i].pci.dev_id = __le32_to_cpu(conf_header_32p[0]) >> 16;
-        dev_info_arr[i].pci.vend_id = __le32_to_cpu(conf_header_32p[0]) & 0xffff;
-        dev_info_arr[i].pci.class_id = __le32_to_cpu(conf_header_32p[2]) >> 8;
-        dev_info_arr[i].pci.subsys_id = __le32_to_cpu(conf_header_32p[11]) >> 16;
-        dev_info_arr[i].pci.subsys_vend_id = __le32_to_cpu(conf_header_32p[11]) & 0xffff;
-
-
-
-next:
-        dev_name += strlen(dev_name) + 1;
-    }
-
-    free(devs);
-    *len = rc;
-    return dev_info_arr;
-}
-
-
-void mdevices_info_destroy_ul(dev_info* dev_info, int len)
-{
-    int i, j;
-    if (dev_info) {
-        for (i = 0; i < len; i++) {
-            if (dev_info[i].type == MDEVS_TAVOR_CR &&
-                dev_info[i].pci.ib_devs) {
-                for (j = 0; dev_info[i].pci.ib_devs[j]; j++) {
-                    if (dev_info[i].pci.ib_devs[j]) {
-                        free(dev_info[i].pci.ib_devs[j]);
-                    }
-                }
-                free(dev_info[i].pci.ib_devs);
-            }
-            if (dev_info[i].type == MDEVS_TAVOR_CR &&
-                dev_info[i].pci.net_devs) {
-                for (j = 0; dev_info[i].pci.net_devs[j]; j++) {
-                    if (dev_info[i].pci.net_devs[j]) {
-                        free(dev_info[i].pci.net_devs[j]);
-                    }
-                }
-                free(dev_info[i].pci.net_devs);
-            }
-
-        }
-        free(dev_info);
-    }
-}
-
-/*
- * This function used to change from running on CONF to CR
- * and vice versa
- */
-
-extern void mpci_change(mfile* mf)
-{
-    mf->mpci_change(mf);
-    return;
-}
-
- void mpci_change_ul(mfile* mf)
-{
-    if (mf->res_tp == MST_PCICONF) {
-        mf->res_tp = MST_PCI;
-        mf->tp = MST_PCICONF;
-    } else if (mf->res_tp == MST_PCI) {
-        mf->res_tp = MST_PCICONF;
-        mf->tp = MST_PCI;
-    } else {
-        return;
-    }
-    ul_ctx_t* ctx = mf->ul_ctx;
-    /***** Switching READ WRITE FUNCS ******/
-    f_mread4 tmp_mread4 = ctx->mread4;
-    ctx->mread4 = ctx->res_mread4;
-    ctx->res_mread4 = tmp_mread4;
-
-    f_mwrite4 tmp_mwrite4 = ctx->mwrite4;
-    ctx->mwrite4 = ctx->res_mwrite4;
-    ctx->res_mwrite4 = tmp_mwrite4;
-
-    f_mread4_block tmp_mread4_block = ctx->mread4_block;
-    ctx->mread4_block = ctx->res_mread4_block;
-    ctx->res_mread4_block = tmp_mread4_block;
-
-    f_mwrite4_block tmp_mwrite4_block = ctx->mwrite4_block;
-    ctx->mwrite4_block = ctx->res_mwrite4_block;
-    ctx->res_mwrite4_block = tmp_mwrite4_block;
-
-    /***** Switching FD LOCKs ******/
-    int tmp_lock = ctx->res_fdlock;
-    ctx->res_fdlock = ctx->fdlock;
-    ctx->fdlock = tmp_lock;
-    /***** Switching FDs ******/
-    int fd = mf->fd;
-    mf->fd = mf->res_fd;
-    mf->res_fd = fd;
-}
-
-mfile *mopen_ul_int(const char *name, u_int32_t adv_opt)
-{
-    mfile *mf;
-    off_t offset;
-    unsigned domain = 0, bus = 0, dev = 0, func = 0;
-    MType dev_type;
-    int force;
-    char rbuf[] = "/sys/bus/pci/devices/XXXX:XX:XX.X/resource0";
-    char cbuf[] = "/sys/bus/pci/devices/XXXX:XX:XX.X/config";
-    char pdbuf[] = "/proc/bus/pci/XXXX:XX/XX.X";
-    char pbuf[] = "/proc/bus/pci/XX/XX.X";
-    char pcidev[] = "XXXX:XX:XX.X";
-    int err;
-    int rc;
-
-    if (geteuid() != 0) {
-        errno = EACCES;
-        return NULL;
-    }
-    mf = (mfile *) malloc(sizeof(mfile));
-    if (!mf) {
-        return NULL;
-    }
-    memset(mf, 0, sizeof(mfile));
-    mf->ul_ctx = malloc (sizeof(ul_ctx_t));
-    if (!(mf->ul_ctx)) {
-        goto open_failed;
-    }
-    memset(mf->ul_ctx, 0, sizeof(ul_ctx_t));
-    mf->dev_name = strdup(name);
-    if (!mf->dev_name) {
-        goto open_failed;
-    }
-    mf->sock = -1; // we are not opening remotely
-    mf->fd = -1;
-    mf->res_fd = -1;
-    mf->mpci_change = mpci_change_ul;
-    dev_type = mtcr_parse_name(name, &force, &domain, &bus, &dev, &func);
-    if (dev_type == MST_ERROR) {
-        goto open_failed;
-    }
-    mf->tp = dev_type;
-    mf->flags = MDEVS_TAVOR_CR;
-    if (dev_type == MST_PCICONF || dev_type == MST_PCI) {
-        // allocate lock to sync between parallel cr space requests (CONF/MEMORY only)
-        if (force) {
-            // need to extract the dbdf format from the full name
-            if (_extract_dbdf_from_full_name(name, &domain, &bus, &dev, &func)) {
-                goto open_failed;
-            }
-        }
-        if (_create_lock(mf, domain, bus, dev, func)) {
-            goto open_failed;
-        }
-
-        sprintf(pcidev, "%4.4x:%2.2x:%2.2x.%1.1x", domain, bus, dev, func);
-        if (!is_supported_device(pcidev)) {
-            errno = ENOTSUP;
-            goto open_failed;
-        }
-
-        if (init_dev_info_ul(mf, name, domain, bus, dev, func)) {
-            goto open_failed;
-        }
-    }
-    sprintf(cbuf, "/sys/bus/pci/devices/%4.4x:%2.2x:%2.2x.%1.1x/config", domain, bus, dev, func);
-
-    if (force) {
-        switch (dev_type) {
-            case MST_PCICONF:
-                rc = mtcr_pciconf_open(mf, name, adv_opt);
-                break;
-            case MST_PCI:
-                rc = mtcr_pcicr_open(mf, name, cbuf, 0, 0, adv_opt);
-                break;
-            case MST_IB:
-                rc = mtcr_inband_open(mf, name);
-                break;
-            default:
-                goto open_failed;
-        }
-
-        if (0 == rc) {
-            return mf;
-        }
-        goto open_failed;
-    }
-
-    if (dev_type == MST_PCICONF)
-        goto access_config_forced;
-
-    sprintf(rbuf, "/sys/bus/pci/devices/%4.4x:%2.2x:%2.2x.%1.1x/resource0", domain, bus, dev, func);
-
-    rc = mtcr_pcicr_open(mf, rbuf, cbuf, 0, 0, adv_opt);
-    if (rc == 0) {
-        return mf;
-    } else if (rc == 1) {
-        goto access_config_forced;
-    }
-
-    /* Following access methods need the resource BAR */
-    offset = mtcr_sysfs_get_offset(domain, bus, dev, func);
-    if (offset == -1 && !domain)
-        offset = mtcr_procfs_get_offset(bus, dev, func);
-    if (offset == -1)
-        goto access_config_forced;
-
-    sprintf(pdbuf, "/proc/bus/pci/%4.4x:%2.2x/%2.2x.%1.1x", domain, bus, dev, func);
-    rc = mtcr_pcicr_open(mf, pdbuf, cbuf, offset, 1, adv_opt);
-    if (rc == 0) {
-        return mf;
-    } else if (rc == 1) {
-        goto access_config_forced;
-    }
-
-    if (!domain) {
-        sprintf(pbuf, "/proc/bus/pci/%2.2x/%2.2x.%1.1x", bus, dev, func);
-        rc = mtcr_pcicr_open(mf, pbuf, cbuf, offset, 1, adv_opt);
-        if (rc == 0) {
-            return mf;
-        } else if (rc == 1) {
-            goto access_config_forced;
-        }
-    }
-
-#if CONFIG_USE_DEV_MEM
-    /* Non-portable, but helps some systems */
-    if (!mtcr_pcicr_open(mf, "/dev/mem", cbuf, offset, 0, adv_opt))
-        return mf;
-#endif
-
-access_config_forced:
-    sprintf(cbuf, "/sys/bus/pci/devices/%4.4x:%2.2x:%2.2x.%1.1x/config", domain, bus, dev, func);
-    if (!mtcr_pciconf_open(mf, cbuf, adv_opt))
-        return mf;
-
-    sprintf(pdbuf, "/proc/bus/pci/%4.4x:%2.2x/%2.2x.%1.1x", domain, bus, dev, func);
-    if (!mtcr_pciconf_open(mf, pdbuf, adv_opt))
-        return mf;
-
-    if (!domain) {
-        sprintf(pbuf, "/proc/bus/pci/%2.2x/%2.2x.%1.1x", bus, dev, func);
-        if (!mtcr_pciconf_open(mf, pdbuf, adv_opt))
-            return mf;
-    }
-
-open_failed:
-    err = errno;
-    mclose_ul(mf);
-    errno = err;
-    return NULL;
-}
-
-int init_dev_info_ul(mfile* mf, const char* dev_name, unsigned domain, unsigned bus, unsigned dev, unsigned func)
-{
-    int i;
-    int devs_len;
-    int ret = 0;
-    dev_info* devs = mdevices_info_v_ul(0xffffffff, &devs_len, 1);
-    for (i = 0; i < devs_len; i++) {
-        if (devs[i].pci.domain == domain &&
-            devs[i].pci.bus == bus &&
-            devs[i].pci.dev == dev &&
-            devs[i].pci.func == func) {
-                break;
-            }
-    }
-
-    if (i == devs_len) {
-        ret = 1;
-        goto cleanup;
-    }
-
-    mf->dinfo = malloc(sizeof(*mf->dinfo));
-    if (!mf->dinfo) {
-        errno = ENOMEM;
-        ret = 2;
-        goto cleanup;
-    }
-
-    memcpy(mf->dinfo, &devs[i], sizeof(*mf->dinfo));
-    strncpy(mf->dinfo->dev_name, dev_name, sizeof(mf->dinfo->dev_name)/sizeof(mf->dinfo->dev_name[0])-1);
-    if (mf->dinfo->type == MDEVS_TAVOR_CR) {
-        if (devs[i].pci.ib_devs) {
-            // count ib devs
-            int j;
-            char** curr = devs[i].pci.ib_devs;
-            int cnt = 0;
-            while (*(curr++)) {
-                cnt++;
-            }
-
-            mf->dinfo->pci.ib_devs = malloc((cnt + 1) * sizeof(char*));
-            if (!mf->dinfo->pci.ib_devs) {
-                errno = ENOMEM;
-                free(mf->dinfo);
-                ret = 3;
-                goto cleanup;
-            }
-
-            for (j = 0; j < cnt; j++) {
-                mf->dinfo->pci.ib_devs[j] = malloc(strlen(devs[i].pci.ib_devs[j]) + 1);
-                strcpy(mf->dinfo->pci.ib_devs[j], devs[i].pci.ib_devs[j]);
-            }
-            mf->dinfo->pci.ib_devs[cnt] = NULL;
-        }
-
-        if (devs[i].pci.net_devs) {
-            // count net devs
-            int j;
-            char** curr = devs[i].pci.net_devs;
-            int cnt = 0;
-            while (*(curr++)) {
-                cnt++;
-            }
-
-            mf->dinfo->pci.net_devs = malloc((cnt + 1) * sizeof(char*));
-            if (!mf->dinfo->pci.net_devs) {
-                errno = ENOMEM;
-                if (mf->dinfo->pci.ib_devs) {
-                    free(mf->dinfo->pci.ib_devs);
-                }
-                free(mf->dinfo);
-                ret = 4;
-                goto cleanup;
-            }
-
-            for (j = 0; j < cnt; j++) {
-                mf->dinfo->pci.net_devs[j] = malloc(strlen(devs[i].pci.net_devs[j]) + 1);
-                strcpy(mf->dinfo->pci.net_devs[j], devs[i].pci.net_devs[j]);
-            }
-            mf->dinfo->pci.net_devs[cnt] = NULL;
-        }
-    }
-
-    cleanup:
-    mdevices_info_destroy_ul(devs, devs_len);
-    return ret;
-}
-
-
-mfile *mopen_ul(const char *name)
-{
-    mfile* mf = mopen_ul_int(name, 0);
-
-    return mf;
-}
-
-int mclose_ul(mfile *mf)
-{
-    if (mf != NULL) {
-        ul_ctx_t *ctx = mf->ul_ctx;
-        if (ctx) {
-            if (ctx->mclose != NULL) {
-                // close icmd if if needed
-                if (mf->icmd.icmd_opened) {
-                    icmd_close(mf);
-                }
-                ctx->mclose(mf);
-            }
-
-            if (ctx->fdlock) {
-                close(ctx->fdlock);
-            }
-            if (ctx->res_fdlock) {
-                close(ctx->res_fdlock);
-            }
-            free(ctx);
-        }
-        if (mf->dev_name) {
-            free(mf->dev_name);
-        }
-        free(mf);
-    }
-    return 0;
-}
-
-#define IBDR_MAX_NAME_SIZE 128
-#define BDF_NAME_SIZE 12
-#define DEV_DIR_MAX_SIZE 128
-static
-int get_inband_dev_from_pci(char* inband_dev, char* pci_dev)
-{
-    unsigned domain = 0, bus = 0, dev = 0, func = 0;
-    int force = 0;
-    MType dev_type;
-    DIR* d;
-    struct dirent *dir;
-    char dirname[DEV_DIR_MAX_SIZE], subdirname[DEV_DIR_MAX_SIZE], linkname[DEV_DIR_MAX_SIZE];
-    int found = 0;
-
-    dev_type = mtcr_parse_name(pci_dev, &force, &domain, &bus, &dev, &func);
-
-    strcpy(dirname, "/sys/class/infiniband");
-    d = opendir(dirname);
-    if (d == NULL) {
-        errno = ENODEV;
-        return -2;
-    }
-
-    while ((dir = readdir(d)) != NULL) {
-        unsigned curr_domain = 0, curr_bus = 0, curr_dev = 0, curr_func = 0;
-        int curr_force = 0, link_size;
-        if (dir->d_name[0] == '.') {
-            continue;
-        }
-        sprintf(subdirname, "%s/%s/device", dirname, dir->d_name);
-        link_size = readlink(subdirname, linkname, DEV_DIR_MAX_SIZE);
-        dev_type = mtcr_parse_name(&linkname[link_size - BDF_NAME_SIZE], &curr_force, &curr_domain, &curr_bus,
-                &curr_dev, &curr_func);
-
-        if (domain == curr_domain && bus == curr_bus && dev == curr_dev && func == curr_func) {
-            sprintf(inband_dev, "ibdr-0,%s,1", dir->d_name);
-            found = 1;
-            break;
-        }
-    }
-
-    closedir(d);
-    (void) dev_type; // avoid compiler warrnings
-    if (found) {
-        return 0;
-    } else {
-        errno = ENODEV;
-        return -1;
-    }
-}
-
-static
-int reopen_pci_as_inband(mfile* mf)
-{
-    int rc;
-    char inband_dev[IBDR_MAX_NAME_SIZE];
-    rc = get_inband_dev_from_pci(inband_dev, mf->dev_name);
-    if (rc) {
-        errno = ENODEV;
-        return -1;
-    }
-
-    ((ul_ctx_t*)mf->ul_ctx)->mclose(mf);
-    free(mf->dev_name);
-    mf->dev_name = strdup(inband_dev);
-
-    rc = mtcr_inband_open(mf, inband_dev);
-    return rc;
-}
-
-int maccess_reg_mad_ul(mfile *mf, u_int8_t *data)
-{
-    int rc;
-
-    if (mf == NULL || data == NULL) {
-        return ME_BAD_PARAMS;
-    }
-
-    if (mf->tp != MST_IB) {
-        // Close current device and re-open as inband
-        rc = reopen_pci_as_inband(mf);
-        if (rc) {
-            errno = ENODEV; // for compatibility untill we change mtcr to use error code
-            return ME_REG_ACCESS_UNKNOWN_ERR;
-        }
-    }
-
-    return ((ul_ctx_t*)mf->ul_ctx)->maccess_reg(mf, data);
-}
-
-static void mtcr_fix_endianness(u_int32_t *buf, int len)
-{
-    int i;
-
-    for (i = 0; i < (len / 4); ++i) {
-        buf[i] = __be32_to_cpu(buf[i]);
-    }
-}
-
-int mread_buffer_ul(mfile *mf, unsigned int offset, u_int8_t* data, int byte_len)
-{
-    int rc;
-    rc = mread4_block_ul(mf, offset, (u_int32_t*) data, byte_len);
-    mtcr_fix_endianness((u_int32_t*) data, byte_len);
-    return rc;
-
-}
-
-int mwrite_buffer_ul(mfile *mf, unsigned int offset, u_int8_t* data, int byte_len)
-{
-    mtcr_fix_endianness((u_int32_t*) data, byte_len);
-    return mwrite4_block_ul(mf, offset, (u_int32_t*) data, byte_len);
-}
-
-/*
- * Reg Access Section
- */
-
-#define TLV_OPERATION_SIZE 4
-#define OP_TLV_SIZE        16
-#define REG_TLV_HEADER_LEN 4
-
-enum {
-    MAD_CLASS_REG_ACCESS = 1,
-};
-enum {
-    TLV_END = 0, TLV_OPERATION = 1, TLV_DR = 2, TLV_REG = 3, TLV_USER_DATA = 4,
-};
-
-#define REGISTER_HEADERS_SIZE 12
-#define INBAND_MAX_REG_SIZE 44
-#define ICMD_MAX_REG_SIZE (ICMD_MAX_CMD_SIZE - REGISTER_HEADERS_SIZE)
-#define TOOLS_HCR_MAX_REG_SIZE (TOOLS_HCR_MAX_MBOX - REGISTER_HEADERS_SIZE)
-
-static int supports_icmd(mfile* mf);
-static int supports_tools_cmdif_reg(mfile* mf);
-static int init_operation_tlv(struct OperationTlv *operation_tlv, u_int16_t reg_id, u_int8_t method);
-static int mreg_send_wrapper(mfile* mf, u_int8_t *data, int r_icmd_size, int w_icmd_size);
-static int mreg_send_raw(mfile *mf, u_int16_t reg_id, maccess_reg_method_t method, void *reg_data, u_int32_t reg_size,
-        u_int32_t r_size_reg, u_int32_t w_size_reg, int *reg_status);
-
-
-// maccess_reg: Do a reg_access for the mf device.
-// - reg_data is both in and out
-// TODO: When the reg operation succeeds but the reg status is != 0,
-//       a specific
-
-int maccess_reg_ul(mfile *mf,
-        u_int16_t reg_id,
-        maccess_reg_method_t reg_method,
-        void*     reg_data,
-        u_int32_t reg_size,
-        u_int32_t r_size_reg,
-        u_int32_t w_size_reg,
-        int*      reg_status)
-{
-    int rc;
-    if (mf == NULL || reg_data == NULL || reg_status == NULL || reg_size <= 0) {
-        return ME_BAD_PARAMS;
-    }
-    // check register size
-    unsigned int max_size = (unsigned int) mget_max_reg_size_ul(mf);
-    if (reg_size > (unsigned int) max_size) {
-        //reg too big
-        return ME_REG_ACCESS_SIZE_EXCCEEDS_LIMIT;
-    }
-#ifndef MST_UL
-    // TODO: add specific checks for each FW access method where needed
-    if (mf->flags & MDEVS_MLNX_OS) {
-        rc = mos_reg_access_raw(mf, reg_id, reg_method, reg_data, reg_size, reg_status);
-    } else if ((mf->flags & (MDEVS_IB | MDEVS_FWCTX)) ||
-               (mf->flags != MDEVS_IB && (supports_icmd(mf) || supports_tools_cmdif_reg(mf)))) {
-        rc = mreg_send_raw(mf, reg_id, reg_method, reg_data, reg_size, r_size_reg, w_size_reg, reg_status);
-    } else {
-        return ME_REG_ACCESS_NOT_SUPPORTED;
-    }
-#else
-    if (mf->tp == MST_IB || (supports_icmd(mf) || supports_tools_cmdif_reg(mf)) ) {
-        rc = mreg_send_raw(mf, reg_id, reg_method, reg_data, reg_size, r_size_reg, w_size_reg, reg_status);
-    } else {
-        return ME_REG_ACCESS_NOT_SUPPORTED;
-    }
-#endif
-
-    if (rc) {
-        return rc;
-    } else if (*reg_status) {
-        switch (*reg_status) {
-            case 1:
-                return ME_REG_ACCESS_DEV_BUSY;
-            case 2:
-                return ME_REG_ACCESS_VER_NOT_SUPP;
-            case 3:
-                return ME_REG_ACCESS_UNKNOWN_TLV;
-            case 4:
-                return ME_REG_ACCESS_REG_NOT_SUPP;
-            case 5:
-                return ME_REG_ACCESS_CLASS_NOT_SUPP;
-            case 6:
-                return ME_REG_ACCESS_METHOD_NOT_SUPP;
-            case 7:
-                return ME_REG_ACCESS_BAD_PARAM;
-            case 8:
-                return ME_REG_ACCESS_RES_NOT_AVLBL;
-            case 9:
-                return ME_REG_ACCESS_MSG_RECPT_ACK;
-            case 0x22:
-                return ME_REG_ACCESS_CONF_CORRUPT;
-            case 0x24:
-                return ME_REG_ACCESS_LEN_TOO_SMALL;
-            case 0x20:
-                return ME_REG_ACCESS_BAD_CONFIG;
-            case 0x21:
-                return ME_REG_ACCESS_ERASE_EXEEDED;
-            case 0x70:
-                return ME_REG_ACCESS_INTERNAL_ERROR;
-            default:
-                return ME_REG_ACCESS_UNKNOWN_ERR;
-        }
-    }
-
-    return ME_OK;
-}
-
-static int init_operation_tlv(struct OperationTlv *operation_tlv, u_int16_t reg_id, u_int8_t method)
-{
-    memset(operation_tlv, 0, sizeof(*operation_tlv));
-
-    operation_tlv->Type = TLV_OPERATION;
-    operation_tlv->class = MAD_CLASS_REG_ACCESS;
-    operation_tlv->len = TLV_OPERATION_SIZE;
-    operation_tlv->method = method;
-    operation_tlv->register_id = reg_id;
-    return 0;
-}
-
-///////////////////  Function that sends the register via the correct interface ///////////////////////////
-
-static int mreg_send_wrapper(mfile* mf, u_int8_t *data, int r_icmd_size, int w_icmd_size)
-{
-    int rc;
-    if (mf->tp == MST_IB) { //inband access
-        rc = maccess_reg_mad(mf, data);
-        if (rc) {
-            //printf("-E- 2. Access reg mad failed with rc = %#x\n", rc);
-            return ME_MAD_SEND_FAILED;
-        }
-    } else if (supports_icmd(mf)) {
-#if defined(MST_UL) && !defined(MST_UL_ICMD)
-        if (mf->vsec_supp) { // we support accessing fw via icmd space
-            rc = icmd_send_command_int(mf, FLASH_REG_ACCESS, data, w_icmd_size, r_icmd_size, 0);
-            if (rc) {
-                return rc;
-            }
-        } else { // send register via inband (maccess_reg_mad will open the device as inband thus consecutives calls will go to the first if)
-            rc = maccess_reg_mad(mf, data);
-            if (rc) {
-                //printf("-E- 2. Access reg mad failed with rc = %#x\n", rc);
-                return ME_MAD_SEND_FAILED;
-            }
-        }
-#else
-        rc = icmd_send_command_int(mf, FLASH_REG_ACCESS, data, w_icmd_size, r_icmd_size, 0);
-        if (rc) {
-            return rc;
-        }
-#endif
-    } else if (supports_tools_cmdif_reg(mf)) {
-        rc = tools_cmdif_reg_access(mf, data, w_icmd_size, r_icmd_size);
-        if (rc) {
-            return rc;
-        }
-    } else {
-        return ME_NOT_IMPLEMENTED;
-    }
-    return ME_OK;
-}
-
-static int mreg_send_raw(mfile *mf, u_int16_t reg_id, maccess_reg_method_t method, void *reg_data, u_int32_t reg_size,
-        u_int32_t r_size_reg, u_int32_t w_size_reg, int *reg_status)
-{
-    //printf("-D- reg_id = %d, reg_size = %d, r_size_reg = %d , w_size_reg = %d \n",reg_id,reg_size,r_size_reg,w_size_reg);
-    int mad_rc, cmdif_size = 0;
-    struct OperationTlv tlv;
-    struct reg_tlv tlv_info;
-    u_int8_t buffer[1024];
-
-    init_operation_tlv(&(tlv), reg_id, method);
-    // Fill Reg TLV
-    memset(&tlv_info, 0, sizeof(tlv_info));
-    tlv_info.Type = TLV_REG;
-    tlv_info.len = (reg_size + REG_TLV_HEADER_LEN) >> 2; // length is in dwords
-
-    // Pack the mad
-
-    cmdif_size += OperationTlv_pack(&tlv, buffer);
-    cmdif_size += reg_tlv_pack(&tlv_info, buffer + OP_TLV_SIZE);
-    //put the reg itself into the buffer
-    memcpy(buffer + OP_TLV_SIZE + REG_TLV_HEADER_LEN, reg_data, reg_size);
-    cmdif_size += reg_size;
-
-#ifdef _ENABLE_DEBUG_
-    fprintf(stdout, "-I-Tlv's of Data Sent:\n");
-    fprintf(stdout, "\tOperation Tlv\n");
-    OperationTlv_dump(&tlv, stdout);
-    fprintf(stdout, "\tReg Tlv\n");
-    reg_tlv_dump(&tlv_info, stdout);
-#endif
-    // printf("-D- reg_info.len = |%d, OP_TLV: %d, REG_TLV= %d, cmdif_size = %d\n", reg_info.len, OP_TLV_SIZE, REG_RLV_HEADER_LEN, cmdif_size);
-    // update r/w_size_reg with the size of op tlv and reg tlv as we need to read/write them as well
-    r_size_reg += OP_TLV_SIZE + REG_TLV_HEADER_LEN;
-    w_size_reg += OP_TLV_SIZE + REG_TLV_HEADER_LEN;
-    //printf("-D- reg_size = %d, r_size_reg = %d , w_size_reg = %d \n",reg_size,r_size_reg,w_size_reg);
-
-    mad_rc = mreg_send_wrapper(mf, buffer, r_size_reg, w_size_reg);
-    // Unpack the mad
-    OperationTlv_unpack(&tlv, buffer);
-    reg_tlv_unpack(&tlv_info, buffer + OP_TLV_SIZE);
-    // copy register back from the buffer
-    memcpy(reg_data, buffer + OP_TLV_SIZE + REG_TLV_HEADER_LEN, reg_size);
-
-#ifdef _ENABLE_DEBUG_
-    fprintf(stdout, "-I-Tlv's of Data Received:\n");
-    fprintf(stdout, "\tOperation Tlv\n");
-    OperationTlv_dump(&tlv, stdout);
-    fprintf(stdout, "\tReg Tlv\n");
-    reg_tlv_dump(&tlv_info, stdout);
-#endif
-    // Check the return value
-    *reg_status = tlv.status;
-    if (mad_rc) {
-        return mad_rc;
-    }
-    return ME_OK;
-}
-
-// needed device HW IDs
-#define CONNECTX3_PRO_HW_ID 0x1f7
-#define CONNECTX2_HW_ID 0x190
-#define CONNECTX3_HW_ID 0x1f5
-#define SWITCHX_HW_ID 0x245
-#define INFINISCALE4_HW_ID 0x1b3
-
-#define HW_ID_ADDR 0xf0014
-
-static int supports_icmd(mfile* mf)
-{
-    u_int32_t dev_id;
-
-    if (mread4_ul(mf, HW_ID_ADDR, &dev_id) != 4) { // cr might be locked and retured 0xbad0cafe but we dont care we search for device that supports icmd
-        return 0;
-    }
-    switch (dev_id & 0xffff) { // that the hw device id
-        case CONNECTX2_HW_ID:
-        case CONNECTX3_HW_ID:
-        case CONNECTX3_PRO_HW_ID:
-        case INFINISCALE4_HW_ID:
-        case SWITCHX_HW_ID:
-            return 0;
-        default:
-            break;
-    }
-    return 1;
-}
-
-static int supports_tools_cmdif_reg(mfile* mf)
-{
-    u_int32_t dev_id;
-    if (mread4_ul(mf, HW_ID_ADDR, &dev_id) != 4) { // cr might be locked and retured 0xbad0cafe but we dont care we search for device that supports tools cmdif
-        return 0;
-    }
-    switch (dev_id & 0xffff) { // that the hw device id
-        case CONNECTX3_HW_ID: //Cx3
-        case CONNECTX3_PRO_HW_ID: // Cx3-pro
-            if (tools_cmdif_is_supported(mf) == ME_OK) {
-                return 1;
-            }
-            break;
-        default:
-            break;
-    }
-    return 0;
-}
-
-int mget_max_reg_size_ul(mfile *mf)
-{
-    if (mf->acc_reg_params.max_reg_size) {
-        return mf->acc_reg_params.max_reg_size;
-    } else if (mf->tp == MST_IB) {
-        mf->acc_reg_params.max_reg_size = INBAND_MAX_REG_SIZE;
-    } else if (supports_icmd(mf)) { // we support icmd and we dont use IB interface -> we use icmd for reg access
-        if (mf->vsec_supp) {
-            mf->acc_reg_params.max_reg_size = ICMD_MAX_REG_SIZE;
-        } else {
-            // we send via inband
-            mf->acc_reg_params.max_reg_size = INBAND_MAX_REG_SIZE;
-        }
-    } else if (supports_tools_cmdif_reg(mf)) {
-        mf->acc_reg_params.max_reg_size = TOOLS_HCR_MAX_REG_SIZE;
-    }
-    return mf->acc_reg_params.max_reg_size;
-}
-
-int mclear_pci_semaphore_ul(const char* name)
-{
-   mfile* mf;
-   int rc = ME_OK;
-   mf = mopen_ul_int(name, Clear_Vsec_Semaphore);
-   if (!mf) {
-       return ME_ERROR;
-   }
-   if ((mf->tp & (MST_PCICONF | MST_PCI)) == 0) {
-       rc = ME_UNSUPPORTED_ACCESS_TYPE;
-   }
-   mclose_ul(mf);
-   return rc;
-}
-
-/************************************
- * Function: m_err2str
- ************************************/
-const char* m_err2str(MError status)
-{
-   switch(status) {
-   case ME_OK:
-       return "ME_OK";
-   case ME_ERROR:
-       return "General error";
-   case ME_BAD_PARAMS:
-       return "ME_BAD_PARAMS";
-   case ME_CR_ERROR:
-       return "ME_CR_ERROR";
-   case ME_NOT_IMPLEMENTED:
-       return "ME_NOT_IMPLEMENTED";
-   case ME_SEM_LOCKED:
-       return "Semaphore locked";
-   case ME_MEM_ERROR:
-       return "ME_MEM_ERROR";
-   case ME_UNSUPPORTED_OPERATION:
-       return "ME_UNSUPPORTED_OPERATION";
-
-   case ME_MAD_SEND_FAILED:
-       return "ME_MAD_SEND_FAILED";
-   case ME_UNKOWN_ACCESS_TYPE:
-       return "ME_UNKOWN_ACCESS_TYPE";
-   case ME_UNSUPPORTED_ACCESS_TYPE:
-       return "ME_UNSUPPORTED_ACCESS_TYPE";
-   case ME_UNSUPPORTED_DEVICE:
-       return "ME_UNSUPPORTED_DEVICE";
-
-   // Reg access errors
-   case ME_REG_ACCESS_BAD_STATUS_ERR:
-       return "ME_REG_ACCESS_BAD_STATUS_ERR";
-   case ME_REG_ACCESS_BAD_METHOD:
-       return "Bad method";
-   case ME_REG_ACCESS_NOT_SUPPORTED:
-       return "Register access isn't supported by device";
-   case ME_REG_ACCESS_DEV_BUSY:
-       return "Device is busy";
-   case ME_REG_ACCESS_VER_NOT_SUPP:
-       return "Version not supported";
-   case ME_REG_ACCESS_UNKNOWN_TLV:
-       return "Unknown TLV";
-   case ME_REG_ACCESS_REG_NOT_SUPP:
-       return "Register not supported";
-   case ME_REG_ACCESS_CLASS_NOT_SUPP:
-       return "Class not supported";
-   case ME_REG_ACCESS_METHOD_NOT_SUPP:
-       return "Method not supported";
-   case ME_REG_ACCESS_BAD_PARAM:
-       return "Bad parameter";
-   case ME_REG_ACCESS_RES_NOT_AVLBL:
-       return "Resource not available";
-   case ME_REG_ACCESS_MSG_RECPT_ACK:
-       return "Message receipt ack";
-   case ME_REG_ACCESS_UNKNOWN_ERR:
-       return "Unknown register error";
-   case ME_REG_ACCESS_SIZE_EXCCEEDS_LIMIT:
-       return "Register is too large";
-   case ME_REG_ACCESS_CONF_CORRUPT:
-       return "Config Section Corrupted";
-   case ME_REG_ACCESS_LEN_TOO_SMALL:
-       return "given register length too small for Tlv";
-   case ME_REG_ACCESS_BAD_CONFIG:
-       return "configuration refused";
-   case ME_REG_ACCESS_ERASE_EXEEDED:
-       return   "erase count exceeds limit";
-   case ME_REG_ACCESS_INTERNAL_ERROR:
-       return "FW internal error";
-
-   // ICMD access errors
-   case ME_ICMD_STATUS_CR_FAIL:
-       return "ME_ICMD_STATUS_CR_FAIL";
-   case ME_ICMD_STATUS_SEMAPHORE_TO:
-       return "ME_ICMD_STATUS_SEMAPHORE_TO";
-   case ME_ICMD_STATUS_EXECUTE_TO:
-       return "ME_ICMD_STATUS_EXECUTE_TO";
-   case ME_ICMD_STATUS_IFC_BUSY:
-       return "ME_ICMD_STATUS_IFC_BUSY";
-   case ME_ICMD_STATUS_ICMD_NOT_READY:
-       return "ME_ICMD_STATUS_ICMD_NOT_READY";
-   case ME_ICMD_UNSUPPORTED_ICMD_VERSION:
-       return "ME_ICMD_UNSUPPORTED_ICMD_VERSION";
-   case ME_ICMD_NOT_SUPPORTED:
-       return "ME_REG_ACCESS_ICMD_NOT_SUPPORTED";
-   case ME_ICMD_INVALID_OPCODE:
-       return "ME_ICMD_INVALID_OPCODE";
-   case ME_ICMD_INVALID_CMD:
-       return "ME_ICMD_INVALID_CMD";
-   case ME_ICMD_OPERATIONAL_ERROR:
-       return "ME_ICMD_OPERATIONAL_ERROR";
-   case ME_ICMD_BAD_PARAM:
-       return "ME_ICMD_BAD_PARAM";
-   case ME_ICMD_BUSY:
-       return "ME_ICMD_BUSY";
-   case ME_ICMD_ICM_NOT_AVAIL:
-       return "ME_ICMD_ICM_NOT_AVAIL";
-   case ME_ICMD_WRITE_PROTECT:
-       return "ME_ICMD_WRITE_PROTECT";
-   case ME_ICMD_UNKNOWN_STATUS:
-       return "ME_ICMD_UNKNOWN_STATUS";
-   case ME_ICMD_SIZE_EXCEEDS_LIMIT:
-       return "ME_ICMD_SIZE_EXCEEDS_LIMIT";
-
-       // TOOLS HCR access errors
-   case ME_CMDIF_BUSY:
-       return "Tools HCR busy";
-   case ME_CMDIF_TOUT:
-       return "Tools HCR time out.";
-   case ME_CMDIF_BAD_OP:
-       return "Operation not supported";
-   case ME_CMDIF_NOT_SUPP:
-       return "Tools HCR not supported";
-   case ME_CMDIF_BAD_SYS:
-       return "bad system status (driver may be down or Fw does not support this operation)";
-   case ME_CMDIF_UNKN_TLV:
-       return "Unknown TLV";
-   case ME_CMDIF_RES_STATE:
-       return "Bad reset state";
-   case ME_CMDIF_UNKN_STATUS:
-       return "Unknown status";
-
-       // MAD IFC errors
-   case ME_MAD_BUSY:
-       return "Temporarily busy. MAD discarded. This is not an error";
-   case ME_MAD_REDIRECT:
-       return "Redirection. This is not an error";
-   case ME_MAD_BAD_VER:
-       return "Bad version";
-   case ME_MAD_METHOD_NOT_SUPP:
-       return "Method not supported";
-   case ME_MAD_METHOD_ATTR_COMB_NOT_SUPP:
-       return "Method and attribute combination isn't supported";
-   case ME_MAD_BAD_DATA:
-       return "Bad attribute modifier or field";
-   case ME_MAD_GENERAL_ERR:
-       return "Unknown MAD error";
-
-   default:
-       return "Unknown error code";
-   }
-}
diff --git a/mtcr_ul/mtcr_ul_com.h b/mtcr_ul/mtcr_ul_com.h
deleted file mode 100644 (file)
index e336e80..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * mtcr_ul_com.h
- *
- *  Created on: Feb 16, 2016
- *      Author: adham
- */
-
-#ifndef USER_MTCR_MTCR_UL_COM_H_
-#define USER_MTCR_MTCR_UL_COM_H_
-
-#include "mtcr_com_defs.h"
-#include "mtcr_mf.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Read 4 bytes, return number of succ. read bytes or -1 on failure
- */
-int mread4_ul(mfile* mf, unsigned int offset, u_int32_t *value);
-
-/*
- * Write 4 bytes, return number of succ. written bytes or -1 on failure
- */
-int mwrite4_ul(mfile* mf, unsigned int offset, u_int32_t value);
-
-
-int mread4_block_ul(mfile* mf, unsigned int offset, u_int32_t* data, int byte_len);
-int mwrite4_block_ul(mfile* mf, unsigned int offset, u_int32_t* data, int byte_len);
-
-int msw_reset_ul(mfile* mf);
-int mhca_reset_ul(mfile* mf);
-
-/*
- * Get list of MST_ul(Mellanox Software Tools) devices.
- * Put all device names as null-terminated strings to buf.
- *
- * Return number of devices found or -1 if buf overflow
- */
-int mdevices_ul(char *buf, int len, int mask);
-
-/*
- * Get list of MST_ul(Mellanox Software Tools) devices.
- * Put all device names as null-terminated strings to buf.
- *
- * Return number of devices found or -1 if buf overflow
- */
-int mdevices_v_ul(char *buf, int len, int mask, int verbosity);
-
-/*
- * Get list of MST_ul(Mellanox Software Tools) devices info records.
- * Return a dynamic allocated array of dev_info records.
- * len will be updated to hold the array length
- *
- */
-dev_info* mdevices_info_ul(int mask, int* len);
-
-/*
- *  * Get list of MST (Mellanox Software Tools) devices info records.
- *  * Return a dynamic allocated array of dev_info records.
- *  * len will be updated to hold the array length
- *  * Verbosity will decide whether to get all the Physical functions or not.
- */
-dev_info* mdevices_info_v_ul(int mask, int* len, int verbosity);
-
-/*
- * Open Mellanox Software tools_ul(mst) driver. Device type==INFINIHOST
- * Return valid void ptr or 0 on failure
- */
-mfile *mopen_ul(const char *name);
-
-/*
- * Close Mellanox driver
- * req. descriptor
- */
-int mclose_ul(mfile* mf);
-
-int maccess_reg_mad_ul(mfile* mf, u_int8_t *data);
-
-int maccess_reg_ul(mfile*  mf,
-                u_int16_t  reg_id,
-                maccess_reg_method_t reg_method,
-                void*      reg_data,
-                u_int32_t  reg_size,
-                u_int32_t   r_size_reg, // used when sending via icmd interface_ul(how much data should be read back to the user)
-                u_int32_t   w_size_reg, // used when sending via icmd interface_ul(how much data should be written to the scratchpad)
-                                        // if you dont know what you are doing then r_size_reg = w_size_reg = your_register_size
-                int       *reg_status);
-
-
-
-int tools_cmdif_send_inline_cmd_ul(mfile* mf, u_int64_t in_param, u_int64_t* out_param,
-                                u_int32_t input_modifier, u_int16_t opcode, u_int8_t  opcode_modifier);
-
-int tools_cmdif_send_mbox_command_ul(mfile* mf, u_int32_t input_modifier, u_int16_t opcode, u_int8_t  opcode_modifier,
-                                  int data_offs_in_mbox, void* data, int data_size, int skip_write);
-
-int tools_cmdif_unlock_semaphore_ul(mfile* mf);
-
-
-int mget_max_reg_size_ul(mfile* mf);
-
-int mread_buffer_ul(mfile* mf, unsigned int offset, u_int8_t* data, int byte_len);
-int mwrite_buffer_ul(mfile* mf, unsigned int offset, u_int8_t* data, int byte_len);
-
-int mclear_pci_semaphore_ul(const char* name);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* USER_MTCR_MTCR_UL_COM_H_ */
diff --git a/mtcr_ul/mtcr_ul_icmd_cif.c b/mtcr_ul/mtcr_ul_icmd_cif.c
deleted file mode 100644 (file)
index fed5973..0000000
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <bit_slice.h>
-#include <common/tools_utils.h>
-#include "mtcr_icmd_cif.h"
-#include "mtcr_ib_res_mgt.h"
-//#define _DEBUG_MODE   // un-comment this to enable debug prints
-
-#define IN
-#define OUT
-#define INOUT
-
-#define STAT_CFG_NOT_DONE_ADDR_CIB   0xb0004
-#define STAT_CFG_NOT_DONE_ADDR_CX4   0xb0004
-#define STAT_CFG_NOT_DONE_ADDR_SW_IB   0x80010
-#define STAT_CFG_NOT_DONE_BITOFF_CIB   31
-#define STAT_CFG_NOT_DONE_BITOFF_CX4   31
-#define STAT_CFG_NOT_DONE_BITOFF_SW_IB 0
-#define ICMD_VERSION_BITOFF 24
-#define ICMD_VERSION_BITLEN 8
-#define CMD_PTR_ADDR_CIB        0x0
-#define CMD_PTR_ADDR_SW_IB      0x80000
-#define CMD_PTR_ADDR_CX4        CMD_PTR_ADDR_CIB
-#define CMD_PTR_BITOFF      0
-#define CMD_PTR_BITLEN      24
-#define CTRL_OFFSET         0x3fc
-#define BUSY_BITOFF         0
-#define BUSY_BITLEN         1
-#define OPCODE_BITOFF       16
-#define OPCODE_BITLEN       16
-#define STATUS_BITOFF       8
-#define STATUS_BITLEN       8
-#define VCR_CTRL_ADDR       0x0
-#define VCR_SEMAPHORE62     0x0 // semaphore Domain
-#define VCR_CMD_ADDR        0x100000 // mailbox addr
-#define VCR_CMD_SIZE_ADDR   0x1000 // mailbox size
-
-/*
- * Macros for accessing CR-Space
- */
-#define MWRITE_BUF(mf, offset, data, byte_len)                                             \
-    (((unsigned)(mwrite_buffer((mf), (offset), (data), (byte_len))) != (unsigned)(byte_len))  \
-        ? ME_ICMD_STATUS_CR_FAIL : ME_OK)
-#define MREAD_BUF(mf, offset, data, byte_len)                                              \
-    (((unsigned)(mread_buffer((mf), (offset), (data), (byte_len))) != (unsigned)(byte_len))   \
-        ? ME_ICMD_STATUS_CR_FAIL : ME_OK)
-
-#define MWRITE4(mf, offset, value)                             \
-    (((unsigned)(mwrite4((mf), (offset), (value))) != 4U)      \
-        ? ME_ICMD_STATUS_CR_FAIL : ME_OK)
-#define MREAD4(mf, offset, ptr)                                \
-    (((unsigned)(mread4((mf), (offset), (ptr))) != 4U)         \
-        ? ME_ICMD_STATUS_CR_FAIL : ME_OK)
-
-/*
- * Macros for accessing Icmd Space
- */
-#define SET_SPACE_FOR_ICMD_ACCESS(mf)   \
-    if (mf->vsec_supp) {               \
-        mset_addr_space(mf, AS_ICMD);   \
-    }
-#define SET_SPACE_FOR_SEMAPHORE_ACCESS(mf)   \
-    if (mf->vsec_supp) {               \
-        mset_addr_space(mf, AS_SEMAPHORE);   \
-    }
-#define RESTORE_SPACE(mf) mset_addr_space(mf, AS_CR_SPACE)
-
-#define MWRITE4_ICMD(mf, offset, value, action_on_fail)\
-    do {\
-        SET_SPACE_FOR_ICMD_ACCESS(mf);\
-        if (mwrite4(mf, offset, value) != 4) {\
-            mset_addr_space(mf, AS_CR_SPACE);\
-            action_on_fail;\
-        }\
-        RESTORE_SPACE(mf);\
-    }while(0)
-
-#define MREAD4_ICMD(mf, offset, ptr, action_on_fail)\
-    do {\
-        SET_SPACE_FOR_ICMD_ACCESS(mf);\
-        DBG_PRINTF("-D- MREAD4_ICMD: off: %x, addr_space: %x\n", offset, mf->address_space);\
-        if (mread4(mf, offset, ptr) != 4) {\
-            RESTORE_SPACE(mf);\
-            action_on_fail;\
-        }\
-        RESTORE_SPACE(mf);\
-    }while(0)
-
-#define MWRITE_BUF_ICMD(mf, offset, data, byte_len, action_on_fail)\
-    do {\
-        SET_SPACE_FOR_ICMD_ACCESS(mf);\
-        if ((unsigned)mwrite_buffer(mf, offset, data, byte_len) != (unsigned)byte_len) {\
-            RESTORE_SPACE(mf);\
-            action_on_fail;\
-        }\
-        RESTORE_SPACE(mf);\
-    }while(0)
-
-#define MREAD_BUF_ICMD(mf, offset, data, byte_len, action_on_fail)\
-    do {\
-        SET_SPACE_FOR_ICMD_ACCESS(mf);\
-        if ((unsigned)mread_buffer(mf, offset, data, byte_len) != (unsigned)byte_len) {\
-            RESTORE_SPACE(mf);\
-            action_on_fail;\
-        }\
-        RESTORE_SPACE(mf);\
-    }while(0)
-
-/*
- * Macros for accessing semaphore space
- */
-#define MWRITE4_SEMAPHORE(mf, offset, value, action_on_fail)\
-        do {\
-        SET_SPACE_FOR_SEMAPHORE_ACCESS(mf);\
-        if (mwrite4(mf, offset, value) != 4) {\
-           RESTORE_SPACE(mf);\
-            action_on_fail;\
-        }\
-        RESTORE_SPACE(mf);\
-    }while(0)
-
-
-#define MREAD4_SEMAPHORE(mf, offset, ptr, action_on_fail)\
-    do {\
-        SET_SPACE_FOR_SEMAPHORE_ACCESS(mf);\
-        if (mread4(mf, offset, ptr) != 4) {\
-            RESTORE_SPACE(mf);\
-            action_on_fail;\
-        }\
-        RESTORE_SPACE(mf);\
-    }while(0)
-
-
-#ifdef _DEBUG_MODE
-#define DBG_PRINTF(...) fprintf(stderr, __VA_ARGS__)
-#else
-#define DBG_PRINTF(...)
-#endif
-
-enum {
-    RW_READ  = 0x1,
-    RW_WRITE = 0x0
-};
-
-/***********************************************
- *
- *  get correct addresses for : STAT_CCFG_NOT_DONE_ADDR, SEMAPHORE_ADDR, HCR_ADDR, CMD_PTR_ADDR
- *  according to Hw devid
- */
-
-#define HW_ID_ADDR 0xf0014
-#define CIB_HW_ID 511
-#define CX4_HW_ID 521
-#define CX4LX_HW_ID 523
-#define CX5_HW_ID 525
-#define SW_IB_HW_ID 583
-#define SW_EN_HW_ID 585
-#define SW_IB2_HW_ID 587
-
-#define GET_ADDR(mf, addr_cib, addr_cx4, addr_sw_ib, addr)\
-    do {\
-        u_int32_t _hw_id;\
-        MREAD4((mf), (HW_ID_ADDR), &(_hw_id));\
-        switch (_hw_id & 0xffff) {\
-        case (CX4_HW_ID):\
-        case (CX4LX_HW_ID):\
-        case (CX5_HW_ID):\
-            addr = addr_cx4;\
-            break;\
-        case (SW_IB_HW_ID):\
-        case (SW_EN_HW_ID):\
-        case (SW_IB2_HW_ID):\
-            addr = addr_sw_ib;\
-            break;\
-        default:\
-            addr = addr_cib;\
-            break;\
-        }\
-       } while(0)
-
-/*
- * go - Sets the busy bit to 1, wait untill it is 0 again.
- */
-static int go(mfile *mf) {
-    u_int32_t reg,
-              busy;
-    int i, wait;
-
-    DBG_PRINTF("Go()\n");
-
-    MREAD4_ICMD(mf, mf->icmd.ctrl_addr, &reg, return ME_ICMD_STATUS_CR_FAIL);
-    busy = EXTRACT(reg, BUSY_BITOFF, BUSY_BITLEN);
-    if (busy)
-        return ME_ICMD_STATUS_IFC_BUSY;
-
-    reg = MERGE(reg, 1, BUSY_BITOFF, BUSY_BITLEN);
-    MWRITE4_ICMD(mf, mf->icmd.ctrl_addr, reg, return ME_ICMD_STATUS_CR_FAIL);
-
-    DBG_PRINTF("Busy-bit raised. Waiting for command to exec...\n");
-
-    // wait for command to execute
-    i = 0; wait = 1;
-    do {
-        if (++i > 1024) {  // this number of iterations should take ~~30sec, which is the defined command t/o
-            DBG_PRINTF("Execution timed-out\n");
-            return ME_ICMD_STATUS_EXECUTE_TO;
-        }
-
-        DBG_PRINTF("Waiting for busy-bit to clear (iteration #%d)...\n", i);
-
-        if (i > 5) { // after some iteration put sleeps bwtween busy-wait
-            msleep(wait);  // don't hog the cpu with busy-wait
-            if (wait < 8) wait *= 2;    // exponential backoff - up-to 8ms between polls
-        }
-        MREAD4_ICMD(mf, mf->icmd.ctrl_addr, &reg, return ME_ICMD_STATUS_CR_FAIL);
-        busy = EXTRACT(reg, BUSY_BITOFF, BUSY_BITLEN);
-
-    } while (busy);
-
-    DBG_PRINTF("Command completed!\n");
-
-    return ME_OK;
-}
-
-/*
- * set_opcode
- */
-static int set_opcode(mfile *mf, u_int16_t opcode) {
-    u_int32_t reg;
-
-    MREAD4_ICMD(mf, mf->icmd.ctrl_addr, &reg, return ME_ICMD_STATUS_CR_FAIL);
-    reg = MERGE(reg, opcode, OPCODE_BITOFF, OPCODE_BITLEN);
-    MWRITE4_ICMD(mf, mf->icmd.ctrl_addr, reg, return ME_ICMD_STATUS_CR_FAIL);
-
-    return ME_OK;
-}
-
-/*
- * get_status
- */
-
-static int translate_status(int status) {
-       switch (status) {
-               case 0x0:
-                       return ME_OK;
-               case 0x1:
-                       return ME_ICMD_INVALID_OPCODE;
-               case 0x2:
-                       return ME_ICMD_INVALID_CMD;
-               case 0x3:
-                       return ME_ICMD_OPERATIONAL_ERROR;
-               case 0x4:
-                       return ME_ICMD_BAD_PARAM;
-               case 0x5:
-                       return ME_ICMD_BUSY;
-               case 0x6:
-                   return ME_ICMD_ICM_NOT_AVAIL;
-               case 0x7:
-                   return ME_ICMD_WRITE_PROTECT;
-               default:
-                       return ME_ICMD_UNKNOWN_STATUS;
-       }
-}
-static int get_status(mfile *mf) {
-    u_int32_t reg;
-
-    MREAD4_ICMD(mf, mf->icmd.ctrl_addr, &reg, return ME_ICMD_STATUS_CR_FAIL);
-    return translate_status(EXTRACT(reg, STATUS_BITOFF, STATUS_BITLEN));
-}
-
-/*
- * icmd_is_cmd_ifc_ready
- */
-static int icmd_is_cmd_ifc_ready(mfile *mf) {
-    u_int32_t reg;
-    if (MREAD4(mf, mf->icmd.static_cfg_not_done_addr, &reg)) return ME_ICMD_STATUS_CR_FAIL;
-    u_int32_t bit_val = EXTRACT(reg, mf->icmd.static_cfg_not_done_offs, 1);
-    /* adrianc: for SWITCHIB the polarity of this bit is opposite than CONNECTIB/CONNECTX4
-       i.e for CONNECTIB/CONNECTX4: this bit is 1 while fw is loading(indicating configuration is not done), then this bit is set to 0 by fw when the configurations
-       are finished.
-       for SWITCHIB: this bit indicates "configuration done" i.e when 0 the fw is not ready and when 1 we are ready*/
-    // atm the polarity hasnt changed
-    // ugly Hack to save code: we use the same macro as GET_ADDR (use a block to avoid compilation errors)
-    u_int32_t expected_val;
-
-    {
-        //          CIB  CX4  SW-IB
-        GET_ADDR(mf, 0,   0,    0, expected_val); // we expect the bit_val to be : 0- CIB , 1- CX4/SWIB
-    }
-    return (bit_val == expected_val) ?  ME_OK: ME_ICMD_STATUS_ICMD_NOT_READY;
-}
-
-#define SMP_ICMD_SEM_ADDR 0x0
-
-/*
- * icmd_clear_semaphore
- */
-int icmd_clear_semaphore(mfile *mf)
-{
-    DBG_PRINTF("Clearing semaphore\n");
-    // open icmd interface by demand
-    int ret;
-    if ((ret = icmd_open(mf))) {
-        return ret;
-    }
-    MWRITE4_SEMAPHORE(mf, mf->icmd.semaphore_addr, 0, return ME_ICMD_STATUS_CR_FAIL);
-    mf->icmd.took_semaphore = 0;
-    return ME_OK;
-}
-
-/*
- * icmd_take_semaphore
- */
-
-static int icmd_take_semaphore_com(mfile *mf, u_int32_t expected_read_val)
-{
-    u_int32_t read_val;
-    unsigned retries = 0;
-
-    DBG_PRINTF("Taking semaphore...\n");
-     do {    // loop while the semaphore is taken by someone else
-         if (++retries > 256) {
-             return ME_ICMD_STATUS_SEMAPHORE_TO;
-         }
-         if (mf->vsec_supp) {
-             //write expected val before reading it
-             MWRITE4_SEMAPHORE(mf, mf->icmd.semaphore_addr, expected_read_val, return ME_ICMD_STATUS_CR_FAIL);
-         }
-         MREAD4_SEMAPHORE(mf, mf->icmd.semaphore_addr, &read_val, return ME_ICMD_STATUS_CR_FAIL);
-         if (read_val == expected_read_val)
-             break;
-         msleep(rand() % 20);
-     } while (read_val != expected_read_val);
-
-     mf->icmd.took_semaphore = 1;
-     DBG_PRINTF("Semaphore taken successfully...\n");
-
-     return ME_OK;
-}
-
-int icmd_take_semaphore(mfile *mf)
-{
-    // open icmd interface by demand
-    int ret;
-    static u_int32_t pid = 0;
-    if ((ret = icmd_open(mf))) {
-        return ret;
-    }
-
-    if (mf->vsec_supp) {
-        if (!pid) {
-            pid = getpid();
-        }
-        return icmd_take_semaphore_com(mf, pid);
-    } else {
-        return icmd_take_semaphore_com(mf, 0);
-    }
-}
-
-int icmd_send_command(mfile    *mf,
-                      IN    int     opcode,
-                      INOUT void*   data,
-                      IN    int     data_size,
-                      IN    int     skip_write)
-{
-    return icmd_send_command_int(mf, opcode, data, data_size, data_size, skip_write);
-}
-
-/*
- * icmd_send_command
- */
-int icmd_send_command_int(mfile    *mf,
-                      IN    int     opcode,
-                      INOUT void*   data,
-                      IN    int     write_data_size,
-                      IN    int     read_data_size,
-                      IN    int     skip_write)
-{
-
-    int ret;
-    // open icmd interface by demand
-    if ((ret = icmd_open(mf))) {
-        return ret;
-    }
-    // check data size does not exceed mailbox size
-    if (write_data_size > (int)mf->icmd.max_cmd_size || \
-         read_data_size > (int)mf->icmd.max_cmd_size ) {
-        DBG_PRINTF("write_data_size <%x-%x> mf->icmd.max_cmd_size .. ", write_data_size, mf->icmd.max_cmd_size);
-        DBG_PRINTF("read_data_size <%x-%x> mf->icmd.max_cmd_size \n", read_data_size, mf->icmd.max_cmd_size);
-        return ME_ICMD_SIZE_EXCEEDS_LIMIT;
-    }
-
-    if ((ret = icmd_is_cmd_ifc_ready(mf)))
-    {
-        return ret;
-    }
-
-    if ((ret = icmd_take_semaphore(mf))) {
-        return ret;
-    }
-
-    if ((ret = set_opcode(mf, opcode))) {
-        goto cleanup;
-    }
-
-    if (!skip_write)
-    {
-        DBG_PRINTF("-D- Writing command to mailbox");
-        MWRITE_BUF_ICMD(mf, mf->icmd.cmd_addr, data, write_data_size, ret=ME_ICMD_STATUS_CR_FAIL; goto cleanup;);
-    }
-
-    if ((ret = go(mf))) {
-        goto cleanup;
-    }
-
-    if ((ret = get_status(mf))) {
-        goto cleanup;
-    }
-    DBG_PRINTF("-D- Reading command from mailbox");
-    MREAD_BUF_ICMD(mf, mf->icmd.cmd_addr, data, read_data_size, ret=ME_ICMD_STATUS_CR_FAIL; goto cleanup;);
-
-    ret = ME_OK;
-cleanup:
-    icmd_clear_semaphore(mf);
-    return ret;
-}
-
-static int icmd_init_vcr(mfile* mf)
-{
-     mf->icmd.cmd_addr = VCR_CMD_ADDR;
-     mf->icmd.ctrl_addr = VCR_CTRL_ADDR;
-     mf->icmd.semaphore_addr = VCR_SEMAPHORE62;
-     DBG_PRINTF("-D- Getting VCR_CMD_SIZE_ADDR\n");
-     // get max command size
-     MREAD4_ICMD(mf,VCR_CMD_SIZE_ADDR, &(mf->icmd.max_cmd_size), return ME_ICMD_STATUS_CR_FAIL;);
-
-     // adrianc: they should provide this bit as well in virtual cr-space atm get from cr-space
-     GET_ADDR(mf,STAT_CFG_NOT_DONE_ADDR_CIB, STAT_CFG_NOT_DONE_ADDR_CX4, STAT_CFG_NOT_DONE_ADDR_SW_IB, mf->icmd.static_cfg_not_done_addr);
-     GET_ADDR(mf, STAT_CFG_NOT_DONE_BITOFF_CIB, STAT_CFG_NOT_DONE_BITOFF_CIB, STAT_CFG_NOT_DONE_BITOFF_SW_IB, mf->icmd.static_cfg_not_done_offs);
-     mf->icmd.icmd_opened = 1;
-     DBG_PRINTF("-D- iCMD command addr: 0x%x\n", mf->icmd.cmd_addr);
-     DBG_PRINTF("-D- iCMD ctrl addr: 0x%x\n", mf->icmd.ctrl_addr);
-     DBG_PRINTF("-D- iCMD semaphore addr(semaphore space): 0x%x\n", mf->icmd.semaphore_addr);
-     DBG_PRINTF("-D- iCMD max mailbox size: 0x%x\n", mf->icmd.max_cmd_size);
-     DBG_PRINTF("-D- iCMD stat_cfg_not_done addr: 0x%x:%d\n", mf->icmd.static_cfg_not_done_addr, mf->icmd.static_cfg_not_done_offs);
-     return ME_OK;
-}
-
-
-int icmd_open(mfile *mf)
-{
-    if (mf->icmd.icmd_opened) {
-        return ME_OK;
-    }
-
-    mf->icmd.took_semaphore = 0;
-    mf->icmd.ib_semaphore_lock_supported = 0;
-    // attempt to open via CR-Space
-#if defined(MST_UL) && !defined(MST_UL_ICMD)
-    if (mf->vsec_supp) {
-        return icmd_init_vcr(mf);
-    }
-    return ME_ICMD_NOT_SUPPORTED;
-#else
-    if (mf->vsec_supp) {
-        return icmd_init_vcr(mf);
-    } else {
-        return icmd_init_cr(mf);
-    }
-#endif
-}
-
-/*
- * icmd_close
- */
-void icmd_close(mfile *mf) {
-    if (mf) {
-        if (mf->icmd.took_semaphore)
-            icmd_clear_semaphore(mf);
-        mf->icmd.icmd_opened = 0;
-    }
-}
-
diff --git a/mtcr_ul/packets_common.c b/mtcr_ul/packets_common.c
deleted file mode 100644 (file)
index ff84a0c..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include "packets_common.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#ifdef __WIN__
-    #include <Winsock2.h>   // for htonl
-#endif
-
-
-/************************************/
-void push_to_buff_64(u_int8_t *buff, u_int32_t bit_offset, u_int64_t field_value)
-{
-#if defined(__ia64__)
-    u_int32_t *buffer = PTR_32_OF_BUFF(buff, (bit_offset / 8));
-    u_int64_t value = CPU_TO_BE64(field_value);
-    memcpy(buffer, &value, sizeof(value));
-#else
-    u_int64_t *buffer = PTR_64_OF_BUFF(buff, (bit_offset / 8));
-    memcpy(buffer, &field_value, sizeof(field_value));
-    *buffer = CPU_TO_BE64(*buffer);
-#endif
-}
-
-
-/************************************/
-void push_to_buff_32(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_value)
-{
-    u_int32_t *buffer = PTR_32_OF_BUFF(buff, (bit_offset / 8));
-    memcpy(buffer, &field_value, sizeof(field_value));
-    *buffer = CPU_TO_BE32(*buffer);
-}
-
-
-/************************************/
-//the next function will push the field into the buffer by inserting it's MSB bits first
-//and therefore by doing it we save the CPU_TO_BE operation
-void push_to_buff(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int32_t field_value)
-{
-    u_int32_t i                = 0;
-    u_int32_t byte_n   = bit_offset / 8;
-    u_int32_t byte_n_offset    = bit_offset % 8;
-    u_int32_t to_push;
-
-    //going over all bits in field
-    while (i < field_size) {
-        to_push = PCK_MIN(8 - byte_n_offset, field_size - i);
-        i += to_push;
-        //printf("Inserting %u bits(%u) to byte %u to bit %u\n", to_push, EXTRACT8(field_value, field_size - i, to_push), byte_n, 8 - to_push - byte_n_offset);
-        INSERTF_8(BYTE_N(buff, byte_n), 8 - to_push - byte_n_offset, field_value, field_size - i, to_push);
-        byte_n_offset  = 0;    //(byte_n_offset + to_push) % 8;
-        byte_n++;
-    }
-}
-
-
-/************************************/
-u_int64_t pop_from_buff_64(u_int8_t *buff, u_int32_t bit_offset)
-{
-#if defined(__ia64__)
-    u_int64_t value = 0;
-    memcpy(&value, PTR_32_OF_BUFF(buff, (bit_offset / 8)), sizeof(u_int64_t));
-    return (BE64_TO_CPU(value));
-#else
-    return (BE64_TO_CPU(FIELD_64_OF_BUFF(buff, (bit_offset / 8))));
-#endif
-}
-
-
-/************************************/
-u_int32_t pop_from_buff_32(u_int8_t *buff, u_int32_t bit_offset)
-{
-    return (BE32_TO_CPU(FIELD_32_OF_BUFF(buff, (bit_offset / 8))));
-}
-
-
-/************************************/
-//the next function will pop the field into the buffer by removing it's MSB bits first
-//and therefore by doing it we save the BE_TO_CPU operation
-u_int32_t pop_from_buff(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size)
-{
-    u_int32_t i                = 0;
-    u_int32_t byte_n   = bit_offset / 8;
-    u_int32_t byte_n_offset    = bit_offset % 8;
-    u_int32_t field_32 = 0;
-    u_int32_t to_pop;
-
-    //going over all bits in field
-    while (i < field_size) {
-        to_pop =  PCK_MIN(8 - byte_n_offset, field_size - i);
-        i += to_pop;
-        //printf("Removing %u bits(%u) from byte %u to bit %u\n", to_pop, EXTRACT8(BYTE_N(buff, byte_n), 8 - to_pop - byte_n_offset, to_pop), byte_n, field_size - i);
-        INSERTF_8(field_32, field_size - i, BYTE_N(buff, byte_n), 8 - to_pop - byte_n_offset, to_pop);
-        byte_n_offset  = 0;    //(byte_n_offset + to_pop) % 8;
-        byte_n++;
-    }
-    return field_32;
-}
-
-
diff --git a/mtcr_ul/packets_common.h b/mtcr_ul/packets_common.h
deleted file mode 100644 (file)
index 11516f4..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef packet_common_H
-#define packet_common_H
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-
-#include "compatibility.h"
-
-#ifndef __WIN__
-    #include <netinet/in.h>
-/************************************/
-/* Endianess Defines */
-/*
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-    #ifndef PLATFORM_MEM
-         // #define PLATFORM_MEM "Little Endianess"
-    #endif
-    #define _LITTLE_ENDIANESS
-#endif
-
-#if __BYTE_ORDER == __BIG_ENDIAN
-    //#define PLATFORM_MEM "Big Endianess"
-    #define _BIG_ENDIANESS
-#endif
-
-#else
-    #define __BYTE_ORDER __LITTLE_ENDIAN
-    #ifndef PLATFORM_MEM
-        //#define PLATFORM_MEM "Big Endianess"
-    #endif
-    #define _BIG_ENDIANESS
-    typedef unsigned __int8  u_int8_t;
-    typedef __int8           int8_t;
-    typedef unsigned __int16 u_int16_t;
-    typedef __int16          int16_t;
-    typedef unsigned __int32 u_int32_t;
-    typedef __int32          int32_t;
-    typedef unsigned __int64 u_int64_t;
-    typedef __int64          int64_t;
-    */
-#endif
-
-
-
-/************************************/
-/* Bit manipulation macros */
-
-/* MASK generate a bit mask S bits width */
-//#define MASK32(S)     ( ((u_int32_t) ~0L) >> (32-(S)) )
-#define MASK8(S)        ( ((u_int8_t) ~0) >> (8-(S)) )
-
-/* BITS generate a bit mask with bits O+S..O set (assumes 32 / 8 bit integer) */
-//#define BITS32(O,S)   ( MASK32(S) << (O) )
-#define BITS8(O,S)      ( MASK8(S) << (O) )
-
-/* EXTRACT32/8 macro extracts S bits from (u_int32_t/u_int8_t)W with offset O
- * and shifts them O places to the right (right justifies the field extracted) */
-//#define EXTRACT32(W,O,S)  ( ((W)>>(O)) & MASK32(S) )
-#define EXTRACT8(W,O,S)     ( ((W)>>(O)) & MASK8(S) )
-
-#define PCK_MIN(a, b)   ((a) < (b) ? (a) : (b))
-/* INSERT32/8 macro inserts S bits with offset O from field F into word W (u_int32_t/u_int8_t) */
-//#define INSERT32(W,F,O,S)     ((W)= ( ( (W) & (~BITS32(O,S)) ) | (((F) & MASK32(S))<<(O)) ))
-#define INSERT8(W,F,O,S)        ((W)= ( ( (W) & (~BITS8(O,S)) ) | (((F) & MASK8(S))<<(O)) ))
-
-//#define INSERTF_32(W,O1,F,O2,S)   (INSERT32(W, EXTRACT32(F, O2, S), O1, S) )
-#define INSERTF_8(W,O1,F,O2,S)      (INSERT8(W, EXTRACT8(F, O2, S), O1, S) )
-
-
-/************************************/
-#define PTR_64_OF_BUFF(buf, offset)     ((u_int64_t*)((u_int8_t*)(buf) + (offset)))
-#define PTR_32_OF_BUFF(buf, offset)     ((u_int32_t*)((u_int8_t*)(buf) + (offset)))
-#define PTR_8_OF_BUFF(buf, offset)      ((u_int8_t*)((u_int8_t*)(buf) + (offset)))
-#define FIELD_64_OF_BUFF(buf, offset)   (*PTR_64_OF_BUFF(buf, offset))
-#define FIELD_32_OF_BUFF(buf, offset)   (*PTR_32_OF_BUFF(buf, offset))
-#define FIELD_8_OF_BUFF(buf, offset)    (*PTR_8_OF_BUFF(buf, offset))
-#define DWORD_N(buf, n)                 FIELD_32_OF_BUFF((buf), (n) * 4)
-#define BYTE_N(buf, n)                  FIELD_8_OF_BUFF((buf), (n))
-
-
-/************************************/
-// #define MIN(a, b)   ((a) < (b) ? (a) : (b))
-
-
-/************************************/
-#define CPU_TO_BE32(x)  htonl(x)
-#define BE32_TO_CPU(x)  ntohl(x)
-#define CPU_TO_BE16(x)  htons(x)
-#define BE16_TO_CPU(x)  ntohs(x)
-#ifdef _LITTLE_ENDIANESS
-    #define CPU_TO_BE64(x) (((u_int64_t)htonl((u_int32_t)((x) & 0xffffffff)) << 32) | \
-                            ((u_int64_t)htonl((u_int32_t)((x >> 32) & 0xffffffff))))
-
-    #define BE64_TO_CPU(x) (((u_int64_t)ntohl((u_int32_t)((x) & 0xffffffff)) << 32) | \
-                            ((u_int64_t)ntohl((u_int32_t)((x >> 32) & 0xffffffff))))
-#else
-    #define CPU_TO_BE64(x) (x)
-    #define BE64_TO_CPU(x) (x)
-#endif
-
-
-/************************************/
-/* define macros to the architecture of the CPU */
-#if defined(__linux) || defined(__FreeBSD__)
-#   if defined(__i386__)
-#       define ARCH_x86
-#   elif defined(__x86_64__)
-#       define ARCH_x86_64
-#   elif defined(__ia64__)
-#       define ARCH_ia64
-#   elif defined(__PPC64__)
-#       define ARCH_ppc64
-#   elif defined(__PPC__)
-#       define ARCH_ppc
-#   elif defined(__aarch64__)
-#       define ARCH_arm64
-#   else
-#       error Unknown CPU architecture using the linux OS
-#   endif
-#elif defined(_WIN32)
-
-//#   error Windows OS need to define macros
-#else       /* __linux || __FreeBSD__ */
-#   error Unknown OS
-#endif      /* __linux || __FreeBSD__ */
-
-
-/**********************************/
-/* define macros for print fields */
-//#if defined (ARCH_ia64) || defined(ARCH_x86_64) || defined(ARCH_ppc64) || defined(__MINGW64__)
-/*
-#if !defined(UEFI_BUILD) && (defined (ARCH_ia64) || defined(ARCH_x86_64) || defined(ARCH_ppc64) || defined(__MINGW64__))
-#   define U64H_FMT "0x%016lx"
-#   define U64D_FMT "%lu"
-#   define U32H_FMT "0x%08x"
-#   define U16H_FMT "0x%04x"
-#   define U8H_FMT  "0x%02x"
-#   define U32D_FMT "%u"
-#   define STR_FMT "%s"
-#elif defined(ARCH_x86) || defined(ARCH_ppc) || defined(__MINGW32__) || defined(UEFI_BUILD)
-#   define U64H_FMT "0x%016llx"
-#   define U64D_FMT "%llu"
-#   define U32H_FMT "0x%08x"
-#   define U16H_FMT "0x%04x"
-#   define U8H_FMT  "0x%02x"
-#   define U32D_FMT "%u"
-#   define STR_FMT "%s"
-#else  // ARCH
-#   error Unknown architecture
-#endif // ARCH
-*/
-
-/**********************************/
-void push_to_buff_64(u_int8_t *buff, u_int32_t bit_offset, u_int64_t field_value);
-void push_to_buff_32(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_value);
-void push_to_buff(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int32_t field_value);
-u_int64_t pop_from_buff_64(u_int8_t *buff, u_int32_t bit_offset);
-u_int32_t pop_from_buff_32(u_int8_t *buff, u_int32_t bit_offset);
-u_int32_t pop_from_buff(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size);
-
-#endif          /* def packet_common_H */
-
-
diff --git a/mtcr_ul/packets_layout.c b/mtcr_ul/packets_layout.c
deleted file mode 100644 (file)
index 6520aa8..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-/***
- *** This file was generated at "Mon May 30 15:06:41 2011"
- *** by:
- ***    % csp_pack_unpack.pm ../xml_files/packets_st.csp
- ***    and modified to fit the needs of mtcr
- ***/
-
-#include <stdlib.h>
-#include "packets_layout.h"
-#include "packets_common.h"
-
-/*************************************/
-/* Name: OperationTlv
- * Size: 128 bits
- * Description:  */
-
-
-u_int32_t OperationTlv_pack(struct OperationTlv *data_to_pack, u_int8_t *packed_buffer) {
-    push_to_buff(packed_buffer, 24, 8, data_to_pack->reserved0);
-    push_to_buff(packed_buffer, 17, 7, data_to_pack->status);
-    push_to_buff(packed_buffer, 16, 1, data_to_pack->dr);
-    push_to_buff(packed_buffer, 5, 11, data_to_pack->len);
-    push_to_buff(packed_buffer, 0, 5, data_to_pack->Type);
-    push_to_buff(packed_buffer, 56, 8, data_to_pack->class);
-    push_to_buff(packed_buffer, 49, 7, data_to_pack->method);
-    push_to_buff(packed_buffer, 48, 1, data_to_pack->r);
-    push_to_buff(packed_buffer, 32, 16, data_to_pack->register_id);
-    push_to_buff_64(packed_buffer, 64, data_to_pack->tid);
-    return 16;
-}
-
-void OperationTlv_unpack(struct OperationTlv *unpacked_data, u_int8_t *buffer_to_unpack) {
-    unpacked_data->reserved0 = pop_from_buff(buffer_to_unpack, 24, 8);
-    unpacked_data->status = pop_from_buff(buffer_to_unpack, 17, 7);
-    unpacked_data->dr = pop_from_buff(buffer_to_unpack, 16, 1);
-    unpacked_data->len = pop_from_buff(buffer_to_unpack, 5, 11);
-    unpacked_data->Type = pop_from_buff(buffer_to_unpack, 0, 5);
-    unpacked_data->class = pop_from_buff(buffer_to_unpack, 56, 8);
-    unpacked_data->method = pop_from_buff(buffer_to_unpack, 49, 7);
-    unpacked_data->r = pop_from_buff(buffer_to_unpack, 48, 1);
-    unpacked_data->register_id = pop_from_buff(buffer_to_unpack, 32, 16);
-    unpacked_data->tid = pop_from_buff_64(buffer_to_unpack, 64);
-}
-
-void OperationTlv_dump(struct OperationTlv *data_to_print, FILE *out_port) {
-    fprintf(out_port, "OperationTlv::reserved0: "U32D_FMT"\n", data_to_print->reserved0);
-    fprintf(out_port, "OperationTlv::status: "U32D_FMT"\n", data_to_print->status);
-    fprintf(out_port, "OperationTlv::dr: "U32D_FMT"\n", data_to_print->dr);
-    fprintf(out_port, "OperationTlv::len: "U32D_FMT"\n", data_to_print->len);
-    fprintf(out_port, "OperationTlv::Type: "U32D_FMT"\n", data_to_print->Type);
-    fprintf(out_port, "OperationTlv::class: "U32D_FMT"\n", data_to_print->class);
-    fprintf(out_port, "OperationTlv::method: "U32D_FMT"\n", data_to_print->method);
-    fprintf(out_port, "OperationTlv::r: "U32D_FMT"\n", data_to_print->r);
-    fprintf(out_port, "OperationTlv::register_id: "U32D_FMT"\n", data_to_print->register_id);
-    fprintf(out_port, "OperationTlv::tid: "U64D_FMT"\n", data_to_print->tid);
-}
-
-/*************************************/
-/* Name: reg_tlv
- * Size: 32 bits
- * Description: reg_tlv */
-
-
-u_int32_t reg_tlv_pack(struct reg_tlv *data_to_pack, u_int8_t *packed_buffer) {
-    push_to_buff(packed_buffer, 16, 16, data_to_pack->reserved0);
-    push_to_buff(packed_buffer, 5, 11, data_to_pack->len);
-    push_to_buff(packed_buffer, 0, 5, data_to_pack->Type);
-    return 4;
-}
-
-void reg_tlv_unpack(struct reg_tlv *unpacked_data, u_int8_t *buffer_to_unpack) {
-    unpacked_data->reserved0 = pop_from_buff(buffer_to_unpack, 16, 16);
-    unpacked_data->len = pop_from_buff(buffer_to_unpack, 5, 11);
-    unpacked_data->Type = pop_from_buff(buffer_to_unpack, 0, 5);
-}
-
-void reg_tlv_dump(struct reg_tlv *data_to_print, FILE *out_port) {
-    fprintf(out_port, "reg_tlv::reserved0: "U32D_FMT"\n", data_to_print->reserved0);
-    fprintf(out_port, "reg_tlv::len: "U32D_FMT"\n", data_to_print->len);
-    fprintf(out_port, "reg_tlv::Type: "U32D_FMT"\n", data_to_print->Type);
-}
diff --git a/mtcr_ul/packets_layout.h b/mtcr_ul/packets_layout.h
deleted file mode 100644 (file)
index a6528ad..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-/***
- *** This file was generated at "Mon May 30 15:06:41 2011"
- *** by:
- ***    % csp_pack_unpack.pm ../xml_files/packets_st.csp
- ***    and modified to fit mtcr needs
- ***/
-
-#ifndef PACKETS_LAYOUT_H
-#define PACKETS_LAYOUT_H
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "compatibility.h"
-
-/*************************************/
-/* Name: reg_tlv
- * Size: 32 bits
- * Description: reg_tlv */
-
-struct reg_tlv {
-    u_int16_t   reserved0;    /* bit_offset:0 */    /* element_size: 16 */
-    u_int16_t   len;    /* bit_offset:16 */    /* element_size: 11 */
-    u_int8_t    Type;    /* bit_offset:27 */    /* element_size: 5 */    /* TX - 0, RX - ignore */
-};
-
-/*************************************/
-/* Name: OperationTlv
- * Size: 128 bits
- * Description:  */
-
-struct OperationTlv {
-    u_int8_t   reserved0;    /* bit_offset:0 */    /* element_size: 8 */
-    u_int8_t   status;    /* bit_offset:8 */    /* element_size: 7 */
-    u_int8_t   dr;    /* bit_offset:15 */    /* element_size: 1 */
-    u_int16_t  len;    /* bit_offset:16 */    /* element_size: 11 */
-    u_int8_t   Type;    /* bit_offset:27 */    /* element_size: 5 */    /* TX - 0, RX - ignore */
-    u_int8_t   class;    /* bit_offset:32 */    /* element_size: 8 */
-    u_int8_t   method;    /* bit_offset:40 */    /* element_size: 7 */
-    u_int8_t   r;    /* bit_offset:47 */    /* element_size: 1 */
-    u_int16_t  register_id;    /* bit_offset:48 */    /* element_size: 16 */
-    u_int64_t  tid;    /* bit_offset:64 */    /* element_size: 64 */
-};
-
-/*************************************/
-/* Name: reg_tlv
- * Size: 32 bits
- * Description: reg_tlv */
-
-u_int32_t reg_tlv_pack(struct reg_tlv *data_to_pack, u_int8_t *packed_buffer);
-void reg_tlv_unpack(struct reg_tlv *unpacked_data, u_int8_t *buffer_to_unpack);
-void reg_tlv_dump(struct reg_tlv *data_to_print, FILE *out_port);
-
-
-
-/*************************************/
-/* Name: OperationTlv
- * Size: 128 bits
- * Description:  */
-
-u_int32_t OperationTlv_pack(struct OperationTlv *data_to_pack, u_int8_t *packed_buffer);
-void OperationTlv_unpack(struct OperationTlv *unpacked_data, u_int8_t *buffer_to_unpack);
-void OperationTlv_dump(struct OperationTlv *data_to_print, FILE *out_port);
-
-
-#endif /* internal_packets_functions_H */
diff --git a/reg_access/Makefile.am b/reg_access/Makefile.am
deleted file mode 100644 (file)
index caa0993..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-MTCR_DIR = $(top_srcdir)/mtcr_ul
-COMMON_DIR = $(top_srcdir)/common
-LAYOUTS_DIR = $(top_srcdir)/tools_layouts
-USER_DIR = $(top_srcdir)
-
-AM_CPPFLAGS = -I. -I$(USER_DIR) -I$(srcdir) -I$(LAYOUTS_DIR) -I$(USER_DIR)/include/mtcr_ul
-
-AM_CFLAGS = -W -Wall -Werror -g -MP -MD $(COMPILER_FPIC)
-
-noinst_LTLIBRARIES = libreg_access.a
-
-libreg_access_a_SOURCES = reg_access.c reg_access.h
-libreg_access_a_DEPENDENCIES = $(USER_DIR)/tools_layouts/libtools_layouts.a
-libreg_access_a_LIBADD = $(libreg_access_a_DEPENDENCIES)
-
diff --git a/reg_access/reg_access.c b/reg_access/reg_access.c
deleted file mode 100644 (file)
index b16f331..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include "reg_access.h"
-
-#define REG_ID_MFPA  0x9010
-#define REG_ID_MFBA  0x9011
-#define REG_ID_MFBE  0x9012
-#define REG_ID_PMDIO 0x9017
-#define REG_ID_MGIR  0x9020
-#define REG_ID_PMDIC 0x9021
-#define REG_ID_MNVA  0x9024
-#define REG_ID_MNVI  0x9025
-#define REG_ID_MNVIA 0x9029 // 4th gen
-#define REG_ID_MVTS  0x902c
-#define REG_ID_NVQC  0x9030
-#define REG_ID_NVIA  0x9033 // 5th gen
-#define REG_ID_NVQGC 0x9034
-#define REG_ID_MNVGN 0x9035
-
-// TODO: get correct register ID for mfrl mfai
-#define REG_ID_MFRL 0x9028
-#define REG_ID_MFAI 0x9029
-
-// WA for MGIR: the reg size is too big so we limit it to INBAND_MAX_REG_SIZE
-#define INBAND_MAX_REG_SIZE 44
-#define MGIR_REG_SIZE INBAND_MAX_REG_SIZE
-// End of WA
-
-// for debug:
-//#define _ENABLE_DEBUG_
-#ifdef _ENABLE_DEBUG_
-# define DEBUG_PRINT_SEND(data_struct, struct_name, method, prefix)\
-       printf("-I- Data Sent (Method: %s):\n", method == REG_ACCESS_METHOD_SET ? "SET" : "GET");\
-       prefix##_##struct_name##_print(data_struct, stdout, 1)
-# define DEBUG_PRINT_RECIEVE(data_struct, struct_name, method, prefix)\
-       printf("-I- Data Received (Mehtod: %s):\n", method == REG_ACCESS_METHOD_SET ? "SET" : "GET");\
-       prefix##_##struct_name##_print(data_struct, stdout, 1)
-#else
-# define DEBUG_PRINT_SEND(data_struct, struct_name, method, prefix)
-# define DEBUG_PRINT_RECIEVE(data_struct, struct_name, method, prefix)
-#endif
-
-/***************************************************/
-
-// register access for variable size registers (like mfba)
-
-#define REG_ACCESS_GENERIC_VAR_WITH_STATUS(mf, methdod, reg_id, data_struct, struct_name, reg_size , r_reg_size, w_reg_size, pack_func,\
-        unpack_func, size_func, print_func, status)\
-    int rc;\
-    int max_data_size = size_func();\
-    u_int8_t data[max_data_size];\
-    memset(data, 0, max_data_size);\
-    pack_func(data_struct, data);\
-    if (method != REG_ACCESS_METHOD_GET && method != REG_ACCESS_METHOD_SET) {\
-        return ME_REG_ACCESS_BAD_METHOD;\
-    }\
-    DEBUG_PRINT_SEND(data_struct, struct_name, method, print_func);\
-    rc = maccess_reg(mf, reg_id, (maccess_reg_method_t)method, data, reg_size, r_reg_size, w_reg_size, status);\
-    unpack_func(data_struct, data);\
-    DEBUG_PRINT_RECIEVE(data_struct, struct_name, method, print_func);
-
-#define REG_ACCESS_GENERIC_VAR(mf, methdod, reg_id, data_struct, struct_name, reg_size , r_reg_size, w_reg_size, pack_func,\
-        unpack_func, size_func, print_func)\
-    int status = 0;\
-    REG_ACCESS_GENERIC_VAR_WITH_STATUS(mf, methdod, reg_id, data_struct, struct_name, reg_size , r_reg_size, w_reg_size, pack_func,\
-        unpack_func, size_func, print_func, &status)\
-    if (rc || status) {\
-        return (reg_access_status_t)rc;\
-    }\
-    return ME_OK
-
-#define REG_ACCCESS_VAR(mf, methdod, reg_id, data_struct, struct_name, reg_size , r_reg_size, w_reg_size, prefix)\
-    REG_ACCESS_GENERIC_VAR(mf, method, reg_id, data_struct, struct_name, reg_size, r_reg_size, w_reg_size,\
-            prefix##_##struct_name##_pack, prefix##_##struct_name##_unpack, prefix##_##struct_name##_size,\
-            prefix##_##struct_name##_print)
-
-// register access for static sized registers
-#define REG_ACCCESS(mf, methdod, reg_id, data_struct, struct_name, prefix)\
-    int data_size = prefix##_##struct_name##_size();\
-    REG_ACCCESS_VAR(mf, methdod, reg_id, data_struct, struct_name, data_size, data_size, data_size, prefix)
-
-/************************************
- * Function: reg_access_mfba
- ************************************/
-reg_access_status_t reg_access_mfba(mfile* mf, reg_access_method_t method, struct register_access_mfba* mfba)
-{
-    u_int32_t reg_size = mfba->size + REG_ACCESS_MFBA_HEADER_LEN;
-    // the r/w_size_reg is for improved performance for when we send the register
-    // via icmd , since its relatively slow si no need to write the data array from mfba struct to the device when reading from the device
-    // and no need for reading the data array from the device when writing to the device (we just care about the status)
-    u_int32_t r_size_reg = reg_size;
-    u_int32_t w_size_reg= reg_size;
-    if (method == REG_ACCESS_METHOD_GET) {
-        w_size_reg -= mfba->size;
-    } else {
-        r_size_reg -= mfba->size;
-    }
-    //printf("-D- MFBA: data size: %d, reg_size: %d, r_size_reg: %d, w_size_reg: %d\n",mfba->size,reg_size,r_size_reg,w_size_reg);
-    REG_ACCCESS_VAR(mf, method, REG_ID_MFBA, mfba, mfba, reg_size, r_size_reg, w_size_reg, register_access);
-}
-
-/************************************
- * Function: reg_access_mfbe
- ************************************/
-reg_access_status_t reg_access_mfbe(mfile* mf, reg_access_method_t method, struct register_access_mfbe* mfbe)
-{
-    REG_ACCCESS(mf, method, REG_ID_MFBE, mfbe, mfbe, register_access);
-}
-
-/************************************
- * Function: reg_access_mfpa
- ************************************/
-reg_access_status_t reg_access_mfpa(mfile* mf, reg_access_method_t method, struct register_access_mfpa* mfpa)
-{
-    REG_ACCCESS(mf, method, REG_ID_MFPA, mfpa, mfpa, register_access);
-}
-
-/************************************
- * Function: reg_access_mnva
- ************************************/
-reg_access_status_t reg_access_mnva (mfile* mf, reg_access_method_t method, struct tools_open_mnva* mnva)
-{
-    // reg_size is in bytes
-    u_int32_t reg_size = (mnva->nv_hdr.length << 2) + tools_open_nv_hdr_size();
-    u_int32_t r_size_reg = reg_size;
-    u_int32_t w_size_reg= reg_size;
-    if (method == REG_ACCESS_METHOD_GET) {
-        w_size_reg -= mnva->nv_hdr.length << 2;
-    } else {
-        r_size_reg -= mnva->nv_hdr.length << 2;
-    }
-    REG_ACCCESS_VAR(mf, method, REG_ID_MNVA, mnva, mnva, reg_size , r_size_reg, w_size_reg, tools_open);
-}
-
-/************************************
- * Function: reg_access_mnvi
- ************************************/
-reg_access_status_t reg_access_mnvi (mfile* mf, reg_access_method_t method, struct tools_open_mnvi* mnvi)
-{
-    if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method
-        return ME_REG_ACCESS_BAD_METHOD;
-    }
-    REG_ACCCESS(mf, method, REG_ID_MNVI, mnvi, mnvi, tools_open);
-}
-
-/************************************
- * Function: reg_access_mnvia
- ************************************/
-reg_access_status_t reg_access_mnvia (mfile* mf, reg_access_method_t method, struct tools_open_mnvia* mnvia)
-{
-    if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method
-        return ME_REG_ACCESS_BAD_METHOD;
-    }
-    REG_ACCCESS(mf, method, REG_ID_MNVIA, mnvia, mnvia, tools_open);
-}
-
-
-/************************************
- *  * Function: reg_access_mgir
- *************************************/
-reg_access_status_t reg_access_mgir(mfile* mf, reg_access_method_t method, struct register_access_sib_mgir* mgir)
-{
-    REG_ACCCESS_VAR(mf, method, REG_ID_MGIR, mgir, mgir, MGIR_REG_SIZE, MGIR_REG_SIZE, MGIR_REG_SIZE, register_access_sib);
-    //REG_ACCCESS(mf, method, REG_ID_MGIR, mgir, mgir, register_access_sib);
-    //}
-}
-
-/************************************
- * Function: reg_access_mfrl
- ************************************/
-reg_access_status_t reg_access_mfrl (mfile* mf, reg_access_method_t method, struct cibfw_register_mfrl* mfrl)
-{
-    REG_ACCCESS(mf, method, REG_ID_MFRL, mfrl, mfrl, cibfw_register);
-}
-
-/************************************
- * Function: reg_access_mfai
- ************************************/
-reg_access_status_t reg_access_mfai (mfile* mf, reg_access_method_t method, struct cibfw_register_mfai* mfai)
-{
-    if (method != REG_ACCESS_METHOD_SET) { // this register supports only set method
-        return ME_REG_ACCESS_BAD_METHOD;
-    }
-    REG_ACCCESS(mf, method, REG_ID_MFAI, mfai, mfai, cibfw_register);
-}
-
-/************************************
- * Function: reg_access_nvda
- ************************************/
-reg_access_status_t reg_access_nvda (mfile* mf, reg_access_method_t method, struct tools_open_nvda* nvda)
-{
-    // reg_size is in bytes
-    u_int32_t reg_size = nvda->nv_hdr.length + tools_open_nv_hdr_fifth_gen_size();
-    u_int32_t r_size_reg = reg_size;
-    u_int32_t w_size_reg= reg_size;
-    if (method == REG_ACCESS_METHOD_GET) {
-        w_size_reg -= nvda->nv_hdr.length;
-    } else {
-        r_size_reg -= nvda->nv_hdr.length;
-    }
-    REG_ACCCESS_VAR(mf, method, REG_ID_MNVA, nvda, nvda, reg_size , r_size_reg, w_size_reg, tools_open);
-}
-
-/************************************
- * Function: reg_access_nvdi
- ************************************/
-reg_access_status_t reg_access_nvdi (mfile* mf, reg_access_method_t method, struct tools_open_nvdi* nvdi)
-{
-    if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method
-        return ME_REG_ACCESS_BAD_METHOD;
-    }
-    REG_ACCCESS(mf, method, REG_ID_MNVI, nvdi, nvdi, tools_open);
-}
-
-/************************************
- * Function: reg_access_nvia
- ************************************/
-reg_access_status_t reg_access_nvia (mfile* mf, reg_access_method_t method, struct tools_open_nvia* nvia)
-{
-    if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method
-        return ME_REG_ACCESS_BAD_METHOD;
-    }
-    REG_ACCCESS(mf, method, REG_ID_NVIA, nvia, nvia, tools_open);
-}
-
-/************************************
- * Function: reg_access_nvqc
- ************************************/
-reg_access_status_t reg_access_nvqc (mfile* mf, reg_access_method_t method, struct tools_open_nvqc* nvqc)
-{
-    if (method != REG_ACCESS_METHOD_GET ) { // this register supports only get method
-        return ME_REG_ACCESS_BAD_METHOD;
-    }
-    REG_ACCCESS(mf, method, REG_ID_NVQC, nvqc, nvqc, tools_open);
-}
-
-/************************************
- * Function: reg_access_nvqgc
- ************************************/
-reg_access_status_t reg_access_nvqgc (mfile* mf, reg_access_method_t method, struct tools_open_nvqgc* nvqgc)
-{
-    if (method != REG_ACCESS_METHOD_GET ) { // this register supports only get method
-        return ME_REG_ACCESS_BAD_METHOD;
-    }
-    REG_ACCCESS(mf, method, REG_ID_NVQGC, nvqgc, nvqgc, tools_open);
-}
-
-/************************************
- * Function: reg_access_mvts
- ************************************/
-reg_access_status_t reg_access_mvts (mfile* mf, reg_access_method_t method, struct tools_open_mvts* mvts)
-{
-    REG_ACCCESS(mf, method, REG_ID_MVTS, mvts, mvts, tools_open);
-}
-
-/************************************
- * Function: reg_access_mnvgn
- ************************************/
-reg_access_status_t reg_access_mnvgn (mfile* mf, reg_access_method_t method, struct tools_open_mnvgn* mnvgn, int *status)
-{
-    int data_size = tools_open_mnvgn_size();
-    if (method != REG_ACCESS_METHOD_GET ) { // this register supports only get method
-        return ME_REG_ACCESS_BAD_METHOD;
-    }
-
-    REG_ACCESS_GENERIC_VAR_WITH_STATUS(mf, method, REG_ID_MNVGN, mnvgn, mnvgn, data_size, data_size, data_size,\
-                tools_open_mnvgn_pack, tools_open_mnvgn_unpack, tools_open_mnvgn_size,\
-                tools_open_mnvgn_print, status);
-
-    if (rc || *status) {\
-        return (reg_access_status_t)rc;\
-    }\
-    return ME_OK;
-}
-
-/************************************
- * Function: reg_access_err2str
- ************************************/
-
-const char* reg_access_err2str(reg_access_status_t status)
-{
-       return m_err2str(status);
-}
diff --git a/reg_access/reg_access.h b/reg_access/reg_access.h
deleted file mode 100644 (file)
index b77eb67..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef REG_ACCESS_H
-#define REG_ACCESS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <mtcr.h>
-#include <tools_layouts/register_access_open_layouts.h>
-#include <tools_layouts/register_access_sib_layouts.h>
-#include <tools_layouts/cibfw_layouts.h>
-
-// Hack, we include this for the MNV registers as they are not officialy a part of register_access so we defined them in tools.adb
-#include <tools_layouts/tools_open_layouts.h>
-
-enum { // header lengths in bytes
-    REG_ACCESS_MFBA_HEADER_LEN = 12,
-};
-
-typedef enum {
-    REG_ACCESS_METHOD_GET = MACCESS_REG_METHOD_GET,
-    REG_ACCESS_METHOD_SET = MACCESS_REG_METHOD_SET
-} reg_access_method_t;
-
-// we use the same error messages as mtcr
-typedef MError reg_access_status_t;
-
-
-const char* reg_access_err2str(reg_access_status_t status);
-reg_access_status_t reg_access_mfba (mfile* mf, reg_access_method_t method, struct register_access_mfba* mfba);
-reg_access_status_t reg_access_mfbe (mfile* mf, reg_access_method_t method, struct register_access_mfbe* mfbe);
-reg_access_status_t reg_access_mfpa (mfile* mf, reg_access_method_t method, struct register_access_mfpa* mfpa);
-reg_access_status_t reg_access_mnva (mfile* mf, reg_access_method_t method, struct tools_open_mnva* mnva);
-reg_access_status_t reg_access_mnvi (mfile* mf, reg_access_method_t method, struct tools_open_mnvi* mnvi);
-reg_access_status_t reg_access_mnvia (mfile* mf, reg_access_method_t method, struct tools_open_mnvia* mnvia);
-reg_access_status_t reg_access_mgir (mfile* mf, reg_access_method_t method, struct register_access_sib_mgir* mgir);
-reg_access_status_t reg_access_mfrl (mfile* mf, reg_access_method_t method, struct cibfw_register_mfrl* mfrl);
-reg_access_status_t reg_access_mfai (mfile* mf, reg_access_method_t method, struct cibfw_register_mfai* mfai);
-reg_access_status_t reg_access_nvda (mfile* mf, reg_access_method_t method, struct tools_open_nvda* nvda);
-reg_access_status_t reg_access_nvdi (mfile* mf, reg_access_method_t method, struct tools_open_nvdi* nvdi);
-reg_access_status_t reg_access_nvia (mfile* mf, reg_access_method_t method, struct tools_open_nvia* nvdia);
-reg_access_status_t reg_access_nvqc (mfile* mf, reg_access_method_t method, struct tools_open_nvqc* nvqc);
-reg_access_status_t reg_access_nvqgc (mfile* mf, reg_access_method_t method, struct tools_open_nvqgc* nvqgc);
-reg_access_status_t reg_access_mvts (mfile* mf, reg_access_method_t method, struct tools_open_mvts* mvts);
-reg_access_status_t reg_access_mnvgn (mfile* mf, reg_access_method_t method, struct tools_open_mnvgn* mnvgn, int *status);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // REG_ACCESS_H
diff --git a/small_utils/Makefile.am b/small_utils/Makefile.am
deleted file mode 100644 (file)
index 24c36f9..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#--
-# Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-AM_CPPFLAGS= -I$(top_srcdir)/include/mtcr_ul -I$(top_srcdir)/common
-
-LDADD= ../mtcr_ul/libmtcr_ul.a -ldl
-
-bin_PROGRAMS = mstmread \
-                                       mstmwrite \
-                                       mstmcra \
-                                       mstmtserver \
-                                       mstvpd
-
-bin_SCRIPTS = hca_self_test.ofed
-
-mstmread_SOURCES = mread.c
-
-mstmwrite_SOURCES = mwrite.c
-
-mstvpd_SOURCES = vpd.c
-
-mstmcra_SOURCES  = mcra.c
-
-mstmtserver_SOURCES = mtserver.c tcp.c tcp.h
-mstmtserver_CFLAGS = -DMST_UL
diff --git a/small_utils/hca_self_test.ofed b/small_utils/hca_self_test.ofed
deleted file mode 100755 (executable)
index 9695fa8..0000000
+++ /dev/null
@@ -1,900 +0,0 @@
-#!/bin/bash
-
-#
-# Copyright (c) 2006-2007 Cisco Systems. All rights reserved.
-# Copyright (c) 2011      Mellanox Technologies LTD. All rights reserved.
-#
-# This Software is licensed under one of the following licenses:
-#
-# 1) under the terms of the "Common Public License 1.0" a copy of which is
-#    available from the Open Source Initiative, see
-#    http://www.opensource.org/licenses/cpl.php.
-#
-# 2) under the terms of the "The BSD License" a copy of which is
-#    available from the Open Source Initiative, see
-#    http://www.opensource.org/licenses/bsd-license.php.
-#
-# 3) under the terms of the "GNU General Public License (GPL) Version 2" a
-#    copy of which is available from the Open Source Initiative, see
-#    http://www.opensource.org/licenses/gpl-license.php.
-#
-# Licensee has the right to choose one of the above licenses.
-#
-# Redistributions of source code must retain the above copyright
-# notice and one of the license notices.
-#
-# Redistributions in binary form must reproduce both the above copyright
-# notice, one of the license notices in the documentation
-# and/or other materials provided with the distribution.
-#
-#
-# Description: Test health of HCA
-
-# For colored text
-green='\E[32m'
-red='\E[31m'
-cyan='\E[36m'
-
-bold_start='\033[1m'
-bold_stop='\033[0m'
-
-#TODO: ask vlad about the path .
-INSTALL_PREFIX=/usr
-
-MTHCA_DRIVER_NEEDED=mthca
-HERMON_DRIVER_NEEDED=mlx4_
-CONNECTIB_DRIVER_NEEDED=mlx5_
-DRIVER_NEEDED=$MTHCA_DRIVER_NEEDED
-INFINI_CLASS_PATH=/sys/class/infiniband
-G_LSPCI_OUTPUT_FILE=/tmp/hca_self_test_lspci.output
-
-########################################################################################
-# Required FW version definitions. These lines below are optionally set by the installer
-ARBEL_FW_NEEDED=
-ARBEL_MF_FW_NEEDED=
-TAVOR_FW_NEEDED=
-SINAI_FW_NEEDED=
-HERMON_FW_NEEDED=
-CX3_FW_NEEDED=
-CX3_PRO_FW_NEEDED=
-CONNECTIB_FW_NEEDED=
-CONNECTX4_FW_NEEDED=
-CONNECTX4LX_FW_NEEDED=
-########################################################################################
-
-
-# Color echo
-cecho () {
-    message=${1}     # argument 1 - message
-    color=${2}       # argument 2 - color
-    echo -e "$color"
-    echo "$message"
-    tput sgr0        # Reset to normal
-    return
-}
-
-# Exit code
-EXIT_CODE=0
-
-# Check whether the script is being run as root and exit if otherwise
-if [ `id -g` -ne 0 ]; then
-    echo "Error: hca_self_test must be run as root."
-    EXIT_CODE=1
-    exit $EXIT_CODE
-fi
-
-echo
-g_pkg_cmd="rpm"
-
-# Get OS type
-if [ -f /etc/redhat-release -o -f /etc/fedora-release ]; then
-    OS_TYPE="RED_HAT"
-elif [ -f /etc/SuSE-release ]; then
-    OS_TYPE="SUSE"
-elif [ -f /etc/debian_version ]; then
-    OS_TYPE="DEBIAN"
-    INSTALL_PREFIX=/opt/topspin
-    g_pkg_cmd="dpkg"
-else
-    OUT=`grep -q "Wind River" /etc/issue`
-    is_wind_river=$?
-    if [ "$is_wind_river" -eq "0" ]; then
-        OS_TYPE="RED_HAT"
-    else
-        echo "Error: hca_self_test does not support this OS."
-        EXIT_CODE=1
-        exit $EXIT_CODE
-    fi
-fi
-
-for cmd in  lspci cat id $g_pkg_cmd uname grep ls awk egrep modprobe; do
-    cmd_exist=`which $cmd 2> /dev/null`
-    if [ "$cmd_exist" == "" ]; then
-            echo "Error: $cmd tool was not found in the PATH"
-            exit 1
-    fi
-done
-
-
-HCA_LSPCI_NAME="InfiniBand"
-HCA_LSPCI_NAME_NEW="Infiniband controller"
-VPI_LSPCI_NAME="Network controller"
-NIC_LSPCI_NAME="Ethernet controller"
-MEM_CON_LSPCI_NAME="Memory controller"
-
-MEL_LSPCI_NAME_EXP="${HCA_LSPCI_NAME}|${HCA_LSPCI_NAME_NEW}|${VPI_LSPCI_NAME}|${NIC_LSPCI_NAME}"
-
-echo "---- Performing Adapter Device Self Test ----"
-
-# HCA/PCI check
-NUM_IB_DEV=`lspci 2> /dev/null | grep -E "(${MEL_LSPCI_NAME_EXP})(\s\[[0-9]+\])?: Mellanox Technolog" | wc -l`
-NUM_MEM_CON=`lspci 2> /dev/null | grep "${MEM_CON_LSPCI_NAME}(\s\[[0-9]+\])?: Mellanox Technolog" | wc -l`
-
-let "NUM_HCAS=$NUM_IB_DEV + $NUM_MEM_CON"
-echo "Number of CAs Detected ................. $NUM_HCAS";
-
-if [ $NUM_HCAS -ne 0 ]; then
-    if [ $NUM_MEM_CON -ne 0 ]; then
-        echo -e "PCI Device Check ....................... ${red}FAIL"
-        tput sgr0
-        echo "    REASON: jumper set on CA or CA hardware failure"
-        EXIT_CODE=1
-    else
-        echo -e "PCI Device Check ....................... ${green}PASS"
-        tput sgr0
-    fi
-else
-    echo -e "PCI Device Check ....................... ${red}FAIL"
-    tput sgr0
-    echo "    REASON: no CAs in the system"
-    EXIT_CODE=1
-    exit $EXIT_CODE
-fi
-
-
-mlx4_core_ko=`modinfo mlx4_core | grep filename | awk '{print $NF}'`
-mlx4_core_ko=`readlink -f $mlx4_core_ko`
-if [ $OS_TYPE = "DEBIAN" ]; then
-    RPM_CHECK_FAIL=0
-    RPM_CUR_BOOTED_KER=1
-    
-    RPM_USR_VER=`dpkg -s libibverbs1 2> /dev/null | wc -l`
-    RPM_KER_VER=`dpkg -l 2> /dev/null | grep -E "ofed-kernel" | wc -l`
-    RPM_KER_NAME=`echo $mlx4_core_ko | awk -F '/' '{print$4}'`
-    if [ $RPM_KER_VER -eq 0 ] && [ "$RPM_KER_NAME" != "" ]; then
-        RPM_KER_VER=1
-    fi
-    BOOTED_KER=`uname -r`
-    if [ "$BOOTED_KER" != "$RPM_KER_NAME" ]; then
-        RPM_CUR_BOOTED_KER=0
-    fi
-else
-    # RPM check
-    RPM_CHECK_FAIL=0
-    RPM_USR_VER=`rpm -q libibverbs 2> /dev/null | wc -l`
-    RPM_KER_VER=`rpm -qa 2> /dev/null | grep -E "kernel-ib|ofa_kernel" | wc -l`
-    KER_RPM=`rpm -qf $mlx4_core_ko 2> /dev/null | grep -E "kernel-ib|ofa_kernel"`
-
-    if [ ! -z $KER_RPM ]; then
-        RPM_KER_NAME=`echo $mlx4_core_ko | awk -F '/' '{print$4}'`
-        RPM_CUR_BOOTED_KER=1
-    else
-        if (rpm -q ofa_kernel_dkms > /dev/null 2>&1); then
-            IS_DKMS=1
-            RPM_KER_NAME=`rpm -q --queryformat "[%{NAME}-%{VERSION}]\n" ofa_kernel_dkms`
-            RPM_CUR_BOOTED_KER=1
-        else
-            RPM_CUR_BOOTED_KER=0
-        fi
-    fi
-fi
-OFED_VERSION=$(ofed_info 2> /dev/null | head -1)    
-RPM_KER_ARCH=`uname -m`    
-if [ $OS_TYPE = "RED_HAT" ]; then    
-    BOOTED_KER=`uname -r`    
-elif [ $OS_TYPE = "SUSE" ]; then    
-    # Have to munge uname output a bit.    
-    BOOTED_KER=`uname -r | sed s@-@_@g`    
-fi    
-
-if [ $RPM_USR_VER -eq 0 ] && [ $RPM_KER_VER -eq 0 ]; then    
-    echo -e "Host Driver RPM Check .................. ${red}FAIL"    
-    tput sgr0    
-    echo "    REASON: no RPMs found"    
-    RPM_CHECK_FAIL=1    
-    EXIT_CODE=1    
-elif [ $RPM_USR_VER -eq 0 ]; then    
-    echo -e "Host Driver RPM Check .................. ${red}FAIL"    
-    tput sgr0    
-    echo "    REASON: no user level RPMs found"    
-    RPM_CHECK_FAIL=1    
-    EXIT_CODE=1    
-elif [ $RPM_KER_VER -eq 0 ]; then    
-    echo -e "Host Driver RPM Check .................. ${red}FAIL"    
-    tput sgr0    
-    echo "    REASON: no kernel level RPMs found"    
-    RPM_CHECK_FAIL=1    
-    EXIT_CODE=1    
-fi    
-
-if [ $RPM_KER_VER -ne 0 ]; then    
-    if [ $RPM_CUR_BOOTED_KER -eq 0 ]; then    
-        echo -e "Host Driver RPM Check .................. ${red}FAIL"    
-        tput sgr0    
-        echo "    REASON: no RPMs found for currently booted kernel $BOOTED_KER"    
-        RPM_CHECK_FAIL=1    
-        EXIT_CODE=1    
-    fi    
-fi    
-
-echo "Kernel Arch ............................ $RPM_KER_ARCH"    
-if [ "$RPM_KER_NAME" != "" ]; then    
-    echo "Host Driver Version .................... $OFED_VERSION $RPM_KER_NAME"    
-else    
-    echo "Host Driver Version .................... NA"    
-fi    
-
-if [ $RPM_CHECK_FAIL -eq 0 ]; then    
-    echo -e "Host Driver RPM Check .................. ${green}PASS"    
-    tput sgr0    
-fi    
-
-
-function get_curr_ca_pci_info () {
-    loop_cnt=$1
-
-    if [ "${g_lspci_was_ran}" == "" ]; then
-        lspci 2> /dev/null | grep -E "(${MEL_LSPCI_NAME_EXP}|${MEM_CON_LSPCI_NAME})(\s\[[0-9]+\])?: Mellanox Technolog" > ${G_LSPCI_OUTPUT_FILE}
-        g_lspci_was_ran=1
-    fi
-    current_pci_info=$(cat ${G_LSPCI_OUTPUT_FILE} | head -$(expr $loop_cnt + 1) | tail -1)
-    echo ${current_pci_info}
-}
-
-function get_ca_type() {
-    loop_cnt=$1
-
-    current_pci_info=`get_curr_ca_pci_info $loop_cnt`
-
-    if [[ ${current_pci_info} =~ ${HCA_LSPCI_NAME} ]] || [[ ${current_pci_info} =~ ${HCA_LSPCI_NAME_NEW} ]] || [[ ${current_pci_info} =~ ${MEM_CON_LSPCI_NAME} ]]; then
-        ca_type=HCA
-    elif [[ ${current_pci_info}  =~ ${VPI_LSPCI_NAME} ]]; then
-        ca_type=VPI
-    elif [[ ${current_pci_info}  =~ ${NIC_LSPCI_NAME} ]]; then
-        ca_type=NIC
-    else
-        ca_type="N/A"
-    fi
-    echo "${ca_type}"
-}
-#get the device ID
-function get_device_id {
-    loop_cnt=$1
-
-    current_pci_info=`get_curr_ca_pci_info $loop_cnt`
-    PCI_DEV=$(echo $current_pci_info | awk '{print $1}')
-
-    HexDevice_ID=$(lspci -D -n -d "15b3:"  2> /dev/null | grep $PCI_DEV |  tail -1 | cut -d ":" -f5 | cut -d " " -f1)
-    if [ "$HexDevice_ID" != "" ]; then
-        HexDevice_ID=0x$HexDevice_ID
-        let "tmp=$HexDevice_ID"
-        Device_ID=$(echo $tmp)
-    else
-        Device_ID=$(mstflint -d $PCI_DEV q 2> /dev/null | grep "Device ID" | awk '{print $3}')
-    fi
-    echo $Device_ID
-}
-#get the HCA NAME
-
-g_connectx="ConnectX"
-g_connectx3="ConnectX-3"
-g_connectx3_pro="ConnectX-3_Pro"
-g_connectib="Connect-IB"
-g_connectx4="ConnectX-4"
-g_connectx4lx="ConnectX-4_Lx"
-g_InfiniHost_III_Ex="InfiniHost_III_Ex"
-g_InfiniHost_III_Ex_memfree="InfiniHost_III_Ex_m"
-g_InfiniHost_III_Lx="InfiniHost_III_Lx"
-g_InfiniHost="InfiniHost"
-
-
-function  get_hca_name {
-    dev_id=$1
-    if [ $dev_id -eq 25208 ]; then
-        ret_val=$g_InfiniHost_III_Ex
-    elif [ $dev_id -eq 25218  ]; then
-        ret_val=$g_InfiniHost_III_Ex_memfree
-    elif [ $dev_id -eq 24204 -o $dev_id -eq 25204 ]; then
-        ret_val=$g_InfiniHost_III_Lx
-    elif [ $dev_id -eq 23108 ]; then
-        ret_val=$g_InfiniHost
-    elif [ $dev_id -eq 4099 ]; then
-        ret_val=$g_connectx3
-    elif [ $dev_id -eq 4103 ]; then
-        ret_val=$g_connectx3_pro
-    elif [ $dev_id -eq 4113 ]; then
-        ret_val=$g_connectib
-    elif [ $dev_id -eq 4115 ]; then
-        ret_val=$g_connectx4
-    elif [ $dev_id -eq 4117 ]; then
-        ret_val=$g_connectx4lx
-    else
-        ret_val=$g_connectx4
-    fi
-    echo $ret_val
-
-}
-
-#get the Driver Name
-function get_driver {
-    loop_cnt=$1
-    driver_need=""
-    Device_ID=$(get_device_id $LOOP_COUNT)
-    if [ "$Device_ID" != "" ]; then
-        hca_name=$(get_hca_name $Device_ID)
-        if [ "$hca_name" != "" ]; then
-            if [ "$hca_name" == "$g_connectx" ] || [ "$hca_name" == "$g_connectx3" ] || [ "$hca_name" == "$g_connectx3_pro" ]; then
-                driver_need=$HERMON_DRIVER_NEEDED
-            elif [ "$hca_name" == "$g_connectib" ] || [ "$hca_name" == "$g_connectx4" ] || [ "$hca_name" == "$g_connectx4lx" ]; then 
-                driver_need=$CONNECTIB_DRIVER_NEEDED
-            else
-                driver_need=$MTHCA_DRIVER_NEEDED
-            fi
-        fi
-    fi
-    echo $driver_need
-}
-
-
-function compare_fw  {
-    found=$1
-    needed=$2
-
-    n_1=$(echo $needed | cut -f1 -d"." | cut -b 2-)
-    n_2=$(echo $needed | cut -f2 -d".")
-    n_3=$(echo $needed | cut -f3 -d".")
-    f_1=$(echo $found  | cut -f1 -d"." | cut -b 2-)
-    f_2=$(echo $found  | cut -f2 -d".")
-    f_3=$(echo $found  | cut -f3 -d".")
-
-    if [ $n_1 -gt $f_1 ]; then
-        echo "required"
-    elif [ $f_1 -gt $n_1 ]; then
-        echo "found"
-    elif [ $n_2 -gt $f_2 ]; then
-        echo "required"
-    elif [ $f_2 -gt $n_2 ]; then
-        echo "found"
-   elif [ $n_3 -gt $f_3 ]; then
-        echo "required"
-    elif [ $f_3 -gt $n_3 ]; then
-        echo "found"
-    fi
-
-}
-
-
-
-# HCA firmware check
-echo_fw_check () {
-    LOOP_COUNT=$1
-    ca_type=$2
-    result=$3
-    echo -e "Firmware Check on CA #$LOOP_COUNT (${ca_type}) .......... ${result}"
-    tput sgr0
-}
-if [ $NUM_HCAS -ne 0 ]; then
-    mlx_dev_num=0
-    mlx5_dev_num=0
-    mthca_dev_num=0
-    LOOP_COUNT=0
-
-    # To take care of more than one HCA
-    while [ $LOOP_COUNT -lt $NUM_HCAS ]
-    do
-        ca_type=$(get_ca_type $LOOP_COUNT)
-        if [ $RPM_USR_VER -ne 0 ] && [ $RPM_CUR_BOOTED_KER -ne 0 ]; then
-
-            #default mthca0
-            device_num=$mthca_dev_num
-
-            ## get the Device Id
-            PCI_DEVICE=$(lspci 2> /dev/null | grep Mellanox | head -$(expr $LOOP_COUNT + 1) | tail -1 | awk '{print $1}')
-            Device_ID=$(get_device_id $LOOP_COUNT)
-            if [ "$Device_ID" != "" ]; then
-                hca_name=$(get_hca_name $Device_ID)
-                if [ "$hca_name" != "" ]; then
-
-                   # get the FW and the Expected FW
-                    if [ "$hca_name" == "$g_InfiniHost_III_Ex" ]; then
-                        FW_NEEDED=$ARBEL_FW_NEEDED
-                    elif [ "$hca_name" == $g_InfiniHost_III_Ex_memfree ]; then
-                        FW_NEEDED=$ARBEL_MF_FW_NEEDED
-                    elif [ "$hca_name" == "$g_InfiniHost_III_Lx" ]; then
-                        FW_NEEDED=$SINAI_FW_NEEDED
-                    elif [ "$hca_name" == "$g_connectx" ]; then
-                        FW_NEEDED=$HERMON_FW_NEEDED
-                        DRIVER_NEEDED=$HERMON_DRIVER_NEEDED
-                        device_num=$mlx_dev_num
-                    elif [ "$hca_name" == "$g_connectx3" ]; then
-                        FW_NEEDED=$CX3_FW_NEEDED
-                        DRIVER_NEEDED=$HERMON_DRIVER_NEEDED
-                        device_num=$mlx_dev_num
-                    elif [ "$hca_name" == "$g_connectx3_pro" ]; then
-                        FW_NEEDED=$CX3_PRO_FW_NEEDED
-                        DRIVER_NEEDED=$HERMON_DRIVER_NEEDED
-                        device_num=$mlx_dev_num
-                    elif [ "$hca_name" == "$g_connectib" ]; then
-                        FW_NEEDED=$CONNECTIB_FW_NEEDED
-                        DRIVER_NEEDED=$CONNECTIB_DRIVER_NEEDED
-                        device_num=$mlx5_dev_num
-                    elif [ "$hca_name" == "$g_connectx4" ]; then
-                        FW_NEEDED=$CONNECTX4_FW_NEEDED
-                        DRIVER_NEEDED=$CONNECTIB_DRIVER_NEEDED
-                        device_num=$mlx5_dev_num
-                    elif [ "$hca_name" == "$g_connectx4lx" ]; then
-                        FW_NEEDED=$CONNECTX4LX_FW_NEEDED
-                        DRIVER_NEEDED=$CONNECTIB_DRIVER_NEEDED
-                        device_num=$mlx5_dev_num
-                    elif [ "$hca_name" == "$g_InfiniHost" ]; then
-                        FW_NEEDED=$TAVOR_FW_NEEDED
-                    fi
-                    legal=$(echo $FW_NEEDED | grep v\[0-9\]\[0-9\]*.\[0-9\]\[0-9\]*.\[0-9\]\[0-9\]*)
-
-                    # increase the mlx and mthca counter
-                    case "$hca_name" in
-                    "$g_connectx"|"$g_connectx3"|"$g_connectx3_pro")
-                        let "mlx_dev_num=$mlx_dev_num + 1"
-                    ;;
-                    "$g_connectib"|"$g_connectx4"|"$g_connectx4lx")
-                        let "mlx5_dev_num=$mlx5_dev_num + 1"
-                    ;;                    *)
-                        let "mthca_dev_num=$mthca_dev_num + 1"
-                    ;;
-                    esac
-
-                    FW_FOUND=v$(mstflint -d $PCI_DEVICE q 2> /dev/null | grep "FW Version" | awk '{print $3}')
-                    if [ "$FW_FOUND" = "v" ]; then
-                        if [ -f "$INFINI_CLASS_PATH/$DRIVER_NEEDED$device_num/fw_ver" ]; then
-                            FW_FOUND=v`cat $INFINI_CLASS_PATH/$DRIVER_NEEDED$device_num/fw_ver 2> /dev/null`
-                        else
-                            echo_fw_check ${LOOP_COUNT} ${ca_type} "${red}FAIL"
-                            echo "    REASON: CA #$LOOP_COUNT: failed to get firmware version"
-                            EXIT_CODE=1
-                            no_firmware=1
-                        fi
-                    fi
-
-                    if [ "$no_firmware" != "1" ]; then
-                        echo -e "Firmware on CA #$LOOP_COUNT ${ca_type} .................. $FW_FOUND"
-                        if [ "$FW_NEEDED" == "$legal" -a "$FW_NEEDED" != "" ]; then
-                            if [ "$FW_FOUND" = "$FW_NEEDED" ]; then
-                                echo_fw_check ${LOOP_COUNT} ${ca_type} "${green}PASS"
-                            else
-                                newest=$(compare_fw $FW_FOUND $FW_NEEDED)
-                                if [ "$newest" = "found" ]; then
-                                    echo_fw_check ${LOOP_COUNT} ${ca_type} "${green}PASS"
-                                    echo "    NOTE: The found fw version is higher than the fw included in this package ($FW_NEEDED)"
-                                else
-                                    echo_fw_check ${LOOP_COUNT} ${ca_type} "${red}FAIL"
-                                    echo "    REASON: mismatch CA #$LOOP_COUNT firmware detected (found $FW_FOUND, required $FW_NEEDED)"
-                                    EXIT_CODE=1
-                                fi
-                            fi
-                        else
-                            echo_fw_check ${LOOP_COUNT} ${ca_type} "NA"
-                            if [ "$FW_NEEDED" == "" ]; then
-                                echo "    REASON: NO required fw version"
-                            else
-                                echo "    REASON: Bad required fw version format ($FW_NEEDED)"
-                            fi
-                        fi
-                    fi
-                else
-                    echo_fw_check ${LOOP_COUNT} ${ca_type} "NA"
-                fi
-            else
-                echo_fw_check ${LOOP_COUNT} ${ca_type} "NA"
-            fi
-        else
-            echo_fw_check ${LOOP_COUNT} ${ca_type} "NA"
-        fi
-        let "LOOP_COUNT=$LOOP_COUNT + 1"
-    done
-else
-    echo_fw_check ${LOOP_COUNT} ${ca_type} "${red}FAIL"
-    echo "    REASON: no CAs in the system"
-    EXIT_CODE=1
-fi
-
-# Check host driver initialization
-HOST_DRIVER_INIT=0
-if [ $NUM_HCAS -ne 0 ] && [ $RPM_CHECK_FAIL -eq 0 ]; then
-    MODPROBE_OUT_FILE="/tmp/hca_self_test_modprobe.output"
-    # Save the output of modprobe ib_ipoib in a tmp file
-    modprobe ib_ipoib &> $MODPROBE_OUT_FILE
-    let RET_CODE=$?
-    if [ $RET_CODE -eq 0 ]; then
-        echo -e "Host Driver Initialization ............. ${green}PASS"
-        tput sgr0
-        HOST_DRIVER_INIT=1
-        # After successful initialization wait for IB SM sweep
-        sleep 5
-    else
-        echo -e "Host Driver Initialization ............. ${red}FAIL"
-        tput sgr0
-        EXIT_CODE=1
-        # "No such device"
-        if [ `grep "No such device" $MODPROBE_OUT_FILE 2> /dev/null | wc -l` -ne 0 ]; then
-            echo "    REASON: host driver initialization reported: No such device"
-        fi
-        # "No such file or directory"
-        if [ `grep "No such file or directory" $MODPROBE_OUT_FILE 2> /dev/null | wc -l` -ne 0 ]; then
-            echo "    REASON: host driver initialization reported: No such file or directory"
-            echo "            It is possible that driver rpm might be missing file(s)"
-        fi
-        # "kernel-module version mismatch"
-        if [ `grep "kernel-module version mismatch" $MODPROBE_OUT_FILE 2> /dev/null | wc -l` -ne 0 ]; then
-            echo "    REASON: host driver initialization reported: kernel-module version mismatch"
-        fi
-        # "unresolved symbol"
-        # Note: Could not test "unresolved symbol" error
-        if [ `grep "unresolved symbol" $MODPROBE_OUT_FILE 2> /dev/null | wc -l` -ne 0 ]; then
-            echo "    REASON: host driver initialization reported: unresolved symbol"
-        fi
-    fi
-else
-    echo "Host Driver Initialization ............. NA"
-    EXIT_CODE=1
-fi
-
-function get_link_layer() {
-    device_name=$1
-    port_num=$2
-    link_layer_file=$INFINI_CLASS_PATH/${device_name}/ports/${port_num}/link_layer
-    # Default value
-    link_layer=IB
-    if [ -f ${link_layer_file} ]; then
-        link_layer=`cat $link_layer_file 2> /dev/null`
-    fi
-    echo ${link_layer}
-}
-
-function report_port_state() {
-    port_num=$1;
-    LOOP_COUNT=$2
-    device_name=$3
-    ca_type=$4
-
-    port_dir=$INFINI_CLASS_PATH/${device_name}/ports/${port_num}
-    port_state_file=${port_dir}/state
-    port_rate_file=${port_dir}/rate
-
-if [ -f ${port_state_file} ]; then
-    PORT_STATE=`awk -F": " '{print $2}' ${port_state_file} 2> /dev/null`
-    link_layer=`get_link_layer ${device_name} ${port_num}`
-
-    if [ "x$PORT_STATE" == "xACTIVE" ]; then
-        PORT_SPEED=`awk -F\( '{print $2}' ${port_rate_file} 2> /dev/null | sed 's/)//'`
-        state="${green}UP $PORT_SPEED"
-    else
-        if [ "x$PORT_STATE" == "xINIT" ]; then
-            state="${cyan}INIT"
-        else
-            state="${red}DOWN"
-        fi
-    fi
-    echo -e "Port State of Port #${port_num} on CA #$LOOP_COUNT (${ca_type})..... ${state} (${link_layer})"
-    tput sgr0
-fi
-
-}
-
-# Port info
-if [ $HOST_DRIVER_INIT -eq 1 ]; then
-    NUM_HCAS_PROC=`ls $INFINI_CLASS_PATH 2> /dev/null | wc -l`
-    LOOP_COUNT=0
-    NUM_PORT_ACTIVE=0
-
-    mlx_dev_num=0
-    mlx5_dev_num=0
-    mthca_dev_num=0
-    LOOP_COUNT=0
-
-    # To take care of multiple HCAs
-    while [ $LOOP_COUNT -lt $NUM_HCAS_PROC ]
-    do
-        driver_need=$(get_driver $LOOP_COUNT)
-         if [ "$driver_need" != "" ]; then
-             if [ "$driver_need" == "$HERMON_DRIVER_NEEDED" ]; then
-                  device_num=$mlx_dev_num
-                  let "mlx_dev_num=$mlx_dev_num + 1"
-             elif [ "$driver_need" == "$CONNECTIB_DRIVER_NEEDED" ]; then
-                  device_num=$mlx5_dev_num
-                  let "mlx5_dev_num=$mlx5_dev_num + 1"
-              else
-                  device_num=$mthca_dev_num
-                  let "mthca_dev_num=$mthca_dev_num + 1"
-             fi
-
-             if [ -f $INFINI_CLASS_PATH/$driver_need$device_num/ports/1/state ]; then
-                let "NUM_PORT_ACTIVE+=`grep ACTIVE $INFINI_CLASS_PATH/$driver_need$device_num/ports/1/state 2> /dev/null | wc -l`"
-             fi
-             if [ -f $INFINI_CLASS_PATH/$driver_need$device_num/ports/2/state ]; then
-                let "NUM_PORT_ACTIVE+=`grep ACTIVE $INFINI_CLASS_PATH/$driver_need$device_num/ports/2/state 2> /dev/null | wc -l`"
-             fi
-        fi
-
-        let "LOOP_COUNT=$LOOP_COUNT + 1"
-    done
-    echo "Number of CA Ports Active .............. $NUM_PORT_ACTIVE"
-
-
-    # Get each port state
-
-    mlx_dev_num=0
-    mthca_dev_num=0
-    LOOP_COUNT=0
-    mlx5_dev_num=0
-    while [ $LOOP_COUNT -lt $NUM_HCAS_PROC ]
-    do
-
-        driver_need=$(get_driver $LOOP_COUNT)
-        ca_type=$(get_ca_type $LOOP_COUNT)
-        if [ "$driver_need" != "" ]; then
-            if [ "$driver_need" == "$HERMON_DRIVER_NEEDED" ]; then
-                device_num=$mlx_dev_num
-                let "mlx_dev_num=$mlx_dev_num + 1"
-            elif [ "$driver_need" == "$CONNECTIB_DRIVER_NEEDED" ]; then
-                  device_num=$mlx5_dev_num
-                  let "mlx5_dev_num=$mlx5_dev_num + 1"
-            else
-                device_num=$mthca_dev_num
-                let "mthca_dev_num=$mthca_dev_num + 1"
-            fi
-            device_name=${driver_need}${device_num}
-            report_port_state 1 ${LOOP_COUNT} ${device_name} ${ca_type}
-            report_port_state 2 ${LOOP_COUNT} ${device_name} ${ca_type}
-        fi
-        let "LOOP_COUNT=$LOOP_COUNT + 1"
-    done
-else
-    echo "Number of CA Ports Active .............. NA"
-fi
-
-# -D-
-
-# Error counters check
-
-echo_error_cnt () {
-    LOOP_COUNT=$1
-    ca_type=$2
-    result=$3
-    echo -e "Error Counter Check on CA #$LOOP_COUNT (${ca_type})...... ${result}"
-    tput sgr0
-}
-if [ $HOST_DRIVER_INIT -eq 1 ]; then
-
-    mlx_dev_num=0
-    mthca_dev_num=0
-    LOOP_COUNT=0
-    mlx5_dev_num=0
-    while [ $LOOP_COUNT -lt $NUM_HCAS_PROC ]; do
-
-        driver_need=$(get_driver $LOOP_COUNT)
-        ca_type=$(get_ca_type $LOOP_COUNT)
-        if [ "$driver_need" != "" ]; then
-            check_port1=1
-            check_port2=1
-
-            if [ "$driver_need" == "$HERMON_DRIVER_NEEDED" ]; then
-                 device_num=$mlx_dev_num
-                 let "mlx_dev_num=$mlx_dev_num + 1"
-            elif [ "$driver_need" == "$CONNECTIB_DRIVER_NEEDED" ]; then
-                  device_num=$mlx5_dev_num
-                  let "mlx5_dev_num=$mlx5_dev_num + 1"
-            else
-                 device_num=$mthca_dev_num
-                 let "mthca_dev_num=$mthca_dev_num + 1"
-            fi
-
-            for port in `seq 1 2`; do
-                link_layer_file="$INFINI_CLASS_PATH/$driver_need$device_num/ports/$port/link_layer"
-                if [ -f $link_layer_file ]; then
-                    proto=`cat $link_layer_file 2> /dev/null`
-                    if [ "$proto" == "Ethernet" ]; then
-                        let "check_port$port=0"
-                    fi
-                fi
-            done
-
-
-            # Error counters check
-            ERROR_COUNTER_PRINT=0
-            if [ -f $INFINI_CLASS_PATH/$driver_need$device_num/ports/1/state ] && [ $check_port1 -eq 1 ]; then
-                ERROR_COUNTER_PORT_1=0
-
-                for i in $INFINI_CLASS_PATH/$driver_need$device_num/ports/1/counters/*error*; do
-                    err_cnt=`cat $i 2> /dev/null`
-                    RET_CODE=$?
-                    if [ $RET_CODE -eq 0 ]; then
-                        if [ $err_cnt -gt 20 ]; then
-                            let "ERROR_COUNTER_PORT_1=$ERROR_COUNTER_PORT_1 + 1"
-                        fi;
-                    else
-                        echo "-W- Failed to read $i file"
-                    fi
-                done
-            fi
-            if [ -f $INFINI_CLASS_PATH/$driver_need$device_num/ports/2/state ] && [ $check_port2 -eq 1 ]; then
-
-                ERROR_COUNTER_PORT_2=0
-                for i in $INFINI_CLASS_PATH/$driver_need$device_num/ports/2/counters/*error*; do
-                    err_cnt=`cat $i 2> /dev/null`
-                    RET_CODE=$?
-                    if [ $RET_CODE -eq 0 ]; then
-                        if [ $err_cnt -gt 20 ]; then
-
-                            let "ERROR_COUNTER_PORT_2=$ERROR_COUNTER_PORT_2 + 1"
-                        fi;
-                    else
-                        echo "-W- Failed to read $i file"
-                    fi
-                done
-
-            else
-                let ERROR_COUNTER_PORT_2=0
-            fi
-
-            let "ERROR_COUNTER=$ERROR_COUNTER_PORT_1 + $ERROR_COUNTER_PORT_2"
-            # Print FAIL only once
-            if [ $ERROR_COUNTER -ne 0 ] && [ $ERROR_COUNTER_PRINT -ne 1 ]; then
-                echo_error_cnt ${LOOP_COUNT} ${ca_type} "${red}FAIL"
-                echo "    REASON: found errors in the following counters"
-                ERROR_COUNTER_PRINT=1
-                EXIT_CODE=1
-            fi
-
-            # List the counters which are non-zero
-            if [ $ERROR_COUNTER -ne 0 ]; then
-                # Print only if error counters are non-zero of a specific IB port
-                if [ $ERROR_COUNTER_PORT_1 -ne 0 ]; then
-                    echo "      Errors in $INFINI_CLASS_PATH/$driver_need$device_num/ports/1/counters"
-
-                    for i in $INFINI_CLASS_PATH/$driver_need$device_num/ports/1/counters/*error*; do
-                        err_cnt=`cat $i 2> /dev/null`
-                        RET_CODE=$?
-                        if [ $RET_CODE -eq 0 ]; then
-                            if [ $err_cnt -gt 20 ]; then
-                                echo "         $(basename $i): $err_cnt";
-                            fi;
-                        else
-                            echo "-W- Failed to read $i file"
-                        fi
-                    done
-
-                fi
-
-                if [ $ERROR_COUNTER_PORT_2 -ne 0 ]; then
-                    echo "      Errors in $INFINI_CLASS_PATH/$driver_need$device_num/ports/2/counters"
-
-                    for i in $INFINI_CLASS_PATH/$driver_need$device_num/ports/2/counters/*error*; do
-                        err_cnt=`cat $i 2> /dev/null`
-                        RET_CODE=$?
-                        if [ $RET_CODE -eq 0 ]; then
-                            if [ $err_cnt -gt 20 ]; then
-                                echo "         $(basename $i): $err_cnt";
-                            fi;
-                        else
-                            echo "-W- Failed to read $i file"
-                        fi
-                    done
-                fi
-            fi
-
-            if [ $ERROR_COUNTER -eq 0 ]; then
-                result="${green}PASS"
-                if [ $check_port1 -ne 1 ] && [ $check_port2 -ne 1 ]; then
-                    result="NA (Eth ports)"
-                fi
-                echo_error_cnt "${LOOP_COUNT}" "${ca_type}" "${result}"
-            fi
-
-            # Reset these variables for other HCAs
-            let ERROR_COUNTER_PORT_1=0
-            let ERROR_COUNTER_PORT_2=0
-
-
-        else
-            echo_error_cnt ${LOOP_COUNT} ${ca_type} "NA"
-        fi
-        let "LOOP_COUNT=$LOOP_COUNT + 1"
-    done
-
-else
-    echo "Error Counter Check .................... NA"
-fi
-
-
-# Kernel syslog check
-# Save the output of dmesg in a tmp file
-if [ $HOST_DRIVER_INIT -eq 1 ]; then
-    dmesg > /tmp/hca_self_test_dmesg.output
-    VAPI_ERROR_COUNT=`egrep oom-\|"Out of Memory"\|tsIb\|VAPI\|THH_\|THHUL\|KERNEL_IB\|IB_NET\|MOD_LNX_SDP /tmp/hca_self_test_dmesg.output 2> /dev/null | grep -v 'SOCK: GETSOCKOPT unimplemented option <2>' | wc -l`
-    OOPS_COUNT=`grep Oops /tmp/hca_self_test_dmesg.output 2> /dev/null | wc -l`
-    KERNEL_PANIC_COUNT=`grep "Kernel panic" /tmp/hca_self_test_dmesg.output 2> /dev/null | wc -l`
-
-    if [ $VAPI_ERROR_COUNT -eq 0 ] && [ $OOPS_COUNT -eq 0 ] && [ $KERNEL_PANIC_COUNT -eq 0 ]; then
-        echo -e "Kernel Syslog Check .................... ${green}PASS"
-        tput sgr0
-    else
-        echo -e "Kernel Syslog Check .................... ${red}FAIL"
-        tput sgr0
-        EXIT_CODE=1
-        if [ $OOPS_COUNT -ne 0 ]; then
-            echo "    REASON: Kernel syslog reported: Oops "
-            grep Oops /tmp/hca_self_test_dmesg.output | uniq | awk -F'\n' '{print "      " $1 }'
-        fi
-        if [ $KERNEL_PANIC_COUNT -ne 0 ]; then
-            echo "    REASON: Kernel syslog reported: Kernel panic "
-            grep "Kernel panic" /tmp/hca_self_test_dmesg.output | uniq | awk -F'\n' '{print "      " $1 }'
-        fi
-        if [ $VAPI_ERROR_COUNT -ne 0 ]; then
-            echo "    REASON: Kernel syslog reported: Driver messages "
-            egrep oom-\|"Out of Memory"\|tsIb\|VAPI\|THH_\|THHUL\|KERNEL_IB\|IB_NET\|MOD_LNX_SDP /tmp/hca_self_test_dmesg.output | grep -v 'SOCK: GETSOCKOPT unimplemented option <2>' | uniq | awk -F'\n' '{print "      " $1 }'
-        fi
-    fi
-else
-    echo "Kernel Syslog Check .................... NA"
-fi
-
-
-#get the NODE Guide
-
-if [ $NUM_HCAS -ne 0 ]; then
-    mlx_dev_num=0
-    mlx5_dev_num=0
-    mthca_dev_num=0
-    LOOP_COUNT=0
-
-    # To take care of more than one HCA
-    while [ $LOOP_COUNT -lt $NUM_HCAS ]
-    do
-        driver_need=$(get_driver $LOOP_COUNT)
-        ca_type=$(get_ca_type $LOOP_COUNT)
-
-        NODE_GUID="NA"
-        if [ "$driver_need" != "" ]; then
-            if [ "$driver_need" == "$HERMON_DRIVER_NEEDED" ]; then
-                device_num=${mlx_dev_num}
-                let "mlx_dev_num=$mlx_dev_num + 1"
-            elif [ "$driver_need" == "$CONNECTIB_DRIVER_NEEDED" ]; then
-                  device_num=$mlx5_dev_num
-                  let "mlx5_dev_num=$mlx5_dev_num + 1"
-            else
-                device_num=${mthca_dev_num}
-                let "mthca_dev_num=$mthca_dev_num + 1"
-            fi
-
-            if [ -f "$INFINI_CLASS_PATH/$driver_need$device_num/node_guid" ]; then
-                NODE_GUID=$(sed 's/\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)/\1\2:\3\4/g' < $INFINI_CLASS_PATH/$driver_need$device_num/node_guid)
-            else
-                PCI_DEVICE=$(lspci 2> /dev/null | grep Mellanox | head -$(expr $LOOP_COUNT + 1) | tail -1 | awk '{print $1}')
-                NODE_GUID1=$(mstflint -d $PCI_DEVICE q 2> /dev/null | grep "GUIDs:" | awk '{print $2}' | sed 's/\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)\([0-9a-f]\)/\1\2:\3\4:/g' | cut -b -23)
-
-                if [ "$NODE_GUID1" != "" ]; then
-                    NODE_GUID=${NODE_GUID}
-                fi
-            fi
-        fi
-        echo "Node GUID on CA #$LOOP_COUNT (${ca_type}) ............... ${NODE_GUID}"
-        let "LOOP_COUNT=$LOOP_COUNT + 1"
-     done
-
-fi
-echo "------------------ DONE ---------------------"
-echo
-#rm -f /tmp/hca_self_test_modprobe.output
-rm -f /tmp/hca_self_test_dmesg.output
-rm -f ${G_LSPCI_OUTPUT_FILE}
-exit $EXIT_CODE
diff --git a/small_utils/hca_self_test.readme b/small_utils/hca_self_test.readme
deleted file mode 100755 (executable)
index bc74d30..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-\r
-NAME\r
-\r
-    hca_self_test.ofed    - checker for InfiniBand Adapter (HCA) health\r
-    \r
-DESCRIPTION\r
-    hca_self_test.ofed is a script that checks the health of the HCAs found on\r
-    the local host. The output of the script consists of information on the\r
-    discovered HCAs and various health attributes of the local host.\r
-\r
-    Output system information includes the following items:\r
-     - Number of HCAs\r
-     - Host driver version\r
-     - Host architecture type\r
-     - Node GUIDs of HCAs\r
-     - Number of active HCA ports\r
-     - State of HCA ports\r
-\r
-    Output of system checks includes the results of following items:\r
-     - Number of HCAs\r
-        - Driver initialization status\r
-        - HCA Firmware version\r
-        - RPMs installation\r
-        - Driver error messages in kernel logs\r
-        - IB Port error counters \r
-        \r
-NOTES:\r
-     - hca_self_test.ofed must be run as root\r
-     - The version numbers of the most current HCA firmware releases should be\r
-       stated inside the file.\r
-            \r
diff --git a/small_utils/mcra.c b/small_utils/mcra.c
deleted file mode 100644 (file)
index 9cdf872..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- *
- *  mcra.c - Mellanox Configuratio Register Access tool
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <getopt.h>
-#include "mtcr.h"
-#include "tools_version.h"
-
-#define ONES32(size)                    ((size)?(0xffffffff>>(32-(size))):0)
-#define MASK32(offset,size)             (ONES32(size)<<(offset))
-
-#define EXTRACT_C(source,offset,size)   ((((unsigned)(source))>>(offset)) & ONES32(size))
-#define EXTRACT(src, start,len)          (((len)==32)?(src):EXTRACT_C(src,start,len))
-
-#define MERGE_C(rsrc1,rsrc2,start,len)  ((((rsrc2)<<(start)) & (MASK32((start),(len)))) | ((rsrc1) & (~MASK32((start),(len)))))
-#define MERGE(rsrc1,rsrc2,start,len)    (((len)==32)?(rsrc2):MERGE_C(rsrc1,rsrc2,start,len))
-
-#define ADB_DUMP_VAR   "ADB_DUMP"
-#define MAX_DEV_LEN 512
-
-void usage(const char *n, int with_exit)
-{
-    printf("  Mellanox Configuration Registers Access tool\n");
-    printf("  Usage: %s [-s <i2c-slave>] [-a <adb dump>] [-v] [-h] [-c] <device>\n", n);
-    printf("         <addr[.<bit offset>:<bit size>]|[,<bytes number>]> [data]\n");
-    printf("         If data is given, operation is write. Otherwise it is read.\n");
-    printf("         If a bit range is given in the address (E.G.: 0xf0014.16:8):\n");
-    printf("              For read  - Only the requested bits are printed.\n");
-    printf("              For write - Read-Modify-Write. Only the requested bits are changed.\n");
-    printf("         If 'bytes number' is given in the address (E.G.: 0xf0014,16):\n");
-    printf("              For read  - Will read a block (its size is the given bytes number).\n");
-    printf("              For write - User need to give list of dwrods to write, \n"
-           "                          number of dwords should be (bytes number/4).\n\n");
-    printf("  -s <i2c-slave> : I2C slave address.\n");
-    printf("  -a <dump file> : adb dump file, used for access by path.\n");
-    printf("  -c             : clear the device's PCI semaphore.\n");
-    printf("  -h             : Print this help message.\n");
-    printf("  -v             : Display version info\n");
-    printf("\n");
-    printf("Environment Variables:\n");
-    printf("   ADB_DUMP      : Holds the path to adb dump, used for access by path (can be overriden by \"-a\").\n");
-    if (with_exit) {
-        exit(1);
-    }
-}
-#define MCRA_TOOL_NAME "mcra"
-#define MCRA_TOOL_VERSON "1.0.0"
-
-int main(int argc, char *argv[])
-{
-    char*         endp;
-    char*         dev = NULL;
-    char          device[MAX_DEV_LEN] = {0};
-    char*         adb_dump = NULL;
-    char*         path = NULL;
-    int           rc=0;
-    unsigned int  addr = 0, val = 0;
-    mfile         *mf;
-    unsigned int  i2c_slave = 0;
-    int           c;
-    int           read_op = 0;
-    int           bit_offs = 0;
-    int           bit_size = 32;
-    int           byte_size = 0;
-    int           read_block = 0;       /* if 0 then read field according to "addr.bit:size", else read block of size "byte_size" */
-    int          clear_semaphore = 0;
-    const char*   op_name = "cr write";
-
-#if 0
-    int  i, rc1;
-    char buf[1024], *p=buf;
-    rc1 = mdevices(buf, 1024);
-    for (i=0; i<rc1; i++) {
-        printf("Found: \"%s\"\n", p);
-        p += strlen(p)+1;
-    }
-    exit(0);
-#endif
-    (void)rc; // avoid warnings (we dont use it just assign)
-    // Parse cmd line:
-    if (argc < 2) {
-        usage(argv[0], 1);
-    }
-
-    while ((c = getopt(argc, argv, "s:a:hvc")) != -1) {
-        switch (c)  {
-        case 's':
-            i2c_slave  = strtoul(optarg, &endp, 0);
-            if (*endp || i2c_slave == 0 || i2c_slave > 0x7f) {
-                fprintf(stderr, "-E- Bad slave address given (%s). Expecting a number [0x1 .. 0x7f]\n", optarg);
-                exit(1);
-            }
-            break;
-
-        case 'a':
-            adb_dump = optarg;
-            break;
-
-        case 'v':
-            print_version_string(MCRA_TOOL_NAME, MCRA_TOOL_VERSON);
-            exit(0);
-
-        case 'h':
-            usage(argv[0], 0);
-            exit(0);
-
-        case 'c':
-            clear_semaphore = 1;
-            break;
-
-        case '?':
-            exit(1);
-
-        default:
-            fprintf(stderr, "-E- Unknown flag \"%c\"\n", c);
-            exit(1);
-        }
-    }
-
-    // parse non-optons argv elements
-    if (optind >= argc) {
-        fprintf(stderr, "-E- Missing device argument\n");
-        exit(1);
-    } else {
-        dev = argv[optind];
-        optind++;
-    }
-
-    if (clear_semaphore) {
-        if ((rc = mclear_pci_semaphore(dev))) {
-            fprintf(stderr, "-E- Failed to clear PCI semaphore for device: %s. %s\n", dev, m_err2str((MError)rc));
-            exit(1);
-        }
-        printf("-I- PCI Semaphore cleared successfully.\n");
-        exit(0);
-    }
-
-    if (optind >= argc) {
-        fprintf(stderr, "-E- Missing address argument\n");
-        exit(1);
-    } else {
-         addr = strtoul(argv[optind], &endp, 0);
-         if (*endp != '\0' && *endp != '.' && *endp != ',') {
-             //fprintf(stderr, "-E- Bad address given (%s). Unparsed string: \"%s\"\n", av[ap] ,endp);
-             //exit(1);
-             path = argv[optind];
-         }
-
-         if (*endp == ',') {
-             if (path) {
-                 fprintf(stderr, "-E- Can't read block with full path\n");
-                 exit(1);
-             }
-             read_block = 1;
-             byte_size = strtoul(endp+1, &endp, 0);
-
-             if (*endp != '\0' || byte_size == 0)
-             {
-                 fprintf(stderr, "-E- Bad byte size in given address (%s). Unparsed string: \"%s\"\n", argv[optind] ,endp);
-                 exit(1);
-             }
-         }
-
-         if (*endp == '.') {
-             if (path) {
-                 fprintf(stderr, "-E- Full path with bit address notation is illegal\n");
-                 exit(1);
-             }
-
-             bit_offs = strtoul(endp+1, &endp, 0);
-             if ((*endp != '\0' && *endp != ':') || bit_offs >= 32) {
-                 fprintf(stderr, "-E- Bad bit offset in given address (%s). Unparsed string: \"%s\"\n", argv[optind] ,endp);
-                 exit(1);
-             }
-         }
-
-         if (*endp == ':') {
-             if (path) {
-                 fprintf(stderr, "-E- Full path with bit size notation is illegal\n");
-                 exit(1);
-             }
-
-             bit_size = strtoul(endp+1, &endp, 0);
-             if (*endp != '\0') {
-                 fprintf(stderr, "-E- Bad bit size in given address (%s). Unparsed string: \"%s\"\n", argv[optind] ,endp);
-                 exit(1);
-             }
-
-             if (bit_size + bit_offs > 32) {
-                 fprintf(stderr, "-E- Bad bit offset/size in given address (%s) - exceeds 32 bits\n", argv[optind]);
-
-                 exit(1);
-             }
-         }
-
-         if (!path && *endp) {
-             fprintf(stderr, "-E- Bad address given (%s). Unparsed string: \"%s\"\n", argv[optind] ,endp);
-             exit(1);
-         }
-
-         // Allow the bit_size to be ommited
-         if (bit_size + bit_offs > 32)
-             bit_size = 32 - bit_offs;
-
-         optind++;
-    }
-
-
-    if (optind >= argc) {
-        read_op = 1;
-        op_name = "cr read";
-    } else {
-        val = strtoul(argv[optind], &endp, 0);
-        if (*endp) {
-            fprintf(stderr, "-E- Bad data given (%s)\n", argv[optind]);
-            exit(1);
-        }
-        optind++;
-    }
-
-    if (optind < argc) {
-        fprintf(stderr, "-E- Extra argument given (%s)\n", argv[optind]);
-        exit(1);
-    }
-
-    if (!adb_dump) {
-        adb_dump = getenv(ADB_DUMP_VAR);
-    }
-    strncpy(device, dev, MAX_DEV_LEN -1);
-    // Do the job
-    mf = mopen_adv((const char *)device, (MType)(MST_DEFAULT | MST_CABLE));
-    if (!mf) {
-        perror("mopen");
-        return 1;
-    }
-#ifndef MST_UL
-    if (mf->tp == MST_MLNXOS) {
-        mset_cr_access(mf, 1);
-    }
-#endif
-    if (i2c_slave)
-        mset_i2c_slave(mf, (u_int8_t)i2c_slave);
-
-    if (path) {
-        FILE* fp;
-        char* fpath;
-        char line[1024];
-        char *offset, *size;
-        int path_found = 0;
-
-        if (!adb_dump) {
-            fprintf(stderr, "-E- Can't access by path without providing adb dump file path\n");
-            goto error;
-        }
-
-        fp = fopen(adb_dump, "r");
-        if (!fp) {
-            fprintf(stderr, "-E- Can't open adb dump (%s) file: %s\n", adb_dump, strerror(errno));
-            goto error;
-        }
-
-        while (fgets(line, sizeof(line), fp) != NULL) {
-            if (!strstr(line, path)) {
-                continue;
-            }
-
-            fpath = strtok(line, " ");
-
-            if (!fpath) {
-                fprintf(stderr, "-E- Bad register map file format (%s), Can't find path\n", line);
-                fclose(fp);
-                goto error;
-            }
-
-            if (strcmp(fpath, path)) {
-                continue;
-            }
-
-            offset = strtok(NULL, " ");
-            size = strtok(NULL, " ");
-
-            if (!offset || !size) {
-                fprintf(stderr, "-E- Bad register map file format (%s), Can't find offset/size\n", line);
-                fclose(fp);
-                goto error;
-            }
-            path_found = 1;
-
-            if (sscanf(offset, "0x%x.%d", &addr, &bit_offs) != 2) {
-                if (sscanf(offset, "0x%x", &addr) != 1) {
-                    fprintf(stderr, "-E- Bad offset format in adb dump file, offset=%s\n", offset);
-                    fclose(fp);
-                    goto error;
-                }
-
-                bit_offs = 0;
-            }
-
-            if (sscanf(size, "%d", &bit_size) != 1) {
-                fprintf(stderr, "-E- Bad size format in adb dump file, size=%s\n", size);
-                fclose(fp);
-                goto error;
-            }
-
-            break;
-        }
-
-        fclose(fp);
-        if (!path_found) {
-            fprintf(stderr, "-E- Can't find path (%s)\n", path);
-            goto error;
-        }
-    }
-
-    if (read_op) {
-        if (read_block) {
-            int i;
-            int dowrd_size = ((byte_size - 1)/4) + 1;
-            u_int32_t* data = malloc(sizeof(u_int32_t)*dowrd_size);
-
-            if (!data) {
-                fprintf(stderr, "-E- Failed to allocate memmory for read block buffer\n");
-                goto error;
-            }
-
-            addr = (addr >> 2) << 2;
-            if (mread4_block(mf, addr, data, dowrd_size*4) != dowrd_size*4)
-                goto access_error;
-
-            // print the dowrds
-            for (i = 0; i < dowrd_size; i++) {
-                printf("0x%08x 0x%08x\n", addr + i*4, data[i]);
-            }
-        } else {
-            if (mread4(mf, addr, &val) != 4)
-                goto access_error;
-
-            val = EXTRACT(val, bit_offs, bit_size);
-            printf("0x%08x\n", val);
-        }
-    } else {
-        if (read_block) {
-            fprintf(stderr, "-E- Writing blocks is not supported yet\n");
-            exit(1);
-        }
-
-        if (bit_offs != 0 || bit_size != 32) {
-            // read-modify-write
-            u_int32_t tmp_val;
-            if (mread4(mf, addr, &tmp_val) != 4)
-                goto access_error;
-
-            val = MERGE(tmp_val, val, bit_offs, bit_size);
-        }
-        if (mwrite4(mf, addr, val) != 4) {
-            goto access_error;
-        }
-    }
-    goto success;
-
-access_error:
-    perror(op_name);
-
-error:
-    mclose(mf);
-    return 1;
-
-success:
-    mclose(mf);
-    return 0;
-}
-
diff --git a/small_utils/mread.c b/small_utils/mread.c
deleted file mode 100644 (file)
index cefaaf9..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-/*
- *
- *  mread.c - CR Space read access
- *
- */
-
-#include "mtcr.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-void usage(const char *n)
-{
-    printf("%s <device> <addr>\n", n);
-    exit(1);
-}
-
-int main(int ac, char *av[])
-{
-    char          *endp;
-    int           rc=0;
-    unsigned int  addr, val;
-    mfile         *mf;
-
-    if (ac != 3 )
-        usage(av[0]);
-
-    addr = strtoul(av[2], &endp, 0);
-    if (*endp)
-        usage(av[0]);
-
-    mf = mopen(av[1]);
-    if (!mf)
-    {
-        perror("mopen");
-        return 1;
-    }
-
-    if ((rc = mread4(mf, addr, &val)) < 0)
-    {
-        mclose(mf);
-        perror("mread");
-        return 1;
-    }
-    if (rc < 4)
-    {
-        mclose(mf);
-        printf("Read only %d bytes\n", rc);
-        return 1;
-    }
-
-    mclose(mf);
-    printf("Read 0x%08x:0x%08x\n", addr, val);
-    return rc;
-}
diff --git a/small_utils/mtserver.c b/small_utils/mtserver.c
deleted file mode 100644 (file)
index 4436058..0000000
+++ /dev/null
@@ -1,718 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- *
- *  mtserver.c - Mellanox Software tools (mst) server (remote mtcr calls)
- *
- *  The buffers foramt:
- *
- *  Send buff: The buffer which send by the client side.
- *  Rcv  buff: The buffer which send by the server side.
- *  Mopen:
- *       Send buff:  O   Dtype       DevName
- *                   O   0x00000001  O  0x00000001  /dev/mst/mt25418_pci_cr0
- *       Rcv buff:   O
- *
- *  Mclose:
- *       Send buff:  C
- *       Rcv  buff:  O
- *
- *  Mdevices:
- *       Send buff:  L
- *       Rcv  buff:  O   DevsNum
- *                   [List of devices]
- *                   O   4
- *                  /dev/mst/mtusb-1
- *                  /dev/mst/mt25418_pciconf0
- *                  /dev/mst/mt25418_pci_uar0
- *                  /dev/mst/mt25418_pci_cr0
- *
- *  Mread4:
- *       Send buff:  R   Offset
- *                   R   0x000f0014
- *       Rcv  buff:  O   Value
- *                   O   0x00a00190
- *
- *  Mwrite4:
- *       Send buff:  W   Offset      Value
- *                   W   0x000f0018  0x12345678
- *       Rcv  buff:  O
- *
- *
- *  Mread64:
- *       Send buff:  r   AddrWidth   SlaveAddr  Size  Offeset
- *                   r   0           0x77       0x1   0x0
- *       Rcv  buff:  O   Size        data
- *                   O   0x1         00
- *
- *  Mwrite64:
- *       Send buff:  r   AddrWidth   SlaveAddr  Size  Offeset  data
- *                   r   0           0x77       0x1   0x0      00
- *       Rcv  buff:  O
- *
- *  Version:
- *       Send buff:  V
- *       Rcv  buff:  O   Version
- *                   O   1.1
- *
- *  Mi2c_detect:
- *       Send buff:  S
- *       Rcv  buff:  S   [SlaveAdrr]  ...  [SlaveAdrr]
- *                   O   0x70 0x48
- */
-
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-#include <signal.h>
-
-#include "mtcr.h"
-#include "tcp.h"
-
-/*
- * Constants
- */
-#define DEF_PORT 23108
-#define BUF_LEN  256
-#define DEV_LEN  2048
-
-int sdebug = 0;
-int port = DEF_PORT;    /* Default port */
-
-#ifndef __WIN__
-    #define PREP_SIGNAL(signal_handler) signal(SIGPIPE, signal_handler);
-    #define WIN_INIT()
-    #define WIN_CLOSE(mf, cmd)
-    #define WIN_WHILE()
-#else
-    #include <Winsock2.h>
-    #define PREP_SIGNAL(signal_handler)
-    #define WIN_INIT() {                          \
-        int rc;                                   \
-        WSADATA wsaData;                          \
-        rc = WSAStartup(MAKEWORD(2, 2), &wsaData);\
-        if (rc != 0) {                            \
-            printf("-E- Winsock initialization failed (WSAStartup returned %d\n", rc);\
-            exit(1);                            \
-        }                                         \
-    }
-    #define WIN_CLOSE(mf, cmd) {\
-         if (!mf && cmd != 'V') {\
-             break;\
-         }\
-    }
-
-    #define WIN_WHILE() while (1)
-#endif
-
-#ifdef SIMULATOR
-
-    #include <sys/mman.h>
-    #include <sys/types.h>
-    #include <sys/stat.h>
-    #include <fcntl.h>
-    #include <unistd.h>
-
-    #define FILE_PATH "/tmp/mmap.log"
-    #define NUM_INTS  (0x40000)
-    #define FILE_SIZE (NUM_INTS * sizeof(int))
-
-u_int32_t* cr_space;
-char sim_str[100] = "\t-i[d]  <id>   - set the device id.\n";
-int id;
-int fd;
-mfile *mopen(const char *name)
-{
-    name = NULL;
-    return(mfile*)0;
-
-}
-
-
-mfile *mopend(const char *name, DType dtype)
-{
-    name  = NULL;
-    dtype = 0;
-    return(mfile*)1;
-}
-
-int mclose(mfile *mf)
-{
-    mf = NULL;
-    return 0;
-}
-
-int mdevices(char *buf, int len, int mask)
-{
-    len  = 0;
-    mask = 0;
-    strcpy(buf, "Simulator");
-    return 1;
-}
-
-int mread4(mfile *mf, unsigned int offset, u_int32_t *value)
-{
-    mf     = NULL;
-    *value = cr_space[offset/4];
-    return 4;
-}
-
-int mwrite4(mfile *mf, unsigned int offset, u_int32_t value)
-{
-    mf = NULL;
-    cr_space[offset/4] = value;
-    return 4;
-}
-int mi2c_detect (mfile *mf, u_int8_t slv_arr[SLV_ADDRS_NUM])
-{
-    mf      = NULL;
-    slv_arr = NULL;
-    return 1;
-}
-int mread_i2cblock(mfile *mf, unsigned char i2c_slave, u_int8_t addr_width,
-                            unsigned int offset, void *data, int length)
-{
-    mf         = NULL;
-    i2c_slave  = 1;
-    addr_width = 1;
-    offset     = 1;
-    data       = NULL;
-    length     = 1;
-    return 0;
-}
-
-int mwrite_i2cblock(mfile *mf, unsigned char i2c_slave, u_int8_t addr_width,
-                    unsigned int offset, void *data, int length)
-{
-    mf         = NULL;
-    i2c_slave  = 1;
-    addr_width = 1;
-    offset     = 1;
-    data       = NULL;
-    length     = 1;
-    return 0;
-}
-
-int mwrite4_block(mfile *mf, unsigned int offset, u_int32_t* data, int byte_len);
-
-
-int check_id_arg(char* av[], int ac, int *i)
-{
-    char *end;
-    if (++(*i) >= ac) {
-        printf("After switch \"%s\" device id is expected.\n", av[--(*i)]);
-        printf("Type \"%s -h\" for help.\n", av[0]);
-        exit(1);
-    }
-    id = (int)strtol(av[*i], &end, 0);
-    if (*end) {
-        printf("Invalid id: \"%s\" -- ?\n", end);
-        printf("Type \"%s -h\" for help.\n", av[0]);
-        exit(1);
-    }
-    return 0;
-
-}
-
-int prepare_the_map_file(void)
-{
-    int i;
-    int result;
-    fd = open(FILE_PATH, O_RDWR | O_CREAT | O_TRUNC, (mode_t)0600);
-
-    if (fd == -1) {
-        printf("-E- Error opening file for writing");
-        exit(1);
-    }
-
-    result = lseek(fd, FILE_SIZE-1, SEEK_SET);
-    if (result == -1) {
-        close(fd);
-        perror("Error calling lseek() to 'stretch' the file");
-        exit(1);
-    }
-
-    result = write(fd, "", 1);
-    if (result != 1) {
-        close(fd);
-        perror("Error writing last byte of the file");
-        exit(1);
-    }
-
-    cr_space = mmap(0, FILE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
-    if (cr_space == MAP_FAILED) {
-        close(fd);
-        perror("Error mmapping the file");
-        exit(1);
-    }
-    for (i = 0; i < NUM_INTS; ++i) {
-        cr_space[i] = 0;
-    }
-
-    // write id
-    if (id != 0) {
-        cr_space[0xf0014/4] = id;
-    }
-    return 0;
-}
-
-int unmap_and_close_file(void)
-{
-    if (munmap(cr_space, FILE_SIZE) == -1) {
-        perror("Error un-mmapping the file");
-    }
-    close(fd);
-    return 0;
-}
-#else
-
-char sim_str[100] = "";
-int check_id_arg(char* av[], int ac, int *i)
-{
-    ac = 0;
-    printf("Invalid switch \"%s\".\n", av[*i]);
-    printf("Type \"%s -h\" for help.\n", av[0]);
-    exit(1);
-
-}
-
-int prepare_the_map_file(void)
-{
-    return 0;
-}
-
-int unmap_and_close_file(void)
-{
-    return 0;
-
-}
-#endif
-/* ////////////////////////////////////////////////////////////////////// */
-/* ////////////////////////////////////////////////////////////////////// */
-void usage(const char *s)
-{
-    printf("Usage:\n\t%s [switches]\n\n", s);
-    printf("Switches may be:\n");
-    printf("\t-p[ort] <port> - Listen to specify port (default is %d).\n", port);
-    printf("\t-d[ebug]       - Print all socket traffic (for debuging only).\n");
-    printf("%s", sim_str);
-    printf("\t-h[elp]        - Print help message.\n");
-    exit (1);
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-static void writes_deb(int con, char *s)
-{
-    writes(con, s);
-    if (sdebug)
-        printf("-> %s\n", s);
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-void write_err(int con)
-{
-    writen(con, "E ", 2);
-    writes(con, strerror(errno));
-    if (sdebug)
-        printf("-> E %s\n", strerror(errno));
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-void write_ok(int con)
-{
-    writes_deb(con, "O");
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-void mySignal()
-{
-    exit(0);
-}
-
-#define GET_PARAM(param, str, type, param_name, err_msg) {\
-    char* end;\
-    param = (type)strtoul(str, &end, 0);\
-    if (*end) {\
-        sprintf(err_msg, "E Invalid %s", param_name);\
-        return 1;\
-    }\
-}
-
-
-
-
-int parse_i2c_cmd(char* buf, u_int8_t* addr_width, u_int8_t* slave_addr, int* size,
-                  unsigned int* offset, u_int8_t* data, char* err_msg)
-{
-    char* p_arr[5];
-    u_int8_t args_num;
-    int i;
-
-    if (*buf == 'r') {
-        args_num = 4;
-    } else {
-        args_num = 5;
-    }
-
-    p_arr[0]  = buf + 2;
-    for (i = 1; i <= args_num; i++) {
-        p_arr[i] = strchr(p_arr[i - 1], ' ');
-        if (p_arr[i] == NULL) {
-            break;
-        }
-        *(p_arr[i]) = '\0';
-        p_arr[i]++;
-    }
-
-    if (i < args_num) {
-        sprintf(err_msg, "E Bad msg internal error");
-        return 1;
-    }
-    GET_PARAM(*addr_width, p_arr[0], u_int8_t, "address width", err_msg);
-    GET_PARAM(*slave_addr, p_arr[1], u_int8_t, "slave address", err_msg);
-    GET_PARAM(*size,       p_arr[2], u_int8_t, "length", err_msg);
-    GET_PARAM(*offset,     p_arr[3], u_int8_t, "offset", err_msg);
-
-    if (args_num == 5) {
-        char* p = p_arr[4];
-
-        if (*size > 64) {
-            sprintf(err_msg, "E Bad size which should be less than 64");
-            return 1;
-        }
-        if ((*size * 2) != (int)strlen(p)) {
-            sprintf(err_msg, "E Bad data section");
-            return 1;
-        }
-        for (i = 0; i < *size; i++) {
-            char tmp_num[10];
-            // TODO: use 16 on the  strtoul
-            strncpy(tmp_num, "0x", 2);
-            strncpy(tmp_num + 2, p, 2);
-            tmp_num[4] = '\0';
-            ((u_int8_t*)data)[i] = (u_int8_t)strtoul(tmp_num, 0 , 0);
-            p += 2;
-        }
-    }
-
-    return 0;
-}
-
-int copy_buff_to_str(char* str, u_int8_t* data, int size)
-{
-    char* p = str;
-    int i;
-    for (i = 0; i < size; i++) {
-        sprintf(p, "%02x", data[i]);
-        p += 2;
-    }
-    return 0;
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-#define CHK(f)    do { if ((f) < 0) { perror(""); exit(1); } } while(0)
-#define CHK2(f,m) do { if ((f) < 0) { perror(m); exit(1); } } while(0)
-#define MSTSERVER_VERSION "1.1"
-int main (int ac, char *av[])
-{
-    char *end;
-    char* local_dev = NULL;
-       char  buf[BUF_LEN], dev_buf[DEV_LEN];
-    int   i, con, rc;
-    mfile *mf = 0;
-
-    /* Command line parsing. */
-    for (i=1; i<ac; i++) {
-        switch (*av[i]) {
-        case '-':
-            ++av[i];
-            if (!strcmp(av[i], "p")  ||  !strcmp(av[i], "port")) {
-                if (++i >= ac) {
-                    printf("After switch \"%s\" port number is expected.\n",av[--i]);
-                    printf("Type \"%s -h\" for help.\n", av[0]);
-                    exit(1);
-                }
-                port = (int)strtol(av[i], &end, 0);
-                if (*end) {
-                    printf("Invalid port: \"%s\" -- ?\n", end);
-                    printf("Type \"%s -h\" for help.\n", av[0]);
-                    exit(1);
-                }
-            } else if (!strcmp(av[i], "dev")) {
-                if (++i >= ac)
-                {
-                    printf("After switch \"%s\" a device is expected.\n",av[--i]);
-                    printf("Type \"%s -h\" for help.\n", av[0]);
-                    exit(1);
-                }
-                local_dev = av[i];
-
-            } else if (!strcmp(av[i], "d")  ||  !strcmp(av[i], "debug")) {
-                sdebug = 1;
-            } else if (!strcmp(av[i], "h")  ||  !strcmp(av[i], "help")) {
-                usage(av[0]);
-            } else if (!strcmp(av[i], "i")  ||  !strcmp(av[i], "id")) {
-                check_id_arg(av, ac, &i);
-            } else {
-                printf("Invalid switch \"%s\".\n", av[i]);
-                printf("Type \"%s -h\" for help.\n", av[0]);
-                exit(1);
-            }
-            break;
-        case '?':
-            usage(av[0]);
-            break;
-        default:
-            printf("Invalid parameter \"%s\".\n", av[i]);
-            printf("Type \"%s -h\" for help.\n", av[0]);
-            exit(1);
-        }
-    }
-
-    prepare_the_map_file();
-    PREP_SIGNAL(mySignal);
-    WIN_INIT();
-
-    /* Now open and start work */
-    logset(1);
-    WIN_WHILE() {
-        con = open_serv_connection(port);
-        CHK2(con, "Open connection (server side)");
-
-        for (;;) {
-
-            memset(buf, 0, BUF_LEN);
-            rc = reads(con, buf, BUF_LEN);
-            CHK(rc);
-            if (!rc) {
-                break;    /*  EOF */
-            }
-            if (sdebug) {
-                printf("<- %s\n", buf);
-            }
-            switch (*buf) {
-            case 'O':   /*  Open mfile */
-
-                if (mf)
-                    writes_deb(con, "E Already opened");
-                else {
-                    int dtype = strtoul (buf+2, &end, 0);
-                    if (*end != ' ')  {
-                        /*  Old style (O DEV_NAME) */
-                        mf = mopen(buf+2);
-                    } else {
-                        /*  New style (O FLAG DEV_NAME) */
-                        mf = mopend (end+1, dtype);
-                    }
-
-                    if (mf) {
-                        write_ok(con);
-                    } else {
-                        write_err(con);
-                    }
-                }
-                break;
-            case 'C':  /*  Close mfile */
-                if (!mf)
-                    writes_deb(con, "E Not opened");
-                else {
-                    if (mclose(mf) < 0) {
-                        write_err(con);
-                    } else {
-                        write_ok(con);
-                        mf = 0;
-                    }
-                }
-                break;
-            case 'V':  /*  Get version */
-                writes_deb(con, "O "MSTSERVER_VERSION);
-                break;
-#ifndef MST_UL                         
-            case 'S':  /*  Scan I2C bus */
-                if (!mf)
-                    writes_deb(con, "E Not opened");
-                else {
-                    u_int8_t slv_arr[SLV_ADDRS_NUM];
-                    if (mi2c_detect(mf, slv_arr) < 0) {
-                        write_err(con);
-                    } else {
-                        int i;
-                        char *p, buf[1024];
-                        sprintf(buf, "O");
-                        p =  buf + 1;
-                        for (i = 0; i < SLV_ADDRS_NUM; i++) {
-                            if (slv_arr[i]) {
-                                sprintf(p, " 0x%02x", i);
-                                p += strlen(p);
-                            }
-                        }
-                        writes_deb(con, buf);
-                    }
-                }
-                break;
-#endif                         
-            case 'L':   /*  Get devices list */
-                if (local_dev == NULL) {
-                    rc = mdevices(dev_buf, DEV_LEN, MDEVS_ALL);
-                               } else {
-
-                    strcpy(dev_buf, "/dev/mst/mtREMOTE_pci_cr0");
-                    printf("-D- local_dev=%s dev_buf=%s\n", local_dev, dev_buf);
-                    rc = 1;
-                }
-
-                if (rc < 0)
-                    write_err(con);
-                else {
-                    char *p = &dev_buf[0], vbuf[16];
-                    sprintf(vbuf, "O %d", rc);
-                    writes_deb(con, vbuf);
-                    for (i = 0; i < rc; i++, p += strlen(p)+1) {
-                        writes_deb(con, p);
-                    }
-                }
-                break;
-            case 'R':   /*  Read word */
-                if (!mf) {
-                    writes_deb(con, "E Not opened");
-                } else {
-                    unsigned int offset;
-                    u_int32_t    value;
-                    offset = strtoul(buf+2, &end, 0);
-                    if (*end) {
-                        writes_deb(con, "E Invalid offset");
-                    } else {
-                        if (mread4(mf, offset, &value) < 4) {
-                            write_err(con);
-                        } else {
-                            char vbuf[16];
-                            sprintf(vbuf, "O 0x%08x", value);
-                            writes_deb(con, vbuf);
-                        }
-                    }
-                }
-                break;
-#ifndef MST_UL
-            case 'r':   /*  Read I2C */
-                if (!mf) {
-                    writes_deb(con, "E Not opened");
-                } else {
-                    u_int8_t data[64];
-                    char err_msg[256];
-                    u_int8_t addr_width, slave_addr;
-                    unsigned int offset;
-                    int  size;
-
-                    rc = parse_i2c_cmd(buf, &addr_width, &slave_addr, &size, &offset, data, err_msg);
-                    if (rc) {
-                        writes_deb(con, err_msg);
-                    } else {
-                        if (mread_i2cblock(mf, slave_addr, addr_width, offset, data, size) < size) {
-                            write_err(con);
-                        } else {
-                            char vbuff[256];
-                            sprintf(vbuff, "O 0x%x ", size);
-                            copy_buff_to_str(&vbuff[strlen(vbuff)], data, size);
-                            writes_deb(con, vbuff);
-                        }
-                    }
-                }
-                break;
-            case 'w':   /*  Read I2C */
-                if (!mf) {
-                    writes_deb(con, "E Not opened");
-                } else {
-                    u_int8_t data[64];
-                    char err_msg[256];
-                    u_int8_t addr_width, slave_addr;
-                    unsigned int offset;
-                    int  size;
-
-                    rc = parse_i2c_cmd(buf, &addr_width, &slave_addr, &size, &offset, data, err_msg);
-                    if (rc) {
-                        writes_deb(con, err_msg);
-                    } else {
-                        if (mwrite_i2cblock(mf, slave_addr, addr_width, offset, data, size) < size) {
-                            write_err(con);
-                        } else {
-                            write_ok(con);
-                        }
-                    }
-                }
-                break;
-#endif
-            case 'W':   /*  Write word */
-                if (!mf) {
-                    writes_deb(con, "E Not opened");
-                } else {
-                    unsigned int offset;
-                    u_int32_t    value;
-                    char *p = strchr(buf+2, ' ');
-                    if (!p) {
-                        writes_deb(con, "E Invalid format (should be OFFS DATA)");
-                    } else {
-                        *p = '\0';
-                        p++;
-                        offset = strtoul(buf+2, &end, 0);
-                        if (*end) {
-                            writes_deb(con, "E Invalid offset");
-                        } else {
-                            value = strtoul(p, &end, 0);
-                            if (*end) {
-                                writes_deb(con, "E Invalid data");
-                            } else {
-                                if (mwrite4(mf, offset, value) < 4)  {
-                                    write_err(con);
-                                } else {
-                                    write_ok(con);
-                                }
-                            }
-                        }
-                    }
-                }
-                break;
-            default:
-                writes(con, "E Invalid command");
-                if (sdebug)
-                    printf("-> E Invalid command (len:%d cmd:\"%s\")\n",
-                           (int)strlen(buf), buf);
-                break;
-            }
-            WIN_CLOSE(mf, *buf);
-        }
-    }
-
-    unmap_and_close_file();
-    return 0;
-}
diff --git a/small_utils/mwrite.c b/small_utils/mwrite.c
deleted file mode 100644 (file)
index cf60621..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-/*
- *
- *  mwrite.c - CR Space write access
- *
- */
-#include "mtcr.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-void usage(const char *n)
-{
-    printf("%s <device> <addr> <value>\n", n);
-    exit(1);
-}
-
-int main(int ac, char *av[])
-{
-    char          *endp;
-    int           rc=0;
-    unsigned int  addr, val;
-    mfile         *mf;
-
-    if (ac != 4)
-        usage(av[0]);
-
-    addr = strtoul(av[2], &endp, 0);
-    if (*endp)
-        usage(av[0]);
-    val = strtoul(av[3], &endp, 0);
-    if (*endp)
-        usage(av[0]);
-
-    mf = mopen(av[1]);
-    if ( !mf )
-    {
-        perror("mopen");
-        return 1;
-    }
-
-    if ((rc = mwrite4(mf, addr, val)) < 0)
-    {
-        mclose(mf);
-        perror("mwrite");
-        return 1;
-    }
-    if (rc < 4)
-    {
-        mclose(mf);
-        printf("Write only %d bytes\n", rc);
-        return 1;
-    }
-    mclose(mf);
-    return 0;
-}
diff --git a/small_utils/tcp.c b/small_utils/tcp.c
deleted file mode 100644 (file)
index 965b5a5..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- *
- *  tcp.c - simple socket library routines
- *
- */
-
-#ifndef INSIDE_MTCR
-#define INSIDE_MTCR
-#include "tcp.h"
-#endif
-
-#include <errno.h>
-#include <fcntl.h>
-#include <memory.h>
-#include <signal.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifndef __WIN__
-    #include <unistd.h>
-    #include <netdb.h>
-    #include <netinet/in.h>
-    #include <sys/socket.h>
-    #include <sys/un.h>
-    #include <sys/types.h>
-    #include <sys/wait.h>
-    #include <sys/ioctl.h>
-    #include <arpa/inet.h>
-
-    #define SOCKET_BACKLOG           1
-    #define COMP_CLOSE               close
-    #define COMP_READ(s,b,l)         read(s, b, l)
-    #define COMP_WRITE(s,b,l)        write(s, b, l)
-    #define GET_CHILD_PID(child_pid) child_pid = fork()
-    #define EXEC_SIGNAL() if (signal(SIGCHLD, SIG_IGN) == SIG_ERR) return -1;
-    #define EXEC_FOR() for(;;)
-    #define RET_ZERO_IN_WIN()
-    #define WIN_INIT()
-#else
-    #include <Winsock2.h>
-    #include <io.h>
-
-    #define socklen_t int
-
-    #define SOCKET_BACKLOG           5
-    #define COMP_CLOSE               closesocket
-    #define COMP_READ(s,b,l)         recv(s, b, l, 0)
-    #define COMP_WRITE(s,b,l)        send(s, b, l, 0)
-    #define GET_CHILD_PID(child_pid) child_pid = 0
-    #define EXEC_SIGNAL()
-    #define EXEC_FOR()
-    #define RET_ZERO_IN_WIN()         return 0
-
-    #define WIN_INIT() {                          \
-        int rc;                                   \
-        WSADATA wsaData;                          \
-        rc = WSAStartup(MAKEWORD(2, 2), &wsaData);\
-        if (rc != 0) {                            \
-            return -1;                            \
-        }                                         \
-    }
-#endif
-
-/* ----------------------------------------------------- */
-/* ------------------------------ Log all socket traffic */
-/* ----------------------------------------------------- */
-/* ////////////////////////////////////////////////////////////////////// */
-static int log_ena=0;
-INSIDE_MTCR void logset(const int ena) { log_ena = ena;}
-INSIDE_MTCR int  plog(const char *fmt, ...)
-{
-    va_list ap;
-    int     rc=0;
-
-    if (log_ena) {
-        va_start (ap, fmt);
-        rc = vprintf (fmt, ap);
-        va_end (ap);
-    }
-    return rc;
-}
-
-/* --------------------------------------------------- */
-/* ------------------------------ Base socket routines */
-/* --------------------------------------------------- */
-
-/* ////////////////////////////////////////////////////////////////////// */
-/*
-** readn - read n bytes from the socket "fd"
-**
-** Attempt to read "nbytes" bytes from socket "fd" into "ptr".
-** Returns number of bytes read, or -1 if an error occurs.
-** Will read less than the specified count *only* if the peer sends
-** EOF
-*/
-INSIDE_MTCR int readn(int fd, void *vptr, int nbytes)
-{
-    int     nleft, nread;
-    char    *ptr = (char *)vptr;
-
-    nleft = nbytes;
-    while (nleft > 0) {
-        do
-            nread = COMP_READ(fd, ptr, nleft);
-        while (nread < 0 && errno == EINTR);
-
-        if (nread < 0)
-            return -1;              /*  error, return -1 */
-        else if (nread == 0)
-            break;                  /*  EOF */
-
-        nleft -= nread;
-        ptr   += nread;
-    }
-    return(nbytes - nleft);         /*  return >= 0 */
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-/*
-** reads - reads string (till \0)  from the socket "fd"
-*/
-INSIDE_MTCR int reads(int fd, char *ptr, int maxlen)
-{
-    int     n, done=0, rc;
-    char    c;
-    for (n = 0; n <= maxlen && !done; n++) {
-        do
-            rc = COMP_READ(fd, &c, 1);
-        while (rc < 0 && errno == EINTR);
-
-        switch (rc) {
-        case 1:
-            *ptr++ = c;
-            if (c == '\0')
-                done=1;
-            break;
-        case 0:
-            done=1;
-            break;
-        default:
-            return -1;     /*  error */
-        }
-    }
-    return n-1;
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-/*
-** readnl - reads till till newline  from the socket "fd"
-*/
-INSIDE_MTCR int readnl(int fd, char *ptr, int maxlen)
-{
-    int     n, done=0, rc;
-    char    c;
-
-    for (n = 0; n <= maxlen-1 && !done; n++) {
-        do {
-            rc = COMP_READ(fd, &c, 1);
-        }
-        while (rc < 0 && errno == EINTR);
-
-        switch (rc) {
-        case 1:
-            *ptr++ = c;
-            if (c == '\n') {
-                *ptr = '\0';
-                done=1;
-            }
-            break;
-        case 0:
-            done=1;
-            break;
-        default:
-            return -1;     /*  error */
-        }
-    }
-    return n-1;
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-/*
-** writen - write n bytes to the socket "fd"
-**
-** Attempt to write "nbytes" bytes to socket "fd" from "ptr".
-** Returns number of bytes written, or -1 if an error occurs.
-** Return value will always be either -1 or "nbytes"
-*/
-INSIDE_MTCR int writen(int fd, void *vptr, int nbytes)
-{
-    int     nleft, nwritten;
-    char    *ptr = (char *)vptr;
-
-    nleft = nbytes;
-    while (nleft > 0) {
-        do
-            nwritten = COMP_WRITE(fd, ptr, nleft);
-        while (nwritten < 0 && errno == EINTR);
-
-        if (nwritten < 0)
-            return -1;
-
-        nleft -= nwritten;
-        ptr   += nwritten;
-    }
-    return(nbytes - nleft);
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-/*
-** writes - write string (null ternminated buffer) to the socket "fd"
-*/
-INSIDE_MTCR int writes(int fd, char *ptr)
-{
-    return writen(fd, ptr, strlen(ptr)+1);
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-/*
-** writenl - write newline ternminated buffer to the socket "fd"
-*/
-INSIDE_MTCR int writenl(int fd, char *ptr)
-{
-    char *last = strchr(ptr, '\n');
-    if (last)
-        return writen(fd, ptr, last - ptr + 1);
-    return 0;
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-/*
-** open_cli_connection - open client TCP connection and return socket fd
-*/
-INSIDE_MTCR int open_cli_connection(const char *host, const int port)
-{
-    int                 SockFD;
-    struct sockaddr_in  serv_addr;
-    struct hostent      *hent;
-
-    plog("open_connection(%s, %d)\n", host, port);
-
-    //Initialize Winsock
-    WIN_INIT();
-
-    /*  Try to determinate server IP address */
-    if ((hent = gethostbyname(host)) == NULL) {
-        return -1;
-    }
-
-    /*
-     * Fill in the structure "serv_addr" with the address of the
-     * server that we want to connect with.
-     */
-    memset((char *) &serv_addr, 0, sizeof(serv_addr));
-    serv_addr.sin_family      = AF_INET;
-    memcpy(&serv_addr.sin_addr, (*(hent->h_addr_list)), sizeof(struct in_addr));
-    serv_addr.sin_port        = (short)htons((short)port);
-
-    /*  Open a TCP socket (an Internet stream socket). */
-    if ( (SockFD = socket(AF_INET, SOCK_STREAM, 0)) < 0)
-        return -1;
-    /*
-     * Connect to the server.
-     */
-    if (connect(SockFD, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
-        return -1;
-
-    /*  All OK */
-    return SockFD;
-}
-
-/* ////////////////////////////////////////////////////////////////////// */
-/*
-** open_serv_connection - open server TCP connection and return socket fd
-*/
-INSIDE_MTCR int open_serv_connection(const int port)
-{
-    struct hostent     *hent;
-    struct sockaddr_in serv_addr;
-    struct sockaddr_in cli_inet_addr;
-    int                SockFD, newsockfd;
-    int                clilen = sizeof(cli_inet_addr);
-    int                childpid;
-
-    EXEC_SIGNAL()
-
-    if ((SockFD = socket(AF_INET, SOCK_STREAM, 0)) < 0)
-        return -1;
-
-    /*  Bind our local address so that the client can send to us. */
-    memset((char *) &serv_addr, 0, sizeof(serv_addr));
-    serv_addr.sin_family      = AF_INET;
-    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
-    serv_addr.sin_port        = (short)(htons((short)port));
-    if (bind(SockFD, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
-        COMP_CLOSE(SockFD);
-        return -1;
-    }
-
-    /*  Get ready to accept connection */
-    if (listen(SockFD, SOCKET_BACKLOG) < 0) {
-        COMP_CLOSE(SockFD);
-        return -1;
-    }
-
-    /*  Accept connection */
-    EXEC_FOR()
-    {
-        plog("Waiting for connection on port %d\n", port);
-
-        while ((newsockfd = accept(SockFD, (struct sockaddr *)&cli_inet_addr,
-                                   (socklen_t *)&clilen)) < 0) {
-            if (errno != EINTR) {
-                COMP_CLOSE(SockFD);
-                return -1;
-            }
-        }
-
-        GET_CHILD_PID(childpid);
-
-        if (childpid < 0)
-            return -1;
-
-        if (childpid) {
-            /*  We are parent */
-            COMP_CLOSE(newsockfd);
-            RET_ZERO_IN_WIN();
-            /*   ... and try accept next connection */
-        } else {
-            /*  We are child */
-            COMP_CLOSE(SockFD);
-
-            /*  Determine the client host name */
-            hent = gethostbyaddr((char *)&cli_inet_addr.sin_addr,
-                                 sizeof(cli_inet_addr.sin_addr), AF_INET);
-            plog("Accepted connection from host \"%s\" ",
-                 hent ? hent->h_name : "????");
-
-            /*  Determine the client host address */
-            plog(" (%s)", inet_ntoa(cli_inet_addr.sin_addr));
-
-            plog(", port %d\n", port);
-            return newsockfd;
-        }
-    }
-
-}
diff --git a/small_utils/tcp.h b/small_utils/tcp.h
deleted file mode 100644 (file)
index 566ebc3..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- * 
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- * 
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- * 
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- * 
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- *
- *  tcp.h - simple socket library definitions
- *
- */
-
-#ifndef _MST_SOCKETS_H
-#define _MST_SOCKETS_H
-
-#ifndef __WIN__
-    #define ATTRIBUTE  __attribute__ ((format (printf, 1, 2)))
-#else
-    #define ATTRIBUTE
-#endif
-
-
-/*
-** logset - call it w/ non-zero to see output via log.
-**          Otherwise all log calls will be ignored
-*/
-void logset(const int ena);
-
-/*
-** plog - debug printouts (like printf). Set 1 via logset to see output
-*/
-int plog(const char *fmt, ...) ATTRIBUTE;
-
-/*
-** open_cli_connection - open client TCP connection and return socket fd
-*/
-int open_cli_connection(const char *host, const int port);
-
-/*
-** open_serv_connection - open server TCP connection and return socket fd
-*/
-int open_serv_connection(const int port);
-
-/*
-** readn - read n bytes from the socket "fd"
-**
-** Attempt to read "nbytes" bytes from socket "fd" into "ptr".
-** Returns number of bytes read, or -1 if an error occurs.
-** Will read less than the specified count *only* if the peer sends
-** EOF
-*/
-int readn(int fd, void *vptr, int nbytes);
-
-/*
-** reads - reads string (till \0)  from the socket "fd"
-*/
-int reads(int fd, char *ptr, int maxlen);
-
-/*
-** readnl - reads till till newline  from the socket "fd"
-*/
-int readnl(int fd, char *ptr, int maxlen);
-
-/*
-** writen - write n bytes to the socket "fd"
-**
-** Attempt to write "nbytes" bytes to socket "fd" from "ptr".
-** Returns number of bytes written, or -1 if an error occurs.
-** Return value will always be either -1 or "nbytes"
-*/
-int writen(int fd, void *vptr, int nbytes);
-
-/*
-** writes - write string (null ternminated buffer) to the socket "fd"
-*/
-int writes(int fd, char *ptr);
-
-/*
-** writenl - write newline ternminated buffer to the socket "fd"
-*/
-int writenl(int fd, char *ptr);
-
-#endif
diff --git a/small_utils/vpd.c b/small_utils/vpd.c
deleted file mode 100644 (file)
index 3c6d0ed..0000000
+++ /dev/null
@@ -1,645 +0,0 @@
-/*
- *
- *  vpd.c - PCI VPD (Vital Product Data) parser
- *
- * Author: Michael S. Tsirkin <mst@mellanox.co.il>
- *
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#define _XOPEN_SOURCE 500
-#include <string.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <libgen.h>
-#include <sys/times.h>
-#include "tools_version.h"
-
-/* pread is non-blocking, so we loop until we find data.  Unfortunately, 
- * we can loop forever if the HCA is crashed or if the wrong device is
- * specified as an argument. So, we set time outs.
- */
-static clock_t ticks_per_sec, start_t, curr_t, timeout_t = 5;
-
-struct vpd_cap {
-       unsigned char id;
-       unsigned char ptr;
-       unsigned char addr_low;
-       unsigned char addr_high_flag;
-       unsigned char data[4];
-};
-
-enum {
-       VPD_CAP_ID           = 0x03,
-       PCI_CAP_PTR          = 0x34,
-       PCI_HDR_SIZE         = 0x40,
-       VPD_FLAG             = 0x80,
-       VPD_FLAG_WRITE_START = 0x80,
-       VPD_FLAG_WRITE_READY = 0x00,
-       VPD_FLAG_READ_START  = 0x00,
-       VPD_FLAG_READ_READY  = 0x80,
-       VPD_ADDR_OFFSET      = 0x02,
-       VPD_DATA_OFFSET      = 0x04,
-       VPD_MAX_SIZE         = 1<<12
-};
-
-struct vpd_field {
-       unsigned char keyword[2];
-       unsigned char length;
-       unsigned char data[0];
-} __attribute__((packed));
-
-union vpd_data {
-       struct vpd_field fields[0];
-       unsigned char bytes[0];
-} __attribute__((packed));
-
-struct vpd_small_data {
-       unsigned char type;
-       union vpd_data data;
-} __attribute__((packed));
-
-struct vpd_large_data {
-       unsigned char type;
-       unsigned char length_lsb;
-       unsigned char length_msb;
-       union vpd_data data;
-} __attribute__((packed));
-
-union vpd_data_type {
-       unsigned char type;
-       struct vpd_small_data small;
-       struct vpd_large_data large;
-       unsigned char bytes[0];
-} __attribute__((packed));
-
-typedef unsigned char vpd_t[VPD_MAX_SIZE];
-
-#define VPD_TAG_LARGE(d) ((d)->type & 0x80)
-
-#define VPD_TAG_LENGTH(d) ((unsigned)(VPD_TAG_LARGE(d) ? ((((d)->large.length_msb) << 8) | \
-                                              ((d)->large.length_lsb)) :       \
-                          ((d)->type & 0x7)))
-
-#define VPD_TAG_HEAD(d) (VPD_TAG_LARGE(d) ? sizeof (d)->large : sizeof (d)->small)
-
-#define VPD_TAG_NAME(d) (VPD_TAG_LARGE(d) ? ((d)->type & 0x7F) : ((d)->type >> 3))
-
-#define VPD_TAG_DATA(d) (VPD_TAG_LARGE(d) ? &(d)->large.data : &(d)->small.data)
-
-enum {
-       VPD_TAG_ID = 0x02, /* Product name of te device */
-       VPD_TAG_R  = 0x10, /* Read-only keywords */
-       VPD_TAG_W  = 0x11, /* Read-write keywords */
-       VPD_TAG_F  = 0x0F, /* End Tag */
-};
-
-#define VPD_FIELD_CHECKSUM "RV"
-#define VPD_FIELD_RW       "RW"
-
-#define VPD_TOOL_VERSON "2.0.0"
-
-int pci_find_capability(int fd, int cap_id)
-{
-       unsigned offset;
-       unsigned char visited[256] = {}; /* Prevent infinite loops */
-       unsigned char data[2];
-       int ret;
-
-       ret = pread(fd, data, 1, PCI_CAP_PTR);
-       if (ret != 1) {
-               return 0;
-       }
-       offset = data[0];
-
-       for(;;) {
-               if (offset < PCI_HDR_SIZE) {
-                       return 0;
-               }
-
-               ret = pread(fd, data, sizeof data, offset);
-               if (ret != sizeof data) {
-                       return 0;
-               }
-
-               visited[offset] = 1;
-
-               if (data[0] == cap_id) {
-                       return offset;
-               }
-
-               offset = data[1];
-               if (visited[offset]) {
-                       return 0;
-               }
-       }
-       return 0;
-}
-
-int pci_read_vpd_dword_file(int fd, unsigned offset, unsigned char data[4])
-{
-    if (offset >= VPD_MAX_SIZE || (offset & 0x3)) {
-        return -1;
-    }
-
-    if (lseek(fd, offset, SEEK_SET) < 0)
-    {
-        fprintf(stderr, "Reached End Of VPD region: %s\n", strerror(errno));
-        return errno;
-    }
-    if (read(fd, data, 0x4) != 4) {
-        fprintf(stderr, "Failed to read VPD: %s\n", strerror(errno));
-        return errno;
-    }
-    return 0;
-}
-
-int pci_read_vpd_dword_gw(int fd, int vpd_cap_offset, unsigned offset, unsigned char data[4])
-{
-       unsigned char addr_flag[2];
-       int ret;
-
-       if (offset >= VPD_MAX_SIZE || (offset & 0x3)) {
-               return -1;
-       }
-
-       addr_flag[0] = (offset) & ~0x3;
-       addr_flag[1] = ((offset) >> 8) | VPD_FLAG_READ_START;
-
-       ret = pwrite(fd, addr_flag, sizeof addr_flag,
-                    vpd_cap_offset + VPD_ADDR_OFFSET);
-
-       if (ret != sizeof addr_flag) {
-               return ret;
-       }
-
-       start_t = times(NULL);
-       while((addr_flag[1] & VPD_FLAG) != VPD_FLAG_READ_READY) {
-               curr_t = times(NULL);
-               if ((curr_t - start_t) / ticks_per_sec > timeout_t) {
-                       fprintf(stderr, "-E- VPD read timeout\n");
-                       return -EIO;
-               }
-
-               ret = pread(fd, addr_flag, sizeof addr_flag,
-                            vpd_cap_offset + VPD_ADDR_OFFSET);
-               if (ret != sizeof addr_flag) {
-                       return ret;
-               }
-       }
-
-       ret = pread(fd, data, 0x4, vpd_cap_offset + VPD_DATA_OFFSET);
-       if (ret != 0x4) {
-               return ret;
-       }
-
-       return 0;
-}
-
-int vpd_read(int fd, vpd_t vpd, int vpd_path_exists)
-{
-    if (vpd_path_exists) {
-        unsigned offset;
-        int ret;
-        for (offset = 0; offset < VPD_MAX_SIZE; offset += 0x4) {
-            ret = pci_read_vpd_dword_file(fd, offset, vpd + offset);
-            if (ret) {
-                return ret;
-            }
-        }
-    } else {
-        unsigned offset;
-        int ret;
-        int vpd_cap_offset;
-        vpd_cap_offset = pci_find_capability(fd, VPD_CAP_ID);
-        if (!vpd_cap_offset) {
-            return -1;
-        }
-
-        for (offset = 0; offset < VPD_MAX_SIZE; offset += 0x4) {
-            ret = pci_read_vpd_dword_gw(fd, vpd_cap_offset, offset, vpd + offset);
-            if (ret) {
-                return ret;
-            }
-        }
-    }
-    return 0;
-}
-
-/* Verify that keywords in R and W sections fit in length. */
-int vpd_check_one(union vpd_data_type *d, unsigned offset)
-{
-       unsigned i;
-       struct vpd_field *field;
-
-       if (VPD_TAG_NAME(d) == VPD_TAG_R ||
-           VPD_TAG_NAME(d) == VPD_TAG_W)
-               for (i = 0; i < VPD_TAG_LENGTH(d); i += 0x3 + field->length) {
-                       field = (struct vpd_field *)(VPD_TAG_DATA(d)->bytes + i);
-                       if (i + 0x3 + field->length > VPD_TAG_LENGTH(d)) {
-                               fprintf(stderr, "-E- Tag %s, Offset 0x%x+0x%x: "
-                                       "field length 0x%x exceeds total 0x%x",
-                                       VPD_TAG_NAME(d) == VPD_TAG_R ? "VPD_R" : "VPD_W",
-                                       offset, i, field->length, VPD_TAG_LENGTH(d));
-                               if (VPD_TAG_NAME(d) == VPD_TAG_W)
-                                       fprintf(stderr, ". Use -r flag to skip VPD_W tag checks");
-                               fprintf(stderr, "\n");
-                               return -1;
-                       }
-               }
-       return 0;
-}
-
-/* Find length to checksum. */
-void vpd_checksum_length(union vpd_data_type *d, unsigned offset, unsigned *checksum_len)
-{
-       unsigned i;
-       struct vpd_field *field;
-
-       if (VPD_TAG_NAME(d) != VPD_TAG_R) {
-               return;
-       }
-
-       for (i = 0; i < VPD_TAG_LENGTH(d); i += 0x3 + field->length) {
-               field = (struct vpd_field *)(VPD_TAG_DATA(d)->bytes + i);
-               if (!memcmp(VPD_FIELD_CHECKSUM, field->keyword,
-                           sizeof field->keyword)) {
-                       *checksum_len = offset + VPD_TAG_HEAD(d) + i + 0x3 + 1;
-               }
-       }
-}
-
-void vpd_show_field(FILE *f, struct vpd_field *field)
-{
-       int i;
-
-       if (!memcmp(VPD_FIELD_CHECKSUM, field->keyword, sizeof field->keyword) ||
-               !memcmp(VPD_FIELD_RW      , field->keyword, sizeof field->keyword)) {
-               return;
-       }
-       fputc(field->keyword[0], f);
-       fputc(field->keyword[1], f);
-       fputs(": ", f);
-       for (i = 0; i < field->length; ++i) {
-               if (!field->data[i]) {
-                       break;
-               }
-               fputc(field->data[i], f);
-       }
-       fputc('\n', f);
-}
-
-void vpd_show_fields(FILE *f, union vpd_data_type *d, const char *keyword)
-{
-       struct vpd_field *field;
-       unsigned i;
-
-       for (i = 0; i < VPD_TAG_LENGTH(d); i += 0x3 + field->length) {
-               field = (struct vpd_field *)(VPD_TAG_DATA(d)->bytes + i);
-               if (!keyword ||
-                       !memcmp(keyword, field->keyword, sizeof field->keyword)) {
-                               vpd_show_field(f, field);
-               }
-       }
-}
-
-void vpd_show_id(FILE *f, union vpd_data_type *d)
-{
-       unsigned i;
-
-       fputs("ID: ", f);
-       for (i = 0; i < VPD_TAG_LENGTH(d); ++i) {
-               fputc(VPD_TAG_DATA(d)->bytes[i], f);
-       }
-       fputc('\n', f);
-}
-
-void vpd_show_one(FILE *f, union vpd_data_type* d, const char *keyword)
-{
-       switch(VPD_TAG_NAME(d)) {
-       case VPD_TAG_ID:
-               if (!keyword || !memcmp("ID", keyword, 2)) {
-                       vpd_show_id(f, d);
-               }
-               break;
-       case VPD_TAG_R:
-               vpd_show_fields(f, d, keyword);
-               break;
-       case VPD_TAG_W:
-               vpd_show_fields(f, d, keyword);
-               break;
-       case VPD_TAG_F:
-               break;
-       default:
-               if (!keyword) {
-                       fprintf(f, "??: 0x%x\n", VPD_TAG_NAME(d));
-               }
-       }
-}
-
-int vpd_check(vpd_t vpd, int checksum, int ignore_w)
-{
-       unsigned char b;
-       unsigned i;
-       unsigned offset;
-       int rc;
-       union vpd_data_type *d = NULL;
-       unsigned checksum_len = 0;
-
-       for (offset = 0; offset < VPD_MAX_SIZE && (!d || VPD_TAG_NAME(d) != VPD_TAG_F);
-                       offset += VPD_TAG_HEAD(d) + VPD_TAG_LENGTH(d)) {
-               d = (union vpd_data_type *)(vpd + offset);
-
-               if (!(VPD_TAG_NAME(d) == VPD_TAG_W && ignore_w)) {
-                       rc = vpd_check_one(d, offset);
-                       if (rc) {
-                               return rc;
-                       }
-               }
-
-               vpd_checksum_length(d, offset, &checksum_len);
-       }
-
-       if (VPD_TAG_NAME(d) != VPD_TAG_F) {
-               fprintf(stderr, "-E- Mandatory End(0xF) tag not found.\n");
-               return 1;
-       }
-
-    if (!checksum_len) {
-        fprintf(stderr, "-E- No VPD was found.\n");
-        return 1;
-    }
-
-       if (!checksum) {
-               return 0;
-       }
-
-       b = 0;
-       for (i = 0; i < checksum_len; ++i) {
-               b+= vpd[i];
-       }
-
-       if (b) {
-               fprintf(stderr, "-E- Len 0x%x: checksum mismatch: 0x%x\n",
-                       checksum_len, b);
-               return 1;
-       }
-
-       return 0;
-}
-
-void vpd_show(FILE *f, vpd_t vpd, const char *keyword, int ignore_w)
-{
-       unsigned offset;
-       union vpd_data_type *d = NULL;
-       for (offset = 0; !d || VPD_TAG_NAME(d) != VPD_TAG_F;
-            offset += VPD_TAG_HEAD(d) + VPD_TAG_LENGTH(d)) {
-               d = (union vpd_data_type *)(vpd + offset);
-               if (!(VPD_TAG_NAME(d) == VPD_TAG_W && ignore_w))
-                       vpd_show_one(f, d, keyword);
-       }
-}
-
-int is_file_exist(const char *fname)
-{
-    int fd = open(fname, O_RDONLY);
-    if (fd > 0) {
-        u_int8_t data[4];
-        if (read(fd, data, 0x4) != 4){
-            close(fd);
-            return 0;
-        } else {
-            close(fd);
-            return 1;
-        }
-    }
-    return 0;
-}
-
-int pci_parse_name(const char *name, char buf[4096], int* vpd_path_exists)
-{
-       int domain, bus, dev, func, tmp;
-       struct stat dummybuf;
-
-       if (*name == '/') {
-               if (strlen(name) >= 4096)
-                       return -1;
-               strcpy(buf, name);
-               return 0;
-       }
-
-       if (sscanf(name,"mthca%x", & tmp) == 1 ||
-           sscanf(name,"mlx4_%x", & tmp) == 1 ||
-           sscanf(name,"mlx5_%x", & tmp) == 1   ) {
-               char mbuf[4096];
-               char pbuf[4096];
-               char *base;
-
-               tmp = snprintf(mbuf, sizeof mbuf, "/sys/class/infiniband/%s/device", name);
-               if (tmp <= 0 || tmp >= (int)sizeof mbuf) {
-                       fprintf(stderr,"-E- Unable to print device name %s\n", name);
-                       return 1;
-               }
-
-               if (readlink(mbuf, pbuf, sizeof pbuf) < 0) {
-                       perror("-E- read link");
-                       fprintf(stderr,"-E- Unable to read link %s\n", mbuf);
-                       return 1;
-               }
-
-               base = basename(pbuf);
-               if (!base) {
-                       return 1;
-               }
-               if (sscanf(base, "%x:%x:%x.%x", &domain, &bus, &dev, &func) != 4) {
-                       return 1;
-               }
-       } else if (sscanf(name, "%x:%x:%x.%x", &domain, &bus, &dev, &func) != 4) {
-               domain = 0;
-               if (sscanf(name, "%x:%x.%x", &bus, &dev, &func) != 3) {
-                       return -2;
-               }
-       }
-       
-       snprintf(buf, 4096, "/sys/bus/pci/devices/%04x:%02x:%02x.%d/vpd", domain, bus, dev, func);
-       if (is_file_exist(buf)) {
-           *vpd_path_exists = 1;
-           return 0;
-       }
-       *vpd_path_exists = 0;
-
-       snprintf(buf, 4096, "/proc/bus/pci/%2.2x/%2.2x.%1.1x", bus, dev, func);
-       if (stat(buf, &dummybuf)) {
-               snprintf(buf, 4096, "/proc/bus/pci/%4.4x:%2.2x/%2.2x.%1.1x",
-                        domain, bus,dev,func);
-       }
-
-       if (stat(buf, &dummybuf)) {
-               return -3;
-       }
-
-       return 0;
-}
-
-int vpd_open(const char *name, int* vpd_path_exists)
-{
-       int fd;
-       char buf[4096];
-
-       if (pci_parse_name(name, buf, vpd_path_exists)) {
-               fprintf(stderr, "-E- Unable to parse device name %s\n", name);
-               return -1;
-       }
-       fd = open(buf, O_RDWR);
-       if (fd < 0) {
-               fprintf(stderr, "-E- Unable to open file %s: %s\n", buf, strerror(errno));
-       }
-       return fd;
-}
-
-int main(int argc, char **argv)
-{
-       const char *name;
-       char* endptr;
-       int fd;
-       int i;
-       int rc = 0;
-       vpd_t d;
-       int m = 0;
-       int n = 0;
-       int ignore_w = 0;
-       int vpd_path_exists = 0;
-
-       if (argc < 2) {
-               rc = 1;
-               goto usage;
-       }
-
-       ticks_per_sec = sysconf(_SC_CLK_TCK);
-
-       do
-       {
-               i=getopt(argc, argv, "mvhnrt:");
-               if (i<0) {
-                       break;
-               }
-
-               switch (i) {
-                       case 'm':
-                               m=1;
-                               break;
-                       case 'n':
-                               n=1;
-                               break;
-                       case 'h':
-                           rc = 0;
-                           goto usage;
-                       case 'v':
-                print_version_string("mstvpd", VPD_TOOL_VERSON);
-                exit(0);
-                       case 'r':
-                               ignore_w=1;
-                               break;
-                       case 't':
-                               timeout_t = strtol(optarg, &endptr, 0);
-                               if (*endptr != '\0') {
-                                   fprintf(stderr, "-E- Invalid timeout argument: %s.\n",  optarg);
-                                   return 1;
-                               }
-                               if ( timeout_t <= 0 ) {
-                                   fprintf(stderr, "-E- Wrong timeout, it should be > 0 !\n");
-                                   return 1;
-                               }
-                               break;
-                       default:
-                           rc = 1;
-                               goto usage;
-               }
-       } while (1 == 1);
-                               
-       name = argv[optind];
-       argc -= optind;
-       argv += optind;
-       if (name == NULL) {
-           fprintf(stderr, "-E- Missing <file> argument !\n");
-           return 33;
-       }
-       if (! strcmp("-", name)) {
-               if (fread(d, VPD_MAX_SIZE, 1, stdin) != 1)
-                       return 3;
-       } else {
-               fd = vpd_open(name, &vpd_path_exists);
-               if (fd < 0)
-                       return 4;
-
-               if (vpd_read(fd, d, vpd_path_exists)) {
-                   fprintf(stderr, "-E- Failed to read VPD from %s!\n", name);
-                   return 5;
-               }
-
-       }
-
-       if (m)
-               return fwrite(d, VPD_MAX_SIZE, 1, stdout) != 1;
-
-       if (vpd_check(d, !n, ignore_w))
-               return 6;
-
-       if (argc == 1)
-               vpd_show(stdout, d, NULL, ignore_w);
-       else
-               for (i = 0; i < argc - 1; ++i) {
-                       if (!strcmp(argv[i + 1], "--"))
-                           continue;
-                       vpd_show(stdout, d, argv[i + 1], ignore_w);
-               }
-
-       return 0;
-
-usage:
-       printf("Usage: %s [-m|-n] [-t ##] <file> [-- keyword ...]\n", argv[0]);
-       printf("-h\tPrint this help.\n");
-       printf("-v\tPrint tool version.\n");
-       printf("-m\tDump raw VPD data to stdout.\n");
-       printf("-n\tDo not validate check sum.\n");
-       printf("-r\tDo not check and display the VPD_W tag in the vpd data.\n");
-       printf("-t ##\tTime out after ## seconds. (Default is 30.)\n\n");
-       printf("file\tThe PCI id number of the HCA (for example, \"2:00.0\"),\n");
-       printf("\tthe device name (such as \"mlx4_0\")\n");
-       printf("\tthe absolute path to the device (\"/sys/class/infiniband/mlx4_0/device\")\n");
-       printf("\tor '-' to read VPD data from the standard input.\n\n");
-       printf("keyword(s): Only display the requested information. (ID, PN, EC, SN, etc...)\n");
-       return rc;
-}
diff --git a/tools_crypto/Makefile.am b/tools_crypto/Makefile.am
deleted file mode 100644 (file)
index 784d94f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#--
-# Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-USER_DIR = $(top_srcdir)
-AM_CPPFLAGS = -I$(USER_DIR) -I$(USER_DIR)/common
-AM_CFLAGS =  -MD -pipe -Wall -W -DMST_UL -g
-
-noinst_LIBRARIES = libtools_crypto.a
-libtools_crypto_a_SOURCES = tools_md5.c tools_md5.h
-
diff --git a/tools_crypto/tools_md5.c b/tools_crypto/tools_md5.c
deleted file mode 100644 (file)
index 6b34b72..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <openssl/md5.h>
-#include "tools_md5.h"
-
-u_int8_t *tools_md5(const u_int8_t* src, u_int32_t src_len, u_int8_t dst[16])
-{
-    return MD5((const unsigned char*)src, src_len, (unsigned char*)dst);
-}
diff --git a/tools_crypto/tools_md5.h b/tools_crypto/tools_md5.h
deleted file mode 100644 (file)
index 42296c7..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef TOOLS_MD5_H
-#define TOOLS_MD5_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <common/compatibility.h>
-u_int8_t *tools_md5(const u_int8_t* src, u_int32_t src_len, u_int8_t dst[16]);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // TOOLS_MD5_H
diff --git a/tools_layouts/Makefile.am b/tools_layouts/Makefile.am
deleted file mode 100644 (file)
index 7726c7f..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#--
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-AM_CPPFLAGS = -I$(top_srcdir)/mtcr_ul -I$(top_srcdir)/common
-AM_CFLAGS = -Wall -W -g -MP -MD -pipe $(COMPILER_FPIC)
-
-noinst_LTLIBRARIES = libtools_layouts.a
-
-libtools_layouts_a_SOURCES = adb_to_c_utils.c adb_to_c_utils.h \
-                               cibfw_layouts.c cibfw_layouts.h \
-                               register_access_open_layouts.h register_access_open_layouts.c \
-                               tools_open_layouts.c tools_open_layouts.h\
-                               register_access_sib_layouts.h register_access_sib_layouts.c \
-                               cx4fw_layouts.c cx4fw_layouts.h\
-                               connectib_layouts.c connectib_layouts.h
diff --git a/tools_layouts/adb_to_c_utils.c b/tools_layouts/adb_to_c_utils.c
deleted file mode 100644 (file)
index 5b2b2c0..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/***
- *** This file was generated at "2016-04-22 14:35:59"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_
- ***/
-
-#include <assert.h>
-#include "adb_to_c_utils.h"
-
-/************************************
- * Function: adb2c_calc_array_field_address
- ************************************/
-u_int32_t adb2c_calc_array_field_address(u_int32_t start_bit_offset, u_int32_t arr_elemnt_size,
-                                   int arr_idx, u_int32_t parent_node_size,
-                                   int is_big_endian_arr)
-{
-    u_int32_t offs;
-
-    if (arr_elemnt_size > 32)
-    {
-        assert(!(arr_elemnt_size % 32));
-        start_bit_offset += arr_elemnt_size*(u_int32_t)arr_idx;                                                                                     
-        return start_bit_offset;
-    }
-
-    if (is_big_endian_arr)
-    {
-        u_int32_t dword_delta;
-        offs = start_bit_offset - arr_elemnt_size*(u_int32_t)arr_idx;
-        dword_delta = (((start_bit_offset>>5)<<2) - ((offs>>5)<<2))/4;
-        if (dword_delta)
-        {
-            offs += 64*dword_delta;
-        }
-    }
-    else
-    {
-        offs = start_bit_offset + arr_elemnt_size*(u_int32_t)arr_idx;
-    }
-
-    //printf("==> %d\n", MIN(32, parent_node_size) - (offs%32) - arr_elemnt_size + ((offs>>5)<<5));
-    return ADB2C_MIN(32, parent_node_size) - (offs%32) - arr_elemnt_size + ((offs>>5)<<5);
-}
-
-/************************************
- * Function: adb2c_push_integer_to_buff
- ************************************/
-void adb2c_push_integer_to_buff(u_int8_t *buff, u_int32_t bit_offset,  u_int32_t byte_size, u_int64_t field_value)
-{
-    field_value = ADB2C_CPU_TO_BE64(field_value);
-    memcpy(buff + bit_offset/8, (u_int8_t*)&field_value + (8-byte_size), (size_t)byte_size);
-}
-
-/************************************
- * Function: adb2c_push_integer_to_buff_le
- ************************************/
-// little endian version of the function
-void adb2c_push_integer_to_buff_le(u_int8_t *buff, u_int32_t bit_offset,  u_int32_t byte_size, u_int64_t field_value)
-{
-    field_value = ADB2C_CPU_TO_LE64(field_value);
-    memcpy(buff + bit_offset/8, (u_int8_t*)&field_value, (size_t)byte_size);
-}
-
-
-/************************************
- * Function: adb2c_push_bits_to_buff
- ************************************/
-//the next function will push the field into the buffer by inserting it's MSB bits first
-//and therefore by doing it we save the CPU_TO_BE operation
-void adb2c_push_bits_to_buff(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int32_t field_value)
-{
-    u_int32_t i                = 0;
-    u_int32_t byte_n   = bit_offset / 8;
-    u_int32_t byte_n_offset    = bit_offset % 8;
-    u_int32_t to_push;
-
-    //going over all bits in field
-    while (i < field_size)
-    {
-        to_push = ADB2C_MIN(8 - byte_n_offset, field_size - i);
-        i += to_push;
-        ADB2C_INSERTF_8(ADB2C_BYTE_N(buff, byte_n), 8U - to_push - byte_n_offset, field_value, field_size - i, to_push);
-        byte_n_offset  = 0;    //(byte_n_offset + to_push) % 8U;
-        byte_n++;
-    }
-}
-
-/************************************
- * Function: adb2c_push_bits_to_buff_le
- ************************************/
-//the next function will push the field into the buffer by inserting it's LSB bits first
-//and therefore by doing it we save the CPU_TO_LE operation
-void adb2c_push_bits_to_buff_le(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int32_t field_value)
-{
-    u_int32_t i                 = 0;
-    u_int32_t byte_n    = (bit_offset / 8) + (field_size / 8) - 1;
-    u_int32_t byte_n_offset     = bit_offset % 8;
-    u_int32_t to_push;
-    byte_n += (field_size % 8) ? 1 : 0;
-
-    //going over all bits in field
-    while (i < field_size)
-    {
-        to_push = ADB2C_MIN(8 - byte_n_offset, field_size - i);
-        i += to_push;
-        ADB2C_INSERTF_8(ADB2C_BYTE_N(buff, byte_n), 8U - to_push - byte_n_offset, field_value, field_size - i, to_push);
-        byte_n_offset  = 0;     //(byte_n_offset + to_push) % 8U;
-        byte_n--;
-    }
-}
-
-/************************************
- * Function: adb2c_push_to_buf
- ************************************/
-void adb2c_push_to_buf(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int64_t field_value)
-{
-    bit_offset = adb2c_calc_array_field_address(bit_offset, field_size, 0, field_size + 32, 0);
-    if (field_size <= 32)
-        adb2c_push_bits_to_buff(buff, bit_offset, field_size, (u_int32_t)field_value);
-    else
-        adb2c_push_integer_to_buff(buff, bit_offset, field_size/8,  field_value);
-}
-
-/************************************
- * Function: adb2c_push_to_buf_le
- ************************************/
-void adb2c_push_to_buf_le(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int64_t field_value)
-{
-    bit_offset = adb2c_calc_array_field_address(bit_offset, field_size, 0, field_size + 32, 0);
-    if (field_size <= 32)
-        adb2c_push_bits_to_buff_le(buff, bit_offset, field_size, (u_int32_t)field_value);
-    else
-        adb2c_push_integer_to_buff_le(buff, bit_offset, field_size/8,  field_value);
-}
-
-/************************************
- * Function: adb2c_pop_integer_from_buff
- ************************************/
-u_int64_t adb2c_pop_integer_from_buff(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t byte_size)
-{
-    u_int64_t val = 0;
-    memcpy((u_int8_t*)&val + (8-byte_size), buff + bit_offset/8, (size_t)byte_size);
-    return ADB2C_BE64_TO_CPU(val);
-}
-
-/************************************
- * Function: adb2c_pop_integer_from_buff_le
- ************************************/
-u_int64_t adb2c_pop_integer_from_buff_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t byte_size)
-{
-    u_int64_t val = 0;
-    memcpy((u_int8_t*)&val, buff + bit_offset/8, (size_t)byte_size);
-    return ADB2C_LE64_TO_CPU(val);
-}
-
-/************************************
- * Function: adb2c_pop_bits_from_buff
- ************************************/
-//the next function will pop the field into the buffer by removing it's MSB bits first
-//and therefore by doing it we save the BE_TO_CPU operation
-u_int32_t adb2c_pop_bits_from_buff(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size)
-{
-    u_int32_t i                = 0;
-    u_int32_t byte_n   = bit_offset / 8;
-    u_int32_t byte_n_offset    = bit_offset % 8;
-    u_int32_t field_32 = 0;
-    u_int32_t to_pop;
-
-    //going over all bits in field
-    while (i < field_size)
-    {
-        to_pop =  ADB2C_MIN(8 - byte_n_offset, field_size - i);
-        i += to_pop;
-        ADB2C_INSERTF_8(field_32, field_size - i, ADB2C_BYTE_N(buff, byte_n), 8 - to_pop - byte_n_offset, to_pop);
-        byte_n_offset  = 0;    //(byte_n_offset + to_pop) % 8;
-        byte_n++;
-    }
-    return field_32;
-}
-
-/************************************
- * Function: adb2c_pop_bits_from_buff_le
- ************************************/
-//the next function will pop the field into the buffer by removing it's LSB bits first
-//and therefore by doing it we save the BE_TO_CPU operation
-u_int32_t adb2c_pop_bits_from_buff_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size)
-{
-    u_int32_t i                 = 0;
-    u_int32_t byte_n    = bit_offset / 8 + (field_size / 8) - 1;
-    u_int32_t byte_n_offset     = bit_offset % 8;
-    u_int32_t field_32  = 0;
-    u_int32_t to_pop;
-    byte_n += (field_size % 8) ? 1 : 0;
-
-    //going over all bits in field
-    while (i < field_size)
-    {
-        to_pop =  ADB2C_MIN(8 - byte_n_offset, field_size - i);
-        i += to_pop;
-        ADB2C_INSERTF_8(field_32, field_size - i, ADB2C_BYTE_N(buff, byte_n), 8 - to_pop - byte_n_offset, to_pop);
-        byte_n_offset  = 0;     //(byte_n_offset + to_pop) % 8;
-        byte_n--;
-    }
-    return field_32;
-}
-
-/************************************
- * Function: adb2c_pop_from_buf
- ************************************/
-u_int64_t adb2c_pop_from_buf(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size)
-{
-    bit_offset = adb2c_calc_array_field_address(bit_offset, field_size, 0, field_size + 32, 0);
-    if (field_size <= 32)
-        return adb2c_pop_bits_from_buff(buff, bit_offset, field_size);
-    else
-        return adb2c_pop_integer_from_buff(buff, bit_offset, field_size/8);
-}
-
-/************************************
- * Function: adb2c_pop_from_buf_le
- ************************************/
-u_int64_t adb2c_pop_from_buf_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size)
-{
-    bit_offset = adb2c_calc_array_field_address(bit_offset, field_size, 0, field_size + 32, 0);
-    if (field_size <= 32)
-        return adb2c_pop_bits_from_buff_le(buff, bit_offset, field_size);
-    else
-        return adb2c_pop_integer_from_buff_le(buff, bit_offset, field_size/8);
-}
-
-/************************************
- * Function: adb2c_db_get_field_enum_name
- ************************************/
-const char* adb2c_db_get_field_enum_name(struct adb2c_field_format* field, int val)
-{
-    int i;
-    for (i = 0; i < field->enums_len; i++)
-    {
-        if (field->enums[i].val == val)
-            return field->enums[i].name;
-    }
-
-    
-    return "Unknown Enum Value";
-}
-
-/************************************
- * Function: adb2c_db_get_field_enum_val
- ************************************/
-int adb2c_db_get_field_enum_val(struct adb2c_field_format* field, const char* name)
-{
-    int i;
-    for (i = 0; i < field->enums_len; i++)
-    {
-        if (!strcmp(field->enums[i].name, name))
-            return field->enums[i].val;
-    }
-
-    return -1;
-}
-
-/************************************
- * Function: adb2c_db_get_field_attr
- ************************************/
-const char* adb2c_db_get_field_attr(struct adb2c_field_format* field, const char* attr_name)
-{
-       int i;
-       for (i = 0; i < field->attrs_len; i++)
-       {
-               if (!strcmp(attr_name, field->attrs[i].name))
-                       return field->attrs[i].val;
-       }
-       
-       return NULL;
-}
-
-/************************************
- * Function: adb2c_db_get_node_attr
- ************************************/
-const char* adb2c_db_get_node_attr(struct adb2c_node_format* node, const char* attr_name)
-{
-       int i;
-       for (i = 0; i < node->attrs_len; i++)
-       {
-               if (!strcmp(attr_name, node->attrs[i].name))
-                       return node->attrs[i].val;
-       }
-
-       return NULL;
-}
-
-/************************************
- * Function: adb2c_db_find_node
- ************************************/
-struct adb2c_node_format* adb2c_db_find_node(struct adb2c_node_db* db, const char* node_name)
-{
-    int i;
-    
-    for (i = 0; i < db->nodes_len; i++)
-    {
-        if (!strcmp(node_name, db->nodes[i].name))
-            return &db->nodes[i];
-    }
-    
-    return NULL;
-}
-
-/************************************
- * Function: adb2c_db_find_field
- ************************************/
-struct adb2c_field_format* adb2c_db_find_field(struct adb2c_node_format* node, const char* field_name)
-{
-    int i;
-    
-    for(i = 0; i < node->fields_len; i++)
-    {
-        if (!strcmp(field_name, node->fields[i].full_name))
-            return &node->fields[i];
-    }
-    
-    return NULL;
-}
-
-/************************************
- * Function: adb2c_add_indentation
- ************************************/
-void adb2c_add_indentation(FILE* file, int indent_level)
-{
-       while (indent_level)
-       {
-               fprintf(file, "\t");
-               indent_level--;
-       }
-}
-
-/************************************
- * Function: adb2c_print_raw
- ************************************/
-void adb2c_print_raw(FILE* file, void* buff, int buff_len)
-{
-    u_int8_t* data = (u_int8_t*)buff;
-    int i;
-    adb2c_add_indentation(file, 0);
-    for (i = 0; i < buff_len; i++)
-    {
-        if (!(i % 4))
-        {
-            fprintf(file, "\n0x%08x: ", i);
-        }
-
-        fprintf(file, " 0x%02x", data[i]);
-    }
-    fprintf(file, "\n");
-}
diff --git a/tools_layouts/adb_to_c_utils.h b/tools_layouts/adb_to_c_utils.h
deleted file mode 100644 (file)
index ebbe933..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/***
- *** This file was generated at "2016-04-22 14:35:59"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_
- ***/
-
-#ifndef ADABE_TO_C_UTILS
-#define ADABE_TO_C_UTILS
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-//for htonl etc...
-#if defined(_WIN32) || defined(_WIN64)
-    #include<Winsock2.h>
-#else   /* Linux */
-    #include<arpa/inet.h>
-#endif  /* Windows */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/************************************/
-/************************************/
-/************************************/
-/* Endianess Defines */
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-    #define PLATFORM_MEM "Little Endianess"
-    #define _LITTLE_ENDIANESS
-#else           /* __BYTE_ORDER == __BIG_ENDIAN */
-    #define PLATFORM_MEM "Big Endianess"
-    #define _BIG_ENDIANESS
-#endif
-
-
-/* Bit manipulation macros */
-
-/* MASK generate a bit mask S bits width */
-//#define ADB2C_MASK32(S)     ( ((u_int32_t) ~0L) >> (32-(S)) )
-#define ADB2C_MASK8(S)        ( ((u_int8_t) ~0) >> (8-(S)) )
-
-/* BITS generate a bit mask with bits O+S..O set (assumes 32 / 8 bit integer) */
-//#define ADB2C_BITS32(O,S)   ( ADB2C_MASK32(S) << (O) )
-#define ADB2C_BITS8(O,S)      ( ADB2C_MASK8(S) << (O) )
-
-/* EXTRACT32/8 macro extracts S bits from (u_int32_t/u_int8_t)W with offset O
- * and shifts them O places to the right (right justifies the field extracted) */
-//#define ADB2C_EXTRACT32(W,O,S)  ( ((W)>>(O)) & ADB2C_MASK32(S) )
-#define ADB2C_EXTRACT8(W,O,S)     ( ((W)>>(O)) & ADB2C_MASK8(S) )
-
-
-/* INSERT32/8 macro inserts S bits with offset O from field F into word W (u_int32_t/u_int8_t) */
-//#define ADB2C_INSERT32(W,F,O,S)     ((W)= ( ( (W) & (~ADB2C_BITS32(O,S)) ) | (((F) & ADB2C_MASK32(S))<<(O)) ))
-#define ADB2C_INSERT8(W,F,O,S)        ((W)= ( ( (W) & (~ADB2C_BITS8(O,S)) ) | (((F) & ADB2C_MASK8(S))<<(O)) ))
-
-//#define ADB2C_INSERTF_32(W,O1,F,O2,S)   (ADB2C_INSERT32(W, ADB2C_EXTRACT32(F, O2, S), O1, S) )
-#define ADB2C_INSERTF_8(W,O1,F,O2,S)      (ADB2C_INSERT8(W, ADB2C_EXTRACT8(F, O2, S), O1, S) )
-
-
-#define ADB2C_PTR_64_OF_BUFF(buf, offset)     ((u_int64_t*)((u_int8_t*)(buf) + (offset)))
-#define ADB2C_PTR_32_OF_BUFF(buf, offset)     ((u_int32_t*)((u_int8_t*)(buf) + (offset)))
-#define ADB2C_PTR_8_OF_BUFF(buf, offset)      ((u_int8_t*)((u_int8_t*)(buf) + (offset)))
-#define ADB2C_FIELD_64_OF_BUFF(buf, offset)   (*ADB2C_PTR_64_OF_BUFF(buf, offset))
-#define ADB2C_FIELD_32_OF_BUFF(buf, offset)   (*ADB2C_PTR_32_OF_BUFF(buf, offset))
-#define ADB2C_FIELD_8_OF_BUFF(buf, offset)    (*ADB2C_PTR_8_OF_BUFF(buf, offset))
-#define ADB2C_DWORD_N(buf, n)                 ADB2C_FIELD_32_OF_BUFF((buf), (n) * 4)
-#define ADB2C_BYTE_N(buf, n)                  ADB2C_FIELD_8_OF_BUFF((buf), (n))
-
-
-#define ADB2C_MIN(a, b)   ((a) < (b) ? (a) : (b))
-
-
-#define ADB2C_CPU_TO_BE32(x)  htonl(x)
-#define ADB2C_BE32_TO_CPU(x)  ntohl(x)
-#define ADB2C_CPU_TO_BE16(x)  htons(x)
-#define ADB2C_BE16_TO_CPU(x)  ntohs(x)
-#ifdef _LITTLE_ENDIANESS
-    #define ADB2C_CPU_TO_BE64(x) (((u_int64_t)htonl((u_int32_t)((x) & 0xffffffff)) << 32) |                             ((u_int64_t)htonl((u_int32_t)((x >> 32) & 0xffffffff))))
-
-    #define ADB2C_BE64_TO_CPU(x) (((u_int64_t)ntohl((u_int32_t)((x) & 0xffffffff)) << 32) |                             ((u_int64_t)ntohl((u_int32_t)((x >> 32) & 0xffffffff))))
-    #define ADB2C_LE64_TO_CPU(x) (x)
-    #define ADB2C_CPU_TO_LE64(x) (x)
-#else
-    #define ADB2C_CPU_TO_BE64(x) (x)
-    #define ADB2C_BE64_TO_CPU(x) (x)
-    #define ADB2C_LE64_TO_CPU(x) (((u_int64_t)ntohl((u_int32_t)((x) & 0xffffffff)) << 32) |                             ((u_int64_t)ntohl((u_int32_t)((x >> 32) & 0xffffffff))))
-    #define ADB2C_CPU_TO_LE64(x) (((u_int64_t)ntohl((u_int32_t)((x) & 0xffffffff)) << 32) |                             ((u_int64_t)ntohl((u_int32_t)((x >> 32) & 0xffffffff))))
-
-#endif
-
-
-/* define macros to the architecture of the CPU */
-#if defined(__linux) || defined(__FreeBSD__)             /* __linux || __FreeBSD__ */
-#   if defined(__i386__)
-#       define ARCH_x86
-#   elif defined(__x86_64__)
-#       define ARCH_x86_64
-#   elif defined(__ia64__)
-#       define ARCH_ia64
-#   elif defined(__PPC64__)
-#       define ARCH_ppc64
-#   elif defined(__PPC__)
-#       define ARCH_ppc
-#   elif defined(__aarch64__)
-#       define ARCH_arm64
-#   else
-#       error Unknown CPU architecture using the linux OS
-#   endif
-#elif defined(__MINGW32__) || defined(__MINGW64__)             /* Windows MINGW */
-#   if defined(__MINGW32__)
-#       define ARCH_x86
-#   elif defined(__MINGW64__)
-#       define ARCH_x86_64
-#   else
-#       error Unknown CPU architecture using the windows-mingw OS
-#   endif
-#elif defined(_WIN32) || defined(_WIN64)                /* Windows */
-#   if defined(_WIN32)
-#       define ARCH_x86
-#   elif defined(_WIN64)
-#       define ARCH_x86_64
-#   else
-#       error Unknown CPU architecture using the windows OS
-#   endif
-#else                                                   /* Unknown */
-#   error Unknown OS
-#endif
-
-
-/* define macros for print fields */
-#define U32D_FMT    "%u"
-#define U32H_FMT    "0x%08x"
-#define UH_FMT         "0x%x"
-#define STR_FMT     "%s"
-#define U16H_FMT    "0x%04x"
-#define U8H_FMT     "0x%02x"
-
-#if defined(ARCH_x86) || defined(ARCH_ppc) || defined(UEFI_BUILD)
-#   if defined(__MINGW32__) || defined(__MINGW64__)
-#       include <inttypes.h>
-#       define U64D_FMT    "0x%"PRId64
-#       define U64H_FMT    "0x%"PRIx64
-#       define U48H_FMT    "0x%"PRIx64
-#   else
-#       define U64D_FMT    "%llu"
-#       define U64H_FMT    "0x%016llx"
-#       define U48H_FMT    "0x%012llx"
-#   endif
-#elif defined (ARCH_ia64) || defined(ARCH_x86_64) || defined(ARCH_ppc64) || defined(ARCH_arm64)
-#    define U64D_FMT    "%lu"
-#    define U64H_FMT    "0x%016lx"
-#       define U48H_FMT        "0x%012lx" 
-#else
-#   error Unknown architecture
-#endif  /* ARCH */
-
-
-#if !defined(_WIN32) && !defined(_WIN64)               /* Linux */
-    #include <sys/types.h>
-#elif defined(__MINGW32__) || defined(__MINGW64__)     /* windows - mingw */
-    #include <stdint.h>                                                                                                                                           
-    #ifndef   MFT_TOOLS_VARS                                                                                                                                      
-               #define MFT_TOOLS_VARS                                                                                                                                    
-               typedef uint8_t  u_int8_t;                                                                                                                                
-               typedef uint16_t u_int16_t;                                                                                                                               
-               typedef uint32_t u_int32_t;                                                                                                                               
-               typedef uint64_t u_int64_t;                                                                                                                               
-       #endif
-#else                                                                                          /* Windows */
-    typedef __int8                  int8_t;
-    typedef unsigned __int8         u_int8_t;
-    typedef __int16                 int16_t;
-    typedef unsigned __int16        u_int16_t;
-    typedef __int32                 int32_t;
-    typedef unsigned __int32        u_int32_t;
-    typedef __int64                 int64_t;
-    typedef unsigned __int64        u_int64_t;
-#endif
-
-
-/************************************/
-/************************************/
-/************************************/
-struct adb2c_attr_format
-{
-    const char* name;
-    const char* val;
-};
-
-struct adb2c_enum_format
-{
-       int                             val;
-    const char*     name;
-};
-
-struct adb2c_field_format
-{
-    const char*             full_name;
-    const char*             desc;
-    int                     offs;
-    int                     size;
-    int                     enums_len;
-    struct adb2c_enum_format*     enums;
-    int                     attrs_len;
-    struct adb2c_attr_format*     attrs;
-};
-
-struct adb2c_node_format
-{
-    const char*          name;
-    const char*          desc;
-    int                  size;
-    int                  is_union;
-    int                  attrs_len;
-    struct adb2c_attr_format*  attrs;
-    int                  fields_len;
-    struct adb2c_field_format* fields;
-};
-
-struct adb2c_node_db
-{
-    int                 nodes_len;
-    struct adb2c_node_format* nodes;
-};
-
-/************************************/
-/************************************/
-/************************************/
-u_int32_t adb2c_calc_array_field_address(u_int32_t start_bit_offset, u_int32_t arr_elemnt_size,
-                                   int arr_idx, u_int32_t parent_node_size,
-                                   int is_big_endian_arr);
-/* Big Endian Functions */
-void adb2c_push_integer_to_buff(u_int8_t *buff, u_int32_t bit_offset,  u_int32_t byte_size, u_int64_t field_value);                                
-void adb2c_push_bits_to_buff(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int32_t field_value);
-void adb2c_push_to_buf(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int64_t field_value);
-u_int64_t adb2c_pop_integer_from_buff(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t byte_size);
-u_int32_t adb2c_pop_bits_from_buff(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size);
-u_int64_t adb2c_pop_from_buf(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size);
-
-/* Little Endian Functions */
-void adb2c_push_integer_to_buff_le(u_int8_t *buff, u_int32_t bit_offset,  u_int32_t byte_size, u_int64_t field_value);
-void adb2c_push_bits_to_buff_le(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int32_t field_value);
-void adb2c_push_to_buf_le(u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size, u_int64_t field_value);
-u_int64_t adb2c_pop_integer_from_buff_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t byte_size);
-u_int32_t adb2c_pop_bits_from_buff_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size);
-u_int64_t adb2c_pop_from_buf_le(const u_int8_t *buff, u_int32_t bit_offset, u_int32_t field_size);
-
-
-void adb2c_add_indentation(FILE* file, int indent_level);
-
-void adb2c_print_raw(FILE* file, void* buff, int buff_len);
-const char* adb2c_db_get_field_enum_name(struct adb2c_field_format* field, int val);
-int adb2c_db_get_field_enum_val(struct adb2c_field_format* field, const char* name);
-const char* adb2c_db_get_field_attr(struct adb2c_field_format* field, const char* attr_name);
-const char* adb2c_db_get_node_attr(struct adb2c_node_format* node, const char* attr_name);
-struct adb2c_node_format* adb2c_db_find_node(struct adb2c_node_db* db, const char* node_name);
-struct adb2c_field_format* adb2c_db_find_field(struct adb2c_node_format*, const char* field_name);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // ADABE_TO_C_UTILS
diff --git a/tools_layouts/cibfw_layouts.c b/tools_layouts/cibfw_layouts.c
deleted file mode 100644 (file)
index d72ee07..0000000
+++ /dev/null
@@ -1,1540 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/***
- *** This file was generated at "2015-06-17 12:05:15"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/cibfw/cibfw.adb --file-prefix cibfw --prefix cibfw_
- ***/
-#include "cibfw_layouts.h"
-
-void cibfw_uint64_pack(const struct cibfw_uint64 *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->hi);
-
-       offset=32;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->lo);
-
-}
-
-void cibfw_uint64_unpack(struct cibfw_uint64 *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       ptr_struct->hi = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=32;
-       ptr_struct->lo = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void cibfw_uint64_print(const struct cibfw_uint64 *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_uint64 ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "hi                   : "U32H_FMT"\n", ptr_struct->hi);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lo                   : "U32H_FMT"\n", ptr_struct->lo);
-
-}
-
-int cibfw_uint64_size(void){
-        return 8;
-}
-
-void cibfw_uint64_dump(const struct cibfw_uint64 *ptr_struct, FILE* file) {
-       cibfw_uint64_print(ptr_struct, file, 0);
-}
-
-void cibfw_module_version_pack(const struct cibfw_module_version *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->branch);
-
-       offset=12;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->minor);
-
-       offset=0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->major);
-
-}
-
-void cibfw_module_version_unpack(struct cibfw_module_version *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       ptr_struct->branch = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=12;
-       ptr_struct->minor = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12);
-
-       offset=0;
-       ptr_struct->major = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12);
-
-}
-
-void cibfw_module_version_print(const struct cibfw_module_version *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_module_version ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "branch               : "UH_FMT"\n", ptr_struct->branch);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "minor                : "UH_FMT"\n", ptr_struct->minor);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "major                : "UH_FMT"\n", ptr_struct->major);
-
-}
-
-int cibfw_module_version_size(void){
-        return 4;
-}
-
-void cibfw_module_version_dump(const struct cibfw_module_version *ptr_struct, FILE* file) {
-       cibfw_module_version_print(ptr_struct, file, 0);
-}
-
-void cibfw_uid_entry_pack(const struct cibfw_uid_entry *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->num_allocated);
-
-       offset=16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->step);
-
-       offset=64;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 8, ptr_struct->uid);
-
-}
-
-void cibfw_uid_entry_unpack(struct cibfw_uid_entry *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       ptr_struct->num_allocated = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=16;
-       ptr_struct->step = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=64;
-       ptr_struct->uid = adb2c_pop_integer_from_buff(ptr_buff, offset, 8);
-
-}
-
-void cibfw_uid_entry_print(const struct cibfw_uid_entry *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_uid_entry ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_allocated        : "UH_FMT"\n", ptr_struct->num_allocated);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "step                 : "UH_FMT"\n", ptr_struct->step);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "uid                  : "U64H_FMT"\n", ptr_struct->uid);
-
-}
-
-int cibfw_uid_entry_size(void){
-        return 16;
-}
-
-void cibfw_uid_entry_dump(const struct cibfw_uid_entry *ptr_struct, FILE* file) {
-       cibfw_uid_entry_print(ptr_struct, file, 0);
-}
-
-void cibfw_module_versions_pack(const struct cibfw_module_versions *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       cibfw_module_version_pack(&(ptr_struct->core), ptr_buff + offset/8);
-
-       offset=32;
-       cibfw_module_version_pack(&(ptr_struct->phy), ptr_buff + offset/8);
-
-       offset=64;
-       cibfw_module_version_pack(&(ptr_struct->kernel), ptr_buff + offset/8);
-
-       offset=96;
-       cibfw_module_version_pack(&(ptr_struct->iron_image), ptr_buff + offset/8);
-
-       offset=128;
-       cibfw_module_version_pack(&(ptr_struct->host_management), ptr_buff + offset/8);
-
-       offset=160;
-       cibfw_module_version_pack(&(ptr_struct->mad), ptr_buff + offset/8);
-
-}
-
-void cibfw_module_versions_unpack(struct cibfw_module_versions *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       cibfw_module_version_unpack(&(ptr_struct->core), ptr_buff + offset/8);
-
-       offset=32;
-       cibfw_module_version_unpack(&(ptr_struct->phy), ptr_buff + offset/8);
-
-       offset=64;
-       cibfw_module_version_unpack(&(ptr_struct->kernel), ptr_buff + offset/8);
-
-       offset=96;
-       cibfw_module_version_unpack(&(ptr_struct->iron_image), ptr_buff + offset/8);
-
-       offset=128;
-       cibfw_module_version_unpack(&(ptr_struct->host_management), ptr_buff + offset/8);
-
-       offset=160;
-       cibfw_module_version_unpack(&(ptr_struct->mad), ptr_buff + offset/8);
-
-}
-
-void cibfw_module_versions_print(const struct cibfw_module_versions *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_module_versions ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "core:\n");
-       cibfw_module_version_print(&(ptr_struct->core), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "phy:\n");
-       cibfw_module_version_print(&(ptr_struct->phy), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "kernel:\n");
-       cibfw_module_version_print(&(ptr_struct->kernel), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "iron_image:\n");
-       cibfw_module_version_print(&(ptr_struct->iron_image), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "host_management:\n");
-       cibfw_module_version_print(&(ptr_struct->host_management), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mad:\n");
-       cibfw_module_version_print(&(ptr_struct->mad), file, indent_level + 1);
-
-}
-
-int cibfw_module_versions_size(void){
-        return 64;
-}
-
-void cibfw_module_versions_dump(const struct cibfw_module_versions *ptr_struct, FILE* file) {
-       cibfw_module_versions_print(ptr_struct, file, 0);
-}
-
-void cibfw_image_size_pack(const struct cibfw_image_size *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->log_step);
-
-       offset=32;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->max_size);
-
-}
-
-void cibfw_image_size_unpack(struct cibfw_image_size *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       ptr_struct->log_step = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=32;
-       ptr_struct->max_size = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void cibfw_image_size_print(const struct cibfw_image_size *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_image_size ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "log_step             : "UH_FMT"\n", ptr_struct->log_step);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_size             : "U32H_FMT"\n", ptr_struct->max_size);
-
-}
-
-int cibfw_image_size_size(void){
-        return 8;
-}
-
-void cibfw_image_size_dump(const struct cibfw_image_size *ptr_struct, FILE* file) {
-       cibfw_image_size_print(ptr_struct, file, 0);
-}
-
-void cibfw_TRIPPLE_VERSION_pack(const struct cibfw_TRIPPLE_VERSION *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->MAJOR);
-
-       offset=48;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->SUBMINOR);
-
-       offset=32;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->MINOR);
-
-}
-
-void cibfw_TRIPPLE_VERSION_unpack(struct cibfw_TRIPPLE_VERSION *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       ptr_struct->MAJOR = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=48;
-       ptr_struct->SUBMINOR = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=32;
-       ptr_struct->MINOR = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-}
-
-void cibfw_TRIPPLE_VERSION_print(const struct cibfw_TRIPPLE_VERSION *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_TRIPPLE_VERSION ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "MAJOR                : "UH_FMT"\n", ptr_struct->MAJOR);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "SUBMINOR             : "UH_FMT"\n", ptr_struct->SUBMINOR);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "MINOR                : "UH_FMT"\n", ptr_struct->MINOR);
-
-}
-
-int cibfw_TRIPPLE_VERSION_size(void){
-        return 8;
-}
-
-void cibfw_TRIPPLE_VERSION_dump(const struct cibfw_TRIPPLE_VERSION *ptr_struct, FILE* file) {
-       cibfw_TRIPPLE_VERSION_print(ptr_struct, file, 0);
-}
-
-void cibfw_FW_VERSION_pack(const struct cibfw_FW_VERSION *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->MAJOR);
-
-       offset=48;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->SUBMINOR);
-
-       offset=32;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->MINOR);
-
-       offset=80;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Hour);
-
-       offset=72;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Minutes);
-
-       offset=64;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Seconds);
-
-       offset=120;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Day);
-
-       offset=112;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Month);
-
-       offset=96;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->Year);
-
-}
-
-void cibfw_FW_VERSION_unpack(struct cibfw_FW_VERSION *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       ptr_struct->MAJOR = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=48;
-       ptr_struct->SUBMINOR = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=32;
-       ptr_struct->MINOR = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=80;
-       ptr_struct->Hour = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=72;
-       ptr_struct->Minutes = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=64;
-       ptr_struct->Seconds = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=120;
-       ptr_struct->Day = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=112;
-       ptr_struct->Month = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=96;
-       ptr_struct->Year = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-}
-
-void cibfw_FW_VERSION_print(const struct cibfw_FW_VERSION *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_FW_VERSION ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "MAJOR                : "UH_FMT"\n", ptr_struct->MAJOR);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "SUBMINOR             : "UH_FMT"\n", ptr_struct->SUBMINOR);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "MINOR                : "UH_FMT"\n", ptr_struct->MINOR);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Hour                 : "UH_FMT"\n", ptr_struct->Hour);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Minutes              : "UH_FMT"\n", ptr_struct->Minutes);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Seconds              : "UH_FMT"\n", ptr_struct->Seconds);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Day                  : "UH_FMT"\n", ptr_struct->Day);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Month                : "UH_FMT"\n", ptr_struct->Month);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Year                 : "UH_FMT"\n", ptr_struct->Year);
-
-}
-
-int cibfw_FW_VERSION_size(void){
-        return 16;
-}
-
-void cibfw_FW_VERSION_dump(const struct cibfw_FW_VERSION *ptr_struct, FILE* file) {
-       cibfw_FW_VERSION_print(ptr_struct, file, 0);
-}
-
-void cibfw_guids_pack(const struct cibfw_guids *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       for (i=0; i < 2; i++) {
-       offset=adb2c_calc_array_field_address(0, 128, i, 512, 1);
-       cibfw_uid_entry_pack(&(ptr_struct->guids[i]), ptr_buff + offset/8);
-       }
-
-       for (i=0; i < 2; i++) {
-       offset=adb2c_calc_array_field_address(256, 128, i, 512, 1);
-       cibfw_uid_entry_pack(&(ptr_struct->macs[i]), ptr_buff + offset/8);
-       }
-
-}
-
-void cibfw_guids_unpack(struct cibfw_guids *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       for (i=0; i < 2; i++) {
-       offset=adb2c_calc_array_field_address(0, 128, i, 512, 1);
-       cibfw_uid_entry_unpack(&(ptr_struct->guids[i]), ptr_buff + offset/8);
-       }
-
-       for (i=0; i < 2; i++) {
-       offset=adb2c_calc_array_field_address(256, 128, i, 512, 1);
-       cibfw_uid_entry_unpack(&(ptr_struct->macs[i]), ptr_buff + offset/8);
-       }
-
-}
-
-void cibfw_guids_print(const struct cibfw_guids *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_guids ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       for (i=0; i < 2; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "guids_%03d:\n", i);
-       cibfw_uid_entry_print(&(ptr_struct->guids[i]), file, indent_level + 1);
-       }
-
-       for (i=0; i < 2; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "macs_%03d:\n", i);
-       cibfw_uid_entry_print(&(ptr_struct->macs[i]), file, indent_level + 1);
-       }
-
-}
-
-int cibfw_guids_size(void){
-        return 64;
-}
-
-void cibfw_guids_dump(const struct cibfw_guids *ptr_struct, FILE* file) {
-       cibfw_guids_print(ptr_struct, file, 0);
-}
-
-void cibfw_operation_key_pack(const struct cibfw_operation_key *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->key_modifier);
-
-       offset=64;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 8, ptr_struct->key);
-
-}
-
-void cibfw_operation_key_unpack(struct cibfw_operation_key *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=16;
-       ptr_struct->key_modifier = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=64;
-       ptr_struct->key = adb2c_pop_integer_from_buff(ptr_buff, offset, 8);
-
-}
-
-void cibfw_operation_key_print(const struct cibfw_operation_key *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_operation_key ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "key_modifier         : "UH_FMT"\n", ptr_struct->key_modifier);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "key                  : "U64H_FMT"\n", ptr_struct->key);
-
-}
-
-int cibfw_operation_key_size(void){
-        return 16;
-}
-
-void cibfw_operation_key_dump(const struct cibfw_operation_key *ptr_struct, FILE* file) {
-       cibfw_operation_key_print(ptr_struct, file, 0);
-}
-
-void cibfw_image_info_pack(const struct cibfw_image_info *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->minor_version);
-
-       offset=0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->major_version);
-
-       offset=32;
-       cibfw_FW_VERSION_pack(&(ptr_struct->FW_VERSION), ptr_buff + offset/8);
-
-       offset=160;
-       cibfw_TRIPPLE_VERSION_pack(&(ptr_struct->mic_version), ptr_buff + offset/8);
-
-       for (i=0; i < 16; i++) {
-       offset=adb2c_calc_array_field_address(312, 8, i, 8192, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->psid[i]);
-       }
-
-       offset=432;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->vsd_vendor_id);
-
-       for (i=0; i < 208; i++) {
-       offset=adb2c_calc_array_field_address(472, 8, i, 8192, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->vsd[i]);
-       }
-
-       offset=2112;
-       cibfw_image_size_pack(&(ptr_struct->image_size), ptr_buff + offset/8);
-
-       for (i=0; i < 4; i++) {
-       offset=adb2c_calc_array_field_address(2240, 32, i, 8192, 1);
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->supported_hw_id[i]);
-       }
-
-       offset=2368;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->ini_file_num);
-
-       for (i=0; i < 16; i++) {
-       offset=adb2c_calc_array_field_address(3608, 8, i, 8192, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->prod_ver[i]);
-       }
-
-       offset=6144;
-       cibfw_module_versions_pack(&(ptr_struct->module_versions), ptr_buff + offset/8);
-
-}
-
-void cibfw_image_info_unpack(struct cibfw_image_info *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=8;
-       ptr_struct->minor_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=0;
-       ptr_struct->major_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=32;
-       cibfw_FW_VERSION_unpack(&(ptr_struct->FW_VERSION), ptr_buff + offset/8);
-
-       offset=160;
-       cibfw_TRIPPLE_VERSION_unpack(&(ptr_struct->mic_version), ptr_buff + offset/8);
-
-       for (i=0; i < 16; i++) {
-       offset=adb2c_calc_array_field_address(312, 8, i, 8192, 1);
-       ptr_struct->psid[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->psid[16] = '\0';
-       offset=432;
-       ptr_struct->vsd_vendor_id = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       for (i=0; i < 208; i++) {
-       offset=adb2c_calc_array_field_address(472, 8, i, 8192, 1);
-       ptr_struct->vsd[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->vsd[208] = '\0';
-       offset=2112;
-       cibfw_image_size_unpack(&(ptr_struct->image_size), ptr_buff + offset/8);
-
-       for (i=0; i < 4; i++) {
-       offset=adb2c_calc_array_field_address(2240, 32, i, 8192, 1);
-       ptr_struct->supported_hw_id[i] = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-       }
-
-       offset=2368;
-       ptr_struct->ini_file_num = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       for (i=0; i < 16; i++) {
-       offset=adb2c_calc_array_field_address(3608, 8, i, 8192, 1);
-       ptr_struct->prod_ver[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->prod_ver[16] = '\0';
-       offset=6144;
-       cibfw_module_versions_unpack(&(ptr_struct->module_versions), ptr_buff + offset/8);
-
-}
-
-void cibfw_image_info_print(const struct cibfw_image_info *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_image_info ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "minor_version        : "UH_FMT"\n", ptr_struct->minor_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "major_version        : "UH_FMT"\n", ptr_struct->major_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "FW_VERSION:\n");
-       cibfw_FW_VERSION_print(&(ptr_struct->FW_VERSION), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mic_version:\n");
-       cibfw_TRIPPLE_VERSION_print(&(ptr_struct->mic_version), file, indent_level + 1);
-
-       fprintf(file, "psid                 : \"%s\"\n", ptr_struct->psid);
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "vsd_vendor_id        : "UH_FMT"\n", ptr_struct->vsd_vendor_id);
-
-       fprintf(file, "vsd                  : \"%s\"\n", ptr_struct->vsd);
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "image_size:\n");
-       cibfw_image_size_print(&(ptr_struct->image_size), file, indent_level + 1);
-
-       for (i=0; i < 4; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "supported_hw_id_%03d : "U32H_FMT"\n", i, ptr_struct->supported_hw_id[i]);
-       }
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ini_file_num         : "U32H_FMT"\n", ptr_struct->ini_file_num);
-
-       fprintf(file, "prod_ver             : \"%s\"\n", ptr_struct->prod_ver);
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "module_versions:\n");
-       cibfw_module_versions_print(&(ptr_struct->module_versions), file, indent_level + 1);
-
-}
-
-int cibfw_image_info_size(void){
-        return 1024;
-}
-
-void cibfw_image_info_dump(const struct cibfw_image_info *ptr_struct, FILE* file) {
-       cibfw_image_info_print(ptr_struct, file, 0);
-}
-
-void cibfw_mfg_info_pack(const struct cibfw_mfg_info *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       for (i=0; i < 16; i++) {
-       offset=adb2c_calc_array_field_address(24, 8, i, 2560, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->psid[i]);
-       }
-
-       offset=255;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->guids_override_en);
-
-       offset=232;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->minor_version);
-
-       offset=224;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->major_version);
-
-       offset=256;
-       cibfw_guids_pack(&(ptr_struct->guids), ptr_buff + offset/8);
-
-}
-
-void cibfw_mfg_info_unpack(struct cibfw_mfg_info *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       for (i=0; i < 16; i++) {
-       offset=adb2c_calc_array_field_address(24, 8, i, 2560, 1);
-       ptr_struct->psid[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->psid[16] = '\0';
-       offset=255;
-       ptr_struct->guids_override_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=232;
-       ptr_struct->minor_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=224;
-       ptr_struct->major_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=256;
-       cibfw_guids_unpack(&(ptr_struct->guids), ptr_buff + offset/8);
-
-}
-
-void cibfw_mfg_info_print(const struct cibfw_mfg_info *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_mfg_info ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       fprintf(file, "psid                 : \"%s\"\n", ptr_struct->psid);
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "guids_override_en    : "UH_FMT"\n", ptr_struct->guids_override_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "minor_version        : "UH_FMT"\n", ptr_struct->minor_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "major_version        : "UH_FMT"\n", ptr_struct->major_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "guids:\n");
-       cibfw_guids_print(&(ptr_struct->guids), file, indent_level + 1);
-
-}
-
-int cibfw_mfg_info_size(void){
-        return 320;
-}
-
-void cibfw_mfg_info_dump(const struct cibfw_mfg_info *ptr_struct, FILE* file) {
-       cibfw_mfg_info_print(ptr_struct, file, 0);
-}
-
-void cibfw_device_info_pack(const struct cibfw_device_info *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature0);
-
-       offset=32;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature1);
-
-       offset=64;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature2);
-
-       offset=96;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature3);
-
-       offset=152;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->minor_version);
-
-       offset=143;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 9, (u_int32_t)ptr_struct->major_version);
-
-       offset=256;
-       cibfw_guids_pack(&(ptr_struct->guids), ptr_buff + offset/8);
-
-       offset=880;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->vsd_vendor_id);
-
-       for (i=0; i < 208; i++) {
-       offset=adb2c_calc_array_field_address(920, 8, i, 4096, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->vsd[i]);
-       }
-
-       for (i=0; i < 4; i++) {
-       offset=adb2c_calc_array_field_address(2816, 128, i, 4096, 1);
-       cibfw_operation_key_pack(&(ptr_struct->keys[i]), ptr_buff + offset/8);
-       }
-
-}
-
-void cibfw_device_info_unpack(struct cibfw_device_info *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       ptr_struct->signature0 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=32;
-       ptr_struct->signature1 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=64;
-       ptr_struct->signature2 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=96;
-       ptr_struct->signature3 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=152;
-       ptr_struct->minor_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=143;
-       ptr_struct->major_version = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 9);
-
-       offset=256;
-       cibfw_guids_unpack(&(ptr_struct->guids), ptr_buff + offset/8);
-
-       offset=880;
-       ptr_struct->vsd_vendor_id = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       for (i=0; i < 208; i++) {
-       offset=adb2c_calc_array_field_address(920, 8, i, 4096, 1);
-       ptr_struct->vsd[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->vsd[208] = '\0';
-       for (i=0; i < 4; i++) {
-       offset=adb2c_calc_array_field_address(2816, 128, i, 4096, 1);
-       cibfw_operation_key_unpack(&(ptr_struct->keys[i]), ptr_buff + offset/8);
-       }
-
-}
-
-void cibfw_device_info_print(const struct cibfw_device_info *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_device_info ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature0           : "U32H_FMT"\n", ptr_struct->signature0);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature1           : "U32H_FMT"\n", ptr_struct->signature1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature2           : "U32H_FMT"\n", ptr_struct->signature2);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature3           : "U32H_FMT"\n", ptr_struct->signature3);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "minor_version        : "UH_FMT"\n", ptr_struct->minor_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "major_version        : "UH_FMT"\n", ptr_struct->major_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "guids:\n");
-       cibfw_guids_print(&(ptr_struct->guids), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "vsd_vendor_id        : "UH_FMT"\n", ptr_struct->vsd_vendor_id);
-
-       fprintf(file, "vsd                  : \"%s\"\n", ptr_struct->vsd);
-       for (i=0; i < 4; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "keys_%03d:\n", i);
-       cibfw_operation_key_print(&(ptr_struct->keys[i]), file, indent_level + 1);
-       }
-
-}
-
-int cibfw_device_info_size(void){
-        return 512;
-}
-
-void cibfw_device_info_dump(const struct cibfw_device_info *ptr_struct, FILE* file) {
-       cibfw_device_info_print(ptr_struct, file, 0);
-}
-
-void cibfw_register_mfrl_pack(const struct cibfw_register_mfrl *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=56;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->reset_level);
-
-}
-
-void cibfw_register_mfrl_unpack(struct cibfw_register_mfrl *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=56;
-       ptr_struct->reset_level = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void cibfw_register_mfrl_print(const struct cibfw_register_mfrl *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_register_mfrl ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "reset_level          : "UH_FMT"\n", ptr_struct->reset_level);
-
-}
-
-int cibfw_register_mfrl_size(void){
-        return 16;
-}
-
-void cibfw_register_mfrl_dump(const struct cibfw_register_mfrl *ptr_struct, FILE* file) {
-       cibfw_register_mfrl_print(ptr_struct, file, 0);
-}
-
-void cibfw_itoc_header_pack(const struct cibfw_itoc_header *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature0);
-
-       offset=32;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature1);
-
-       offset=64;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature2);
-
-       offset=96;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature3);
-
-       offset=152;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->version);
-
-       offset=240;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->itoc_entry_crc);
-
-}
-
-void cibfw_itoc_header_unpack(struct cibfw_itoc_header *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       ptr_struct->signature0 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=32;
-       ptr_struct->signature1 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=64;
-       ptr_struct->signature2 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=96;
-       ptr_struct->signature3 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=152;
-       ptr_struct->version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=240;
-       ptr_struct->itoc_entry_crc = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-}
-
-void cibfw_itoc_header_print(const struct cibfw_itoc_header *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_itoc_header ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature0           : "U32H_FMT"\n", ptr_struct->signature0);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature1           : "U32H_FMT"\n", ptr_struct->signature1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature2           : "U32H_FMT"\n", ptr_struct->signature2);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature3           : "U32H_FMT"\n", ptr_struct->signature3);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "version              : "UH_FMT"\n", ptr_struct->version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "itoc_entry_crc       : "UH_FMT"\n", ptr_struct->itoc_entry_crc);
-
-}
-
-int cibfw_itoc_header_size(void){
-        return 32;
-}
-
-void cibfw_itoc_header_dump(const struct cibfw_itoc_header *ptr_struct, FILE* file) {
-       cibfw_itoc_header_print(ptr_struct, file, 0);
-}
-
-void cibfw_itoc_entry_pack(const struct cibfw_itoc_entry *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 22, (u_int32_t)ptr_struct->size);
-
-       offset=0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->type);
-
-       offset=34;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 30, (u_int32_t)ptr_struct->param0);
-
-       offset=33;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->cache_line_crc);
-
-       offset=32;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->zipped_image);
-
-       offset=64;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->param1);
-
-       offset=161;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 29, (u_int32_t)ptr_struct->flash_addr);
-
-       offset=160;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->relative_addr);
-
-       offset=208;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->section_crc);
-
-       offset=207;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->no_crc);
-
-       offset=206;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->device_data);
-
-       offset=240;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->itoc_entry_crc);
-
-}
-
-void cibfw_itoc_entry_unpack(struct cibfw_itoc_entry *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=8;
-       ptr_struct->size = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 22);
-
-       offset=0;
-       ptr_struct->type = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=34;
-       ptr_struct->param0 = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 30);
-
-       offset=33;
-       ptr_struct->cache_line_crc = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=32;
-       ptr_struct->zipped_image = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=64;
-       ptr_struct->param1 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=161;
-       ptr_struct->flash_addr = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 29);
-
-       offset=160;
-       ptr_struct->relative_addr = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=208;
-       ptr_struct->section_crc = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=207;
-       ptr_struct->no_crc = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=206;
-       ptr_struct->device_data = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=240;
-       ptr_struct->itoc_entry_crc = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-}
-
-void cibfw_itoc_entry_print(const struct cibfw_itoc_entry *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_itoc_entry ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "size                 : "UH_FMT"\n", ptr_struct->size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "type                 : "UH_FMT"\n", ptr_struct->type);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param0               : "UH_FMT"\n", ptr_struct->param0);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "cache_line_crc       : "UH_FMT"\n", ptr_struct->cache_line_crc);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "zipped_image         : "UH_FMT"\n", ptr_struct->zipped_image);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param1               : "U32H_FMT"\n", ptr_struct->param1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "flash_addr           : "UH_FMT"\n", ptr_struct->flash_addr);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "relative_addr        : "UH_FMT"\n", ptr_struct->relative_addr);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "section_crc          : "UH_FMT"\n", ptr_struct->section_crc);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "no_crc               : "UH_FMT"\n", ptr_struct->no_crc);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "device_data          : "UH_FMT"\n", ptr_struct->device_data);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "itoc_entry_crc       : "UH_FMT"\n", ptr_struct->itoc_entry_crc);
-
-}
-
-int cibfw_itoc_entry_size(void){
-        return 32;
-}
-
-void cibfw_itoc_entry_dump(const struct cibfw_itoc_entry *ptr_struct, FILE* file) {
-       cibfw_itoc_entry_print(ptr_struct, file, 0);
-}
-
-void cibfw_register_mfai_pack(const struct cibfw_register_mfai *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 24, (u_int32_t)ptr_struct->address);
-
-       offset=2;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->permanent);
-
-       offset=1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->use_address);
-
-       offset=0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->use_image_id);
-
-       offset=56;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->image_id);
-
-}
-
-void cibfw_register_mfai_unpack(struct cibfw_register_mfai *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=8;
-       ptr_struct->address = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 24);
-
-       offset=2;
-       ptr_struct->permanent = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=1;
-       ptr_struct->use_address = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=0;
-       ptr_struct->use_image_id = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=56;
-       ptr_struct->image_id = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void cibfw_register_mfai_print(const struct cibfw_register_mfai *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_register_mfai ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "address              : "UH_FMT"\n", ptr_struct->address);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "permanent            : "UH_FMT"\n", ptr_struct->permanent);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "use_address          : "UH_FMT"\n", ptr_struct->use_address);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "use_image_id         : "UH_FMT"\n", ptr_struct->use_image_id);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "image_id             : "UH_FMT"\n", ptr_struct->image_id);
-
-}
-
-int cibfw_register_mfai_size(void){
-        return 16;
-}
-
-void cibfw_register_mfai_dump(const struct cibfw_register_mfai *ptr_struct, FILE* file) {
-       cibfw_register_mfai_print(ptr_struct, file, 0);
-}
-
-void cibfw_cibfw_Nodes_pack(const union cibfw_cibfw_Nodes *ptr_struct, u_int8_t* ptr_buff)
-{
-       cibfw_image_info_pack(&(ptr_struct->image_info), ptr_buff);
-}
-
-void cibfw_cibfw_Nodes_unpack(union cibfw_cibfw_Nodes *ptr_struct, const u_int8_t* ptr_buff)
-{
-       cibfw_image_info_unpack(&(ptr_struct->image_info), ptr_buff);
-}
-
-void cibfw_cibfw_Nodes_print(const union cibfw_cibfw_Nodes *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cibfw_cibfw_Nodes ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "register_mfai:\n");
-       cibfw_register_mfai_print(&(ptr_struct->register_mfai), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "itoc_entry:\n");
-       cibfw_itoc_entry_print(&(ptr_struct->itoc_entry), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "guids:\n");
-       cibfw_guids_print(&(ptr_struct->guids), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "itoc_header:\n");
-       cibfw_itoc_header_print(&(ptr_struct->itoc_header), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "register_mfrl:\n");
-       cibfw_register_mfrl_print(&(ptr_struct->register_mfrl), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "device_info:\n");
-       cibfw_device_info_print(&(ptr_struct->device_info), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mfg_info:\n");
-       cibfw_mfg_info_print(&(ptr_struct->mfg_info), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "image_info:\n");
-       cibfw_image_info_print(&(ptr_struct->image_info), file, indent_level + 1);
-
-}
-
-int cibfw_cibfw_Nodes_size(void){
-        return 1024;
-}
-
-void cibfw_cibfw_Nodes_dump(const union cibfw_cibfw_Nodes *ptr_struct, FILE* file) {
-       cibfw_cibfw_Nodes_print(ptr_struct, file, 0);
-}
-
diff --git a/tools_layouts/cibfw_layouts.h b/tools_layouts/cibfw_layouts.h
deleted file mode 100644 (file)
index 0c449c3..0000000
+++ /dev/null
@@ -1,643 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/***
- *** This file was generated at "2015-06-17 12:05:15"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/cibfw/cibfw.adb --file-prefix cibfw --prefix cibfw_
- ***/
-#ifndef CIBFW_LAYOUTS_H
-#define CIBFW_LAYOUTS_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "adb_to_c_utils.h"/* Description -   */
-/* Size in bytes - 8 */
-struct cibfw_uint64 {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        u_int32_t hi;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 8.31 */
-        u_int32_t lo;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct cibfw_module_version {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.7 */
-        u_int8_t branch;
-       /* Description -  */
-       /* 0.8 - 0.19 */
-        u_int16_t minor;
-       /* Description -  */
-       /* 0.20 - 4.31 */
-        u_int16_t major;
-};
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct cibfw_uid_entry {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Number of allocated UIDs in this entry */
-       /* 0.0 - 0.7 */
-        u_int8_t num_allocated;
-       /* Description - Step size by which to derive the UIDs for this entry
-See struct description */
-       /* 0.8 - 0.15 */
-        u_int8_t step;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - For MACs, the upper 16 bits in the 'hi' dword are reserved */
-       /* 8.0 - 16.31 */
-        u_int64_t uid;
-};
-
-/* Description -   */
-/* Size in bytes - 64 */
-struct cibfw_module_versions {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct cibfw_module_version core;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 8.31 */
-        struct cibfw_module_version phy;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description -  */
-       /* 8.0 - 12.31 */
-        struct cibfw_module_version kernel;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description -  */
-       /* 12.0 - 16.31 */
-        struct cibfw_module_version iron_image;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description -  */
-       /* 16.0 - 20.31 */
-        struct cibfw_module_version host_management;
-/*---------------- DWORD[5] (Offset 0x14) ----------------*/
-       /* Description -  */
-       /* 20.0 - 24.31 */
-        struct cibfw_module_version mad;
-};
-
-/* Description -   */
-/* Size in bytes - 8 */
-struct cibfw_image_size {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - log of next address in bytes to search for an image. Address in bytes is 2^log_step */
-       /* 0.0 - 0.7 */
-        u_int8_t log_step;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - Max possible size in bytes of image. Image read / write should not occure beyond this address */
-       /* 4.0 - 8.31 */
-        u_int32_t max_size;
-};
-
-/* Description -   */
-/* Size in bytes - 8 */
-struct cibfw_TRIPPLE_VERSION {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.16 - 4.31 */
-        u_int16_t MAJOR;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 4.15 */
-        u_int16_t SUBMINOR;
-       /* Description -  */
-       /* 4.16 - 8.31 */
-        u_int16_t MINOR;
-};
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct cibfw_FW_VERSION {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.16 - 4.31 */
-        u_int16_t MAJOR;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 4.15 */
-        u_int16_t SUBMINOR;
-       /* Description -  */
-       /* 4.16 - 8.31 */
-        u_int16_t MINOR;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description -  */
-       /* 8.8 - 8.15 */
-        u_int8_t Hour;
-       /* Description -  */
-       /* 8.16 - 8.23 */
-        u_int8_t Minutes;
-       /* Description -  */
-       /* 8.24 - 12.31 */
-        u_int8_t Seconds;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description -  */
-       /* 12.0 - 12.7 */
-        u_int8_t Day;
-       /* Description -  */
-       /* 12.8 - 12.15 */
-        u_int8_t Month;
-       /* Description -  */
-       /* 12.16 - 16.31 */
-        u_int16_t Year;
-};
-
-/* Description -   */
-/* Size in bytes - 64 */
-struct cibfw_guids {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - UIDs (MACs and GUIDs) Allocation Entry.
-guids[0], is used for system GUID, node GUID and port GUID of port 0. guids[1], is used for port GUID of port 1.;/Multiple UIDs can be assigned to a single port, to be used for multiple virtual guests.
-
-Allocation Example:
-For a port GUID, if the
-    UID = 0x2c9030001000
-    num_allocated  = 4, 
-    step = 8
-
-Then the GUIDs for this port would be:
-    0x2c9030001000
-    0x2c9030001008
-    0x2c9030001010
-    0x2c9030001018 */
-       /* 0.0 - 32.31 */
-        struct cibfw_uid_entry guids[2];
-/*---------------- DWORD[8] (Offset 0x20) ----------------*/
-       /* Description -  */
-       /* 32.0 - 64.31 */
-        struct cibfw_uid_entry macs[2];
-};
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct cibfw_operation_key {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.15 */
-        u_int16_t key_modifier;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description -  */
-       /* 8.0 - 16.31 */
-        u_int64_t key;
-};
-
-/* Description -   */
-/* Size in bytes - 1024 */
-struct cibfw_image_info {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - IMAGE_INFO section minor version */
-       /* 0.16 - 0.23 */
-        u_int8_t minor_version;
-       /* Description - IMAGE_INFO section major version */
-       /* 0.24 - 4.31 */
-        u_int8_t major_version;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 20.31 */
-        struct cibfw_FW_VERSION FW_VERSION;
-/*---------------- DWORD[5] (Offset 0x14) ----------------*/
-       /* Description -  */
-       /* 20.0 - 28.31 */
-        struct cibfw_TRIPPLE_VERSION mic_version;
-/*---------------- DWORD[9] (Offset 0x24) ----------------*/
-       /* Description -  */
-       /* 36.24 - 52.23 */
-        char psid[17];
-/*---------------- DWORD[13] (Offset 0x34) ----------------*/
-       /* Description -  */
-       /* 52.0 - 52.15 */
-        u_int16_t vsd_vendor_id;
-/*---------------- DWORD[14] (Offset 0x38) ----------------*/
-       /* Description -  */
-       /* 56.24 - 264.23 */
-        char vsd[209];
-/*---------------- DWORD[66] (Offset 0x108) ----------------*/
-       /* Description - image size parameters */
-       /* 264.0 - 272.31 */
-        struct cibfw_image_size image_size;
-/*---------------- DWORD[70] (Offset 0x118) ----------------*/
-       /* Description - HW device(s) supported by this FW image.
-0 means invalid entry.
-For Golan A0, first entry should be 0x1ff
- */
-       /* 280.0 - 296.31 */
-        u_int32_t supported_hw_id[4];
-/*---------------- DWORD[74] (Offset 0x128) ----------------*/
-       /* Description -  */
-       /* 296.0 - 300.31 */
-        u_int32_t ini_file_num;
-/*---------------- DWORD[112] (Offset 0x1c0) ----------------*/
-       /* Description - Product Version is the unified version of the FW and expansion ROM.
-Format is defined by the packager.
-When set to a non-empty string the FW update tool burns the image as a monolythic entity and refuses to update rom only or FW only. */
-       /* 448.24 - 464.23 */
-        char prod_ver[17];
-/*---------------- DWORD[192] (Offset 0x300) ----------------*/
-       /* Description -  */
-       /* 768.0 - 832.31 */
-        struct cibfw_module_versions module_versions;
-};
-
-/* Description -   */
-/* Size in bytes - 320 */
-struct cibfw_mfg_info {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.24 - 16.23 */
-        char psid[17];
-/*---------------- DWORD[7] (Offset 0x1c) ----------------*/
-       /* Description - When this bit is set, the GUIDs should be taken from the device_info node.
-When this bit is cleared, the GUIDs should be taken from the mfg_info node. */
-       /* 28.0 - 28.0 */
-        u_int8_t guids_override_en;
-       /* Description - MFG_INFO section minor version */
-       /* 28.16 - 28.23 */
-        u_int8_t minor_version;
-       /* Description - MFG_INFO section major version */
-       /* 28.24 - 32.31 */
-        u_int8_t major_version;
-/*---------------- DWORD[8] (Offset 0x20) ----------------*/
-       /* Description -  */
-       /* 32.0 - 96.31 */
-        struct cibfw_guids guids;
-};
-
-/* Description -   */
-/* Size in bytes - 512 */
-struct cibfw_device_info {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        u_int32_t signature0;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 8.31 */
-        u_int32_t signature1;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description -  */
-       /* 8.0 - 12.31 */
-        u_int32_t signature2;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description -  */
-       /* 12.0 - 16.31 */
-        u_int32_t signature3;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description - Format version for this struct */
-       /* 16.0 - 16.7 */
-        u_int8_t minor_version;
-       /* Description - Format version for this struct */
-       /* 16.8 - 16.16 */
-        u_int16_t major_version;
-/*---------------- DWORD[8] (Offset 0x20) ----------------*/
-       /* Description -  */
-       /* 32.0 - 96.31 */
-        struct cibfw_guids guids;
-/*---------------- DWORD[27] (Offset 0x6c) ----------------*/
-       /* Description -  */
-       /* 108.0 - 108.15 */
-        u_int16_t vsd_vendor_id;
-/*---------------- DWORD[28] (Offset 0x70) ----------------*/
-       /* Description -  */
-       /* 112.24 - 320.23 */
-        char vsd[209];
-/*---------------- DWORD[88] (Offset 0x160) ----------------*/
-       /* Description -  */
-       /* 352.0 - 416.31 */
-        struct cibfw_operation_key keys[4];
-};
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct cibfw_register_mfrl {
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - on Read, required reset level. On write, minimum requested reset level
- 0-Full ISFU
- 1-Driver down but link is up
- 2-driver and link down
- 3-driver down, link down pci disable/enable
- 7-server warm reboot
- 8-server cold reboot */
-       /* 4.0 - 4.7 */
-        u_int8_t reset_level;
-};
-
-/* Description -   */
-/* Size in bytes - 32 */
-struct cibfw_itoc_header {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - 49 54 4f 43 */
-       /* 0.0 - 4.31 */
-        u_int32_t signature0;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - 04 08 15 16 */
-       /* 4.0 - 8.31 */
-        u_int32_t signature1;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - 23 42 ca fa */
-       /* 8.0 - 12.31 */
-        u_int32_t signature2;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description - ba ca fe 00 */
-       /* 12.0 - 16.31 */
-        u_int32_t signature3;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description - Current version: 1 */
-       /* 16.0 - 16.7 */
-        u_int8_t version;
-/*---------------- DWORD[7] (Offset 0x1c) ----------------*/
-       /* Description -  */
-       /* 28.0 - 28.15 */
-        u_int16_t itoc_entry_crc;
-};
-
-/* Description -   */
-/* Size in bytes - 32 */
-struct cibfw_itoc_entry {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.2 - 0.23 */
-        u_int32_t size;
-       /* Description - Section ID Section Type DESCRIPTION
-0x1 BOOT_CODE FW loader code
-0x2 PCI_CODE Code that is required to raise PCIe link.
-0x3 MAIN_CODE All non-PCIe FW code
-0x8 HW_BOOT_CFG Initial values for the PCI related registers
-0x9 HW_MAIN_CFG Initial values for all other registers 
-0x10 IMAGE_INFO Management data for the burning tool. See 'Image Info Section' chapter in the Mellanox Flash Programming Application Note
-0x11 FW_BOOT_CFG Initial values for user set-able hi level non-hardware related settings, such as number of physical functions
-(optional)
-0x12 FW_MAIN_CFG Initial values for user set-able hi level non-hardware related settings.
-(optional)
-0x18 ROM_CODE PXE/Boot over IB code. 
-0x30 DBG_LOG_MAP FW logger 'index to string' map. The map is in ASCI text. Format is TBD.
-                                          PARAM0 in the iTOC specifies the compression method of this sector:
-                                          0. Uncompressed
-                                          1. Zlib compress2()
-                                          2. LZMA
-                                          Others - Reserved 
-0x31 DBG_FW_INI The Ini file used in the image generation. The PARAM0 applies the same as in  DBG_LOG_MAP section type.
-0x32 DBG_FW_PARAMS FW settable parameters. ASCII text. Format is TBD. The PARAM0 applies the same as in  DBG_LOG_MAP section type.
-0xff END_MARKER A type of 0xff marks the end of the iTOC entries array. It is recommended to leave the unused part of the iTOC section blank (that is, 0xff in all unused bytes)
-All other values Reserved 
- */
-       /* 0.24 - 4.31 */
-        u_int8_t type;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - if partition type is code or ini then the load address is in here */
-       /* 4.0 - 4.29 */
-        u_int32_t param0;
-       /* Description - When this bit is set, Data within the section is protected by per-line crc. See yu.flash.replacement.crc_en */
-       /* 4.30 - 4.30 */
-        u_int8_t cache_line_crc;
-       /* Description - When this bit is set, image is zipped */
-       /* 4.31 - 8.31 */
-        u_int8_t zipped_image;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - if partition type is code then the jump address is in here */
-       /* 8.0 - 12.31 */
-        u_int32_t param1;
-/*---------------- DWORD[5] (Offset 0x14) ----------------*/
-       /* Description -  */
-       /* 20.2 - 20.30 */
-        u_int32_t flash_addr;
-       /* Description -  */
-       /* 20.31 - 24.31 */
-        u_int8_t relative_addr;
-/*---------------- DWORD[6] (Offset 0x18) ----------------*/
-       /* Description -  */
-       /* 24.0 - 24.15 */
-        u_int16_t section_crc;
-       /* Description -  */
-       /* 24.16 - 24.16 */
-        u_int8_t no_crc;
-       /* Description - When this bit is set, the section pointed by this entry in belongs to teh device tather than to teh FW image.
-A device_data section should not be updated in a regular FW update.
-Example for device_data section: VPD_R, GUIDs. */
-       /* 24.17 - 24.17 */
-        u_int8_t device_data;
-/*---------------- DWORD[7] (Offset 0x1c) ----------------*/
-       /* Description -  */
-       /* 28.0 - 28.15 */
-        u_int16_t itoc_entry_crc;
-};
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct cibfw_register_mfai {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.23 */
-        u_int32_t address;
-       /* Description - if set make image permamnent */
-       /* 0.29 - 0.29 */
-        u_int8_t permanent;
-       /* Description - if set use address */
-       /* 0.30 - 0.30 */
-        u_int8_t use_address;
-       /* Description - if set use image id and not address */
-       /* 0.31 - 4.31 */
-        u_int8_t use_image_id;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 4.7 */
-        u_int8_t image_id;
-};
-
-/* Description -   */
-/* Size in bytes - 1024 */
-union cibfw_cibfw_Nodes {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 16.31 */
-        struct cibfw_register_mfai register_mfai;
-       /* Description -  */
-       /* 0.0 - 32.31 */
-        struct cibfw_itoc_entry itoc_entry;
-       /* Description -  */
-       /* 0.0 - 64.31 */
-        struct cibfw_guids guids;
-       /* Description -  */
-       /* 0.0 - 32.31 */
-        struct cibfw_itoc_header itoc_header;
-       /* Description -  */
-       /* 0.0 - 16.31 */
-        struct cibfw_register_mfrl register_mfrl;
-       /* Description -  */
-       /* 0.0 - 512.31 */
-        struct cibfw_device_info device_info;
-       /* Description -  */
-       /* 0.0 - 320.31 */
-        struct cibfw_mfg_info mfg_info;
-       /* Description -  */
-       /* 0.0 - 1024.31 */
-        struct cibfw_image_info image_info;
-};
-
-
-/*================= PACK/UNPACK/PRINT FUNCTIONS ======================*/
-/* uint64 */
-void cibfw_uint64_pack(const struct cibfw_uint64 *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_uint64_unpack(struct cibfw_uint64 *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_uint64_print(const struct cibfw_uint64 *ptr_struct, FILE* file, int indent_level);
-int cibfw_uint64_size(void);
-#define CIBFW_UINT64_SIZE    (0x8)
-void cibfw_uint64_dump(const struct cibfw_uint64 *ptr_struct, FILE* file);
-/* module_version */
-void cibfw_module_version_pack(const struct cibfw_module_version *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_module_version_unpack(struct cibfw_module_version *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_module_version_print(const struct cibfw_module_version *ptr_struct, FILE* file, int indent_level);
-int cibfw_module_version_size(void);
-#define CIBFW_MODULE_VERSION_SIZE    (0x4)
-void cibfw_module_version_dump(const struct cibfw_module_version *ptr_struct, FILE* file);
-/* uid_entry */
-void cibfw_uid_entry_pack(const struct cibfw_uid_entry *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_uid_entry_unpack(struct cibfw_uid_entry *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_uid_entry_print(const struct cibfw_uid_entry *ptr_struct, FILE* file, int indent_level);
-int cibfw_uid_entry_size(void);
-#define CIBFW_UID_ENTRY_SIZE    (0x10)
-void cibfw_uid_entry_dump(const struct cibfw_uid_entry *ptr_struct, FILE* file);
-/* module_versions */
-void cibfw_module_versions_pack(const struct cibfw_module_versions *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_module_versions_unpack(struct cibfw_module_versions *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_module_versions_print(const struct cibfw_module_versions *ptr_struct, FILE* file, int indent_level);
-int cibfw_module_versions_size(void);
-#define CIBFW_MODULE_VERSIONS_SIZE    (0x40)
-void cibfw_module_versions_dump(const struct cibfw_module_versions *ptr_struct, FILE* file);
-/* image_size */
-void cibfw_image_size_pack(const struct cibfw_image_size *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_image_size_unpack(struct cibfw_image_size *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_image_size_print(const struct cibfw_image_size *ptr_struct, FILE* file, int indent_level);
-int cibfw_image_size_size(void);
-#define CIBFW_IMAGE_SIZE_SIZE    (0x8)
-void cibfw_image_size_dump(const struct cibfw_image_size *ptr_struct, FILE* file);
-/* TRIPPLE_VERSION */
-void cibfw_TRIPPLE_VERSION_pack(const struct cibfw_TRIPPLE_VERSION *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_TRIPPLE_VERSION_unpack(struct cibfw_TRIPPLE_VERSION *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_TRIPPLE_VERSION_print(const struct cibfw_TRIPPLE_VERSION *ptr_struct, FILE* file, int indent_level);
-int cibfw_TRIPPLE_VERSION_size(void);
-#define CIBFW_TRIPPLE_VERSION_SIZE    (0x8)
-void cibfw_TRIPPLE_VERSION_dump(const struct cibfw_TRIPPLE_VERSION *ptr_struct, FILE* file);
-/* FW_VERSION */
-void cibfw_FW_VERSION_pack(const struct cibfw_FW_VERSION *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_FW_VERSION_unpack(struct cibfw_FW_VERSION *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_FW_VERSION_print(const struct cibfw_FW_VERSION *ptr_struct, FILE* file, int indent_level);
-int cibfw_FW_VERSION_size(void);
-#define CIBFW_FW_VERSION_SIZE    (0x10)
-void cibfw_FW_VERSION_dump(const struct cibfw_FW_VERSION *ptr_struct, FILE* file);
-/* guids */
-void cibfw_guids_pack(const struct cibfw_guids *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_guids_unpack(struct cibfw_guids *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_guids_print(const struct cibfw_guids *ptr_struct, FILE* file, int indent_level);
-int cibfw_guids_size(void);
-#define CIBFW_GUIDS_SIZE    (0x40)
-void cibfw_guids_dump(const struct cibfw_guids *ptr_struct, FILE* file);
-/* operation_key */
-void cibfw_operation_key_pack(const struct cibfw_operation_key *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_operation_key_unpack(struct cibfw_operation_key *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_operation_key_print(const struct cibfw_operation_key *ptr_struct, FILE* file, int indent_level);
-int cibfw_operation_key_size(void);
-#define CIBFW_OPERATION_KEY_SIZE    (0x10)
-void cibfw_operation_key_dump(const struct cibfw_operation_key *ptr_struct, FILE* file);
-/* image_info */
-void cibfw_image_info_pack(const struct cibfw_image_info *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_image_info_unpack(struct cibfw_image_info *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_image_info_print(const struct cibfw_image_info *ptr_struct, FILE* file, int indent_level);
-int cibfw_image_info_size(void);
-#define CIBFW_IMAGE_INFO_SIZE    (0x400)
-void cibfw_image_info_dump(const struct cibfw_image_info *ptr_struct, FILE* file);
-/* mfg_info */
-void cibfw_mfg_info_pack(const struct cibfw_mfg_info *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_mfg_info_unpack(struct cibfw_mfg_info *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_mfg_info_print(const struct cibfw_mfg_info *ptr_struct, FILE* file, int indent_level);
-int cibfw_mfg_info_size(void);
-#define CIBFW_MFG_INFO_SIZE    (0x140)
-void cibfw_mfg_info_dump(const struct cibfw_mfg_info *ptr_struct, FILE* file);
-/* device_info */
-void cibfw_device_info_pack(const struct cibfw_device_info *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_device_info_unpack(struct cibfw_device_info *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_device_info_print(const struct cibfw_device_info *ptr_struct, FILE* file, int indent_level);
-int cibfw_device_info_size(void);
-#define CIBFW_DEVICE_INFO_SIZE    (0x200)
-void cibfw_device_info_dump(const struct cibfw_device_info *ptr_struct, FILE* file);
-/* register_mfrl */
-void cibfw_register_mfrl_pack(const struct cibfw_register_mfrl *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_register_mfrl_unpack(struct cibfw_register_mfrl *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_register_mfrl_print(const struct cibfw_register_mfrl *ptr_struct, FILE* file, int indent_level);
-int cibfw_register_mfrl_size(void);
-#define CIBFW_REGISTER_MFRL_SIZE    (0x10)
-void cibfw_register_mfrl_dump(const struct cibfw_register_mfrl *ptr_struct, FILE* file);
-/* itoc_header */
-void cibfw_itoc_header_pack(const struct cibfw_itoc_header *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_itoc_header_unpack(struct cibfw_itoc_header *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_itoc_header_print(const struct cibfw_itoc_header *ptr_struct, FILE* file, int indent_level);
-int cibfw_itoc_header_size(void);
-#define CIBFW_ITOC_HEADER_SIZE    (0x20)
-void cibfw_itoc_header_dump(const struct cibfw_itoc_header *ptr_struct, FILE* file);
-/* itoc_entry */
-void cibfw_itoc_entry_pack(const struct cibfw_itoc_entry *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_itoc_entry_unpack(struct cibfw_itoc_entry *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_itoc_entry_print(const struct cibfw_itoc_entry *ptr_struct, FILE* file, int indent_level);
-int cibfw_itoc_entry_size(void);
-#define CIBFW_ITOC_ENTRY_SIZE    (0x20)
-void cibfw_itoc_entry_dump(const struct cibfw_itoc_entry *ptr_struct, FILE* file);
-/* register_mfai */
-void cibfw_register_mfai_pack(const struct cibfw_register_mfai *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_register_mfai_unpack(struct cibfw_register_mfai *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_register_mfai_print(const struct cibfw_register_mfai *ptr_struct, FILE* file, int indent_level);
-int cibfw_register_mfai_size(void);
-#define CIBFW_REGISTER_MFAI_SIZE    (0x10)
-void cibfw_register_mfai_dump(const struct cibfw_register_mfai *ptr_struct, FILE* file);
-/* cibfw_Nodes */
-void cibfw_cibfw_Nodes_pack(const union cibfw_cibfw_Nodes *ptr_struct, u_int8_t* ptr_buff);
-void cibfw_cibfw_Nodes_unpack(union cibfw_cibfw_Nodes *ptr_struct, const u_int8_t* ptr_buff);
-void cibfw_cibfw_Nodes_print(const union cibfw_cibfw_Nodes *ptr_struct, FILE* file, int indent_level);
-int cibfw_cibfw_Nodes_size(void);
-#define CIBFW_CIBFW_NODES_SIZE    (0x400)
-void cibfw_cibfw_Nodes_dump(const union cibfw_cibfw_Nodes *ptr_struct, FILE* file);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // CIBFW_LAYOUTS_H
diff --git a/tools_layouts/connectib_layouts.c b/tools_layouts/connectib_layouts.c
deleted file mode 100644 (file)
index 9b72bb4..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include "connectib_layouts.h"
-
-void connectib_FW_VERSION_pack(const struct connectib_FW_VERSION *ptr_struct, u_int8_t* ptr_buff){
-    u_int32_t offset;
-    int i=0;
-    (void)offset;
-    (void)i;
-    (void)ptr_struct;
-    (void)ptr_buff;
-
-    offset=0;
-    adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->MAJOR);
-
-    offset=48;
-    adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->SUBMINOR);
-
-    offset=32;
-    adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->MINOR);
-
-    offset=80;
-    adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Hour);
-
-    offset=72;
-    adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Minutes);
-
-    offset=64;
-    adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Seconds);
-
-    offset=120;
-    adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Day);
-
-    offset=112;
-    adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Month);
-
-    offset=96;
-    adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->Year);
-
-}
-
-void connectib_FW_VERSION_unpack(struct connectib_FW_VERSION *ptr_struct, const u_int8_t* ptr_buff){
-    u_int32_t offset;
-    int i=0;
-    u_int8_t val=0;
-    (void)val;
-    (void)offset;
-    (void)i;
-    (void)ptr_struct;
-    (void)ptr_buff;
-
-    offset=0;
-    ptr_struct->MAJOR = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-    offset=48;
-    ptr_struct->SUBMINOR = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-    offset=32;
-    ptr_struct->MINOR = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-    offset=80;
-    ptr_struct->Hour = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-    offset=72;
-    ptr_struct->Minutes = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-    offset=64;
-    ptr_struct->Seconds = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-    offset=120;
-    ptr_struct->Day = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-    offset=112;
-    ptr_struct->Month = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-    offset=96;
-    ptr_struct->Year = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-}
-
-void connectib_FW_VERSION_print(const struct connectib_FW_VERSION *ptr_struct, FILE* file, int indent_level){
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "======== connectib_FW_VERSION ========\n");
-    int i=0;
-    (void)i;(void)ptr_struct;
-    (void)file;
-    (void)indent_level;
-
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "MAJOR                : "UH_FMT"\n", ptr_struct->MAJOR);
-
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "SUBMINOR             : "UH_FMT"\n", ptr_struct->SUBMINOR);
-
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "MINOR                : "UH_FMT"\n", ptr_struct->MINOR);
-
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "Hour                 : "UH_FMT"\n", ptr_struct->Hour);
-
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "Minutes              : "UH_FMT"\n", ptr_struct->Minutes);
-
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "Seconds              : "UH_FMT"\n", ptr_struct->Seconds);
-
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "Day                  : "UH_FMT"\n", ptr_struct->Day);
-
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "Month                : "UH_FMT"\n", ptr_struct->Month);
-
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "Year                 : "UH_FMT"\n", ptr_struct->Year);
-
-}
-
-int connectib_FW_VERSION_size(void){
-     return 16;
-}
-
-void connectib_FW_VERSION_dump(const struct connectib_FW_VERSION *ptr_struct, FILE* file) {
-    connectib_FW_VERSION_print(ptr_struct, file, 0);
-}
-
-void connectib_icmd_get_fw_info_pack(const struct connectib_icmd_get_fw_info *ptr_struct, u_int8_t* ptr_buff){
-    u_int32_t offset;
-    int i=0;
-    (void)offset;
-    (void)i;
-    (void)ptr_struct;
-    (void)ptr_buff;
-
-    offset=0;
-    connectib_FW_VERSION_pack(&(ptr_struct->fw_version), ptr_buff + offset/8);
-
-    offset=144;
-    adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->hash_signature);
-
-}
-
-void connectib_icmd_get_fw_info_unpack(struct connectib_icmd_get_fw_info *ptr_struct, const u_int8_t* ptr_buff){
-    u_int32_t offset;
-    int i=0;
-    u_int8_t val=0;
-    (void)val;
-    (void)offset;
-    (void)i;
-    (void)ptr_struct;
-    (void)ptr_buff;
-
-    offset=0;
-    connectib_FW_VERSION_unpack(&(ptr_struct->fw_version), ptr_buff + offset/8);
-
-    offset=144;
-    ptr_struct->hash_signature = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-}
-
-void connectib_icmd_get_fw_info_print(const struct connectib_icmd_get_fw_info *ptr_struct, FILE* file, int indent_level){
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "======== connectib_icmd_get_fw_info ========\n");
-    int i=0;
-    (void)i;(void)ptr_struct;
-    (void)file;
-    (void)indent_level;
-
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "fw_version:\n");
-    connectib_FW_VERSION_print(&(ptr_struct->fw_version), file, indent_level + 1);
-
-    adb2c_add_indentation(file, indent_level);
-    fprintf(file, "hash_signature       : "UH_FMT"\n", ptr_struct->hash_signature);
-
-}
-
-int connectib_icmd_get_fw_info_size(void){
-     return 32;
-}
-
-void connectib_icmd_get_fw_info_dump(const struct connectib_icmd_get_fw_info *ptr_struct, FILE* file) {
-    connectib_icmd_get_fw_info_print(ptr_struct, file, 0);
-}
-
diff --git a/tools_layouts/connectib_layouts.h b/tools_layouts/connectib_layouts.h
deleted file mode 100644 (file)
index 3681455..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef CONNECTIB_LAYOUTS_H
-#define CONNECTIB_LAYOUTS_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "adb_to_c_utils.h"
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct connectib_FW_VERSION {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-    /* Description -  */
-    /* 0.16 - 4.31 */
-     u_int16_t MAJOR;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-    /* Description -  */
-    /* 4.0 - 4.15 */
-     u_int16_t SUBMINOR;
-    /* Description -  */
-    /* 4.16 - 8.31 */
-     u_int16_t MINOR;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-    /* Description -  */
-    /* 8.8 - 8.15 */
-     u_int8_t Hour;
-    /* Description -  */
-    /* 8.16 - 8.23 */
-     u_int8_t Minutes;
-    /* Description -  */
-    /* 8.24 - 12.31 */
-     u_int8_t Seconds;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-    /* Description -  */
-    /* 12.0 - 12.7 */
-     u_int8_t Day;
-    /* Description -  */
-    /* 12.8 - 12.15 */
-     u_int8_t Month;
-    /* Description -  */
-    /* 12.16 - 16.31 */
-     u_int16_t Year;
-};
-
-/* Description -   */
-/* Size in bytes - 32 */
-struct connectib_icmd_get_fw_info {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-    /* Description -  */
-    /* 0.0 - 16.31 */
-     struct connectib_FW_VERSION fw_version;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-    /* Description - Hash gen file signature */
-    /* 16.0 - 16.15 */
-     u_int16_t hash_signature;
-};
-
-/* FW_VERSION */
-void connectib_FW_VERSION_pack(const struct connectib_FW_VERSION *ptr_struct, u_int8_t* ptr_buff);
-void connectib_FW_VERSION_unpack(struct connectib_FW_VERSION *ptr_struct, const u_int8_t* ptr_buff);
-void connectib_FW_VERSION_print(const struct connectib_FW_VERSION *ptr_struct, FILE* file, int indent_level);
-int connectib_FW_VERSION_size(void);
-#define CONNECTIB_FW_VERSION_SIZE    (0x10)
-/* icmd_get_fw_info */
-void connectib_icmd_get_fw_info_pack(const struct connectib_icmd_get_fw_info *ptr_struct, u_int8_t* ptr_buff);
-void connectib_icmd_get_fw_info_unpack(struct connectib_icmd_get_fw_info *ptr_struct, const u_int8_t* ptr_buff);
-void connectib_icmd_get_fw_info_print(const struct connectib_icmd_get_fw_info *ptr_struct, FILE* file, int indent_level);
-int connectib_icmd_get_fw_info_size(void);
-#define CONNECTIB_ICMD_GET_FW_INFO_SIZE    (0x20)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // CONNECTIB_LAYOUTS_H
diff --git a/tools_layouts/cx4fw_layouts.c b/tools_layouts/cx4fw_layouts.c
deleted file mode 100644 (file)
index 2eeb44d..0000000
+++ /dev/null
@@ -1,552 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/***
- *** This file was generated at "2015-04-20 13:45:40"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/connectx4/connectx4.adb --file-prefix cx4fw --prefix cx4fw_
- ***/
-#include "cx4fw_layouts.h"
-
-void cx4fw_uint64_pack(const struct cx4fw_uint64 *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->hi);
-
-       offset=32;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->lo);
-
-}
-
-void cx4fw_uint64_unpack(struct cx4fw_uint64 *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       ptr_struct->hi = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=32;
-       ptr_struct->lo = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void cx4fw_uint64_print(const struct cx4fw_uint64 *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cx4fw_uint64 ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "hi                   : "U32H_FMT"\n", ptr_struct->hi);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lo                   : "U32H_FMT"\n", ptr_struct->lo);
-
-}
-
-int cx4fw_uint64_size(void){
-        return 8;
-}
-
-void cx4fw_uint64_dump(const struct cx4fw_uint64 *ptr_struct, FILE* file) {
-       cx4fw_uint64_print(ptr_struct, file, 0);
-}
-
-void cx4fw_uid_entry_pack(const struct cx4fw_uid_entry *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->num_allocated);
-
-       offset=16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->step);
-
-       offset=64;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 8, ptr_struct->uid);
-
-}
-
-void cx4fw_uid_entry_unpack(struct cx4fw_uid_entry *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       ptr_struct->num_allocated = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=16;
-       ptr_struct->step = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=64;
-       ptr_struct->uid = adb2c_pop_integer_from_buff(ptr_buff, offset, 8);
-
-}
-
-void cx4fw_uid_entry_print(const struct cx4fw_uid_entry *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cx4fw_uid_entry ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_allocated        : "UH_FMT"\n", ptr_struct->num_allocated);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "step                 : "UH_FMT"\n", ptr_struct->step);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "uid                  : "U64H_FMT"\n", ptr_struct->uid);
-
-}
-
-int cx4fw_uid_entry_size(void){
-        return 16;
-}
-
-void cx4fw_uid_entry_dump(const struct cx4fw_uid_entry *ptr_struct, FILE* file) {
-       cx4fw_uid_entry_print(ptr_struct, file, 0);
-}
-
-void cx4fw_guids_pack(const struct cx4fw_guids *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       cx4fw_uid_entry_pack(&(ptr_struct->guids), ptr_buff + offset/8);
-
-       offset=128;
-       cx4fw_uid_entry_pack(&(ptr_struct->macs), ptr_buff + offset/8);
-
-}
-
-void cx4fw_guids_unpack(struct cx4fw_guids *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       cx4fw_uid_entry_unpack(&(ptr_struct->guids), ptr_buff + offset/8);
-
-       offset=128;
-       cx4fw_uid_entry_unpack(&(ptr_struct->macs), ptr_buff + offset/8);
-
-}
-
-void cx4fw_guids_print(const struct cx4fw_guids *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cx4fw_guids ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "guids:\n");
-       cx4fw_uid_entry_print(&(ptr_struct->guids), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "macs:\n");
-       cx4fw_uid_entry_print(&(ptr_struct->macs), file, indent_level + 1);
-
-}
-
-int cx4fw_guids_size(void){
-        return 64;
-}
-
-void cx4fw_guids_dump(const struct cx4fw_guids *ptr_struct, FILE* file) {
-       cx4fw_guids_print(ptr_struct, file, 0);
-}
-
-void cx4fw_operation_key_pack(const struct cx4fw_operation_key *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->key_modifier);
-
-       offset=64;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 8, ptr_struct->key);
-
-}
-
-void cx4fw_operation_key_unpack(struct cx4fw_operation_key *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=16;
-       ptr_struct->key_modifier = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=64;
-       ptr_struct->key = adb2c_pop_integer_from_buff(ptr_buff, offset, 8);
-
-}
-
-void cx4fw_operation_key_print(const struct cx4fw_operation_key *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cx4fw_operation_key ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "key_modifier         : "UH_FMT"\n", ptr_struct->key_modifier);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "key                  : "U64H_FMT"\n", ptr_struct->key);
-
-}
-
-int cx4fw_operation_key_size(void){
-        return 16;
-}
-
-void cx4fw_operation_key_dump(const struct cx4fw_operation_key *ptr_struct, FILE* file) {
-       cx4fw_operation_key_print(ptr_struct, file, 0);
-}
-
-void cx4fw_mfg_info_pack(const struct cx4fw_mfg_info *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       for (i=0; i < 16; i++) {
-       offset=adb2c_calc_array_field_address(24, 8, i, 2560, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->psid[i]);
-       }
-
-       offset=255;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->guids_override_en);
-
-       offset=232;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->minor_version);
-
-       offset=224;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->major_version);
-
-       offset=256;
-       cx4fw_guids_pack(&(ptr_struct->guids), ptr_buff + offset/8);
-
-}
-
-void cx4fw_mfg_info_unpack(struct cx4fw_mfg_info *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       for (i=0; i < 16; i++) {
-       offset=adb2c_calc_array_field_address(24, 8, i, 2560, 1);
-       ptr_struct->psid[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->psid[16] = '\0';
-       offset=255;
-       ptr_struct->guids_override_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=232;
-       ptr_struct->minor_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=224;
-       ptr_struct->major_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=256;
-       cx4fw_guids_unpack(&(ptr_struct->guids), ptr_buff + offset/8);
-
-}
-
-void cx4fw_mfg_info_print(const struct cx4fw_mfg_info *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cx4fw_mfg_info ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       fprintf(file, "psid                 : \"%s\"\n", ptr_struct->psid);
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "guids_override_en    : "UH_FMT"\n", ptr_struct->guids_override_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "minor_version        : "UH_FMT"\n", ptr_struct->minor_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "major_version        : "UH_FMT"\n", ptr_struct->major_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "guids:\n");
-       cx4fw_guids_print(&(ptr_struct->guids), file, indent_level + 1);
-
-}
-
-int cx4fw_mfg_info_size(void){
-        return 320;
-}
-
-void cx4fw_mfg_info_dump(const struct cx4fw_mfg_info *ptr_struct, FILE* file) {
-       cx4fw_mfg_info_print(ptr_struct, file, 0);
-}
-
-void cx4fw_device_info_pack(const struct cx4fw_device_info *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature0);
-
-       offset=32;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature1);
-
-       offset=64;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature2);
-
-       offset=96;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature3);
-
-       offset=152;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->minor_version);
-
-       offset=143;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 9, (u_int32_t)ptr_struct->major_version);
-
-       offset=256;
-       cx4fw_guids_pack(&(ptr_struct->guids), ptr_buff + offset/8);
-
-       offset=880;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->vsd_vendor_id);
-
-       for (i=0; i < 208; i++) {
-       offset=adb2c_calc_array_field_address(920, 8, i, 4096, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->vsd[i]);
-       }
-
-       for (i=0; i < 4; i++) {
-       offset=adb2c_calc_array_field_address(2816, 128, i, 4096, 1);
-       cx4fw_operation_key_pack(&(ptr_struct->keys[i]), ptr_buff + offset/8);
-       }
-
-}
-
-void cx4fw_device_info_unpack(struct cx4fw_device_info *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       ptr_struct->signature0 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=32;
-       ptr_struct->signature1 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=64;
-       ptr_struct->signature2 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=96;
-       ptr_struct->signature3 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=152;
-       ptr_struct->minor_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=143;
-       ptr_struct->major_version = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 9);
-
-       offset=256;
-       cx4fw_guids_unpack(&(ptr_struct->guids), ptr_buff + offset/8);
-
-       offset=880;
-       ptr_struct->vsd_vendor_id = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       for (i=0; i < 208; i++) {
-       offset=adb2c_calc_array_field_address(920, 8, i, 4096, 1);
-       ptr_struct->vsd[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->vsd[208] = '\0';
-       for (i=0; i < 4; i++) {
-       offset=adb2c_calc_array_field_address(2816, 128, i, 4096, 1);
-       cx4fw_operation_key_unpack(&(ptr_struct->keys[i]), ptr_buff + offset/8);
-       }
-
-}
-
-void cx4fw_device_info_print(const struct cx4fw_device_info *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cx4fw_device_info ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature0           : "U32H_FMT"\n", ptr_struct->signature0);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature1           : "U32H_FMT"\n", ptr_struct->signature1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature2           : "U32H_FMT"\n", ptr_struct->signature2);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature3           : "U32H_FMT"\n", ptr_struct->signature3);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "minor_version        : "UH_FMT"\n", ptr_struct->minor_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "major_version        : "UH_FMT"\n", ptr_struct->major_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "guids:\n");
-       cx4fw_guids_print(&(ptr_struct->guids), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "vsd_vendor_id        : "UH_FMT"\n", ptr_struct->vsd_vendor_id);
-
-       fprintf(file, "vsd                  : \"%s\"\n", ptr_struct->vsd);
-       for (i=0; i < 4; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "keys_%03d:\n", i);
-       cx4fw_operation_key_print(&(ptr_struct->keys[i]), file, indent_level + 1);
-       }
-
-}
-
-int cx4fw_device_info_size(void){
-        return 512;
-}
-
-void cx4fw_device_info_dump(const struct cx4fw_device_info *ptr_struct, FILE* file) {
-       cx4fw_device_info_print(ptr_struct, file, 0);
-}
-
-void cx4fw_cx4fw_Nodes_pack(const union cx4fw_cx4fw_Nodes *ptr_struct, u_int8_t* ptr_buff)
-{
-       cx4fw_guids_pack(&(ptr_struct->guids), ptr_buff);
-}
-
-void cx4fw_cx4fw_Nodes_unpack(union cx4fw_cx4fw_Nodes *ptr_struct, const u_int8_t* ptr_buff)
-{
-       cx4fw_guids_unpack(&(ptr_struct->guids), ptr_buff);
-}
-
-void cx4fw_cx4fw_Nodes_print(const union cx4fw_cx4fw_Nodes *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== cx4fw_cx4fw_Nodes ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "device_info:\n");
-       cx4fw_device_info_print(&(ptr_struct->device_info), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mfg_info:\n");
-       cx4fw_mfg_info_print(&(ptr_struct->mfg_info), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "guids:\n");
-       cx4fw_guids_print(&(ptr_struct->guids), file, indent_level + 1);
-
-}
-
-int cx4fw_cx4fw_Nodes_size(void){
-        return 512;
-}
-
-void cx4fw_cx4fw_Nodes_dump(const union cx4fw_cx4fw_Nodes *ptr_struct, FILE* file) {
-       cx4fw_cx4fw_Nodes_print(ptr_struct, file, 0);
-}
-
diff --git a/tools_layouts/cx4fw_layouts.h b/tools_layouts/cx4fw_layouts.h
deleted file mode 100644 (file)
index c458f7a..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/***
- *** This file was generated at "2015-04-20 13:45:40"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/connectx4/connectx4.adb --file-prefix cx4fw --prefix cx4fw_
- ***/
-#ifndef CX4FW_LAYOUTS_H
-#define CX4FW_LAYOUTS_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "adb_to_c_utils.h"/* Description -   */
-/* Size in bytes - 8 */
-struct cx4fw_uint64 {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        u_int32_t hi;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 8.31 */
-        u_int32_t lo;
-};
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct cx4fw_uid_entry {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Number of allocated UIDs in this entry */
-       /* 0.0 - 0.7 */
-        u_int8_t num_allocated;
-       /* Description - Step size by which to derive the UIDs for this entry
-See struct description */
-       /* 0.8 - 0.15 */
-        u_int8_t step;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - For MACs, the upper 16 bits in the 'hi' dword are reserved */
-       /* 8.0 - 16.31 */
-        u_int64_t uid;
-};
-
-/* Description -   */
-/* Size in bytes - 64 */
-struct cx4fw_guids {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - UIDs (MACs and GUIDs) Allocation Entry.
-guids, is used for system GUID, node GUID and port GUID of port 0. ;/Multiple UIDs can be assigned to a single port, to be used for multiple virtual guests, multi host and managment */
-       /* 0.0 - 16.31 */
-        struct cx4fw_uid_entry guids;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description -  */
-       /* 16.0 - 32.31 */
-        struct cx4fw_uid_entry macs;
-};
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct cx4fw_operation_key {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.15 */
-        u_int16_t key_modifier;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description -  */
-       /* 8.0 - 16.31 */
-        u_int64_t key;
-};
-
-/* Description -   */
-/* Size in bytes - 320 */
-struct cx4fw_mfg_info {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.24 - 16.23 */
-        char psid[17];
-/*---------------- DWORD[7] (Offset 0x1c) ----------------*/
-       /* Description - When this bit is set, the GUIDs should be taken from the device_info node.
-When this bit is cleared, the GUIDs should be taken from the mfg_info node. */
-       /* 28.0 - 28.0 */
-        u_int8_t guids_override_en;
-       /* Description - MFG_INFO section minor version */
-       /* 28.16 - 28.23 */
-        u_int8_t minor_version;
-       /* Description - MFG_INFO section major version */
-       /* 28.24 - 32.31 */
-        u_int8_t major_version;
-/*---------------- DWORD[8] (Offset 0x20) ----------------*/
-       /* Description -  */
-       /* 32.0 - 96.31 */
-        struct cx4fw_guids guids;
-};
-
-/* Description -   */
-/* Size in bytes - 512 */
-struct cx4fw_device_info {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        u_int32_t signature0;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 8.31 */
-        u_int32_t signature1;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description -  */
-       /* 8.0 - 12.31 */
-        u_int32_t signature2;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description -  */
-       /* 12.0 - 16.31 */
-        u_int32_t signature3;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description - Format version for this struct */
-       /* 16.0 - 16.7 */
-        u_int8_t minor_version;
-       /* Description - Format version for this struct */
-       /* 16.8 - 16.16 */
-        u_int16_t major_version;
-/*---------------- DWORD[8] (Offset 0x20) ----------------*/
-       /* Description -  */
-       /* 32.0 - 96.31 */
-        struct cx4fw_guids guids;
-/*---------------- DWORD[27] (Offset 0x6c) ----------------*/
-       /* Description -  */
-       /* 108.0 - 108.15 */
-        u_int16_t vsd_vendor_id;
-/*---------------- DWORD[28] (Offset 0x70) ----------------*/
-       /* Description -  */
-       /* 112.24 - 320.23 */
-        char vsd[209];
-/*---------------- DWORD[88] (Offset 0x160) ----------------*/
-       /* Description -  */
-       /* 352.0 - 416.31 */
-        struct cx4fw_operation_key keys[4];
-};
-
-/* Description -   */
-/* Size in bytes - 512 */
-union cx4fw_cx4fw_Nodes {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 512.31 */
-        struct cx4fw_device_info device_info;
-       /* Description -  */
-       /* 0.0 - 320.31 */
-        struct cx4fw_mfg_info mfg_info;
-       /* Description -  */
-       /* 0.0 - 64.31 */
-        struct cx4fw_guids guids;
-};
-
-
-/*================= PACK/UNPACK/PRINT FUNCTIONS ======================*/
-/* uint64 */
-void cx4fw_uint64_pack(const struct cx4fw_uint64 *ptr_struct, u_int8_t* ptr_buff);
-void cx4fw_uint64_unpack(struct cx4fw_uint64 *ptr_struct, const u_int8_t* ptr_buff);
-void cx4fw_uint64_print(const struct cx4fw_uint64 *ptr_struct, FILE* file, int indent_level);
-int cx4fw_uint64_size(void);
-#define CX4FW_UINT64_SIZE    (0x8)
-void cx4fw_uint64_dump(const struct cx4fw_uint64 *ptr_struct, FILE* file);
-/* uid_entry */
-void cx4fw_uid_entry_pack(const struct cx4fw_uid_entry *ptr_struct, u_int8_t* ptr_buff);
-void cx4fw_uid_entry_unpack(struct cx4fw_uid_entry *ptr_struct, const u_int8_t* ptr_buff);
-void cx4fw_uid_entry_print(const struct cx4fw_uid_entry *ptr_struct, FILE* file, int indent_level);
-int cx4fw_uid_entry_size(void);
-#define CX4FW_UID_ENTRY_SIZE    (0x10)
-void cx4fw_uid_entry_dump(const struct cx4fw_uid_entry *ptr_struct, FILE* file);
-/* guids */
-void cx4fw_guids_pack(const struct cx4fw_guids *ptr_struct, u_int8_t* ptr_buff);
-void cx4fw_guids_unpack(struct cx4fw_guids *ptr_struct, const u_int8_t* ptr_buff);
-void cx4fw_guids_print(const struct cx4fw_guids *ptr_struct, FILE* file, int indent_level);
-int cx4fw_guids_size(void);
-#define CX4FW_GUIDS_SIZE    (0x40)
-void cx4fw_guids_dump(const struct cx4fw_guids *ptr_struct, FILE* file);
-/* operation_key */
-void cx4fw_operation_key_pack(const struct cx4fw_operation_key *ptr_struct, u_int8_t* ptr_buff);
-void cx4fw_operation_key_unpack(struct cx4fw_operation_key *ptr_struct, const u_int8_t* ptr_buff);
-void cx4fw_operation_key_print(const struct cx4fw_operation_key *ptr_struct, FILE* file, int indent_level);
-int cx4fw_operation_key_size(void);
-#define CX4FW_OPERATION_KEY_SIZE    (0x10)
-void cx4fw_operation_key_dump(const struct cx4fw_operation_key *ptr_struct, FILE* file);
-/* mfg_info */
-void cx4fw_mfg_info_pack(const struct cx4fw_mfg_info *ptr_struct, u_int8_t* ptr_buff);
-void cx4fw_mfg_info_unpack(struct cx4fw_mfg_info *ptr_struct, const u_int8_t* ptr_buff);
-void cx4fw_mfg_info_print(const struct cx4fw_mfg_info *ptr_struct, FILE* file, int indent_level);
-int cx4fw_mfg_info_size(void);
-#define CX4FW_MFG_INFO_SIZE    (0x140)
-void cx4fw_mfg_info_dump(const struct cx4fw_mfg_info *ptr_struct, FILE* file);
-/* device_info */
-void cx4fw_device_info_pack(const struct cx4fw_device_info *ptr_struct, u_int8_t* ptr_buff);
-void cx4fw_device_info_unpack(struct cx4fw_device_info *ptr_struct, const u_int8_t* ptr_buff);
-void cx4fw_device_info_print(const struct cx4fw_device_info *ptr_struct, FILE* file, int indent_level);
-int cx4fw_device_info_size(void);
-#define CX4FW_DEVICE_INFO_SIZE    (0x200)
-void cx4fw_device_info_dump(const struct cx4fw_device_info *ptr_struct, FILE* file);
-/* cx4fw_Nodes */
-void cx4fw_cx4fw_Nodes_pack(const union cx4fw_cx4fw_Nodes *ptr_struct, u_int8_t* ptr_buff);
-void cx4fw_cx4fw_Nodes_unpack(union cx4fw_cx4fw_Nodes *ptr_struct, const u_int8_t* ptr_buff);
-void cx4fw_cx4fw_Nodes_print(const union cx4fw_cx4fw_Nodes *ptr_struct, FILE* file, int indent_level);
-int cx4fw_cx4fw_Nodes_size(void);
-#define CX4FW_CX4FW_NODES_SIZE    (0x200)
-void cx4fw_cx4fw_Nodes_dump(const union cx4fw_cx4fw_Nodes *ptr_struct, FILE* file);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // CX4FW_LAYOUTS_H
diff --git a/tools_layouts/register_access_open_layouts.c b/tools_layouts/register_access_open_layouts.c
deleted file mode 100644 (file)
index c6d2e8f..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/***
- *** This file was generated at "2016-05-02 14:45:27"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access_open/register_access_open.adb --file-prefix register_access_open --prefix register_access_
- ***/
-#include "register_access_open_layouts.h"
-
-void register_access_mfba_pack(const struct register_access_mfba *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 26;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->fs);
-
-       offset = 23;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->p);
-
-       offset = 55;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 9, (u_int32_t)ptr_struct->size);
-
-       offset = 72;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 24, (u_int32_t)ptr_struct->address);
-
-       for (i = 0; i < 64; i++) {
-       offset = adb2c_calc_array_field_address(96, 32, i, 2144, 0);
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->data[i]);
-       }
-
-}
-
-void register_access_mfba_unpack(struct register_access_mfba *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 26;
-       ptr_struct->fs = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 23;
-       ptr_struct->p = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 55;
-       ptr_struct->size = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 9);
-
-       offset = 72;
-       ptr_struct->address = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 24);
-
-       for (i = 0; i < 64; i++) {
-       offset = adb2c_calc_array_field_address(96, 32, i, 2144, 0);
-       ptr_struct->data[i] = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-       }
-
-}
-
-void register_access_mfba_print(const struct register_access_mfba *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== register_access_mfba ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fs                   : "UH_FMT"\n", ptr_struct->fs);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "p                    : "UH_FMT"\n", ptr_struct->p);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "size                 : "UH_FMT"\n", ptr_struct->size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "address              : "UH_FMT"\n", ptr_struct->address);
-
-       for (i = 0; i < 64; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "data_%03d            : "U32H_FMT"\n", i, ptr_struct->data[i]);
-       }
-
-}
-
-int register_access_mfba_size(void)
-{
-        return 268;
-}
-
-void register_access_mfba_dump(const struct register_access_mfba *ptr_struct, FILE* file)
-{
-       register_access_mfba_print(ptr_struct, file, 0);
-}
-
-void register_access_mfpa_pack(const struct register_access_mfpa *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 26;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->fs);
-
-       offset = 23;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->p);
-
-       offset = 40;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 24, (u_int32_t)ptr_struct->boot_address);
-
-       offset = 156;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->flash_num);
-
-       offset = 130;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->bulk_64kb_erase_en);
-
-       offset = 129;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->bulk_32kb_erase_en);
-
-       offset = 168;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 24, (u_int32_t)ptr_struct->jedec_id);
-
-       offset = 214;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 10, (u_int32_t)ptr_struct->sector_size);
-
-       offset = 200;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->block_allignment);
-
-       offset = 224;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->capability_mask);
-
-}
-
-void register_access_mfpa_unpack(struct register_access_mfpa *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 26;
-       ptr_struct->fs = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 23;
-       ptr_struct->p = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 40;
-       ptr_struct->boot_address = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 24);
-
-       offset = 156;
-       ptr_struct->flash_num = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 130;
-       ptr_struct->bulk_64kb_erase_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 129;
-       ptr_struct->bulk_32kb_erase_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 168;
-       ptr_struct->jedec_id = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 24);
-
-       offset = 214;
-       ptr_struct->sector_size = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 10);
-
-       offset = 200;
-       ptr_struct->block_allignment = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 224;
-       ptr_struct->capability_mask = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void register_access_mfpa_print(const struct register_access_mfpa *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== register_access_mfpa ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fs                   : "UH_FMT"\n", ptr_struct->fs);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "p                    : "UH_FMT"\n", ptr_struct->p);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_address         : "UH_FMT"\n", ptr_struct->boot_address);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "flash_num            : "UH_FMT"\n", ptr_struct->flash_num);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "bulk_64kb_erase_en   : "UH_FMT"\n", ptr_struct->bulk_64kb_erase_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "bulk_32kb_erase_en   : "UH_FMT"\n", ptr_struct->bulk_32kb_erase_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "jedec_id             : "UH_FMT"\n", ptr_struct->jedec_id);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "sector_size          : "UH_FMT"\n", ptr_struct->sector_size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "block_allignment     : "UH_FMT"\n", ptr_struct->block_allignment);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "capability_mask      : "U32H_FMT"\n", ptr_struct->capability_mask);
-
-}
-
-int register_access_mfpa_size(void)
-{
-        return 32;
-}
-
-void register_access_mfpa_dump(const struct register_access_mfpa *ptr_struct, FILE* file)
-{
-       register_access_mfpa_print(ptr_struct, file, 0);
-}
-
-void register_access_mfbe_pack(const struct register_access_mfbe *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 26;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->fs);
-
-       offset = 23;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->p);
-
-       offset = 2;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->bulk_64kb_erase);
-
-       offset = 1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->bulk_32kb_erase);
-
-       offset = 72;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 24, (u_int32_t)ptr_struct->address);
-
-}
-
-void register_access_mfbe_unpack(struct register_access_mfbe *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 26;
-       ptr_struct->fs = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 23;
-       ptr_struct->p = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 2;
-       ptr_struct->bulk_64kb_erase = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 1;
-       ptr_struct->bulk_32kb_erase = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 72;
-       ptr_struct->address = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 24);
-
-}
-
-void register_access_mfbe_print(const struct register_access_mfbe *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== register_access_mfbe ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fs                   : "UH_FMT"\n", ptr_struct->fs);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "p                    : "UH_FMT"\n", ptr_struct->p);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "bulk_64kb_erase      : "UH_FMT"\n", ptr_struct->bulk_64kb_erase);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "bulk_32kb_erase      : "UH_FMT"\n", ptr_struct->bulk_32kb_erase);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "address              : "UH_FMT"\n", ptr_struct->address);
-
-}
-
-int register_access_mfbe_size(void)
-{
-        return 12;
-}
-
-void register_access_mfbe_dump(const struct register_access_mfbe *ptr_struct, FILE* file)
-{
-       register_access_mfbe_print(ptr_struct, file, 0);
-}
-
-void register_access_register_access_open_Nodes_pack(const union register_access_register_access_open_Nodes *ptr_struct, u_int8_t* ptr_buff)
-{
-       register_access_mfba_pack(&(ptr_struct->mfba), ptr_buff);
-}
-
-void register_access_register_access_open_Nodes_unpack(union register_access_register_access_open_Nodes *ptr_struct, const u_int8_t* ptr_buff)
-{
-       register_access_mfba_unpack(&(ptr_struct->mfba), ptr_buff);
-}
-
-void register_access_register_access_open_Nodes_print(const union register_access_register_access_open_Nodes *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== register_access_register_access_open_Nodes ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mfbe:\n");
-       register_access_mfbe_print(&(ptr_struct->mfbe), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mfpa:\n");
-       register_access_mfpa_print(&(ptr_struct->mfpa), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mfba:\n");
-       register_access_mfba_print(&(ptr_struct->mfba), file, indent_level + 1);
-
-}
-
-int register_access_register_access_open_Nodes_size(void)
-{
-        return 268;
-}
-
-void register_access_register_access_open_Nodes_dump(const union register_access_register_access_open_Nodes *ptr_struct, FILE* file)
-{
-       register_access_register_access_open_Nodes_print(ptr_struct, file, 0);
-}
-
diff --git a/tools_layouts/register_access_open_layouts.h b/tools_layouts/register_access_open_layouts.h
deleted file mode 100644 (file)
index e455493..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-/***
- *** This file was generated at "2016-05-02 14:45:27"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access_open/register_access_open.adb --file-prefix register_access_open --prefix register_access_
- ***/
-#ifndef REGISTER_ACCESS_OPEN_LAYOUTS_H
-#define REGISTER_ACCESS_OPEN_LAYOUTS_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "adb_to_c_utils.h"/* Description -   */
-/* Size in bytes - 268 */
-struct register_access_mfba {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Flash Select */
-       /* 0.4 - 0.5 */
-        u_int8_t fs;
-       /* Description - Parallel */
-       /* 0.8 - 0.8 */
-        u_int8_t p;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - Transaction size */
-       /* 4.0 - 4.8 */
-        u_int16_t size;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - address in bytes */
-       /* 8.0 - 8.23 */
-        u_int32_t address;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description - data */
-       /* 12.0 - 268.31 */
-        u_int32_t data[64];
-};
-
-/* Description -   */
-/* Size in bytes - 32 */
-struct register_access_mfpa {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Flash Select */
-       /* 0.4 - 0.5 */
-        u_int8_t fs;
-       /* Description - Parallel */
-       /* 0.8 - 0.8 */
-        u_int8_t p;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - address in bytes */
-       /* 4.0 - 4.23 */
-        u_int32_t boot_address;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description - number of flash devices connected */
-       /* 16.0 - 16.3 */
-        u_int8_t flash_num;
-       /* Description - If set, MFBE register supports 64KB bulk erase operation. */
-       /* 16.29 - 16.29 */
-        u_int8_t bulk_64kb_erase_en;
-       /* Description - If set, MFBE register supports 32KB bulk erase operation. */
-       /* 16.30 - 16.30 */
-        u_int8_t bulk_32kb_erase_en;
-/*---------------- DWORD[5] (Offset 0x14) ----------------*/
-       /* Description - Flash JEDEC ID */
-       /* 20.0 - 20.23 */
-        u_int32_t jedec_id;
-/*---------------- DWORD[6] (Offset 0x18) ----------------*/
-       /* Description - Flash sectore size */
-       /* 24.0 - 24.9 */
-        u_int16_t sector_size;
-       /* Description -  */
-       /* 24.16 - 24.23 */
-        u_int8_t block_allignment;
-/*---------------- DWORD[7] (Offset 0x1c) ----------------*/
-       /* Description - capability mask ;bit 0:Parallel flash Support;else:Reserved  */
-       /* 28.0 - 32.31 */
-        u_int32_t capability_mask;
-};
-
-/* Description -   */
-/* Size in bytes - 12 */
-struct register_access_mfbe {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Flash Select */
-       /* 0.4 - 0.5 */
-        u_int8_t fs;
-       /* Description - Parallel */
-       /* 0.8 - 0.8 */
-        u_int8_t p;
-       /* Description - Erase a 64KB flash area in one bulk operation. */
-       /* 0.29 - 0.29 */
-        u_int8_t bulk_64kb_erase;
-       /* Description - Erase a 32KB flash area in one bulk operation. */
-       /* 0.30 - 0.30 */
-        u_int8_t bulk_32kb_erase;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - address in bytes */
-       /* 8.0 - 8.23 */
-        u_int32_t address;
-};
-
-/* Description -   */
-/* Size in bytes - 268 */
-union register_access_register_access_open_Nodes {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct register_access_mfbe mfbe;
-       /* Description -  */
-       /* 0.0 - 32.31 */
-        struct register_access_mfpa mfpa;
-       /* Description -  */
-       /* 0.0 - 268.31 */
-        struct register_access_mfba mfba;
-};
-
-
-/*================= PACK/UNPACK/PRINT FUNCTIONS ======================*/
-/* mfba */
-void register_access_mfba_pack(const struct register_access_mfba *ptr_struct, u_int8_t* ptr_buff);
-void register_access_mfba_unpack(struct register_access_mfba *ptr_struct, const u_int8_t* ptr_buff);
-void register_access_mfba_print(const struct register_access_mfba *ptr_struct, FILE* file, int indent_level);
-int register_access_mfba_size(void);
-#define REGISTER_ACCESS_MFBA_SIZE    (0x10c)
-void register_access_mfba_dump(const struct register_access_mfba *ptr_struct, FILE* file);
-/* mfpa */
-void register_access_mfpa_pack(const struct register_access_mfpa *ptr_struct, u_int8_t* ptr_buff);
-void register_access_mfpa_unpack(struct register_access_mfpa *ptr_struct, const u_int8_t* ptr_buff);
-void register_access_mfpa_print(const struct register_access_mfpa *ptr_struct, FILE* file, int indent_level);
-int register_access_mfpa_size(void);
-#define REGISTER_ACCESS_MFPA_SIZE    (0x20)
-void register_access_mfpa_dump(const struct register_access_mfpa *ptr_struct, FILE* file);
-/* mfbe */
-void register_access_mfbe_pack(const struct register_access_mfbe *ptr_struct, u_int8_t* ptr_buff);
-void register_access_mfbe_unpack(struct register_access_mfbe *ptr_struct, const u_int8_t* ptr_buff);
-void register_access_mfbe_print(const struct register_access_mfbe *ptr_struct, FILE* file, int indent_level);
-int register_access_mfbe_size(void);
-#define REGISTER_ACCESS_MFBE_SIZE    (0xc)
-void register_access_mfbe_dump(const struct register_access_mfbe *ptr_struct, FILE* file);
-/* register_access_open_Nodes */
-void register_access_register_access_open_Nodes_pack(const union register_access_register_access_open_Nodes *ptr_struct, u_int8_t* ptr_buff);
-void register_access_register_access_open_Nodes_unpack(union register_access_register_access_open_Nodes *ptr_struct, const u_int8_t* ptr_buff);
-void register_access_register_access_open_Nodes_print(const union register_access_register_access_open_Nodes *ptr_struct, FILE* file, int indent_level);
-int register_access_register_access_open_Nodes_size(void);
-#define REGISTER_ACCESS_REGISTER_ACCESS_OPEN_NODES_SIZE    (0x10c)
-void register_access_register_access_open_Nodes_dump(const union register_access_register_access_open_Nodes *ptr_struct, FILE* file);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // REGISTER_ACCESS_OPEN_LAYOUTS_H
diff --git a/tools_layouts/register_access_sib_layouts.c b/tools_layouts/register_access_sib_layouts.c
deleted file mode 100644 (file)
index 60bee42..0000000
+++ /dev/null
@@ -1,649 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/***
- *** This file was generated at "2015-06-17 12:04:46"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access/register_access_sib.adb --file-prefix register_access_sib --prefix register_access_sib_
- ***/
-#include "register_access_sib_layouts.h"
-
-void register_access_sib_IB_PSID__pack(const struct register_access_sib_IB_PSID_ *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       for (i=0; i < 4; i++) {
-       offset=adb2c_calc_array_field_address(0, 32, i, 128, 1);
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->PS_ID[i]);
-       }
-
-}
-
-void register_access_sib_IB_PSID__unpack(struct register_access_sib_IB_PSID_ *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       for (i=0; i < 4; i++) {
-       offset=adb2c_calc_array_field_address(0, 32, i, 128, 1);
-       ptr_struct->PS_ID[i] = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-       }
-
-}
-
-void register_access_sib_IB_PSID__print(const struct register_access_sib_IB_PSID_ *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== register_access_sib_IB_PSID_ ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       for (i=0; i < 4; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "PS_ID_%03d           : "U32H_FMT"\n", i, ptr_struct->PS_ID[i]);
-       }
-
-}
-
-int register_access_sib_IB_PSID__size(void){
-        return 16;
-}
-
-void register_access_sib_IB_PSID__dump(const struct register_access_sib_IB_PSID_ *ptr_struct, FILE* file) {
-       register_access_sib_IB_PSID__print(ptr_struct, file, 0);
-}
-
-void register_access_sib_IB_SWInfo__pack(const struct register_access_sib_IB_SWInfo_ *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->VerSubMinor);
-
-       offset=16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->VerMinor);
-
-       offset=8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->VerMajor);
-
-}
-
-void register_access_sib_IB_SWInfo__unpack(struct register_access_sib_IB_SWInfo_ *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       ptr_struct->VerSubMinor = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=16;
-       ptr_struct->VerMinor = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=8;
-       ptr_struct->VerMajor = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void register_access_sib_IB_SWInfo__print(const struct register_access_sib_IB_SWInfo_ *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== register_access_sib_IB_SWInfo_ ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "VerSubMinor          : "UH_FMT"\n", ptr_struct->VerSubMinor);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "VerMinor             : "UH_FMT"\n", ptr_struct->VerMinor);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "VerMajor             : "UH_FMT"\n", ptr_struct->VerMajor);
-
-}
-
-int register_access_sib_IB_SWInfo__size(void){
-        return 32;
-}
-
-void register_access_sib_IB_SWInfo__dump(const struct register_access_sib_IB_SWInfo_ *ptr_struct, FILE* file) {
-       register_access_sib_IB_SWInfo__print(ptr_struct, file, 0);
-}
-
-void register_access_sib_IB_FWInfo__pack(const struct register_access_sib_IB_FWInfo_ *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->SubMinor);
-
-       offset=16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Minor);
-
-       offset=8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Major);
-
-       offset=32;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->BuildID);
-
-       offset=80;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->Year);
-
-       offset=72;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Day);
-
-       offset=64;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->Month);
-
-       offset=112;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->Hour);
-
-       offset=128;
-       register_access_sib_IB_PSID__pack(&(ptr_struct->PSID), ptr_buff + offset/8);
-
-       offset=256;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->INIFileNum);
-
-       offset=288;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->extended_major);
-
-       offset=320;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->extended_minor);
-
-       offset=352;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->extended_subminor);
-
-}
-
-void register_access_sib_IB_FWInfo__unpack(struct register_access_sib_IB_FWInfo_ *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=24;
-       ptr_struct->SubMinor = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=16;
-       ptr_struct->Minor = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=8;
-       ptr_struct->Major = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=32;
-       ptr_struct->BuildID = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=80;
-       ptr_struct->Year = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=72;
-       ptr_struct->Day = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=64;
-       ptr_struct->Month = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset=112;
-       ptr_struct->Hour = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=128;
-       register_access_sib_IB_PSID__unpack(&(ptr_struct->PSID), ptr_buff + offset/8);
-
-       offset=256;
-       ptr_struct->INIFileNum = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=288;
-       ptr_struct->extended_major = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=320;
-       ptr_struct->extended_minor = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=352;
-       ptr_struct->extended_subminor = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void register_access_sib_IB_FWInfo__print(const struct register_access_sib_IB_FWInfo_ *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== register_access_sib_IB_FWInfo_ ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "SubMinor             : "UH_FMT"\n", ptr_struct->SubMinor);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Minor                : "UH_FMT"\n", ptr_struct->Minor);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Major                : "UH_FMT"\n", ptr_struct->Major);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "BuildID              : "U32H_FMT"\n", ptr_struct->BuildID);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Year                 : "UH_FMT"\n", ptr_struct->Year);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Day                  : "UH_FMT"\n", ptr_struct->Day);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Month                : "UH_FMT"\n", ptr_struct->Month);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "Hour                 : "UH_FMT"\n", ptr_struct->Hour);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "PSID:\n");
-       register_access_sib_IB_PSID__print(&(ptr_struct->PSID), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "INIFileNum           : "U32H_FMT"\n", ptr_struct->INIFileNum);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "extended_major       : "U32H_FMT"\n", ptr_struct->extended_major);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "extended_minor       : "U32H_FMT"\n", ptr_struct->extended_minor);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "extended_subminor    : "U32H_FMT"\n", ptr_struct->extended_subminor);
-
-}
-
-int register_access_sib_IB_FWInfo__size(void){
-        return 64;
-}
-
-void register_access_sib_IB_FWInfo__dump(const struct register_access_sib_IB_FWInfo_ *ptr_struct, FILE* file) {
-       register_access_sib_IB_FWInfo__print(ptr_struct, file, 0);
-}
-
-void register_access_sib_IB_HWInfo__pack(const struct register_access_sib_IB_HWInfo_ *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->DEVID);
-
-       offset=0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->REVID);
-
-       offset=59;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 5, (u_int32_t)ptr_struct->pvs);
-
-       offset=80;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->hw_dev_id);
-
-       offset=224;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->UpTime);
-
-}
-
-void register_access_sib_IB_HWInfo__unpack(struct register_access_sib_IB_HWInfo_ *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=16;
-       ptr_struct->DEVID = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=0;
-       ptr_struct->REVID = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=59;
-       ptr_struct->pvs = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 5);
-
-       offset=80;
-       ptr_struct->hw_dev_id = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=224;
-       ptr_struct->UpTime = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void register_access_sib_IB_HWInfo__print(const struct register_access_sib_IB_HWInfo_ *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== register_access_sib_IB_HWInfo_ ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "DEVID                : "UH_FMT"\n", ptr_struct->DEVID);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "REVID                : "UH_FMT"\n", ptr_struct->REVID);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pvs                  : "UH_FMT"\n", ptr_struct->pvs);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "hw_dev_id            : "UH_FMT"\n", ptr_struct->hw_dev_id);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "UpTime               : "U32H_FMT"\n", ptr_struct->UpTime);
-
-}
-
-int register_access_sib_IB_HWInfo__size(void){
-        return 32;
-}
-
-void register_access_sib_IB_HWInfo__dump(const struct register_access_sib_IB_HWInfo_ *ptr_struct, FILE* file) {
-       register_access_sib_IB_HWInfo__print(ptr_struct, file, 0);
-}
-
-void register_access_sib_mgir_pack(const struct register_access_sib_mgir *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       register_access_sib_IB_HWInfo__pack(&(ptr_struct->HWInfo), ptr_buff + offset/8);
-
-       offset=256;
-       register_access_sib_IB_FWInfo__pack(&(ptr_struct->FWInfo), ptr_buff + offset/8);
-
-       offset=768;
-       register_access_sib_IB_SWInfo__pack(&(ptr_struct->SWInfo), ptr_buff + offset/8);
-
-}
-
-void register_access_sib_mgir_unpack(struct register_access_sib_mgir *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=0;
-       register_access_sib_IB_HWInfo__unpack(&(ptr_struct->HWInfo), ptr_buff + offset/8);
-
-       offset=256;
-       register_access_sib_IB_FWInfo__unpack(&(ptr_struct->FWInfo), ptr_buff + offset/8);
-
-       offset=768;
-       register_access_sib_IB_SWInfo__unpack(&(ptr_struct->SWInfo), ptr_buff + offset/8);
-
-}
-
-void register_access_sib_mgir_print(const struct register_access_sib_mgir *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== register_access_sib_mgir ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "HWInfo:\n");
-       register_access_sib_IB_HWInfo__print(&(ptr_struct->HWInfo), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "FWInfo:\n");
-       register_access_sib_IB_FWInfo__print(&(ptr_struct->FWInfo), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "SWInfo:\n");
-       register_access_sib_IB_SWInfo__print(&(ptr_struct->SWInfo), file, indent_level + 1);
-
-}
-
-int register_access_sib_mgir_size(void){
-        return 128;
-}
-
-void register_access_sib_mgir_dump(const struct register_access_sib_mgir *ptr_struct, FILE* file) {
-       register_access_sib_mgir_print(ptr_struct, file, 0);
-}
-
-void register_access_sib_mtmp_pack(const struct register_access_sib_mtmp *ptr_struct, u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=25;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 7, (u_int32_t)ptr_struct->sensor_index);
-
-       offset=0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->internal_diodes_query);
-
-       offset=48;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->temperature);
-
-       offset=80;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->max_temperture);
-
-       offset=65;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->mtr);
-
-       offset=64;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->mte);
-
-       offset=112;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->temperature_threshold_hi);
-
-       offset=96;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->tee);
-
-       offset=144;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->temperature_threshold_lo);
-
-       offset=192;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->name_hi);
-
-       offset=224;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->name_lo);
-
-}
-
-void register_access_sib_mtmp_unpack(struct register_access_sib_mtmp *ptr_struct, const u_int8_t* ptr_buff){
-       u_int32_t offset;
-       int i=0;
-       u_int8_t val=0;
-       (void)val;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset=25;
-       ptr_struct->sensor_index = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 7);
-
-       offset=0;
-       ptr_struct->internal_diodes_query = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=48;
-       ptr_struct->temperature = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=80;
-       ptr_struct->max_temperture = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=65;
-       ptr_struct->mtr = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=64;
-       ptr_struct->mte = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset=112;
-       ptr_struct->temperature_threshold_hi = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=96;
-       ptr_struct->tee = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset=144;
-       ptr_struct->temperature_threshold_lo = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset=192;
-       ptr_struct->name_hi = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset=224;
-       ptr_struct->name_lo = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void register_access_sib_mtmp_print(const struct register_access_sib_mtmp *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== register_access_sib_mtmp ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "sensor_index         : "UH_FMT"\n", ptr_struct->sensor_index);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "internal_diodes_query : "UH_FMT"\n", ptr_struct->internal_diodes_query);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "temperature          : "UH_FMT"\n", ptr_struct->temperature);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_temperture       : "UH_FMT"\n", ptr_struct->max_temperture);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mtr                  : "UH_FMT"\n", ptr_struct->mtr);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mte                  : "UH_FMT"\n", ptr_struct->mte);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "temperature_threshold_hi : "UH_FMT"\n", ptr_struct->temperature_threshold_hi);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "tee                  : "UH_FMT"\n", ptr_struct->tee);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "temperature_threshold_lo : "UH_FMT"\n", ptr_struct->temperature_threshold_lo);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "name_hi              : "U32H_FMT"\n", ptr_struct->name_hi);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "name_lo              : "U32H_FMT"\n", ptr_struct->name_lo);
-
-}
-
-int register_access_sib_mtmp_size(void){
-        return 32;
-}
-
-void register_access_sib_mtmp_dump(const struct register_access_sib_mtmp *ptr_struct, FILE* file) {
-       register_access_sib_mtmp_print(ptr_struct, file, 0);
-}
-
-void register_access_sib_register_access_sib_Nodes_pack(const union register_access_sib_register_access_sib_Nodes *ptr_struct, u_int8_t* ptr_buff)
-{
-       register_access_sib_mgir_pack(&(ptr_struct->mgir), ptr_buff);
-}
-
-void register_access_sib_register_access_sib_Nodes_unpack(union register_access_sib_register_access_sib_Nodes *ptr_struct, const u_int8_t* ptr_buff)
-{
-       register_access_sib_mgir_unpack(&(ptr_struct->mgir), ptr_buff);
-}
-
-void register_access_sib_register_access_sib_Nodes_print(const union register_access_sib_register_access_sib_Nodes *ptr_struct, FILE* file, int indent_level){
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== register_access_sib_register_access_sib_Nodes ========\n");
-       int i=0;
-       (void)i;(void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mtmp:\n");
-       register_access_sib_mtmp_print(&(ptr_struct->mtmp), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mgir:\n");
-       register_access_sib_mgir_print(&(ptr_struct->mgir), file, indent_level + 1);
-
-}
-
-int register_access_sib_register_access_sib_Nodes_size(void){
-        return 128;
-}
-
-void register_access_sib_register_access_sib_Nodes_dump(const union register_access_sib_register_access_sib_Nodes *ptr_struct, FILE* file) {
-       register_access_sib_register_access_sib_Nodes_print(ptr_struct, file, 0);
-}
-
diff --git a/tools_layouts/register_access_sib_layouts.h b/tools_layouts/register_access_sib_layouts.h
deleted file mode 100644 (file)
index 6ca28b8..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/***
- *** This file was generated at "2015-06-17 12:04:46"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access/register_access_sib.adb --file-prefix register_access_sib --prefix register_access_sib_
- ***/
-#ifndef REGISTER_ACCESS_SIB_LAYOUTS_H
-#define REGISTER_ACCESS_SIB_LAYOUTS_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "adb_to_c_utils.h"/* Description -   */
-/* Size in bytes - 16 */
-struct register_access_sib_IB_PSID_ {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - PS - ID */
-       /* 0.0 - 16.31 */
-        u_int32_t PS_ID[4];
-};
-
-/* Description -  SW Info */
-/* Size in bytes - 32 */
-struct register_access_sib_IB_SWInfo_ {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.7 */
-        u_int8_t VerSubMinor;
-       /* Description -  */
-       /* 0.8 - 0.15 */
-        u_int8_t VerMinor;
-       /* Description -  */
-       /* 0.16 - 0.23 */
-        u_int8_t VerMajor;
-};
-
-/* Description -  FW Info */
-/* Size in bytes - 64 */
-struct register_access_sib_IB_FWInfo_ {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.7 */
-        u_int8_t SubMinor;
-       /* Description -  */
-       /* 0.8 - 0.15 */
-        u_int8_t Minor;
-       /* Description -  */
-       /* 0.16 - 0.23 */
-        u_int8_t Major;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 8.31 */
-        u_int32_t BuildID;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description -  */
-       /* 8.0 - 8.15 */
-        u_int16_t Year;
-       /* Description -  */
-       /* 8.16 - 8.23 */
-        u_int8_t Day;
-       /* Description -  */
-       /* 8.24 - 12.31 */
-        u_int8_t Month;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description -  */
-       /* 12.0 - 12.15 */
-        u_int16_t Hour;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description -  */
-       /* 16.0 - 32.31 */
-        struct register_access_sib_IB_PSID_ PSID;
-/*---------------- DWORD[8] (Offset 0x20) ----------------*/
-       /* Description -  */
-       /* 32.0 - 36.31 */
-        u_int32_t INIFileNum;
-/*---------------- DWORD[9] (Offset 0x24) ----------------*/
-       /* Description -  */
-       /* 36.0 - 40.31 */
-        u_int32_t extended_major;
-/*---------------- DWORD[10] (Offset 0x28) ----------------*/
-       /* Description -  */
-       /* 40.0 - 44.31 */
-        u_int32_t extended_minor;
-/*---------------- DWORD[11] (Offset 0x2c) ----------------*/
-       /* Description -  */
-       /* 44.0 - 48.31 */
-        u_int32_t extended_subminor;
-};
-
-/* Description -  HW Info */
-/* Size in bytes - 32 */
-struct register_access_sib_IB_HWInfo_ {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.15 */
-        u_int16_t DEVID;
-       /* Description -  */
-       /* 0.16 - 4.31 */
-        u_int16_t REVID;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - Maximum supported V_CORE voltage for the device. (in 50mV increments). */
-       /* 4.0 - 4.4 */
-        u_int8_t pvs;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - the device_id in HW, used by tools */
-       /* 8.0 - 8.15 */
-        u_int16_t hw_dev_id;
-/*---------------- DWORD[7] (Offset 0x1c) ----------------*/
-       /* Description - Time (in sec) since last reset */
-       /* 28.0 - 32.31 */
-        u_int32_t UpTime;
-};
-
-/* Description -   */
-/* Size in bytes - 128 */
-struct register_access_sib_mgir {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 32.31 */
-        struct register_access_sib_IB_HWInfo_ HWInfo;
-/*---------------- DWORD[8] (Offset 0x20) ----------------*/
-       /* Description -  */
-       /* 32.0 - 96.31 */
-        struct register_access_sib_IB_FWInfo_ FWInfo;
-/*---------------- DWORD[24] (Offset 0x60) ----------------*/
-       /* Description -  */
-       /* 96.0 - 128.31 */
-        struct register_access_sib_IB_SWInfo_ SWInfo;
-};
-
-/* Description -   */
-/* Size in bytes - 32 */
-struct register_access_sib_mtmp {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Sensors index to access */
-       /* 0.0 - 0.6 */
-        u_int8_t sensor_index;
-       /* Description - query the internal diodes */
-       /* 0.31 - 4.31 */
-        u_int8_t internal_diodes_query;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - Temperature reading from the sensor. Reading in 0.125 Celsius degrees. */
-       /* 4.0 - 4.15 */
-        u_int16_t temperature;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - The highest measured temperature from the sensor. */
-       /* 8.0 - 8.15 */
-        u_int16_t max_temperture;
-       /* Description - Max Temperature Reset - clears the value of the max temperature register */
-       /* 8.30 - 8.30 */
-        u_int8_t mtr;
-       /* Description - Max Temperature Enable - enables measuring the max temperature on a sensor */
-       /* 8.31 - 12.31 */
-        u_int8_t mte;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description - If the sensor temperature measurement is above the threshold (and events are enabled), an event
-will be generated */
-       /* 12.0 - 12.15 */
-        u_int16_t temperature_threshold_hi;
-       /* Description - Temperature Event Enable
-00 - Do not generate event
-01 - Generate Event
-10 - Generate single event */
-       /* 12.30 - 16.31 */
-        u_int8_t tee;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description -  */
-       /* 16.0 - 16.15 */
-        u_int16_t temperature_threshold_lo;
-/*---------------- DWORD[6] (Offset 0x18) ----------------*/
-       /* Description -  */
-       /* 24.0 - 28.31 */
-        u_int32_t name_hi;
-/*---------------- DWORD[7] (Offset 0x1c) ----------------*/
-       /* Description -  */
-       /* 28.0 - 32.31 */
-        u_int32_t name_lo;
-};
-
-/* Description -   */
-/* Size in bytes - 128 */
-union register_access_sib_register_access_sib_Nodes {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 32.31 */
-        struct register_access_sib_mtmp mtmp;
-       /* Description -  */
-       /* 0.0 - 128.31 */
-        struct register_access_sib_mgir mgir;
-};
-
-
-/*================= PACK/UNPACK/PRINT FUNCTIONS ======================*/
-/* IB_PSID_ */
-void register_access_sib_IB_PSID__pack(const struct register_access_sib_IB_PSID_ *ptr_struct, u_int8_t* ptr_buff);
-void register_access_sib_IB_PSID__unpack(struct register_access_sib_IB_PSID_ *ptr_struct, const u_int8_t* ptr_buff);
-void register_access_sib_IB_PSID__print(const struct register_access_sib_IB_PSID_ *ptr_struct, FILE* file, int indent_level);
-int register_access_sib_IB_PSID__size(void);
-#define REGISTER_ACCESS_SIB_IB_PSID__SIZE    (0x10)
-void register_access_sib_IB_PSID__dump(const struct register_access_sib_IB_PSID_ *ptr_struct, FILE* file);
-/* IB_SWInfo_ */
-void register_access_sib_IB_SWInfo__pack(const struct register_access_sib_IB_SWInfo_ *ptr_struct, u_int8_t* ptr_buff);
-void register_access_sib_IB_SWInfo__unpack(struct register_access_sib_IB_SWInfo_ *ptr_struct, const u_int8_t* ptr_buff);
-void register_access_sib_IB_SWInfo__print(const struct register_access_sib_IB_SWInfo_ *ptr_struct, FILE* file, int indent_level);
-int register_access_sib_IB_SWInfo__size(void);
-#define REGISTER_ACCESS_SIB_IB_SWINFO__SIZE    (0x20)
-void register_access_sib_IB_SWInfo__dump(const struct register_access_sib_IB_SWInfo_ *ptr_struct, FILE* file);
-/* IB_FWInfo_ */
-void register_access_sib_IB_FWInfo__pack(const struct register_access_sib_IB_FWInfo_ *ptr_struct, u_int8_t* ptr_buff);
-void register_access_sib_IB_FWInfo__unpack(struct register_access_sib_IB_FWInfo_ *ptr_struct, const u_int8_t* ptr_buff);
-void register_access_sib_IB_FWInfo__print(const struct register_access_sib_IB_FWInfo_ *ptr_struct, FILE* file, int indent_level);
-int register_access_sib_IB_FWInfo__size(void);
-#define REGISTER_ACCESS_SIB_IB_FWINFO__SIZE    (0x40)
-void register_access_sib_IB_FWInfo__dump(const struct register_access_sib_IB_FWInfo_ *ptr_struct, FILE* file);
-/* IB_HWInfo_ */
-void register_access_sib_IB_HWInfo__pack(const struct register_access_sib_IB_HWInfo_ *ptr_struct, u_int8_t* ptr_buff);
-void register_access_sib_IB_HWInfo__unpack(struct register_access_sib_IB_HWInfo_ *ptr_struct, const u_int8_t* ptr_buff);
-void register_access_sib_IB_HWInfo__print(const struct register_access_sib_IB_HWInfo_ *ptr_struct, FILE* file, int indent_level);
-int register_access_sib_IB_HWInfo__size(void);
-#define REGISTER_ACCESS_SIB_IB_HWINFO__SIZE    (0x20)
-void register_access_sib_IB_HWInfo__dump(const struct register_access_sib_IB_HWInfo_ *ptr_struct, FILE* file);
-/* mgir */
-void register_access_sib_mgir_pack(const struct register_access_sib_mgir *ptr_struct, u_int8_t* ptr_buff);
-void register_access_sib_mgir_unpack(struct register_access_sib_mgir *ptr_struct, const u_int8_t* ptr_buff);
-void register_access_sib_mgir_print(const struct register_access_sib_mgir *ptr_struct, FILE* file, int indent_level);
-int register_access_sib_mgir_size(void);
-#define REGISTER_ACCESS_SIB_MGIR_SIZE    (0x80)
-void register_access_sib_mgir_dump(const struct register_access_sib_mgir *ptr_struct, FILE* file);
-/* mtmp */
-void register_access_sib_mtmp_pack(const struct register_access_sib_mtmp *ptr_struct, u_int8_t* ptr_buff);
-void register_access_sib_mtmp_unpack(struct register_access_sib_mtmp *ptr_struct, const u_int8_t* ptr_buff);
-void register_access_sib_mtmp_print(const struct register_access_sib_mtmp *ptr_struct, FILE* file, int indent_level);
-int register_access_sib_mtmp_size(void);
-#define REGISTER_ACCESS_SIB_MTMP_SIZE    (0x20)
-void register_access_sib_mtmp_dump(const struct register_access_sib_mtmp *ptr_struct, FILE* file);
-/* register_access_sib_Nodes */
-void register_access_sib_register_access_sib_Nodes_pack(const union register_access_sib_register_access_sib_Nodes *ptr_struct, u_int8_t* ptr_buff);
-void register_access_sib_register_access_sib_Nodes_unpack(union register_access_sib_register_access_sib_Nodes *ptr_struct, const u_int8_t* ptr_buff);
-void register_access_sib_register_access_sib_Nodes_print(const union register_access_sib_register_access_sib_Nodes *ptr_struct, FILE* file, int indent_level);
-int register_access_sib_register_access_sib_Nodes_size(void);
-#define REGISTER_ACCESS_SIB_REGISTER_ACCESS_SIB_NODES_SIZE    (0x80)
-void register_access_sib_register_access_sib_Nodes_dump(const union register_access_sib_register_access_sib_Nodes *ptr_struct, FILE* file);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // REGISTER_ACCESS_SIB_LAYOUTS_H
diff --git a/tools_layouts/tools_open_layouts.c b/tools_layouts/tools_open_layouts.c
deleted file mode 100644 (file)
index a5858eb..0000000
+++ /dev/null
@@ -1,5658 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/***
- *** This file was generated at "2016-05-09 12:11:56"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_
- ***/
-#include "tools_open_layouts.h"
-
-void tools_open_tlv_type_dw_pack(const struct tools_open_tlv_type_dw *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->tlv_type_dw);
-
-}
-
-void tools_open_tlv_type_dw_unpack(struct tools_open_tlv_type_dw *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       ptr_struct->tlv_type_dw = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void tools_open_tlv_type_dw_print(const struct tools_open_tlv_type_dw *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_tlv_type_dw ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "tlv_type_dw          : "U32H_FMT"\n", ptr_struct->tlv_type_dw);
-
-}
-
-int tools_open_tlv_type_dw_size(void)
-{
-        return 4;
-}
-
-void tools_open_tlv_type_dw_dump(const struct tools_open_tlv_type_dw *ptr_struct, FILE* file)
-{
-       tools_open_tlv_type_dw_print(ptr_struct, file, 0);
-}
-
-void tools_open_per_port_type_pack(const struct tools_open_per_port_type *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->param_idx);
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->port);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->param_class);
-
-}
-
-void tools_open_per_port_type_unpack(struct tools_open_per_port_type *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       ptr_struct->param_idx = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 8;
-       ptr_struct->port = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 0;
-       ptr_struct->param_class = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void tools_open_per_port_type_print(const struct tools_open_per_port_type *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_per_port_type ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param_idx            : "UH_FMT"\n", ptr_struct->param_idx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "port                 : "UH_FMT"\n", ptr_struct->port);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param_class          : "UH_FMT"\n", ptr_struct->param_class);
-
-}
-
-int tools_open_per_port_type_size(void)
-{
-        return 4;
-}
-
-void tools_open_per_port_type_dump(const struct tools_open_per_port_type *ptr_struct, FILE* file)
-{
-       tools_open_per_port_type_print(ptr_struct, file, 0);
-}
-
-void tools_open_bmc_type_pack(const struct tools_open_bmc_type *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 19;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 13, (u_int32_t)ptr_struct->param_idx);
-
-       offset = 14;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 5, (u_int32_t)ptr_struct->channel);
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 6, (u_int32_t)ptr_struct->host);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->param_class);
-
-}
-
-void tools_open_bmc_type_unpack(struct tools_open_bmc_type *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 19;
-       ptr_struct->param_idx = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 13);
-
-       offset = 14;
-       ptr_struct->channel = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 5);
-
-       offset = 8;
-       ptr_struct->host = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 6);
-
-       offset = 0;
-       ptr_struct->param_class = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void tools_open_bmc_type_print(const struct tools_open_bmc_type *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_bmc_type ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param_idx            : "UH_FMT"\n", ptr_struct->param_idx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "channel              : "UH_FMT"\n", ptr_struct->channel);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "host                 : "UH_FMT"\n", ptr_struct->host);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param_class          : "UH_FMT"\n", ptr_struct->param_class);
-
-}
-
-int tools_open_bmc_type_size(void)
-{
-        return 4;
-}
-
-void tools_open_bmc_type_dump(const struct tools_open_bmc_type *ptr_struct, FILE* file)
-{
-       tools_open_bmc_type_print(ptr_struct, file, 0);
-}
-
-void tools_open_per_host_type_pack(const struct tools_open_per_host_type *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 22;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 10, (u_int32_t)ptr_struct->param_idx);
-
-       offset = 14;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->function);
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 6, (u_int32_t)ptr_struct->host);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->param_class);
-
-}
-
-void tools_open_per_host_type_unpack(struct tools_open_per_host_type *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 22;
-       ptr_struct->param_idx = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 10);
-
-       offset = 14;
-       ptr_struct->function = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 8;
-       ptr_struct->host = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 6);
-
-       offset = 0;
-       ptr_struct->param_class = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void tools_open_per_host_type_print(const struct tools_open_per_host_type *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_per_host_type ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param_idx            : "UH_FMT"\n", ptr_struct->param_idx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "function             : "UH_FMT"\n", ptr_struct->function);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "host                 : "UH_FMT"\n", ptr_struct->host);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param_class          : "UH_FMT"\n", ptr_struct->param_class);
-
-}
-
-int tools_open_per_host_type_size(void)
-{
-        return 4;
-}
-
-void tools_open_per_host_type_dump(const struct tools_open_per_host_type *ptr_struct, FILE* file)
-{
-       tools_open_per_host_type_print(ptr_struct, file, 0);
-}
-
-void tools_open_eswitch_type_pack(const struct tools_open_eswitch_type *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->param_idx);
-
-       offset = 14;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->port);
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 6, (u_int32_t)ptr_struct->host);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->param_class);
-
-}
-
-void tools_open_eswitch_type_unpack(struct tools_open_eswitch_type *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       ptr_struct->param_idx = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 14;
-       ptr_struct->port = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 8;
-       ptr_struct->host = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 6);
-
-       offset = 0;
-       ptr_struct->param_class = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void tools_open_eswitch_type_print(const struct tools_open_eswitch_type *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_eswitch_type ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param_idx            : "UH_FMT"\n", ptr_struct->param_idx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "port                 : "UH_FMT"\n", ptr_struct->port);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "host                 : "UH_FMT"\n", ptr_struct->host);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param_class          : "UH_FMT"\n", ptr_struct->param_class);
-
-}
-
-int tools_open_eswitch_type_size(void)
-{
-        return 4;
-}
-
-void tools_open_eswitch_type_dump(const struct tools_open_eswitch_type *ptr_struct, FILE* file)
-{
-       tools_open_eswitch_type_print(ptr_struct, file, 0);
-}
-
-void tools_open_global_type_pack(const struct tools_open_global_type *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 24, (u_int32_t)ptr_struct->param_idx);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->param_class);
-
-}
-
-void tools_open_global_type_unpack(struct tools_open_global_type *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 8;
-       ptr_struct->param_idx = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 24);
-
-       offset = 0;
-       ptr_struct->param_class = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void tools_open_global_type_print(const struct tools_open_global_type *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_global_type ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param_idx            : "UH_FMT"\n", ptr_struct->param_idx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "param_class          : "UH_FMT"\n", ptr_struct->param_class);
-
-}
-
-int tools_open_global_type_size(void)
-{
-        return 4;
-}
-
-void tools_open_global_type_dump(const struct tools_open_global_type *ptr_struct, FILE* file)
-{
-       tools_open_global_type_print(ptr_struct, file, 0);
-}
-
-void tools_open_tlv_type_pack(const union tools_open_tlv_type *ptr_struct, u_int8_t* ptr_buff)
-{
-       tools_open_tlv_type_dw_pack(&(ptr_struct->tlv_type_dw), ptr_buff);
-}
-
-void tools_open_tlv_type_unpack(union tools_open_tlv_type *ptr_struct, const u_int8_t* ptr_buff)
-{
-       tools_open_tlv_type_dw_unpack(&(ptr_struct->tlv_type_dw), ptr_buff);
-}
-
-void tools_open_tlv_type_print(const union tools_open_tlv_type *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_tlv_type ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "global:\n");
-       tools_open_global_type_print(&(ptr_struct->global), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "eswitch:\n");
-       tools_open_eswitch_type_print(&(ptr_struct->eswitch), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "per_host:\n");
-       tools_open_per_host_type_print(&(ptr_struct->per_host), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "bmc:\n");
-       tools_open_bmc_type_print(&(ptr_struct->bmc), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "per_port:\n");
-       tools_open_per_port_type_print(&(ptr_struct->per_port), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "tlv_type_dw:\n");
-       tools_open_tlv_type_dw_print(&(ptr_struct->tlv_type_dw), file, indent_level + 1);
-
-}
-
-int tools_open_tlv_type_size(void)
-{
-        return 4;
-}
-
-void tools_open_tlv_type_dump(const union tools_open_tlv_type *ptr_struct, FILE* file)
-{
-       tools_open_tlv_type_print(ptr_struct, file, 0);
-}
-
-void tools_open_ts_entry_pack(const struct tools_open_ts_entry *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->ts_day);
-
-       offset = 16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->ts_month);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->ts_year);
-
-       offset = 48;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->ts_seconds);
-
-       offset = 40;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->ts_minutes);
-
-       offset = 32;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->ts_hour);
-
-}
-
-void tools_open_ts_entry_unpack(struct tools_open_ts_entry *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       ptr_struct->ts_day = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 16;
-       ptr_struct->ts_month = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 0;
-       ptr_struct->ts_year = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 48;
-       ptr_struct->ts_seconds = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 40;
-       ptr_struct->ts_minutes = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 32;
-       ptr_struct->ts_hour = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void tools_open_ts_entry_print(const struct tools_open_ts_entry *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_ts_entry ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ts_day               : "UH_FMT"\n", ptr_struct->ts_day);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ts_month             : "UH_FMT"\n", ptr_struct->ts_month);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ts_year              : "UH_FMT"\n", ptr_struct->ts_year);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ts_seconds           : "UH_FMT"\n", ptr_struct->ts_seconds);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ts_minutes           : "UH_FMT"\n", ptr_struct->ts_minutes);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ts_hour              : "UH_FMT"\n", ptr_struct->ts_hour);
-
-}
-
-int tools_open_ts_entry_size(void)
-{
-        return 8;
-}
-
-void tools_open_ts_entry_dump(const struct tools_open_ts_entry *ptr_struct, FILE* file)
-{
-       tools_open_ts_entry_print(ptr_struct, file, 0);
-}
-
-void tools_open_fw_version_pack(const struct tools_open_fw_version *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->fw_ver_major);
-
-       offset = 48;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->fw_ver_subminor);
-
-       offset = 32;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->fw_ver_minor);
-
-}
-
-void tools_open_fw_version_unpack(struct tools_open_fw_version *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       ptr_struct->fw_ver_major = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 48;
-       ptr_struct->fw_ver_subminor = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 32;
-       ptr_struct->fw_ver_minor = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-}
-
-void tools_open_fw_version_print(const struct tools_open_fw_version *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_fw_version ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fw_ver_major         : "UH_FMT"\n", ptr_struct->fw_ver_major);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fw_ver_subminor      : "UH_FMT"\n", ptr_struct->fw_ver_subminor);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fw_ver_minor         : "UH_FMT"\n", ptr_struct->fw_ver_minor);
-
-}
-
-int tools_open_fw_version_size(void)
-{
-        return 8;
-}
-
-void tools_open_fw_version_dump(const struct tools_open_fw_version *ptr_struct, FILE* file)
-{
-       tools_open_fw_version_print(ptr_struct, file, 0);
-}
-
-void tools_open_pmdio_addr_data_pack(const struct tools_open_pmdio_addr_data *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->data);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->addr);
-
-}
-
-void tools_open_pmdio_addr_data_unpack(struct tools_open_pmdio_addr_data *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       ptr_struct->data = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 0;
-       ptr_struct->addr = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-}
-
-void tools_open_pmdio_addr_data_print(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_pmdio_addr_data ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "data                 : "UH_FMT"\n", ptr_struct->data);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "addr                 : "UH_FMT"\n", ptr_struct->addr);
-
-}
-
-int tools_open_pmdio_addr_data_size(void)
-{
-        return 4;
-}
-
-void tools_open_pmdio_addr_data_dump(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file)
-{
-       tools_open_pmdio_addr_data_print(ptr_struct, file, 0);
-}
-
-void tools_open_nv_hdr_fifth_gen_pack(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->length);
-
-       offset = 20;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->shadow);
-
-       offset = 16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->version);
-
-       offset = 9;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->default_supported);
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->default_);
-
-       offset = 7;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->rd_en);
-
-       offset = 6;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->over_en);
-
-       offset = 32;
-       tools_open_tlv_type_pack(&(ptr_struct->type), ptr_buff + offset/8);
-
-}
-
-void tools_open_nv_hdr_fifth_gen_unpack(struct tools_open_nv_hdr_fifth_gen *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       ptr_struct->length = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 20;
-       ptr_struct->shadow = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 16;
-       ptr_struct->version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 9;
-       ptr_struct->default_supported = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 8;
-       ptr_struct->default_ = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 7;
-       ptr_struct->rd_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 6;
-       ptr_struct->over_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 32;
-       tools_open_tlv_type_unpack(&(ptr_struct->type), ptr_buff + offset/8);
-
-}
-
-void tools_open_nv_hdr_fifth_gen_print(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_nv_hdr_fifth_gen ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "length               : "UH_FMT"\n", ptr_struct->length);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "shadow               : "UH_FMT"\n", ptr_struct->shadow);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "version              : "UH_FMT"\n", ptr_struct->version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_supported    : "UH_FMT"\n", ptr_struct->default_supported);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_             : "UH_FMT"\n", ptr_struct->default_);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rd_en                : "UH_FMT"\n", ptr_struct->rd_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "over_en              : "UH_FMT"\n", ptr_struct->over_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "type:\n");
-       tools_open_tlv_type_print(&(ptr_struct->type), file, indent_level + 1);
-
-}
-
-int tools_open_nv_hdr_fifth_gen_size(void)
-{
-        return 12;
-}
-
-void tools_open_nv_hdr_fifth_gen_dump(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, FILE* file)
-{
-       tools_open_nv_hdr_fifth_gen_print(ptr_struct, file, 0);
-}
-
-void tools_open_timestamp_pack(const struct tools_open_timestamp *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_fw_version_pack(&(ptr_struct->fw_version), ptr_buff + offset/8);
-
-       offset = 64;
-       tools_open_ts_entry_pack(&(ptr_struct->ts_entry), ptr_buff + offset/8);
-
-}
-
-void tools_open_timestamp_unpack(struct tools_open_timestamp *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_fw_version_unpack(&(ptr_struct->fw_version), ptr_buff + offset/8);
-
-       offset = 64;
-       tools_open_ts_entry_unpack(&(ptr_struct->ts_entry), ptr_buff + offset/8);
-
-}
-
-void tools_open_timestamp_print(const struct tools_open_timestamp *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_timestamp ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fw_version:\n");
-       tools_open_fw_version_print(&(ptr_struct->fw_version), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ts_entry:\n");
-       tools_open_ts_entry_print(&(ptr_struct->ts_entry), file, indent_level + 1);
-
-}
-
-int tools_open_timestamp_size(void)
-{
-        return 16;
-}
-
-void tools_open_timestamp_dump(const struct tools_open_timestamp *ptr_struct, FILE* file)
-{
-       tools_open_timestamp_print(ptr_struct, file, 0);
-}
-
-void tools_open_nv_hdr_pack(const struct tools_open_nv_hdr *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->type);
-
-       offset = 2;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->length);
-
-       offset = 40;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->type_mod);
-
-       offset = 39;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->shadow);
-
-       offset = 37;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->pad_cnt);
-
-       offset = 32;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->version);
-
-}
-
-void tools_open_nv_hdr_unpack(struct tools_open_nv_hdr *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       ptr_struct->type = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 2;
-       ptr_struct->length = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12);
-
-       offset = 40;
-       ptr_struct->type_mod = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 39;
-       ptr_struct->shadow = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 37;
-       ptr_struct->pad_cnt = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 32;
-       ptr_struct->version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-}
-
-void tools_open_nv_hdr_print(const struct tools_open_nv_hdr *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_nv_hdr ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "type                 : "UH_FMT"\n", ptr_struct->type);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "length               : "UH_FMT"\n", ptr_struct->length);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "type_mod             : "UH_FMT"\n", ptr_struct->type_mod);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "shadow               : "UH_FMT"\n", ptr_struct->shadow);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pad_cnt              : "UH_FMT"\n", ptr_struct->pad_cnt);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "version              : "UH_FMT"\n", ptr_struct->version);
-
-}
-
-int tools_open_nv_hdr_size(void)
-{
-        return 8;
-}
-
-void tools_open_nv_hdr_dump(const struct tools_open_nv_hdr *ptr_struct, FILE* file)
-{
-       tools_open_nv_hdr_print(ptr_struct, file, 0);
-}
-
-void tools_open_aux_tlv_header_pack(const struct tools_open_aux_tlv_header *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->minor_version);
-
-       offset = 16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->major_version);
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->type);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->header_type);
-
-       offset = 32;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->length);
-
-       offset = 80;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->crc);
-
-       offset = 96;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->reserved0);
-
-       offset = 128;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->reserved1);
-
-}
-
-void tools_open_aux_tlv_header_unpack(struct tools_open_aux_tlv_header *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       ptr_struct->minor_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 16;
-       ptr_struct->major_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 8;
-       ptr_struct->type = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 0;
-       ptr_struct->header_type = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 32;
-       ptr_struct->length = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset = 80;
-       ptr_struct->crc = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 96;
-       ptr_struct->reserved0 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset = 128;
-       ptr_struct->reserved1 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void tools_open_aux_tlv_header_print(const struct tools_open_aux_tlv_header *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_aux_tlv_header ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "minor_version        : "UH_FMT"\n", ptr_struct->minor_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "major_version        : "UH_FMT"\n", ptr_struct->major_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "type                 : "UH_FMT"\n", ptr_struct->type);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "header_type          : "UH_FMT"\n", ptr_struct->header_type);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "length               : "U32H_FMT"\n", ptr_struct->length);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "crc                  : "UH_FMT"\n", ptr_struct->crc);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "reserved0            : "U32H_FMT"\n", ptr_struct->reserved0);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "reserved1            : "U32H_FMT"\n", ptr_struct->reserved1);
-
-}
-
-int tools_open_aux_tlv_header_size(void)
-{
-        return 20;
-}
-
-void tools_open_aux_tlv_header_dump(const struct tools_open_aux_tlv_header *ptr_struct, FILE* file)
-{
-       tools_open_aux_tlv_header_print(ptr_struct, file, 0);
-}
-
-void tools_open_pmdio_pack(const struct tools_open_pmdio *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 29;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 3, (u_int32_t)ptr_struct->operation);
-
-       offset = 22;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->clause);
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->local_port);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->lock);
-
-       offset = 59;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 5, (u_int32_t)ptr_struct->reg_adr_mmd);
-
-       offset = 48;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->last_op_idx);
-
-       offset = 40;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->num_ops_done);
-
-       for (i = 0; i < 64; i++) {
-       offset = adb2c_calc_array_field_address(64, 32, i, 2112, 1);
-       tools_open_pmdio_addr_data_pack(&(ptr_struct->mdio_trans[i]), ptr_buff + offset/8);
-       }
-
-}
-
-void tools_open_pmdio_unpack(struct tools_open_pmdio *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 29;
-       ptr_struct->operation = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 3);
-
-       offset = 22;
-       ptr_struct->clause = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 8;
-       ptr_struct->local_port = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 0;
-       ptr_struct->lock = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 59;
-       ptr_struct->reg_adr_mmd = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 5);
-
-       offset = 48;
-       ptr_struct->last_op_idx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 40;
-       ptr_struct->num_ops_done = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       for (i = 0; i < 64; i++) {
-       offset = adb2c_calc_array_field_address(64, 32, i, 2112, 1);
-       tools_open_pmdio_addr_data_unpack(&(ptr_struct->mdio_trans[i]), ptr_buff + offset/8);
-       }
-
-}
-
-void tools_open_pmdio_print(const struct tools_open_pmdio *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_pmdio ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "operation            : "UH_FMT"\n", ptr_struct->operation);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "clause               : "UH_FMT"\n", ptr_struct->clause);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "local_port           : "UH_FMT"\n", ptr_struct->local_port);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lock                 : "UH_FMT"\n", ptr_struct->lock);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "reg_adr_mmd          : "UH_FMT"\n", ptr_struct->reg_adr_mmd);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "last_op_idx          : "UH_FMT"\n", ptr_struct->last_op_idx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_ops_done         : "UH_FMT"\n", ptr_struct->num_ops_done);
-
-       for (i = 0; i < 64; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mdio_trans_%03d:\n", i);
-       tools_open_pmdio_addr_data_print(&(ptr_struct->mdio_trans[i]), file, indent_level + 1);
-       }
-
-}
-
-int tools_open_pmdio_size(void)
-{
-        return 264;
-}
-
-void tools_open_pmdio_dump(const struct tools_open_pmdio *ptr_struct, FILE* file)
-{
-       tools_open_pmdio_print(ptr_struct, file, 0);
-}
-
-void tools_open_pmdic_pack(const struct tools_open_pmdic *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->local_port);
-
-       offset = 56;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->operation_cap);
-
-       offset = 38;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->clause);
-
-       offset = 32;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->mdio_preset);
-
-       offset = 88;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->misc_cap);
-
-}
-
-void tools_open_pmdic_unpack(struct tools_open_pmdic *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 8;
-       ptr_struct->local_port = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 56;
-       ptr_struct->operation_cap = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 38;
-       ptr_struct->clause = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 32;
-       ptr_struct->mdio_preset = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 88;
-       ptr_struct->misc_cap = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void tools_open_pmdic_print(const struct tools_open_pmdic *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_pmdic ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "local_port           : "UH_FMT"\n", ptr_struct->local_port);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "operation_cap        : "UH_FMT"\n", ptr_struct->operation_cap);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "clause               : "UH_FMT"\n", ptr_struct->clause);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mdio_preset          : "UH_FMT"\n", ptr_struct->mdio_preset);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "misc_cap             : "UH_FMT"\n", ptr_struct->misc_cap);
-
-}
-
-int tools_open_pmdic_size(void)
-{
-        return 12;
-}
-
-void tools_open_pmdic_dump(const struct tools_open_pmdic *ptr_struct, FILE* file)
-{
-       tools_open_pmdic_print(ptr_struct, file, 0);
-}
-
-void tools_open_mnvgn_pack(const struct tools_open_mnvgn *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->nv_pointer);
-
-       offset = 128;
-       tools_open_nv_hdr_fifth_gen_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-       for (i = 0; i < 128; i++) {
-       offset = adb2c_calc_array_field_address(248, 8, i, 1248, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->nv_data[i]);
-       }
-
-}
-
-void tools_open_mnvgn_unpack(struct tools_open_mnvgn *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       ptr_struct->nv_pointer = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset = 128;
-       tools_open_nv_hdr_fifth_gen_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-       for (i = 0; i < 128; i++) {
-       offset = adb2c_calc_array_field_address(248, 8, i, 1248, 1);
-       ptr_struct->nv_data[i] = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-}
-
-void tools_open_mnvgn_print(const struct tools_open_mnvgn *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_mnvgn ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_pointer           : "U32H_FMT"\n", ptr_struct->nv_pointer);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_hdr:\n");
-       tools_open_nv_hdr_fifth_gen_print(&(ptr_struct->nv_hdr), file, indent_level + 1);
-
-       for (i = 0; i < 128; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_data_%03d         : "UH_FMT"\n", i, ptr_struct->nv_data[i]);
-       }
-
-}
-
-int tools_open_mnvgn_size(void)
-{
-        return 156;
-}
-
-void tools_open_mnvgn_dump(const struct tools_open_mnvgn *ptr_struct, FILE* file)
-{
-       tools_open_mnvgn_print(ptr_struct, file, 0);
-}
-
-void tools_open_mvts_pack(const struct tools_open_mvts *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 2;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->check_timestamp_flag);
-
-       offset = 1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->running_flag);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->clear_all_ts_flag);
-
-       offset = 32;
-       tools_open_timestamp_pack(&(ptr_struct->timestamp), ptr_buff + offset/8);
-
-}
-
-void tools_open_mvts_unpack(struct tools_open_mvts *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 2;
-       ptr_struct->check_timestamp_flag = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 1;
-       ptr_struct->running_flag = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 0;
-       ptr_struct->clear_all_ts_flag = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 32;
-       tools_open_timestamp_unpack(&(ptr_struct->timestamp), ptr_buff + offset/8);
-
-}
-
-void tools_open_mvts_print(const struct tools_open_mvts *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_mvts ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "check_timestamp_flag : "UH_FMT"\n", ptr_struct->check_timestamp_flag);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "running_flag         : "UH_FMT"\n", ptr_struct->running_flag);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "clear_all_ts_flag    : "UH_FMT"\n", ptr_struct->clear_all_ts_flag);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "timestamp:\n");
-       tools_open_timestamp_print(&(ptr_struct->timestamp), file, indent_level + 1);
-
-}
-
-int tools_open_mvts_size(void)
-{
-        return 20;
-}
-
-void tools_open_mvts_dump(const struct tools_open_mvts *ptr_struct, FILE* file)
-{
-       tools_open_mvts_print(ptr_struct, file, 0);
-}
-
-void tools_open_nvqgc_pack(const struct tools_open_nvqgc *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 31;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->read_factory_settings_support);
-
-}
-
-void tools_open_nvqgc_unpack(struct tools_open_nvqgc *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 31;
-       ptr_struct->read_factory_settings_support = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_nvqgc_print(const struct tools_open_nvqgc *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_nvqgc ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "read_factory_settings_support : "UH_FMT"\n", ptr_struct->read_factory_settings_support);
-
-}
-
-int tools_open_nvqgc_size(void)
-{
-        return 16;
-}
-
-void tools_open_nvqgc_dump(const struct tools_open_nvqgc *ptr_struct, FILE* file)
-{
-       tools_open_nvqgc_print(ptr_struct, file, 0);
-}
-
-void tools_open_nvdi_pack(const struct tools_open_nvdi *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_fifth_gen_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-}
-
-void tools_open_nvdi_unpack(struct tools_open_nvdi *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_fifth_gen_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-}
-
-void tools_open_nvdi_print(const struct tools_open_nvdi *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_nvdi ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_hdr:\n");
-       tools_open_nv_hdr_fifth_gen_print(&(ptr_struct->nv_hdr), file, indent_level + 1);
-
-}
-
-int tools_open_nvdi_size(void)
-{
-        return 12;
-}
-
-void tools_open_nvdi_dump(const struct tools_open_nvdi *ptr_struct, FILE* file)
-{
-       tools_open_nvdi_print(ptr_struct, file, 0);
-}
-
-void tools_open_nvda_pack(const struct tools_open_nvda *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_fifth_gen_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-       for (i = 0; i < 128; i++) {
-       offset = adb2c_calc_array_field_address(120, 8, i, 2048, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->data[i]);
-       }
-
-}
-
-void tools_open_nvda_unpack(struct tools_open_nvda *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_fifth_gen_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-       for (i = 0; i < 128; i++) {
-       offset = adb2c_calc_array_field_address(120, 8, i, 2048, 1);
-       ptr_struct->data[i] = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-}
-
-void tools_open_nvda_print(const struct tools_open_nvda *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_nvda ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_hdr:\n");
-       tools_open_nv_hdr_fifth_gen_print(&(ptr_struct->nv_hdr), file, indent_level + 1);
-
-       for (i = 0; i < 128; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "data_%03d            : "UH_FMT"\n", i, ptr_struct->data[i]);
-       }
-
-}
-
-int tools_open_nvda_size(void)
-{
-        return 256;
-}
-
-void tools_open_nvda_dump(const struct tools_open_nvda *ptr_struct, FILE* file)
-{
-       tools_open_nvda_print(ptr_struct, file, 0);
-}
-
-void tools_open_nvia_pack(const struct tools_open_nvia *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_fifth_gen_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-       offset = 125;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 3, (u_int32_t)ptr_struct->target);
-
-}
-
-void tools_open_nvia_unpack(struct tools_open_nvia *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_fifth_gen_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-       offset = 125;
-       ptr_struct->target = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 3);
-
-}
-
-void tools_open_nvia_print(const struct tools_open_nvia *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_nvia ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_hdr:\n");
-       tools_open_nv_hdr_fifth_gen_print(&(ptr_struct->nv_hdr), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "target               : "UH_FMT"\n", ptr_struct->target);
-
-}
-
-int tools_open_nvia_size(void)
-{
-        return 20;
-}
-
-void tools_open_nvia_dump(const struct tools_open_nvia *ptr_struct, FILE* file)
-{
-       tools_open_nvia_print(ptr_struct, file, 0);
-}
-
-void tools_open_nvqc_pack(const struct tools_open_nvqc *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_tlv_type_pack(&(ptr_struct->type), ptr_buff + offset/8);
-
-       offset = 63;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->support_rd);
-
-       offset = 62;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->support_wr);
-
-       offset = 56;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->version);
-
-}
-
-void tools_open_nvqc_unpack(struct tools_open_nvqc *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_tlv_type_unpack(&(ptr_struct->type), ptr_buff + offset/8);
-
-       offset = 63;
-       ptr_struct->support_rd = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 62;
-       ptr_struct->support_wr = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 56;
-       ptr_struct->version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-}
-
-void tools_open_nvqc_print(const struct tools_open_nvqc *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_nvqc ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "type:\n");
-       tools_open_tlv_type_print(&(ptr_struct->type), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "support_rd           : "UH_FMT"\n", ptr_struct->support_rd);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "support_wr           : "UH_FMT"\n", ptr_struct->support_wr);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "version              : "UH_FMT"\n", ptr_struct->version);
-
-}
-
-int tools_open_nvqc_size(void)
-{
-        return 8;
-}
-
-void tools_open_nvqc_dump(const struct tools_open_nvqc *ptr_struct, FILE* file)
-{
-       tools_open_nvqc_print(ptr_struct, file, 0);
-}
-
-void tools_open_mnvia_pack(const struct tools_open_mnvia *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-}
-
-void tools_open_mnvia_unpack(struct tools_open_mnvia *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-}
-
-void tools_open_mnvia_print(const struct tools_open_mnvia *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_mnvia ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_hdr:\n");
-       tools_open_nv_hdr_print(&(ptr_struct->nv_hdr), file, indent_level + 1);
-
-}
-
-int tools_open_mnvia_size(void)
-{
-        return 8;
-}
-
-void tools_open_mnvia_dump(const struct tools_open_mnvia *ptr_struct, FILE* file)
-{
-       tools_open_mnvia_print(ptr_struct, file, 0);
-}
-
-void tools_open_mnvi_pack(const struct tools_open_mnvi *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-}
-
-void tools_open_mnvi_unpack(struct tools_open_mnvi *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-}
-
-void tools_open_mnvi_print(const struct tools_open_mnvi *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_mnvi ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_hdr:\n");
-       tools_open_nv_hdr_print(&(ptr_struct->nv_hdr), file, indent_level + 1);
-
-}
-
-int tools_open_mnvi_size(void)
-{
-        return 8;
-}
-
-void tools_open_mnvi_dump(const struct tools_open_mnvi *ptr_struct, FILE* file)
-{
-       tools_open_mnvi_print(ptr_struct, file, 0);
-}
-
-void tools_open_mnva_pack(const struct tools_open_mnva *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_pack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-       for (i = 0; i < 128; i++) {
-       offset = adb2c_calc_array_field_address(88, 8, i, 2048, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->data[i]);
-       }
-
-}
-
-void tools_open_mnva_unpack(struct tools_open_mnva *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_nv_hdr_unpack(&(ptr_struct->nv_hdr), ptr_buff + offset/8);
-
-       for (i = 0; i < 128; i++) {
-       offset = adb2c_calc_array_field_address(88, 8, i, 2048, 1);
-       ptr_struct->data[i] = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-}
-
-void tools_open_mnva_print(const struct tools_open_mnva *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_mnva ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_hdr:\n");
-       tools_open_nv_hdr_print(&(ptr_struct->nv_hdr), file, indent_level + 1);
-
-       for (i = 0; i < 128; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "data_%03d            : "UH_FMT"\n", i, ptr_struct->data[i]);
-       }
-
-}
-
-int tools_open_mnva_size(void)
-{
-        return 256;
-}
-
-void tools_open_mnva_dump(const struct tools_open_mnva *ptr_struct, FILE* file)
-{
-       tools_open_mnva_print(ptr_struct, file, 0);
-}
-
-void tools_open_mfg_info_pack(const struct tools_open_mfg_info *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       for (i = 0; i < 16; i++) {
-       offset = adb2c_calc_array_field_address(24, 8, i, 2560, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->psid[i]);
-       }
-
-       offset = 232;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->minor_version);
-
-       offset = 224;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->major_version);
-
-       for (i = 0; i < 96; i++) {
-       offset = adb2c_calc_array_field_address(792, 8, i, 2560, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->orig_prs_name[i]);
-       }
-
-}
-
-void tools_open_mfg_info_unpack(struct tools_open_mfg_info *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       for (i = 0; i < 16; i++) {
-       offset = adb2c_calc_array_field_address(24, 8, i, 2560, 1);
-       ptr_struct->psid[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->psid[16] = '\0';
-       offset = 232;
-       ptr_struct->minor_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 224;
-       ptr_struct->major_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       for (i = 0; i < 96; i++) {
-       offset = adb2c_calc_array_field_address(792, 8, i, 2560, 1);
-       ptr_struct->orig_prs_name[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->orig_prs_name[96] = '\0';
-}
-
-void tools_open_mfg_info_print(const struct tools_open_mfg_info *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_mfg_info ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       fprintf(file, "psid                 : \"%s\"\n", ptr_struct->psid);
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "minor_version        : "UH_FMT"\n", ptr_struct->minor_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "major_version        : "UH_FMT"\n", ptr_struct->major_version);
-
-       fprintf(file, "orig_prs_name        : \"%s\"\n", ptr_struct->orig_prs_name);
-}
-
-int tools_open_mfg_info_size(void)
-{
-        return 320;
-}
-
-void tools_open_mfg_info_dump(const struct tools_open_mfg_info *ptr_struct, FILE* file)
-{
-       tools_open_mfg_info_print(ptr_struct, file, 0);
-}
-
-void tools_open_image_info_pack(const struct tools_open_image_info *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->minor_version);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->major_version);
-
-       for (i = 0; i < 16; i++) {
-       offset = adb2c_calc_array_field_address(312, 8, i, 8192, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->psid[i]);
-       }
-
-       for (i = 0; i < 256; i++) {
-       offset = adb2c_calc_array_field_address(3736, 8, i, 8192, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->description[i]);
-       }
-
-       for (i = 0; i < 64; i++) {
-       offset = adb2c_calc_array_field_address(6680, 8, i, 8192, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->name[i]);
-       }
-
-       for (i = 0; i < 96; i++) {
-       offset = adb2c_calc_array_field_address(7192, 8, i, 8192, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->prs_name[i]);
-       }
-
-}
-
-void tools_open_image_info_unpack(struct tools_open_image_info *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 8;
-       ptr_struct->minor_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 0;
-       ptr_struct->major_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       for (i = 0; i < 16; i++) {
-       offset = adb2c_calc_array_field_address(312, 8, i, 8192, 1);
-       ptr_struct->psid[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->psid[16] = '\0';
-       for (i = 0; i < 256; i++) {
-       offset = adb2c_calc_array_field_address(3736, 8, i, 8192, 1);
-       ptr_struct->description[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->description[256] = '\0';
-       for (i = 0; i < 64; i++) {
-       offset = adb2c_calc_array_field_address(6680, 8, i, 8192, 1);
-       ptr_struct->name[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->name[64] = '\0';
-       for (i = 0; i < 96; i++) {
-       offset = adb2c_calc_array_field_address(7192, 8, i, 8192, 1);
-       ptr_struct->prs_name[i] = (char)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-       ptr_struct->prs_name[96] = '\0';
-}
-
-void tools_open_image_info_print(const struct tools_open_image_info *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_image_info ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "minor_version        : "UH_FMT"\n", ptr_struct->minor_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "major_version        : "UH_FMT"\n", ptr_struct->major_version);
-
-       fprintf(file, "psid                 : \"%s\"\n", ptr_struct->psid);
-       fprintf(file, "description          : \"%s\"\n", ptr_struct->description);
-       fprintf(file, "name                 : \"%s\"\n", ptr_struct->name);
-       fprintf(file, "prs_name             : \"%s\"\n", ptr_struct->prs_name);
-}
-
-int tools_open_image_info_size(void)
-{
-        return 1024;
-}
-
-void tools_open_image_info_dump(const struct tools_open_image_info *ptr_struct, FILE* file)
-{
-       tools_open_image_info_print(ptr_struct, file, 0);
-}
-
-void tools_open_aux_tlv_pack(const struct tools_open_aux_tlv *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_aux_tlv_header_pack(&(ptr_struct->aux_tlv_header), ptr_buff + offset/8);
-
-       for (i = 0; i < 128; i++) {
-       offset = adb2c_calc_array_field_address(184, 8, i, 2048, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->data[i]);
-       }
-
-}
-
-void tools_open_aux_tlv_unpack(struct tools_open_aux_tlv *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       tools_open_aux_tlv_header_unpack(&(ptr_struct->aux_tlv_header), ptr_buff + offset/8);
-
-       for (i = 0; i < 128; i++) {
-       offset = adb2c_calc_array_field_address(184, 8, i, 2048, 1);
-       ptr_struct->data[i] = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-}
-
-void tools_open_aux_tlv_print(const struct tools_open_aux_tlv *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_aux_tlv ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "aux_tlv_header:\n");
-       tools_open_aux_tlv_header_print(&(ptr_struct->aux_tlv_header), file, indent_level + 1);
-
-       for (i = 0; i < 128; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "data_%03d            : "UH_FMT"\n", i, ptr_struct->data[i]);
-       }
-
-}
-
-int tools_open_aux_tlv_size(void)
-{
-        return 256;
-}
-
-void tools_open_aux_tlv_dump(const struct tools_open_aux_tlv *ptr_struct, FILE* file)
-{
-       tools_open_aux_tlv_print(ptr_struct, file, 0);
-}
-
-void tools_open_aux_data_hdr_pack(const struct tools_open_aux_data_hdr *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature0);
-
-       offset = 32;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature1);
-
-       offset = 64;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature2);
-
-       offset = 96;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->signature3);
-
-}
-
-void tools_open_aux_data_hdr_unpack(struct tools_open_aux_data_hdr *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       ptr_struct->signature0 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset = 32;
-       ptr_struct->signature1 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset = 64;
-       ptr_struct->signature2 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset = 96;
-       ptr_struct->signature3 = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void tools_open_aux_data_hdr_print(const struct tools_open_aux_data_hdr *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_aux_data_hdr ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature0           : "U32H_FMT"\n", ptr_struct->signature0);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature1           : "U32H_FMT"\n", ptr_struct->signature1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature2           : "U32H_FMT"\n", ptr_struct->signature2);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "signature3           : "U32H_FMT"\n", ptr_struct->signature3);
-
-}
-
-int tools_open_aux_data_hdr_size(void)
-{
-        return 16;
-}
-
-void tools_open_aux_data_hdr_dump(const struct tools_open_aux_data_hdr *ptr_struct, FILE* file)
-{
-       tools_open_aux_data_hdr_print(ptr_struct, file, 0);
-}
-
-void tools_open_query_def_params_per_port_pack(const struct tools_open_query_def_params_per_port *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 13;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->nv_config_vpi);
-
-       offset = 12;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->nv_config_wol);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->fw_default_config_payload_version);
-
-       offset = 52;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->default_boot_vlan);
-
-       offset = 44;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->default_boot_protocol);
-
-       offset = 40;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->default_boot_retry_cnt);
-
-       offset = 37;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->default_network_link_type);
-
-       offset = 36;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->default_en_wol_magic);
-
-       offset = 35;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->default_boot_vlan_en);
-
-       offset = 34;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->default_boot_option_rom_en);
-
-       offset = 33;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->default_pprx);
-
-       offset = 32;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->default_pptx);
-
-       offset = 80;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->default_boot_pkey);
-
-       offset = 70;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->boot_ip_ver);
-
-       offset = 68;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->nv_config_infiniband_dhcp_settings);
-
-       offset = 67;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->nv_config_infiniband_boot_settings);
-
-       offset = 66;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->nv_config_dhcp_iscsi_parameters);
-
-       offset = 65;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->nv_config_iscsi_parameters);
-
-       offset = 64;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->nv_config_boot_parameters);
-
-       offset = 108;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->client_indentifier);
-
-       offset = 106;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->mac_admin_bit);
-
-       offset = 104;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->iscsi_boot_to_target);
-
-       offset = 101;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->iscsi_vlan_en);
-
-       offset = 100;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->iscsi_tcp_timestamps_en);
-
-       offset = 99;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->iscsi_chap_mutual_auth_en);
-
-       offset = 98;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->iscsi_chap_auth_en);
-
-       offset = 97;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->iscsi_dhcp_params_en);
-
-       offset = 96;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->iscsi_ipv4_dhcp_en);
-
-       offset = 152;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->iscsi_lun_busy_retry_cnt);
-
-       offset = 144;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->iscsi_link_up_delay_time);
-
-}
-
-void tools_open_query_def_params_per_port_unpack(struct tools_open_query_def_params_per_port *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 13;
-       ptr_struct->nv_config_vpi = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 12;
-       ptr_struct->nv_config_wol = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 0;
-       ptr_struct->fw_default_config_payload_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 52;
-       ptr_struct->default_boot_vlan = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12);
-
-       offset = 44;
-       ptr_struct->default_boot_protocol = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 40;
-       ptr_struct->default_boot_retry_cnt = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 37;
-       ptr_struct->default_network_link_type = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 36;
-       ptr_struct->default_en_wol_magic = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 35;
-       ptr_struct->default_boot_vlan_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 34;
-       ptr_struct->default_boot_option_rom_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 33;
-       ptr_struct->default_pprx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 32;
-       ptr_struct->default_pptx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 80;
-       ptr_struct->default_boot_pkey = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 70;
-       ptr_struct->boot_ip_ver = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 68;
-       ptr_struct->nv_config_infiniband_dhcp_settings = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 67;
-       ptr_struct->nv_config_infiniband_boot_settings = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 66;
-       ptr_struct->nv_config_dhcp_iscsi_parameters = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 65;
-       ptr_struct->nv_config_iscsi_parameters = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 64;
-       ptr_struct->nv_config_boot_parameters = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 108;
-       ptr_struct->client_indentifier = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 106;
-       ptr_struct->mac_admin_bit = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 104;
-       ptr_struct->iscsi_boot_to_target = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 101;
-       ptr_struct->iscsi_vlan_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 100;
-       ptr_struct->iscsi_tcp_timestamps_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 99;
-       ptr_struct->iscsi_chap_mutual_auth_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 98;
-       ptr_struct->iscsi_chap_auth_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 97;
-       ptr_struct->iscsi_dhcp_params_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 96;
-       ptr_struct->iscsi_ipv4_dhcp_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 152;
-       ptr_struct->iscsi_lun_busy_retry_cnt = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 144;
-       ptr_struct->iscsi_link_up_delay_time = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void tools_open_query_def_params_per_port_print(const struct tools_open_query_def_params_per_port *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_query_def_params_per_port ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_config_vpi        : "UH_FMT"\n", ptr_struct->nv_config_vpi);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_config_wol        : "UH_FMT"\n", ptr_struct->nv_config_wol);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fw_default_config_payload_version : "UH_FMT"\n", ptr_struct->fw_default_config_payload_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_boot_vlan    : "UH_FMT"\n", ptr_struct->default_boot_vlan);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_boot_protocol : "UH_FMT"\n", ptr_struct->default_boot_protocol);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_boot_retry_cnt : "UH_FMT"\n", ptr_struct->default_boot_retry_cnt);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_network_link_type : "UH_FMT"\n", ptr_struct->default_network_link_type);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_en_wol_magic : "UH_FMT"\n", ptr_struct->default_en_wol_magic);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_boot_vlan_en : "UH_FMT"\n", ptr_struct->default_boot_vlan_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_boot_option_rom_en : "UH_FMT"\n", ptr_struct->default_boot_option_rom_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_pprx         : "UH_FMT"\n", ptr_struct->default_pprx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_pptx         : "UH_FMT"\n", ptr_struct->default_pptx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_boot_pkey    : "UH_FMT"\n", ptr_struct->default_boot_pkey);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_ip_ver          : "UH_FMT"\n", ptr_struct->boot_ip_ver);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_config_infiniband_dhcp_settings : "UH_FMT"\n", ptr_struct->nv_config_infiniband_dhcp_settings);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_config_infiniband_boot_settings : "UH_FMT"\n", ptr_struct->nv_config_infiniband_boot_settings);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_config_dhcp_iscsi_parameters : "UH_FMT"\n", ptr_struct->nv_config_dhcp_iscsi_parameters);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_config_iscsi_parameters : "UH_FMT"\n", ptr_struct->nv_config_iscsi_parameters);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nv_config_boot_parameters : "UH_FMT"\n", ptr_struct->nv_config_boot_parameters);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "client_indentifier   : "UH_FMT"\n", ptr_struct->client_indentifier);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mac_admin_bit        : "UH_FMT"\n", ptr_struct->mac_admin_bit);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "iscsi_boot_to_target : "UH_FMT"\n", ptr_struct->iscsi_boot_to_target);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "iscsi_vlan_en        : "UH_FMT"\n", ptr_struct->iscsi_vlan_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "iscsi_tcp_timestamps_en : "UH_FMT"\n", ptr_struct->iscsi_tcp_timestamps_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "iscsi_chap_mutual_auth_en : "UH_FMT"\n", ptr_struct->iscsi_chap_mutual_auth_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "iscsi_chap_auth_en   : "UH_FMT"\n", ptr_struct->iscsi_chap_auth_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "iscsi_dhcp_params_en : "UH_FMT"\n", ptr_struct->iscsi_dhcp_params_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "iscsi_ipv4_dhcp_en   : "UH_FMT"\n", ptr_struct->iscsi_ipv4_dhcp_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "iscsi_lun_busy_retry_cnt : "UH_FMT"\n", ptr_struct->iscsi_lun_busy_retry_cnt);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "iscsi_link_up_delay_time : "UH_FMT"\n", ptr_struct->iscsi_link_up_delay_time);
-
-}
-
-int tools_open_query_def_params_per_port_size(void)
-{
-        return 28;
-}
-
-void tools_open_query_def_params_per_port_dump(const struct tools_open_query_def_params_per_port *ptr_struct, FILE* file)
-{
-       tools_open_query_def_params_per_port_print(ptr_struct, file, 0);
-}
-
-void tools_open_query_def_params_global_pack(const struct tools_open_query_def_params_global *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->fw_default_config_payload_version);
-
-       offset = 56;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->num_vfs);
-
-       offset = 52;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->uar_bar_size);
-
-       offset = 48;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->max_uar_bar_size);
-
-       offset = 42;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->boot_ip_ver);
-
-       offset = 32;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->sriov_en);
-
-}
-
-void tools_open_query_def_params_global_unpack(struct tools_open_query_def_params_global *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       ptr_struct->fw_default_config_payload_version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 56;
-       ptr_struct->num_vfs = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 52;
-       ptr_struct->uar_bar_size = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 48;
-       ptr_struct->max_uar_bar_size = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 42;
-       ptr_struct->boot_ip_ver = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 32;
-       ptr_struct->sriov_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_query_def_params_global_print(const struct tools_open_query_def_params_global *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_query_def_params_global ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fw_default_config_payload_version : "UH_FMT"\n", ptr_struct->fw_default_config_payload_version);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_vfs              : "UH_FMT"\n", ptr_struct->num_vfs);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "uar_bar_size         : "UH_FMT"\n", ptr_struct->uar_bar_size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_uar_bar_size     : "UH_FMT"\n", ptr_struct->max_uar_bar_size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_ip_ver          : "UH_FMT"\n", ptr_struct->boot_ip_ver);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "sriov_en             : "UH_FMT"\n", ptr_struct->sriov_en);
-
-}
-
-int tools_open_query_def_params_global_size(void)
-{
-        return 20;
-}
-
-void tools_open_query_def_params_global_dump(const struct tools_open_query_def_params_global *ptr_struct, FILE* file)
-{
-       tools_open_query_def_params_global_print(ptr_struct, file, 0);
-}
-
-void tools_open_phy_reg_pack(const union tools_open_phy_reg *ptr_struct, u_int8_t* ptr_buff)
-{
-       tools_open_pmdio_pack(&(ptr_struct->pmdio), ptr_buff);
-}
-
-void tools_open_phy_reg_unpack(union tools_open_phy_reg *ptr_struct, const u_int8_t* ptr_buff)
-{
-       tools_open_pmdio_unpack(&(ptr_struct->pmdio), ptr_buff);
-}
-
-void tools_open_phy_reg_print(const union tools_open_phy_reg *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_phy_reg ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pmdic:\n");
-       tools_open_pmdic_print(&(ptr_struct->pmdic), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pmdio:\n");
-       tools_open_pmdio_print(&(ptr_struct->pmdio), file, indent_level + 1);
-
-}
-
-int tools_open_phy_reg_size(void)
-{
-        return 264;
-}
-
-void tools_open_phy_reg_dump(const union tools_open_phy_reg *ptr_struct, FILE* file)
-{
-       tools_open_phy_reg_print(ptr_struct, file, 0);
-}
-
-void tools_open_mnv_cfg_pack(const union tools_open_mnv_cfg *ptr_struct, u_int8_t* ptr_buff)
-{
-       tools_open_mnvgn_pack(&(ptr_struct->mnvgn), ptr_buff);
-}
-
-void tools_open_mnv_cfg_unpack(union tools_open_mnv_cfg *ptr_struct, const u_int8_t* ptr_buff)
-{
-       tools_open_mnvgn_unpack(&(ptr_struct->mnvgn), ptr_buff);
-}
-
-void tools_open_mnv_cfg_print(const union tools_open_mnv_cfg *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_mnv_cfg ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mnva:\n");
-       tools_open_mnva_print(&(ptr_struct->mnva), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mnvi:\n");
-       tools_open_mnvi_print(&(ptr_struct->mnvi), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mnvia:\n");
-       tools_open_mnvia_print(&(ptr_struct->mnvia), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nvqc:\n");
-       tools_open_nvqc_print(&(ptr_struct->nvqc), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nvia:\n");
-       tools_open_nvia_print(&(ptr_struct->nvia), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nvda:\n");
-       tools_open_nvda_print(&(ptr_struct->nvda), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nvdi:\n");
-       tools_open_nvdi_print(&(ptr_struct->nvdi), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "nvqgc:\n");
-       tools_open_nvqgc_print(&(ptr_struct->nvqgc), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mvts:\n");
-       tools_open_mvts_print(&(ptr_struct->mvts), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mnvgn:\n");
-       tools_open_mnvgn_print(&(ptr_struct->mnvgn), file, indent_level + 1);
-
-}
-
-int tools_open_mnv_cfg_size(void)
-{
-        return 256;
-}
-
-void tools_open_mnv_cfg_dump(const union tools_open_mnv_cfg *ptr_struct, FILE* file)
-{
-       tools_open_mnv_cfg_print(ptr_struct, file, 0);
-}
-
-void tools_open_lldp_nb_dcbx_pack(const struct tools_open_lldp_nb_dcbx *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 31;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->ieee_dcbx_en);
-
-       offset = 30;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->cee_dcbx_en);
-
-       offset = 29;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->dcbx_willing);
-
-}
-
-void tools_open_lldp_nb_dcbx_unpack(struct tools_open_lldp_nb_dcbx *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 31;
-       ptr_struct->ieee_dcbx_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 30;
-       ptr_struct->cee_dcbx_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 29;
-       ptr_struct->dcbx_willing = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_lldp_nb_dcbx_print(const struct tools_open_lldp_nb_dcbx *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_lldp_nb_dcbx ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ieee_dcbx_en         : "UH_FMT"\n", ptr_struct->ieee_dcbx_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "cee_dcbx_en          : "UH_FMT"\n", ptr_struct->cee_dcbx_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "dcbx_willing         : "UH_FMT"\n", ptr_struct->dcbx_willing);
-
-}
-
-int tools_open_lldp_nb_dcbx_size(void)
-{
-        return 4;
-}
-
-void tools_open_lldp_nb_dcbx_dump(const struct tools_open_lldp_nb_dcbx *ptr_struct, FILE* file)
-{
-       tools_open_lldp_nb_dcbx_print(ptr_struct, file, 0);
-}
-
-void tools_open_lldp_nb_cap_pack(const struct tools_open_lldp_nb_cap *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 4;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->lldp_nb_dcbx_en);
-
-       offset = 2;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->lldp_nb_rx_cap);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->lldp_nb_tx_cap);
-
-}
-
-void tools_open_lldp_nb_cap_unpack(struct tools_open_lldp_nb_cap *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 4;
-       ptr_struct->lldp_nb_dcbx_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 2;
-       ptr_struct->lldp_nb_rx_cap = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 0;
-       ptr_struct->lldp_nb_tx_cap = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-}
-
-void tools_open_lldp_nb_cap_print(const struct tools_open_lldp_nb_cap *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_lldp_nb_cap ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_nb_dcbx_en      : "UH_FMT"\n", ptr_struct->lldp_nb_dcbx_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_nb_rx_cap       : "UH_FMT"\n", ptr_struct->lldp_nb_rx_cap);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_nb_tx_cap       : "UH_FMT"\n", ptr_struct->lldp_nb_tx_cap);
-
-}
-
-int tools_open_lldp_nb_cap_size(void)
-{
-        return 12;
-}
-
-void tools_open_lldp_nb_cap_dump(const struct tools_open_lldp_nb_cap *ptr_struct, FILE* file)
-{
-       tools_open_lldp_nb_cap_print(ptr_struct, file, 0);
-}
-
-void tools_open_lldp_client_settings_pack(const struct tools_open_lldp_client_settings *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 4;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->lldp_nb_dcbx);
-
-       offset = 2;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->lldp_nb_rx_mode);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->lldp_nb_tx_mode);
-
-}
-
-void tools_open_lldp_client_settings_unpack(struct tools_open_lldp_client_settings *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 4;
-       ptr_struct->lldp_nb_dcbx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 2;
-       ptr_struct->lldp_nb_rx_mode = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 0;
-       ptr_struct->lldp_nb_tx_mode = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-}
-
-void tools_open_lldp_client_settings_print(const struct tools_open_lldp_client_settings *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_lldp_client_settings ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_nb_dcbx         : "UH_FMT"\n", ptr_struct->lldp_nb_dcbx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_nb_rx_mode      : "UH_FMT"\n", ptr_struct->lldp_nb_rx_mode);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_nb_tx_mode      : "UH_FMT"\n", ptr_struct->lldp_nb_tx_mode);
-
-}
-
-int tools_open_lldp_client_settings_size(void)
-{
-        return 12;
-}
-
-void tools_open_lldp_client_settings_dump(const struct tools_open_lldp_client_settings *ptr_struct, FILE* file)
-{
-       tools_open_lldp_client_settings_print(ptr_struct, file, 0);
-}
-
-void tools_open_qos_cap_pack(const struct tools_open_qos_cap *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 28;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->max_num_of_vl);
-
-       offset = 24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->max_num_of_tc);
-
-}
-
-void tools_open_qos_cap_unpack(struct tools_open_qos_cap *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 28;
-       ptr_struct->max_num_of_vl = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 24;
-       ptr_struct->max_num_of_tc = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-}
-
-void tools_open_qos_cap_print(const struct tools_open_qos_cap *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_qos_cap ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_num_of_vl        : "UH_FMT"\n", ptr_struct->max_num_of_vl);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_num_of_tc        : "UH_FMT"\n", ptr_struct->max_num_of_tc);
-
-}
-
-int tools_open_qos_cap_size(void)
-{
-        return 12;
-}
-
-void tools_open_qos_cap_dump(const struct tools_open_qos_cap *ptr_struct, FILE* file)
-{
-       tools_open_qos_cap_print(ptr_struct, file, 0);
-}
-
-void tools_open_qos_pack(const struct tools_open_qos *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 28;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->num_of_vl);
-
-       offset = 24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->num_of_tc);
-
-}
-
-void tools_open_qos_unpack(struct tools_open_qos *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 28;
-       ptr_struct->num_of_vl = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 24;
-       ptr_struct->num_of_tc = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-}
-
-void tools_open_qos_print(const struct tools_open_qos *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_qos ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_of_vl            : "UH_FMT"\n", ptr_struct->num_of_vl);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_of_tc            : "UH_FMT"\n", ptr_struct->num_of_tc);
-
-}
-
-int tools_open_qos_size(void)
-{
-        return 12;
-}
-
-void tools_open_qos_dump(const struct tools_open_qos *ptr_struct, FILE* file)
-{
-       tools_open_qos_print(ptr_struct, file, 0);
-}
-
-void tools_open_option_rom_capability_pack(const struct tools_open_option_rom_capability *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->ip_ver);
-
-}
-
-void tools_open_option_rom_capability_unpack(struct tools_open_option_rom_capability *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       ptr_struct->ip_ver = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_option_rom_capability_print(const struct tools_open_option_rom_capability *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_option_rom_capability ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ip_ver               : "UH_FMT"\n", ptr_struct->ip_ver);
-
-}
-
-int tools_open_option_rom_capability_size(void)
-{
-        return 4;
-}
-
-void tools_open_option_rom_capability_dump(const struct tools_open_option_rom_capability *ptr_struct, FILE* file)
-{
-       tools_open_option_rom_capability_print(ptr_struct, file, 0);
-}
-
-void tools_open_boot_settings_ext_pack(const struct tools_open_boot_settings_ext *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 22;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->ip_ver);
-
-}
-
-void tools_open_boot_settings_ext_unpack(struct tools_open_boot_settings_ext *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 22;
-       ptr_struct->ip_ver = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-}
-
-void tools_open_boot_settings_ext_print(const struct tools_open_boot_settings_ext *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_boot_settings_ext ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ip_ver               : "UH_FMT"\n", ptr_struct->ip_ver);
-
-}
-
-int tools_open_boot_settings_ext_size(void)
-{
-        return 4;
-}
-
-void tools_open_boot_settings_ext_dump(const struct tools_open_boot_settings_ext *ptr_struct, FILE* file)
-{
-       tools_open_boot_settings_ext_print(ptr_struct, file, 0);
-}
-
-void tools_open_external_port_pack(const struct tools_open_external_port *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 31;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->port_owner);
-
-       offset = 30;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->allow_rd_counters);
-
-}
-
-void tools_open_external_port_unpack(struct tools_open_external_port *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 31;
-       ptr_struct->port_owner = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 30;
-       ptr_struct->allow_rd_counters = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_external_port_print(const struct tools_open_external_port *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_external_port ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "port_owner           : "UH_FMT"\n", ptr_struct->port_owner);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "allow_rd_counters    : "UH_FMT"\n", ptr_struct->allow_rd_counters);
-
-}
-
-int tools_open_external_port_size(void)
-{
-        return 8;
-}
-
-void tools_open_external_port_dump(const struct tools_open_external_port *ptr_struct, FILE* file)
-{
-       tools_open_external_port_print(ptr_struct, file, 0);
-}
-
-void tools_open_lldp_nb_pack(const struct tools_open_lldp_nb *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->lldp_nb_rx_en);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->lldp_nb_tx_en);
-
-       offset = 84;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->lldp_msg_tx_interval);
-
-       for (i = 0; i < 16; i++) {
-       offset = adb2c_calc_array_field_address(120, 8, i, 224, 1);
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->lldp_tx_tlv_mask[i]);
-       }
-
-}
-
-void tools_open_lldp_nb_unpack(struct tools_open_lldp_nb *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 1;
-       ptr_struct->lldp_nb_rx_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 0;
-       ptr_struct->lldp_nb_tx_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 84;
-       ptr_struct->lldp_msg_tx_interval = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12);
-
-       for (i = 0; i < 16; i++) {
-       offset = adb2c_calc_array_field_address(120, 8, i, 224, 1);
-       ptr_struct->lldp_tx_tlv_mask[i] = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-       }
-
-}
-
-void tools_open_lldp_nb_print(const struct tools_open_lldp_nb *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_lldp_nb ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_nb_rx_en        : "UH_FMT"\n", ptr_struct->lldp_nb_rx_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_nb_tx_en        : "UH_FMT"\n", ptr_struct->lldp_nb_tx_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_msg_tx_interval : "UH_FMT"\n", ptr_struct->lldp_msg_tx_interval);
-
-       for (i = 0; i < 16; i++) {
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_tx_tlv_mask_%03d : "UH_FMT"\n", i, ptr_struct->lldp_tx_tlv_mask[i]);
-       }
-
-}
-
-int tools_open_lldp_nb_size(void)
-{
-        return 28;
-}
-
-void tools_open_lldp_nb_dump(const struct tools_open_lldp_nb *ptr_struct, FILE* file)
-{
-       tools_open_lldp_nb_print(ptr_struct, file, 0);
-}
-
-void tools_open_roce_cc_ecn_pack(const struct tools_open_roce_cc_ecn *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->clamp_tgt_rate_after_time_inc);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->clamp_tgt_rate);
-
-       offset = 47;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 17, (u_int32_t)ptr_struct->rpg_time_reset);
-
-       offset = 81;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 15, (u_int32_t)ptr_struct->rpg_byte_reset);
-
-       offset = 123;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 5, (u_int32_t)ptr_struct->rpg_threshold);
-
-       offset = 129;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 31, (u_int32_t)ptr_struct->rpg_max_rate);
-
-       offset = 175;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 17, (u_int32_t)ptr_struct->rpg_ai_rate);
-
-       offset = 207;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 17, (u_int32_t)ptr_struct->rpg_hai_rate);
-
-       offset = 252;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->rpg_gd);
-
-       offset = 280;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->rpg_min_dec_fac);
-
-       offset = 303;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 17, (u_int32_t)ptr_struct->rpg_min_rate);
-
-       offset = 335;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 17, (u_int32_t)ptr_struct->rate_to_set_on_first_cnp);
-
-       offset = 374;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 10, (u_int32_t)ptr_struct->dce_tcp_g);
-
-       offset = 399;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 17, (u_int32_t)ptr_struct->dce_tcp_rtt);
-
-       offset = 431;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 17, (u_int32_t)ptr_struct->rate_reduce_monitor_period);
-
-       offset = 470;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 10, (u_int32_t)ptr_struct->initial_alpha_value);
-
-       offset = 495;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 17, (u_int32_t)ptr_struct->min_time_between_cnps);
-
-       offset = 541;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 3, (u_int32_t)ptr_struct->cnp_802p_prio);
-
-       offset = 530;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 6, (u_int32_t)ptr_struct->cnp_dscp);
-
-}
-
-void tools_open_roce_cc_ecn_unpack(struct tools_open_roce_cc_ecn *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 1;
-       ptr_struct->clamp_tgt_rate_after_time_inc = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 0;
-       ptr_struct->clamp_tgt_rate = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 47;
-       ptr_struct->rpg_time_reset = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 17);
-
-       offset = 81;
-       ptr_struct->rpg_byte_reset = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 15);
-
-       offset = 123;
-       ptr_struct->rpg_threshold = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 5);
-
-       offset = 129;
-       ptr_struct->rpg_max_rate = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 31);
-
-       offset = 175;
-       ptr_struct->rpg_ai_rate = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 17);
-
-       offset = 207;
-       ptr_struct->rpg_hai_rate = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 17);
-
-       offset = 252;
-       ptr_struct->rpg_gd = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 280;
-       ptr_struct->rpg_min_dec_fac = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 303;
-       ptr_struct->rpg_min_rate = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 17);
-
-       offset = 335;
-       ptr_struct->rate_to_set_on_first_cnp = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 17);
-
-       offset = 374;
-       ptr_struct->dce_tcp_g = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 10);
-
-       offset = 399;
-       ptr_struct->dce_tcp_rtt = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 17);
-
-       offset = 431;
-       ptr_struct->rate_reduce_monitor_period = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 17);
-
-       offset = 470;
-       ptr_struct->initial_alpha_value = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 10);
-
-       offset = 495;
-       ptr_struct->min_time_between_cnps = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 17);
-
-       offset = 541;
-       ptr_struct->cnp_802p_prio = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 3);
-
-       offset = 530;
-       ptr_struct->cnp_dscp = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 6);
-
-}
-
-void tools_open_roce_cc_ecn_print(const struct tools_open_roce_cc_ecn *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_roce_cc_ecn ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "clamp_tgt_rate_after_time_inc : "UH_FMT"\n", ptr_struct->clamp_tgt_rate_after_time_inc);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "clamp_tgt_rate       : "UH_FMT"\n", ptr_struct->clamp_tgt_rate);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rpg_time_reset       : "UH_FMT"\n", ptr_struct->rpg_time_reset);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rpg_byte_reset       : "UH_FMT"\n", ptr_struct->rpg_byte_reset);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rpg_threshold        : "UH_FMT"\n", ptr_struct->rpg_threshold);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rpg_max_rate         : "UH_FMT"\n", ptr_struct->rpg_max_rate);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rpg_ai_rate          : "UH_FMT"\n", ptr_struct->rpg_ai_rate);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rpg_hai_rate         : "UH_FMT"\n", ptr_struct->rpg_hai_rate);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rpg_gd               : "UH_FMT"\n", ptr_struct->rpg_gd);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rpg_min_dec_fac      : "UH_FMT"\n", ptr_struct->rpg_min_dec_fac);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rpg_min_rate         : "UH_FMT"\n", ptr_struct->rpg_min_rate);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rate_to_set_on_first_cnp : "UH_FMT"\n", ptr_struct->rate_to_set_on_first_cnp);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "dce_tcp_g            : "UH_FMT"\n", ptr_struct->dce_tcp_g);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "dce_tcp_rtt          : "UH_FMT"\n", ptr_struct->dce_tcp_rtt);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "rate_reduce_monitor_period : "UH_FMT"\n", ptr_struct->rate_reduce_monitor_period);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "initial_alpha_value  : "UH_FMT"\n", ptr_struct->initial_alpha_value);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "min_time_between_cnps : "UH_FMT"\n", ptr_struct->min_time_between_cnps);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "cnp_802p_prio        : "UH_FMT"\n", ptr_struct->cnp_802p_prio);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "cnp_dscp             : "UH_FMT"\n", ptr_struct->cnp_dscp);
-
-}
-
-int tools_open_roce_cc_ecn_size(void)
-{
-        return 68;
-}
-
-void tools_open_roce_cc_ecn_dump(const struct tools_open_roce_cc_ecn *ptr_struct, FILE* file)
-{
-       tools_open_roce_cc_ecn_print(ptr_struct, file, 0);
-}
-
-void tools_open_roce_cc_pack(const struct tools_open_roce_cc *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->roce_cc_enable_priority);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->roce_cc_algorithm);
-
-}
-
-void tools_open_roce_cc_unpack(struct tools_open_roce_cc *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       ptr_struct->roce_cc_enable_priority = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 0;
-       ptr_struct->roce_cc_algorithm = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_roce_cc_print(const struct tools_open_roce_cc *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_roce_cc ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "roce_cc_enable_priority : "UH_FMT"\n", ptr_struct->roce_cc_enable_priority);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "roce_cc_algorithm    : "UH_FMT"\n", ptr_struct->roce_cc_algorithm);
-
-}
-
-int tools_open_roce_cc_size(void)
-{
-        return 4;
-}
-
-void tools_open_roce_cc_dump(const struct tools_open_roce_cc *ptr_struct, FILE* file)
-{
-       tools_open_roce_cc_print(ptr_struct, file, 0);
-}
-
-void tools_open_roce_v_1_5_next_protocol_pack(const struct tools_open_roce_v_1_5_next_protocol *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->roce_over_ip_next_protocol);
-
-}
-
-void tools_open_roce_v_1_5_next_protocol_unpack(struct tools_open_roce_v_1_5_next_protocol *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       ptr_struct->roce_over_ip_next_protocol = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void tools_open_roce_v_1_5_next_protocol_print(const struct tools_open_roce_v_1_5_next_protocol *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_roce_v_1_5_next_protocol ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "roce_over_ip_next_protocol : "UH_FMT"\n", ptr_struct->roce_over_ip_next_protocol);
-
-}
-
-int tools_open_roce_v_1_5_next_protocol_size(void)
-{
-        return 4;
-}
-
-void tools_open_roce_v_1_5_next_protocol_dump(const struct tools_open_roce_v_1_5_next_protocol *ptr_struct, FILE* file)
-{
-       tools_open_roce_v_1_5_next_protocol_print(ptr_struct, file, 0);
-}
-
-void tools_open_vpi_settings_pack(const struct tools_open_vpi_settings *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 30;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->network_link_type);
-
-       offset = 28;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->default_link_type);
-
-}
-
-void tools_open_vpi_settings_unpack(struct tools_open_vpi_settings *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 30;
-       ptr_struct->network_link_type = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 28;
-       ptr_struct->default_link_type = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-}
-
-void tools_open_vpi_settings_print(const struct tools_open_vpi_settings *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_vpi_settings ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "network_link_type    : "UH_FMT"\n", ptr_struct->network_link_type);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "default_link_type    : "UH_FMT"\n", ptr_struct->default_link_type);
-
-}
-
-int tools_open_vpi_settings_size(void)
-{
-        return 4;
-}
-
-void tools_open_vpi_settings_dump(const struct tools_open_vpi_settings *ptr_struct, FILE* file)
-{
-       tools_open_vpi_settings_print(ptr_struct, file, 0);
-}
-
-void tools_open_bar_size_pack(const struct tools_open_bar_size *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->log_uar_bar_size);
-
-}
-
-void tools_open_bar_size_unpack(struct tools_open_bar_size *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       ptr_struct->log_uar_bar_size = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void tools_open_bar_size_print(const struct tools_open_bar_size *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_bar_size ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "log_uar_bar_size     : "U32H_FMT"\n", ptr_struct->log_uar_bar_size);
-
-}
-
-int tools_open_bar_size_size(void)
-{
-        return 4;
-}
-
-void tools_open_bar_size_dump(const struct tools_open_bar_size *ptr_struct, FILE* file)
-{
-       tools_open_bar_size_print(ptr_struct, file, 0);
-}
-
-void tools_open_sriov_pack(const struct tools_open_sriov *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->total_vfs);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->sriov_en);
-
-}
-
-void tools_open_sriov_unpack(struct tools_open_sriov *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       ptr_struct->total_vfs = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 0;
-       ptr_struct->sriov_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_sriov_print(const struct tools_open_sriov *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_sriov ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "total_vfs            : "UH_FMT"\n", ptr_struct->total_vfs);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "sriov_en             : "UH_FMT"\n", ptr_struct->sriov_en);
-
-}
-
-int tools_open_sriov_size(void)
-{
-        return 4;
-}
-
-void tools_open_sriov_dump(const struct tools_open_sriov *ptr_struct, FILE* file)
-{
-       tools_open_sriov_print(ptr_struct, file, 0);
-}
-
-void tools_open_preboot_flow_ctrl_pack(const struct tools_open_preboot_flow_ctrl *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->pfcrx);
-
-       offset = 16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->pfctx);
-
-       offset = 2;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->pfc_willing);
-
-       offset = 1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->pprx);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->pptx);
-
-}
-
-void tools_open_preboot_flow_ctrl_unpack(struct tools_open_preboot_flow_ctrl *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       ptr_struct->pfcrx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 16;
-       ptr_struct->pfctx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 2;
-       ptr_struct->pfc_willing = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 1;
-       ptr_struct->pprx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 0;
-       ptr_struct->pptx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_preboot_flow_ctrl_print(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_preboot_flow_ctrl ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pfcrx                : "UH_FMT"\n", ptr_struct->pfcrx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pfctx                : "UH_FMT"\n", ptr_struct->pfctx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pfc_willing          : "UH_FMT"\n", ptr_struct->pfc_willing);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pprx                 : "UH_FMT"\n", ptr_struct->pprx);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pptx                 : "UH_FMT"\n", ptr_struct->pptx);
-
-}
-
-int tools_open_preboot_flow_ctrl_size(void)
-{
-        return 4;
-}
-
-void tools_open_preboot_flow_ctrl_dump(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file)
-{
-       tools_open_preboot_flow_ctrl_print(ptr_struct, file, 0);
-}
-
-void tools_open_preboot_boot_settings_pack(const struct tools_open_preboot_boot_settings *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 20;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->boot_vlan);
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->legacy_boot_protocol);
-
-       offset = 5;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 3, (u_int32_t)ptr_struct->boot_retry_count);
-
-       offset = 1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->boot_vlan_en);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->boot_option_rom_en);
-
-}
-
-void tools_open_preboot_boot_settings_unpack(struct tools_open_preboot_boot_settings *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 20;
-       ptr_struct->boot_vlan = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12);
-
-       offset = 8;
-       ptr_struct->legacy_boot_protocol = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 5;
-       ptr_struct->boot_retry_count = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 3);
-
-       offset = 1;
-       ptr_struct->boot_vlan_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 0;
-       ptr_struct->boot_option_rom_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_preboot_boot_settings_print(const struct tools_open_preboot_boot_settings *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_preboot_boot_settings ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_vlan            : "UH_FMT"\n", ptr_struct->boot_vlan);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "legacy_boot_protocol : "UH_FMT"\n", ptr_struct->legacy_boot_protocol);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_retry_count     : "UH_FMT"\n", ptr_struct->boot_retry_count);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_vlan_en         : "UH_FMT"\n", ptr_struct->boot_vlan_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_option_rom_en   : "UH_FMT"\n", ptr_struct->boot_option_rom_en);
-
-}
-
-int tools_open_preboot_boot_settings_size(void)
-{
-        return 4;
-}
-
-void tools_open_preboot_boot_settings_dump(const struct tools_open_preboot_boot_settings *ptr_struct, FILE* file)
-{
-       tools_open_preboot_boot_settings_print(ptr_struct, file, 0);
-}
-
-void tools_open_boot_settings_pack(const struct tools_open_boot_settings *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 20;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->boot_vlan);
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->legacy_boot_protocol);
-
-       offset = 5;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 3, (u_int32_t)ptr_struct->boot_retry_conut);
-
-       offset = 1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->boot_vlan_en);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->boot_option_rom_en);
-
-}
-
-void tools_open_boot_settings_unpack(struct tools_open_boot_settings *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 20;
-       ptr_struct->boot_vlan = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12);
-
-       offset = 8;
-       ptr_struct->legacy_boot_protocol = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 5;
-       ptr_struct->boot_retry_conut = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 3);
-
-       offset = 1;
-       ptr_struct->boot_vlan_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 0;
-       ptr_struct->boot_option_rom_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_boot_settings_print(const struct tools_open_boot_settings *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_boot_settings ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_vlan            : "UH_FMT"\n", ptr_struct->boot_vlan);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "legacy_boot_protocol : "UH_FMT"\n", ptr_struct->legacy_boot_protocol);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_retry_conut     : "UH_FMT"\n", ptr_struct->boot_retry_conut);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_vlan_en         : "UH_FMT"\n", ptr_struct->boot_vlan_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_option_rom_en   : "UH_FMT"\n", ptr_struct->boot_option_rom_en);
-
-}
-
-int tools_open_boot_settings_size(void)
-{
-        return 4;
-}
-
-void tools_open_boot_settings_dump(const struct tools_open_boot_settings *ptr_struct, FILE* file)
-{
-       tools_open_boot_settings_print(ptr_struct, file, 0);
-}
-
-void tools_open_infiniband_boot_settings_pack(const struct tools_open_infiniband_boot_settings *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->boot_pkey);
-
-}
-
-void tools_open_infiniband_boot_settings_unpack(struct tools_open_infiniband_boot_settings *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 16;
-       ptr_struct->boot_pkey = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-}
-
-void tools_open_infiniband_boot_settings_print(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_infiniband_boot_settings ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_pkey            : "UH_FMT"\n", ptr_struct->boot_pkey);
-
-}
-
-int tools_open_infiniband_boot_settings_size(void)
-{
-        return 4;
-}
-
-void tools_open_infiniband_boot_settings_dump(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file)
-{
-       tools_open_infiniband_boot_settings_print(ptr_struct, file, 0);
-}
-
-void tools_open_iscsi_settings_pack(const struct tools_open_iscsi_settings *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 10;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->target_as_first_hdd_en);
-
-       offset = 8;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->boot_to_target);
-
-       offset = 7;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->ipv6_auto_config_en);
-
-       offset = 5;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->vlan_en);
-
-       offset = 4;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->tcp_timestamps_en);
-
-       offset = 3;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->chap_mutual_auth_en);
-
-       offset = 2;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->chap_auth_en);
-
-       offset = 1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->dhcp_iscsi_en);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->ipv4_dhcp_en);
-
-       offset = 52;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->vlan);
-
-       offset = 88;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->lun_busy_retry_count);
-
-       offset = 80;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->link_up_delay_time);
-
-}
-
-void tools_open_iscsi_settings_unpack(struct tools_open_iscsi_settings *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 10;
-       ptr_struct->target_as_first_hdd_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 8;
-       ptr_struct->boot_to_target = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2);
-
-       offset = 7;
-       ptr_struct->ipv6_auto_config_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 5;
-       ptr_struct->vlan_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 4;
-       ptr_struct->tcp_timestamps_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 3;
-       ptr_struct->chap_mutual_auth_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 2;
-       ptr_struct->chap_auth_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 1;
-       ptr_struct->dhcp_iscsi_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 0;
-       ptr_struct->ipv4_dhcp_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 52;
-       ptr_struct->vlan = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12);
-
-       offset = 88;
-       ptr_struct->lun_busy_retry_count = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 80;
-       ptr_struct->link_up_delay_time = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-}
-
-void tools_open_iscsi_settings_print(const struct tools_open_iscsi_settings *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_iscsi_settings ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "target_as_first_hdd_en : "UH_FMT"\n", ptr_struct->target_as_first_hdd_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_to_target       : "UH_FMT"\n", ptr_struct->boot_to_target);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ipv6_auto_config_en  : "UH_FMT"\n", ptr_struct->ipv6_auto_config_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "vlan_en              : "UH_FMT"\n", ptr_struct->vlan_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "tcp_timestamps_en    : "UH_FMT"\n", ptr_struct->tcp_timestamps_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "chap_mutual_auth_en  : "UH_FMT"\n", ptr_struct->chap_mutual_auth_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "chap_auth_en         : "UH_FMT"\n", ptr_struct->chap_auth_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "dhcp_iscsi_en        : "UH_FMT"\n", ptr_struct->dhcp_iscsi_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "ipv4_dhcp_en         : "UH_FMT"\n", ptr_struct->ipv4_dhcp_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "vlan                 : "UH_FMT"\n", ptr_struct->vlan);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lun_busy_retry_count : "UH_FMT"\n", ptr_struct->lun_busy_retry_count);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "link_up_delay_time   : "UH_FMT"\n", ptr_struct->link_up_delay_time);
-
-}
-
-int tools_open_iscsi_settings_size(void)
-{
-        return 12;
-}
-
-void tools_open_iscsi_settings_dump(const struct tools_open_iscsi_settings *ptr_struct, FILE* file)
-{
-       tools_open_iscsi_settings_print(ptr_struct, file, 0);
-}
-
-void tools_open_port_boot_state_pack(const struct tools_open_port_boot_state *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->aux_power_indication_gpio);
-
-       offset = 2;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->aux_power_indication_gpio_en);
-
-       offset = 1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->standby_on_aux);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->power_up_on_aux);
-
-}
-
-void tools_open_port_boot_state_unpack(struct tools_open_port_boot_state *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 24;
-       ptr_struct->aux_power_indication_gpio = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8);
-
-       offset = 2;
-       ptr_struct->aux_power_indication_gpio_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 1;
-       ptr_struct->standby_on_aux = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 0;
-       ptr_struct->power_up_on_aux = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_port_boot_state_print(const struct tools_open_port_boot_state *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_port_boot_state ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "aux_power_indication_gpio : "UH_FMT"\n", ptr_struct->aux_power_indication_gpio);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "aux_power_indication_gpio_en : "UH_FMT"\n", ptr_struct->aux_power_indication_gpio_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "standby_on_aux       : "UH_FMT"\n", ptr_struct->standby_on_aux);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "power_up_on_aux      : "UH_FMT"\n", ptr_struct->power_up_on_aux);
-
-}
-
-int tools_open_port_boot_state_size(void)
-{
-        return 4;
-}
-
-void tools_open_port_boot_state_dump(const struct tools_open_port_boot_state *ptr_struct, FILE* file)
-{
-       tools_open_port_boot_state_print(ptr_struct, file, 0);
-}
-
-void tools_open_pci_configuration_pack(const struct tools_open_pci_configuration *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 7;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->pf_bar_size_valid);
-
-       offset = 6;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->vf_bar_size_valid);
-
-       offset = 5;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->num_pfs_msix_valid);
-
-       offset = 4;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->num_vfs_msix_valid);
-
-       offset = 3;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->num_pfs_valid);
-
-       offset = 2;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->fpp_valid);
-
-       offset = 1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->full_vf_qos_valid);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->sriov_valid);
-
-       offset = 48;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->total_vfs);
-
-       offset = 44;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->num_pfs);
-
-       offset = 34;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->fpp_en);
-
-       offset = 33;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->full_vf_qos);
-
-       offset = 32;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->sriov_en);
-
-       offset = 90;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 6, (u_int32_t)ptr_struct->log_pf_uar_bar_size);
-
-       offset = 84;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 6, (u_int32_t)ptr_struct->log_vf_uar_bar_size);
-
-       offset = 74;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 10, (u_int32_t)ptr_struct->num_pf_msix);
-
-       offset = 64;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 10, (u_int32_t)ptr_struct->num_vf_msix);
-
-}
-
-void tools_open_pci_configuration_unpack(struct tools_open_pci_configuration *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 7;
-       ptr_struct->pf_bar_size_valid = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 6;
-       ptr_struct->vf_bar_size_valid = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 5;
-       ptr_struct->num_pfs_msix_valid = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 4;
-       ptr_struct->num_vfs_msix_valid = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 3;
-       ptr_struct->num_pfs_valid = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 2;
-       ptr_struct->fpp_valid = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 1;
-       ptr_struct->full_vf_qos_valid = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 0;
-       ptr_struct->sriov_valid = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 48;
-       ptr_struct->total_vfs = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 44;
-       ptr_struct->num_pfs = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 34;
-       ptr_struct->fpp_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 33;
-       ptr_struct->full_vf_qos = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 32;
-       ptr_struct->sriov_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 90;
-       ptr_struct->log_pf_uar_bar_size = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 6);
-
-       offset = 84;
-       ptr_struct->log_vf_uar_bar_size = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 6);
-
-       offset = 74;
-       ptr_struct->num_pf_msix = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 10);
-
-       offset = 64;
-       ptr_struct->num_vf_msix = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 10);
-
-}
-
-void tools_open_pci_configuration_print(const struct tools_open_pci_configuration *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_pci_configuration ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pf_bar_size_valid    : "UH_FMT"\n", ptr_struct->pf_bar_size_valid);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "vf_bar_size_valid    : "UH_FMT"\n", ptr_struct->vf_bar_size_valid);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_pfs_msix_valid   : "UH_FMT"\n", ptr_struct->num_pfs_msix_valid);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_vfs_msix_valid   : "UH_FMT"\n", ptr_struct->num_vfs_msix_valid);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_pfs_valid        : "UH_FMT"\n", ptr_struct->num_pfs_valid);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fpp_valid            : "UH_FMT"\n", ptr_struct->fpp_valid);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "full_vf_qos_valid    : "UH_FMT"\n", ptr_struct->full_vf_qos_valid);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "sriov_valid          : "UH_FMT"\n", ptr_struct->sriov_valid);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "total_vfs            : "UH_FMT"\n", ptr_struct->total_vfs);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_pfs              : "UH_FMT"\n", ptr_struct->num_pfs);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fpp_en               : "UH_FMT"\n", ptr_struct->fpp_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "full_vf_qos          : "UH_FMT"\n", ptr_struct->full_vf_qos);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "sriov_en             : "UH_FMT"\n", ptr_struct->sriov_en);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "log_pf_uar_bar_size  : "UH_FMT"\n", ptr_struct->log_pf_uar_bar_size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "log_vf_uar_bar_size  : "UH_FMT"\n", ptr_struct->log_vf_uar_bar_size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_pf_msix          : "UH_FMT"\n", ptr_struct->num_pf_msix);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_vf_msix          : "UH_FMT"\n", ptr_struct->num_vf_msix);
-
-}
-
-int tools_open_pci_configuration_size(void)
-{
-        return 12;
-}
-
-void tools_open_pci_configuration_dump(const struct tools_open_pci_configuration *ptr_struct, FILE* file)
-{
-       tools_open_pci_configuration_print(ptr_struct, file, 0);
-}
-
-void tools_open_pci_capabilities_pack(const struct tools_open_pci_capabilities *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 7;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->pf_bar_size_supported);
-
-       offset = 6;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->vf_bar_size_supported);
-
-       offset = 5;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->num_pf_msix_supported);
-
-       offset = 4;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->num_vf_msix_supported);
-
-       offset = 3;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->num_pfs_supported);
-
-       offset = 2;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->max_total_bar_valid);
-
-       offset = 1;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->max_total_msix_valid);
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->max_vfs_per_pf_valid);
-
-       offset = 48;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->max_vfs_per_pf);
-
-       offset = 44;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->max_num_pfs);
-
-       offset = 34;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->fpp_support);
-
-       offset = 33;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->vf_qos_control_support);
-
-       offset = 32;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->sriov_support);
-
-       offset = 90;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 6, (u_int32_t)ptr_struct->log_max_pf_uar_bar_size1);
-
-       offset = 84;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 6, (u_int32_t)ptr_struct->log_max_vf_uar_bar_size);
-
-       offset = 74;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 10, (u_int32_t)ptr_struct->max_num_pf_msix);
-
-       offset = 64;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 10, (u_int32_t)ptr_struct->max_num_vf_msix);
-
-       offset = 96;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->max_total_msix);
-
-       offset = 128;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->max_total_bar);
-
-}
-
-void tools_open_pci_capabilities_unpack(struct tools_open_pci_capabilities *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 7;
-       ptr_struct->pf_bar_size_supported = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 6;
-       ptr_struct->vf_bar_size_supported = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 5;
-       ptr_struct->num_pf_msix_supported = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 4;
-       ptr_struct->num_vf_msix_supported = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 3;
-       ptr_struct->num_pfs_supported = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 2;
-       ptr_struct->max_total_bar_valid = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 1;
-       ptr_struct->max_total_msix_valid = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 0;
-       ptr_struct->max_vfs_per_pf_valid = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 48;
-       ptr_struct->max_vfs_per_pf = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16);
-
-       offset = 44;
-       ptr_struct->max_num_pfs = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-       offset = 34;
-       ptr_struct->fpp_support = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 33;
-       ptr_struct->vf_qos_control_support = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 32;
-       ptr_struct->sriov_support = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 90;
-       ptr_struct->log_max_pf_uar_bar_size1 = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 6);
-
-       offset = 84;
-       ptr_struct->log_max_vf_uar_bar_size = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 6);
-
-       offset = 74;
-       ptr_struct->max_num_pf_msix = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 10);
-
-       offset = 64;
-       ptr_struct->max_num_vf_msix = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 10);
-
-       offset = 96;
-       ptr_struct->max_total_msix = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset = 128;
-       ptr_struct->max_total_bar = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void tools_open_pci_capabilities_print(const struct tools_open_pci_capabilities *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_pci_capabilities ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pf_bar_size_supported : "UH_FMT"\n", ptr_struct->pf_bar_size_supported);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "vf_bar_size_supported : "UH_FMT"\n", ptr_struct->vf_bar_size_supported);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_pf_msix_supported : "UH_FMT"\n", ptr_struct->num_pf_msix_supported);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_vf_msix_supported : "UH_FMT"\n", ptr_struct->num_vf_msix_supported);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "num_pfs_supported    : "UH_FMT"\n", ptr_struct->num_pfs_supported);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_total_bar_valid  : "UH_FMT"\n", ptr_struct->max_total_bar_valid);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_total_msix_valid : "UH_FMT"\n", ptr_struct->max_total_msix_valid);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_vfs_per_pf_valid : "UH_FMT"\n", ptr_struct->max_vfs_per_pf_valid);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_vfs_per_pf       : "UH_FMT"\n", ptr_struct->max_vfs_per_pf);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_num_pfs          : "UH_FMT"\n", ptr_struct->max_num_pfs);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "fpp_support          : "UH_FMT"\n", ptr_struct->fpp_support);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "vf_qos_control_support : "UH_FMT"\n", ptr_struct->vf_qos_control_support);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "sriov_support        : "UH_FMT"\n", ptr_struct->sriov_support);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "log_max_pf_uar_bar_size1 : "UH_FMT"\n", ptr_struct->log_max_pf_uar_bar_size1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "log_max_vf_uar_bar_size : "UH_FMT"\n", ptr_struct->log_max_vf_uar_bar_size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_num_pf_msix      : "UH_FMT"\n", ptr_struct->max_num_pf_msix);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_num_vf_msix      : "UH_FMT"\n", ptr_struct->max_num_vf_msix);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_total_msix       : "U32H_FMT"\n", ptr_struct->max_total_msix);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_total_bar        : "U32H_FMT"\n", ptr_struct->max_total_bar);
-
-}
-
-int tools_open_pci_capabilities_size(void)
-{
-        return 20;
-}
-
-void tools_open_pci_capabilities_dump(const struct tools_open_pci_capabilities *ptr_struct, FILE* file)
-{
-       tools_open_pci_capabilities_print(ptr_struct, file, 0);
-}
-
-void tools_open_tpt_configuration_pack(const struct tools_open_tpt_configuration *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 28;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->log_max_payload_size);
-
-}
-
-void tools_open_tpt_configuration_unpack(struct tools_open_tpt_configuration *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 28;
-       ptr_struct->log_max_payload_size = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4);
-
-}
-
-void tools_open_tpt_configuration_print(const struct tools_open_tpt_configuration *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_tpt_configuration ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "log_max_payload_size : "UH_FMT"\n", ptr_struct->log_max_payload_size);
-
-}
-
-int tools_open_tpt_configuration_size(void)
-{
-        return 4;
-}
-
-void tools_open_tpt_configuration_dump(const struct tools_open_tpt_configuration *ptr_struct, FILE* file)
-{
-       tools_open_tpt_configuration_print(ptr_struct, file, 0);
-}
-
-void tools_open_tpt_capabilities_pack(const struct tools_open_tpt_capabilities *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->log_max_payload_size_supported);
-
-}
-
-void tools_open_tpt_capabilities_unpack(struct tools_open_tpt_capabilities *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       ptr_struct->log_max_payload_size_supported = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_tpt_capabilities_print(const struct tools_open_tpt_capabilities *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_tpt_capabilities ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "log_max_payload_size_supported : "UH_FMT"\n", ptr_struct->log_max_payload_size_supported);
-
-}
-
-int tools_open_tpt_capabilities_size(void)
-{
-        return 4;
-}
-
-void tools_open_tpt_capabilities_dump(const struct tools_open_tpt_capabilities *ptr_struct, FILE* file)
-{
-       tools_open_tpt_capabilities_print(ptr_struct, file, 0);
-}
-
-void tools_open_infiniband_dc_settings_pack(const struct tools_open_infiniband_dc_settings *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 27;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 5, (u_int32_t)ptr_struct->log_dcr_hash_table_size);
-
-       offset = 40;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 24, (u_int32_t)ptr_struct->dcr_lifo_size);
-
-}
-
-void tools_open_infiniband_dc_settings_unpack(struct tools_open_infiniband_dc_settings *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 27;
-       ptr_struct->log_dcr_hash_table_size = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 5);
-
-       offset = 40;
-       ptr_struct->dcr_lifo_size = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 24);
-
-}
-
-void tools_open_infiniband_dc_settings_print(const struct tools_open_infiniband_dc_settings *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_infiniband_dc_settings ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "log_dcr_hash_table_size : "UH_FMT"\n", ptr_struct->log_dcr_hash_table_size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "dcr_lifo_size        : "UH_FMT"\n", ptr_struct->dcr_lifo_size);
-
-}
-
-int tools_open_infiniband_dc_settings_size(void)
-{
-        return 8;
-}
-
-void tools_open_infiniband_dc_settings_dump(const struct tools_open_infiniband_dc_settings *ptr_struct, FILE* file)
-{
-       tools_open_infiniband_dc_settings_print(ptr_struct, file, 0);
-}
-
-void tools_open_infiniband_dc_capabilities_pack(const struct tools_open_infiniband_dc_capabilities *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->min_log_dcr_hash_table_size);
-
-       offset = 32;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->max_log_dcr_hash_table_size);
-
-       offset = 64;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->min_dcr_lifo_size);
-
-       offset = 96;
-       adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->max_dcr_lifo_size);
-
-}
-
-void tools_open_infiniband_dc_capabilities_unpack(struct tools_open_infiniband_dc_capabilities *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 0;
-       ptr_struct->min_log_dcr_hash_table_size = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset = 32;
-       ptr_struct->max_log_dcr_hash_table_size = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset = 64;
-       ptr_struct->min_dcr_lifo_size = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-       offset = 96;
-       ptr_struct->max_dcr_lifo_size = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4);
-
-}
-
-void tools_open_infiniband_dc_capabilities_print(const struct tools_open_infiniband_dc_capabilities *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_infiniband_dc_capabilities ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "min_log_dcr_hash_table_size : "U32H_FMT"\n", ptr_struct->min_log_dcr_hash_table_size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_log_dcr_hash_table_size : "U32H_FMT"\n", ptr_struct->max_log_dcr_hash_table_size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "min_dcr_lifo_size    : "U32H_FMT"\n", ptr_struct->min_dcr_lifo_size);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "max_dcr_lifo_size    : "U32H_FMT"\n", ptr_struct->max_dcr_lifo_size);
-
-}
-
-int tools_open_infiniband_dc_capabilities_size(void)
-{
-        return 16;
-}
-
-void tools_open_infiniband_dc_capabilities_dump(const struct tools_open_infiniband_dc_capabilities *ptr_struct, FILE* file)
-{
-       tools_open_infiniband_dc_capabilities_print(ptr_struct, file, 0);
-}
-
-void tools_open_wol_pack(const struct tools_open_wol *ptr_struct, u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 22;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_psswd_magic);
-
-       offset = 21;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_magic);
-
-       offset = 20;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_arp);
-
-       offset = 19;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_bc);
-
-       offset = 18;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_mc);
-
-       offset = 17;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_uc);
-
-       offset = 16;
-       adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_phy);
-
-}
-
-void tools_open_wol_unpack(struct tools_open_wol *ptr_struct, const u_int8_t* ptr_buff)
-{
-       u_int32_t offset;
-       int i = 0;
-       (void)offset;
-       (void)i;
-       (void)ptr_struct;
-       (void)ptr_buff;
-
-       offset = 22;
-       ptr_struct->en_wol_psswd_magic = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 21;
-       ptr_struct->en_wol_magic = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 20;
-       ptr_struct->en_wol_arp = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 19;
-       ptr_struct->en_wol_bc = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 18;
-       ptr_struct->en_wol_mc = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 17;
-       ptr_struct->en_wol_uc = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-       offset = 16;
-       ptr_struct->en_wol_phy = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1);
-
-}
-
-void tools_open_wol_print(const struct tools_open_wol *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_wol ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "en_wol_psswd_magic   : "UH_FMT"\n", ptr_struct->en_wol_psswd_magic);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "en_wol_magic         : "UH_FMT"\n", ptr_struct->en_wol_magic);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "en_wol_arp           : "UH_FMT"\n", ptr_struct->en_wol_arp);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "en_wol_bc            : "UH_FMT"\n", ptr_struct->en_wol_bc);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "en_wol_mc            : "UH_FMT"\n", ptr_struct->en_wol_mc);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "en_wol_uc            : "UH_FMT"\n", ptr_struct->en_wol_uc);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "en_wol_phy           : "UH_FMT"\n", ptr_struct->en_wol_phy);
-
-}
-
-int tools_open_wol_size(void)
-{
-        return 8;
-}
-
-void tools_open_wol_dump(const struct tools_open_wol *ptr_struct, FILE* file)
-{
-       tools_open_wol_print(ptr_struct, file, 0);
-}
-
-void tools_open_misc_structs_pack(const union tools_open_misc_structs *ptr_struct, u_int8_t* ptr_buff)
-{
-       tools_open_mfg_info_pack(&(ptr_struct->mfg_info), ptr_buff);
-}
-
-void tools_open_misc_structs_unpack(union tools_open_misc_structs *ptr_struct, const u_int8_t* ptr_buff)
-{
-       tools_open_mfg_info_unpack(&(ptr_struct->mfg_info), ptr_buff);
-}
-
-void tools_open_misc_structs_print(const union tools_open_misc_structs *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_misc_structs ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "image_info:\n");
-       tools_open_image_info_print(&(ptr_struct->image_info), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "mfg_info:\n");
-       tools_open_mfg_info_print(&(ptr_struct->mfg_info), file, indent_level + 1);
-
-}
-
-int tools_open_misc_structs_size(void)
-{
-        return 1024;
-}
-
-void tools_open_misc_structs_dump(const union tools_open_misc_structs *ptr_struct, FILE* file)
-{
-       tools_open_misc_structs_print(ptr_struct, file, 0);
-}
-
-void tools_open_aux_img_data_pack(const union tools_open_aux_img_data *ptr_struct, u_int8_t* ptr_buff)
-{
-       tools_open_aux_tlv_pack(&(ptr_struct->aux_tlv), ptr_buff);
-}
-
-void tools_open_aux_img_data_unpack(union tools_open_aux_img_data *ptr_struct, const u_int8_t* ptr_buff)
-{
-       tools_open_aux_tlv_unpack(&(ptr_struct->aux_tlv), ptr_buff);
-}
-
-void tools_open_aux_img_data_print(const union tools_open_aux_img_data *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_aux_img_data ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "aux_data_hdr:\n");
-       tools_open_aux_data_hdr_print(&(ptr_struct->aux_data_hdr), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "aux_tlv:\n");
-       tools_open_aux_tlv_print(&(ptr_struct->aux_tlv), file, indent_level + 1);
-
-}
-
-int tools_open_aux_img_data_size(void)
-{
-        return 256;
-}
-
-void tools_open_aux_img_data_dump(const union tools_open_aux_img_data *ptr_struct, FILE* file)
-{
-       tools_open_aux_img_data_print(ptr_struct, file, 0);
-}
-
-void tools_open_hcr_cmds_pack(const union tools_open_hcr_cmds *ptr_struct, u_int8_t* ptr_buff)
-{
-       tools_open_query_def_params_per_port_pack(&(ptr_struct->query_def_params_per_port), ptr_buff);
-}
-
-void tools_open_hcr_cmds_unpack(union tools_open_hcr_cmds *ptr_struct, const u_int8_t* ptr_buff)
-{
-       tools_open_query_def_params_per_port_unpack(&(ptr_struct->query_def_params_per_port), ptr_buff);
-}
-
-void tools_open_hcr_cmds_print(const union tools_open_hcr_cmds *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_hcr_cmds ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "query_def_params_global:\n");
-       tools_open_query_def_params_global_print(&(ptr_struct->query_def_params_global), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "query_def_params_per_port:\n");
-       tools_open_query_def_params_per_port_print(&(ptr_struct->query_def_params_per_port), file, indent_level + 1);
-
-}
-
-int tools_open_hcr_cmds_size(void)
-{
-        return 264;
-}
-
-void tools_open_hcr_cmds_dump(const union tools_open_hcr_cmds *ptr_struct, FILE* file)
-{
-       tools_open_hcr_cmds_print(ptr_struct, file, 0);
-}
-
-void tools_open_access_registers_pack(const union tools_open_access_registers *ptr_struct, u_int8_t* ptr_buff)
-{
-       tools_open_phy_reg_pack(&(ptr_struct->PhyReg), ptr_buff);
-}
-
-void tools_open_access_registers_unpack(union tools_open_access_registers *ptr_struct, const u_int8_t* ptr_buff)
-{
-       tools_open_phy_reg_unpack(&(ptr_struct->PhyReg), ptr_buff);
-}
-
-void tools_open_access_registers_print(const union tools_open_access_registers *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_access_registers ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "MNVReg:\n");
-       tools_open_mnv_cfg_print(&(ptr_struct->MNVReg), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "PhyReg:\n");
-       tools_open_phy_reg_print(&(ptr_struct->PhyReg), file, indent_level + 1);
-
-}
-
-int tools_open_access_registers_size(void)
-{
-        return 512;
-}
-
-void tools_open_access_registers_dump(const union tools_open_access_registers *ptr_struct, FILE* file)
-{
-       tools_open_access_registers_print(ptr_struct, file, 0);
-}
-
-void tools_open_nv_cfg_pack(const union tools_open_nv_cfg *ptr_struct, u_int8_t* ptr_buff)
-{
-       tools_open_lldp_nb_dcbx_pack(&(ptr_struct->lldp_nb_dcbx), ptr_buff);
-}
-
-void tools_open_nv_cfg_unpack(union tools_open_nv_cfg *ptr_struct, const u_int8_t* ptr_buff)
-{
-       tools_open_lldp_nb_dcbx_unpack(&(ptr_struct->lldp_nb_dcbx), ptr_buff);
-}
-
-void tools_open_nv_cfg_print(const union tools_open_nv_cfg *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_nv_cfg ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "wol:\n");
-       tools_open_wol_print(&(ptr_struct->wol), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "infiniband_dc_capabilities:\n");
-       tools_open_infiniband_dc_capabilities_print(&(ptr_struct->infiniband_dc_capabilities), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "infiniband_dc_settings:\n");
-       tools_open_infiniband_dc_settings_print(&(ptr_struct->infiniband_dc_settings), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "tpt_capabilities:\n");
-       tools_open_tpt_capabilities_print(&(ptr_struct->tpt_capabilities), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "tpt_configuration:\n");
-       tools_open_tpt_configuration_print(&(ptr_struct->tpt_configuration), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pci_capabilities:\n");
-       tools_open_pci_capabilities_print(&(ptr_struct->pci_capabilities), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "pci_configuration:\n");
-       tools_open_pci_configuration_print(&(ptr_struct->pci_configuration), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "port_boot_state:\n");
-       tools_open_port_boot_state_print(&(ptr_struct->port_boot_state), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "iscsi_settings:\n");
-       tools_open_iscsi_settings_print(&(ptr_struct->iscsi_settings), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "infiniband_boot_settings:\n");
-       tools_open_infiniband_boot_settings_print(&(ptr_struct->infiniband_boot_settings), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_settings:\n");
-       tools_open_boot_settings_print(&(ptr_struct->boot_settings), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "preboot_boot_settings:\n");
-       tools_open_preboot_boot_settings_print(&(ptr_struct->preboot_boot_settings), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "preboot_flow_ctrl:\n");
-       tools_open_preboot_flow_ctrl_print(&(ptr_struct->preboot_flow_ctrl), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "sriov:\n");
-       tools_open_sriov_print(&(ptr_struct->sriov), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "bar_size:\n");
-       tools_open_bar_size_print(&(ptr_struct->bar_size), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "vpi_settings:\n");
-       tools_open_vpi_settings_print(&(ptr_struct->vpi_settings), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "roce_v_1_5_next_protocol:\n");
-       tools_open_roce_v_1_5_next_protocol_print(&(ptr_struct->roce_v_1_5_next_protocol), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "roce_cc:\n");
-       tools_open_roce_cc_print(&(ptr_struct->roce_cc), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "roce_cc_ecn:\n");
-       tools_open_roce_cc_ecn_print(&(ptr_struct->roce_cc_ecn), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_nb:\n");
-       tools_open_lldp_nb_print(&(ptr_struct->lldp_nb), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "external_port:\n");
-       tools_open_external_port_print(&(ptr_struct->external_port), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "boot_settings_ext:\n");
-       tools_open_boot_settings_ext_print(&(ptr_struct->boot_settings_ext), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "option_rom_capability:\n");
-       tools_open_option_rom_capability_print(&(ptr_struct->option_rom_capability), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "qos:\n");
-       tools_open_qos_print(&(ptr_struct->qos), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "qos_cap:\n");
-       tools_open_qos_cap_print(&(ptr_struct->qos_cap), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_client_settings:\n");
-       tools_open_lldp_client_settings_print(&(ptr_struct->lldp_client_settings), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_nb_cap:\n");
-       tools_open_lldp_nb_cap_print(&(ptr_struct->lldp_nb_cap), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "lldp_nb_dcbx:\n");
-       tools_open_lldp_nb_dcbx_print(&(ptr_struct->lldp_nb_dcbx), file, indent_level + 1);
-
-}
-
-int tools_open_nv_cfg_size(void)
-{
-        return 256;
-}
-
-void tools_open_nv_cfg_dump(const union tools_open_nv_cfg *ptr_struct, FILE* file)
-{
-       tools_open_nv_cfg_print(ptr_struct, file, 0);
-}
-
-void tools_open_tools_open_pack(const union tools_open_tools_open *ptr_struct, u_int8_t* ptr_buff)
-{
-       tools_open_misc_structs_pack(&(ptr_struct->MiscStructs), ptr_buff);
-}
-
-void tools_open_tools_open_unpack(union tools_open_tools_open *ptr_struct, const u_int8_t* ptr_buff)
-{
-       tools_open_misc_structs_unpack(&(ptr_struct->MiscStructs), ptr_buff);
-}
-
-void tools_open_tools_open_print(const union tools_open_tools_open *ptr_struct, FILE* file, int indent_level)
-{
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "======== tools_open_tools_open ========\n");
-       int i = 0;
-       (void)i;
-       (void)ptr_struct;
-       (void)file;
-       (void)indent_level;
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "NVConfig:\n");
-       tools_open_nv_cfg_print(&(ptr_struct->NVConfig), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "AceessRegisters:\n");
-       tools_open_access_registers_print(&(ptr_struct->AceessRegisters), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "HcrCmds:\n");
-       tools_open_hcr_cmds_print(&(ptr_struct->HcrCmds), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "AuxImgData:\n");
-       tools_open_aux_img_data_print(&(ptr_struct->AuxImgData), file, indent_level + 1);
-
-       adb2c_add_indentation(file, indent_level);
-       fprintf(file, "MiscStructs:\n");
-       tools_open_misc_structs_print(&(ptr_struct->MiscStructs), file, indent_level + 1);
-
-}
-
-int tools_open_tools_open_size(void)
-{
-        return 1048576;
-}
-
-void tools_open_tools_open_dump(const union tools_open_tools_open *ptr_struct, FILE* file)
-{
-       tools_open_tools_open_print(ptr_struct, file, 0);
-}
-
diff --git a/tools_layouts/tools_open_layouts.h b/tools_layouts/tools_open_layouts.h
deleted file mode 100644 (file)
index 318db63..0000000
+++ /dev/null
@@ -1,2155 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/***
- *** This file was generated at "2016-05-09 12:11:56"
- *** by:
- ***    > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_
- ***/
-#ifndef TOOLS_OPEN_LAYOUTS_H
-#define TOOLS_OPEN_LAYOUTS_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "adb_to_c_utils.h"/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_tlv_type_dw {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        u_int32_t tlv_type_dw;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_per_port_type {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.15 */
-        u_int16_t param_idx;
-       /* Description -  */
-       /* 0.16 - 0.23 */
-        u_int8_t port;
-       /* Description -  */
-       /* 0.24 - 4.31 */
-        u_int8_t param_class;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_bmc_type {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.12 */
-        u_int16_t param_idx;
-       /* Description -  */
-       /* 0.13 - 0.17 */
-        u_int8_t channel;
-       /* Description -  */
-       /* 0.18 - 0.23 */
-        u_int8_t host;
-       /* Description -  */
-       /* 0.24 - 4.31 */
-        u_int8_t param_class;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_per_host_type {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.9 */
-        u_int16_t param_idx;
-       /* Description -  */
-       /* 0.10 - 0.17 */
-        u_int8_t function;
-       /* Description -  */
-       /* 0.18 - 0.23 */
-        u_int8_t host;
-       /* Description -  */
-       /* 0.24 - 4.31 */
-        u_int8_t param_class;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_eswitch_type {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.15 */
-        u_int16_t param_idx;
-       /* Description -  */
-       /* 0.16 - 0.17 */
-        u_int8_t port;
-       /* Description -  */
-       /* 0.18 - 0.23 */
-        u_int8_t host;
-       /* Description -  */
-       /* 0.24 - 4.31 */
-        u_int8_t param_class;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_global_type {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.23 */
-        u_int32_t param_idx;
-       /* Description -  */
-       /* 0.24 - 4.31 */
-        u_int8_t param_class;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-union tools_open_tlv_type {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_global_type global;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_eswitch_type eswitch;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_per_host_type per_host;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_bmc_type bmc;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_per_port_type per_port;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_tlv_type_dw tlv_type_dw;
-};
-
-/* Description -   */
-/* Size in bytes - 8 */
-struct tools_open_ts_entry {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Timestamp day     - 2 packed BCD */
-       /* 0.0 - 0.7 */
-        u_int8_t ts_day;
-       /* Description - Timestamp month   - 2 packed BCD */
-       /* 0.8 - 0.15 */
-        u_int8_t ts_month;
-       /* Description - Timestamp year    - 4 packed BCD */
-       /* 0.16 - 4.31 */
-        u_int16_t ts_year;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - Timestamp seconds - 2 packed BCD */
-       /* 4.8 - 4.15 */
-        u_int8_t ts_seconds;
-       /* Description - Timestamp minotes - 2 packed BCD */
-       /* 4.16 - 4.23 */
-        u_int8_t ts_minutes;
-       /* Description - Timestamp hour    - 2 packed BCD */
-       /* 4.24 - 8.31 */
-        u_int8_t ts_hour;
-};
-
-/* Description -   */
-/* Size in bytes - 8 */
-struct tools_open_fw_version {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - fw_version_major */
-       /* 0.16 - 4.31 */
-        u_int16_t fw_ver_major;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - fw version subminor */
-       /* 4.0 - 4.15 */
-        u_int16_t fw_ver_subminor;
-       /* Description - fw_version_minor */
-       /* 4.16 - 8.31 */
-        u_int16_t fw_ver_minor;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_pmdio_addr_data {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Data (Clause 22) / Address/Data (Clause 45) */
-       /* 0.0 - 0.15 */
-        u_int16_t data;
-       /* Description - Address (Clause 45)
-This field is only valid for Address + Read and Address + Write operations, providing the address. For other Clause 45 operations the data field provides the address when appropriate.
- */
-       /* 0.16 - 4.31 */
-        u_int16_t addr;
-};
-
-/* Description -   */
-/* Size in bytes - 12 */
-struct tools_open_nv_hdr_fifth_gen {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Size of configuration item data in bytes between 0..256 */
-       /* 0.0 - 0.7 */
-        u_int8_t length;
-       /* Description - 0 - FW writes configuration item directly
-1 - FW writes configuration to a temporary aread untill NVCT operation is called */
-       /* 0.11 - 0.11 */
-        u_int8_t shadow;
-       /* Description - Configuration item version */
-       /* 0.12 - 0.15 */
-        u_int8_t version;
-       /* Description - when set, the default field is supported. */
-       /* 0.22 - 0.22 */
-        u_int8_t default_supported;
-       /* Description - when set in query , will display the default configuration */
-       /* 0.23 - 0.23 */
-        u_int8_t default_;
-       /* Description - enables reading the TLV by lower priorities
-0 - TLV can be read by the subsequent lifecycle priorities.
-1 - TLV cannot be read by the subsequent lifecycle priorities.
- */
-       /* 0.24 - 0.24 */
-        u_int8_t rd_en;
-       /* Description - enables overwriting the TLV by lower priorities
-
-0 - Can only be overwritten by the current lifecycle priority
-1 - Allowed to be overwritten by subsequent lifecycle priorities
- */
-       /* 0.25 - 0.25 */
-        u_int8_t over_en;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 8.31 */
-        union tools_open_tlv_type type;
-};
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct tools_open_timestamp {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - fw_version */
-       /* 0.0 - 8.31 */
-        struct tools_open_fw_version fw_version;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - Timestamp */
-       /* 8.0 - 16.31 */
-        struct tools_open_ts_entry ts_entry;
-};
-
-/* Description -   */
-/* Size in bytes - 8 */
-struct tools_open_nv_hdr {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Tlv type */
-       /* 0.0 - 0.15 */
-        u_int16_t type;
-       /* Description - size of tlv data in dwords (not including header) */
-       /* 0.18 - 0.29 */
-        u_int16_t length;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - Type Modifier. E.G.: Port number when the config is port related */
-       /* 4.16 - 4.23 */
-        u_int8_t type_mod;
-       /* Description - Shadow: i.e if set the Fw will not update the tlv immediately but wait for a command */
-       /* 4.24 - 4.24 */
-        u_int8_t shadow;
-       /* Description - Pad count: for non dword alligned tlvs */
-       /* 4.25 - 4.26 */
-        u_int8_t pad_cnt;
-       /* Description - Data version can be set by caller or left as 0. */
-       /* 4.28 - 8.31 */
-        u_int8_t version;
-};
-
-/* Description -   */
-/* Size in bytes - 20 */
-struct tools_open_aux_tlv_header {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.7 */
-        u_int8_t minor_version;
-       /* Description -  */
-       /* 0.8 - 0.15 */
-        u_int8_t major_version;
-       /* Description -  */
-       /* 0.16 - 0.23 */
-        u_int8_t type;
-       /* Description -  */
-       /* 0.28 - 4.31 */
-        u_int8_t header_type;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 8.31 */
-        u_int32_t length;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description -  */
-       /* 8.0 - 8.15 */
-        u_int16_t crc;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description -  */
-       /* 12.0 - 16.31 */
-        u_int32_t reserved0;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description -  */
-       /* 16.0 - 20.31 */
-        u_int32_t reserved1;
-};
-
-/* Description -   */
-/* Size in bytes - 264 */
-struct tools_open_pmdio {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - 000 - NOP
-001 - Address (reserved for Clause 22)
-010 - Read
-011 - Write
-100 - Post Read Increment Address (reserved for Clause 22)
-110 - Address + Read - Generates Address cycle and then Read cycle in Clause 45 (reserved for Clause 22)
-111 - Address + Write - Generates Address cycle and then Write cycle in Clause 45 (reserved for Clause 22)
- */
-       /* 0.0 - 0.2 */
-        u_int8_t operation;
-       /* Description - MDIO I/F definition:
-00 - Clause 22
-01 - Clause 45
- */
-       /* 0.8 - 0.9 */
-        u_int8_t clause;
-       /* Description - Local port number */
-       /* 0.16 - 0.23 */
-        u_int8_t local_port;
-       /* Description - Lock bit. Setting this bit will lock the access to port's MDIO
-Used for operations that requires continuous MDIO accesses.
-
-In order to guarantee atomicity of some operations, the port MDIO interface can be locked to a specific interface.
-When the lock bit is set, no MDIO accesses through another interface (FW/driver/tools) are allowed on the port.
-An attempt to set the lock bit while it is locked by another interface should return a RESOURCE/_BUSY status.
- */
-       /* 0.31 - 4.31 */
-        u_int8_t lock;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - Reg Address (Clause 22) / MDIO Manageable Device address (Clause 45) */
-       /* 4.0 - 4.4 */
-        u_int8_t reg_adr_mmd;
-       /* Description - Index of last entry in the operations list. 0 means single operation (backward compatible).
-Valid values are 0..63
- */
-       /* 4.8 - 4.15 */
-        u_int8_t last_op_idx;
-       /* Description - Number of operations actually executed by FW. Driver write 0 to this field. FW increment the field with any execution of an entry in the operations list. */
-       /* 4.16 - 4.23 */
-        u_int8_t num_ops_done;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - addr/data entry */
-       /* 8.0 - 264.31 */
-        struct tools_open_pmdio_addr_data mdio_trans[64];
-};
-
-/* Description -   */
-/* Size in bytes - 12 */
-struct tools_open_pmdic {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Local port number */
-       /* 0.16 - 0.23 */
-        u_int8_t local_port;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - Bit 0 - NOP
-Bit 1 - Address (reserved for Clause 22)
-Bit 2 - Read
-Bit 3 - Write
-Bit 4 - Post Read Increment Address (reserved for Clause 22)
-Bit 6 - Address + Read - Generates Address cycle and then Read cycle in Clause 45 (reserved for Clause 22)
-Bit 7- Address + Write - Generates Address cycle and then Write cycle in Clause 45 (reserved for Clause 22)
- */
-       /* 4.0 - 4.7 */
-        u_int8_t operation_cap;
-       /* Description - MDIO I/F definition:
-00 - Clause 22
-01 - Clause 45
- */
-       /* 4.24 - 4.25 */
-        u_int8_t clause;
-       /* Description - MDIO present:
-00 - MDIO not present
-01 - External MDIO present
- */
-       /* 4.30 - 8.31 */
-        u_int8_t mdio_preset;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - Bit 0 External Phy FW master
-Used for external Phy FW burning. When set, the MDIO I/F is used for an external phy FW burn
- */
-       /* 8.0 - 8.7 */
-        u_int8_t misc_cap;
-};
-
-/* Description -   */
-/* Size in bytes - 156 */
-struct tools_open_mnvgn {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Pointer to the NV parameter */
-       /* 0.0 - 4.31 */
-        u_int32_t nv_pointer;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description -  */
-       /* 16.0 - 28.31 */
-        struct tools_open_nv_hdr_fifth_gen nv_hdr;
-/*---------------- DWORD[7] (Offset 0x1c) ----------------*/
-       /* Description -  */
-       /* 28.24 - 156.23 */
-        u_int8_t nv_data[128];
-};
-
-/* Description -   */
-/* Size in bytes - 20 */
-struct tools_open_mvts {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - A SET operation with this flag set will only check if the new timestamp can be configured without upda ting NVRAM */
-       /* 0.29 - 0.29 */
-        u_int8_t check_timestamp_flag;
-       /* Description - A GET operation with this flag set, will return the running FW version instead */
-       /* 0.30 - 0.30 */
-        u_int8_t running_flag;
-       /* Description - A SET operation with this flag on will clear the running and other bank timestamps */
-       /* 0.31 - 4.31 */
-        u_int8_t clear_all_ts_flag;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - Timestamp entry */
-       /* 4.0 - 20.31 */
-        struct tools_open_timestamp timestamp;
-};
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct tools_open_nvqgc {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - NVDA read factory settings. 0: Unsupported. 1: Supported. */
-       /* 0.0 - 0.0 */
-        u_int8_t read_factory_settings_support;
-};
-
-/* Description -   */
-/* Size in bytes - 12 */
-struct tools_open_nvdi {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct tools_open_nv_hdr_fifth_gen nv_hdr;
-};
-
-/* Description -   */
-/* Size in bytes - 256 */
-struct tools_open_nvda {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct tools_open_nv_hdr_fifth_gen nv_hdr;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description -  */
-       /* 12.24 - 140.23 */
-        u_int8_t data[128];
-};
-
-/* Description -   */
-/* Size in bytes - 20 */
-struct tools_open_nvia {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct tools_open_nv_hdr_fifth_gen nv_hdr;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description - Information targeted for invalidation
-0 - All NVRAM parameters
-1 - NVLOG
- */
-       /* 12.0 - 12.2 */
-        u_int8_t target;
-};
-
-/* Description -   */
-/* Size in bytes - 8 */
-struct tools_open_nvqc {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        union tools_open_tlv_type type;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - the configuration item is supported and can be read */
-       /* 4.0 - 4.0 */
-        u_int8_t support_rd;
-       /* Description - the configuration item is supported and can be updated */
-       /* 4.1 - 4.1 */
-        u_int8_t support_wr;
-       /* Description - The maximum version of the configuration item currently supported by the firmware. */
-       /* 4.4 - 4.7 */
-        u_int8_t version;
-};
-
-/* Description -   */
-/* Size in bytes - 8 */
-struct tools_open_mnvia {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 8.31 */
-        struct tools_open_nv_hdr nv_hdr;
-};
-
-/* Description -   */
-/* Size in bytes - 8 */
-struct tools_open_mnvi {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 8.31 */
-        struct tools_open_nv_hdr nv_hdr;
-};
-
-/* Description -   */
-/* Size in bytes - 256 */
-struct tools_open_mnva {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 8.31 */
-        struct tools_open_nv_hdr nv_hdr;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description -  */
-       /* 8.24 - 136.23 */
-        u_int8_t data[128];
-};
-
-/* Description -   */
-/* Size in bytes - 320 */
-struct tools_open_mfg_info {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.24 - 16.23 */
-        char psid[17];
-/*---------------- DWORD[7] (Offset 0x1c) ----------------*/
-       /* Description - MFG_INFO section minor version */
-       /* 28.16 - 28.23 */
-        u_int8_t minor_version;
-       /* Description - MFG_INFO section major version */
-       /* 28.24 - 32.31 */
-        u_int8_t major_version;
-/*---------------- DWORD[24] (Offset 0x60) ----------------*/
-       /* Description - original PRS used to generate the FW binary */
-       /* 96.24 - 192.23 */
-        char orig_prs_name[97];
-};
-
-/* Description -   */
-/* Size in bytes - 1024 */
-struct tools_open_image_info {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - IMAGE_INFO section minor version */
-       /* 0.16 - 0.23 */
-        u_int8_t minor_version;
-       /* Description - IMAGE_INFO section major version */
-       /* 0.24 - 4.31 */
-        u_int8_t major_version;
-/*---------------- DWORD[9] (Offset 0x24) ----------------*/
-       /* Description -  */
-       /* 36.24 - 52.23 */
-        char psid[17];
-/*---------------- DWORD[116] (Offset 0x1d0) ----------------*/
-       /* Description - Product description */
-       /* 464.24 - 720.23 */
-        char description[257];
-/*---------------- DWORD[208] (Offset 0x340) ----------------*/
-       /* Description - Product name */
-       /* 832.24 - 896.23 */
-        char name[65];
-/*---------------- DWORD[224] (Offset 0x380) ----------------*/
-       /* Description - PRS used to generate the FW binary */
-       /* 896.24 - 992.23 */
-        char prs_name[97];
-};
-
-/* Description -   */
-/* Size in bytes - 256 */
-struct tools_open_aux_tlv {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 20.31 */
-        struct tools_open_aux_tlv_header aux_tlv_header;
-/*---------------- DWORD[5] (Offset 0x14) ----------------*/
-       /* Description - tlv data */
-       /* 20.24 - 148.23 */
-        u_int8_t data[128];
-};
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct tools_open_aux_data_hdr {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - 0x544c563a : ascii for "TLV:"
- */
-       /* 0.0 - 4.31 */
-        u_int32_t signature0;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - 0x6548bc86 */
-       /* 4.0 - 8.31 */
-        u_int32_t signature1;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - 0x01020305 */
-       /* 8.0 - 12.31 */
-        u_int32_t signature2;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description - 0x080d1522 */
-       /* 12.0 - 16.31 */
-        u_int32_t signature3;
-};
-
-/* Description -   */
-/* Size in bytes - 28 */
-struct tools_open_query_def_params_per_port {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Firmware supports NV config settings 0x12 on the given port. */
-       /* 0.18 - 0.18 */
-        u_int8_t nv_config_vpi;
-       /* Description - Firmware supports NV config settings 0x10 on the given port. */
-       /* 0.19 - 0.19 */
-        u_int8_t nv_config_wol;
-       /* Description -  */
-       /* 0.24 - 4.31 */
-        u_int8_t fw_default_config_payload_version;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 4.11 */
-        u_int16_t default_boot_vlan;
-       /* Description -  */
-       /* 4.16 - 4.19 */
-        u_int8_t default_boot_protocol;
-       /* Description -  */
-       /* 4.20 - 4.23 */
-        u_int8_t default_boot_retry_cnt;
-       /* Description -  */
-       /* 4.25 - 4.26 */
-        u_int8_t default_network_link_type;
-       /* Description -  */
-       /* 4.27 - 4.27 */
-        u_int8_t default_en_wol_magic;
-       /* Description -  */
-       /* 4.28 - 4.28 */
-        u_int8_t default_boot_vlan_en;
-       /* Description -  */
-       /* 4.29 - 4.29 */
-        u_int8_t default_boot_option_rom_en;
-       /* Description -  */
-       /* 4.30 - 4.30 */
-        u_int8_t default_pprx;
-       /* Description -  */
-       /* 4.31 - 8.31 */
-        u_int8_t default_pptx;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description -  */
-       /* 8.0 - 8.15 */
-        u_int16_t default_boot_pkey;
-       /* Description -  */
-       /* 8.24 - 8.25 */
-        u_int8_t boot_ip_ver;
-       /* Description - Legacy option ROM supports NV config setting 0x2023. */
-       /* 8.27 - 8.27 */
-        u_int8_t nv_config_infiniband_dhcp_settings;
-       /* Description - Legacy option ROM supports NV config setting 0x2022. */
-       /* 8.28 - 8.28 */
-        u_int8_t nv_config_infiniband_boot_settings;
-       /* Description -  */
-       /* 8.29 - 8.29 */
-        u_int8_t nv_config_dhcp_iscsi_parameters;
-       /* Description -  */
-       /* 8.30 - 8.30 */
-        u_int8_t nv_config_iscsi_parameters;
-       /* Description -  */
-       /* 8.31 - 12.31 */
-        u_int8_t nv_config_boot_parameters;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description - Default value of the client_identifier field in the InfiniBand DHCP settings TLV. */
-       /* 12.18 - 12.19 */
-        u_int8_t client_indentifier;
-       /* Description - Default value of the mac_admin_bit in the InfiniBand DHCP settings TLV. */
-       /* 12.20 - 12.21 */
-        u_int8_t mac_admin_bit;
-       /* Description -  */
-       /* 12.22 - 12.23 */
-        u_int8_t iscsi_boot_to_target;
-       /* Description -  */
-       /* 12.26 - 12.26 */
-        u_int8_t iscsi_vlan_en;
-       /* Description -  */
-       /* 12.27 - 12.27 */
-        u_int8_t iscsi_tcp_timestamps_en;
-       /* Description -  */
-       /* 12.28 - 12.28 */
-        u_int8_t iscsi_chap_mutual_auth_en;
-       /* Description -  */
-       /* 12.29 - 12.29 */
-        u_int8_t iscsi_chap_auth_en;
-       /* Description -  */
-       /* 12.30 - 12.30 */
-        u_int8_t iscsi_dhcp_params_en;
-       /* Description -  */
-       /* 12.31 - 16.31 */
-        u_int8_t iscsi_ipv4_dhcp_en;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description -  */
-       /* 16.0 - 16.7 */
-        u_int8_t iscsi_lun_busy_retry_cnt;
-       /* Description -  */
-       /* 16.8 - 16.15 */
-        u_int8_t iscsi_link_up_delay_time;
-};
-
-/* Description -   */
-/* Size in bytes - 20 */
-struct tools_open_query_def_params_global {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.24 - 4.31 */
-        u_int8_t fw_default_config_payload_version;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - default number of virtual functions */
-       /* 4.0 - 4.7 */
-        u_int8_t num_vfs;
-       /* Description - default uar bar size (log2 format) */
-       /* 4.8 - 4.11 */
-        u_int8_t uar_bar_size;
-       /* Description - maximum value allowed for the uar bar size (log2 base) */
-       /* 4.12 - 4.15 */
-        u_int8_t max_uar_bar_size;
-       /* Description -  */
-       /* 4.21 - 4.21 */
-        u_int8_t boot_ip_ver;
-       /* Description - default value of sriov (enabled or disabled) */
-       /* 4.31 - 8.31 */
-        u_int8_t sriov_en;
-};
-
-/* Description -   */
-/* Size in bytes - 264 */
-union tools_open_phy_reg {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct tools_open_pmdic pmdic;
-       /* Description -  */
-       /* 0.0 - 264.31 */
-        struct tools_open_pmdio pmdio;
-};
-
-/* Description -   */
-/* Size in bytes - 256 */
-union tools_open_mnv_cfg {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 256.31 */
-        struct tools_open_mnva mnva;
-       /* Description -  */
-       /* 0.0 - 8.31 */
-        struct tools_open_mnvi mnvi;
-       /* Description -  */
-       /* 0.0 - 8.31 */
-        struct tools_open_mnvia mnvia;
-       /* Description -  */
-       /* 0.0 - 8.31 */
-        struct tools_open_nvqc nvqc;
-       /* Description -  */
-       /* 0.0 - 20.31 */
-        struct tools_open_nvia nvia;
-       /* Description -  */
-       /* 0.0 - 256.31 */
-        struct tools_open_nvda nvda;
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct tools_open_nvdi nvdi;
-       /* Description -  */
-       /* 0.0 - 16.31 */
-        struct tools_open_nvqgc nvqgc;
-       /* Description -  */
-       /* 0.0 - 20.31 */
-        struct tools_open_mvts mvts;
-       /* Description -  */
-       /* 0.0 - 156.31 */
-        struct tools_open_mnvgn mnvgn;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_lldp_nb_dcbx {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.0 */
-        u_int8_t ieee_dcbx_en;
-       /* Description -  */
-       /* 0.1 - 0.1 */
-        u_int8_t cee_dcbx_en;
-       /* Description -  */
-       /* 0.2 - 0.2 */
-        u_int8_t dcbx_willing;
-};
-
-/* Description -   */
-/* Size in bytes - 12 */
-struct tools_open_lldp_nb_cap {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.27 - 0.27 */
-        u_int8_t lldp_nb_dcbx_en;
-       /* Description -  */
-       /* 0.28 - 0.29 */
-        u_int8_t lldp_nb_rx_cap;
-       /* Description -  */
-       /* 0.30 - 4.31 */
-        u_int8_t lldp_nb_tx_cap;
-};
-
-/* Description -   */
-/* Size in bytes - 12 */
-struct tools_open_lldp_client_settings {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.27 - 0.27 */
-        u_int8_t lldp_nb_dcbx;
-       /* Description -  */
-       /* 0.28 - 0.29 */
-        u_int8_t lldp_nb_rx_mode;
-       /* Description -  */
-       /* 0.30 - 4.31 */
-        u_int8_t lldp_nb_tx_mode;
-};
-
-/* Description -   */
-/* Size in bytes - 12 */
-struct tools_open_qos_cap {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.3 */
-        u_int8_t max_num_of_vl;
-       /* Description -  */
-       /* 0.4 - 0.7 */
-        u_int8_t max_num_of_tc;
-};
-
-/* Description -   */
-/* Size in bytes - 12 */
-struct tools_open_qos {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.3 */
-        u_int8_t num_of_vl;
-       /* Description -  */
-       /* 0.4 - 0.7 */
-        u_int8_t num_of_tc;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_option_rom_capability {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - flexboot supports configuration of PXE boot IP version defined in boot settings ext parameter */
-       /* 0.31 - 4.31 */
-        u_int8_t ip_ver;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_boot_settings_ext {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Select which IP protocol version will be used by flexboot */
-       /* 0.8 - 0.9 */
-        u_int8_t ip_ver;
-};
-
-/* Description -   */
-/* Size in bytes - 8 */
-struct tools_open_external_port {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 0.0 */
-        u_int8_t port_owner;
-       /* Description -  */
-       /* 0.1 - 0.1 */
-        u_int8_t allow_rd_counters;
-};
-
-/* Description -   */
-/* Size in bytes - 28 */
-struct tools_open_lldp_nb {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Enable processing of incoming LLDB NB BPDUs
-Default: Disable
- */
-       /* 0.30 - 0.30 */
-        u_int8_t lldp_nb_rx_en;
-       /* Description - Enable transmission of LLDP Next Bridge BPDUs
-Default: Enabled
- */
-       /* 0.31 - 4.31 */
-        u_int8_t lldp_nb_tx_en;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - Interval for sending LLDP NB PDUs in seconds
-Default: 30
- */
-       /* 8.0 - 8.11 */
-        u_int16_t lldp_msg_tx_interval;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description - A bitmask saying which of the LLDP-TLV to send
-Default: b1111  (only TLVs 0..3) \96 according to the standard these are mandatory TLVs that must always be enabled
-
-An enabled TLV will not be send if a corresponding TLV is not defined
- */
-       /* 12.24 - 28.23 */
-        u_int8_t lldp_tx_tlv_mask[16];
-};
-
-/* Description -   */
-/* Size in bytes - 68 */
-struct tools_open_roce_cc_ecn {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Default: True
-When receiving an CNP, the target rate should be updated if the transmission rate was increased due to the timer, and not only due to the byte counter
- */
-       /* 0.30 - 0.30 */
-        u_int8_t clamp_tgt_rate_after_time_inc;
-       /* Description - default - False
- */
-       /* 0.31 - 4.31 */
-        u_int8_t clamp_tgt_rate;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - Time between rate increases if no CNPs are received. Given in u-seconds.
-Default: 2
- */
-       /* 4.0 - 4.16 */
-        u_int32_t rpg_time_reset;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - Transmitted data between rate increases if no CNPs are received. Given in Bytes.
-  0 == disabled  TBD: update the PRM
-Default: 150
- */
-       /* 8.0 - 8.14 */
-        u_int16_t rpg_byte_reset;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description - The number of times rpByteStage or rpTimeStage can count before the RP rate control state machine advances states.
-Default: 5
- */
-       /* 12.0 - 12.4 */
-        u_int8_t rpg_threshold;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description - The maximum rate, in Mbits per second, at which an RP can transmit. Once this limit is reached, the RP rate limited is released and the flow is not rate limited any more.
-Default: 0 (Full port speed) \96 TBD update PRM
- */
-       /* 16.0 - 16.30 */
-        u_int32_t rpg_max_rate;
-/*---------------- DWORD[5] (Offset 0x14) ----------------*/
-       /* Description - The rate, in Mbits per second, used to increase rpTargetRate in the RPR_ACTIVE_INCREASE.
-Default:  10
- */
-       /* 20.0 - 20.16 */
-        u_int32_t rpg_ai_rate;
-/*---------------- DWORD[6] (Offset 0x18) ----------------*/
-       /* Description - The rate, in Mbits per second, used to increase rpTargetRate in the RPR_HYPER_INCREASE state
-Default: 50
- */
-       /* 24.0 - 24.16 */
-        u_int32_t rpg_hai_rate;
-/*---------------- DWORD[7] (Offset 0x1c) ----------------*/
-       /* Description - -  If a CNP is received, the flow rate is reduced at the beginning of the next rate_reduce_monitor_period interval to (1-Alpha/Gd)*CurrentRate. rpg_gd is given as log2(Gd), where Gd may only be powers of 2.
-Default: 7 
- */
-       /* 28.0 - 28.3 */
-        u_int8_t rpg_gd;
-/*---------------- DWORD[8] (Offset 0x20) ----------------*/
-       /* Description - The minimum factor by which the current transmit rate can be changed when processing a CNP. Value is given as a percentage (1-100).
-Default: 50
- */
-       /* 32.0 - 32.7 */
-        u_int8_t rpg_min_dec_fac;
-/*---------------- DWORD[9] (Offset 0x24) ----------------*/
-       /* Description - The minimum value, in Mb per second, for rate to limit.
-Default: 2000
- */
-       /* 36.0 - 36.16 */
-        u_int32_t rpg_min_rate;
-/*---------------- DWORD[10] (Offset 0x28) ----------------*/
-       /* Description - The rate that is set for the flow when a rate limiter is allocated to it upon first CNP received, in Mbps
-Default: 0 Port speed (TBD update PRM)
- */
-       /* 40.0 - 40.16 */
-        u_int32_t rate_to_set_on_first_cnp;
-/*---------------- DWORD[11] (Offset 0x2c) ----------------*/
-       /* Description - Used to update the congestion estimator (alpha) once every dce_tcp_rtt microseconds, according to the equation:
-Alpha = (cnp_received * dceTcpG) + (1 - dceTcpG) * alpha .
-dceTcpG is divided by 2^10.
-cnp_received is set to one if a CNP was received for this flow during period since the previous update and the current update
-Default: 64
- */
-       /* 44.0 - 44.9 */
-        u_int16_t dce_tcp_g;
-/*---------------- DWORD[12] (Offset 0x30) ----------------*/
-       /* Description - The time between updates of the alpha value, in microseconds.
-Default: 2
- */
-       /* 48.0 - 48.16 */
-        u_int32_t dce_tcp_rtt;
-/*---------------- DWORD[13] (Offset 0x34) ----------------*/
-       /* Description - The minimum time between 2 consecutive rate reductions for a single flow. Rate reduction will occur only if a CNP is received during the relevant time interval.
-Default: 2
- */
-       /* 52.0 - 52.16 */
-        u_int32_t rate_reduce_monitor_period;
-/*---------------- DWORD[14] (Offset 0x38) ----------------*/
-       /* Description - The initial value of alpha to use when receiving the first CNP for a flow. Expressed in a fixed point fraction of 2^10.
-Default: TBD
- */
-       /* 56.0 - 56.9 */
-        u_int16_t initial_alpha_value;
-/*---------------- DWORD[15] (Offset 0x3c) ----------------*/
-       /* Description - Minimum time between sending cnps from the port, in microseconds.
-Default: 0 
- */
-       /* 60.0 - 60.16 */
-        u_int32_t min_time_between_cnps;
-/*---------------- DWORD[16] (Offset 0x40) ----------------*/
-       /* Description - The 802.1p priority value of the generated CNP for this port
-Default: 7
- */
-       /* 64.0 - 64.2 */
-        u_int8_t cnp_802p_prio;
-       /* Description - The DiffServ Code Point of the generated CNP for this port
-Default: 0
- */
-       /* 64.8 - 64.13 */
-        u_int8_t cnp_dscp;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_roce_cc {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Per priority enable disable (0..7)
-Default: False
- */
-       /* 0.0 - 0.7 */
-        u_int8_t roce_cc_enable_priority;
-       /* Description - 0 = ECN
-1 = QCN
- */
-       /* 0.31 - 4.31 */
-        u_int8_t roce_cc_algorithm;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_roce_v_1_5_next_protocol {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - the next protocol value set in the IPv4/IPv6
-packets for RoCE v1.5
-default = 0xfe
- */
-       /* 0.0 - 0.7 */
-        u_int8_t roce_over_ip_next_protocol;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_vpi_settings {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Network link type:
-0 - Reserved
-1 - InfiniBand
-2 - Ethernet
- */
-       /* 0.0 - 0.1 */
-        u_int8_t network_link_type;
-       /* Description - 0 - Reserved
-1 - Infiniband
-2 - Ethernet
-Valid for CX4 and above only
-when VPI network link type is selcted this field determines
-the default link type when no cable is connected */
-       /* 0.2 - 0.3 */
-        u_int8_t default_link_type;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_bar_size {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Base 2 log of the size of the physical function\92s first BAR, in MBs. E.g. for 8MB the value is 3. */
-       /* 0.0 - 4.31 */
-        u_int32_t log_uar_bar_size;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_sriov {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - The total number of VFs that can be supported. */
-       /* 0.0 - 0.15 */
-        u_int16_t total_vfs;
-       /* Description - 1 when SRIOV is enabled: SRIOV capability will appear on the PCI configuration header. */
-       /* 0.31 - 4.31 */
-        u_int8_t sriov_en;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_preboot_flow_ctrl {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Per priority bit mask. For each priority:
-0 \96 ignore incoming PFC frames regarding this priority.
-1 \96 respect incoming PFC frames on this priority.
- */
-       /* 0.0 - 0.7 */
-        u_int8_t pfcrx;
-       /* Description - Per priority bit mask. For each priority:
-
-0 \96 no PFC pause frames generation for this priority.
-1 \96 generate PFC pause frames for this priority.
-PFC and global pauses are mutually exclusive.
- */
-       /* 0.8 - 0.15 */
-        u_int8_t pfctx;
-       /* Description - For future DCBX support. */
-       /* 0.29 - 0.29 */
-        u_int8_t pfc_willing;
-       /* Description - 0 \96 ignore received pause frames
-1 \96 respect received pause frames
- */
-       /* 0.30 - 0.30 */
-        u_int8_t pprx;
-       /* Description - 0 \96 no pause frame generation.
-1 \96 generate pause frames.
-PFC and global pauses are mutually exclusive.
- */
-       /* 0.31 - 4.31 */
-        u_int8_t pptx;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_preboot_boot_settings {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - VLAN ID for network boot. */
-       /* 0.0 - 0.11 */
-        u_int16_t boot_vlan;
-       /* Description - 0  None disable legacy boot.
-1  PXE (DHCP/TFTP boot).
-2  iSCSI
-
-3  PXE + iSCSI
-4-255  Reserved
- */
-       /* 0.16 - 0.23 */
-        u_int8_t legacy_boot_protocol;
-       /* Description - Number of retries to attempt in case of boot failure.
-7 indicate indefinite retries.
- */
-       /* 0.24 - 0.26 */
-        u_int8_t boot_retry_count;
-       /* Description - 1 Enable VLAN mode for network boot */
-       /* 0.30 - 0.30 */
-        u_int8_t boot_vlan_en;
-       /* Description - 0 disable boot option ROM: disables installation of the UNDI/16 driver. The option ROM is still required to expose CLP, UEFI and so on.
-1 enable boot option ROM
- */
-       /* 0.31 - 4.31 */
-        u_int8_t boot_option_rom_en;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_boot_settings {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - VLAN ID for network boot. */
-       /* 0.0 - 0.11 */
-        u_int16_t boot_vlan;
-       /* Description - 0 \96 None \96 disable legacy boot.
-1 \96 PXE (DHCP/TFTP boot).
-2 \96 iSCSI
-3 \96 PXE + iSCSI
-4-255 \96 Reserved
- */
-       /* 0.16 - 0.23 */
-        u_int8_t legacy_boot_protocol;
-       /* Description - Number of retries to attempt in case of boot failure.
-7 indicate indefinite retries.
- */
-       /* 0.24 - 0.26 */
-        u_int8_t boot_retry_conut;
-       /* Description - 1 \96 Enable VLAN mode for network boot. */
-       /* 0.30 - 0.30 */
-        u_int8_t boot_vlan_en;
-       /* Description - 0 \96 disable boot option ROM: disables installation of the UNDI/16 driver. The option ROM is still required to expose CLP, UEFI and so on.
-1 \96 enable boot option ROM
- */
-       /* 0.31 - 4.31 */
-        u_int8_t boot_option_rom_en;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_infiniband_boot_settings {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - P_key to be used by PXE boot. */
-       /* 0.0 - 0.15 */
-        u_int16_t boot_pkey;
-};
-
-/* Description -   */
-/* Size in bytes - 12 */
-struct tools_open_iscsi_settings {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Enable or disable whether the iSCSI target will appear as the first hard disk drive in the system. Currently not supported. */
-       /* 0.21 - 0.21 */
-        u_int8_t target_as_first_hdd_en;
-       /* Description - Boot to iSCSI target after connection. 
-\95 0 \96 Enabled
-\95 1 \96 Disabled
-\95 2 - One time disabled
-\95 3 - Invalid setting
- */
-       /* 0.22 - 0.23 */
-        u_int8_t boot_to_target;
-       /* Description - Enable IPv6 auto-configuration through DHCP. Currently not supported. */
-       /* 0.24 - 0.24 */
-        u_int8_t ipv6_auto_config_en;
-       /* Description - Enable VLAN mode for iSCSI. */
-       /* 0.26 - 0.26 */
-        u_int8_t vlan_en;
-       /* Description - Enable the TCP timestamps option for iSCSI TCP connections. */
-       /* 0.27 - 0.27 */
-        u_int8_t tcp_timestamps_en;
-       /* Description - Authenticate the target to the initiator using CHAP. */
-       /* 0.28 - 0.28 */
-        u_int8_t chap_mutual_auth_en;
-       /* Description - Authenticate the initiator to the target using CHAP. */
-       /* 0.29 - 0.29 */
-        u_int8_t chap_auth_en;
-       /* Description - Retrieve iSCSI parameters through DHCP. */
-       /* 0.30 - 0.30 */
-        u_int8_t dhcp_iscsi_en;
-       /* Description - Retrieve IPv4 configuration for iSCSI through DHCP. */
-       /* 0.31 - 4.31 */
-        u_int8_t ipv4_dhcp_en;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - VLAN number. Only valid when vlan_en is 1 */
-       /* 4.0 - 4.11 */
-        u_int16_t vlan;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - Number of connection attempts to make if the iSCSI target is busy. Valid values are between 0 and 60. */
-       /* 8.0 - 8.7 */
-        u_int8_t lun_busy_retry_count;
-       /* Description - Number of seconds to wait after the link comes up before sending packets over the network. */
-       /* 8.8 - 8.15 */
-        u_int8_t link_up_delay_time;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_port_boot_state {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - The number of the GPIO that is connected to the AUX power setting circuitry */
-       /* 0.0 - 0.7 */
-        u_int8_t aux_power_indication_gpio;
-       /* Description - 0  not present
- 1 present
- if the NIC has a circuitry that can indicate when the device is working on AUX power. */
-       /* 0.29 - 0.29 */
-        u_int8_t aux_power_indication_gpio_en;
-       /* Description - 0  disabled
- 1 enabled
- When enabled, the device will response to standby indication from PCI or GPIO (if configured) and reduce power consumption while keeping the SMBUS on. To meet the power requirement, the NIC will disable the network ports and cage power on standby mode (indicate with PCIe L2/L3 message sequence of with the GPIO */
-       /* 0.30 - 0.30 */
-        u_int8_t standby_on_aux;
-       /* Description - 0 Normal (admin-on)
- 1 low power
- When set to low-power the device will boot with minimal power until the GPIO detects that the PCIe power rails are active. The low power mode is effective ONLY when there is a circuitry to detect AUX power condition (with GPIO indication) */
-       /* 0.31 - 4.31 */
-        u_int8_t power_up_on_aux;
-};
-
-/* Description -   */
-/* Size in bytes - 12 */
-struct tools_open_pci_configuration {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - 1 when log_pf_uar_bar_size field is valid */
-       /* 0.24 - 0.24 */
-        u_int8_t pf_bar_size_valid;
-       /* Description - 1 when log_vf_uar_bar_size field is valid */
-       /* 0.25 - 0.25 */
-        u_int8_t vf_bar_size_valid;
-       /* Description - 1 when num_pfs_msix field is valid */
-       /* 0.26 - 0.26 */
-        u_int8_t num_pfs_msix_valid;
-       /* Description - 1 when num_vfs_msix field is valid */
-       /* 0.27 - 0.27 */
-        u_int8_t num_vfs_msix_valid;
-       /* Description - 1 when num_pfs field is valid */
-       /* 0.28 - 0.28 */
-        u_int8_t num_pfs_valid;
-       /* Description - 1 when fpp_en field is valid */
-       /* 0.29 - 0.29 */
-        u_int8_t fpp_valid;
-       /* Description - 1 when the full_vf_qos field below is valid */
-       /* 0.30 - 0.30 */
-        u_int8_t full_vf_qos_valid;
-       /* Description - 1 when the sriov_en and total_vfs field below are valid. */
-       /* 0.31 - 4.31 */
-        u_int8_t sriov_valid;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - The total number of VFs that can be supported */
-       /* 4.0 - 4.15 */
-        u_int16_t total_vfs;
-       /* Description - Number of PFs per port */
-       /* 4.16 - 4.19 */
-        u_int8_t num_pfs;
-       /* Description - 0 - single PF for both ports
-1 - function per-port */
-       /* 4.29 - 4.29 */
-        u_int8_t fpp_en;
-       /* Description - 0 - Use reduced QoS support level on VFs
-1 - Support full QoS on VFs */
-       /* 4.30 - 4.30 */
-        u_int8_t full_vf_qos;
-       /* Description - 1 when SRIOV is enabled: SRIOV capability will appear in the PCI configuration header */
-       /* 4.31 - 8.31 */
-        u_int8_t sriov_en;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - Log 2 of the size of a PF's UAR BAR */
-       /* 8.0 - 8.5 */
-        u_int8_t log_pf_uar_bar_size;
-       /* Description - Log 2 of the size of a VF's UAR BAR */
-       /* 8.6 - 8.11 */
-        u_int8_t log_vf_uar_bar_size;
-       /* Description - Number of MSI-X vectors and EQs per PF */
-       /* 8.12 - 8.21 */
-        u_int16_t num_pf_msix;
-       /* Description - Number of MSI-X vectors and EQs per VF */
-       /* 8.22 - 12.31 */
-        u_int16_t num_vf_msix;
-};
-
-/* Description -   */
-/* Size in bytes - 20 */
-struct tools_open_pci_capabilities {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - 1 when max_pf_uar_bar_size field is configurable and the log_max_pf_uar_bar_size field is valid */
-       /* 0.24 - 0.24 */
-        u_int8_t pf_bar_size_supported;
-       /* Description - 1 when max_vf_uar_bar_size field is configurable and the log_max_vf_uar_bar_size field is valid */
-       /* 0.25 - 0.25 */
-        u_int8_t vf_bar_size_supported;
-       /* Description - 1 when num_pf_msix field is configurable and the max_num_pf_msix field is valid */
-       /* 0.26 - 0.26 */
-        u_int8_t num_pf_msix_supported;
-       /* Description - 1 when the num_vf_msix field is configurable and max_num_pfs is valid */
-       /* 0.27 - 0.27 */
-        u_int8_t num_vf_msix_supported;
-       /* Description - 1 when the num_pfs field is configurable and max_num_pfs is valid */
-       /* 0.28 - 0.28 */
-        u_int8_t num_pfs_supported;
-       /* Description - 1 when the max_total_bar field is valid */
-       /* 0.29 - 0.29 */
-        u_int8_t max_total_bar_valid;
-       /* Description - 1 when the total_msix field is valid */
-       /* 0.30 - 0.30 */
-        u_int8_t max_total_msix_valid;
-       /* Description - 1 when max_vfs_per_pf fields is valid. */
-       /* 0.31 - 4.31 */
-        u_int8_t max_vfs_per_pf_valid;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - The maximum number of VFs that can be set in the total_vfs settings (per PF) */
-       /* 4.0 - 4.15 */
-        u_int16_t max_vfs_per_pf;
-       /* Description - Maximum number of PFs per port */
-       /* 4.16 - 4.19 */
-        u_int8_t max_num_pfs;
-       /* Description - 1 - function per port settings is configurable */
-       /* 4.29 - 4.29 */
-        u_int8_t fpp_support;
-       /* Description - 1 - the device supports controlling the VF QoS setting */
-       /* 4.30 - 4.30 */
-        u_int8_t vf_qos_control_support;
-       /* Description - 1 when SRIOV is configurable */
-       /* 4.31 - 8.31 */
-        u_int8_t sriov_support;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description - Log 2 of the maximum size of a PF's UAR BAR */
-       /* 8.0 - 8.5 */
-        u_int8_t log_max_pf_uar_bar_size1;
-       /* Description - Log 2 of the maximum size of a VF's UAR BAR */
-       /* 8.6 - 8.11 */
-        u_int8_t log_max_vf_uar_bar_size;
-       /* Description - Maximum number of MSI-X vectors and EQs per PF */
-       /* 8.12 - 8.21 */
-        u_int16_t max_num_pf_msix;
-       /* Description - Maximum number of MSI-X vectors and EQs per VF */
-       /* 8.22 - 12.31 */
-        u_int16_t max_num_vf_msix;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description - Maximum number of MSI-X for the aggregat of all PF and VFs */
-       /* 12.0 - 16.31 */
-        u_int32_t max_total_msix;
-/*---------------- DWORD[4] (Offset 0x10) ----------------*/
-       /* Description - Maximum total of the MMIO space for all PFs and VFs combined, in megabytes. */
-       /* 16.0 - 20.31 */
-        u_int32_t max_total_bar;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_tpt_configuration {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Log2 of the maximum supported PCI burns size for TPT accesses to host memory
-
-0 - Automatically choose the burst length according to PCIe packet lenght
-12 - Burst length of 4KB
-
-Others - Reserved */
-       /* 0.0 - 0.3 */
-        u_int8_t log_max_payload_size;
-};
-
-/* Description -   */
-/* Size in bytes - 4 */
-struct tools_open_tpt_capabilities {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - 0 - value is R/O
-1 - value is R/W */
-       /* 0.31 - 4.31 */
-        u_int8_t log_max_payload_size_supported;
-};
-
-/* Description -   */
-/* Size in bytes - 8 */
-struct tools_open_infiniband_dc_settings {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Hash table size minus one */
-       /* 0.0 - 0.4 */
-        u_int8_t log_dcr_hash_table_size;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description - The amount of total DCRs available to join linked-lists after hash DCRs. This is a dynamic pool of DCRs that can be used to connect all incoming connections. */
-       /* 4.0 - 4.23 */
-        u_int32_t dcr_lifo_size;
-};
-
-/* Description -   */
-/* Size in bytes - 16 */
-struct tools_open_infiniband_dc_capabilities {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        u_int32_t min_log_dcr_hash_table_size;
-/*---------------- DWORD[1] (Offset 0x4) ----------------*/
-       /* Description -  */
-       /* 4.0 - 8.31 */
-        u_int32_t max_log_dcr_hash_table_size;
-/*---------------- DWORD[2] (Offset 0x8) ----------------*/
-       /* Description -  */
-       /* 8.0 - 12.31 */
-        u_int32_t min_dcr_lifo_size;
-/*---------------- DWORD[3] (Offset 0xc) ----------------*/
-       /* Description -  */
-       /* 12.0 - 16.31 */
-        u_int32_t max_dcr_lifo_size;
-};
-
-/* Description -   */
-/* Size in bytes - 8 */
-struct tools_open_wol {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Enable Wake on secure on password magic packet */
-       /* 0.9 - 0.9 */
-        u_int8_t en_wol_psswd_magic;
-       /* Description - Enable Wake on magic packet */
-       /* 0.10 - 0.10 */
-        u_int8_t en_wol_magic;
-       /* Description - Enable Wake on ARP */
-       /* 0.11 - 0.11 */
-        u_int8_t en_wol_arp;
-       /* Description - Enable Wake on broadcast message */
-       /* 0.12 - 0.12 */
-        u_int8_t en_wol_bc;
-       /* Description - Enable Wake on multicast message */
-       /* 0.13 - 0.13 */
-        u_int8_t en_wol_mc;
-       /* Description - Enable Wake on unicast message */
-       /* 0.14 - 0.14 */
-        u_int8_t en_wol_uc;
-       /* Description - Enable Wake on PHY activity */
-       /* 0.15 - 0.15 */
-        u_int8_t en_wol_phy;
-};
-
-/* Description -   */
-/* Size in bytes - 1024 */
-union tools_open_misc_structs {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 1024.31 */
-        struct tools_open_image_info image_info;
-       /* Description -  */
-       /* 0.0 - 320.31 */
-        struct tools_open_mfg_info mfg_info;
-};
-
-/* Description -   */
-/* Size in bytes - 256 */
-union tools_open_aux_img_data {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - image aux data section header */
-       /* 0.0 - 16.31 */
-        struct tools_open_aux_data_hdr aux_data_hdr;
-       /* Description - image tlv entry */
-       /* 0.0 - 256.31 */
-        struct tools_open_aux_tlv aux_tlv;
-};
-
-/* Description -   */
-/* Size in bytes - 264 */
-union tools_open_hcr_cmds {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 20.31 */
-        struct tools_open_query_def_params_global query_def_params_global;
-       /* Description -  */
-       /* 0.0 - 28.31 */
-        struct tools_open_query_def_params_per_port query_def_params_per_port;
-};
-
-/* Description -   */
-/* Size in bytes - 512 */
-union tools_open_access_registers {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Misc NV Registers, this is temporary untill we integrate with fw db */
-       /* 0.0 - 256.31 */
-        union tools_open_mnv_cfg MNVReg;
-       /* Description - Register for accessing FW managed external PHY */
-       /* 0.0 - 264.31 */
-        union tools_open_phy_reg PhyReg;
-};
-
-/* Description -   */
-/* Size in bytes - 256 */
-union tools_open_nv_cfg {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description -  */
-       /* 0.0 - 8.31 */
-        struct tools_open_wol wol;
-       /* Description -  */
-       /* 0.0 - 16.31 */
-        struct tools_open_infiniband_dc_capabilities infiniband_dc_capabilities;
-       /* Description -  */
-       /* 0.0 - 8.31 */
-        struct tools_open_infiniband_dc_settings infiniband_dc_settings;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_tpt_capabilities tpt_capabilities;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_tpt_configuration tpt_configuration;
-       /* Description -  */
-       /* 0.0 - 20.31 */
-        struct tools_open_pci_capabilities pci_capabilities;
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct tools_open_pci_configuration pci_configuration;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_port_boot_state port_boot_state;
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct tools_open_iscsi_settings iscsi_settings;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_infiniband_boot_settings infiniband_boot_settings;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_boot_settings boot_settings;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_preboot_boot_settings preboot_boot_settings;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_preboot_flow_ctrl preboot_flow_ctrl;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_sriov sriov;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_bar_size bar_size;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_vpi_settings vpi_settings;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_roce_v_1_5_next_protocol roce_v_1_5_next_protocol;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_roce_cc roce_cc;
-       /* Description -  */
-       /* 0.0 - 68.31 */
-        struct tools_open_roce_cc_ecn roce_cc_ecn;
-       /* Description -  */
-       /* 0.0 - 28.31 */
-        struct tools_open_lldp_nb lldp_nb;
-       /* Description -  */
-       /* 0.0 - 8.31 */
-        struct tools_open_external_port external_port;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_boot_settings_ext boot_settings_ext;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_option_rom_capability option_rom_capability;
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct tools_open_qos qos;
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct tools_open_qos_cap qos_cap;
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct tools_open_lldp_client_settings lldp_client_settings;
-       /* Description -  */
-       /* 0.0 - 12.31 */
-        struct tools_open_lldp_nb_cap lldp_nb_cap;
-       /* Description -  */
-       /* 0.0 - 4.31 */
-        struct tools_open_lldp_nb_dcbx lldp_nb_dcbx;
-};
-
-/* Description -   */
-/* Size in bytes - 1048576 */
-union tools_open_tools_open {
-/*---------------- DWORD[0] (Offset 0x0) ----------------*/
-       /* Description - Non-Volatile Cfg Tlvs */
-       /* 0.0 - 256.31 */
-        union tools_open_nv_cfg NVConfig;
-       /* Description - various registers in specific use by the tools */
-       /* 0.0 - 512.31 */
-        union tools_open_access_registers AceessRegisters;
-       /* Description - Tools HCR commands structs */
-       /* 0.0 - 264.31 */
-        union tools_open_hcr_cmds HcrCmds;
-       /* Description - aux image data layout */
-       /* 0.0 - 256.31 */
-        union tools_open_aux_img_data AuxImgData;
-       /* Description - Misc structs needed for integration on new FW features */
-       /* 0.0 - 1024.31 */
-        union tools_open_misc_structs MiscStructs;
-};
-
-
-/*================= PACK/UNPACK/PRINT FUNCTIONS ======================*/
-/* tlv_type_dw */
-void tools_open_tlv_type_dw_pack(const struct tools_open_tlv_type_dw *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_tlv_type_dw_unpack(struct tools_open_tlv_type_dw *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_tlv_type_dw_print(const struct tools_open_tlv_type_dw *ptr_struct, FILE* file, int indent_level);
-int tools_open_tlv_type_dw_size(void);
-#define TOOLS_OPEN_TLV_TYPE_DW_SIZE    (0x4)
-void tools_open_tlv_type_dw_dump(const struct tools_open_tlv_type_dw *ptr_struct, FILE* file);
-/* per_port_type */
-void tools_open_per_port_type_pack(const struct tools_open_per_port_type *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_per_port_type_unpack(struct tools_open_per_port_type *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_per_port_type_print(const struct tools_open_per_port_type *ptr_struct, FILE* file, int indent_level);
-int tools_open_per_port_type_size(void);
-#define TOOLS_OPEN_PER_PORT_TYPE_SIZE    (0x4)
-void tools_open_per_port_type_dump(const struct tools_open_per_port_type *ptr_struct, FILE* file);
-/* bmc_type */
-void tools_open_bmc_type_pack(const struct tools_open_bmc_type *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_bmc_type_unpack(struct tools_open_bmc_type *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_bmc_type_print(const struct tools_open_bmc_type *ptr_struct, FILE* file, int indent_level);
-int tools_open_bmc_type_size(void);
-#define TOOLS_OPEN_BMC_TYPE_SIZE    (0x4)
-void tools_open_bmc_type_dump(const struct tools_open_bmc_type *ptr_struct, FILE* file);
-/* per_host_type */
-void tools_open_per_host_type_pack(const struct tools_open_per_host_type *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_per_host_type_unpack(struct tools_open_per_host_type *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_per_host_type_print(const struct tools_open_per_host_type *ptr_struct, FILE* file, int indent_level);
-int tools_open_per_host_type_size(void);
-#define TOOLS_OPEN_PER_HOST_TYPE_SIZE    (0x4)
-void tools_open_per_host_type_dump(const struct tools_open_per_host_type *ptr_struct, FILE* file);
-/* eswitch_type */
-void tools_open_eswitch_type_pack(const struct tools_open_eswitch_type *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_eswitch_type_unpack(struct tools_open_eswitch_type *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_eswitch_type_print(const struct tools_open_eswitch_type *ptr_struct, FILE* file, int indent_level);
-int tools_open_eswitch_type_size(void);
-#define TOOLS_OPEN_ESWITCH_TYPE_SIZE    (0x4)
-void tools_open_eswitch_type_dump(const struct tools_open_eswitch_type *ptr_struct, FILE* file);
-/* global_type */
-void tools_open_global_type_pack(const struct tools_open_global_type *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_global_type_unpack(struct tools_open_global_type *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_global_type_print(const struct tools_open_global_type *ptr_struct, FILE* file, int indent_level);
-int tools_open_global_type_size(void);
-#define TOOLS_OPEN_GLOBAL_TYPE_SIZE    (0x4)
-void tools_open_global_type_dump(const struct tools_open_global_type *ptr_struct, FILE* file);
-/* tlv_type */
-void tools_open_tlv_type_pack(const union tools_open_tlv_type *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_tlv_type_unpack(union tools_open_tlv_type *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_tlv_type_print(const union tools_open_tlv_type *ptr_struct, FILE* file, int indent_level);
-int tools_open_tlv_type_size(void);
-#define TOOLS_OPEN_TLV_TYPE_SIZE    (0x4)
-void tools_open_tlv_type_dump(const union tools_open_tlv_type *ptr_struct, FILE* file);
-/* ts_entry */
-void tools_open_ts_entry_pack(const struct tools_open_ts_entry *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_ts_entry_unpack(struct tools_open_ts_entry *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_ts_entry_print(const struct tools_open_ts_entry *ptr_struct, FILE* file, int indent_level);
-int tools_open_ts_entry_size(void);
-#define TOOLS_OPEN_TS_ENTRY_SIZE    (0x8)
-void tools_open_ts_entry_dump(const struct tools_open_ts_entry *ptr_struct, FILE* file);
-/* fw_version */
-void tools_open_fw_version_pack(const struct tools_open_fw_version *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_fw_version_unpack(struct tools_open_fw_version *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_fw_version_print(const struct tools_open_fw_version *ptr_struct, FILE* file, int indent_level);
-int tools_open_fw_version_size(void);
-#define TOOLS_OPEN_FW_VERSION_SIZE    (0x8)
-void tools_open_fw_version_dump(const struct tools_open_fw_version *ptr_struct, FILE* file);
-/* pmdio_addr_data */
-void tools_open_pmdio_addr_data_pack(const struct tools_open_pmdio_addr_data *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_pmdio_addr_data_unpack(struct tools_open_pmdio_addr_data *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_pmdio_addr_data_print(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file, int indent_level);
-int tools_open_pmdio_addr_data_size(void);
-#define TOOLS_OPEN_PMDIO_ADDR_DATA_SIZE    (0x4)
-void tools_open_pmdio_addr_data_dump(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file);
-/* nv_hdr_fifth_gen */
-void tools_open_nv_hdr_fifth_gen_pack(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_nv_hdr_fifth_gen_unpack(struct tools_open_nv_hdr_fifth_gen *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_nv_hdr_fifth_gen_print(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, FILE* file, int indent_level);
-int tools_open_nv_hdr_fifth_gen_size(void);
-#define TOOLS_OPEN_NV_HDR_FIFTH_GEN_SIZE    (0xc)
-void tools_open_nv_hdr_fifth_gen_dump(const struct tools_open_nv_hdr_fifth_gen *ptr_struct, FILE* file);
-/* timestamp */
-void tools_open_timestamp_pack(const struct tools_open_timestamp *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_timestamp_unpack(struct tools_open_timestamp *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_timestamp_print(const struct tools_open_timestamp *ptr_struct, FILE* file, int indent_level);
-int tools_open_timestamp_size(void);
-#define TOOLS_OPEN_TIMESTAMP_SIZE    (0x10)
-void tools_open_timestamp_dump(const struct tools_open_timestamp *ptr_struct, FILE* file);
-/* nv_hdr */
-void tools_open_nv_hdr_pack(const struct tools_open_nv_hdr *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_nv_hdr_unpack(struct tools_open_nv_hdr *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_nv_hdr_print(const struct tools_open_nv_hdr *ptr_struct, FILE* file, int indent_level);
-int tools_open_nv_hdr_size(void);
-#define TOOLS_OPEN_NV_HDR_SIZE    (0x8)
-void tools_open_nv_hdr_dump(const struct tools_open_nv_hdr *ptr_struct, FILE* file);
-/* aux_tlv_header */
-void tools_open_aux_tlv_header_pack(const struct tools_open_aux_tlv_header *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_aux_tlv_header_unpack(struct tools_open_aux_tlv_header *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_aux_tlv_header_print(const struct tools_open_aux_tlv_header *ptr_struct, FILE* file, int indent_level);
-int tools_open_aux_tlv_header_size(void);
-#define TOOLS_OPEN_AUX_TLV_HEADER_SIZE    (0x14)
-void tools_open_aux_tlv_header_dump(const struct tools_open_aux_tlv_header *ptr_struct, FILE* file);
-/* pmdio */
-void tools_open_pmdio_pack(const struct tools_open_pmdio *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_pmdio_unpack(struct tools_open_pmdio *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_pmdio_print(const struct tools_open_pmdio *ptr_struct, FILE* file, int indent_level);
-int tools_open_pmdio_size(void);
-#define TOOLS_OPEN_PMDIO_SIZE    (0x108)
-void tools_open_pmdio_dump(const struct tools_open_pmdio *ptr_struct, FILE* file);
-/* pmdic */
-void tools_open_pmdic_pack(const struct tools_open_pmdic *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_pmdic_unpack(struct tools_open_pmdic *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_pmdic_print(const struct tools_open_pmdic *ptr_struct, FILE* file, int indent_level);
-int tools_open_pmdic_size(void);
-#define TOOLS_OPEN_PMDIC_SIZE    (0xc)
-void tools_open_pmdic_dump(const struct tools_open_pmdic *ptr_struct, FILE* file);
-/* mnvgn */
-void tools_open_mnvgn_pack(const struct tools_open_mnvgn *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_mnvgn_unpack(struct tools_open_mnvgn *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_mnvgn_print(const struct tools_open_mnvgn *ptr_struct, FILE* file, int indent_level);
-int tools_open_mnvgn_size(void);
-#define TOOLS_OPEN_MNVGN_SIZE    (0x9c)
-void tools_open_mnvgn_dump(const struct tools_open_mnvgn *ptr_struct, FILE* file);
-/* mvts */
-void tools_open_mvts_pack(const struct tools_open_mvts *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_mvts_unpack(struct tools_open_mvts *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_mvts_print(const struct tools_open_mvts *ptr_struct, FILE* file, int indent_level);
-int tools_open_mvts_size(void);
-#define TOOLS_OPEN_MVTS_SIZE    (0x14)
-void tools_open_mvts_dump(const struct tools_open_mvts *ptr_struct, FILE* file);
-/* nvqgc */
-void tools_open_nvqgc_pack(const struct tools_open_nvqgc *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_nvqgc_unpack(struct tools_open_nvqgc *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_nvqgc_print(const struct tools_open_nvqgc *ptr_struct, FILE* file, int indent_level);
-int tools_open_nvqgc_size(void);
-#define TOOLS_OPEN_NVQGC_SIZE    (0x10)
-void tools_open_nvqgc_dump(const struct tools_open_nvqgc *ptr_struct, FILE* file);
-/* nvdi */
-void tools_open_nvdi_pack(const struct tools_open_nvdi *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_nvdi_unpack(struct tools_open_nvdi *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_nvdi_print(const struct tools_open_nvdi *ptr_struct, FILE* file, int indent_level);
-int tools_open_nvdi_size(void);
-#define TOOLS_OPEN_NVDI_SIZE    (0xc)
-void tools_open_nvdi_dump(const struct tools_open_nvdi *ptr_struct, FILE* file);
-/* nvda */
-void tools_open_nvda_pack(const struct tools_open_nvda *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_nvda_unpack(struct tools_open_nvda *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_nvda_print(const struct tools_open_nvda *ptr_struct, FILE* file, int indent_level);
-int tools_open_nvda_size(void);
-#define TOOLS_OPEN_NVDA_SIZE    (0x100)
-void tools_open_nvda_dump(const struct tools_open_nvda *ptr_struct, FILE* file);
-/* nvia */
-void tools_open_nvia_pack(const struct tools_open_nvia *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_nvia_unpack(struct tools_open_nvia *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_nvia_print(const struct tools_open_nvia *ptr_struct, FILE* file, int indent_level);
-int tools_open_nvia_size(void);
-#define TOOLS_OPEN_NVIA_SIZE    (0x14)
-void tools_open_nvia_dump(const struct tools_open_nvia *ptr_struct, FILE* file);
-/* nvqc */
-void tools_open_nvqc_pack(const struct tools_open_nvqc *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_nvqc_unpack(struct tools_open_nvqc *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_nvqc_print(const struct tools_open_nvqc *ptr_struct, FILE* file, int indent_level);
-int tools_open_nvqc_size(void);
-#define TOOLS_OPEN_NVQC_SIZE    (0x8)
-void tools_open_nvqc_dump(const struct tools_open_nvqc *ptr_struct, FILE* file);
-/* mnvia */
-void tools_open_mnvia_pack(const struct tools_open_mnvia *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_mnvia_unpack(struct tools_open_mnvia *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_mnvia_print(const struct tools_open_mnvia *ptr_struct, FILE* file, int indent_level);
-int tools_open_mnvia_size(void);
-#define TOOLS_OPEN_MNVIA_SIZE    (0x8)
-void tools_open_mnvia_dump(const struct tools_open_mnvia *ptr_struct, FILE* file);
-/* mnvi */
-void tools_open_mnvi_pack(const struct tools_open_mnvi *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_mnvi_unpack(struct tools_open_mnvi *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_mnvi_print(const struct tools_open_mnvi *ptr_struct, FILE* file, int indent_level);
-int tools_open_mnvi_size(void);
-#define TOOLS_OPEN_MNVI_SIZE    (0x8)
-void tools_open_mnvi_dump(const struct tools_open_mnvi *ptr_struct, FILE* file);
-/* mnva */
-void tools_open_mnva_pack(const struct tools_open_mnva *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_mnva_unpack(struct tools_open_mnva *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_mnva_print(const struct tools_open_mnva *ptr_struct, FILE* file, int indent_level);
-int tools_open_mnva_size(void);
-#define TOOLS_OPEN_MNVA_SIZE    (0x100)
-void tools_open_mnva_dump(const struct tools_open_mnva *ptr_struct, FILE* file);
-/* mfg_info */
-void tools_open_mfg_info_pack(const struct tools_open_mfg_info *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_mfg_info_unpack(struct tools_open_mfg_info *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_mfg_info_print(const struct tools_open_mfg_info *ptr_struct, FILE* file, int indent_level);
-int tools_open_mfg_info_size(void);
-#define TOOLS_OPEN_MFG_INFO_SIZE    (0x140)
-void tools_open_mfg_info_dump(const struct tools_open_mfg_info *ptr_struct, FILE* file);
-/* image_info */
-void tools_open_image_info_pack(const struct tools_open_image_info *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_image_info_unpack(struct tools_open_image_info *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_image_info_print(const struct tools_open_image_info *ptr_struct, FILE* file, int indent_level);
-int tools_open_image_info_size(void);
-#define TOOLS_OPEN_IMAGE_INFO_SIZE    (0x400)
-void tools_open_image_info_dump(const struct tools_open_image_info *ptr_struct, FILE* file);
-/* aux_tlv */
-void tools_open_aux_tlv_pack(const struct tools_open_aux_tlv *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_aux_tlv_unpack(struct tools_open_aux_tlv *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_aux_tlv_print(const struct tools_open_aux_tlv *ptr_struct, FILE* file, int indent_level);
-int tools_open_aux_tlv_size(void);
-#define TOOLS_OPEN_AUX_TLV_SIZE    (0x100)
-void tools_open_aux_tlv_dump(const struct tools_open_aux_tlv *ptr_struct, FILE* file);
-/* aux_data_hdr */
-void tools_open_aux_data_hdr_pack(const struct tools_open_aux_data_hdr *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_aux_data_hdr_unpack(struct tools_open_aux_data_hdr *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_aux_data_hdr_print(const struct tools_open_aux_data_hdr *ptr_struct, FILE* file, int indent_level);
-int tools_open_aux_data_hdr_size(void);
-#define TOOLS_OPEN_AUX_DATA_HDR_SIZE    (0x10)
-void tools_open_aux_data_hdr_dump(const struct tools_open_aux_data_hdr *ptr_struct, FILE* file);
-/* query_def_params_per_port */
-void tools_open_query_def_params_per_port_pack(const struct tools_open_query_def_params_per_port *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_query_def_params_per_port_unpack(struct tools_open_query_def_params_per_port *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_query_def_params_per_port_print(const struct tools_open_query_def_params_per_port *ptr_struct, FILE* file, int indent_level);
-int tools_open_query_def_params_per_port_size(void);
-#define TOOLS_OPEN_QUERY_DEF_PARAMS_PER_PORT_SIZE    (0x1c)
-void tools_open_query_def_params_per_port_dump(const struct tools_open_query_def_params_per_port *ptr_struct, FILE* file);
-/* query_def_params_global */
-void tools_open_query_def_params_global_pack(const struct tools_open_query_def_params_global *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_query_def_params_global_unpack(struct tools_open_query_def_params_global *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_query_def_params_global_print(const struct tools_open_query_def_params_global *ptr_struct, FILE* file, int indent_level);
-int tools_open_query_def_params_global_size(void);
-#define TOOLS_OPEN_QUERY_DEF_PARAMS_GLOBAL_SIZE    (0x14)
-void tools_open_query_def_params_global_dump(const struct tools_open_query_def_params_global *ptr_struct, FILE* file);
-/* phy_reg */
-void tools_open_phy_reg_pack(const union tools_open_phy_reg *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_phy_reg_unpack(union tools_open_phy_reg *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_phy_reg_print(const union tools_open_phy_reg *ptr_struct, FILE* file, int indent_level);
-int tools_open_phy_reg_size(void);
-#define TOOLS_OPEN_PHY_REG_SIZE    (0x108)
-void tools_open_phy_reg_dump(const union tools_open_phy_reg *ptr_struct, FILE* file);
-/* mnv_cfg */
-void tools_open_mnv_cfg_pack(const union tools_open_mnv_cfg *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_mnv_cfg_unpack(union tools_open_mnv_cfg *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_mnv_cfg_print(const union tools_open_mnv_cfg *ptr_struct, FILE* file, int indent_level);
-int tools_open_mnv_cfg_size(void);
-#define TOOLS_OPEN_MNV_CFG_SIZE    (0x100)
-void tools_open_mnv_cfg_dump(const union tools_open_mnv_cfg *ptr_struct, FILE* file);
-/* lldp_nb_dcbx */
-void tools_open_lldp_nb_dcbx_pack(const struct tools_open_lldp_nb_dcbx *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_lldp_nb_dcbx_unpack(struct tools_open_lldp_nb_dcbx *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_lldp_nb_dcbx_print(const struct tools_open_lldp_nb_dcbx *ptr_struct, FILE* file, int indent_level);
-int tools_open_lldp_nb_dcbx_size(void);
-#define TOOLS_OPEN_LLDP_NB_DCBX_SIZE    (0x4)
-void tools_open_lldp_nb_dcbx_dump(const struct tools_open_lldp_nb_dcbx *ptr_struct, FILE* file);
-/* lldp_nb_cap */
-void tools_open_lldp_nb_cap_pack(const struct tools_open_lldp_nb_cap *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_lldp_nb_cap_unpack(struct tools_open_lldp_nb_cap *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_lldp_nb_cap_print(const struct tools_open_lldp_nb_cap *ptr_struct, FILE* file, int indent_level);
-int tools_open_lldp_nb_cap_size(void);
-#define TOOLS_OPEN_LLDP_NB_CAP_SIZE    (0xc)
-void tools_open_lldp_nb_cap_dump(const struct tools_open_lldp_nb_cap *ptr_struct, FILE* file);
-/* lldp_client_settings */
-void tools_open_lldp_client_settings_pack(const struct tools_open_lldp_client_settings *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_lldp_client_settings_unpack(struct tools_open_lldp_client_settings *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_lldp_client_settings_print(const struct tools_open_lldp_client_settings *ptr_struct, FILE* file, int indent_level);
-int tools_open_lldp_client_settings_size(void);
-#define TOOLS_OPEN_LLDP_CLIENT_SETTINGS_SIZE    (0xc)
-void tools_open_lldp_client_settings_dump(const struct tools_open_lldp_client_settings *ptr_struct, FILE* file);
-/* qos_cap */
-void tools_open_qos_cap_pack(const struct tools_open_qos_cap *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_qos_cap_unpack(struct tools_open_qos_cap *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_qos_cap_print(const struct tools_open_qos_cap *ptr_struct, FILE* file, int indent_level);
-int tools_open_qos_cap_size(void);
-#define TOOLS_OPEN_QOS_CAP_SIZE    (0xc)
-void tools_open_qos_cap_dump(const struct tools_open_qos_cap *ptr_struct, FILE* file);
-/* qos */
-void tools_open_qos_pack(const struct tools_open_qos *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_qos_unpack(struct tools_open_qos *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_qos_print(const struct tools_open_qos *ptr_struct, FILE* file, int indent_level);
-int tools_open_qos_size(void);
-#define TOOLS_OPEN_QOS_SIZE    (0xc)
-void tools_open_qos_dump(const struct tools_open_qos *ptr_struct, FILE* file);
-/* option_rom_capability */
-void tools_open_option_rom_capability_pack(const struct tools_open_option_rom_capability *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_option_rom_capability_unpack(struct tools_open_option_rom_capability *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_option_rom_capability_print(const struct tools_open_option_rom_capability *ptr_struct, FILE* file, int indent_level);
-int tools_open_option_rom_capability_size(void);
-#define TOOLS_OPEN_OPTION_ROM_CAPABILITY_SIZE    (0x4)
-void tools_open_option_rom_capability_dump(const struct tools_open_option_rom_capability *ptr_struct, FILE* file);
-/* boot_settings_ext */
-void tools_open_boot_settings_ext_pack(const struct tools_open_boot_settings_ext *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_boot_settings_ext_unpack(struct tools_open_boot_settings_ext *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_boot_settings_ext_print(const struct tools_open_boot_settings_ext *ptr_struct, FILE* file, int indent_level);
-int tools_open_boot_settings_ext_size(void);
-#define TOOLS_OPEN_BOOT_SETTINGS_EXT_SIZE    (0x4)
-void tools_open_boot_settings_ext_dump(const struct tools_open_boot_settings_ext *ptr_struct, FILE* file);
-/* external_port */
-void tools_open_external_port_pack(const struct tools_open_external_port *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_external_port_unpack(struct tools_open_external_port *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_external_port_print(const struct tools_open_external_port *ptr_struct, FILE* file, int indent_level);
-int tools_open_external_port_size(void);
-#define TOOLS_OPEN_EXTERNAL_PORT_SIZE    (0x8)
-void tools_open_external_port_dump(const struct tools_open_external_port *ptr_struct, FILE* file);
-/* lldp_nb */
-void tools_open_lldp_nb_pack(const struct tools_open_lldp_nb *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_lldp_nb_unpack(struct tools_open_lldp_nb *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_lldp_nb_print(const struct tools_open_lldp_nb *ptr_struct, FILE* file, int indent_level);
-int tools_open_lldp_nb_size(void);
-#define TOOLS_OPEN_LLDP_NB_SIZE    (0x1c)
-void tools_open_lldp_nb_dump(const struct tools_open_lldp_nb *ptr_struct, FILE* file);
-/* roce_cc_ecn */
-void tools_open_roce_cc_ecn_pack(const struct tools_open_roce_cc_ecn *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_roce_cc_ecn_unpack(struct tools_open_roce_cc_ecn *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_roce_cc_ecn_print(const struct tools_open_roce_cc_ecn *ptr_struct, FILE* file, int indent_level);
-int tools_open_roce_cc_ecn_size(void);
-#define TOOLS_OPEN_ROCE_CC_ECN_SIZE    (0x44)
-void tools_open_roce_cc_ecn_dump(const struct tools_open_roce_cc_ecn *ptr_struct, FILE* file);
-/* roce_cc */
-void tools_open_roce_cc_pack(const struct tools_open_roce_cc *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_roce_cc_unpack(struct tools_open_roce_cc *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_roce_cc_print(const struct tools_open_roce_cc *ptr_struct, FILE* file, int indent_level);
-int tools_open_roce_cc_size(void);
-#define TOOLS_OPEN_ROCE_CC_SIZE    (0x4)
-void tools_open_roce_cc_dump(const struct tools_open_roce_cc *ptr_struct, FILE* file);
-/* roce_v_1_5_next_protocol */
-void tools_open_roce_v_1_5_next_protocol_pack(const struct tools_open_roce_v_1_5_next_protocol *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_roce_v_1_5_next_protocol_unpack(struct tools_open_roce_v_1_5_next_protocol *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_roce_v_1_5_next_protocol_print(const struct tools_open_roce_v_1_5_next_protocol *ptr_struct, FILE* file, int indent_level);
-int tools_open_roce_v_1_5_next_protocol_size(void);
-#define TOOLS_OPEN_ROCE_V_1_5_NEXT_PROTOCOL_SIZE    (0x4)
-void tools_open_roce_v_1_5_next_protocol_dump(const struct tools_open_roce_v_1_5_next_protocol *ptr_struct, FILE* file);
-/* vpi_settings */
-void tools_open_vpi_settings_pack(const struct tools_open_vpi_settings *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_vpi_settings_unpack(struct tools_open_vpi_settings *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_vpi_settings_print(const struct tools_open_vpi_settings *ptr_struct, FILE* file, int indent_level);
-int tools_open_vpi_settings_size(void);
-#define TOOLS_OPEN_VPI_SETTINGS_SIZE    (0x4)
-void tools_open_vpi_settings_dump(const struct tools_open_vpi_settings *ptr_struct, FILE* file);
-/* bar_size */
-void tools_open_bar_size_pack(const struct tools_open_bar_size *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_bar_size_unpack(struct tools_open_bar_size *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_bar_size_print(const struct tools_open_bar_size *ptr_struct, FILE* file, int indent_level);
-int tools_open_bar_size_size(void);
-#define TOOLS_OPEN_BAR_SIZE_SIZE    (0x4)
-void tools_open_bar_size_dump(const struct tools_open_bar_size *ptr_struct, FILE* file);
-/* sriov */
-void tools_open_sriov_pack(const struct tools_open_sriov *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_sriov_unpack(struct tools_open_sriov *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_sriov_print(const struct tools_open_sriov *ptr_struct, FILE* file, int indent_level);
-int tools_open_sriov_size(void);
-#define TOOLS_OPEN_SRIOV_SIZE    (0x4)
-void tools_open_sriov_dump(const struct tools_open_sriov *ptr_struct, FILE* file);
-/* preboot_flow_ctrl */
-void tools_open_preboot_flow_ctrl_pack(const struct tools_open_preboot_flow_ctrl *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_preboot_flow_ctrl_unpack(struct tools_open_preboot_flow_ctrl *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_preboot_flow_ctrl_print(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file, int indent_level);
-int tools_open_preboot_flow_ctrl_size(void);
-#define TOOLS_OPEN_PREBOOT_FLOW_CTRL_SIZE    (0x4)
-void tools_open_preboot_flow_ctrl_dump(const struct tools_open_preboot_flow_ctrl *ptr_struct, FILE* file);
-/* preboot_boot_settings */
-void tools_open_preboot_boot_settings_pack(const struct tools_open_preboot_boot_settings *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_preboot_boot_settings_unpack(struct tools_open_preboot_boot_settings *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_preboot_boot_settings_print(const struct tools_open_preboot_boot_settings *ptr_struct, FILE* file, int indent_level);
-int tools_open_preboot_boot_settings_size(void);
-#define TOOLS_OPEN_PREBOOT_BOOT_SETTINGS_SIZE    (0x4)
-void tools_open_preboot_boot_settings_dump(const struct tools_open_preboot_boot_settings *ptr_struct, FILE* file);
-/* boot_settings */
-void tools_open_boot_settings_pack(const struct tools_open_boot_settings *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_boot_settings_unpack(struct tools_open_boot_settings *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_boot_settings_print(const struct tools_open_boot_settings *ptr_struct, FILE* file, int indent_level);
-int tools_open_boot_settings_size(void);
-#define TOOLS_OPEN_BOOT_SETTINGS_SIZE    (0x4)
-void tools_open_boot_settings_dump(const struct tools_open_boot_settings *ptr_struct, FILE* file);
-/* infiniband_boot_settings */
-void tools_open_infiniband_boot_settings_pack(const struct tools_open_infiniband_boot_settings *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_infiniband_boot_settings_unpack(struct tools_open_infiniband_boot_settings *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_infiniband_boot_settings_print(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file, int indent_level);
-int tools_open_infiniband_boot_settings_size(void);
-#define TOOLS_OPEN_INFINIBAND_BOOT_SETTINGS_SIZE    (0x4)
-void tools_open_infiniband_boot_settings_dump(const struct tools_open_infiniband_boot_settings *ptr_struct, FILE* file);
-/* iscsi_settings */
-void tools_open_iscsi_settings_pack(const struct tools_open_iscsi_settings *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_iscsi_settings_unpack(struct tools_open_iscsi_settings *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_iscsi_settings_print(const struct tools_open_iscsi_settings *ptr_struct, FILE* file, int indent_level);
-int tools_open_iscsi_settings_size(void);
-#define TOOLS_OPEN_ISCSI_SETTINGS_SIZE    (0xc)
-void tools_open_iscsi_settings_dump(const struct tools_open_iscsi_settings *ptr_struct, FILE* file);
-/* port_boot_state */
-void tools_open_port_boot_state_pack(const struct tools_open_port_boot_state *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_port_boot_state_unpack(struct tools_open_port_boot_state *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_port_boot_state_print(const struct tools_open_port_boot_state *ptr_struct, FILE* file, int indent_level);
-int tools_open_port_boot_state_size(void);
-#define TOOLS_OPEN_PORT_BOOT_STATE_SIZE    (0x4)
-void tools_open_port_boot_state_dump(const struct tools_open_port_boot_state *ptr_struct, FILE* file);
-/* pci_configuration */
-void tools_open_pci_configuration_pack(const struct tools_open_pci_configuration *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_pci_configuration_unpack(struct tools_open_pci_configuration *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_pci_configuration_print(const struct tools_open_pci_configuration *ptr_struct, FILE* file, int indent_level);
-int tools_open_pci_configuration_size(void);
-#define TOOLS_OPEN_PCI_CONFIGURATION_SIZE    (0xc)
-void tools_open_pci_configuration_dump(const struct tools_open_pci_configuration *ptr_struct, FILE* file);
-/* pci_capabilities */
-void tools_open_pci_capabilities_pack(const struct tools_open_pci_capabilities *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_pci_capabilities_unpack(struct tools_open_pci_capabilities *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_pci_capabilities_print(const struct tools_open_pci_capabilities *ptr_struct, FILE* file, int indent_level);
-int tools_open_pci_capabilities_size(void);
-#define TOOLS_OPEN_PCI_CAPABILITIES_SIZE    (0x14)
-void tools_open_pci_capabilities_dump(const struct tools_open_pci_capabilities *ptr_struct, FILE* file);
-/* tpt_configuration */
-void tools_open_tpt_configuration_pack(const struct tools_open_tpt_configuration *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_tpt_configuration_unpack(struct tools_open_tpt_configuration *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_tpt_configuration_print(const struct tools_open_tpt_configuration *ptr_struct, FILE* file, int indent_level);
-int tools_open_tpt_configuration_size(void);
-#define TOOLS_OPEN_TPT_CONFIGURATION_SIZE    (0x4)
-void tools_open_tpt_configuration_dump(const struct tools_open_tpt_configuration *ptr_struct, FILE* file);
-/* tpt_capabilities */
-void tools_open_tpt_capabilities_pack(const struct tools_open_tpt_capabilities *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_tpt_capabilities_unpack(struct tools_open_tpt_capabilities *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_tpt_capabilities_print(const struct tools_open_tpt_capabilities *ptr_struct, FILE* file, int indent_level);
-int tools_open_tpt_capabilities_size(void);
-#define TOOLS_OPEN_TPT_CAPABILITIES_SIZE    (0x4)
-void tools_open_tpt_capabilities_dump(const struct tools_open_tpt_capabilities *ptr_struct, FILE* file);
-/* infiniband_dc_settings */
-void tools_open_infiniband_dc_settings_pack(const struct tools_open_infiniband_dc_settings *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_infiniband_dc_settings_unpack(struct tools_open_infiniband_dc_settings *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_infiniband_dc_settings_print(const struct tools_open_infiniband_dc_settings *ptr_struct, FILE* file, int indent_level);
-int tools_open_infiniband_dc_settings_size(void);
-#define TOOLS_OPEN_INFINIBAND_DC_SETTINGS_SIZE    (0x8)
-void tools_open_infiniband_dc_settings_dump(const struct tools_open_infiniband_dc_settings *ptr_struct, FILE* file);
-/* infiniband_dc_capabilities */
-void tools_open_infiniband_dc_capabilities_pack(const struct tools_open_infiniband_dc_capabilities *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_infiniband_dc_capabilities_unpack(struct tools_open_infiniband_dc_capabilities *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_infiniband_dc_capabilities_print(const struct tools_open_infiniband_dc_capabilities *ptr_struct, FILE* file, int indent_level);
-int tools_open_infiniband_dc_capabilities_size(void);
-#define TOOLS_OPEN_INFINIBAND_DC_CAPABILITIES_SIZE    (0x10)
-void tools_open_infiniband_dc_capabilities_dump(const struct tools_open_infiniband_dc_capabilities *ptr_struct, FILE* file);
-/* wol */
-void tools_open_wol_pack(const struct tools_open_wol *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_wol_unpack(struct tools_open_wol *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_wol_print(const struct tools_open_wol *ptr_struct, FILE* file, int indent_level);
-int tools_open_wol_size(void);
-#define TOOLS_OPEN_WOL_SIZE    (0x8)
-void tools_open_wol_dump(const struct tools_open_wol *ptr_struct, FILE* file);
-/* misc_structs */
-void tools_open_misc_structs_pack(const union tools_open_misc_structs *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_misc_structs_unpack(union tools_open_misc_structs *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_misc_structs_print(const union tools_open_misc_structs *ptr_struct, FILE* file, int indent_level);
-int tools_open_misc_structs_size(void);
-#define TOOLS_OPEN_MISC_STRUCTS_SIZE    (0x400)
-void tools_open_misc_structs_dump(const union tools_open_misc_structs *ptr_struct, FILE* file);
-/* aux_img_data */
-void tools_open_aux_img_data_pack(const union tools_open_aux_img_data *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_aux_img_data_unpack(union tools_open_aux_img_data *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_aux_img_data_print(const union tools_open_aux_img_data *ptr_struct, FILE* file, int indent_level);
-int tools_open_aux_img_data_size(void);
-#define TOOLS_OPEN_AUX_IMG_DATA_SIZE    (0x100)
-void tools_open_aux_img_data_dump(const union tools_open_aux_img_data *ptr_struct, FILE* file);
-/* hcr_cmds */
-void tools_open_hcr_cmds_pack(const union tools_open_hcr_cmds *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_hcr_cmds_unpack(union tools_open_hcr_cmds *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_hcr_cmds_print(const union tools_open_hcr_cmds *ptr_struct, FILE* file, int indent_level);
-int tools_open_hcr_cmds_size(void);
-#define TOOLS_OPEN_HCR_CMDS_SIZE    (0x108)
-void tools_open_hcr_cmds_dump(const union tools_open_hcr_cmds *ptr_struct, FILE* file);
-/* access_registers */
-void tools_open_access_registers_pack(const union tools_open_access_registers *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_access_registers_unpack(union tools_open_access_registers *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_access_registers_print(const union tools_open_access_registers *ptr_struct, FILE* file, int indent_level);
-int tools_open_access_registers_size(void);
-#define TOOLS_OPEN_ACCESS_REGISTERS_SIZE    (0x200)
-void tools_open_access_registers_dump(const union tools_open_access_registers *ptr_struct, FILE* file);
-/* nv_cfg */
-void tools_open_nv_cfg_pack(const union tools_open_nv_cfg *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_nv_cfg_unpack(union tools_open_nv_cfg *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_nv_cfg_print(const union tools_open_nv_cfg *ptr_struct, FILE* file, int indent_level);
-int tools_open_nv_cfg_size(void);
-#define TOOLS_OPEN_NV_CFG_SIZE    (0x100)
-void tools_open_nv_cfg_dump(const union tools_open_nv_cfg *ptr_struct, FILE* file);
-/* tools_open */
-void tools_open_tools_open_pack(const union tools_open_tools_open *ptr_struct, u_int8_t* ptr_buff);
-void tools_open_tools_open_unpack(union tools_open_tools_open *ptr_struct, const u_int8_t* ptr_buff);
-void tools_open_tools_open_print(const union tools_open_tools_open *ptr_struct, FILE* file, int indent_level);
-int tools_open_tools_open_size(void);
-#define TOOLS_OPEN_TOOLS_OPEN_SIZE    (0x100000)
-void tools_open_tools_open_dump(const union tools_open_tools_open *ptr_struct, FILE* file);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // TOOLS_OPEN_LAYOUTS_H
diff --git a/tools_res_mgmt/Makefile.am b/tools_res_mgmt/Makefile.am
deleted file mode 100644 (file)
index 4b513f4..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved.
-#
-# This software is available to you under a choice of one of two
-# licenses.  You may choose to be licensed under the terms of the GNU
-# General Public License (GPL) Version 2, available from the file
-# COPYING in the main directory of this source tree, or the
-# OpenIB.org BSD license below:
-#
-#     Redistribution and use in source and binary forms, with or
-#     without modification, are permitted provided that the following
-#     conditions are met:
-#
-#      - Redistributions of source code must retain the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer.
-#
-#      - Redistributions in binary form must reproduce the above
-#        copyright notice, this list of conditions and the following
-#        disclaimer in the documentation and/or other materials
-#        provided with the distribution.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#--
-
-# Makefile.am -- Process this file with automake to produce Makefile.in
-
-USER_DIR = $(top_srcdir)
-MTCR_DIR = $(USER_DIR)/include/mtcr_ul
-AM_CPPFLAGS = -I. -I../common -I$(MTCR_DIR) -I.. -I$(USER_DIR)/mtcr_ul
-
-AM_CFLAGS = -W -Wall -Werror -g -MP -MD $(COMPILER_FPIC) 
-noinst_LIBRARIES = libtools_res_mgmt.a
-
-libtools_res_mgmt_a_SOURCES = tools_res_mgmt.c tools_time.c
-
-if ENABLE_INBAND
-else
-AM_CFLAGS += -DNO_INBAND
-endif
diff --git a/tools_res_mgmt/tools_res_mgmt.c b/tools_res_mgmt/tools_res_mgmt.c
deleted file mode 100644 (file)
index 94ee40a..0000000
+++ /dev/null
@@ -1,545 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <common/tools_utils.h>
-#include <common/bit_slice.h>
-#include <common/compatibility.h>
-#include <dev_mgt/tools_dev_types.h>
-
-#if !defined(__FreeBSD__) && !defined(UEFI_BUILD)
-#include <mtcr_ib_res_mgt.h>
-#endif
-
-#ifdef __WIN__
-#include <process.h>
-#define getpid() _getpid()
-#endif
-
-#include "tools_res_mgmt.h"
-#include "tools_time.h"
-
-#define VSEC_SEM_NUM 10
-#define HW_SEM_NUM VSEC_SEM_NUM
-
-/*
- * Macros:
- */
-
-/*
- * VSEC semaphore space macros
- */
-
-#define SET_SPACE_FOR_SEMAPHORE_ACCESS(mf)   \
-    if (mget_vsec_supp(mf)) {               \
-        mset_addr_space(mf, AS_SEMAPHORE);   \
-    }
-
-#define RESTORE_SPACE(mf) mset_addr_space(mf, AS_CR_SPACE)
-
-#define MWRITE4_SEMAPHORE(mf, offset, value, action_on_fail)\
-        do {\
-        SET_SPACE_FOR_SEMAPHORE_ACCESS(mf);\
-        if (mwrite4(mf, offset, value) != 4) {\
-           RESTORE_SPACE(mf);\
-            action_on_fail;\
-        }\
-        RESTORE_SPACE(mf);\
-    }while(0)
-
-#define MREAD4_SEMAPHORE(mf, offset, ptr, action_on_fail)\
-    do {\
-        SET_SPACE_FOR_SEMAPHORE_ACCESS(mf);\
-        if (mread4(mf, offset, ptr) != 4) {\
-            RESTORE_SPACE(mf);\
-            action_on_fail;\
-        }\
-        RESTORE_SPACE(mf);\
-    }while(0)
-
-/***********************/
-
-static const char* status_to_str[] =
-{
-        "Ok",
-        "Resource is busy",
-        "Tools resource management interface not available",
-        "Device not supported",
-        "Resource not supported",
-        "CR-Space access error",
-        "Memory allocation failed"
-};
-
-struct device_sem_info
-{
-    dm_dev_id_t dev_id;
-    u_int32_t hw_sem_addr[HW_SEM_NUM]; // if semaphore entry supported: value != 0 , main semaphore is at [0]
-    int vsec_sem_supported;
-};
-
-static u_int32_t g_vsec_sem_addr[VSEC_SEM_NUM] = {0x0, 0x10};
-
-#define HW_SEM_ADDR_MASK 0xf
-
-static struct device_sem_info g_dev_sem_info_db[] = {
-        {
-                DeviceConnectX2,            // dev_id
-                {0xf03bc},                  // hw_sem_addr
-                0,                          // vsec_sem_supported
-        },
-        {
-                DeviceConnectX3,            // dev_id
-                {0xf03bc, 0xf03a0},         // hw_sem_addr
-                0,                          // vsec_sem_supported
-        },
-        {
-                DeviceConnectX3Pro,         // dev_id
-                {0xf03bc, 0xf03a0},         // hw_sem_addr
-                0,                          // vsec_sem_supported
-        },
-        {
-                DeviceInfiniScaleIV,        // dev_id
-                {0},                        // hw_sem_addr
-                0,                          // vsec_sem_supported
-        },
-        {
-                DeviceSwitchX,              // dev_id
-                {0},                        // hw_sem_addr
-                0,                          // vsec_sem_supported
-        },
-        {
-                DeviceConnectIB, // dev_id
-                {0xe27f8},       // hw_sem_addr
-                1,               // vsec_sem_supported
-        },
-        {
-                DeviceConnectX4, // dev_id
-                {0xe250c},       // hw_sem_addr
-                1,               // vsec_sem_supported
-        },
-        {
-                DeviceSwitchIB,  // dev_id
-                {0xa24f8},       // hw_sem_addr
-                0,               // vsec_sem_supported
-        },
-        {
-                DeviceSpectrum,  // dev_id
-                {0xa24f8},       // hw_sem_addr
-                0,               // vsec_sem_supported
-        },
-        {
-                DeviceConnectX4LX, // dev_id
-                {0xe250c},       // hw_sem_addr
-                1,               // vsec_sem_supported
-        },
-        {
-                DeviceSwitchIB2,  // dev_id
-                {0xa24f8},       // hw_sem_addr
-                0,               // vsec_sem_supported
-        },
-        {
-                DeviceConnectX5, // dev_id
-                {0xe250c},       // hw_sem_addr
-                1,               // vsec_sem_supported
-        },
-};
-
-#define MAX_SEMAPHORE_ADDRES 8
-
-struct mad_lock_info {
-    u_int32_t lock_key;
-    u_int32_t lease_time_ms;
-    tt_ctx_t  start_time;
-};
-
-struct trm_t {
-        mfile* mf;
-        const struct device_sem_info* dev_sem_info;
-        struct mad_lock_info mad_lock[MAX_SEMAPHORE_ADDRES];
-        int ib_semaphore_lock_is_supported;
-};
-
-/************************************
- * Function: lock_hw_semaphore
- ************************************/
-static trm_sts lock_hw_semaphore(mfile* mf, u_int32_t addr, unsigned int max_retries)
-{
-    u_int32_t val;
-    unsigned int cnt = 0;
-    int rc;
-
-    while (((rc = mread4(mf, addr, &val)) == 4) && val == 1 && cnt < max_retries) {
-        cnt ++;
-        msleep(((rand() % 5) + 1));
-    }
-
-    if (rc != 4) {
-        return TRM_STS_CR_ACCESS_ERR;
-    } else if (val == 0) {
-        return TRM_STS_OK;
-    } else {
-        return TRM_STS_RES_BUSY;
-    }
-}
-
-/************************************
- * Function: unlock_hw_semaphore
- ************************************/
-static trm_sts unlock_hw_semaphore(mfile* mf, u_int32_t addr)
-{
-    int rc = mwrite4(mf, addr, 0) == 4 ? TRM_STS_OK : TRM_STS_CR_ACCESS_ERR;
-    // give up the rest of the time slice
-    msleep(0);
-    return rc;
-}
-
-/************************************
- * Function: lock_vsec_semaphore()
- ************************************/
-static trm_sts lock_vsec_semaphore(mfile* mf, u_int32_t addr, unsigned int max_retries)
-{
-    static u_int32_t pid = 0;
-    u_int32_t read_val;
-    unsigned cnt = 0;
-
-    if (!pid) {
-        pid = getpid();
-    }
-    do {    // loop while the semaphore is taken by someone else
-        if (cnt++ > max_retries) {
-            return TRM_STS_RES_BUSY;
-        }
-        //write pid to semaphore
-        MWRITE4_SEMAPHORE(mf, addr, pid, return TRM_STS_CR_ACCESS_ERR);
-        // Read back
-        MREAD4_SEMAPHORE(mf, addr, &read_val, return TRM_STS_CR_ACCESS_ERR);
-        if (read_val == pid)
-            break;
-        msleep(((rand() % 5) + 1));
-    } while (read_val != pid);
-    return TRM_STS_OK;
-}
-
-/************************************
- * Function: unlock_vsec_semaphore()
- ************************************/
-static trm_sts unlock_vsec_semaphore(mfile* mf, u_int32_t addr)
-{
-    MWRITE4_SEMAPHORE(mf, addr, 0, return TRM_STS_CR_ACCESS_ERR);
-    return TRM_STS_OK;
-}
-
-#if !defined(__FreeBSD__) && !defined(UEFI_BUILD)
-/************************************
- * Function: release_vs_mad_semaphore()
- ************************************/
-#define GET_LEASE_TIME_MS(is_leaseable, lease_time_exp) ((is_leaseable) ? (50 * (1 << (lease_time_exp))) : 0)
-
-static trm_sts release_vs_mad_semaphore(trm_ctx trm, trm_resourse resource)
-{
-    u_int32_t lock_key;
-    u_int8_t new_lease_exponent;
-    int is_leaseable = 0;
-
-    int rc = TRM_STS_OK;
-    if (!trm->mad_lock[resource].lock_key) {
-        return TRM_STS_OK;
-    }
-    if (trm->ib_semaphore_lock_is_supported == 0) {
-        return TRM_STS_RES_NOT_SUPPORTED;
-    }
-    rc = mib_semaphore_lock_vs_mad(trm->mf, SMP_SEM_RELEASE, g_vsec_sem_addr[resource],
-                                   trm->mad_lock[resource].lock_key, &lock_key, &is_leaseable, &new_lease_exponent, SEM_LOCK_SET);
-    if (rc == ME_MAD_BUSY) {
-        return TRM_STS_RES_BUSY;
-    } else if (rc) {
-        return TRM_STS_RES_NOT_SUPPORTED;
-    } else if (lock_key != 0) {
-        return TRM_STS_CR_ACCESS_ERR;
-    }
-    trm->mad_lock[resource].lock_key = 0;
-    trm->mad_lock[resource].lease_time_ms = 0;
-    return TRM_STS_OK;
-}
-
-/************************************
- * Function: lock_vs_mad_semaphore()
- ************************************/
-
-
-static trm_sts lock_vs_mad_semaphore(trm_ctx trm, trm_resourse resource, unsigned int max_retries)
-{
-    u_int32_t new_lock_key;
-    u_int8_t new_lease_exponent;
-    int is_leaseable = 0;
-    tt_ctx_t curr_time;
-    int rc = TRM_STS_OK;
-    unsigned int cnt = 0;
-
-    if (trm->ib_semaphore_lock_is_supported == 0) {
-        return TRM_STS_RES_NOT_SUPPORTED;
-    }
-
-    // check if we got lock_key
-    if (trm->mad_lock[resource].lock_key) {
-        // TODO: use threads to extend lock every ~20 seconds untill releasing the lock
-        // check if extension is needed
-        if (trm->mad_lock[resource].lease_time_ms == 0) {
-            // no need to extend lease is untill device reboot
-            return TRM_STS_OK;
-        }
-
-        tt_get_time(&curr_time);
-        double diff = tt_diff_in_ms(trm->mad_lock[resource].start_time, curr_time);
-        if ( diff <= trm->mad_lock[resource].lease_time_ms * 0.6) {
-            return TRM_STS_OK;
-        }
-        // extension needed try to extend
-        rc = mib_semaphore_lock_vs_mad(trm->mf, SMP_SEM_EXTEND, g_vsec_sem_addr[resource],
-                trm->mad_lock[resource].lock_key, &new_lock_key, &is_leaseable, &new_lease_exponent, SEM_LOCK_SET);
-        if (rc == ME_OK && new_lock_key == trm->mad_lock[resource].lock_key) {
-            // extend OK
-            trm->mad_lock[resource].lease_time_ms = GET_LEASE_TIME_MS(is_leaseable, new_lease_exponent);
-            trm->mad_lock[resource].start_time = curr_time;
-            return TRM_STS_OK;
-        } else {
-            // extend failed try to re-lock the semaphore
-            trm->mad_lock[resource].lock_key = 0;
-            trm->mad_lock[resource].lease_time_ms = 0;
-            new_lock_key = 0;
-        }
-    }
-    // if not or extend failed try to lock
-    do {
-        if (cnt++ > max_retries) {
-            return TRM_STS_RES_BUSY;
-        }
-        rc = mib_semaphore_lock_vs_mad(trm->mf, SMP_SEM_LOCK, g_vsec_sem_addr[resource],
-                                       0, &new_lock_key, &is_leaseable, &new_lease_exponent, SEM_LOCK_SET);
-        if (rc == ME_MAD_BUSY || new_lock_key == 0) {
-            msleep(((rand() % 5) + 1));
-        }
-    } while (rc == ME_MAD_BUSY || new_lock_key == 0) ;
-
-    if (rc) {
-        return TRM_STS_RES_NOT_SUPPORTED;
-    }
-    trm->mad_lock[resource].lock_key = new_lock_key;
-    trm->mad_lock[resource].lease_time_ms = GET_LEASE_TIME_MS(is_leaseable, new_lease_exponent);
-    tt_get_time(&(trm->mad_lock[resource].start_time));
-    return TRM_STS_OK;
-}
-#endif
-/************************************
- * Function: get_device_sem_info
- ************************************/
-static struct device_sem_info* get_device_sem_info(dm_dev_id_t dev_id)
-{
-    size_t i;
-    for (i = 0; i < sizeof(g_dev_sem_info_db)/sizeof(g_dev_sem_info_db[0]); i++) {
-        if (g_dev_sem_info_db[i].dev_id == dev_id) {
-            return &g_dev_sem_info_db[i];
-        }
-    }
-
-    return NULL;
-}
-
-/************************************
- * Function: trm_create
- ************************************/
-trm_sts trm_create(trm_ctx* trm_p, mfile* mf)
-{
-    dm_dev_id_t dev_id = DeviceStartMarker;
-    u_int32_t hw_dev_id;
-    u_int32_t chip_rev;
-
-    *trm_p = (trm_ctx) malloc (sizeof(struct trm_t));
-    if (! (*trm_p)) {
-        return TRM_STS_MEM_ERROR;
-    }
-    memset((*trm_p), 0, sizeof(struct trm_t));
-    (*trm_p)->mf = mf;
-
-#if !defined(__FreeBSD__) && !defined(UEFI_BUILD)
-    u_int32_t dev_flags = 0;
-    if (!mget_mdevs_flags(mf, &dev_flags)) {
-        if ((dev_flags & MDEVS_IB) && mib_semaphore_lock_is_supported(mf) == 1) {
-            (*trm_p)->ib_semaphore_lock_is_supported = 1;
-        }
-    }
-#endif
-
-    if (dm_get_device_id((*trm_p)->mf, &dev_id, &hw_dev_id, &chip_rev)) {
-        free(*trm_p);
-        *trm_p = (trm_ctx)NULL;
-        return dev_id == DeviceUnknown ? TRM_STS_DEV_NOT_SUPPORTED : TRM_STS_CR_ACCESS_ERR;
-    }
-
-    (*trm_p)->dev_sem_info = get_device_sem_info(dev_id);
-
-    // Not supported device
-    if (!((*trm_p)->dev_sem_info)) {
-        free(*trm_p);
-        *trm_p = (trm_ctx)NULL;
-        return TRM_STS_DEV_NOT_SUPPORTED;
-    }
-
-    return TRM_STS_OK;
-}
-
-/************************************
- * Function: trm_destroy
- ************************************/
-trm_sts trm_destroy(trm_ctx trm)
-{
-    if (trm) {
-        free(trm);
-    }
-    return TRM_STS_OK;
-}
-
-/************************************
- * Function: trm_lock
- ************************************/
-trm_sts trm_lock(trm_ctx trm, trm_resourse res, unsigned int max_retries)
-{
-    u_int32_t dev_type = 0;
-    mget_mdevs_flags(trm->mf, &dev_type);
-
-    // lock resource on appropriate ifc if supported
-    switch ((int)res) {
-    case TRM_RES_ICMD:
-        if (trm->dev_sem_info->vsec_sem_supported && mget_vsec_supp(trm->mf)) {
-            return lock_vsec_semaphore(trm->mf, g_vsec_sem_addr[TRM_RES_ICMD], max_retries);
-#if !defined(__FreeBSD__) && !defined(UEFI_BUILD)
-        } else if (trm->dev_sem_info->vsec_sem_supported && (dev_type & MDEVS_IB)) {
-            return lock_vs_mad_semaphore(trm, TRM_RES_ICMD, max_retries);
-#endif
-        } else if (trm->dev_sem_info->hw_sem_addr[TRM_RES_MAIN_SEM & HW_SEM_ADDR_MASK]) { // lock hw semaphore
-            return lock_hw_semaphore(trm->mf, trm->dev_sem_info->hw_sem_addr[TRM_RES_MAIN_SEM & HW_SEM_ADDR_MASK], max_retries);
-        }
-        break;
-    case TRM_RES_FLASH_PROGRAMING:
-        if (trm->dev_sem_info->vsec_sem_supported && mget_vsec_supp(trm->mf)) {
-            return lock_vsec_semaphore(trm->mf, g_vsec_sem_addr[TRM_RES_FLASH_PROGRAMING], max_retries);
-#if !defined(__FreeBSD__) && !defined(UEFI_BUILD)
-        } else if (trm->dev_sem_info->vsec_sem_supported && (dev_type & MDEVS_IB)) {
-            return lock_vs_mad_semaphore(trm, TRM_RES_FLASH_PROGRAMING, max_retries);
-#endif
-        }
-        break;
-    case TRM_RES_HCR_FLASH_PROGRAMING:
-        if (trm->dev_sem_info->hw_sem_addr[TRM_RES_HCR_FLASH_PROGRAMING & HW_SEM_ADDR_MASK]){ // lock hw semaphore
-            return lock_hw_semaphore(trm->mf, trm->dev_sem_info->hw_sem_addr[TRM_RES_HCR_FLASH_PROGRAMING & HW_SEM_ADDR_MASK], max_retries);
-        }
-        break;
-    case TRM_RES_HW_TRACER:
-        if (trm->dev_sem_info->hw_sem_addr[TRM_RES_HW_TRACER & HW_SEM_ADDR_MASK]){ // lock hw semaphore
-            return lock_hw_semaphore(trm->mf, trm->dev_sem_info->hw_sem_addr[TRM_RES_HW_TRACER & HW_SEM_ADDR_MASK], max_retries);
-        }
-    break;
-    default:
-        break;
-    }
-    return TRM_STS_RES_NOT_SUPPORTED;
-}
-
-/************************************
- * Function: trm_try_lock
- ************************************/
-trm_sts trm_try_lock(trm_ctx trm, trm_resourse res)
-{
-    return trm_lock(trm, res, 1);
-}
-
-/************************************
- * Function: trm_unlock
- ************************************/
-trm_sts trm_unlock(trm_ctx trm, trm_resourse res)
-{
-    u_int32_t dev_type = 0;
-    mget_mdevs_flags(trm->mf, &dev_type);
-
-    // lock resource on appropriate ifc if supported
-    switch ((int)res) {
-    case TRM_RES_ICMD:
-        if (trm->dev_sem_info->vsec_sem_supported && mget_vsec_supp(trm->mf)) {
-            return unlock_vsec_semaphore(trm->mf, g_vsec_sem_addr[TRM_RES_ICMD]);
-#if !defined(__FreeBSD__) && !defined(UEFI_BUILD)
-        } else if (trm->dev_sem_info->vsec_sem_supported && (dev_type & MDEVS_IB)) {
-            return release_vs_mad_semaphore(trm, TRM_RES_ICMD);
-#endif
-        } else if (trm->dev_sem_info->hw_sem_addr[TRM_RES_MAIN_SEM & HW_SEM_ADDR_MASK]){ // lock hw semaphore
-            return unlock_hw_semaphore(trm->mf, trm->dev_sem_info->hw_sem_addr[TRM_RES_MAIN_SEM & HW_SEM_ADDR_MASK]);
-        }
-        break;
-    case TRM_RES_FLASH_PROGRAMING:
-        if (trm->dev_sem_info->vsec_sem_supported && mget_vsec_supp(trm->mf)) {
-                   return unlock_vsec_semaphore(trm->mf, g_vsec_sem_addr[TRM_RES_FLASH_PROGRAMING]);
-#if !defined(__FreeBSD__) && !defined(UEFI_BUILD)
-        } else if (trm->dev_sem_info->vsec_sem_supported && (dev_type & MDEVS_IB)) {
-            return release_vs_mad_semaphore(trm, TRM_RES_FLASH_PROGRAMING);
-#endif
-        }
-        break;
-    case TRM_RES_HCR_FLASH_PROGRAMING:
-        if (trm->dev_sem_info->hw_sem_addr[TRM_RES_HCR_FLASH_PROGRAMING & HW_SEM_ADDR_MASK]){ // lock hw semaphore
-            return unlock_hw_semaphore(trm->mf, trm->dev_sem_info->hw_sem_addr[TRM_RES_HCR_FLASH_PROGRAMING & HW_SEM_ADDR_MASK]);
-        }
-        break;
-    case TRM_RES_HW_TRACER:
-        if (trm->dev_sem_info->hw_sem_addr[TRM_RES_HW_TRACER & HW_SEM_ADDR_MASK]){ // lock hw semaphore
-            return unlock_hw_semaphore(trm->mf, trm->dev_sem_info->hw_sem_addr[TRM_RES_HW_TRACER & HW_SEM_ADDR_MASK]);
-        }
-    break;
-    default:
-        break;
-    }
-    return TRM_STS_RES_NOT_SUPPORTED;
-}
-
-/************************************
- * Function: trm_sts2str
- ************************************/
-const char* trm_sts2str(trm_sts status)
-{
-    size_t num_of_sts = sizeof(status_to_str)/sizeof(status_to_str[0]);
-
-    if ((size_t)status >= num_of_sts) {
-        return "Unknown status code";
-    }
-
-    return status_to_str[status];
-}
diff --git a/tools_res_mgmt/tools_res_mgmt.h b/tools_res_mgmt/tools_res_mgmt.h
deleted file mode 100644 (file)
index e4335cd..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef TOOLS_RESOURCE_MGMT_H
-#define TOOLS_RESOURCE_MGMT_H
-
-#include <mtcr.h>
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    TRM_STS_OK = 0,
-    TRM_STS_RES_BUSY,
-    TRM_STS_IFC_NA,
-    TRM_STS_DEV_NOT_SUPPORTED,
-    TRM_STS_RES_NOT_SUPPORTED,
-    TRM_STS_CR_ACCESS_ERR,
-    TRM_STS_MEM_ERROR
-} trm_sts;
-
-typedef enum {
-    // vsec semaphores
-    TRM_RES_ICMD = 0x0,
-    TRM_RES_FLASH_PROGRAMING     = 0x1,
-    // hw semaphores
-    TRM_RES_MAIN_SEM             = 0x10,
-    TRM_RES_HW_TRACER            = TRM_RES_MAIN_SEM,
-    TRM_RES_TOOLS_HCR            = TRM_RES_MAIN_SEM,
-    TRM_RES_HCR_FLASH_PROGRAMING = 0x11,
-    TRM_RES_ALL                  = 0xffff,
-} trm_resourse;
-
-typedef struct trm_t* trm_ctx;
-
-
-/*
- * Create tools resource context
- * trm_p: trm_ctx pointer to be allocated
- * Parameter (mf)  - an opened mst device handler
- * Return TOOLS_STS_OK on success of creating the context, otherwise any other error code.
- */
-trm_sts trm_create(trm_ctx* trm_p, mfile* mf);
-
-
-/*
- * Destroy the context
- * trm: trm_ctx to be destroyed
- * Return TOOLS_STS_OK on success of destroying the context, otherwise any other error code.
- */
-trm_sts trm_destroy(trm_ctx trm);
-
-/*
- * Lock tools resource
- * Parameter (mf)  - an opened mst device handler
- * Parameter (res) - resource to acquire.
- * Parameter (max_retry) - max retry count before declaring resource busy.
- * Return TOOLS_STS_OK on success of locking all the desired resources, otherwise any other error code.
- */
-trm_sts trm_lock(trm_ctx trm, trm_resourse res, unsigned int max_retry);
-
-/*
- * Try to lock tools resource (returns immediately if resource busy)
- * Parameter (mf)  - an opened mst device handler
- * Parameter (res) - resource to acquire.
- * Return TOOLS_STS_OK on success of locking all the desired resources, otherwise any other error code.
- */
-trm_sts trm_try_lock(trm_ctx trm, trm_resourse res);
-
-/*
- * Unlock tools resource
- * Parameter (mf)  - an opened mst device handler
- * Parameter (res) - resource to release.
- * Return TOOLS_STS_OK if all given resources were unlocked successfully.
- */
-trm_sts trm_unlock(trm_ctx trm, trm_resourse res);
-
-/*
- * Translate tools_sem_mgmt_sts status code to a human readable string.
- * Parameter (status) - status code to translate.
- * Return descriptive string.
- */
-const char* trm_sts2str(trm_sts status);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // TOOLS_RESOURCE_MGMT_H
diff --git a/tools_res_mgmt/tools_time.c b/tools_res_mgmt/tools_time.c
deleted file mode 100644 (file)
index 2b68d8b..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-
-#include "tools_time.h"
-
-
-
-void tt_get_time(tt_ctx_t* tt)
-{
-    if (!tt) {
-        return;
-    }
-    time(&(tt->now));
-    return;
-}
-
-double tt_diff_in_ms(tt_ctx_t t1, tt_ctx_t t2)
-{
-    return difftime(t2.now, t1.now) * 1000;
-}
-
-
-
diff --git a/tools_res_mgmt/tools_time.h b/tools_res_mgmt/tools_time.h
deleted file mode 100644 (file)
index 1cbcaf7..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved.
- *
- * This software is available to you under a choice of one of two
- * licenses.  You may choose to be licensed under the terms of the GNU
- * General Public License (GPL) Version 2, available from the file
- * COPYING in the main directory of this source tree, or the
- * OpenIB.org BSD license below:
- *
- *     Redistribution and use in source and binary forms, with or
- *     without modification, are permitted provided that the following
- *     conditions are met:
- *
- *      - Redistributions of source code must retain the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer.
- *
- *      - Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials
- *        provided with the distribution.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <time.h>
-
-typedef struct tt_ctx {
-    time_t now;
-} tt_ctx_t;
-
-// update context with the current time
-void tt_get_time(tt_ctx_t* tt);
-// get diff in ms between the time t1 was created and t2
-double tt_diff_in_ms(tt_ctx_t t1, tt_ctx_t t2);
-
-#ifdef __cplusplus
-}
-#endif