From f02dfce6e6c34b3d8a7b8a0e784b506178e331fa Mon Sep 17 00:00:00 2001 From: "erdgeist@erdgeist.org" Date: Thu, 4 Jul 2019 23:26:09 +0200 Subject: stripdown of version 0.9 --- COPYING | 502 +++++++++ Makefile | 17 + README | 9 + _kiss_fft_guts.h | 164 +++ bpf.h | 106 ++ bpfb.h | 105 ++ c2wideband.h | 0 codebook.c | 245 +++++ codebookd.c | 433 ++++++++ codebookge.c | 279 +++++ codebookjvm.c | 1579 +++++++++++++++++++++++++++ codebooklspmelvq.c | 247 +++++ codebookmel.c | 145 +++ codebooknewamp1.c | 1057 ++++++++++++++++++ codebooknewamp1_energy.c | 39 + codebooknewamp2.c | 527 +++++++++ codebooknewamp2_energy.c | 35 + codec2.c | 2721 ++++++++++++++++++++++++++++++++++++++++++++++ codec2.h | 127 +++ codec2_fft.c | 158 +++ codec2_fft.h | 104 ++ codec2_internal.h | 106 ++ comp.h | 38 + comp_prim.h | 141 +++ debug_alloc.h | 2 + defines.h | 125 +++ dump.h | 0 interp.c | 331 ++++++ interp.h | 45 + kiss_fft.c | 408 +++++++ kiss_fft.h | 124 +++ kiss_fftr.c | 154 +++ kiss_fftr.h | 46 + lpc.c | 306 ++++++ lpc.h | 43 + lsp.c | 321 ++++++ lsp.h | 37 + machdep.h | 52 + main.c | 34 + mbest.c | 173 +++ mbest.h | 59 + newamp1.c | 625 +++++++++++ newamp1.h | 84 ++ newamp2.c | 570 ++++++++++ newamp2.h | 89 ++ nlp.c | 702 ++++++++++++ nlp.h | 38 + os.h | 53 + pack.c | 140 +++ phase.c | 289 +++++ phase.h | 39 + postfilter.c | 142 +++ postfilter.h | 33 + quantise.c | 2051 ++++++++++++++++++++++++++++++++++ quantise.h | 141 +++ sine.c | 689 ++++++++++++ sine.h | 49 + stripdown.sh | 120 ++ version.h | 37 + 59 files changed, 17035 insertions(+) create mode 100644 COPYING create mode 100644 Makefile create mode 100644 README create mode 100644 _kiss_fft_guts.h create mode 100644 bpf.h create mode 100644 bpfb.h create mode 100644 c2wideband.h create mode 100644 codebook.c create mode 100644 codebookd.c create mode 100644 codebookge.c create mode 100644 codebookjvm.c create mode 100644 codebooklspmelvq.c create mode 100644 codebookmel.c create mode 100644 codebooknewamp1.c create mode 100644 codebooknewamp1_energy.c create mode 100644 codebooknewamp2.c create mode 100644 codebooknewamp2_energy.c create mode 100644 codec2.c create mode 100644 codec2.h create mode 100644 codec2_fft.c create mode 100644 codec2_fft.h create mode 100644 codec2_internal.h create mode 100644 comp.h create mode 100644 comp_prim.h create mode 100644 debug_alloc.h create mode 100644 defines.h create mode 100644 dump.h create mode 100644 interp.c create mode 100644 interp.h create mode 100644 kiss_fft.c create mode 100644 kiss_fft.h create mode 100644 kiss_fftr.c create mode 100644 kiss_fftr.h create mode 100644 lpc.c create mode 100644 lpc.h create mode 100644 lsp.c create mode 100644 lsp.h create mode 100644 machdep.h create mode 100644 main.c create mode 100644 mbest.c create mode 100644 mbest.h create mode 100644 newamp1.c create mode 100644 newamp1.h create mode 100644 newamp2.c create mode 100644 newamp2.h create mode 100644 nlp.c create mode 100644 nlp.h create mode 100644 os.h create mode 100644 pack.c create mode 100644 phase.c create mode 100644 phase.h create mode 100644 postfilter.c create mode 100644 postfilter.h create mode 100644 quantise.c create mode 100644 quantise.h create mode 100644 sine.c create mode 100644 sine.h create mode 100755 stripdown.sh create mode 100644 version.h diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..cc40a46 --- /dev/null +++ b/COPYING @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +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 and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, 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 library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete 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 distribute a copy of this License along with the +Library. + + 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 Library or any portion +of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +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 Library, 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 Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you 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. + + If distribution of 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 satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be 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. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library 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. + + 9. 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 Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +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 with +this License. + + 11. 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 Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library 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 Library. + +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. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library 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. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser 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 Library +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 Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +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 + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "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 +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. 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 LIBRARY 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 +LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. 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. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, see + . + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a716871 --- /dev/null +++ b/Makefile @@ -0,0 +1,17 @@ +CFLAGS = -Wall -Wno-strict-overflow -std=gnu11 -fPIC -g -O2 -I. +CFLAGS += -DHORUS_L2_RX -DINTERLEAVER -DRUN_TIME_TABLES -DSCRAMBLER -Dcodec2_EXPORTS +CFLAGS += -Wno-incompatible-pointer-types-discards-qualifiers + +LIBSRC=codebook.c codebookd.c codebookge.c codebookmel.c codebooklspmelvq.c codebookjvm.c \ + codebooknewamp1.c codebooknewamp1_energy.c codebooknewamp2.c codebooknewamp2_energy.c \ + codec2.c codec2_fft.c interp.c kiss_fft.c kiss_fftr.c lpc.c lsp.c mbest.c \ + newamp1.c newamp2.c nlp.c pack.c phase.c postfilter.c quantise.c sine.c + +all: main + +main: main.c $(LIBSRC) + clang $(CFLAGS) -o $@ $^ + +.PHONY: clean +clean: + rm -f main diff --git a/README b/README new file mode 100644 index 0000000..85341f7 --- /dev/null +++ b/README @@ -0,0 +1,9 @@ + +This project is meant to generate a subset of the amazing codec2 library containing only the actual speech codec and having no further dependencies than a C99 compiler. + +The generate a stripped down version of codec2 that does not need CMake etc, just copy the stripdown.sh file to your codec2 directory and run it. This will generate the directory you see here. + +Codec 2 is an open source (LGPL 2.1) low bit rate speech codec: + +http://rowetel.com/codec2.html + diff --git a/_kiss_fft_guts.h b/_kiss_fft_guts.h new file mode 100644 index 0000000..1c62a34 --- /dev/null +++ b/_kiss_fft_guts.h @@ -0,0 +1,164 @@ +/* +Copyright (c) 2003-2010, Mark Borgerding + +All rights reserved. + +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. + * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +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. +*/ + +/* kiss_fft.h + defines kiss_fft_scalar as either short or a float type + and defines + typedef struct { kiss_fft_scalar r; kiss_fft_scalar i; }kiss_fft_cpx; */ +#include "kiss_fft.h" +#include + +#define MAXFACTORS 32 +/* e.g. an fft of length 128 has 4 factors + as far as kissfft is concerned + 4*4*4*2 + */ + +struct kiss_fft_state{ + int nfft; + int inverse; + int factors[2*MAXFACTORS]; + kiss_fft_cpx twiddles[1]; +}; + +/* + Explanation of macros dealing with complex math: + + C_MUL(m,a,b) : m = a*b + C_FIXDIV( c , div ) : if a fixed point impl., c /= div. noop otherwise + C_SUB( res, a,b) : res = a - b + C_SUBFROM( res , a) : res -= a + C_ADDTO( res , a) : res += a + * */ +#ifdef FIXED_POINT +#if (FIXED_POINT==32) +# define FRACBITS 31 +# define SAMPPROD int64_t +#define SAMP_MAX 2147483647 +#else +# define FRACBITS 15 +# define SAMPPROD int32_t +#define SAMP_MAX 32767 +#endif + +#define SAMP_MIN -SAMP_MAX + +#if defined(CHECK_OVERFLOW) +# define CHECK_OVERFLOW_OP(a,op,b) \ + if ( (SAMPPROD)(a) op (SAMPPROD)(b) > SAMP_MAX || (SAMPPROD)(a) op (SAMPPROD)(b) < SAMP_MIN ) { \ + fprintf(stderr,"WARNING:overflow @ " __FILE__ "(%d): (%d " #op" %d) = %ld\n",__LINE__,(a),(b),(SAMPPROD)(a) op (SAMPPROD)(b) ); } +#endif + + +# define smul(a,b) ( (SAMPPROD)(a)*(b) ) +# define sround( x ) (kiss_fft_scalar)( ( (x) + (1<<(FRACBITS-1)) ) >> FRACBITS ) + +# define S_MUL(a,b) sround( smul(a,b) ) + +# define C_MUL(m,a,b) \ + do{ (m).r = sround( smul((a).r,(b).r) - smul((a).i,(b).i) ); \ + (m).i = sround( smul((a).r,(b).i) + smul((a).i,(b).r) ); }while(0) + +# define DIVSCALAR(x,k) \ + (x) = sround( smul( x, SAMP_MAX/k ) ) + +# define C_FIXDIV(c,div) \ + do { DIVSCALAR( (c).r , div); \ + DIVSCALAR( (c).i , div); }while (0) + +# define C_MULBYSCALAR( c, s ) \ + do{ (c).r = sround( smul( (c).r , s ) ) ;\ + (c).i = sround( smul( (c).i , s ) ) ; }while(0) + +#else /* not FIXED_POINT*/ + +# define S_MUL(a,b) ( (a)*(b) ) +#define C_MUL(m,a,b) \ + do{ (m).r = (a).r*(b).r - (a).i*(b).i;\ + (m).i = (a).r*(b).i + (a).i*(b).r; }while(0) +# define C_FIXDIV(c,div) /* NOOP */ +# define C_MULBYSCALAR( c, s ) \ + do{ (c).r *= (s);\ + (c).i *= (s); }while(0) +#endif + +#ifndef CHECK_OVERFLOW_OP +# define CHECK_OVERFLOW_OP(a,op,b) /* noop */ +#endif + +#define C_ADD( res, a,b)\ + do { \ + CHECK_OVERFLOW_OP((a).r,+,(b).r)\ + CHECK_OVERFLOW_OP((a).i,+,(b).i)\ + (res).r=(a).r+(b).r; (res).i=(a).i+(b).i; \ + }while(0) +#define C_SUB( res, a,b)\ + do { \ + CHECK_OVERFLOW_OP((a).r,-,(b).r)\ + CHECK_OVERFLOW_OP((a).i,-,(b).i)\ + (res).r=(a).r-(b).r; (res).i=(a).i-(b).i; \ + }while(0) +#define C_ADDTO( res , a)\ + do { \ + CHECK_OVERFLOW_OP((res).r,+,(a).r)\ + CHECK_OVERFLOW_OP((res).i,+,(a).i)\ + (res).r += (a).r; (res).i += (a).i;\ + }while(0) + +#define C_SUBFROM( res , a)\ + do {\ + CHECK_OVERFLOW_OP((res).r,-,(a).r)\ + CHECK_OVERFLOW_OP((res).i,-,(a).i)\ + (res).r -= (a).r; (res).i -= (a).i; \ + }while(0) + + +#ifdef FIXED_POINT +# define KISS_FFT_COS(phase) floorf(.5+SAMP_MAX * cosf (phase)) +# define KISS_FFT_SIN(phase) floorf(.5+SAMP_MAX * sinf (phase)) +# define HALF_OF(x) ((x)>>1) +#elif defined(USE_SIMD) +# define KISS_FFT_COS(phase) _mm_set1_ps( cosf(phase) ) +# define KISS_FFT_SIN(phase) _mm_set1_ps( sinf(phase) ) +# define HALF_OF(x) ((x)*_mm_set1_ps(.5)) +#else +# define KISS_FFT_COS(phase) (kiss_fft_scalar) cosf(phase) +# define KISS_FFT_SIN(phase) (kiss_fft_scalar) sinf(phase) +# define HALF_OF(x) ((x)*.5) +#endif + +#define kf_cexp(x,phase) \ + do{ \ + (x)->r = KISS_FFT_COS(phase);\ + (x)->i = KISS_FFT_SIN(phase);\ + }while(0) + + +/* a debugging function */ +#define pcpx(c)\ + fprintf(stderr,"%g + %gi\n",(double)((c)->r),(double)((c)->i) ) + + +#ifdef KISS_FFT_USE_ALLOCA +// define this to allow use of alloca instead of malloc for temporary buffers +// Temporary buffers are used in two case: +// 1. FFT sizes that have "bad" factors. i.e. not 2,3 and 5 +// 2. "in-place" FFTs. Notice the quotes, since kissfft does not really do an in-place transform. +#include +#define KISS_FFT_TMP_ALLOC(nbytes) alloca(nbytes) +#define KISS_FFT_TMP_FREE(ptr) +#else +#define KISS_FFT_TMP_ALLOC(nbytes) KISS_FFT_MALLOC(nbytes) +#define KISS_FFT_TMP_FREE(ptr) KISS_FFT_FREE(ptr) +#endif diff --git a/bpf.h b/bpf.h new file mode 100644 index 0000000..0b0a6e2 --- /dev/null +++ b/bpf.h @@ -0,0 +1,106 @@ +#define BPF_N 101 + +float bpf[]={ + 0.002174, + 0.003245, + 0.002147, + 0.001866, + 0.002764, + 0.000567, + -0.001641, + -0.000565, + -0.002415, + -0.005837, + -0.003620, + -0.002828, + -0.006268, + -0.002787, + 0.001963, + -0.001234, + 0.001446, + 0.009200, + 0.005331, + 0.003521, + 0.011821, + 0.006951, + -0.002015, + 0.005137, + 0.001828, + -0.013390, + -0.007058, + -0.003273, + -0.020458, + -0.014321, + 0.001751, + -0.012891, + -0.009730, + 0.018993, + 0.008544, + 0.000534, + 0.035755, + 0.029074, + -0.001192, + 0.030852, + 0.030983, + -0.029834, + -0.009550, + 0.011945, + -0.081971, + -0.082875, + 0.000423, + -0.133526, + -0.211778, + 0.182628, + 0.514906, + 0.182628, + -0.211778, + -0.133526, + 0.000423, + -0.082875, + -0.081971, + 0.011945, + -0.009550, + -0.029834, + 0.030983, + 0.030852, + -0.001192, + 0.029074, + 0.035755, + 0.000534, + 0.008544, + 0.018993, + -0.009730, + -0.012891, + 0.001751, + -0.014321, + -0.020458, + -0.003273, + -0.007058, + -0.013390, + 0.001828, + 0.005137, + -0.002015, + 0.006951, + 0.011821, + 0.003521, + 0.005331, + 0.009200, + 0.001446, + -0.001234, + 0.001963, + -0.002787, + -0.006268, + -0.002828, + -0.003620, + -0.005837, + -0.002415, + -0.000565, + -0.001641, + 0.000567, + 0.002764, + 0.001866, + 0.002147, + 0.003245, + 0.002174 +}; + diff --git a/bpfb.h b/bpfb.h new file mode 100644 index 0000000..73b1a69 --- /dev/null +++ b/bpfb.h @@ -0,0 +1,105 @@ +#define BPFB_N 101 + +float bpfb[]={ + 0.003795, + 0.006827, + 0.002261, + 0.002523, + 0.005758, + -0.000264, + -0.000674, + 0.003113, + -0.004144, + -0.004923, + 0.000043, + -0.008017, + -0.008711, + -0.001802, + -0.010210, + -0.010428, + -0.000899, + -0.009413, + -0.009072, + 0.003469, + -0.005335, + -0.004828, + 0.010724, + 0.000941, + 0.000708, + 0.018957, + 0.007084, + 0.004825, + 0.025418, + 0.010147, + 0.004452, + 0.027434, + 0.007550, + -0.002861, + 0.023483, + -0.001944, + -0.018138, + 0.014122, + -0.017583, + -0.040768, + 0.002598, + -0.036604, + -0.069541, + -0.004273, + -0.054876, + -0.107289, + 0.010068, + -0.068052, + -0.200119, + 0.207287, + 0.597150, + 0.207287, + -0.200119, + -0.068052, + 0.010068, + -0.107289, + -0.054876, + -0.004273, + -0.069541, + -0.036604, + 0.002598, + -0.040768, + -0.017583, + 0.014122, + -0.018138, + -0.001944, + 0.023483, + -0.002861, + 0.007550, + 0.027434, + 0.004452, + 0.010147, + 0.025418, + 0.004825, + 0.007084, + 0.018957, + 0.000708, + 0.000941, + 0.010724, + -0.004828, + -0.005335, + 0.003469, + -0.009072, + -0.009413, + -0.000899, + -0.010428, + -0.010210, + -0.001802, + -0.008711, + -0.008017, + 0.000043, + -0.004923, + -0.004144, + 0.003113, + -0.000674, + -0.000264, + 0.005758, + 0.002523, + 0.002261, + 0.006827, + 0.003795 +}; \ No newline at end of file diff --git a/c2wideband.h b/c2wideband.h new file mode 100644 index 0000000..e69de29 diff --git a/codebook.c b/codebook.c new file mode 100644 index 0000000..0b491ee --- /dev/null +++ b/codebook.c @@ -0,0 +1,245 @@ +/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */ + +/* + * This intermediary file and the files that used to create it are under + * The LGPL. See the file COPYING. + */ + +#include "defines.h" + + /* codebook/lsp1.txt */ +static const float codes0[] = { + 225, + 250, + 275, + 300, + 325, + 350, + 375, + 400, + 425, + 450, + 475, + 500, + 525, + 550, + 575, + 600 +}; + /* codebook/lsp2.txt */ +static const float codes1[] = { + 325, + 350, + 375, + 400, + 425, + 450, + 475, + 500, + 525, + 550, + 575, + 600, + 625, + 650, + 675, + 700 +}; + /* codebook/lsp3.txt */ +static const float codes2[] = { + 500, + 550, + 600, + 650, + 700, + 750, + 800, + 850, + 900, + 950, + 1000, + 1050, + 1100, + 1150, + 1200, + 1250 +}; + /* codebook/lsp4.txt */ +static const float codes3[] = { + 700, + 800, + 900, + 1000, + 1100, + 1200, + 1300, + 1400, + 1500, + 1600, + 1700, + 1800, + 1900, + 2000, + 2100, + 2200 +}; + /* codebook/lsp5.txt */ +static const float codes4[] = { + 950, + 1050, + 1150, + 1250, + 1350, + 1450, + 1550, + 1650, + 1750, + 1850, + 1950, + 2050, + 2150, + 2250, + 2350, + 2450 +}; + /* codebook/lsp6.txt */ +static const float codes5[] = { + 1100, + 1200, + 1300, + 1400, + 1500, + 1600, + 1700, + 1800, + 1900, + 2000, + 2100, + 2200, + 2300, + 2400, + 2500, + 2600 +}; + /* codebook/lsp7.txt */ +static const float codes6[] = { + 1500, + 1600, + 1700, + 1800, + 1900, + 2000, + 2100, + 2200, + 2300, + 2400, + 2500, + 2600, + 2700, + 2800, + 2900, + 3000 +}; + /* codebook/lsp8.txt */ +static const float codes7[] = { + 2300, + 2400, + 2500, + 2600, + 2700, + 2800, + 2900, + 3000 +}; + /* codebook/lsp9.txt */ +static const float codes8[] = { + 2500, + 2600, + 2700, + 2800, + 2900, + 3000, + 3100, + 3200 +}; + /* codebook/lsp10.txt */ +static const float codes9[] = { + 2900, + 3100, + 3300, + 3500 +}; + +const struct lsp_codebook lsp_cb[] = { + /* codebook/lsp1.txt */ + { + 1, + 4, + 16, + codes0 + }, + /* codebook/lsp2.txt */ + { + 1, + 4, + 16, + codes1 + }, + /* codebook/lsp3.txt */ + { + 1, + 4, + 16, + codes2 + }, + /* codebook/lsp4.txt */ + { + 1, + 4, + 16, + codes3 + }, + /* codebook/lsp5.txt */ + { + 1, + 4, + 16, + codes4 + }, + /* codebook/lsp6.txt */ + { + 1, + 4, + 16, + codes5 + }, + /* codebook/lsp7.txt */ + { + 1, + 4, + 16, + codes6 + }, + /* codebook/lsp8.txt */ + { + 1, + 3, + 8, + codes7 + }, + /* codebook/lsp9.txt */ + { + 1, + 3, + 8, + codes8 + }, + /* codebook/lsp10.txt */ + { + 1, + 2, + 4, + codes9 + }, + { 0, 0, 0, 0 } +}; diff --git a/codebookd.c b/codebookd.c new file mode 100644 index 0000000..5816402 --- /dev/null +++ b/codebookd.c @@ -0,0 +1,433 @@ +/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */ + +/* + * This intermediary file and the files that used to create it are under + * The LGPL. See the file COPYING. + */ + +#include "defines.h" + + /* codebook/dlsp1.txt */ +static const float codes0[] = { + 25, + 50, + 75, + 100, + 125, + 150, + 175, + 200, + 225, + 250, + 275, + 300, + 325, + 350, + 375, + 400, + 425, + 450, + 475, + 500, + 525, + 550, + 575, + 600, + 625, + 650, + 675, + 700, + 725, + 750, + 775, + 800 +}; + /* codebook/dlsp2.txt */ +static const float codes1[] = { + 25, + 50, + 75, + 100, + 125, + 150, + 175, + 200, + 225, + 250, + 275, + 300, + 325, + 350, + 375, + 400, + 425, + 450, + 475, + 500, + 525, + 550, + 575, + 600, + 625, + 650, + 675, + 700, + 725, + 750, + 775, + 800 +}; + /* codebook/dlsp3.txt */ +static const float codes2[] = { + 25, + 50, + 75, + 100, + 125, + 150, + 175, + 200, + 225, + 250, + 275, + 300, + 325, + 350, + 375, + 400, + 425, + 450, + 475, + 500, + 525, + 550, + 575, + 600, + 625, + 650, + 675, + 700, + 725, + 750, + 775, + 800 +}; + /* codebook/dlsp4.txt */ +static const float codes3[] = { + 25, + 50, + 75, + 100, + 125, + 150, + 175, + 200, + 250, + 300, + 350, + 400, + 450, + 500, + 550, + 600, + 650, + 700, + 750, + 800, + 850, + 900, + 950, + 1000, + 1050, + 1100, + 1150, + 1200, + 1250, + 1300, + 1350, + 1400 +}; + /* codebook/dlsp5.txt */ +static const float codes4[] = { + 25, + 50, + 75, + 100, + 125, + 150, + 175, + 200, + 250, + 300, + 350, + 400, + 450, + 500, + 550, + 600, + 650, + 700, + 750, + 800, + 850, + 900, + 950, + 1000, + 1050, + 1100, + 1150, + 1200, + 1250, + 1300, + 1350, + 1400 +}; + /* codebook/dlsp6.txt */ +static const float codes5[] = { + 25, + 50, + 75, + 100, + 125, + 150, + 175, + 200, + 250, + 300, + 350, + 400, + 450, + 500, + 550, + 600, + 650, + 700, + 750, + 800, + 850, + 900, + 950, + 1000, + 1050, + 1100, + 1150, + 1200, + 1250, + 1300, + 1350, + 1400 +}; + /* codebook/dlsp7.txt */ +static const float codes6[] = { + 25, + 50, + 75, + 100, + 125, + 150, + 175, + 200, + 225, + 250, + 275, + 300, + 325, + 350, + 375, + 400, + 425, + 450, + 475, + 500, + 525, + 550, + 575, + 600, + 625, + 650, + 675, + 700, + 725, + 750, + 775, + 800 +}; + /* codebook/dlsp8.txt */ +static const float codes7[] = { + 25, + 50, + 75, + 100, + 125, + 150, + 175, + 200, + 225, + 250, + 275, + 300, + 325, + 350, + 375, + 400, + 425, + 450, + 475, + 500, + 525, + 550, + 575, + 600, + 625, + 650, + 675, + 700, + 725, + 750, + 775, + 800 +}; + /* codebook/dlsp9.txt */ +static const float codes8[] = { + 25, + 50, + 75, + 100, + 125, + 150, + 175, + 200, + 225, + 250, + 275, + 300, + 325, + 350, + 375, + 400, + 425, + 450, + 475, + 500, + 525, + 550, + 575, + 600, + 625, + 650, + 675, + 700, + 725, + 750, + 775, + 800 +}; + /* codebook/dlsp10.txt */ +static const float codes9[] = { + 25, + 50, + 75, + 100, + 125, + 150, + 175, + 200, + 225, + 250, + 275, + 300, + 325, + 350, + 375, + 400, + 425, + 450, + 475, + 500, + 525, + 550, + 575, + 600, + 625, + 650, + 675, + 700, + 725, + 750, + 775, + 800 +}; + +const struct lsp_codebook lsp_cbd[] = { + /* codebook/dlsp1.txt */ + { + 1, + 5, + 32, + codes0 + }, + /* codebook/dlsp2.txt */ + { + 1, + 5, + 32, + codes1 + }, + /* codebook/dlsp3.txt */ + { + 1, + 5, + 32, + codes2 + }, + /* codebook/dlsp4.txt */ + { + 1, + 5, + 32, + codes3 + }, + /* codebook/dlsp5.txt */ + { + 1, + 5, + 32, + codes4 + }, + /* codebook/dlsp6.txt */ + { + 1, + 5, + 32, + codes5 + }, + /* codebook/dlsp7.txt */ + { + 1, + 5, + 32, + codes6 + }, + /* codebook/dlsp8.txt */ + { + 1, + 5, + 32, + codes7 + }, + /* codebook/dlsp9.txt */ + { + 1, + 5, + 32, + codes8 + }, + /* codebook/dlsp10.txt */ + { + 1, + 5, + 32, + codes9 + }, + { 0, 0, 0, 0 } +}; diff --git a/codebookge.c b/codebookge.c new file mode 100644 index 0000000..5bcb623 --- /dev/null +++ b/codebookge.c @@ -0,0 +1,279 @@ +/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */ + +/* + * This intermediary file and the files that used to create it are under + * The LGPL. See the file COPYING. + */ + +#include "defines.h" + + /* codebook/gecb.txt */ +static const float codes0[] = { + 2.71, 12.0184, + 0.04675, -2.73881, + 0.120993, 8.38895, + -1.58028, -0.892307, + 1.19307, -1.91561, + 0.187101, -3.27679, + 0.332251, -7.66455, + -1.47944, 31.2461, + 1.52761, 27.7095, + -0.524379, 5.25012, + 0.55333, 7.4388, + -0.843451, -1.95299, + 2.26389, 8.61029, + 0.143143, 2.36549, + 0.616506, 1.28427, + -1.71133, 22.0967, + 1.00813, 17.3965, + -0.106718, 1.41891, + -0.136246, 14.2736, + -1.70909, -20.5319, + 1.65787, -3.39107, + 0.138049, -4.95785, + 0.536729, -1.94375, + 0.196307, 36.8519, + 1.27248, 22.5565, + -0.670219, -1.90604, + 0.382092, 6.40113, + -0.756911, -4.90102, + 1.82931, 4.6138, + 0.318794, 0.73683, + 0.612815, -2.07505, + -0.410151, 24.7871, + 1.77602, 13.1909, + 0.106457, -0.104492, + 0.192206, 10.1838, + -1.82442, -7.71565, + 0.931346, 4.34835, + 0.308813, -4.086, + 0.397143, -11.8089, + -0.048715, 41.2273, + 0.877342, 35.8503, + -0.759794, 0.476634, + 0.978593, 7.67467, + -1.19506, 3.03883, + 2.63989, -3.41106, + 0.191127, 3.60351, + 0.402932, 1.0843, + -2.15202, 18.1076, + 1.5468, 8.32271, + -0.143089, -4.07592, + -0.150142, 5.86674, + -1.40844, -3.2507, + 1.56615, -10.4132, + 0.178171, -10.2267, + 0.362164, -0.028556, + -0.070125, 24.3907, + 0.594752, 17.4828, + -0.28698, -6.90407, + 0.464818, 10.2055, + -1.00684, -14.3572, + 2.32957, -3.69161, + 0.335745, 2.40714, + 1.01966, -3.15565, + -1.25945, 7.9919, + 2.38369, 19.6806, + -0.094947, -2.41374, + 0.20933, 6.66477, + -2.22103, 1.37986, + 1.29239, 2.04633, + 0.243626, -0.890741, + 0.428773, -7.19366, + -1.11374, 41.3414, + 2.6098, 31.1405, + -0.446468, 2.53419, + 0.490104, 4.62757, + -1.11723, -3.24174, + 1.79156, 8.41493, + 0.156012, 0.183336, + 0.532447, 3.15455, + -0.764484, 18.514, + 0.952395, 11.7713, + -0.332567, 0.346987, + 0.202165, 14.7168, + -2.12924, -15.559, + 1.35358, -1.92679, + -0.010963, -16.3364, + 0.399053, -2.79057, + 0.750657, 31.1483, + 0.655743, 24.4819, + -0.45321, -0.735879, + 0.2869, 6.5467, + -0.715673, -12.3578, + 1.54849, 3.87217, + 0.271874, 0.802339, + 0.502073, -4.85485, + -0.497037, 17.7619, + 1.19116, 13.9544, + 0.01563, 1.33157, + 0.341867, 8.93537, + -2.31601, -5.39506, + 0.75861, 1.9645, + 0.24132, -3.23769, + 0.267151, -11.2344, + -0.273126, 32.6248, + 1.75352, 40.432, + -0.784011, 3.04576, + 0.705987, 5.66118, + -1.3864, 1.35356, + 2.37646, 1.67485, + 0.242973, 4.73218, + 0.491227, 0.354061, + -1.60676, 8.65895, + 1.16711, 5.9871, + -0.137601, -12.0417, + -0.251375, 10.3972, + -1.43151, -8.90411, + 0.98828, -13.209, + 0.261484, -6.35497, + 0.395932, -0.702529, + 0.283704, 26.8996, + 0.420959, 15.4418, + -0.355804, -13.7278, + 0.527372, 12.3985, + -1.16956, -15.9985, + 1.90669, -5.81605, + 0.354492, 3.85157, + 0.82576, -4.16264, + -0.49019, 13.0572, + 2.25577, 13.5264, + -0.004956, -3.23713, + 0.026709, 7.86645, + -1.81037, -0.451183, + 1.08383, -0.18362, + 0.135836, -2.26658, + 0.375812, -5.51225, + -1.96644, 38.6829, + 1.97799, 24.5655, + -0.704656, 6.35881, + 0.480786, 7.05175, + -0.976417, -2.42273, + 2.50215, 6.75935, + 0.083588, 3.2588, + 0.543629, 0.910013, + -1.23196, 23.0915, + 0.785492, 14.807, + -0.213554, 1.688, + 0.004748, 18.1718, + -1.54719, -16.1168, + 1.50104, -3.28114, + 0.080133, -4.63472, + 0.476592, -2.18093, + 0.44247, 40.304, + 1.07277, 27.592, + -0.594738, -4.16681, + 0.42248, 7.61609, + -0.927521, -7.27441, + 1.99162, 1.29636, + 0.291307, 2.39878, + 0.721081, -1.95062, + -0.804256, 24.9295, + 1.64839, 19.1197, + 0.060852, -0.590639, + 0.266085, 9.10325, + -1.9574, -2.88461, + 1.11693, 2.6724, + 0.35458, -2.74854, + 0.330733, -14.1561, + -0.527851, 39.5756, + 0.991152, 43.195, + -0.589619, 1.26919, + 0.787401, 8.73071, + -1.0138, 1.02507, + 2.8254, 1.89538, + 0.24089, 2.74557, + 0.427195, 2.54446, + -1.95311, 12.244, + 1.44862, 12.0607, + -0.210492, -3.37906, + -0.056713, 10.204, + -1.65237, -5.10274, + 1.29475, -12.2708, + 0.111608, -8.67592, + 0.326634, -1.16763, + 0.021781, 31.1258, + 0.455335, 21.4684, + -0.37544, -3.37121, + 0.39362, 11.302, + -0.851456, -19.4149, + 2.10703, -2.22886, + 0.373233, 1.92406, + 0.884438, -1.72058, + -0.975127, 9.84013, + 2.0033, 17.3954, + -0.036915, -1.11137, + 0.148456, 5.39997, + -1.91441, 4.77382, + 1.44791, 0.537122, + 0.194979, -1.03818, + 0.495771, -9.95502, + -1.05899, 32.9471, + 2.01122, 32.4544, + -0.30965, 4.71911, + 0.436082, 4.63552, + -1.23711, -1.25428, + 2.02274, 9.42834, + 0.190342, 1.46077, + 0.479017, 2.48479, + -1.07848, 16.2217, + 1.20764, 9.65421, + -0.258087, -1.67236, + 0.071852, 13.416, + -1.87723, -16.072, + 1.28957, -4.87118, + 0.067713, -13.4427, + 0.435551, -4.1655, + 0.46614, 30.5895, + 0.904895, 21.598, + -0.518369, -2.53205, + 0.337363, 5.63726, + -0.554975, -17.4005, + 1.69188, 1.14574, + 0.227934, 0.889297, + 0.587303, -5.72973, + -0.262133, 18.6666, + 1.39505, 17.0029, + -0.01909, 4.30838, + 0.304235, 12.6699, + -2.07406, -6.46084, + 0.920546, 1.21296, + 0.284927, -1.78547, + 0.209724, -16.024, + -0.636067, 31.5768, + 1.34989, 34.6775, + -0.971625, 5.30086, + 0.590249, 4.44971, + -1.56787, 3.60239, + 2.1455, 4.51666, + 0.296022, 4.12017, + 0.445299, 0.868772, + -1.44193, 14.1284, + 1.35575, 6.0074, + -0.012814, -7.49657, + -0.43, 8.50012, + -1.20469, -7.11326, + 1.10102, -6.83682, + 0.196463, -6.234, + 0.436747, -1.12979, + 0.141052, 22.8549, + 0.290821, 18.8114, + -0.529536, -7.73251, + 0.63428, 10.7898, + -1.33472, -20.3258, + 1.81564, -1.90332, + 0.394778, 3.79758, + 0.732682, -8.18382, + -0.741244, 11.7683 +}; + +const struct lsp_codebook ge_cb[] = { + /* codebook/gecb.txt */ + { + 2, + 8, + 256, + codes0 + }, + { 0, 0, 0, 0 } +}; diff --git a/codebookjvm.c b/codebookjvm.c new file mode 100644 index 0000000..86f5b83 --- /dev/null +++ b/codebookjvm.c @@ -0,0 +1,1579 @@ +/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */ + +/* + * This intermediary file and the files that used to create it are under + * The LGPL. See the file COPYING. + */ + +#include "defines.h" + + /* codebook/lspjvm1.txt */ +static const float codes0[] = { + 0.435217, 0.668864, 1.0103, 1.22042, 1.50398, 1.78468, 2.13546, 2.35747, 2.61891, 2.73804, + 0.179285, 0.33316, 0.500638, 0.79695, 1.03999, 1.23497, 1.6523, 1.84823, 2.62556, 2.80497, + 0.268785, 0.356576, 0.595753, 1.04434, 1.24938, 1.42868, 1.68699, 1.86469, 2.33991, 2.5138, + 0.12007, 0.165585, 0.484694, 0.95916, 1.23753, 1.52915, 1.83751, 2.10773, 2.48749, 2.76685, + 0.150214, 0.229487, 0.62824, 0.961255, 1.33706, 1.59831, 1.91974, 2.21786, 2.53732, 2.75956, + 0.268624, 0.34598, 0.569637, 0.754737, 0.916538, 1.50854, 1.78635, 1.95442, 2.36953, 2.50182, + 0.246064, 0.468874, 0.662711, 0.890015, 1.14715, 1.51043, 1.78106, 2.09594, 2.65539, 2.80037, + 0.191631, 0.280628, 0.393229, 0.611761, 1.42017, 1.70774, 1.87303, 2.10155, 2.28035, 2.49949, + 0.361668, 0.507047, 0.789974, 1.04599, 1.50238, 1.67703, 1.90534, 2.16255, 2.43226, 2.59087, + 0.20816, 0.294285, 0.448634, 0.694229, 0.872517, 1.07032, 1.70335, 2.16874, 2.42619, 2.60366, + 0.316939, 0.513618, 0.705487, 0.917036, 1.17599, 1.31114, 1.6186, 2.03784, 2.45052, 2.5794, + 0.241068, 0.377728, 0.521595, 0.717203, 1.31041, 1.53999, 1.73643, 2.09893, 2.29792, 2.58735, + 0.234937, 0.281875, 0.780422, 1.44073, 1.60943, 1.75643, 1.97721, 2.14861, 2.60203, 2.7225, + 0.178679, 0.242672, 0.416988, 0.708348, 0.95562, 1.17667, 1.7818, 2.05449, 2.28159, 2.44811, + 0.345036, 0.42108, 0.740887, 1.16544, 1.32494, 1.4888, 1.76346, 1.90617, 2.39505, 2.64916, + 0.249586, 0.357494, 0.520747, 0.847195, 1.42841, 1.59778, 1.77819, 2.1785, 2.41344, 2.56466, + 0.295235, 0.574231, 1.2491, 1.4641, 1.72756, 1.92679, 2.09536, 2.28483, 2.56707, 2.72248, + 0.34193, 0.427307, 0.634001, 0.804212, 0.905629, 1.33337, 1.79033, 1.89276, 2.44582, 2.60283, + 0.363948, 0.508985, 0.667357, 0.946354, 1.43756, 1.62654, 1.81114, 2.03909, 2.29188, 2.43549, + 0.163514, 0.277407, 0.409207, 0.902065, 1.18907, 1.33964, 1.80241, 1.96077, 2.65293, 2.81899, + 0.302643, 0.359753, 0.651207, 1.20802, 1.4237, 1.54815, 1.88213, 2.01559, 2.26054, 2.5789, + 0.155928, 0.216908, 0.381812, 0.654803, 1.11237, 1.58993, 1.84756, 1.97672, 2.22408, 2.72534, + 0.274981, 0.347675, 0.572, 0.736046, 0.894248, 1.63237, 1.89139, 2.05689, 2.6029, 2.72178, + 0.154496, 0.243461, 0.348174, 0.689505, 1.57381, 1.70031, 1.94318, 2.10158, 2.56466, 2.77317, + 0.292612, 0.466612, 0.795936, 1.04747, 1.41369, 1.75085, 2.06289, 2.34007, 2.61361, 2.76949, + 0.242896, 0.3615, 0.555859, 0.793597, 0.932291, 1.40947, 1.86386, 2.00953, 2.4645, 2.67749, + 0.221646, 0.344724, 0.554564, 0.729403, 1.13657, 1.30177, 1.52918, 2.16359, 2.39582, 2.61081, + 0.160969, 0.224467, 0.371545, 0.626879, 1.16095, 1.44423, 1.67597, 1.87978, 2.47859, 2.67202, + 0.214172, 0.341585, 0.676575, 0.977397, 1.32543, 1.7201, 2.07259, 2.36954, 2.63528, 2.77879, + 0.203311, 0.289438, 0.458739, 0.914153, 1.12288, 1.30292, 1.58384, 1.88683, 2.18787, 2.42704, + 0.280383, 0.3716, 0.824827, 1.10025, 1.23623, 1.39892, 1.57804, 2.016, 2.36897, 2.50673, + 0.170627, 0.251778, 0.393686, 0.608347, 1.2876, 1.44667, 1.79328, 2.03655, 2.31015, 2.75244, + 0.18058, 0.288746, 0.987854, 1.43171, 1.67722, 1.91566, 2.12494, 2.28945, 2.58961, 2.75426, + 0.176335, 0.266263, 0.445421, 0.706403, 0.875402, 1.42292, 1.75867, 1.96091, 2.41068, 2.60175, + 0.216173, 0.287404, 0.480696, 1.00977, 1.2913, 1.47664, 1.89558, 2.06429, 2.28406, 2.48311, + 0.176523, 0.273934, 0.403407, 0.966139, 1.30472, 1.43661, 1.94473, 2.08484, 2.54446, 2.76242, + 0.311836, 0.550501, 0.879591, 1.09623, 1.27666, 1.47786, 1.81771, 2.15434, 2.56047, 2.77984, + 0.179765, 0.25056, 0.455939, 1.02389, 1.22513, 1.47566, 1.73462, 1.91871, 2.14734, 2.43824, + 0.271033, 0.457235, 0.599622, 0.821049, 0.940125, 1.20094, 1.84972, 1.98666, 2.54817, 2.75158, + 0.179326, 0.248002, 0.426405, 0.81706, 1.28589, 1.56502, 2.11736, 2.29871, 2.5724, 2.7527, + 0.374409, 0.535936, 0.897009, 1.18507, 1.59157, 1.7572, 1.96794, 2.17999, 2.45739, 2.62264, + 0.185472, 0.282752, 0.409439, 0.657499, 0.856446, 1.0294, 1.87993, 2.06932, 2.34474, 2.7531, + 0.375964, 0.578457, 0.758945, 0.929339, 1.12748, 1.25944, 1.70411, 2.12297, 2.33603, 2.4983, + 0.225641, 0.36103, 0.501679, 0.783379, 1.31485, 1.45262, 1.71415, 1.98716, 2.2257, 2.72436, + 0.144996, 0.252919, 0.632145, 1.22604, 1.57534, 1.90155, 2.17148, 2.39055, 2.68229, 2.80983, + 0.172022, 0.263338, 0.448634, 0.729435, 0.984007, 1.1716, 1.75705, 1.99023, 2.32131, 2.77121, + 0.235731, 0.351117, 0.796871, 1.05571, 1.30022, 1.59182, 1.89587, 2.12292, 2.41789, 2.59982, + 0.254053, 0.319371, 0.455623, 1.08614, 1.66467, 1.91588, 2.05908, 2.23342, 2.45204, 2.58679, + 0.375538, 0.742993, 1.13991, 1.33776, 1.73556, 2.01391, 2.31501, 2.48343, 2.65158, 2.75521, + 0.247245, 0.481131, 0.710366, 0.897602, 1.12109, 1.27171, 1.78735, 2.1995, 2.42966, 2.74067, + 0.226103, 0.311441, 0.501648, 0.844424, 1.36282, 1.53134, 1.77747, 1.98993, 2.18749, 2.3585, + 0.195862, 0.296224, 0.609554, 0.783241, 1.24347, 1.44548, 1.63703, 2.02264, 2.48356, 2.64614, + 0.233302, 0.299441, 0.472792, 1.24946, 1.45788, 1.60186, 1.83143, 1.99372, 2.59719, 2.75543, + 0.168096, 0.224183, 0.3827, 0.596214, 1.06059, 1.29442, 1.60576, 1.84849, 2.3577, 2.56919, + 0.33005, 0.445912, 0.661713, 0.874446, 1.00079, 1.45297, 1.94399, 2.07692, 2.42388, 2.61236, + 0.226382, 0.287303, 0.517631, 0.806229, 1.30901, 1.88528, 2.16051, 2.28641, 2.52638, 2.66082, + 0.20317, 0.499314, 0.887358, 1.23507, 1.46292, 1.69826, 1.99932, 2.22922, 2.57161, 2.76669, + 0.307531, 0.378353, 0.573606, 0.712218, 0.850169, 1.309, 2.05909, 2.26382, 2.49794, 2.67682, + 0.276203, 0.51025, 0.6868, 0.902844, 1.2052, 1.32798, 1.71889, 2.03895, 2.25639, 2.69715, + 0.161948, 0.229115, 0.393619, 0.683613, 1.13781, 1.32269, 1.78372, 1.96158, 2.38907, 2.63608, + 0.201334, 0.276773, 0.468994, 0.967017, 1.47597, 1.63242, 1.96577, 2.19728, 2.48059, 2.70155, + 0.214587, 0.315421, 0.469498, 0.733397, 1.146, 1.27791, 1.72784, 2.22713, 2.44026, 2.68112, + 0.255602, 0.394609, 0.743393, 0.977796, 1.19908, 1.40597, 1.91834, 2.22483, 2.47919, 2.66339, + 0.245989, 0.352625, 0.517055, 0.80283, 1.55871, 1.79565, 1.94405, 2.13364, 2.33327, 2.47998, + 0.337423, 0.480433, 0.869036, 1.13957, 1.63076, 1.82296, 2.07484, 2.29261, 2.47913, 2.62532, + 0.220974, 0.35885, 0.57164, 0.752791, 0.937013, 1.15172, 1.6744, 2.06247, 2.55872, 2.78484, + 0.267518, 0.331708, 0.541111, 1.11655, 1.41112, 1.53287, 1.79295, 1.93352, 2.24894, 2.62864, + 0.084613, 0.105083, 0.297424, 0.916949, 1.2563, 1.56703, 1.88539, 2.18987, 2.52279, 2.7921, + 0.205328, 0.287223, 0.724462, 1.0324, 1.45771, 1.64217, 1.92563, 2.17552, 2.42964, 2.60549, + 0.232554, 0.338724, 0.502115, 0.859975, 1.04409, 1.24565, 1.80656, 1.99964, 2.26116, 2.45998, + 0.291638, 0.379172, 0.626072, 0.792796, 0.959124, 1.50489, 1.73447, 1.91961, 2.61436, 2.72271, + 0.191554, 0.263114, 0.426797, 0.610628, 1.07741, 1.82954, 2.02195, 2.21057, 2.42765, 2.61383, + 0.389151, 0.679476, 0.915414, 1.03664, 1.25085, 1.58661, 2.04097, 2.2815, 2.56794, 2.71882, + 0.2032, 0.30128, 0.470357, 0.668716, 0.851737, 0.980327, 1.57086, 2.03762, 2.28907, 2.69388, + 0.304064, 0.405934, 0.710274, 0.962705, 1.12882, 1.34167, 1.63505, 1.84538, 2.07992, 2.50751, + 0.171777, 0.240705, 0.409371, 0.786432, 1.2232, 1.37569, 1.69176, 1.86608, 2.35041, 2.49394, + 0.231251, 0.277994, 0.557867, 1.32582, 1.66035, 1.77948, 2.00714, 2.17232, 2.44046, 2.65231, + 0.188101, 0.259494, 0.412543, 0.624843, 0.839549, 1.0337, 1.63413, 1.93194, 2.24608, 2.42577, + 0.361304, 0.419465, 0.795676, 1.18461, 1.2968, 1.57845, 1.84175, 1.99736, 2.54054, 2.68714, + 0.274372, 0.338938, 0.492443, 0.963516, 1.50951, 1.70638, 1.86988, 2.07717, 2.26128, 2.44418, + 0.41599, 0.652103, 1.03129, 1.26955, 1.57275, 1.77297, 2.00466, 2.17527, 2.43061, 2.59655, + 0.242045, 0.370942, 0.534392, 0.763529, 1.00117, 1.12976, 1.68219, 2.14464, 2.32448, 2.7157, + 0.377438, 0.588168, 0.765394, 0.976873, 1.35665, 1.49009, 1.73797, 2.00677, 2.21369, 2.38997, + 0.191625, 0.284123, 0.405342, 1.01678, 1.43273, 1.54759, 1.81393, 1.95832, 2.47077, 2.64926, + 0.272672, 0.349555, 0.633911, 1.15223, 1.30394, 1.54764, 1.9195, 2.0477, 2.56278, 2.73058, + 0.168423, 0.23633, 0.421468, 0.831345, 1.08354, 1.55345, 1.88073, 2.0647, 2.37086, 2.63295, + 0.219318, 0.301481, 0.513617, 0.765086, 1.02602, 1.51465, 2.0482, 2.24857, 2.49981, 2.65707, + 0.232695, 0.347947, 0.495203, 0.71883, 1.42301, 1.72249, 1.87958, 2.16504, 2.42025, 2.58966, + 0.270284, 0.336865, 0.684929, 1.15579, 1.69042, 1.87674, 2.02736, 2.22618, 2.44675, 2.582, + 0.149701, 0.193747, 0.352019, 0.520123, 0.823974, 1.43475, 1.68659, 1.96115, 2.37091, 2.69307, + 0.254818, 0.412303, 0.601514, 0.771438, 1.17545, 1.37657, 1.53903, 1.93704, 2.40858, 2.56362, + 0.233713, 0.355886, 0.593725, 0.76288, 1.27148, 1.5639, 1.79752, 2.09469, 2.53863, 2.71173, + 0.179028, 0.237103, 0.396818, 1.04202, 1.63354, 1.76268, 2.12393, 2.32239, 2.58819, 2.75134, + 0.182027, 0.251039, 0.434581, 0.714302, 0.950997, 1.4379, 1.81357, 1.9691, 2.14588, 2.35397, + 0.501538, 0.692148, 0.84886, 1.07131, 1.35054, 1.48948, 1.84164, 2.10428, 2.34154, 2.51529, + 0.27453, 0.38147, 0.526682, 0.922143, 1.44495, 1.5736, 1.85877, 2.06675, 2.2848, 2.62682, + 0.360617, 0.583131, 0.979491, 1.25408, 1.48835, 1.79756, 2.21952, 2.48218, 2.74237, 2.86203, + 0.140913, 0.220301, 0.619552, 0.818307, 1.05243, 1.33997, 1.83073, 2.13395, 2.53638, 2.75113, + 0.293514, 0.391691, 0.79008, 0.96274, 1.16032, 1.5266, 1.80549, 2.04146, 2.36162, 2.56496, + 0.199542, 0.290571, 0.452891, 0.689515, 1.25853, 1.40988, 1.88624, 2.22813, 2.46568, 2.72665, + 0.29692, 0.356356, 0.784287, 0.99654, 1.14618, 1.62387, 1.8155, 2.0383, 2.60063, 2.7057, + 0.206451, 0.276025, 0.537547, 0.802572, 1.22041, 1.64206, 1.86363, 2.00198, 2.21534, 2.58538, + 0.33365, 0.464751, 0.653772, 0.966306, 1.10387, 1.3402, 1.7847, 1.91459, 2.47017, 2.68692, + 0.181861, 0.24487, 0.376456, 0.554383, 1.3299, 1.81044, 2.04784, 2.20232, 2.66086, 2.81706, + 0.450565, 0.647291, 0.951172, 1.22943, 1.51964, 1.68681, 2.04911, 2.26717, 2.50128, 2.6506, + 0.219996, 0.320591, 0.427747, 0.601183, 0.753448, 0.929578, 1.74198, 2.28579, 2.47263, 2.74957, + 0.333848, 0.423373, 0.658791, 1.0313, 1.22263, 1.36577, 1.90189, 2.1211, 2.29031, 2.53118, + 0.166064, 0.233902, 0.383355, 0.661806, 1.22657, 1.39968, 1.77127, 1.97454, 2.17349, 2.56634, + 0.189286, 0.243602, 0.390584, 1.38793, 1.58872, 1.76324, 2.09112, 2.31631, 2.59353, 2.75508, + 0.158404, 0.224878, 0.385, 0.668463, 0.942954, 1.41197, 1.70031, 1.82807, 2.0594, 2.69255, + 0.325989, 0.461263, 0.851471, 1.04571, 1.28403, 1.5162, 1.79734, 2.08839, 2.43767, 2.62721, + 0.223709, 0.28919, 0.632812, 0.858738, 1.5419, 1.74677, 1.93574, 2.18482, 2.40433, 2.58301, + 0.545842, 0.95242, 1.34082, 1.51684, 1.83888, 2.01289, 2.24497, 2.40317, 2.59228, 2.69112, + 0.238526, 0.349079, 0.494582, 0.987665, 1.17075, 1.34823, 1.46864, 2.29696, 2.64416, 2.78738, + 0.270857, 0.442003, 0.655998, 0.881913, 1.25925, 1.42836, 1.76987, 1.99853, 2.39559, 2.65284, + 0.154384, 0.211806, 0.489481, 0.997257, 1.24982, 1.54123, 1.77886, 1.9494, 2.31914, 2.62339, + 0.268258, 0.312888, 0.589114, 1.25863, 1.57271, 1.67543, 1.91278, 2.07046, 2.27993, 2.56423, + 0.170715, 0.224965, 0.374011, 0.540197, 1.16189, 1.49907, 1.92587, 2.08257, 2.24662, 2.46972, + 0.324358, 0.391989, 0.706816, 0.833614, 1.01573, 1.56899, 1.73598, 2.12707, 2.55841, 2.65387, + 0.178059, 0.258575, 0.374125, 0.536831, 1.33483, 1.79863, 1.98698, 2.18925, 2.43227, 2.6267, + 0.198857, 0.420955, 0.817664, 1.17836, 1.46674, 1.8213, 2.20733, 2.47441, 2.73828, 2.85119, + 0.188344, 0.324302, 0.470468, 0.790033, 0.934101, 1.18872, 1.88717, 2.05283, 2.44832, 2.63024, + 0.201295, 0.365646, 0.526513, 0.758388, 1.1401, 1.26733, 1.65017, 1.87934, 2.10289, 2.60029, + 0.135058, 0.169428, 0.307348, 0.50316, 1.01808, 1.44795, 1.81098, 2.134, 2.48028, 2.75985, + 0.178006, 0.26661, 0.390327, 0.928681, 1.50161, 1.62133, 1.87136, 2.02586, 2.58044, 2.7708, + 0.246182, 0.42429, 0.644023, 0.801168, 1.11488, 1.27776, 1.50332, 2.07489, 2.2957, 2.50138, + 0.322996, 0.430355, 0.6316, 1.0477, 1.22184, 1.42673, 1.90308, 2.03222, 2.51673, 2.70845, + 0.292994, 0.430599, 0.619178, 0.794567, 1.28303, 1.65282, 1.84084, 2.06995, 2.38538, 2.52825, + 0.525494, 0.787797, 1.12182, 1.38748, 1.67457, 1.93622, 2.22404, 2.39062, 2.63428, 2.74323, + 0.299504, 0.409196, 0.602235, 0.892336, 1.05643, 1.25377, 1.48914, 1.63988, 2.42748, 2.65037, + 0.423758, 0.52048, 0.758987, 1.04126, 1.17366, 1.42368, 1.81824, 1.93641, 2.363, 2.62664, + 0.155042, 0.247496, 0.641445, 0.954509, 1.22497, 1.46585, 1.83784, 2.09046, 2.4515, 2.71616, + 0.251949, 0.421094, 0.706797, 0.975659, 1.25991, 1.52007, 1.81631, 2.12202, 2.47491, 2.71667, + 0.21522, 0.302248, 0.730598, 0.896343, 1.14557, 1.37019, 1.70069, 2.02256, 2.28327, 2.48922, + 0.28523, 0.453559, 0.66367, 0.861526, 1.0116, 1.24742, 1.65598, 1.86129, 2.57894, 2.73133, + 0.162067, 0.219409, 0.373433, 0.544669, 1.1033, 1.59718, 1.92104, 2.1434, 2.4065, 2.66048, + 0.342367, 0.511499, 0.93135, 1.16322, 1.39365, 1.61115, 1.97277, 2.19442, 2.47077, 2.64926, + 0.25101, 0.364125, 0.560956, 0.746545, 1.01984, 1.17072, 1.53295, 2.28867, 2.57709, 2.72307, + 0.315001, 0.489412, 0.720682, 0.877607, 1.09047, 1.25385, 1.44822, 1.92295, 2.25589, 2.40863, + 0.174666, 0.235793, 0.387644, 0.554402, 1.23109, 1.45614, 1.68803, 2.12745, 2.36703, 2.59727, + 0.215113, 0.341915, 1.04372, 1.32275, 1.49541, 1.74189, 1.96116, 2.23982, 2.5449, 2.70394, + 0.219852, 0.30177, 0.513912, 0.705474, 0.87754, 1.2959, 1.699, 1.98706, 2.28797, 2.49697, + 0.290638, 0.366442, 0.655155, 1.04499, 1.17215, 1.53254, 1.80079, 1.94893, 2.50968, 2.66005, + 0.232252, 0.31377, 0.658552, 0.941977, 1.46317, 1.66549, 1.86246, 2.02784, 2.53402, 2.70124, + 0.326539, 0.552681, 1.12173, 1.33138, 1.52007, 1.86708, 2.08286, 2.33247, 2.60604, 2.73709, + 0.190254, 0.340428, 0.492777, 0.739738, 0.895461, 1.07937, 1.64316, 1.79529, 2.49182, 2.72938, + 0.283586, 0.41844, 0.587306, 0.870866, 1.41855, 1.57703, 1.7995, 2.0694, 2.27448, 2.4381, + 0.235752, 0.35765, 0.502891, 1.01243, 1.25885, 1.40779, 1.82006, 1.95583, 2.5059, 2.73433, + 0.278412, 0.343137, 0.849977, 1.2329, 1.3505, 1.59063, 1.78752, 2.09158, 2.54136, 2.66386, + 0.162966, 0.243159, 0.439238, 0.684821, 0.887783, 1.4629, 1.88174, 2.04425, 2.28939, 2.705, + 0.235063, 0.371799, 0.57821, 0.752199, 1.00855, 1.47628, 1.80491, 2.2714, 2.65504, 2.78965, + 0.154939, 0.223696, 0.344718, 0.667555, 1.49566, 1.66944, 2.06988, 2.30721, 2.62769, 2.81134, + 0.239702, 0.335917, 0.716616, 1.1318, 1.45251, 1.63913, 2.10552, 2.27982, 2.50203, 2.66922, + 0.226818, 0.331261, 0.472705, 0.651974, 0.781639, 1.2198, 1.8229, 2.08273, 2.43933, 2.6109, + 0.223413, 0.359594, 0.534704, 0.741518, 1.22589, 1.38987, 1.61819, 2.00991, 2.207, 2.45984, + 0.171308, 0.268378, 0.383799, 0.858926, 1.37629, 1.51917, 1.7806, 1.92291, 2.62309, 2.8024, + 0.140134, 0.21232, 0.443224, 0.967457, 1.26424, 1.56215, 1.92915, 2.21739, 2.66834, 2.83075, + 0.221323, 0.322124, 0.485563, 0.818589, 1.01184, 1.19898, 1.42362, 1.6694, 2.15752, 2.36319, + 0.369687, 0.525655, 0.719213, 0.939654, 1.13763, 1.31222, 1.59994, 1.82681, 2.35522, 2.58068, + 0.211975, 0.314411, 0.489148, 0.739213, 1.3778, 1.5545, 1.82437, 2.15887, 2.35299, 2.72262, + 0.170698, 0.296368, 0.934285, 1.24313, 1.5559, 1.86654, 2.15994, 2.36344, 2.58503, 2.73853, + 0.189263, 0.305887, 0.439912, 0.78461, 1.22726, 1.34251, 1.58765, 1.75491, 2.43989, 2.72131, + 0.296339, 0.385169, 0.612012, 1.08132, 1.27636, 1.43718, 1.87147, 2.00172, 2.33909, 2.64022, + 0.229588, 0.320544, 0.517278, 0.969137, 1.14256, 1.62609, 1.87792, 2.11546, 2.54674, 2.70802, + 0.248869, 0.420193, 0.732388, 1.04902, 1.30341, 1.60146, 1.94921, 2.23946, 2.64822, 2.82261, + 0.2076, 0.29232, 0.496539, 0.857149, 1.18229, 1.39985, 1.71416, 1.86824, 2.02794, 2.20074, + 0.225558, 0.396897, 0.541783, 0.873366, 1.17897, 1.29958, 1.67719, 1.8496, 2.33048, 2.75272, + 0.176821, 0.231377, 0.372767, 0.508565, 1.15282, 1.80805, 2.11268, 2.25007, 2.57134, 2.74855, + 0.352149, 0.515765, 1.02324, 1.26022, 1.44357, 1.62207, 1.8728, 2.10018, 2.48928, 2.67104, + 0.166138, 0.263444, 0.370151, 0.590066, 0.754819, 0.940533, 1.76187, 1.94661, 2.44501, 2.75819, + 0.342082, 0.476411, 0.656223, 0.851774, 1.00399, 1.15337, 1.6944, 2.06562, 2.25564, 2.44015, + 0.227237, 0.376514, 0.514329, 0.894887, 1.14167, 1.28305, 1.83138, 1.9859, 2.33447, 2.78488, + 0.215891, 0.269548, 0.684111, 1.40566, 1.67481, 1.80093, 2.17209, 2.3394, 2.59157, 2.7301, + 0.23624, 0.400377, 0.533684, 0.750343, 0.910405, 1.08911, 1.73773, 1.91281, 2.19252, 2.68873, + 0.169242, 0.284879, 0.916252, 1.16977, 1.43368, 1.64438, 1.91912, 2.16162, 2.48266, 2.68259, + 0.270731, 0.336506, 0.477594, 1.04271, 1.60584, 1.79686, 1.94591, 2.16004, 2.35491, 2.52095, + 0.420586, 0.652563, 1.11716, 1.40601, 1.74754, 1.94742, 2.20309, 2.35997, 2.5479, 2.68217, + 0.281552, 0.395037, 0.640181, 0.944531, 1.19396, 1.33049, 1.71866, 2.18839, 2.44459, 2.57867, + 0.311824, 0.476892, 0.633431, 0.845825, 1.33252, 1.49166, 1.69361, 2.04108, 2.28932, 2.4394, + 0.133945, 0.20079, 0.647237, 0.927687, 1.18888, 1.36966, 1.69956, 1.97278, 2.29526, 2.67818, + 0.204796, 0.278215, 0.443465, 1.27048, 1.40521, 1.64092, 1.82425, 2.32709, 2.59964, 2.77253, + 0.18397, 0.244116, 0.410594, 0.639103, 1.22159, 1.40487, 1.62836, 1.90244, 2.16863, 2.3068, + 0.343622, 0.434735, 0.666599, 0.868069, 1.04894, 1.53278, 1.81983, 1.97188, 2.2887, 2.44875, + 0.238017, 0.320361, 0.657255, 0.917611, 1.30331, 1.72736, 1.98891, 2.18145, 2.44297, 2.61332, + 0.323613, 0.545056, 0.930173, 1.22606, 1.44018, 1.7723, 2.05689, 2.34781, 2.68938, 2.82062, + 0.28893, 0.401387, 0.617124, 0.836453, 0.990306, 1.26123, 1.91328, 2.11005, 2.32458, 2.55716, + 0.33267, 0.480804, 0.656147, 0.880536, 1.02957, 1.23049, 1.76906, 1.9323, 2.20037, 2.58521, + 0.185551, 0.265352, 0.409432, 0.608847, 1.0347, 1.22282, 1.87697, 2.17165, 2.4035, 2.66644, + 0.155026, 0.223348, 0.401684, 1.07914, 1.41579, 1.62002, 2.04552, 2.25851, 2.63162, 2.80229, + 0.183461, 0.263081, 0.425694, 0.635685, 1.18866, 1.35756, 1.57499, 2.08598, 2.28872, 2.51111, + 0.314738, 0.463011, 0.648733, 0.877651, 1.00289, 1.26581, 2.00541, 2.1981, 2.48153, 2.71418, + 0.244411, 0.318444, 0.546578, 0.793615, 1.32615, 1.73548, 1.9456, 2.11466, 2.31535, 2.47853, + 0.326237, 0.54354, 0.987361, 1.30441, 1.68493, 1.90215, 2.20717, 2.37427, 2.55753, 2.71622, + 0.157795, 0.283302, 0.430398, 0.660379, 0.81106, 1.14254, 1.4793, 1.71871, 2.67026, 2.84756, + 0.220856, 0.283872, 0.779935, 1.07494, 1.31221, 1.62633, 1.83761, 1.96888, 2.15599, 2.60238, + 0.140763, 0.205719, 0.406561, 0.762459, 1.04127, 1.48699, 1.83831, 2.11461, 2.55281, 2.77228, + 0.140451, 0.39592, 0.79211, 1.108, 1.40264, 1.62308, 1.94315, 2.22795, 2.54616, 2.774, + 0.229862, 0.336462, 0.54659, 0.81015, 1.20191, 1.34679, 1.82532, 2.09293, 2.28573, 2.47336, + 0.224913, 0.328246, 0.517269, 0.874793, 1.01259, 1.45218, 1.69578, 2.01493, 2.51145, 2.67257, + 0.247745, 0.335741, 0.546558, 0.710177, 1.17056, 1.72779, 1.97068, 2.15853, 2.48282, 2.62891, + 0.398252, 0.555087, 0.890367, 1.1212, 1.38153, 1.60123, 1.86665, 2.06661, 2.40516, 2.58802, + 0.198563, 0.288867, 0.478054, 0.658477, 0.851841, 1.0271, 1.53974, 2.02111, 2.57946, 2.78418, + 0.304271, 0.371642, 0.66159, 1.06898, 1.22425, 1.41193, 1.68052, 1.86977, 2.10007, 2.30855, + 0.188223, 0.257939, 0.432402, 0.73505, 1.31804, 1.48553, 1.82811, 2.04644, 2.30702, 2.45724, + 0.246723, 0.297276, 0.604475, 1.3109, 1.57044, 1.68885, 1.91366, 2.05133, 2.55601, 2.71497, + 0.158309, 0.234509, 0.435792, 0.6679, 0.957567, 1.23592, 1.59294, 1.81816, 2.30739, 2.76897, + 0.419843, 0.501412, 0.766892, 1.07317, 1.18937, 1.48022, 1.7666, 1.92215, 2.53794, 2.69477, + 0.27514, 0.335563, 0.678421, 1.08152, 1.59238, 1.77263, 1.93124, 2.1407, 2.3338, 2.49086, + 0.372056, 0.856814, 1.23954, 1.40999, 1.6903, 1.86302, 2.0727, 2.27355, 2.53266, 2.69052, + 0.321254, 0.422981, 0.604856, 0.793437, 0.912112, 1.12845, 1.79598, 2.17323, 2.36015, 2.53614, + 0.395214, 0.598779, 0.771997, 0.946713, 1.21378, 1.33043, 1.66033, 1.97715, 2.16506, 2.34402, + 0.225286, 0.317828, 0.464801, 1.11233, 1.36951, 1.512, 1.92195, 2.05341, 2.59352, 2.77729, + 0.330612, 0.407807, 0.730129, 1.25973, 1.45981, 1.60567, 1.98131, 2.13701, 2.46597, 2.67972, + 0.213145, 0.305305, 0.507016, 0.662299, 1.05685, 1.47986, 1.6719, 2.10271, 2.36987, 2.58199, + 0.219658, 0.296096, 0.443507, 0.610973, 0.799691, 1.67658, 1.96549, 2.15323, 2.50223, 2.693, + 0.174947, 0.257739, 0.373547, 0.552567, 1.40532, 1.61425, 1.84892, 2.11779, 2.31788, 2.7119, + 0.209667, 0.297529, 0.756195, 1.0953, 1.5642, 1.84477, 2.1037, 2.29266, 2.52005, 2.67949, + 0.170138, 0.24031, 0.452247, 0.684414, 0.880102, 1.36692, 1.74165, 2.13129, 2.50573, 2.73261, + 0.278164, 0.468635, 0.707518, 0.853693, 1.05478, 1.21046, 1.54094, 2.17456, 2.41066, 2.61214, + 0.155738, 0.23889, 0.352836, 0.621012, 1.44144, 1.6197, 1.82517, 1.97533, 2.52537, 2.74857, + 0.223776, 0.274424, 0.479048, 0.797871, 1.69419, 1.87813, 2.13528, 2.37373, 2.59542, 2.72979, + 0.151088, 0.198286, 0.326558, 0.536276, 0.845893, 1.14165, 1.46056, 1.76287, 2.02585, 2.1773, + 0.434445, 0.614208, 0.887657, 1.02845, 1.19136, 1.3922, 1.78689, 2.06248, 2.4234, 2.61936, + 0.180755, 0.275311, 0.397787, 0.859366, 1.40976, 1.52332, 1.90885, 2.08232, 2.38972, 2.74389, + 0.275975, 0.508416, 0.889894, 1.31893, 1.63331, 1.90473, 2.16901, 2.37466, 2.72697, 2.84767, + 0.156239, 0.262624, 0.406657, 0.739074, 1.04449, 1.20123, 1.81089, 2.0056, 2.5817, 2.80489, + 0.195391, 0.258771, 0.654924, 0.824371, 1.31526, 1.50073, 1.76594, 2.06399, 2.34118, 2.51366, + 0.178034, 0.301047, 0.46302, 0.716172, 1.19887, 1.34045, 1.83456, 2.02213, 2.40075, 2.77629, + 0.340368, 0.404236, 0.843747, 1.03924, 1.20211, 1.70805, 1.91495, 2.16951, 2.52152, 2.62335, + 0.218465, 0.289694, 0.528045, 0.817051, 1.13234, 1.58046, 1.83889, 1.98339, 2.14749, 2.34813, + 0.322509, 0.458058, 0.654679, 0.958976, 1.11821, 1.32157, 1.90139, 2.04641, 2.36093, 2.66422, + 0.191821, 0.252321, 0.389176, 0.581111, 1.52967, 1.93169, 2.08361, 2.27046, 2.56685, 2.71388, + 0.493961, 0.710827, 0.98226, 1.19627, 1.41933, 1.62091, 1.92801, 2.14565, 2.42977, 2.60197, + 0.213148, 0.311589, 0.424636, 0.602664, 0.736895, 1.02216, 1.99228, 2.21853, 2.61163, 2.85032, + 0.288129, 0.434441, 0.629313, 0.856153, 1.28967, 1.42452, 1.8758, 2.15024, 2.35181, 2.53684, + 0.160031, 0.230716, 0.406654, 0.870424, 1.15652, 1.39232, 1.8041, 1.95144, 2.21048, 2.73516, + 0.22934, 0.293962, 0.503222, 1.2421, 1.47582, 1.62465, 1.99868, 2.1445, 2.57855, 2.75327, + 0.15877, 0.220035, 0.363386, 0.577761, 0.96309, 1.17494, 1.73817, 1.9792, 2.16244, 2.66192, + 0.346062, 0.444816, 0.716985, 1.18072, 1.37058, 1.523, 1.89217, 2.06668, 2.3958, 2.62766, + 0.307495, 0.38933, 0.612607, 0.969283, 1.55771, 1.83994, 1.99674, 2.17238, 2.42063, 2.5392, + 0.437804, 0.726957, 1.29117, 1.5033, 1.76543, 1.96212, 2.16365, 2.33623, 2.57962, 2.70852, + 0.232184, 0.333678, 0.528368, 0.706749, 1.20328, 1.37902, 1.61116, 2.15468, 2.5929, 2.75032, + 0.272652, 0.46171, 0.625777, 0.839609, 1.34202, 1.49673, 1.71538, 2.13757, 2.37004, 2.59739, + 0.184908, 0.302324, 0.454883, 0.880307, 1.10438, 1.29253, 1.7772, 1.94336, 2.44417, 2.62273, + 0.265644, 0.341261, 0.553228, 1.13947, 1.42715, 1.56044, 1.93394, 2.08413, 2.39331, 2.65413, + 0.16792, 0.207301, 0.370331, 0.525538, 1.03089, 1.36816, 1.78247, 2.0624, 2.33276, 2.5263, + 0.343172, 0.433912, 0.717501, 0.889734, 1.05206, 1.69528, 2.05316, 2.20846, 2.60887, 2.71832, + 0.216527, 0.305247, 0.44589, 0.729271, 1.63974, 1.90328, 2.05335, 2.22125, 2.43225, 2.56802, + 0.110545, 0.209955, 0.844788, 1.1742, 1.4922, 1.81024, 2.17727, 2.4405, 2.69729, 2.83523, + 0.217384, 0.337412, 0.488999, 0.761842, 0.879715, 1.20953, 1.97075, 2.1208, 2.61165, 2.79176, + 0.190459, 0.296484, 0.469967, 0.800649, 1.10556, 1.27853, 1.51694, 1.69307, 2.11442, 2.71674, + 0.134814, 0.175978, 0.300425, 0.496817, 1.2443, 1.48531, 1.86172, 2.13123, 2.48505, 2.77388, + 0.210174, 0.278266, 0.435508, 0.927538, 1.60691, 1.7539, 1.95755, 2.16628, 2.39852, 2.74961, + 0.213766, 0.3153, 0.509924, 0.70993, 0.964724, 1.10678, 1.38261, 2.00107, 2.32321, 2.56531, + 0.400615, 0.524954, 0.798552, 1.01285, 1.13549, 1.47485, 1.98903, 2.13091, 2.50797, 2.67946, + 0.2494, 0.377023, 0.519635, 0.754227, 1.45956, 1.64276, 1.82896, 2.07788, 2.29823, 2.46753, + 0.473365, 0.683973, 1.05234, 1.37583, 1.54811, 1.74759, 2.1393, 2.31877, 2.60998, 2.73925, + 0.203877, 0.341791, 0.48518, 0.884069, 1.09759, 1.26953, 1.47992, 1.75788, 2.6484, 2.82239, + 0.273046, 0.404254, 0.555403, 0.954547, 1.29123, 1.39902, 1.72289, 1.90344, 2.17198, 2.64531, + 0.040369, 0.117266, 0.617136, 0.892043, 1.26033, 1.54165, 1.85938, 2.1531, 2.49823, 2.76189, + 0.132414, 0.211358, 0.742445, 1.06686, 1.33108, 1.57079, 1.86746, 2.13253, 2.47962, 2.73108, + 0.237329, 0.326529, 0.612538, 0.790663, 0.990133, 1.41374, 1.73823, 1.93691, 2.16773, 2.45163, + 0.27396, 0.405794, 0.57253, 0.933672, 1.05782, 1.39795, 1.85653, 1.99755, 2.59949, 2.76004, + 0.199334, 0.29838, 0.442931, 0.628638, 1.30321, 1.64014, 1.80402, 2.11302, 2.37545, 2.54895, + 0.350188, 0.50201, 0.821298, 1.03864, 1.36929, 1.5924, 1.91082, 2.15649, 2.46051, 2.65326, + 0.281558, 0.399892, 0.573105, 0.753299, 0.900613, 1.05457, 1.58199, 2.17844, 2.43035, 2.61604, + 0.344653, 0.543532, 0.703715, 0.862285, 1.19822, 1.33821, 1.57908, 2.06077, 2.30675, 2.48575, + 0.220701, 0.326795, 0.520618, 0.755133, 1.29555, 1.45189, 1.6905, 2.20005, 2.41427, 2.61591, + 0.279478, 0.332193, 0.801527, 1.34597, 1.48748, 1.6785, 1.9222, 2.10002, 2.58557, 2.71339, + 0.163502, 0.212169, 0.365096, 0.525464, 0.869846, 1.20881, 1.79399, 2.04031, 2.29718, 2.4698, + 0.285531, 0.341488, 0.754059, 1.17002, 1.30084, 1.5137, 1.69986, 1.88992, 2.58146, 2.70687, + 0.249595, 0.366997, 0.626427, 0.945219, 1.40704, 1.56056, 1.83166, 2.23115, 2.46635, 2.65452, + 0.271671, 0.443136, 1.15641, 1.40646, 1.67652, 1.85648, 2.06322, 2.2305, 2.47584, 2.63958, + 0.28662, 0.427806, 0.63732, 0.803409, 0.996161, 1.26638, 1.68175, 2.00397, 2.39465, 2.58855, + 0.314906, 0.440519, 0.612129, 0.896126, 1.47241, 1.71769, 1.88135, 2.09944, 2.36917, 2.49547, + 0.170277, 0.25127, 0.405477, 0.915641, 1.12689, 1.43663, 1.71477, 1.8932, 2.55299, 2.73852, + 0.27941, 0.337137, 0.734563, 1.28105, 1.4806, 1.61188, 1.85321, 1.99488, 2.41605, 2.65483, + 0.165776, 0.226083, 0.417544, 0.744574, 1.04447, 1.53489, 1.80849, 1.94495, 2.13849, 2.60179, + 0.264579, 0.336652, 0.542033, 0.71019, 0.913338, 1.65575, 1.81776, 2.23196, 2.52444, 2.65852, + 0.158194, 0.235588, 0.338347, 0.541657, 1.58338, 1.76629, 2.00914, 2.24334, 2.50394, 2.77516, + 0.332612, 0.50962, 0.822935, 1.07588, 1.45429, 1.65079, 1.97445, 2.25128, 2.53734, 2.74512, + 0.262817, 0.359709, 0.520893, 0.707667, 0.818364, 1.43885, 1.97125, 2.08767, 2.49701, 2.64644, + 0.2332, 0.399599, 0.612456, 0.775547, 1.19919, 1.35576, 1.6469, 2.13625, 2.34249, 2.69574, + 0.149687, 0.238538, 0.372248, 0.63452, 1.25581, 1.43379, 1.77004, 1.92875, 2.61191, 2.82493, + 0.137016, 0.210297, 0.591489, 1.12545, 1.37565, 1.6853, 2.08961, 2.39089, 2.70446, 2.84443, + 0.21349, 0.341024, 0.541716, 0.750061, 1.0882, 1.24458, 1.55534, 1.96557, 2.1879, 2.38371, + 0.300159, 0.489291, 0.825022, 1.0371, 1.19409, 1.34738, 1.68475, 2.02494, 2.46561, 2.74097, + 0.170029, 0.255033, 0.392758, 0.727117, 1.38207, 1.57968, 1.80091, 1.95907, 2.28234, 2.7288, + 0.175883, 0.365509, 1.11217, 1.38587, 1.72039, 1.97781, 2.2453, 2.42161, 2.62957, 2.754, + 0.16259, 0.248164, 0.45463, 0.763209, 0.966031, 1.28234, 1.73074, 1.93805, 2.47938, 2.66756, + 0.258043, 0.345866, 0.55652, 0.981312, 1.36153, 1.48238, 1.87224, 2.15823, 2.36227, 2.55503, + 0.234139, 0.348843, 0.528234, 0.987884, 1.19522, 1.42215, 1.96003, 2.12737, 2.60332, 2.793, + 0.179699, 0.559209, 0.867682, 1.08884, 1.31689, 1.5715, 1.9222, 2.19739, 2.50112, 2.72868, + 0.216784, 0.310791, 0.487492, 0.932903, 1.20195, 1.36655, 1.8004, 1.9775, 2.17426, 2.53707, + 0.186878, 0.400655, 0.580952, 0.846287, 1.10387, 1.26678, 1.84277, 2.01959, 2.488, 2.71722, + 0.164641, 0.248712, 0.389358, 0.772822, 1.21256, 1.36992, 2.02587, 2.27762, 2.61752, 2.80953, + 0.351899, 0.520326, 0.926597, 1.21965, 1.50984, 1.67684, 1.92174, 2.11125, 2.35638, 2.54593, + 0.242182, 0.365285, 0.506156, 0.71602, 0.865221, 1.01169, 1.78692, 2.12298, 2.35088, 2.76773, + 0.413776, 0.559566, 0.7358, 0.928997, 1.07912, 1.26718, 1.88007, 2.15249, 2.32483, 2.53986, + 0.210597, 0.329568, 0.469735, 0.78859, 1.21549, 1.31981, 1.71146, 2.05899, 2.24544, 2.65373, + 0.197937, 0.254148, 0.477985, 1.22709, 1.62992, 1.76743, 2.18698, 2.3851, 2.59487, 2.72554, + 0.205489, 0.333855, 0.523915, 0.706275, 1.10215, 1.24661, 1.6489, 2.02683, 2.28169, 2.75931, + 0.230328, 0.322431, 0.861834, 1.14561, 1.34721, 1.57611, 1.80728, 2.00482, 2.35437, 2.57225, + 0.224898, 0.282022, 0.506636, 1.1523, 1.62656, 1.75209, 2.02818, 2.21882, 2.48896, 2.67046, + 0.313732, 0.625469, 1.16447, 1.49908, 1.74961, 2.01853, 2.26223, 2.4296, 2.69216, 2.8225, + 0.375623, 0.575307, 0.7912, 0.93577, 1.09694, 1.34339, 1.80799, 2.18731, 2.51972, 2.6948, + 0.236981, 0.332412, 0.47927, 0.844461, 1.34764, 1.49073, 1.68394, 2.03914, 2.29762, 2.45843, + 0.129047, 0.20625, 0.636751, 0.865101, 1.13689, 1.35661, 1.7048, 1.91668, 2.51836, 2.75632, + 0.195171, 0.266517, 0.414793, 1.23956, 1.45291, 1.60836, 1.83305, 2.0478, 2.47352, 2.62199, + 0.165853, 0.21272, 0.372757, 0.536136, 1.01394, 1.33963, 1.55512, 1.94574, 2.23628, 2.44095, + 0.256981, 0.368868, 0.635878, 0.802543, 1.08476, 1.43912, 1.81473, 2.12052, 2.45815, 2.62146, + 0.214382, 0.297135, 0.445091, 0.70205, 1.3651, 1.85126, 2.06703, 2.2073, 2.47073, 2.61243, + 0.34071, 0.532103, 0.935278, 1.17102, 1.37789, 1.6386, 1.96527, 2.24616, 2.63127, 2.80634, + 0.310524, 0.412051, 0.582478, 0.768755, 0.871594, 1.11985, 1.92635, 2.20751, 2.40709, 2.63663, + 0.249349, 0.443517, 0.631532, 0.810096, 1.20513, 1.35721, 1.6074, 1.98416, 2.20802, 2.64511, + 0.14309, 0.185312, 0.325214, 0.504, 1.13447, 1.32791, 1.67365, 2.0069, 2.38928, 2.74609, + 0.226575, 0.298946, 0.453938, 0.998061, 1.3946, 1.59728, 2.06418, 2.22325, 2.42547, 2.56946, + 0.183924, 0.255181, 0.415834, 0.624247, 1.04234, 1.20308, 1.55524, 2.12531, 2.40035, 2.66192, + 0.27561, 0.365968, 0.654909, 0.990108, 1.1708, 1.45533, 2.07756, 2.25267, 2.50232, 2.68595, + 0.204334, 0.287844, 0.39481, 0.761295, 1.5012, 1.78471, 1.93557, 2.15283, 2.34926, 2.54564, + 0.342976, 0.527539, 0.917466, 1.16059, 1.49953, 1.76183, 2.09527, 2.30187, 2.54057, 2.69469, + 0.202374, 0.333367, 0.480179, 0.708677, 0.819505, 1.10529, 1.80664, 1.95335, 2.61084, 2.7975, + 0.307033, 0.368471, 0.602486, 1.10861, 1.41335, 1.52864, 1.79852, 1.98614, 2.16905, 2.43726, + 0.144073, 0.196932, 0.386988, 0.819061, 1.28977, 1.62507, 1.90192, 2.13611, 2.48302, 2.70797, + 0.17676, 0.268627, 0.662082, 1.05687, 1.54797, 1.71139, 1.97294, 2.24991, 2.54447, 2.76109, + 0.191409, 0.292985, 0.492193, 0.800526, 1.04184, 1.27855, 1.83663, 2.02868, 2.24939, 2.62778, + 0.324102, 0.399146, 0.687435, 0.868704, 1.02296, 1.58208, 1.85385, 1.98188, 2.55491, 2.67706, + 0.229172, 0.302836, 0.481418, 0.704363, 0.967567, 1.82827, 2.0973, 2.25847, 2.54911, 2.70465, + 0.467124, 0.696788, 0.9395, 1.09499, 1.27754, 1.4885, 1.89628, 2.15847, 2.47418, 2.65999, + 0.175418, 0.234039, 0.367674, 0.513586, 0.747619, 1.0084, 1.58316, 2.05311, 2.36329, 2.68115, + 0.410273, 0.561949, 0.736215, 0.956685, 1.13569, 1.28842, 1.75061, 1.93771, 2.15132, 2.48934, + 0.204541, 0.277613, 0.529607, 0.722971, 1.19998, 1.44734, 1.71563, 1.92105, 2.35778, 2.50749, + 0.253116, 0.311907, 0.696982, 1.32008, 1.57542, 1.70532, 2.00507, 2.16867, 2.46188, 2.66505, + 0.163657, 0.237902, 0.393374, 0.60949, 0.854272, 1.08998, 1.52639, 1.84234, 2.12625, 2.67905, + 0.448627, 0.530664, 0.812719, 1.0952, 1.20764, 1.57541, 1.88421, 2.0343, 2.55301, 2.68835, + 0.262717, 0.338748, 0.512685, 1.00354, 1.48018, 1.62208, 1.82852, 2.14242, 2.35646, 2.51153, + 0.417111, 0.636688, 1.03657, 1.31988, 1.67992, 1.87339, 2.07372, 2.2494, 2.50773, 2.65105, + 0.263698, 0.461151, 0.618737, 0.830471, 1.00404, 1.15887, 1.80157, 2.02022, 2.30656, 2.74304, + 0.387779, 0.575108, 0.729791, 0.932981, 1.36116, 1.50516, 1.75118, 2.06847, 2.33826, 2.48764, + 0.18151, 0.265666, 0.454631, 1.08238, 1.2873, 1.5792, 1.85118, 2.09696, 2.46724, 2.64693, + 0.277668, 0.345119, 0.602341, 1.1792, 1.37899, 1.54562, 1.81386, 1.96259, 2.4918, 2.66445, + 0.17932, 0.24808, 0.456925, 0.722589, 1.12693, 1.57945, 1.7994, 1.95067, 2.48412, 2.70724, + 0.314322, 0.381145, 0.608651, 0.727613, 0.890472, 1.61028, 2.13617, 2.25836, 2.59638, 2.70978, + 0.189539, 0.266068, 0.419729, 0.651693, 1.41016, 1.64311, 1.85481, 2.27558, 2.49205, 2.72201, + 0.254466, 0.313038, 0.594149, 1.01254, 1.68881, 1.93546, 2.11918, 2.28787, 2.53554, 2.66793, + 0.134691, 0.171906, 0.30274, 0.492936, 0.899551, 1.22919, 1.73394, 2.01288, 2.44634, 2.74276, + 0.231556, 0.365068, 0.680761, 0.889142, 1.11134, 1.2959, 1.54264, 1.97178, 2.42756, 2.63191, + 0.222525, 0.305606, 0.527193, 0.687519, 1.18138, 1.67176, 1.86368, 2.07202, 2.63452, 2.77927, + 0.17877, 0.237415, 0.37516, 0.856692, 1.67368, 1.81374, 2.01679, 2.27242, 2.5226, 2.73596, + 0.193532, 0.268731, 0.451328, 0.753471, 0.984854, 1.28535, 1.68565, 1.88412, 2.09168, 2.24342, + 0.476037, 0.65161, 0.801054, 1.01016, 1.24137, 1.35584, 1.77598, 2.08615, 2.27291, 2.45435, + 0.211657, 0.308331, 0.421366, 0.865966, 1.41877, 1.55674, 1.78615, 2.02033, 2.19859, 2.63198, + 0.203789, 0.490794, 1.01014, 1.27501, 1.47221, 1.81014, 2.17064, 2.43766, 2.66212, 2.78806, + 0.174355, 0.252095, 0.674715, 0.842194, 1.05509, 1.278, 1.69868, 2.07056, 2.39938, 2.65743, + 0.245109, 0.324049, 0.628822, 0.92791, 1.1236, 1.58007, 1.87864, 2.0546, 2.35872, 2.54684, + 0.182644, 0.253804, 0.386248, 0.614056, 1.36482, 1.54588, 2.04017, 2.21883, 2.41901, 2.62461, + 0.295605, 0.367794, 0.690701, 1.05516, 1.1866, 1.64445, 1.94415, 2.10144, 2.56212, 2.69127, + 0.220878, 0.289573, 0.640307, 0.822072, 1.14406, 1.5678, 1.76641, 1.90811, 2.10346, 2.56049, + 0.403453, 0.526298, 0.732204, 0.90115, 1.03587, 1.33938, 1.78399, 1.94196, 2.37103, 2.62665, + 0.212825, 0.25857, 0.471588, 0.685549, 1.26374, 1.82105, 2.16382, 2.2884, 2.62806, 2.78816, + 0.401181, 0.642053, 1.03247, 1.23611, 1.44445, 1.68668, 2.00672, 2.22851, 2.57211, 2.72396, + 0.239433, 0.341091, 0.492629, 0.70763, 0.881426, 1.03082, 1.71925, 2.34406, 2.57906, 2.75694, + 0.294093, 0.38277, 0.577412, 1.00928, 1.31304, 1.4193, 1.74467, 2.09423, 2.28904, 2.47584, + 0.169805, 0.236922, 0.403314, 0.638995, 1.17645, 1.35214, 1.66557, 1.90976, 2.15012, 2.71624, + 0.210447, 0.277913, 0.452474, 1.40269, 1.51343, 1.72094, 1.90394, 2.2785, 2.58376, 2.74318, + 0.159574, 0.225382, 0.374008, 0.714137, 1.01125, 1.37171, 1.69916, 1.87159, 2.02706, 2.49119, + 0.258602, 0.557253, 0.81972, 1.03886, 1.30147, 1.44536, 1.83061, 2.09817, 2.32081, 2.54107, + 0.232756, 0.282242, 0.631974, 0.898694, 1.53744, 1.86922, 2.06397, 2.23446, 2.49823, 2.63352, + 0.580133, 0.997946, 1.32096, 1.48187, 1.73161, 1.89858, 2.12071, 2.29013, 2.53009, 2.65166, + 0.21184, 0.307093, 0.45336, 0.945579, 1.25082, 1.49029, 1.72414, 2.2811, 2.5627, 2.7526, + 0.314276, 0.493555, 0.667782, 0.8965, 1.32301, 1.48262, 1.66749, 1.97441, 2.42735, 2.55568, + 0.182455, 0.261592, 0.418011, 1.05093, 1.26139, 1.44337, 1.66547, 1.93903, 2.44469, 2.63845, + 0.24157, 0.306934, 0.491293, 1.10595, 1.55483, 1.66652, 1.92392, 2.08765, 2.3676, 2.65489, + 0.190084, 0.25485, 0.454062, 0.724519, 1.08336, 1.39389, 1.89234, 2.08886, 2.32176, 2.4843, + 0.306497, 0.389831, 0.721793, 0.839714, 1.12475, 1.6524, 1.82292, 2.27331, 2.5692, 2.6696, + 0.1862, 0.27346, 0.383201, 0.564758, 1.51107, 1.84502, 1.99828, 2.1941, 2.38869, 2.58792, + 0.300722, 0.478218, 0.823364, 1.12749, 1.59114, 1.87135, 2.17472, 2.40318, 2.62478, 2.7824, + 0.228884, 0.358342, 0.504622, 0.795874, 1.00562, 1.15261, 1.90805, 2.12479, 2.37247, 2.79758, + 0.171885, 0.248234, 0.432842, 0.833143, 1.04089, 1.26929, 1.66164, 1.91863, 2.15896, 2.6534, + 0.140943, 0.193684, 0.343025, 0.562303, 1.06955, 1.54333, 1.82447, 1.96164, 2.46351, 2.77054, + 0.173053, 0.245656, 0.360656, 0.960618, 1.58953, 1.68991, 1.98414, 2.143, 2.58839, 2.7594, + 0.24018, 0.429951, 0.63744, 0.786596, 1.06915, 1.22657, 1.47088, 1.95205, 2.19506, 2.61597, + 0.367862, 0.471897, 0.730834, 1.08232, 1.22629, 1.46293, 1.92817, 2.05247, 2.40674, 2.66246, + 0.247175, 0.358209, 0.535946, 0.781876, 1.3637, 1.63524, 1.80723, 1.99378, 2.45277, 2.60104, + 0.445578, 0.687898, 1.11411, 1.30103, 1.5774, 1.88604, 2.2249, 2.43653, 2.65969, 2.76103, + 0.214389, 0.336025, 0.487794, 0.759534, 0.970518, 1.1411, 1.45733, 1.62464, 2.30692, 2.71527, + 0.3773, 0.466775, 0.716121, 1.08378, 1.25654, 1.41124, 1.78943, 1.93637, 2.20557, 2.56236, + 0.148362, 0.214593, 0.545023, 0.840437, 1.19333, 1.48066, 1.79187, 2.08342, 2.41054, 2.67613, + 0.150403, 0.278398, 0.792676, 0.97668, 1.21885, 1.40524, 1.77506, 2.16246, 2.54786, 2.74638, + 0.236301, 0.328633, 0.630867, 0.839915, 1.04235, 1.29887, 1.62775, 1.83949, 2.29893, 2.49396, + 0.337889, 0.49792, 0.711277, 0.85042, 0.992027, 1.24688, 1.71075, 2.08668, 2.52716, 2.70716, + 0.172215, 0.23654, 0.372897, 0.525146, 1.18258, 1.73573, 1.92703, 2.11462, 2.31917, 2.54278, + 0.415304, 0.624807, 0.906616, 1.11784, 1.44615, 1.66942, 1.94841, 2.17282, 2.50453, 2.67075, + 0.265417, 0.407241, 0.613894, 0.816534, 0.980063, 1.15606, 1.75675, 2.27485, 2.49719, 2.71224, + 0.27644, 0.468209, 0.649518, 0.816686, 1.19517, 1.35552, 1.54923, 1.93527, 2.21787, 2.42698, + 0.188925, 0.277012, 0.412665, 0.672627, 1.35481, 1.51452, 1.69999, 2.14455, 2.38219, 2.58608, + 0.24263, 0.352485, 0.912974, 1.34378, 1.60443, 1.80187, 2.01479, 2.19307, 2.46081, 2.632, + 0.190903, 0.285841, 0.44907, 0.760328, 0.954285, 1.18294, 1.69264, 1.87816, 2.27684, 2.46596, + 0.220659, 0.300374, 0.721694, 0.947306, 1.29833, 1.56298, 1.76062, 1.88825, 2.50644, 2.68968, + 0.213168, 0.290928, 0.695227, 0.918179, 1.37819, 1.63199, 1.84789, 2.00307, 2.35836, 2.61935, + 0.328586, 0.517244, 0.93732, 1.37624, 1.57484, 1.76435, 2.05863, 2.22433, 2.58444, 2.75665, + 0.248486, 0.367007, 0.562147, 0.750632, 0.902785, 1.14756, 1.63742, 1.91206, 2.41399, 2.6057, + 0.310691, 0.477895, 0.670796, 0.940507, 1.41829, 1.5635, 1.80514, 2.11408, 2.37636, 2.53516, + 0.256555, 0.41421, 0.559427, 0.981289, 1.19165, 1.37831, 1.6784, 1.84931, 2.5767, 2.75663, + 0.291424, 0.335003, 0.750149, 1.28965, 1.43721, 1.59999, 1.80318, 1.96741, 2.60175, 2.73376, + 0.195254, 0.279513, 0.451755, 0.649111, 0.828694, 1.60951, 1.91491, 2.09122, 2.31959, 2.5349, + 0.222304, 0.332624, 0.475678, 0.685205, 1.03033, 1.73722, 1.92098, 2.37829, 2.70672, 2.81773, + 0.164833, 0.240093, 0.359862, 0.801929, 1.51368, 1.64171, 2.04052, 2.24884, 2.48866, 2.71403, + 0.214777, 0.287322, 0.572644, 1.14507, 1.36711, 1.75269, 2.04242, 2.22207, 2.54305, 2.69789, + 0.226099, 0.330382, 0.474439, 0.687757, 0.799187, 1.31984, 1.94457, 2.0781, 2.3678, 2.50846, + 0.24454, 0.392163, 0.553692, 0.729765, 1.24786, 1.44838, 1.61759, 2.07464, 2.34005, 2.51806, + 0.175381, 0.314231, 0.446023, 0.797404, 1.32846, 1.43973, 1.79335, 1.93957, 2.4688, 2.72165, + 0.205808, 0.29367, 0.452447, 1.07427, 1.28823, 1.65563, 1.8575, 2.36469, 2.63981, 2.79814, + 0.253926, 0.392653, 0.587584, 0.800134, 0.97631, 1.18559, 1.57069, 1.82141, 2.09089, 2.34902, + 0.322461, 0.410912, 0.723569, 1.06064, 1.20152, 1.40036, 1.57919, 1.78876, 2.46024, 2.6166, + 0.211266, 0.304981, 0.436011, 0.771978, 1.49062, 1.67775, 1.88623, 2.1135, 2.32635, 2.72726, + 0.235012, 0.406911, 0.864785, 1.29148, 1.70829, 1.93855, 2.1799, 2.3524, 2.56379, 2.71145, + 0.176814, 0.26862, 0.445837, 0.823113, 1.02978, 1.27157, 1.62339, 1.81122, 2.40214, 2.61417, + 0.241865, 0.339268, 0.507509, 1.00368, 1.20435, 1.37256, 1.94079, 2.10137, 2.38561, 2.66998, + 0.230878, 0.334743, 0.50037, 0.879929, 1.02189, 1.53377, 1.97079, 2.12897, 2.56726, 2.71729, + 0.297505, 0.451574, 0.748848, 0.988527, 1.36624, 1.60667, 1.89466, 2.17448, 2.52143, 2.75917, + 0.199265, 0.271145, 0.49816, 0.854679, 1.1721, 1.36415, 1.76208, 1.96909, 2.17354, 2.31163, + 0.222173, 0.424864, 0.564942, 0.829809, 1.03817, 1.19405, 1.7206, 1.85809, 2.43176, 2.74146, + 0.181961, 0.226819, 0.390513, 0.556339, 1.0566, 1.55306, 2.12835, 2.25802, 2.6025, 2.80212, + 0.3576, 0.565047, 1.15301, 1.35031, 1.53358, 1.71854, 1.95789, 2.17535, 2.50565, 2.67849, + 0.162257, 0.236808, 0.374039, 0.570569, 0.748034, 1.17226, 1.82339, 2.05303, 2.51377, 2.77207, + 0.305794, 0.46587, 0.645121, 0.88265, 1.14129, 1.26686, 1.70158, 2.00288, 2.18412, 2.41125, + 0.231652, 0.380738, 0.549642, 0.83741, 1.22527, 1.33297, 1.85158, 2.11937, 2.31508, 2.73211, + 0.235449, 0.286771, 0.684809, 1.34666, 1.52663, 1.70348, 2.10149, 2.25455, 2.57718, 2.71899, + 0.23387, 0.446515, 0.60508, 0.814654, 1.05496, 1.1788, 1.63316, 1.84974, 2.13938, 2.73277, + 0.271706, 0.335152, 0.857227, 1.25374, 1.38719, 1.70217, 1.89677, 2.19111, 2.48, 2.60136, + 0.237386, 0.314549, 0.438339, 0.912164, 1.57776, 1.87779, 2.03279, 2.19704, 2.41232, 2.53648, + 0.361168, 0.574093, 1.02384, 1.46852, 1.69056, 1.91737, 2.18737, 2.33403, 2.6691, 2.80629, + 0.27848, 0.398742, 0.573342, 0.839212, 1.07389, 1.22209, 1.69168, 2.16526, 2.37741, 2.53688, + 0.286018, 0.447947, 0.61506, 0.849446, 1.31947, 1.46358, 1.76995, 2.00103, 2.18943, 2.45038, + 0.21944, 0.301601, 0.668534, 0.861094, 1.21, 1.49867, 1.74512, 1.87777, 2.31438, 2.6196, + 0.223591, 0.352153, 0.598841, 1.21789, 1.35908, 1.59174, 1.77109, 2.21386, 2.56154, 2.73542, + 0.176857, 0.236601, 0.395107, 0.634632, 1.13349, 1.33512, 1.77037, 1.98131, 2.20656, 2.33972, + 0.334735, 0.402265, 0.659168, 0.781639, 0.975228, 1.665, 1.87207, 2.04753, 2.47696, 2.57398, + 0.215968, 0.284755, 0.524241, 0.78146, 1.33481, 1.77238, 1.95388, 2.19421, 2.57825, 2.74194, + 0.298193, 0.489879, 0.812985, 1.18369, 1.49642, 1.67998, 2.10879, 2.31656, 2.67378, 2.85161, + 0.312989, 0.415446, 0.618011, 0.899096, 1.08368, 1.26338, 1.8874, 2.24306, 2.41945, 2.57048, + 0.244471, 0.431115, 0.601512, 0.813139, 1.10216, 1.22106, 1.69244, 2.03316, 2.2218, 2.61984, + 0.150949, 0.21906, 0.349217, 0.611327, 1.07711, 1.25055, 1.91552, 2.08398, 2.45, 2.79254, + 0.161611, 0.218964, 0.445377, 0.927863, 1.45115, 1.76846, 2.13001, 2.36672, 2.666, 2.81405, + 0.196, 0.297256, 0.497266, 0.6919, 1.08988, 1.27368, 1.51372, 2.00647, 2.27378, 2.57222, + 0.335268, 0.460795, 0.685187, 0.867664, 1.01381, 1.47955, 2.01199, 2.16848, 2.57264, 2.71756, + 0.257604, 0.340872, 0.499757, 0.843052, 1.39655, 1.83169, 2.03423, 2.17033, 2.42262, 2.5405, + 0.417663, 0.631718, 0.955424, 1.19732, 1.6598, 1.87988, 2.1688, 2.35905, 2.57809, 2.69825, + 0.162052, 0.251583, 0.4399, 0.660911, 0.903902, 1.3203, 1.62476, 1.77858, 2.53053, 2.79971, + 0.256861, 0.322803, 0.68537, 1.08644, 1.26328, 1.56988, 1.85165, 2.01495, 2.26471, 2.44701, + 0.125192, 0.176171, 0.336135, 0.7816, 1.20022, 1.43997, 1.80542, 2.07752, 2.46247, 2.73819, + 0.102286, 0.191322, 0.774556, 1.07615, 1.36946, 1.62715, 1.97301, 2.236, 2.60937, 2.81298, + 0.173442, 0.232622, 0.491622, 0.844157, 1.09524, 1.3708, 1.69697, 2.05141, 2.31606, 2.50205, + 0.257531, 0.343598, 0.654071, 0.838985, 1.0481, 1.48747, 1.72538, 1.89742, 2.43051, 2.586, + 0.1979, 0.276312, 0.440283, 0.705103, 1.26734, 1.7403, 1.93448, 2.15401, 2.4002, 2.62414, + 0.40959, 0.596785, 0.983751, 1.18177, 1.37115, 1.50238, 1.75828, 2.01857, 2.38005, 2.59215, + 0.231819, 0.33289, 0.483514, 0.644585, 0.816808, 0.926308, 1.4033, 2.23301, 2.46786, 2.67846, + 0.25861, 0.340064, 0.670485, 0.908467, 1.10761, 1.45624, 1.75958, 1.93218, 2.11312, 2.31013, + 0.184377, 0.249203, 0.410806, 0.587907, 1.3025, 1.51032, 1.72443, 1.98189, 2.2829, 2.42213, + 0.25411, 0.313328, 0.659859, 1.26582, 1.41295, 1.66593, 1.92715, 2.10198, 2.55145, 2.67303, + 0.161592, 0.23748, 0.376535, 0.637094, 0.823028, 1.13761, 1.69642, 1.87577, 2.40363, 2.63962, + 0.384501, 0.466812, 0.740791, 0.938093, 1.06235, 1.50928, 1.74914, 1.9178, 2.54816, 2.67151, + 0.333872, 0.419367, 0.638994, 1.09262, 1.52055, 1.64945, 1.86662, 2.14894, 2.34672, 2.50614, + 0.426216, 0.686997, 1.23588, 1.42885, 1.61159, 1.79286, 2.01759, 2.23372, 2.54777, 2.69661, + 0.262949, 0.367509, 0.530429, 0.741867, 0.872474, 1.0696, 1.74557, 2.06119, 2.28384, 2.49418, + 0.335782, 0.547236, 0.716211, 0.919077, 1.27569, 1.40844, 1.68512, 1.96739, 2.21764, 2.44668, + 0.227629, 0.330991, 0.486068, 1.11757, 1.30498, 1.51013, 1.75726, 1.94697, 2.62556, 2.7826, + 0.35985, 0.436633, 0.750634, 1.20151, 1.33757, 1.59484, 1.97027, 2.11384, 2.57381, 2.72996, + 0.211871, 0.304028, 0.512758, 0.663762, 1.08635, 1.63333, 1.81802, 2.12958, 2.39108, 2.60077, + 0.196092, 0.279726, 0.434488, 0.624802, 0.772358, 1.40438, 1.94878, 2.16092, 2.63, 2.77518, + 0.176304, 0.262521, 0.373719, 0.581101, 1.52011, 1.73617, 1.93323, 2.14017, 2.35813, 2.75352, + 0.254932, 0.381411, 0.806187, 1.10229, 1.53452, 1.75028, 1.9709, 2.15987, 2.45592, 2.65841, + 0.190385, 0.288656, 0.449066, 0.678174, 0.812376, 1.44933, 1.72866, 1.96632, 2.63881, 2.78955, + 0.251178, 0.386509, 0.609363, 0.797102, 1.02416, 1.18173, 1.45466, 2.01263, 2.49309, 2.69893, + 0.166654, 0.266226, 0.385171, 0.71199, 1.3979, 1.53235, 1.91597, 2.088, 2.56527, 2.78953, + 0.238453, 0.306036, 0.449309, 0.876277, 1.52144, 1.93398, 2.13442, 2.26799, 2.5376, 2.65825, + 0.161634, 0.219919, 0.353206, 0.524346, 0.961806, 1.20771, 1.68792, 1.91694, 2.16187, 2.32066, + 0.413612, 0.597095, 0.793763, 0.98629, 1.28179, 1.41266, 1.65246, 2.01609, 2.38416, 2.52858, + 0.228655, 0.341562, 0.480989, 0.988605, 1.371, 1.47742, 1.86103, 2.01585, 2.33975, 2.77315, + 0.259092, 0.597012, 0.985224, 1.32174, 1.64335, 1.95737, 2.28868, 2.49747, 2.71649, 2.84447, + 0.185652, 0.304664, 0.446232, 0.864434, 1.09179, 1.27377, 1.94257, 2.09554, 2.52465, 2.76824, + 0.176687, 0.256678, 0.745652, 0.934909, 1.28376, 1.44006, 1.76524, 2.12209, 2.3881, 2.59055, + 0.189805, 0.275637, 0.440995, 0.821356, 1.25602, 1.41098, 1.92978, 2.12014, 2.39603, 2.60464, + 0.266823, 0.337688, 0.819408, 1.13475, 1.2892, 1.77703, 1.98289, 2.22175, 2.59029, 2.6981, + 0.205348, 0.276512, 0.527305, 0.727412, 1.02465, 1.65398, 1.90418, 2.04661, 2.21792, 2.45566, + 0.293498, 0.424494, 0.613795, 0.95613, 1.13398, 1.3248, 1.80903, 1.95392, 2.29385, 2.57588, + 0.18312, 0.24965, 0.376204, 0.543914, 1.35083, 1.90722, 2.09255, 2.25571, 2.51439, 2.6879, + 0.541205, 0.789796, 1.05895, 1.26942, 1.5039, 1.70219, 1.97018, 2.17544, 2.49681, 2.65224, + 0.229326, 0.339475, 0.451881, 0.66121, 0.795832, 1.0738, 2.0271, 2.20637, 2.4789, 2.72678, + 0.330006, 0.506868, 0.673076, 0.887406, 1.22877, 1.34923, 1.78129, 2.08658, 2.27776, 2.48003, + 0.138389, 0.200001, 0.396259, 0.811975, 1.09071, 1.46041, 1.74549, 1.90427, 2.34825, 2.69989, + 0.176584, 0.242161, 0.37827, 1.17785, 1.56472, 1.67817, 1.95162, 2.12141, 2.58011, 2.73713, + 0.145852, 0.198423, 0.335644, 0.550505, 1.01973, 1.37119, 1.79763, 1.94383, 2.20749, 2.74647, + 0.385078, 0.503696, 0.703239, 1.06999, 1.36574, 1.47205, 1.82583, 2.15964, 2.37128, 2.52097, + 0.28495, 0.38805, 0.507352, 0.879125, 1.52353, 1.77624, 1.9296, 2.15756, 2.44799, 2.5864, + 0.491116, 0.756155, 1.2552, 1.52246, 1.77658, 2.02812, 2.28606, 2.42977, 2.67911, 2.77616, + 0.252477, 0.396081, 0.713022, 0.861502, 1.15222, 1.3708, 1.61401, 2.1448, 2.57407, 2.71253, + 0.282756, 0.438437, 0.613566, 0.847746, 1.26077, 1.37906, 1.6422, 2.13754, 2.36837, 2.52216, + 0.203971, 0.322195, 0.479842, 0.953133, 1.21128, 1.39763, 1.80081, 1.95452, 2.40348, 2.57371, + 0.264533, 0.358424, 0.628768, 1.11124, 1.34025, 1.50648, 1.99959, 2.19411, 2.46141, 2.66736, + 0.17773, 0.22368, 0.394553, 0.556177, 0.947415, 1.50064, 1.73353, 1.92605, 2.26147, 2.43605, + 0.314223, 0.363636, 0.727886, 0.85188, 1.05384, 1.79813, 1.97435, 2.1826, 2.538, 2.62968, + 0.201778, 0.2755, 0.404891, 0.747466, 1.50005, 1.84118, 1.99884, 2.22681, 2.48199, 2.66951, + 0.132164, 0.314955, 0.821473, 1.19604, 1.42659, 1.69993, 2.03686, 2.3235, 2.68547, 2.82896, + 0.223374, 0.347335, 0.50773, 0.773547, 0.967916, 1.13413, 1.9914, 2.30657, 2.52136, 2.78875, + 0.312742, 0.449784, 0.583287, 0.934234, 1.26857, 1.36506, 1.5693, 1.68705, 2.0773, 2.59502, + 0.124286, 0.162126, 0.29073, 0.654031, 1.23166, 1.53846, 1.89307, 2.18478, 2.56264, 2.79822, + 0.177049, 0.251654, 0.367891, 0.912504, 1.55758, 1.69305, 1.89899, 2.07214, 2.35016, 2.64604, + 0.240517, 0.378333, 0.547809, 0.754272, 0.973321, 1.10367, 1.57442, 2.02805, 2.21113, 2.56271, + 0.427795, 0.519003, 0.771284, 0.93724, 1.08662, 1.60988, 1.87875, 2.05279, 2.53412, 2.65715, + 0.22437, 0.317969, 0.439666, 0.812931, 1.3985, 1.62663, 1.79418, 2.114, 2.30916, 2.49684 +}; + /* codebook/lspjvm2.txt */ +static const float codes1[] = { + 0.005167, -0.03731, -0.002159, 0.016849, 0.130396, + 0.039445, 0.03168, -0.074412, -0.031499, 0.060536, + 0.019479, -0.030564, -0.048137, -0.056279, -0.027829, + 0.020585, -0.01127, 0.023913, -0.005706, 0.011407, + -0.023217, 0.107455, -0.037777, 0.00407, -0.017279, + -0.090444, 0.007641, 0.099001, -0.047913, -0.017199, + 0.0227, -0.063865, 0.047213, 0.043843, -0.036225, + 0.001312, -0.123861, -0.038988, 0.058666, 0.074541, + 0.039508, 0.1103, 0.013954, -0.119228, -0.035807, + -0.047392, 0.027035, -0.004412, -0.03265, -0.03715, + 0.002491, -0.045447, 0.15826, 0.022828, -0.030124, + -0.047856, 0.088744, -0.009678, 0.106688, 0.08769, + -0.027941, 0.044084, -0.0285, 0.018736, -0.069969, + -0.035358, -0.051568, -0.030459, -0.017899, 0.027632, + -0.018607, -0.123557, 0.019228, 0.057485, -0.028907, + 0.019057, 0.038151, -0.08022, 0.034222, 0.023081, + 0.021312, 0.041905, 0.112903, 0.024092, 0.093974, + -0.116679, 0.015344, -0.066059, -0.096437, 0.004041, + -0.022464, -0.11626, 0.047819, -0.003921, -0.073504, + 0.001975, -0.025869, 0.0282, 0.12269, 0.010627, + -0.035672, 0.078963, -0.009686, 0.000743, -0.147582, + 0.016932, -0.020291, -0.096896, -0.237875, -0.029121, + 0.017376, -0.04013, -0.053865, 0.15406, -0.013215, + 0.015215, -0.019023, -0.070604, 0.032265, 0.04034, + 0.102365, -0.022746, 0.019895, 0.05057, 0.008845, + -0.034134, 0.044441, -0.049387, -0.140481, 0.07257, + 0.013023, -0.006079, 0.037574, 0.004937, -0.081501, + 0.003696, 0.049908, 0.007355, 0.000403, 0.026006, + -0.008466, 0.08068, 0.061382, -0.108985, -0.08806, + -0.012275, -0.081061, 0.020333, -0.079001, 0.068724, + -0.014081, -0.042609, 0.093365, 0.04412, 0.000303, + 0.063391, 0.096574, -0.105424, 0.039041, 0.010412, + -0.054031, -0.084948, 0.080406, -0.035883, 0.137428, + 0.063037, 0.050562, 0.02469, -0.031394, 0.13032, + -0.015501, -0.078884, -0.076886, -0.013864, -0.073587, + 0.048778, 0.003814, -0.031125, 0.046897, 0.028304, + 0.048692, 0.132795, 0.06545, 0.059487, -0.042396, + -0.176999, 0.056943, -0.004135, -0.049378, -0.041083, + -0.039445, -0.016292, -0.00455, 0.06201, -0.079613, + -0.054566, -0.008476, -0.01671, 0.049202, 0.025758, + -0.078723, 0.092091, 0.096536, -0.065079, 0.021161, + 0.076657, 0.009203, -0.036866, -0.016559, 0.012823, + 0.008225, -0.003006, 0.108033, 0.04312, -0.06087, + -0.019346, 0.02279, -0.001728, 0.062304, -0.016965, + -0.001302, -0.01449, -0.041803, -0.034058, -0.197066, + -0.033655, -0.127217, -0.108681, -0.010571, -0.004705, + -0.015553, -0.086069, 0.034109, -0.101379, 0.002068, + -0.004003, -0.044637, -0.068617, 0.052228, -0.047812, + -0.043307, 0.035681, 0.042207, -0.055946, 0.055944, + -0.026792, -0.012601, -0.05671, -0.021094, 0.105842, + -0.025598, -0.078858, -0.013487, 0.030728, -0.031956, + 0.031444, 0.022763, 0.025364, 0.121366, 0.070736, + -0.084556, 0.098118, -0.024301, -0.058655, -0.043194, + -0.011752, -0.043781, 0.091051, -0.071201, -0.02098, + 0.082904, -0.031657, -0.088247, 0.066709, -0.079182, + -0.012151, 0.011796, -0.010589, 0.100656, 0.094539, + 0.035967, 0.025338, 0.071826, 0.009741, -0.040209, + 0.006866, -0.015095, -0.168469, -0.056133, 0.060145, + 0.04583, -0.068969, 0.034551, 0.015842, -0.092809, + 0.054699, 0.138744, 0.001726, 0.006927, 0.005167, + 0.016978, 0.046384, -0.060183, -0.040742, -0.072692, + -0.022489, -0.029728, -0.065018, -0.124741, 0.044927, + -0.029057, -0.037154, 0.031068, 0.060086, 0.009984, + 0.009311, -0.006957, -0.105508, 0.059637, -0.019564, + -0.068154, -0.066443, 0.000799, 0.028579, 0.097063, + 0.096936, 0.03023, -0.034623, -0.088918, 0.040334, + 0.019439, -0.050707, -0.003294, -0.028505, -0.053599, + 0.06246, -0.070688, -0.016465, -0.03568, 0.017378, + 0.009363, 0.048761, 0.043374, 0.039587, -0.023232, + -0.067033, 0.042663, 0.05407, -0.042797, -0.089391, + -0.030497, -0.050249, 0.059528, 0.089089, -0.029633, + 0.064125, -0.086614, -0.002005, 0.08062, 0.000502, + -0.00349, 0.097336, 0.099565, 0.015648, 0.006691, + 0.077668, 0.016572, 0.035404, -0.046026, 0.017237, + -0.048631, 0.009314, 0.141479, 0.017079, 0.043796, + -0.106474, 0.145951, 0.05774, 0.01125, -0.059443, + 0.027572, 0.02665, 0.008527, 0.002949, -0.03768, + -0.077991, -0.090617, 0.00342, -0.04601, 0.007354, + 0.019056, -0.128651, 0.016464, 0.004584, -0.030883, + -0.092069, 0.038976, -0.08184, 0.066695, -0.04734, + 0.003513, 0.040613, 0.046815, -0.023406, 0.062389, + 0.021759, 0.024928, -0.018922, -0.048006, 0.0638, + -0.014416, -0.050333, 0.042628, -0.114934, -0.10145, + 0.062139, 0.029295, -0.065908, 0.111463, 0.050781, + -0.022707, 0.135414, 0.003548, 0.134535, -0.048259, + -0.092344, -0.027727, 0.016343, -0.060786, -0.081502, + -0.005412, -0.026229, -0.143331, 0.052404, -0.077298, + -0.035919, -0.041968, -0.106108, -0.004369, 0.065028, + 0.09637, -0.053299, 0.043317, -0.049735, 0.049815, + 0.032324, 0.051309, -0.009607, -0.205917, 0.005023, + -0.054316, -0.022895, 0.099327, -0.006927, -0.076574, + -0.111024, 0.111026, 0.038381, -0.060368, 0.064238, + -0.034316, 0.026846, 0.02574, -0.076162, -0.163904, + 0.055955, -0.056885, 0.014831, -0.120715, 0.090938, + 0.035289, -0.036439, 0.060012, 0.080302, 0.036215, + 0.06525, 0.08303, -0.058784, 0.104826, -0.051805, + -0.011099, -0.00642, 0.053042, 0.024127, 0.092534, + 0.058569, -0.033442, 0.025186, -0.018222, 0.117744, + 0.044345, -0.042456, -0.043767, -0.021378, -0.121965, + 0.027371, 0.052731, -0.020316, 0.036912, 0.115357, + 0.03115, 0.041547, 0.059267, -0.039672, -0.086918, + -0.162369, 0.024801, 0.031725, 0.0834, -0.034463, + 0.000272, -0.008147, -0.002016, 0.131953, -0.092911, + -0.091944, -0.062864, -0.005221, 0.063647, -0.012658, + 0.042685, 0.067952, 0.038644, -0.153221, 0.096841, + 0.108299, 0.089446, -0.047164, 0.004196, -0.043268, + -0.035456, 0.050838, 0.070444, 0.084465, -0.07998, + -0.048916, 0.057726, 0.023894, 0.027653, 0.017775, + 0.015461, -0.030287, -0.022245, 0.052081, -0.150947, + -0.002682, -0.056774, -0.123366, -0.091754, 0.006536, + 0.006473, -0.143025, 0.05469, -0.043189, 0.03297, + 0.027446, 0.033127, -0.132722, -0.010417, -0.080097, + -0.018187, 0.001858, 0.11129, -0.090749, 0.059434, + -0.068738, 0.090679, -0.14507, -0.065277, 0.063514, + -0.003982, -0.056382, -0.003673, 0.015845, -0.073396, + 0.043688, 0.002836, 0.069211, 0.124852, -0.053313, + -0.040946, 0.07044, -0.107024, -0.019199, -0.033672, + -0.00144, 0.02168, 0.110595, -0.053452, -0.052426, + 0.035461, -0.028179, -0.049041, 0.02258, -0.010989, + -0.002913, -0.051691, -0.075881, 0.037241, 0.076377, + 0.034735, -0.031556, 0.073516, -0.001427, 0.016296, + -0.017537, 0.003346, -0.099774, -0.067624, -0.044257, + -0.018202, 0.030622, 0.012773, 0.046475, -0.121785, + -0.057265, 0.116179, -0.079916, 0.066396, 0.050104, + -0.013177, 0.057766, -0.047879, -0.109526, -0.146491, + 0.032675, -0.049318, -0.057045, -0.080068, 0.089621, + -0.046564, -0.029992, 0.040828, 0.029281, -0.037369, + -0.009731, -0.082145, -0.117622, 0.117077, 0.037369, + 0.00082, -0.106634, -0.007967, 0.000812, 0.140637, + 0.03653, 0.062121, -0.065504, -0.09493, 0.121336, + 0.01753, -0.01733, -0.040402, -0.018255, 0.010992, + 0.019746, -0.027564, 0.033588, 0.042466, -0.003143, + 0.013767, 0.084179, 0.033753, -0.017279, -0.009676, + -0.006452, 0.032645, 0.031852, -0.030975, -0.043384, + -0.005433, -0.015258, 0.053273, 0.054748, -0.064736, + 0.008959, -0.141223, -0.032957, -0.015079, 0.018198, + -0.001681, 0.143079, 0.076, 0.001037, -0.048744, + 0.022062, 0.02603, -0.008263, -0.050353, -0.023037, + -0.036477, -0.051733, 0.137823, -0.034438, -0.007573, + -0.004256, 0.064218, 0.075183, 0.095106, 0.026497, + 0.02636, 0.009791, -0.058039, 0.053315, -0.077817, + -0.033283, -0.081151, -0.05522, 0.004268, 0.017539, + -0.007329, -0.1172, 0.09322, 0.037359, 0.002718, + 0.010749, 0.018281, -0.0758, -0.024889, 0.00572, + 0.022129, 0.035613, 0.036187, 0.032246, 0.105439, + -0.073766, 0.016887, -0.059934, -0.049471, 0.07352, + -0.024041, -0.104642, 0.023557, -0.059746, -0.043871, + 0.022311, -0.00025, -0.074027, 0.198593, 0.102732, + 0.024478, 0.077658, -0.060042, -0.018229, -0.149648, + -0.009871, -0.105822, 0.007585, -0.161459, -0.041121, + -0.02146, 0.00902, -0.065018, 0.111801, -0.024953, + 0.074594, -0.026041, -0.062859, 0.009199, 0.069609, + 0.078672, -0.033414, 0.054128, 0.005408, -0.016273, + 0.052076, 0.10761, -0.067518, -0.0964, 0.033703, + -0.01435, -0.024676, 0.056254, -0.04377, -0.060847, + -0.004185, 0.07355, -0.05783, -0.016644, 0.029096, + 0.005755, 0.026472, 0.040449, -0.09195, -0.048538, + -0.034439, -0.107938, 0.090712, -0.117001, 0.04317, + -0.006505, -0.035277, 0.117316, 0.127002, 0.047906, + -0.001441, 0.118379, -0.132165, 0.00738, 0.023823, + -0.02012, -0.083725, 0.047284, 0.023795, 0.074123, + -0.013439, 0.024994, 0.060254, -0.06912, 0.166373, + -0.024228, -0.06315, -0.046506, -0.077202, -0.054592, + -0.006571, 0.010335, -0.006568, 0.003982, 0.075837, + 0.008643, 0.136339, -0.005502, 0.03391, -0.066379, + -0.127371, -0.006954, 0.03977, -0.070123, 0.060925, + -0.046386, -0.02642, -0.00528, 0.103509, -0.02231, + -0.00374, -0.014999, -0.03777, 0.080005, 0.025231, + -0.054995, 0.071017, 0.009442, -0.075737, 0.013441, + 0.051947, 0.027097, -0.070351, -0.055705, -0.021115, + 0.021387, 0.029232, 0.163331, -0.03238, 0.010008, + -0.011987, -0.028631, 0.002665, 0.01477, -0.009558, + -0.034325, 0.01583, -0.091253, -0.012677, -0.107378, + -0.034624, -0.047725, -0.10233, 0.042525, -0.006869, + 0.014048, -0.043127, 0.052384, -0.047473, 0.055102, + 0.009744, -0.033646, -0.081755, -0.001464, -0.016223, + -0.036697, -0.002279, 0.023279, -0.036221, 0.101478, + -0.058454, 0.065074, 0.003524, 0.00501, 0.097182, + -0.038171, -0.037943, -0.009994, -0.033355, -0.044552, + 0.041318, 0.065041, 9.2e-05, 0.100816, 0.029007, + -0.031803, 0.183537, -0.009617, -0.010544, -0.028465, + 0.0069, -0.014988, 0.09049, -0.174817, 0.027464, + 0.063314, -0.049281, -0.001567, 0.091421, -0.078603, + -0.004869, -0.063266, -0.001922, 0.069338, 0.081771, + 0.058737, 0.073195, 0.081676, -0.047808, -0.025797, + -0.004185, 0.033203, -0.125472, -0.108148, 0.031258, + 0.035192, 0.029957, 0.046675, 0.047238, -0.088197, + 0.033315, 0.114919, -0.04918, 0.025707, 0.053843, + 0.035182, 0.140206, -0.05866, -0.025978, -0.019658, + -0.014847, -0.021051, -0.034385, -0.121789, 0.173406, + -0.112251, -0.022333, 0.071206, 0.028998, 0.046468, + 0.067704, -0.026159, -0.158316, 0.014936, 0.040216, + -0.010137, -0.053492, 0.004935, -0.011277, 0.073852, + 0.091261, 0.114794, -0.01406, -0.051545, 0.077316, + 0.101258, -0.046137, 0.022994, -0.066767, -0.065537, + 0.049952, -0.043582, 0.012823, 0.009313, 0.036343, + 0.054885, 0.037796, 0.02194, 0.013211, 0.006019, + -0.099578, 0.058596, -0.045463, -0.015632, -0.087141, + -0.019273, -0.03314, 0.043796, 0.119057, -0.081813, + -0.021538, -0.070453, -0.052551, 0.077213, 9.4e-05, + 0.050268, 0.092271, 0.051688, -0.025224, 0.075437, + 0.027983, 0.069205, 0.031787, -0.099975, 0.004387, + -0.002747, -0.056567, 0.161394, 0.000164, 0.084189, + -0.124844, 0.050329, 0.009844, 0.055877, 0.055701, + 0.030479, 0.028843, -0.001076, -0.017173, -0.10277, + -0.038426, -0.133841, -0.03584, -0.072046, 0.020206, + 0.016438, -0.097885, 0.041857, 0.034601, 0.030422, + -0.089192, -0.014112, -0.052276, 0.012005, -0.029335, + -0.011331, 0.101833, 0.063827, 0.044288, 0.101597, + -0.034689, -0.027434, -0.017801, -0.079224, 0.067103, + -0.027456, -0.098034, 0.009448, -0.038986, -0.156729, + 0.085023, 0.033136, -0.021343, 0.110701, -0.011901, + -0.006484, 0.082023, -0.027094, 0.091208, -0.013163, + -0.012223, 0.005933, 0.010653, -0.098119, -0.005304, + -0.021061, -0.058077, -0.073035, 0.097856, -0.102847, + -0.035329, -0.092754, -0.101463, -0.048671, 0.055015, + 0.102145, 0.062017, 0.016002, 0.036489, 0.059, + 0.042861, 0.025447, -0.019735, -0.107841, -0.033752, + -0.043982, -0.067059, 0.051092, 0.025235, -0.147107, + -0.016269, 0.123009, 0.035894, -0.020453, 0.040013, + 0.015557, 0.015825, 0.080712, -0.06963, -0.149739, + 0.022006, -0.008848, 0.040169, -0.095688, 0.059575, + -0.030641, -0.061353, 0.046302, 0.104489, 0.043372, + -0.001579, 0.059737, -0.104073, 0.042342, -0.048611, + -0.013811, -0.056255, 0.107179, 0.057433, 0.084815, + 0.030217, 0.02236, -0.040342, -0.028775, 0.120588, + 0.04127, -0.045775, -0.030195, -0.106859, -0.104349, + 0.072418, -0.003603, -0.013072, 0.040728, 0.086869, + 0.091943, 0.066517, 0.024442, -0.030929, -0.03292, + -0.160336, -0.010347, -0.068458, 0.017458, 0.044823, + 0.050694, 0.067625, 0.040303, 0.113164, -0.038747, + -0.065558, -0.106357, -0.028352, 0.121488, 0.026548, + -0.00782, 0.054872, 0.094674, -0.099533, 0.005231, + 0.118132, 0.04278, -0.065079, 0.03144, 0.043229, + -0.050024, 0.015943, 0.073917, 0.034049, 0.010548, + -0.024979, 0.022639, 0.027795, 0.049491, 0.048762, + -0.002738, -0.010783, -0.027637, -0.006986, -0.104141, + -0.066719, -0.061742, -0.067028, -0.053057, -0.003478, + -0.050948, -0.122196, 0.022082, 0.002595, 0.015094, + 0.006014, 0.005784, -0.184537, -0.034872, -0.036104, + 0.055412, 0.006886, 0.103488, -0.063001, 0.096665, + -0.035533, 0.009847, -0.095114, 0.008588, 0.023736, + -0.034278, -0.11197, -0.041172, 0.03973, -0.102952, + 0.063775, 0.039273, 0.109863, 0.0918, 0.030306, + -0.082206, 0.089449, -0.058478, -0.029341, 0.038389, + 0.061057, -0.024711, 0.111044, -0.035079, -0.027985, + 0.01457, 0.002046, -0.031545, 0.058848, -0.0195, + -0.002475, -0.025589, -0.144358, 0.063478, 0.124927, + -0.014094, -0.01097, 0.031621, -0.040043, 0.004389, + 0.025003, 0.052397, -0.054526, -0.073469, 0.026795, + -0.024697, 0.024739, 0.118299, 0.014948, -0.132109, + 0.020192, 0.037815, -0.09027, 0.049313, 0.082764, + -0.022642, -0.006053, -0.038073, -0.057363, -0.107347, + 0.033166, -0.027556, -0.019765, -0.111958, 0.027773, + -0.063001, -0.052998, 0.019353, -0.009646, -0.01127, + 0.011872, -0.006508, -0.122226, 0.059824, 0.041779, + 0.016445, -0.03189, -0.03631, 0.013085, 0.091631, + 0.062866, 0.054501, -0.117523, -0.010907, 0.087026, + -0.014974, -0.03592, -0.048565, -0.019246, -0.043405, + -0.006959, 0.006211, 0.04237, 0.014603, -0.006435, + 0.019149, 0.078038, -0.020556, 0.018114, -0.036521, + -0.054036, 0.007325, 0.056349, -0.033497, -0.02596, + 0.050184, -0.066536, 0.091501, 0.071356, -0.049044, + -0.032263, -0.095268, -0.008784, 0.049033, 0.036929, + 0.020357, 0.152151, 0.040814, -0.063159, -0.024324, + -0.017084, 0.011876, -0.015442, -0.019811, -0.000366, + -0.0027, -0.072981, 0.109288, 0.007473, -0.049442, + -0.05404, 0.051947, 0.019359, 0.12916, 0.021981, + 0.002248, 0.035262, -0.023141, 0.064666, -0.078273, + -0.031663, -0.031343, -0.006058, -0.045421, 0.017466, + -0.067122, -0.130784, 0.067057, 0.05246, -0.041165, + -0.004411, 0.046453, -0.055461, 0.048162, -0.009687, + 0.02153, 0.007211, 0.104764, 0.079849, 0.086248, + -0.072791, 0.001112, -0.027964, -0.071233, -0.013339, + 0.007979, -0.118231, 0.076826, -0.060762, -0.084358, + -0.011447, 0.009765, 0.014163, 0.164784, -0.015892, + -0.020756, 0.152509, -0.014014, -0.041853, -0.117008, + -0.011755, -0.005766, -0.086896, -0.13965, -0.032342, + 0.025651, -0.007843, -0.039073, 0.103397, -0.042591, + -0.005971, -0.001324, -0.053945, -0.000716, 0.048977, + 0.130185, 0.028226, 0.061179, 0.024489, -0.021939, + -0.007019, 0.054336, -0.01004, -0.095411, 0.082406, + -0.03213, -0.015054, 0.033059, 0.002802, -0.080159, + -0.022452, 0.077426, -0.015314, 0.033583, 0.028479, + 0.023293, 0.035078, 0.006442, -0.110541, -0.106244, + -0.034737, -0.10414, -0.03457, -0.114316, 0.079382, + 0.006009, 0.003901, 0.080081, 0.055082, 0.012896, + 0.064981, 0.057219, -0.112986, 0.003906, -0.028414, + -0.012383, -0.054541, 0.077483, 0.004267, 0.123567, + 0.007369, 0.099856, 0.023273, -0.028194, 0.12203, + -0.036635, -0.126589, -0.034567, -0.028288, -0.06504, + 0.01428, 0.011435, -0.004867, 0.043901, 0.035395, + 0.028599, 0.075858, 0.11846, 0.070581, -0.051903, + -0.170905, 0.050352, 0.053514, -0.017139, 0.021748, + -0.09661, 0.008904, -0.001049, 0.078787, -0.101201, + -0.026229, -0.019757, -0.035771, 0.054142, 0.068041, + -0.020328, 0.099979, 0.096623, -0.046957, -0.001733, + 0.049586, 0.052458, -0.031724, -0.028332, -0.005418, + 0.04671, 0.014238, 0.133125, -0.005428, -0.080055, + -0.033226, 0.034007, 0.025272, 0.033924, -0.044662, + -0.03469, -0.079173, -0.160689, -0.153893, -0.228771, + -0.00245, -0.083966, -0.168294, 0.010694, -0.012167, + 4e-06, -0.044377, 0.023373, -0.077437, 0.012178, + -0.015899, -0.010828, -0.062847, 0.029927, -0.074557, + -0.053306, 0.049688, 0.057017, -0.022571, 0.015337, + -0.046545, 0.018895, -0.024848, -0.004424, 0.165442, + -0.060201, -0.098629, -0.06519, 0.036582, -0.038566, + 0.051453, 0.093478, 0.039619, 0.117535, 0.090386, + -0.029366, 0.108075, -0.016568, -0.093576, -0.048799, + -0.045599, -0.023619, 0.070072, -0.109294, 0.001548, + 0.076285, -0.091274, -0.068829, 0.000215, -0.046519, + -0.022512, -0.027067, 0.014905, 0.079017, 0.140699, + 0.061141, 0.009178, 0.097811, 0.033468, -0.006666, + 0.007163, -0.007578, -0.124238, -0.025271, 0.017581, + 0.042405, -0.034252, 0.06489, 0.0025, -0.139083, + 0.009733, 0.158179, 0.014474, 0.038913, 0.05629, + -0.004998, 0.075401, -0.030557, -0.038595, -0.04907, + -0.01468, -0.076306, -0.132365, -0.177693, 0.09176, + -0.057238, -0.072379, 0.050877, 0.051489, 0.028125, + 0.004991, 0.032621, -0.167359, 0.041002, -0.007072, + -0.086405, -0.042263, -0.019757, -0.011524, 0.066004, + 0.08567, 0.008071, -0.013614, -0.062142, 0.08328, + 0.000887, -0.07582, 0.008295, -0.020136, -0.016886, + 0.089657, -0.10626, -0.051491, -0.012687, 0.054778, + 0.011535, 0.086613, 0.053803, 0.027164, -0.023825, + -0.040009, 0.080987, 0.026309, -0.000334, -0.085288, + -0.024208, -0.08504, 0.096077, 0.120527, -0.044181, + 0.003034, -0.091142, 0.006471, 0.115971, -0.026358, + 0.003489, 0.083633, 0.109975, -0.029425, 0.061726, + 0.056115, -0.006711, 0.013158, -0.062917, -0.015029, + 0.003354, 0.031574, 0.119045, 0.022859, 0.023777, + -0.068292, 0.115604, 0.031617, 0.008953, 0.006943, + 0.01442, 0.008569, -0.031547, -0.006857, -0.05169, + -0.086683, -0.108339, 0.005093, -0.108646, -0.03472, + 0.054273, -0.096753, 0.050806, -0.021115, -0.025278, + -0.079997, 0.027008, -0.034211, 0.090949, 0.005678, + 0.019288, 0.042083, 0.062119, 0.019301, 0.040859, + -0.009113, 0.022427, -0.004019, -0.06089, 0.032884, + -0.012373, -0.037976, 0.017625, -0.079369, -0.050788, + 0.07972, -0.039347, -0.085324, 0.091044, 0.026653, + -0.063122, 0.099371, -0.024736, 0.084631, -0.100421, + -0.073313, 0.014317, 0.022555, -0.116051, -0.063966, + -0.009688, -0.063666, -0.131709, 0.016744, -0.135028, + -0.003708, -0.043685, -0.121631, -0.03693, 0.125776, + 0.084333, 0.010114, 0.071231, -0.010395, 0.059391, + 0.01776, 0.033034, -0.018996, -0.13054, 0.025758, + -0.018261, -0.060044, 0.127025, -0.032724, -0.107299, + -0.064538, 0.090073, -0.010186, -0.066127, 0.107025, + -0.01094, 0.003083, 0.01903, -0.023935, -0.140176, + 0.003549, -0.042402, -0.010695, -0.185915, 0.060835, + 0.005405, -0.013822, 0.029205, 0.079338, 0.068155, + 0.071485, 0.030282, -0.087207, 0.07348, -0.02794, + 0.004896, -0.033246, 0.072637, 0.018017, 0.054712, + 0.026184, -0.005287, 0.034456, -0.036753, 0.079232, + 0.072707, 0.004506, -0.039353, -0.01556, -0.071466, + 0.010257, 0.067446, -0.006598, 0.047396, 0.072218, + 0.023405, 0.082663, 0.015319, -0.035436, -0.075461, + -0.124036, -0.032046, 0.060837, 0.010231, -0.053024, + 0.0228, 0.042891, -0.041549, 0.132395, -0.09533, + -0.077091, -0.058554, -0.070632, 0.04757, 0.031856, + 0.000127, 0.114996, 0.05866, -0.092472, 0.064503, + 0.09645, 0.0662, -0.001059, 0.039487, -0.032859, + -0.065721, 0.001601, 0.088037, 0.059828, -0.047411, + -0.077714, 0.010275, 0.013629, 0.003304, 0.005407, + 0.000665, 0.012927, -0.077525, 0.069202, -0.157417, + 0.014547, -0.095965, -0.087546, -0.067375, -0.027867, + 0.005458, -0.095839, 0.105294, -0.044892, 0.045151, + -0.001349, 0.038356, -0.127152, -0.080503, -0.105423, + -0.018484, 0.008439, 0.104398, -0.027959, 0.082086, + -0.020605, 0.042785, -0.109139, -0.025958, 0.079733, + 0.036289, -0.083773, -0.033819, 0.032566, -0.065556, + 0.006659, 0.00209, 0.097027, 0.115715, -0.013271, + -0.067514, 0.128365, -0.089129, 0.02616, -0.040584, + -0.002443, -0.017254, 0.129204, -0.110078, -0.064943, + 0.089215, -0.022299, -0.034959, 0.022446, -0.019254, + -0.0389, -0.069862, -0.07054, 0.069949, 0.111993, + -0.006311, -0.009057, 0.094278, -0.014932, 0.003657, + -0.019323, 0.026145, -0.062611, -0.073753, -0.007182, + 0.014101, 0.015776, 0.052537, 0.064728, -0.160187, + -0.005122, 0.076356, -0.104763, 0.091493, 0.020225, + -0.000433, 0.062698, -0.060457, -0.14754, -0.066168, + 0.007195, -0.061498, -0.037801, -0.039763, 0.059551, + -0.02841, -0.07451, 0.057667, 0.020584, -0.04251, + -0.025311, -0.037825, -0.18801, 0.077423, 0.030749, + -0.025465, -0.067541, 0.003073, -0.049778, 0.127789, + 0.002786, 0.120009, -0.067812, -0.026565, 0.111272, + 0.023219, -0.024403, -0.014507, -0.048624, 0.022163, + 0.014596, -0.052136, 0.00158, 0.064595, 0.017963, + 0.02133, 0.098862, -0.009253, -0.041062, 0.008903, + -0.013829, 0.031967, 0.076571, -0.005348, -0.04401, + 0.031252, 0.000369, 0.036818, 0.072854, -0.038569, + 0.004161, -0.128017, -0.053152, 0.050896, -0.015212, + -0.036159, 0.097995, 0.068397, -0.048472, -0.056131, + -0.01192, 0.059188, 0.010215, -0.061152, -0.011717, + -0.035949, -0.057039, 0.090859, -0.029682, 0.041466, + -0.025106, 0.131191, 0.059327, 0.085383, 0.021699, + 0.04923, 0.03663, -0.077086, 0.017806, -0.08879, + 0.00404, -0.069533, -0.026785, 0.009666, 0.014017, + -0.055897, -0.096299, 0.120693, 0.029995, 0.032602, + -0.001365, 0.034015, -0.053512, 0.001573, -0.01917, + 0.003956, 0.006452, 0.067313, 0.028301, 0.160615, + -0.053111, 0.01399, -0.02706, -0.013638, 0.039376, + -0.054462, -0.096553, 0.079994, -0.043791, -0.025051, + -0.003222, 0.019418, -0.049525, 0.151136, 0.034123, + 0.055117, 0.058918, -0.017393, 0.026169, -0.12638, + -0.019008, -0.028939, -0.014027, -0.173373, -0.032841, + -0.00337, 0.03968, -0.118311, 0.114094, -0.041869, + 0.041121, -0.038391, -0.096074, -0.032479, 0.060222, + 0.063968, -0.024528, 0.018158, -0.009892, -0.043882, + -0.005004, 0.1298, -0.025438, -0.121186, 0.04986, + 0.010448, -0.040388, 0.061853, -0.017304, -0.035088, + -0.008678, 0.061476, -0.039493, -0.005055, 0.079169, + 0.046134, 0.00977, 0.068294, -0.078965, -0.043792, + -0.030529, -0.053845, 0.053853, -0.140682, 0.111461, + 0.003549, -0.014939, 0.148955, 0.072861, 0.004332, + 0.015386, 0.062006, -0.122325, -0.032529, 0.010241, + -0.047982, -0.12644, 0.05584, 0.067128, 0.101189, + -0.00263, 0.031969, 0.046076, -0.080194, 0.10474, + -0.033486, -0.077818, -0.058697, -0.095258, -0.111074, + 0.037236, 0.011711, 0.001113, -0.005664, 0.048588, + 0.041131, 0.098257, 0.033126, 0.029317, -0.095311, + -0.071555, -0.039999, 0.026678, -0.072182, 0.035031, + -0.007997, -0.048174, -0.006796, 0.075959, -0.05206, + -0.007645, 0.037076, -0.035574, 0.085576, 0.034126, + -0.050676, 0.05143, 0.031999, -0.134308, -0.001489, + 0.084564, -0.018394, -0.09741, -0.042931, -0.025608, + -0.025489, 0.041919, 0.142482, 0.004617, -0.041085, + -0.028816, -0.015527, -0.031005, 0.028405, -0.02224, + -0.067737, -0.025241, -0.052578, 0.012322, -0.120556, + 0.016278, -0.081744, -0.09916, 0.025144, 0.025441, + 0.003176, -0.073871, 0.031718, -0.028622, 0.029031, + 0.01791, -0.030693, -0.104215, -0.015422, -0.065738, + -0.048346, -0.012847, 0.046849, -0.008621, 0.058771, + -0.054495, 0.031597, -0.038844, 0.043138, 0.092588, + -0.071371, -0.059093, -0.001197, 0.001766, -0.074762, + 0.02947, 0.089616, 0.005009, 0.052977, 0.015899, + -0.045424, 0.158466, -0.038717, -0.032506, 0.028687, + 0.011435, -0.006772, 0.047605, -0.144659, -0.031229, + 0.073577, 0.01153, -0.008172, 0.058883, -0.088412, + 0.033615, -0.03412, -0.030701, 0.101215, 0.096645, + 0.027368, 0.041249, 0.081502, -0.02544, 0.007592, + 0.059893, 0.012106, -0.112009, -0.114692, 0.016397, + 0.087068, 0.016199, 0.051263, 0.011915, -0.085364, + 0.026046, 0.145258, -0.047521, 0.077134, -0.000345, + 0.034532, 0.099801, -0.087591, -0.059719, -0.058671, + 0.022737, -0.001887, -0.107049, -0.116757, 0.134115, + -0.055403, 0.005157, 0.067618, 0.081074, 0.071787, + 0.063802, -0.00343, -0.106491, 0.017543, 0.002214, + -0.013785, -0.032962, 0.010084, 0.024325, 0.045963, + 0.059883, 0.072282, -0.008608, -0.015127, 0.048225, + 0.041752, -0.068845, 0.012227, -0.090748, -0.035309, + 0.045353, -0.078624, -0.019489, 0.035531, 0.058571, + 0.045414, 0.039032, -0.011106, 0.048787, -0.025336, + -0.084893, 0.031896, 0.01085, 0.012526, -0.053205, + 0.016952, -0.044041, 0.068766, 0.097328, -0.122229, + 0.027016, -0.051759, -0.057246, 0.074566, 0.006201, + 0.069904, 0.100068, 0.076124, 0.004278, 0.029466, + 0.045229, 0.055683, 0.01879, -0.067806, 0.039373, + 0.029179, -0.036787, 0.129921, -0.028993, 0.037711, + -0.105011, 0.138747, -0.00437, 0.05208, 0.050835, + 0.025511, -0.002962, 0.007852, -0.055234, -0.075055, + 0.00046, -0.089231, -0.030467, -0.080347, 0.007488, + 0.06746, -0.076368, 0.084991, 0.039544, 0.033391, + -0.044318, 0.00639, -0.079387, -0.002909, -0.029708, + -0.047882, 0.06304, 0.065719, 0.021811, 0.070945, + -0.007571, -0.001302, -0.064119, -0.068005, 0.05104, + -0.017747, -0.063938, 0.018673, -0.038391, -0.099966, + 0.057475, -0.007669, 0.009384, 0.109283, 0.012248, + -0.048858, 0.092498, 0.011967, 0.061525, -0.028819, + -0.015131, -0.02416, -0.03322, -0.101648, -0.01798, + -0.003342, -0.049829, -0.125096, 0.128241, -0.047377, + -0.028943, -0.109072, -0.066133, -0.015454, 0.098334, + 0.053371, 0.011324, 0.042781, 0.044313, 0.06251, + 0.098408, 0.06541, -0.040693, -0.116351, -0.032327, + -0.013634, -0.058591, 0.081507, 0.042019, -0.09977, + -0.018275, 0.084624, -0.007512, -0.041113, 0.054203, + 0.017879, -0.029747, 0.059865, -0.048281, -0.111513, + -0.022478, 0.002059, 0.022383, -0.12536, 0.058216, + 0.002386, -0.0816, 0.049288, 0.157428, 0.057724, + 0.005046, 0.102125, -0.083473, 0.044059, -0.094864, + 0.03912, -0.063306, 0.057341, 0.060519, 0.107383, + 0.007076, -0.009373, -0.012555, -0.06663, 0.117121, + 0.025254, -0.008796, -0.062102, -0.083164, -0.079007, + 0.084839, 0.042308, -0.055353, 0.036386, 0.132641, + 0.084464, 0.056288, -0.011636, -0.059554, -0.087748, + -0.147377, -0.052414, -0.010203, -0.009159, -0.018829, + 0.009621, 0.061633, 0.015716, 0.086332, -0.061465, + -0.011833, -0.062998, -0.021168, 0.125194, 0.045025, + 0.052316, 0.02572, 0.095155, -0.093252, 0.02872, + 0.056113, 0.063321, -0.045315, 0.025199, 0.023591, + -0.070481, 0.07235, 0.092458, 0.047973, -0.025439, + -0.001281, 0.021028, 0.034576, 0.084779, 0.006867, + -0.010323, -0.04633, -0.009172, 0.030485, -0.117679, + -0.021782, -0.034737, -0.086292, -0.045885, 0.009655, + -0.037167, -0.123331, 0.017291, -0.028319, 0.071447, + -0.05718, -0.032912, -0.139418, -0.025966, -0.039305, + 0.009411, -0.054017, 0.076307, -0.060252, 0.110087, + -0.061366, 0.038897, -0.098107, 0.046119, 0.043021, + -0.02913, -0.096885, 0.007623, 0.090513, -0.097416, + 0.053264, 0.058296, 0.054372, 0.060769, 0.015586, + -0.067956, 0.059996, -0.03785, 0.005986, 0.000778, + 0.045873, -0.065546, 0.0779, -0.085638, 0.000698, + 0.027694, -0.021241, -0.002777, 0.034509, -0.048173, + 0.009988, 0.001008, -0.077434, 0.026002, 0.13949, + 0.00891, 0.007791, 0.059292, -0.057047, 0.014127, + -0.022959, 0.08571, -0.068087, -0.081561, 0.005935, + 0.007577, 0.061544, 0.076542, 0.00166, -0.113279, + 0.024973, 0.08675, -0.061674, 0.095059, 0.089352, + -0.024436, 0.024181, -0.016117, -0.073634, -0.067986, + 0.074701, -0.046868, -0.054634, -0.092485, 0.006662, + -0.033256, -0.053774, 0.049001, -0.002339, 0.013545, + -0.006432, -0.012089, -0.086842, 0.104105, 0.061991 +}; + /* codebook/lspjvm3.txt */ +static const float codes2[] = { + 0.007066, 0.075781, -0.070082, -0.092014, -0.066477, + 0.09051, 0.106622, 0.025911, -0.01676, 0.003724, + -0.024628, 0.058332, 0.012876, 0.059557, -0.002092, + -0.065092, -0.096975, -0.041837, -0.002432, 0.058918, + 0.014358, 0.080049, -0.008803, -0.002091, -0.097584, + 0.085323, -0.026053, -0.086585, -0.009541, 0.130555, + 0.045391, 0.037557, 0.074726, -0.050453, 0.033517, + -0.035576, -0.084211, -0.08643, 0.00891, -0.072674, + -0.098699, -0.02454, -0.048972, -0.066975, -0.048791, + 0.032184, 0.070992, -0.014416, 0.141892, -0.044249, + -0.108921, -0.02045, 0.115988, 0.011287, -0.026273, + 0.024341, 0.138519, -0.036467, 0.020684, 0.074258, + -0.053563, 0.077463, 0.072166, 0.032112, -0.079303, + -0.025039, 0.079675, 0.094211, -0.115754, 0.038892, + 0.050897, -0.024639, 0.057826, -0.110429, 0.071184, + 0.015309, -0.034027, -0.055726, 0.043179, -0.063089, + 0.043359, -0.011698, 0.006637, 0.002751, 0.03011, + -0.001261, 0.11147, 0.043277, -0.004205, -0.021599, + -0.005698, 0.058842, 0.168422, 0.059313, -0.007971, + -0.087599, 0.073891, -0.083238, 0.099279, -0.017364, + -0.018429, 0.01404, -0.014864, -0.111512, 0.08945, + -0.028498, -0.087983, -0.07732, -0.062602, 0.000328, + -0.027152, -0.093796, 0.111381, -0.018603, 0.092394, + -0.007256, 0.025391, 0.011454, 0.012802, -0.04168, + 0.008078, 0.020905, -0.105401, -0.083265, 0.027756, + -0.04963, -0.044085, -0.051424, 0.104125, -0.000779, + -0.063079, -0.130699, 0.0705, 0.033468, -0.019802, + -0.061011, 0.094839, -0.040122, 0.118409, 0.05695, + 0.086391, -0.006615, 0.045337, -0.04419, -0.106474, + -0.081912, 0.067557, -0.031649, -0.014437, 0.057585, + -0.121755, -0.049113, 0.057109, -0.049872, 0.044104, + 0.064705, -0.091589, 0.037286, -0.048606, -0.045398, + 0.003456, 0.05723, 0.006262, -0.055206, -0.063871, + -0.005249, 0.081783, 0.134969, -0.002331, 0.052643, + -0.093346, 0.072093, 0.116025, -0.031453, -0.006012, + -0.038574, -0.030841, 0.010288, 0.02442, 0.051657, + -0.086584, 0.046381, 0.00541, 0.052622, -0.072741, + 0.079023, 0.078099, -0.093912, 0.005477, -0.006721, + 0.100232, -0.017587, 0.044819, 0.036655, 0.02158, + -0.006829, -0.050076, -0.00302, 0.088246, 0.01356, + -0.01569, 0.012477, -0.052595, -0.048861, -0.033688, + 0.055615, 0.092298, -0.066194, 0.016416, -0.066059, + 0.046976, 0.003023, 0.104646, 0.109136, 0.018293, + -0.016507, -0.006859, 0.004326, 0.070843, 0.14075, + 0.025774, 0.03473, -0.07959, 0.050054, -0.10795, + 0.002378, 0.097498, 0.027111, -0.122953, -0.002423, + -0.020539, -0.063263, -0.095493, -0.157361, -0.039183, + 0.025721, 0.026897, -0.0012, 0.033997, -0.001749, + 0.061593, -0.013053, -0.106317, -0.06819, 0.046352, + -0.05606, 0.157084, -0.049365, 0.053959, -0.051065, + -0.047672, 0.08157, 0.064342, -0.030705, -0.070806, + -0.076503, -0.059471, 0.012419, 0.073968, -0.026179, + -0.038473, 0.059013, -0.035783, -0.030057, -0.036346, + -0.052692, -0.015346, -0.022687, -0.035279, 0.013314, + 0.068397, -0.046609, -0.009593, -0.040796, 0.157438, + -0.07536, -0.110464, 0.031839, -0.029035, -0.015222, + 0.041013, -0.099212, -0.10892, -0.008627, 0.012095, + 0.020855, 0.009935, -0.086917, 0.058827, -0.006536, + 0.022104, -0.005013, 0.003496, 0.046663, -0.051061, + -0.036803, -0.067317, -0.007075, 0.18087, -0.027434, + -0.025056, -0.039341, -0.073918, -0.00318, -0.11093, + -0.042711, 0.005519, -0.035005, -0.088419, 0.170942, + 0.001503, -0.121485, 0.066383, -0.067346, 0.005643, + 0.080088, -0.042562, -0.006668, -0.036538, 0.020683, + 0.042848, 0.027852, -0.029088, -0.156468, 0.006503, + 0.037716, 0.032082, 0.038416, 0.021835, -0.106963, + -0.043017, 0.018166, 0.070409, -0.005426, -0.035585, + -0.111071, -0.039986, 0.05043, 0.035157, 0.066902, + -0.040684, 0.060527, 0.036225, 0.002527, -0.015087, + 0.059243, 0.021268, -0.010682, -0.018434, 0.059128, + 0.111314, -0.05407, 0.105744, -0.051476, -0.01297, + -0.000358, -0.099249, -0.077385, 0.069924, -0.039101, + -0.072139, -0.049069, -0.088018, 0.006144, 0.000712, + 0.08103, 0.021987, -0.046031, 0.058087, -0.00132, + -0.046851, -0.011062, 0.108321, -0.001146, -0.071193, + 0.044973, -0.002915, -0.003323, 0.041735, 0.094566, + 0.05353, 0.035927, 0.100282, 0.059082, -0.054059, + -0.012158, -0.035417, 0.020412, -0.073193, 0.059296, + -0.040489, -0.09525, -0.003821, -0.084904, 0.053925, + 0.109183, -0.005862, -0.036538, 0.080962, -0.040647, + 0.02007, 0.057778, -0.020197, -0.079626, -0.003186, + -0.050855, 0.128185, 0.034731, 0.05746, -0.035236, + -0.057096, -0.001238, 0.122018, -0.071204, -0.047253, + -0.051767, 0.048301, -0.052678, 0.02599, -0.017481, + -0.029379, 0.030738, 0.047207, -0.047864, -0.033561, + 0.029884, -0.091175, -0.085446, -0.02614, 0.092628, + 0.067706, -0.085617, 0.081433, 0.047305, 0.031945, + -0.048728, -0.040387, 0.046206, 0.010578, -0.037639, + 0.011328, -0.042458, -0.149597, 0.033882, -0.061869, + 0.0088, 0.057754, -0.095876, 0.03823, 0.096876, + -0.033487, -0.141669, -0.014172, 0.028439, -0.092764, + -0.053714, 0.086926, 0.034786, 0.136053, -0.005569, + 0.028753, 0.00963, 0.044114, -0.050365, -0.066224, + 0.006017, 0.014348, 0.024471, 0.000489, 0.067234, + -0.021678, -0.11876, 0.036349, -0.040295, 0.076358, + -0.008444, -0.086082, -0.044018, -0.025804, 0.028971, + -0.009233, 0.053026, -0.035341, -0.182193, -0.102515, + 0.08921, 0.066812, 0.032417, 0.046882, -0.034815, + -0.052293, 0.022814, 0.129622, 0.128232, -0.012105, + -0.087084, 0.004762, 0.086538, 0.046566, 0.098359, + -0.018713, 0.039204, -0.021707, -0.06011, -0.117527, + -0.005459, 0.060994, -0.057718, -0.021783, 0.035154, + 0.100557, -0.01547, -0.025818, 0.00845, 0.051535, + -0.001388, -0.11461, -0.057903, 0.041862, 0.061778, + 0.045701, -0.078563, -0.070166, -0.04845, -0.08853, + 0.021375, -0.004598, -0.09071, -0.009399, -0.073952, + -0.035575, -0.05028, 0.11478, 0.137866, 0.065234, + 0.003594, -0.066802, -0.144989, 0.166201, 0.039564, + -0.022457, -0.03009, 0.016187, 0.115443, -0.097331, + -0.019139, 0.09944, 0.002198, -0.030953, 0.021099, + -0.045399, -0.046871, 0.022533, -0.064657, 0.005776, + 0.049063, -0.028478, 0.019268, 0.054265, 0.028042, + 0.045559, -0.005541, -0.01441, -0.024165, -0.054976, + -0.073258, 0.084205, 0.036077, -0.068683, 0.004708, + -0.085228, 0.001234, 0.046261, -0.050496, -0.028227, + -0.086828, -0.001218, 0.021865, 0.003791, -0.000568, + -0.088733, -0.040041, -0.035891, -0.054915, 0.073463, + -0.132031, -0.012844, -0.068544, 0.013052, 0.087335, + 0.038603, -0.115382, -0.010433, -0.007113, 0.095126, + -0.047378, -0.081353, 0.018021, -0.021156, -0.120774, + 0.040038, 0.007633, -0.088728, -0.009928, 0.020142, + 0.052024, -0.021063, -0.118121, 0.102739, -0.055837, + 0.005253, -0.061924, 0.06368, -0.014512, -0.020259, + 0.029493, -0.013435, -0.020638, 0.089342, 0.001092, + -0.046491, -0.145634, -0.083159, -0.158142, -0.279281, + 0.003611, 0.055863, -0.064655, -0.088773, 0.089283, + -0.029619, -0.089949, 0.017197, -0.066633, -0.052347, + 0.090828, -0.087551, 0.000338, 0.085238, -0.005313, + 0.096211, 0.071381, -0.076546, -0.077927, -0.040864, + 0.062936, 0.041559, 0.016235, -0.017513, 0.014773, + -0.025734, 0.028586, 0.070292, 0.055794, -0.026131, + -0.076954, -0.082228, 0.043947, -0.035921, 0.152668, + -0.04951, 0.023159, 0.008506, -0.044773, -0.160358, + 0.024984, -0.025587, -0.071627, -0.038376, 0.088478, + 0.120568, 0.046723, 0.086731, 0.000695, -0.015751, + -0.027837, -0.160937, -0.095031, 0.036271, -0.009061, + -0.015078, -0.036281, -0.103665, -0.058258, -0.049573, + 0.022021, 0.108296, -0.002586, 0.065655, -0.018584, + -0.046441, -0.031018, 0.06735, 0.014328, 0.00886, + -0.000245, 0.0634, -0.00181, 0.043515, 0.090344, + -0.063845, 0.020485, 0.079401, 0.070558, -0.116428, + 0.032628, 0.068949, 0.052238, -0.04453, 0.096813, + 0.029911, -0.008814, 0.044352, -0.168172, 0.009604, + 0.055828, -0.100739, -0.026013, 0.021193, -0.051425, + 0.035891, -0.004085, 0.030216, -0.060801, 0.037202, + 0.007262, 0.120686, 0.026846, 0.058464, -0.100792, + -0.009176, 0.027589, 0.123957, -0.011283, -0.025744, + -0.105081, 0.118244, -0.042122, -0.025404, 0.000873, + -0.012703, 0.084159, -0.067539, -0.140536, 0.041637, + -0.014485, -0.043382, -0.048004, -0.075416, 0.054401, + -0.018651, -0.032908, 0.164231, -0.053236, 0.033946, + -0.021681, -0.012655, -0.037049, -0.001613, -0.053393, + -0.014635, 0.017954, -0.116115, -0.027232, 0.034005, + -0.035376, 0.026492, -0.03725, 0.070733, 0.074835, + -0.021378, -0.14298, 0.123195, 0.003699, 0.025398, + 0.015629, 0.07737, 0.032623, 0.12158, 0.0971, + 0.000946, -0.056355, 0.042065, 0.008184, -0.081824, + -0.101937, 0.065473, 0.00336, 0.069241, 0.073002, + -0.053844, -0.044301, 0.080351, -0.091833, 0.044288, + 0.007447, -0.120723, -0.013806, -0.023636, -0.064616, + 0.030556, 0.07263, 0.074428, -0.087759, -0.02644, + 0.06484, 0.049162, 0.091053, 0.023891, 0.033811, + -0.027746, 0.116392, 0.106126, -0.056644, -0.014781, + 0.036137, -0.002632, 0.055512, 0.070077, 0.067819, + -0.030625, 0.053772, -0.078457, -0.021351, -0.113011, + 0.052797, 0.044875, -0.077269, -0.009867, 0.101493, + 0.073477, -0.024103, 0.049145, -0.004706, -0.025211, + -0.053731, -0.049009, -0.035786, 0.05443, 0.046515, + 0.025154, -0.043569, -0.034789, -0.05861, 0.006931, + 0.012049, 0.046809, -0.129441, 0.025541, -0.030933, + 0.000297, -0.054058, 0.179837, 0.081515, 0.004932, + -0.028445, -0.073753, 0.010629, 0.080042, 0.09871, + -0.014017, 0.057597, 0.00101, 0.071658, -0.06757, + 0.074384, 0.110366, -0.018121, -0.108754, 0.037793, + 0.028041, -0.047508, -0.031359, -0.098913, -0.036486, + -0.017311, -0.001279, -0.013694, 0.051968, 0.036512, + 0.088201, 0.031155, -0.043442, -0.065045, 0.023486, + 0.027, 0.104768, -0.015176, -0.038754, -0.004178, + 0.003732, 0.062166, 0.085438, -0.077368, -0.101645, + -0.118347, 0.007589, -0.056489, 0.082268, 0.020253, + -0.035623, 0.034235, -0.099354, -0.061237, -0.024285, + 0.005441, -0.039694, -0.025957, -0.004411, 0.049903, + 0.00304, 0.036243, 0.023552, -0.007334, 0.128963, + -0.077727, -0.059175, -0.019437, -0.024872, 0.004339, + 0.084006, -0.076605, -0.102261, 0.036714, -0.035205, + -0.007642, -0.005125, -0.030525, 0.09639, -0.053138, + -0.002192, -0.024851, 0.050645, 0.04149, -0.043183, + 0.046796, -0.050894, 0.055023, 0.133834, -0.024013, + 0.000872, -0.057072, -0.00063, 0.04207, -0.129339, + -0.064283, 0.037836, -0.066393, 0.004438, 0.125379, + -0.062213, -0.067468, 0.090177, -0.046094, -0.025725, + 0.079101, -0.074909, -0.04373, -0.073483, 0.069672, + -0.020413, -7.9e-05, -0.049725, -0.120751, -0.04698, + 0.039894, 0.072305, 0.009798, 0.005613, -0.045217, + 0.006862, 0.036285, 0.074819, -0.006747, 0.015144, + -0.071562, 0.012324, -0.001082, 0.014835, 0.07996, + -0.027804, 0.103358, -0.017203, 0.014914, -0.056687, + 0.030827, 0.028076, 0.003395, -0.073255, 0.11031, + 0.056498, -0.044893, 0.110122, -0.109058, -0.052302, + -0.001604, -0.089977, -0.060548, 0.107808, 0.025463, + -0.070203, -0.000513, -0.123913, 0.046247, -0.085392, + 0.096343, 0.09589, -0.06495, 0.070363, 0.034272, + 0.037773, -0.07695, 0.124858, -0.009008, -0.010115, + 0.083868, 0.051242, 0.039149, 0.015185, 0.083375, + 0.029773, -0.045961, 0.100395, 0.003743, -0.138294, + -0.041755, 0.010806, 0.057797, -0.147374, 0.095858, + -0.009929, -0.103347, -0.03231, -0.11056, 0.121377, + 0.145244, 0.017079, -0.080587, 0.020516, -0.044939, + -0.010477, 0.038347, -0.003466, -0.001618, 0.0196, + -0.021762, 0.125482, 0.011074, 0.065815, 0.040298, + 0.009202, -0.051686, 0.129684, -0.131135, 0.044536, + 0.009313, 0.102518, -0.075351, 0.054338, 0.020273, + -0.045753, 0.031345, 0.000407, -0.097294, -0.000416, + -0.007466, -0.044972, -0.078744, 0.042414, 0.066624, + 0.030318, -0.067852, 0.061416, -0.028992, 0.056606, + 0.004038, -0.036253, -0.014279, 0.023123, -0.007832, + -0.000137, -0.027684, -0.127648, -0.007713, -0.008746, + -0.0265, 0.049032, -0.183319, 0.059107, 0.0665, + 0.016902, -0.093331, 0.090129, 0.016648, -0.083492, + -0.023669, -0.010473, 0.027614, 0.145068, 0.000681, + 0.044133, -0.035809, 0.005668, -0.090461, -0.090732, + -0.033927, 0.042997, 0.0217, -0.046955, 0.044487, + -0.026444, -0.061011, 0.01011, -0.023804, 0.030427, + -0.015195, -0.155603, -0.016584, 0.021461, -0.003528, + -0.059784, 0.032214, 0.000847, -0.098859, -0.07898, + 0.043188, 0.066433, 0.062309, 0.144507, 0.006865, + -0.068953, 0.046698, 0.099369, 0.043354, -0.014309, + -0.033202, -0.00295, 0.040734, 0.083454, 0.039319, + 0.051358, 0.006074, -0.073465, -0.090554, -0.120787, + -0.040676, 0.092412, -0.085151, -0.021699, 0.005813, + 0.103135, 0.024964, 0.025832, -0.075982, 0.035699, + -0.02731, -0.153007, 0.03642, 0.0576, 0.08163, + 0.001605, -0.054191, -0.033043, -0.01439, -0.071383, + 0.03618, 0.03586, -0.04698, 0.038541, -0.044757, + -0.078032, -0.029878, 0.078183, 0.082251, 0.010549, + 0.053317, -0.038231, -0.06561, 0.055798, 0.037504, + 0.076317, -0.027605, 0.010349, 0.095361, -0.088636, + 0.049089, 0.113316, 0.051084, 0.038589, 0.03433, + -0.055948, -0.037217, -0.015418, -0.139976, 0.036306, + 0.039306, -0.009889, -0.04491, 0.016559, -5e-05, + 0.106073, 0.01528, -0.002563, -0.109085, -0.048475, + -0.035319, 0.16386, 0.032981, -0.044932, 0.003227, + -0.123233, -0.010638, 0.055479, -0.003666, -0.072249, + -0.111158, 0.065365, 0.010691, 0.039119, -0.001837, + -0.118729, 0.06147, -0.002077, -0.033335, -0.060165, + -0.026081, -0.001806, -0.079616, -7.5e-05, 0.080598, + 0.032908, -0.03514, -0.003136, -0.029024, 0.094622, + -0.075773, -0.022898, -0.014817, 0.058393, -0.111505, + 0.036794, -0.01576, -0.112602, 0.030323, 0.085897, + -0.020834, 0.056079, -0.103762, 0.117671, -0.041205, + 0.041684, -0.084336, 0.034186, 0.011973, -0.006313, + 0.040836, -0.035709, 0.03417, 0.122672, 0.090973, + -0.053182, -0.059371, 0.091017, -0.090998, -0.116986, + 0.001405, 0.138364, 0.017107, -0.064076, 0.103486, + -0.031142, -0.030068, 0.046547, -0.133471, -0.042055, + 0.140418, -0.125084, 0.035218, -0.001162, -0.02113, + -0.012034, 0.097413, -0.079006, -0.03903, -0.054011, + 0.143887, 0.078835, -0.000601, -0.021173, -0.039895, + -0.02505, 0.075865, 0.039221, 0.032458, 0.038206, + -0.038873, -0.085003, -0.032736, -0.026956, 0.113525, + -0.023933, 0.120794, -0.003862, -0.026459, -0.138724, + 0.089559, 0.029002, -0.052098, -0.085692, 0.115174, + 0.083497, 0.024179, 0.119021, -0.067541, 0.019047, + -0.02772, -0.086083, -0.055329, 0.020087, -0.027086, + -0.047858, -0.051975, -0.035205, -0.059342, -0.068582, + 0.058936, 0.044141, -0.080315, 0.119744, -0.046518, + -0.064588, -0.027212, 0.147823, 0.032404, 0.01669, + 0.024302, 0.08556, -0.001525, 0.016469, 0.038891, + -0.020146, 0.019943, 0.045067, 0.03807, -0.086274, + -0.025769, 0.044192, 0.102141, -0.064765, 0.055849, + 0.048803, -0.030066, -0.00922, -0.116655, 0.068295, + 0.04758, -0.076138, -0.070307, 0.047582, -0.111342, + 0.004656, -0.004452, 0.029703, -0.004259, 0.01113, + 0.014446, 0.166086, 0.059565, 0.000985, -0.052607, + 0.013251, 0.094476, 0.106216, 0.016715, -0.025581, + -0.101244, 0.072897, -0.114526, 0.024681, 0.010784, + -0.051759, 0.032389, -0.050202, -0.083316, 0.052334, + -0.0351, -0.116721, -0.110336, -0.053391, 0.065541, + -0.02979, -0.020457, 0.135285, -0.004142, 0.111508, + -0.030936, 0.018549, -0.016034, 0.018572, -0.084336, + -0.048615, -0.018739, -0.096815, -0.090162, 0.01941, + -0.040821, -0.009925, -0.097427, 0.091891, 0.031793, + -0.024598, -0.132848, 0.078353, 0.089339, -0.068562, + -0.020779, 0.040974, -0.055675, 0.169131, 0.029649, + 0.078165, -0.050679, -0.005881, -0.004983, -0.104324, + -0.069096, 0.12796, 0.011392, -0.000769, 0.062168, + -0.079842, 0.001606, 0.089284, -0.035465, 0.031075, + 0.029519, -0.102956, -0.010902, -0.06403, -0.019669, + 0.057492, 0.075802, -0.008904, -0.060743, -0.053144, + 0.005126, 0.06298, 0.085674, 0.019895, 0.104448, + -0.086473, 0.056906, 0.056795, -0.01294, 0.036606, + -0.008604, -0.04045, 0.042062, 0.04181, 0.02768, + -0.092256, 0.091237, -0.0395, 0.024761, -0.088978, + 0.068585, 0.088295, -0.048033, -0.017808, 0.04537, + 0.1246, -0.03532, 0.056751, 0.092751, 0.054025, + -0.015725, -0.061938, 0.036806, 0.078768, -0.016065, + 0.002444, -0.023887, -0.072177, -0.02979, -0.00586, + 0.015478, 0.129142, -0.091024, 0.071482, -0.065445, + 0.005867, -0.006051, 0.098646, 0.054089, 0.018713, + 0.033837, -0.008355, -0.051959, 0.05744, 0.160305, + -0.001863, 0.016738, -0.033705, 0.062233, -0.140759, + 0.027342, 0.060074, 0.030362, -0.117875, 0.06102, + -0.028026, -0.088238, -0.003782, -0.146288, -0.080395, + 0.050048, 0.036136, 0.0195, 0.066902, 0.020355, + 0.024817, -0.056254, -0.140918, -0.085803, 0.02054, + -0.00373, 0.161411, -0.049408, 0.000219, -0.002348, + -0.055021, 0.06782, 0.126483, -0.031063, -0.119299, + -0.102834, 0.001133, 0.010172, 0.107707, -0.029106, + -0.059813, 0.036698, -0.02172, -0.043189, -0.00227, + -0.031694, 0.009605, -0.022459, -0.036417, 0.053675, + 0.061561, -0.012723, 0.05004, -0.02945, 0.131044, + -0.124516, -0.107579, -0.012171, 0.011761, 0.002599, + 0.016327, -0.060854, -0.08091, 0.030875, -0.002997, + -0.02097, -0.01188, -0.086096, 0.037912, 0.012421, + 0.055253, -0.00725, 0.04174, 0.055596, -0.02442, + -0.017564, -0.079202, 0.008897, 0.180091, 0.05449, + 0.001772, -0.022151, -0.082048, -0.010559, -0.163377, + -0.02066, -0.017827, -0.0308, -0.045856, 0.122405, + -0.052946, -0.13049, 0.097383, -0.116737, 0.039855, + 0.056504, -0.059549, -0.059931, -0.018658, 0.034898, + 0.054889, 0.005373, -0.066796, -0.12736, 0.04796, + 0.071746, 0.02741, -0.006212, 0.024132, -0.094062, + 0.005369, -0.008926, 0.073085, -0.014265, -0.029204, + -0.100025, -0.072076, 0.014651, 0.069368, 0.048275, + -0.066823, 0.086074, 0.014921, -0.015395, -0.045138, + 0.026224, 0.000902, -0.038208, -0.035221, 0.057397, + 0.097606, -0.073195, 0.051626, -0.033488, 0.027813, + 0.00207, -0.09751, -0.057877, 0.12668, -0.082194, + -0.072597, 0.006014, -0.093185, -0.016853, -0.02279, + 0.138461, 0.005394, -0.056485, 0.102778, 0.028918, + -0.045604, -0.060041, 0.121251, 0.02926, -0.101404, + 0.061194, 0.033039, -0.016798, 0.064263, 0.065144, + 0.010925, 0.023151, 0.107623, 0.027977, -0.090356, + -0.024863, -0.00644, 0.04787, -0.047486, 0.088211, + -0.012139, -0.116121, -0.000525, -0.140961, 0.016604, + 0.06349, -0.022732, -0.046944, 0.06697, -0.068838, + 0.016143, 0.026202, -0.043344, -0.064881, 0.024877, + -0.072845, 0.120531, 0.077901, 0.047272, 0.011713, + -0.044646, 0.040932, 0.076164, -0.101233, -0.029615, + -0.065118, 0.050966, -0.023273, 0.053517, 0.02371, + -0.007489, 0.035822, 0.023439, -0.055528, -0.004033, + -0.007662, -0.096546, -0.081662, 0.037141, 0.137562, + 0.075526, -0.097496, 0.12399, 0.013996, 0.087005, + -0.019788, -0.082043, 0.020524, 0.007027, -0.021537, + -0.036264, -0.090952, -0.177722, -0.009306, -0.031473, + -0.009287, 0.047557, -0.090241, 0.089347, 0.056375, + -0.005506, -0.112128, 0.004356, 0.064421, -0.038478, + -0.035674, 0.040616, 0.007731, 0.160236, -0.054199, + -0.007537, 0.012434, 0.022001, -0.021567, -0.075163, + -0.026053, 0.015909, 0.041015, 0.021832, 0.034152, + -0.048539, -0.086655, 0.047465, 0.000682, 0.04264, + 0.023697, -0.095971, -0.022874, -0.000369, 0.003413, + 0.046005, 0.064807, 0.010131, -0.129517, -0.092254, + 0.116469, 0.053796, 0.03811, 0.09447, 0.018435, + -0.034803, 0.073591, 0.108348, 0.104096, 0.049884, + -0.021274, 0.022097, 0.065347, 0.065555, 0.089319, + 0.000474, -0.004186, -0.040493, -0.065543, -0.083167, + -0.017425, 0.049177, -0.044248, 0.008399, 0.06818, + 0.154778, 0.027549, -0.008012, 0.01495, 0.043254, + 0.039599, -0.136415, -0.018716, 0.0619, 0.031263, + 0.058118, -0.0372, -0.114692, -0.080876, -0.053238, + 0.077436, 0.015015, -0.092517, 0.005804, -0.065541, + -0.005653, -0.073184, 0.095594, 0.08247, 0.060989, + -0.000262, -0.035766, -0.083441, 0.122634, 0.088429, + -0.014397, -0.055434, -0.005659, 0.069697, -0.064892, + 0.008824, 0.082498, 0.051866, -0.03607, 0.033403, + -0.082855, -0.087376, 0.002714, -0.097121, -0.01917, + 0.027179, -0.06987, -0.009316, 0.04745, 0.040657, + 0.060527, 0.00462, -0.040264, -0.051228, -0.029023, + -0.071384, 0.101421, 0.009538, -0.099185, 0.0601, + -0.048395, -0.024677, 0.025125, -0.056043, -0.058045, + -0.054059, 0.008107, 0.021078, 0.04529, -0.018459, + -0.113359, 0.014009, -0.006826, -0.052747, 0.046922, + -0.075976, 0.008538, -0.084411, -0.004369, 0.045801, + 0.075392, -0.06734, 0.014454, 0.032407, 0.092478, + -0.061859, -0.083458, 0.051442, 0.031695, -0.080233, + 0.054028, 0.027, -0.073549, 0.0323, 0.036501, + -0.011384, -0.02078, -0.124142, 0.093905, -0.028332, + 0.039139, -0.030944, 0.079952, -0.001717, 0.013976, + 0.038005, -0.001751, -0.044097, 0.129827, 0.014385, + -0.001682, -0.063458, -0.002511, -0.07815, -0.141236, + 0.021955, 0.104851, -0.093246, -0.060019, 0.069998, + 0.004399, -0.096408, 0.059327, -0.062268, -0.074327, + 0.108063, -0.090534, -0.045654, 0.048119, 0.049187, + 0.042105, 0.043964, -0.091516, -0.047999, -0.028881, + 0.070471, 0.055401, -0.025605, 0.011176, 0.008475, + 0.022254, 0.038266, 0.048106, 0.047176, -0.017967, + -0.010978, -0.088762, 0.034806, 0.019311, 0.126815, + -0.010571, 0.053073, 0.032162, -0.00078, -0.1522, + -0.014253, -0.021954, -0.13104, -0.061376, 0.113838, + 0.060725, 0.020201, 0.102533, -0.011392, -0.052046, + -0.069625, -0.091011, -0.097954, 0.067847, 0.017856, + -0.053461, -0.040679, -0.121664, -0.077208, -0.106919, + 0.057996, 0.069756, -0.012433, 0.069569, -0.055159, + -0.024801, -0.060448, 0.1017, 0.014619, 0.03658, + -0.004526, 0.093977, -0.028211, 0.045261, 0.149736, + -0.014691, -0.007959, 0.097708, 0.107128, -0.079723, + 0.029157, 0.020116, 0.104828, -0.064208, 0.119172, + 0.039583, -0.029446, 0.006628, -0.110398, 0.004062, + 0.048132, -0.060601, 0.009448, 0.051777, -0.053127, + 0.050551, -0.001924, 0.028079, -0.050618, -0.013698, + 0.00192, 0.088162, 0.073078, 0.085795, -0.066788, + 0.014025, 0.042699, 0.176241, -0.046674, -0.034822, + -0.051433, 0.121729, -0.057076, 0.023901, 0.045075, + -0.057182, 0.05478, -0.01728, -0.146674, 0.00209, + -0.016223, -0.044841, -0.084524, -0.152479, 0.072688, + -0.006962, 0.008711, 0.127455, -0.003876, 0.053162, + -0.013682, -0.025386, -0.000427, -0.024811, -0.024474, + -0.056267, 0.062116, -0.121311, -0.053011, 0.065651, + -0.075385, -0.00868, -0.063033, 0.083039, 0.110577, + -0.000152, -0.127017, 0.055904, 0.013659, 0.005664, + -0.002852, 0.047248, 0.001128, 0.100773, 0.037274, + 0.026368, -0.042205, 0.021887, -0.020247, -0.056678, + -0.077475, 0.089799, 0.058003, 0.039741, 0.106663, + -0.016853, -0.015972, 0.075741, -0.048829, 0.015374, + -0.032657, -0.125677, -0.06206, -0.057409, -0.061287, + 0.073151, 0.050357, 0.053547, -0.059886, -0.051298, + 0.057954, -0.003817, 0.076028, 0.006757, 0.061109, + -0.03803, 0.143209, 0.092207, -0.018493, 0.062291, + 0.005751, -0.036449, 0.067582, 0.031449, 0.101894, + -0.080754, 0.011515, -0.049485, -0.016137, -0.087818, + 0.108851, 0.038222, -0.099315, -0.003117, 0.052278, + 0.107517, -0.036233, 0.06537, 0.040409, -0.057029, + -0.033167, -0.081758, -0.019502, 0.033438, 0.013365, + -0.01776, -0.025906, -0.020244, -0.078722, -0.011697, + -0.028246, 0.068647, -0.106417, 0.026956, -0.064914, + 0.062711, -0.017857, 0.151539, 0.044613, -0.01782, + 0.009085, -0.032785, -0.025795, 0.07579, 0.075667, + -0.040398, 0.058556, -0.042634, 0.093973, -0.099529, + 0.057103, 0.073562, 0.01264, -0.066141, 0.029558, + 0.060219, -0.083699, -0.054799, -0.120442, -0.000374, + 0.006521, 0.034512, -0.039558, 0.042191, 0.033865, + 0.103992, -0.014977, -0.077384, -0.05134, 0.001873, + 0.047451, 0.140612, -0.024885, -0.02142, -0.046604, + 0.030606, 0.10066, 0.076356, -0.019288, -0.09857, + -0.114463, -0.010855, -0.034657, 0.025618, -0.003356, + -0.087913, 0.064346, -0.07554, -0.091569, -0.024965, + -0.021232, -0.017255, -0.056931, -0.003104, 0.030219, + -0.020112, -0.012334, 0.035298, 0.001405, 0.161753, + -0.064618, -0.064401, -0.007218, -0.00012, -0.047208, + 0.116105, -0.056464, -0.069645, -0.007032, -0.01209, + -0.023237, 0.016, -0.039802, 0.074319, -0.012604, + 0.014863, -0.058081, 0.093219, 0.062253, -0.040302, + 0.027405, -0.128683, 0.039923, 0.116808, -0.011706, + 0.012483, -0.017698, 0.003645, -0.007588, -0.120662, + -0.032868, 0.066217, -0.031343, -0.034166, 0.146334, + -0.031228, -0.125921, 0.117756, -0.042686, -0.062094, + 0.049375, -0.112262, 0.010166, -0.073599, 0.04869, + 0.028292, 0.020076, -0.062865, -0.106114, -0.0253, + 0.066916, 0.029279, 0.028191, -0.003599, -0.040614, + 0.020491, 0.060238, 0.052747, -0.01039, -0.022389, + -0.063358, -0.028707, 0.035907, -0.011898, 0.079703, + -0.003758, 0.078051, -0.017869, 0.009045, -0.018982, + 0.034974, 0.069405, -0.018909, -0.038613, 0.083909, + 0.033935, -0.036607, 0.088891, -0.052599, -0.059839, + 0.052758, -0.068308, -0.063615, 0.126093, -0.00946, + -0.042175, -0.011113, -0.073071, 0.052086, -0.052619, + 0.049226, 0.066898, -0.045666, 0.117923, 0.053656, + -0.010739, -0.043962, 0.141903, 0.001792, -0.035469, + 0.090671, 0.043993, -0.013655, 0.018989, 0.127223, + 0.00103, -0.001154, 0.081839, -0.024979, -0.103704, + -0.07792, 0.036083, 0.06822, -0.06221, 0.11373, + -0.010501, -0.065801, 0.050885, -0.104304, 0.121937, + 0.11185, 0.00968, -0.011791, 0.001677, -0.035029, + 0.010677, 0.024572, -0.01286, -0.030323, -0.010466, + 0.011279, 0.167752, 0.003136, 0.109709, 0.007292, + 0.000987, 0.004572, 0.108706, -0.113192, -0.012431, + -0.015225, 0.073653, -0.051275, 0.077928, -0.012752, + -0.011708, 0.014172, 0.025162, -0.095378, 0.026382, + -0.028889, -0.058569, -0.129329, 0.011087, 0.061452, + 0.056893, -0.058004, 0.103586, -0.060752, 0.081824, + -0.042805, -0.015991, -0.024444, 0.028952, -0.013528, + 0.042851, 0.019988, -0.165741, -0.031012, -0.014713, + -0.026059, 0.031698, -0.134343, 0.03209, 0.020828, + 0.051674, -0.128006, 0.050856, 0.02222, -0.073513, + -0.00934, 0.013756, 0.036163, 0.098407, -0.023495, + 0.023858, 0.008121, 0.02222, -0.103489, -0.046663, + -0.033, 0.063565, 0.029224, -0.012693, 0.084202, + 0.012187, -0.051, 0.026126, -0.043293, 0.008675, + -0.019812, -0.16507, -0.014555, -0.047431, 0.01799, + -0.040073, 0.107192, 0.022228, -0.089023, -0.066885, + 0.01463, 0.073186, 0.069902, 0.072634, 0.019593, + -0.041539, 0.031788, 0.09231, 0.027223, 0.034027, + -0.051855, 0.000391, 0.007869, 0.13191, 0.069384, + 0.046276, 0.04044, -0.037093, -0.031393, -0.112828, + 0.015709, 0.096749, -0.103205, -0.021284, 0.011405, + 0.158287, -0.021028, 0.042219, -0.050759, 0.069715, + -0.042907, -0.11698, 0.014224, 0.094648, 0.028395, + 0.041535, -0.057033, -0.047607, -0.024419, -0.034905, + 0.010125, 0.036728, -0.052503, -0.001839, -0.033477, + -0.053414, -0.070394, 0.092895, 0.1006, -0.026352, + 0.080574, -0.028763, -0.059548, 0.094571, 0.091787, + 0.041437, 0.014312, 0.045792, 0.108269, -0.081586, + 0.056288, 0.137447, 0.054718, -0.032474, 0.054502, + -0.100144, -0.00646, 0.024739, -0.117043, -0.008919, + 0.070299, -0.036862, -0.014543, 0.0245, -0.015222, + 0.114975, -0.043705, 0.000421, -0.061872, -0.035148, + -0.022797, 0.128575, -0.031798, -0.086718, -0.007172, + -0.071706, -0.006833, 0.028645, -0.007011, -0.096745, + -0.142269, 0.027996, 0.06521, 0.061381, 0.000741, + -0.140531, 0.01748, -0.014986, -0.040893, -0.012718, + -0.012494, -0.021869, -0.032923, 0.016456, 0.104475, + 0.010792, -0.066178, 0.019097, -0.001893, 0.067513, + -0.092673, -0.059851, -0.045936, 0.052642, -0.0625, + 0.065013, -0.025659, -0.149301, 0.051705, 0.035692, + -0.04579, -0.007482, -0.069141, 0.149365, -0.042039, + 0.018492, -0.081315, 0.05588, 0.058158, 0.019669, + 0.063836, -0.012391, 0.007057, 0.155454, 0.033854, + -0.016532, -0.007661, 0.043113, -0.080283, -0.10867, + -0.029344, 0.093781, -0.01584, -0.068134, 0.091804, + 0.004148, -0.058507, 0.059633, -0.095883, -0.004939, + 0.086151, -0.113571, -0.019466, -0.009167, 0.003662 +}; + +const struct lsp_codebook lsp_cbjvm[] = { + /* codebook/lspjvm1.txt */ + { + 10, + 9, + 512, + codes0 + }, + /* codebook/lspjvm2.txt */ + { + 5, + 9, + 512, + codes1 + }, + /* codebook/lspjvm3.txt */ + { + 5, + 9, + 512, + codes2 + }, + { 0, 0, 0, 0 } +}; diff --git a/codebooklspmelvq.c b/codebooklspmelvq.c new file mode 100644 index 0000000..f49ff36 --- /dev/null +++ b/codebooklspmelvq.c @@ -0,0 +1,247 @@ +/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */ + +/* + * This intermediary file and the files that used to create it are under + * The LGPL. See the file COPYING. + */ + +#include "defines.h" + + /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq1.txt */ +#ifdef __EMBEDDED__ +static const float codes0[] = { +#else +static float codes0[] = { +#endif + 640.185, 893.139, 1393.85, 1494.06, 1656.26, 1700.82, + 558.516, 716.906, 1057.36, 1182.62, 1503.8, 1610.03, + 615.108, 769.622, 1120.16, 1222.84, 1366.46, 1465.05, + 663.458, 736.833, 964.764, 1043.54, 1623.17, 1681.29, + 487.957, 577.723, 1017.43, 1177.04, 1552.1, 1615.69, + 536.099, 733.407, 1292.28, 1406.09, 1577.7, 1637.49, + 473.015, 542.559, 877.397, 1285.82, 1591.04, 1647.44, + 525.343, 652.014, 1206.83, 1493.96, 1647.97, 1698.3, + 510.887, 572.868, 945.226, 1445.68, 1678.17, 1705.53, + 534.915, 721.265, 1275.92, 1415.76, 1648.5, 1695.73, + 865.189, 1047, 1267.14, 1389.32, 1646.57, 1696.97, + 608.033, 869.887, 1300.95, 1432.87, 1639.74, 1689.41, + 554.972, 649.352, 866.845, 979.873, 1645.31, 1695.39, + 696.079, 813.97, 1102.49, 1219.79, 1536.49, 1621.94, + 553.879, 691.097, 1200.84, 1339.34, 1629.08, 1683.5, + 778.561, 997.776, 1258.63, 1390.34, 1601.99, 1657.86, + 713.107, 778.893, 992.875, 1051.95, 1497.45, 1650.66, + 490.27, 598.18, 1116.02, 1244.13, 1622.26, 1672.21, + 448.556, 512.085, 1271.7, 1448.18, 1579.37, 1642.48, + 465.688, 535.312, 1099.19, 1535.79, 1684.29, 1710.9, + 812.222, 1087.53, 1470.44, 1559.73, 1692.18, 1726.38, + 428.174, 489.426, 1160.33, 1409.3, 1597.5, 1651.3, + 712.81, 957.56, 1433.02, 1516.37, 1675.39, 1710.06, + 717.255, 934.073, 1305.2, 1436.72, 1647.2, 1693.09, + 492.888, 580.393, 1339.52, 1461.07, 1592, 1653.42, + 550.467, 675.888, 990.888, 1177.44, 1615.64, 1658, + 714.528, 801.792, 1072.94, 1146.08, 1637.06, 1706.58, + 513.819, 590.989, 798.691, 895.755, 1557.76, 1624.56, + 436.653, 518.413, 1281.99, 1547.08, 1685.12, 1717.76, + 681.854, 758.354, 1046.65, 1120.92, 1412.25, 1603.42, + 873.962, 1118.49, 1376.61, 1465.07, 1665.38, 1707.18, + 553.529, 634.092, 1144.77, 1284.8, 1542.87, 1620.63, + 448.532, 519.097, 1054.57, 1319.66, 1591.26, 1649.85, + 742.267, 885.293, 1152.83, 1318.51, 1569.36, 1631.45, + 529.03, 654.522, 1355.76, 1511.75, 1662.39, 1706.4, + 463.794, 597.77, 1176.05, 1366.13, 1629.37, 1678.01, + 626.936, 706.66, 1058.04, 1323.62, 1473.28, 1599.68, + 477.322, 615.5, 1488.89, 1550.5, 1683.1, 1712.34, + 547.442, 815.442, 1313.38, 1486.96, 1671.97, 1717.4, + 610.671, 819.955, 1219.11, 1363.66, 1592.05, 1654.31, + 547.414, 746.54, 1438.43, 1517.72, 1659.64, 1695.57, + 604.823, 821.146, 1137.94, 1358.29, 1598.94, 1655.64, + 525.935, 616.739, 1060.13, 1427.33, 1593.35, 1657.48, + 622.5, 762.143, 1318.65, 1410.96, 1618.12, 1680.06, + 436.917, 516.583, 1390.29, 1475.86, 1594.71, 1633.74, + 792.487, 1031.24, 1362.62, 1472.68, 1649.26, 1697.35, + 457.707, 526.207, 865.966, 1120.47, 1564.83, 1625.28, + 526.39, 624.21, 1269.65, 1374.23, 1558.07, 1620.96, + 483.768, 573.505, 1440.66, 1512.43, 1622.37, 1671.31, + 953.061, 1194.03, 1416.67, 1515.82, 1678.82, 1718.21, + 499.947, 627.358, 1299.94, 1394.23, 1643.17, 1685.33, + 648.723, 838.181, 1225.5, 1383.45, 1637.46, 1691.67, + 672.588, 1022.6, 1346.21, 1443.75, 1651.15, 1695.43, + 581.833, 674.944, 955.167, 1020.5, 1370.5, 1503.11, + 536.143, 652.531, 1243.84, 1315.27, 1425.1, 1505.73, + 560.558, 786.65, 1224.66, 1373.98, 1630.06, 1682.68, + 591.926, 783.722, 982, 1140.81, 1581.61, 1625.28, + 548.537, 644.524, 940.451, 1048.74, 1557.89, 1609.48, + 516.916, 723.253, 1135.95, 1309.19, 1600.08, 1669.48, + 426.521, 506.077, 1457.73, 1535.02, 1641.35, 1678.45, + 645.189, 776.595, 1020.78, 1240.07, 1597, 1648.7, + 637.105, 941.474, 1242.21, 1372.49, 1646.7, 1694.8, + 691.228, 788.141, 1202.12, 1294.89, 1626.97, 1681.77, + 699.08, 886.655, 1300.9, 1399.28, 1579.94, 1646.79 +}; + /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq2.txt */ +#ifdef __EMBEDDED__ +static const float codes1[] = { +#else +static float codes1[] = { +#endif + 4.44342, 51.1708, 7.45726, -27.4373, -18.5056, -18.1989, + 51.58, 63.3166, 57.7796, -44.1591, -18.4834, -6.93392, + -20.2795, -21.7454, 4.66947, 52.1569, 30.4367, 36.8582, + -29.1104, -5.63933, -3.45383, -63.0261, -20.4423, -19.0485, + 2.91622, 40.8374, 16.579, -51.8461, 38.5045, 18.1728, + -20.6977, -11.4022, -36.6173, -16.6116, -56.8965, -24.301, + -20.2385, 26.6332, 33.1191, 27.6284, -36.7493, -25.6041, + 54.9871, 0.71748, 23.0674, -22.1031, 11.6643, 10.9938, + -62.7215, 21.7547, 21.2907, -7.64891, -4.5533, -9.71777, + -9.56338, -3.85841, 25.0454, -9.45216, 6.05017, 5.35043, + 47.3823, 56.6122, -27.0315, -24.67, 4.86343, -0.225495, + 26.3997, 26.7857, -1.66167, 62.8366, -19.7653, -8.55169, + -8.77648, -9.04545, -7.88996, 28.2433, -35.0963, -21.9709, + 14.8423, 25.4563, -56.1262, -50.2934, -22.9393, -15.8113, + 4.94186, 27.7798, 8.34579, 10.8553, -3.12587, -3.97807, + 12.6426, -52.2317, 37.2487, -57.2067, -14.5125, -5.54035, + 13.485, 15.3246, -23.9644, -21.3135, 19.5779, 14.1597, + -55.3543, -45.2077, 10.5185, 43.0461, -24.9859, -19.3484, + 27.7226, 32.1882, 20.0321, 24.3328, -72.8194, -51.1823, + -31.3818, -5.25745, -43.7806, 14.1312, 17.6392, 9.81024, + -48.26, -26.2973, -44.1428, -31.9001, 22.5085, -0.467938, + 7.37202, -7.79071, -12.5732, 27.1074, 9.34052, 14.4477, + 14.5295, 8.82597, 57.0009, -16.3234, -32.4142, -21.0224, + 32.4616, 48.6062, 38.5452, 9.77182, 1.82856, 11.5063, + -43.8275, -22.6263, -29.8278, 13.6115, 9.66849, -63.5218, + -11.9967, 2.74308, -73.6375, -20.9809, -4.11839, 7.71405, + 24.0162, -2.29513, -6.80983, -26.4043, -21.8529, -16.3381, + -16.1484, 35.9086, -3.0837, 3.83958, 42.3003, 17.5003, + 54.1225, -48.7513, -14.8712, -38.1256, 15.2903, 7.33079, + 53.0929, 13.9221, 10.6536, 24.345, -16.5952, -16.0365, + 33.1415, 38.5714, -26.0251, 22.021, 15.6866, 13.2593, + 15.7194, -49.4061, 31.4552, 10.1896, 0.219911, 1.62902, + 4.10868, 14.2755, 58.475, -1.16668, 52.6265, 43.4938, + 358.653, -112.587, 85.9867, 52.08, -52.88, -249.24, + -12.5792, -6.64039, -33.0106, 1.51449, 50.3259, 61.6091, + -6.81685, 14.3146, 14.1563, 53.6363, 83.6051, 38.174, + -18.0006, 41.3575, -46.3736, 8.47794, -10.4611, -11.3847, + 28.7711, 31.4689, -39.5744, 1.43977, -37.7309, -30.5309, + -34.4692, -11.0778, 44.4681, -60.0045, -44.9729, -34.8364, + 38.7401, 41.0529, -7.92946, 20.0279, 74.4246, 54.6498, + 81.8008, 133.531, -5.47375, 34.4759, 75.7417, 52.6112, + -61.5067, -76.6328, -47.2471, -43.5928, -9.46878, 0.832598, + -11.544, -44.7728, -13.9257, -3.32122, 24.816, 21.9064, + 2.83945, -45.0522, -36.8776, -14.7577, -11.9912, -8.75366, + -8.97657, -14.0499, 39.2628, 48.8038, -14.3789, -4.79625, + 31.6292, 32.0168, 5.52278, -79.8411, -24.1789, -15.7597, + 15.893, 10.4667, -43.9057, -20.4885, 80.7594, 6.8023, + 22.3285, -69.4942, -5.16156, 48.8868, 4.01995, -3.04376, + 31.4062, -20.0952, -55.1259, 0.505988, 20.86, 15.0816, + -12.9696, 37.2548, 18.1009, 51.0767, 18.2053, 19.8474, + -45.4855, -45.3454, -4.22795, -15.8693, -6.07272, -1.99631, + -9.25462, 45.0241, 70.2879, -44.4484, 2.63165, 4.15336, + -51.1589, -27.7586, 19.7999, -9.87882, 63.4125, 48.3124, + -8.94084, -13.4815, -44.9602, 52.839, -17.2582, -1.59439, + 23.18, -3.00374, 33.162, 31.5424, 29.111, 25.9327, + -28.4665, -10.6868, 88.7543, -3.88024, 17.5881, 13.7336, + -10.6578, 7.43021, -20.945, -17.6491, -11.2815, -10.8001, + -35.6182, -6.90301, 3.92829, 26.9695, 2.8894, 5.01685, + -3.78263, -19.2095, -10.5568, -67.7468, 20.3733, 29.552, + 53.8109, -33.8374, -27.8223, -7.73289, -31.3462, -23.5678, + -38.8762, -17.7679, 11.457, 28.4607, 50.7006, -19.2488, + -44.6024, -60.2806, 56.35, 21.7545, 5.23677, 7.66608, + -3.80758, -39.1425, 28.8305, -3.09285, -42.7534, -25.1803, + 45.2559, 28.8742, 60.0723, 64.461, 3.51203, -27.883 +}; + /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq3.txt */ +#ifdef __EMBEDDED__ +static const float codes2[] = { +#else +static float codes2[] = { +#endif + -9.63558, 27.5501, 15.4445, -4.34872, -1.8587, 1.27054, + -15.5343, 23.0515, -15.4436, -2.01887, -6.19433, -13.5085, + 8.38867, -1.60998, -32.3903, 10.1765, 1.9467, 12.2454, + -3.06306, -9.55983, 14.367, -1.87159, 19.6192, -3.78366, + -18.495, -13.3811, -23.8928, -20.3745, -6.87856, -17.4887, + 15.4925, 14.707, -0.0697855, 15.7541, 12.6051, -3.19768, + 9.60466, -4.56494, 10.1616, 15.5594, 6.89224, -31.5602, + -11.5625, -23.0872, 34.9163, 12.3052, 7.67426, -1.26298, + 2.5486, -3.90251, -19.1132, 7.6131, -31.0016, 12.4759, + 2.74156, 12.4124, -39.5057, -0.325024, -22.9186, -28.5606, + 6.30148, 15.4402, -2.6284, -20.1603, 5.22906, -12.3451, + -6.91862, 16.6335, -1.65064, 2.99602, -23.9479, -1.43947, + -14.3907, -31.417, 10.1113, 1.70013, -21.5733, 4.736, + -1.67171, 6.22751, -13.7187, 21.0936, -9.69243, -10.5756, + 2.15266, 21.2198, -13.0171, -1.43135, 18.8831, 10.6664, + 13.8913, 27.3565, 0.472838, -7.40477, -14.8705, 25.7448, + 28.402, -2.05484, -9.32712, -17.3169, 15.643, 6.96908, + -15.863, -17.8482, -24.9238, 12.5574, 7.17566, 0.0161972, + 5.99291, -41.0228, 1.95791, -6.78012, 9.20162, 4.6234, + -6.33629, -7.61679, 27.7318, -8.9214, -14.1931, 7.88247, + -12.2367, -21.245, -2.5927, 13.7776, -2.7864, -24.5072, + 23.15, -9.93687, -2.92559, 3.88086, 11.2667, 11.1998, + 9.67437, -9.4269, 6.2582, 36.5694, 2.88654, 1.82052, + 15.385, -2.88243, 19.8377, -14.5111, 5.92264, -2.55757, + -20.9648, 3.76147, 18.5074, -13.5547, -7.84261, -19.98, + 24.6032, 16.989, -19.1622, 1.35535, -0.0122027, 0.166227, + 9.98886, -6.89666, -20.5111, -2.89196, 2.58467, -17.049, + -9.17761, -23.7209, 12.6088, -18.2654, 2.17718, -13.0865, + -9.73326, -12.2682, 6.80914, 20.3469, -10.2912, 4.85191, + -5.19406, 6.78014, 18.0099, 14.3782, -0.124328, -10.0141, + -4.69806, 6.71393, -19.1371, 8.19814, 23.3987, -10.3316, + 1.02965, -4.63654, 21.9822, 11.5088, -30.9617, -20.6354, + -33.2824, 31.4666, -11.4837, 11.5144, -1.36834, 9.44599, + -37.5431, -3.16317, -2.09497, -2.62712, 40.4714, -33.0527, + -8.79595, -15.5174, -15.7916, 7.97003, 37.2542, 40.7063, + -14.7261, -12.6884, 2.42105, -10.2686, 25.9033, 14.8525, + 22.9598, -16.6224, -3.64949, 4.44269, -22.3897, 13.6968, + -10.874, 4.18931, -24.2284, -3.63764, -15.1379, 40.9515, + 28.2393, -8.63225, -12.544, 28.8282, -0.987894, -4.9824, + -25.0777, -0.481678, -3.37082, 5.55114, -9.89898, -8.07628, + 23.3581, 3.12034, -8.63348, 0.63042, -18.2216, -22.1886, + 44.9505, 19.8267, 23.7129, 8.58075, 7.80458, 1.78796, + -8.13112, -2.1262, -7.12776, -25.0529, -16.7287, 8.41402, + 2.01965, 19.2579, 20.0963, 5.99199, 28.1098, 5.96128, + 2.42493, -6.33216, -26.5858, -23.8607, 8.27049, 3.05805, + 0.0153248, 0.446112, -4.92759, 19.0023, 22.7346, 15.5451, + -7.39591, 40.285, 10.8414, 25.7961, -8.81069, -13.5, + 5.81306, 11.2384, 6.93765, -9.43067, 9.51418, 22.9709, + -9.17611, -16.4993, -1.56929, -2.9111, 4.17113, 10.9228, + 10.0376, -27.4993, -8.25332, -1.715, -11.5063, -10.467, + 23.6637, -13.8338, 14.7284, 8.00341, -2.71881, -8.80708, + 27.101, 2.42801, 11.4599, -24.1577, -20.9901, 4.52358, + 16.8065, 19.3315, 11.1219, 13.3391, -13.1522, 0.91428, + -25.2603, 6.04837, 12.1994, 21.9372, 14.8795, 6.93368, + -1.24639, -7.96856, 16.4064, -2.36409, -25.9093, 46.0938, + 8.81687, 24.8004, 11.4475, -13.261, -19.8693, -28.4793, + 15.3175, -12.5335, 24.1778, 10.5133, 22.2244, 9.93191, + -18.7982, 38.939, -20.0631, -35.4052, 7.5879, -0.599373, + -18.1388, 9.5843, 17.4375, -21.057, 8.1634, 6.31216, + -61.5486, -8.71159, 19.7502, -25.2365, 3.56558, -1.64973, + -26.9863, 0.291017, -12.5337, -10.505, 11.0614, 4.84072, + -0.630579, -3.87056, -0.707795, -13.1306, -19.6548, -16.2436, + 4.87022, -5.90744, 3.46971, -40.0866, 16.8741, 10.3333, + -1.00985, 16.234, -0.475836, 28.3848, 1.75473, 28.2608 +}; + +const struct lsp_codebook lspmelvq_cb[] = { + /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq1.txt */ + { + 6, + 6, + 64, + codes0 + }, + /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq2.txt */ + { + 6, + 6, + 64, + codes1 + }, + /* /Users/erdgeist/Coding/codec2/src/codebook/lspmelvq3.txt */ + { + 6, + 6, + 64, + codes2 + }, + { 0, 0, 0, 0 } +}; diff --git a/codebookmel.c b/codebookmel.c new file mode 100644 index 0000000..a548db5 --- /dev/null +++ b/codebookmel.c @@ -0,0 +1,145 @@ +/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */ + +/* + * This intermediary file and the files that used to create it are under + * The LGPL. See the file COPYING. + */ + +#include "defines.h" + + /* /Users/erdgeist/Coding/codec2/src/codebook/mel1.txt */ +#ifdef __EMBEDDED__ +static const float codes0[] = { +#else +static float codes0[] = { +#endif + 550, + 600, + 650, + 700, + 750, + 800, + 850, + 900 +}; + /* /Users/erdgeist/Coding/codec2/src/codebook/mel2.txt */ +#ifdef __EMBEDDED__ +static const float codes1[] = { +#else +static float codes1[] = { +#endif + 50, + 100, + 200, + 300 +}; + /* /Users/erdgeist/Coding/codec2/src/codebook/mel3.txt */ +#ifdef __EMBEDDED__ +static const float codes2[] = { +#else +static float codes2[] = { +#endif + 800, + 850, + 900, + 950, + 1000, + 1050, + 1100, + 1150, + 1200, + 1250, + 1300, + 1350, + 1400, + 1450, + 1500, + 1650 +}; + /* /Users/erdgeist/Coding/codec2/src/codebook/mel4.txt */ +#ifdef __EMBEDDED__ +static const float codes3[] = { +#else +static float codes3[] = { +#endif + 25, + 50, + 75, + 100, + 125, + 150, + 175, + 250 +}; + /* /Users/erdgeist/Coding/codec2/src/codebook/mel5.txt */ +#ifdef __EMBEDDED__ +static const float codes4[] = { +#else +static float codes4[] = { +#endif + 1350, + 1400, + 1450, + 1500, + 1550, + 1600, + 1650, + 1700 +}; + /* /Users/erdgeist/Coding/codec2/src/codebook/mel6.txt */ +#ifdef __EMBEDDED__ +static const float codes5[] = { +#else +static float codes5[] = { +#endif + 25, + 50, + 100, + 150 +}; + +const struct lsp_codebook mel_cb[] = { + /* /Users/erdgeist/Coding/codec2/src/codebook/mel1.txt */ + { + 1, + 3, + 8, + codes0 + }, + /* /Users/erdgeist/Coding/codec2/src/codebook/mel2.txt */ + { + 1, + 2, + 4, + codes1 + }, + /* /Users/erdgeist/Coding/codec2/src/codebook/mel3.txt */ + { + 1, + 4, + 16, + codes2 + }, + /* /Users/erdgeist/Coding/codec2/src/codebook/mel4.txt */ + { + 1, + 3, + 8, + codes3 + }, + /* /Users/erdgeist/Coding/codec2/src/codebook/mel5.txt */ + { + 1, + 3, + 8, + codes4 + }, + /* /Users/erdgeist/Coding/codec2/src/codebook/mel6.txt */ + { + 1, + 2, + 4, + codes5 + }, + { 0, 0, 0, 0 } +}; diff --git a/codebooknewamp1.c b/codebooknewamp1.c new file mode 100644 index 0000000..6de33ee --- /dev/null +++ b/codebooknewamp1.c @@ -0,0 +1,1057 @@ +/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */ + +/* + * This intermediary file and the files that used to create it are under + * The LGPL. See the file COPYING. + */ + +#include "defines.h" + + /* /home/david/codec2-dev/src/codebook/train_120_1.txt */ +static const float codes0[] = { + 6.7484, 7.6125, 6.0332, 5.2789, 1.5239, 2.2353, 2.0748, 0.5289, 0.8748, 2.5432, -2.2863, -3.191, -0.0434, -1.9857, -3.3605, 0.7069, -5.9493, -0.5672, -0.6798, -18.0977, + 4.0503, 3.9086, 2.9225, 2.3773, 0.658, -0.4363, -0.0644, 2.4063, 1.3428, 2.4542, 0.5275, 0.982, -1.3277, 0.6811, 0.0273, -0.1838, -0.0222, -0.6478, -2.2405, -17.4152, + 13.3284, 12.1212, 10.6531, 9.8214, 11.0388, 15.812, 19.711, 16.5488, 16.1068, 15.8771, 7.2553, 4.2486, -6.0036, -12.5476, -20.1299, -28.2803, -25.3971, -21.7907, -11.5143, -26.859, + 21.4405, 18.4703, 17.8693, 14.9679, 11.2994, 6.4906, 4.7717, 0.1959, -0.8801, 1.8991, 1.9793, -4.9755, -7.7852, -10.0492, -8.5295, -8.2893, -4.1203, -12.4072, -16.166, -26.1817, + 4.0023, 3.8279, 1.2681, 1.0053, 0.7002, -0.3886, 3.4465, -1.4055, -6.7846, -2.3345, -2.905, -0.1344, 3.4192, 2.4319, 10.0096, 3.9279, 0.6807, 0.322, -3.8325, -17.2565, + 29.8276, 21.1543, 12.7853, 13.0246, 5.8164, 3.7469, 2.4198, 0.151, -4.5449, 5.2695, 11.7552, -4.8954, -6.0291, -8.978, 4.965, -10.654, -12.5363, -21.6056, -18.2985, -23.3739, + 4.861, 5.1207, 6.5382, 9.8638, 15.4754, 18.8192, 14.8018, 10.7685, 12.4401, 14.0392, 2.92, -3.7283, -9.7213, -13.5526, -16.073, -13.7571, -5.4267, -12.2552, -14.5143, -26.6193, + 3.0429, 3.0335, 4.4785, 5.6483, 5.3476, 5.7519, 3.5651, 4.9007, 4.9672, -0.733, -0.6458, 6.5888, 5.2957, -2.0068, -6.0189, -7.2145, 2.5545, -5.8358, -7.4936, -25.2263, + 5.9384, 7.0203, 10.7433, 15.2477, 14.8437, 8.0949, 3.1384, -0.0014, -0.1756, 2.1601, 8.1029, 0.4123, -6.8062, -9.6038, -6.2302, 0.4409, -8.9878, -10.1638, -4.6903, -29.484, + 7.188, 6.1134, 5.4021, 10.5427, 17.0718, 14.5658, 6.8632, 2.2257, 0.4412, 3.8257, 9.0388, -1.1212, -6.7639, -9.2412, -8.6575, -2.9951, -8.6659, -9.422, -6.6046, -29.8068, + 9.8859, 4.3889, 3.6253, 3.2033, 4.6563, 4.5967, 1.8747, -0.0037, 3.2114, 3.8854, 3.1501, 0.8523, -5.283, -8.4603, -5.1159, -3.9157, 6.98, -1.527, -6.0421, -19.9624, + 7.6208, 10.1888, 12.8648, 16.4838, 14.9269, 7.8064, 3.5594, -2.8048, -3.6303, -10.8596, -7.1254, -2.889, 5.4295, -2.5015, -5.5359, -2.9934, -6.598, -7.1493, -4.9387, -21.8545, + 12.7227, 17.1387, 21.7055, 19.8068, 12.1832, 5.8645, -2.4103, -3.8445, -5.5496, -5.5608, -0.201, 5.1772, -1.4666, -6.6602, -1.2573, -3.1593, -10.7925, -14.3751, -12.0047, -27.3167, + 7.4465, 7.8765, 9.4912, 12.2074, 12.1631, 11.478, 7.6294, 2.6922, 0.1566, -2.1903, -1.5699, -1.8031, 2.2555, -1.5591, -7.9267, -10.3612, -5.5432, -5.5673, -10.0797, -26.796, + 0.3749, 1.9725, 2.6868, 6.3326, 8.9635, 12.8113, 13.6523, 14.0916, 11.2443, 1.2914, -1.9954, -2.9443, -4.6718, -4.3132, -3.4613, -8.1105, -7.9033, -7.0956, -6.5898, -26.3361, + 10.3072, 10.6822, 8.8253, 4.8992, 4.3627, 8.8165, 9.7824, 3.7264, 0.4265, 0.6068, 3.0934, 2.9121, -0.6717, -5.8045, -1.7344, -9.1008, -8.8333, -6.0633, -11.2321, -25.0005, + 10.6992, 14.806, 18.9665, 22.421, 21.871, 15.6647, 10.616, 12.1366, 14.0479, 7.0707, -3.8212, -12.177, -16.1111, -19.3389, -18.8315, -17.5346, -7.9646, -9.4592, -17.5614, -25.5, + 9.9592, 11.7001, 14.2704, 14.1434, 7.3322, 4.2766, -0.0567, -2.7113, -5.7358, -6.739, -5.9067, -0.1939, 4.8177, -3.981, -7.2528, -3.2695, -1.5685, -7.894, -6.3355, -14.8548, + 17.6322, 19.5153, 22.4362, 16.2943, 10.4698, 2.5066, -2.3936, -5.377, -7.9766, -9.8004, -12.964, -13.1015, -9.8076, -5.7565, 1.8732, 0.4843, 3.3621, -1.0048, -4.8377, -21.5543, + 9.9491, 17.4987, 23.2236, 17.3142, 6.8072, 6.6873, 1.9421, 1.1415, 2.9409, 6.847, 2.4633, -7.2869, -8.9792, -3.3155, -0.1918, -11.8037, -18.6298, -12.6475, -9.762, -24.1984, + 9.208, 9.9971, 12.5064, 20.0609, 20.9647, 10.9574, 7.436, 4.4943, 4.8454, 11.0636, 1.8176, -7.3479, -12.5617, -15.3912, -11.5022, -5.0309, -14.7556, -15.4294, -6.415, -24.9176, + 7.7917, 9.3291, 11.8185, 15.3501, 19.3235, 20.6869, 19.816, 14.6028, 10.2893, 9.9407, 9.8534, 3.6182, 2.7695, -5.2735, -19.7962, -24.6834, -27.0316, -25.6805, -24.9149, -27.8096, + 0.1108, 3.1261, 6.8163, 12.4528, 16.9192, 10.8153, 2.6109, -0.2652, -4.8897, -6.1056, -7.3218, -4.4594, 4.3004, 3.7728, -2.8276, -0.0458, 1.0104, -6.4884, -6.486, -23.0456, + 12.9442, 10.3059, 3.1303, 2.1611, 1.4795, 2.758, 6.9527, 8.4487, 7.1533, 1.4465, -0.9113, -3.9971, -4.909, -5.3881, -3.1011, -0.4922, -1.1819, -5.3279, -8.2374, -23.2345, + 25.0945, 17.8572, 8.95, 2.704, 0.2187, 1.4115, 0.7421, 0.5831, -0.3096, 0.9334, -2.9667, -4.0352, -2.8473, -4.8594, -4.5863, -4.4311, -2.8466, -4.4808, -5.1669, -21.9645, + 14.6124, 19.7986, 21.2066, 15.762, 8.7509, 3.7653, -0.5239, -3.8894, -6.8522, -8.4979, -8.1879, -5.8438, 0.5485, 6.7415, 0.4745, 2.675, -10.3676, -15.0245, -12.2357, -22.9125, + 11.9959, 12.9771, 17.1177, 21.531, 16.8892, 10.8731, 9.7276, 8.5106, 12.9569, 2.2512, -6.9324, -13.2124, -16.538, -18.0518, -16.6252, -9.7038, -6.122, -8.7542, -6.8998, -21.9905, + 12.8107, 14.567, 13.4289, 7.1693, 3.4265, 3.1397, 2.5457, -1.2214, -0.3887, 2.4506, 3.9777, 0.9056, -6.9195, -7.3811, -3.2619, -0.3714, 2.6266, -6.3479, -12.2319, -28.9244, + 2.6437, 2.2575, 3.8643, 6.0625, 10.9091, 16.9554, 21.5045, 12.7233, 9.3579, 9.4439, 12.8585, 4.4528, -2.4283, -4.733, -2.2502, -11.3098, -18.5273, -22.457, -23.1304, -28.1976, + 10.5757, 10.9392, 14.0126, 18.2101, 14.3745, 8.6896, 4.908, 1.0411, 2.3482, 7.2221, 4.544, -5.0353, -11.2852, -13.0882, -10.96, -3.0288, -9.5005, -10.2217, -6.6739, -27.0717, + 14.6172, 4.5412, 13.3824, 9.2916, 19.2818, 13.6563, 14.4089, 10.126, 1.6926, 3.9361, -0.6461, -5.1244, -9.3641, -13.9807, -11.4128, -11.8597, -0.8237, -20.3149, -12.3561, -19.0515, + 4.0591, 4.6177, 7.7662, 6.8737, 9.4052, 10.1099, 12.8714, 8.1202, 6.6015, 7.9224, 1.7548, -1.6325, -4.8379, -5.0955, -2.1947, -8.422, -11.8799, -10.7107, -12.0066, -23.3222, + -3.3385, -1.1297, 3.0554, 4.9769, 3.8625, 8.6998, 8.0974, -0.5519, -1.0699, -5.4771, -4.7235, -4.8192, 7.1236, -0.4895, -2.0107, 0.1838, 3.518, 3.2804, 3.1904, -22.3779, + 10.9362, 15.2821, 18.1297, 12.4682, 2.6895, -1.2007, -1.7676, -6.1681, -6.0524, -5.8064, -3.1002, 4.3237, 2.0263, -5.5109, 1.0348, -0.476, -4.6274, 1.4107, -7.5329, -26.0586, + 27.0648, 22.2199, 14.8908, 7.7845, 2.8689, -0.0364, 0.0683, -0.1186, -1.6323, -2.4217, -4.0112, -2.3476, -5.4442, -5.8509, -6.4386, -6.2558, -6.7739, -5.9348, -7.0916, -20.5398, + 4.3156, -0.2499, 1.1824, 2.8225, 8.191, 5.2798, 2.2597, -3.0043, -5.0382, -5.2727, -4.0013, 2.6952, 8.1245, -1.1517, -1.8957, 2.4603, 3.0897, -1.0817, -0.1353, -18.5898, + 17.5894, 22.9315, 26.4862, 22.162, 13.7474, 13.5177, 15.2005, 16.3224, 4.9523, -4.2419, -8.3503, -12.4022, -12.6698, -6.7159, -16.2122, -20.1926, -20.5969, -16.0749, -12.5173, -22.9353, + 6.5871, 8.0443, 8.4339, 11.3345, 17.3665, 13.4455, 6.9211, 2.0512, -0.7348, -1.2898, 1.0076, 8.4862, -0.336, -6.4714, -5.9432, -4.1602, -12.1155, -12.4645, -10.9269, -29.2355, + 19.0066, 20.3716, 18.0417, 9.4806, 4.8058, 0.3359, -4.1091, -8.193, -8.9962, -9.7495, -13.2924, -8.6275, -4.9424, 6.0502, -6.8142, -7.1166, -3.0922, 8.8016, 5.6937, -17.6547, + 4.7309, -6.5949, 4.9914, 7.3489, 9.0188, 4.1567, 7.1949, 0.4917, 5.0462, 7.5219, 1.5314, -15.3803, 5.313, -0.0983, -7.0327, -1.2671, -0.4646, -1.6442, -0.7446, -24.119, + 13.7639, 5.1424, 5.3193, 3.8945, 3.9574, 1.4034, 0.1896, -4.0608, -2.5264, -4.9434, 2.8459, 2.6311, -2.7915, -3.7842, -0.3711, 0.5487, 5.3766, -4.3496, -3.2801, -18.9656, + 12.6752, 14.7799, 16.2157, 18.6944, 14.139, 7.0937, 3.8206, -2.4778, -3.9766, -4.4531, -2.8711, 3.2148, 0.68, -9.1748, -10.16, -6.0557, -0.8581, -9.2828, -14.0109, -27.9924, + 15.0025, 18.2042, 22.4086, 21.6195, 14.2308, 10.5772, 6.7291, 6.0463, 11.7877, 8.4162, -3.4731, -11.2708, -15.6923, -17.5613, -14.5235, -4.5248, -17.8954, -18.3529, -10.3105, -21.4173, + 2.5368, 2.8687, 8.7229, 5.2089, 8.9671, 2.8847, -1.3535, -4.4273, -4.906, -7.8939, -15.475, -10.4797, -4.4811, 6.5892, 9.9939, 12.9078, 3.2705, 1.3246, 3.7883, -20.0468, + 8.5207, 11.8364, 16.4466, 19.9166, 16.0662, 8.4129, 4.329, -0.8928, -3.7592, -5.4071, -4.287, 0.4615, 9.9611, 5.819, 1.7969, -7.7765, -17.3073, -19.5235, -17.7924, -26.8211, + 3.0595, 10.0158, 11.1623, 5.9413, 3.1988, -2.1129, 0.3528, -3.0158, -2.3599, -1.3347, -1.0479, 3.9189, 7.8019, 3.0538, -1.6139, 0.8043, -4.929, -6.9959, -7.2918, -18.6077, + 17.8476, 19.4332, 25.4614, 19.1508, 12.2748, 9.4543, 6.1101, 3.6929, 2.9336, 5.5407, -9.2238, -17.0071, -20.8856, -22.9308, -21.1711, -15.0234, 4.8627, 2.2867, -2.1943, -20.6125, + 9.6165, 8.8018, 11.1694, 14.6183, 18.4154, 13.4481, 7.158, 4.165, 1.8242, 0.9521, 5.1356, 4.027, -5.9523, -12.0202, -14.3055, -10.5893, -2.8308, -12.2805, -13.3723, -27.9806, + 13.4166, 16.7617, 20.6572, 22.0976, 15.9129, 10.641, 5.4061, 3.157, -0.7256, 1.2303, 5.9463, 5.1273, 3.4864, 1.6884, -10.9215, -19.5567, -22.8693, -20.4758, -24.042, -26.9379, + 8.0404, 15.9476, 21.0441, 15.082, 8.2842, 3.1036, -0.2419, -4.2559, -6.0751, -7.4529, -5.5847, 1.552, 8.3483, 3.3751, -1.0503, -10.4691, -11.936, -5.5738, -6.8713, -25.2662, + 19.995, 20.2102, 18.7443, 12.722, 5.8592, 3.8088, 0.4504, -1.5876, -0.0425, -3.0873, 5.5382, -0.1499, -5.85, -7.9372, -6.2374, -0.2643, -15.0702, -16.9914, -9.3644, -20.7458, + -2.6024, -7.495, -1.2522, 3.5119, 3.9726, 3.4991, 2.4457, 3.2158, -0.183, -1.7087, -7.3996, -6.8962, -5.2421, -7.5762, -9.1433, 6.6126, 10.5297, 10.4556, 18.2991, -13.0433, + 0.8317, 2.2343, 3.6899, 5.6335, 5.8479, 6.433, 6.0022, 5.363, 2.3387, -0.5344, -1.0716, 0.6509, -0.7175, -4.0229, -6.0631, -4.7546, -1.97, -4.6226, 0.0933, -15.3616, + -9.366, -6.9175, -4.9307, -3.1828, -1.6587, -1.4971, -0.1586, 0.6208, 0.5169, 2.4709, 4.6017, 5.3127, 4.5449, 3.269, 3.759, 3.4511, 3.826, 3.9369, 4.8805, -13.479, + -1.183, 0.5095, 1.1754, 2.3109, 2.2722, 1.3243, 1.6529, -0.1799, -0.2874, -1.2863, -2.2761, -1.5668, -1.2037, -2.4367, -3.9243, -2.1186, 2.3502, 1.4312, 9.5827, -6.1467, + 9.2349, 10.765, 18.1608, 20.6655, 13.5769, 5.4902, 3.0323, -1.0259, -0.501, 1.7689, 10.381, 12.0253, 9.1922, -4.9615, -15.0315, -19.9651, -21.4377, -17.68, -6.4577, -27.2328, + 10.6391, 10.7983, 11.4949, 16.5329, 19.2664, 13.6129, 6.1846, 2.4573, -3.1501, -7.1814, -7.9387, -2.6238, 4.6419, -5.9113, -9.351, -7.0591, -3.2275, -10.282, -10.5308, -28.3726, + 18.6364, 19.3874, 19.593, 14.3075, 9.4402, 3.6045, -1.9801, -5.5352, -9.0094, -10.9308, -12.7345, -14.0779, -10.9593, -3.8674, 6.3753, 9.5959, -1.4018, -7.4988, -6.1435, -16.8015, + 9.4969, 11.3591, 11.5468, 7.8918, 4.7217, 3.0266, 4.2145, 2.2878, 1.2224, 5.6903, 10.6919, 4.2718, 0.7184, -3.7583, -6.7954, -8.0558, -7.9668, -10.2861, -12.5018, -27.7759, + 1.9805, 4.9512, 7.016, 7.8284, 8.7891, 8.0863, 7.7994, 7.9865, 8.6027, 13.1944, 14.7771, 11.0643, 2.1716, -5.7171, -10.9834, -8.7615, -16.8907, -14.3039, -17.4732, -30.1175, + 7.4683, 9.4924, 11.1231, 14.049, 15.3387, 7.9538, 5.2116, -0.0275, -3.0014, 0.105, 0.6547, 7.966, -2.3476, -7.0894, -4.6113, -2.0949, -15.972, -16.2041, -7.4758, -20.5386, + 4.8388, 4.2032, 3.5738, 6.4994, 10.8701, 16.7006, 14.8672, 6.7149, 3.1448, 0.6167, 2.5321, 7.5899, 1.6456, -3.0073, -4.4465, -2.3406, -11.2907, -15.6965, -17.0827, -29.9328, + 9.8208, 5.5733, 3.2835, 2.3197, 5.4502, 9.1113, 10.3794, 8.6442, 6.0107, 6.4897, 4.2548, 1.1709, -4.1757, -9.6942, -10.5243, -11.8609, -10.0641, -3.4488, -2.2532, -20.4873, + 5.8783, 5.8851, 7.6595, 5.2009, 5.1, 1.982, 2.2615, 1.4023, -1.1079, 1.1247, 3.7199, 2.8362, -0.5182, 1.4421, 1.5607, -8.4521, -3.7106, -1.6008, -5.275, -25.3888, + 13.8298, 17.3228, 17.9494, 18.8765, 12.6415, 7.5326, 5.2828, 1.03, -1.0231, -5.4994, -6.6194, -2.5155, 4.6895, -3.4515, -7.2113, -4.1051, -13.7542, -14.3604, -11.8611, -28.7541, + -8.8559, -3.0649, 2.2249, 4.9828, 6.417, 6.9906, 9.9342, 12.0149, 12.2463, 14.3103, 18.4345, 6.3234, 4.2404, -2.7341, -6.9396, -10.7644, -10.1668, -12.3674, -16.3891, -26.8371, + 10.9983, 13.5279, 16.2801, 19.6892, 16.9475, 11.0028, 3.9633, 1.1799, -2.0078, -0.985, 2.7247, -0.1311, -6.6215, -8.589, -4.3971, -11.9543, -15.4358, -13.3278, -4.8427, -28.0217, + 7.2013, 9.1028, 13.1142, 19.8377, 22.536, 16.6528, 11.833, 10.3141, 12.9885, 15.8372, 9.0995, 8.4627, 1.1838, -14.4656, -21.4397, -23.6775, -22.5547, -24.8595, -24.4974, -26.6692, + -8.4073, -6.6779, -3.958, -1.6241, -2.147, -2.2867, -2.2534, -3.0205, -4.5931, -2.5545, -2.135, -1.3098, 1.1053, -1.1397, 1.217, 6.2234, 3.6093, 9.8015, 23.5766, -3.426, + 9.6955, 11.4467, 15.0851, 15.4765, 9.8267, 3.549, -0.5777, -2.7726, -5.1878, -5.7225, -4.4558, 0.4969, 9.2914, 5.8917, 6.4235, -4.2514, -11.0149, -9.4893, -13.0444, -30.6665, + 2.9943, 1.4307, 0.8714, 2.2925, 2.1145, 2.9148, 2.4003, 1.9382, 1.6662, -2.3476, -2.0877, -1.9322, 3.3342, 1.7171, -0.9114, 3.2785, 1.7852, 1.4651, -1.3549, -21.5695, + 7.7138, 9.34, 11.7519, 14.3217, 14.9762, 11.0903, 9.904, 9.3599, 10.4611, 6.3795, -3.9927, -7.6734, -12.4888, -12.1729, -5.7999, -5.5417, -9.569, -9.5926, -7.6846, -30.7825, + 4.4498, 9.229, 15.0677, 17.9679, 11.2745, 2.673, -0.9888, -5.6255, -7.5349, -8.4589, -8.451, -5.5027, 1.7669, 4.3143, -4.8629, -2.0721, 4.6797, -5.0125, -4.4213, -18.4923, + 11.1829, 12.4396, 12.7925, 12.6901, 8.015, 3.4089, 1.7847, -0.2306, -2.0077, -1.0178, 2.2167, -0.4542, -8.4111, -8.9029, -8.0861, -3.9439, -6.2512, -2.2635, -2.1307, -20.8306, + -0.0237, 3.59, 4.5144, 3.8794, 5.7527, 11.0182, 8.9091, 7.1863, 7.0702, 7.1782, 4.7799, 0.6784, -4.3508, -5.3991, -6.5953, -5.6132, -9.5378, -5.6903, -1.3834, -25.9632, + -2.7117, -1.4799, 1.2116, 2.3262, 3.7406, 3.7668, 1.2697, 0.2086, 0.7399, -1.3479, -2.2145, -3.7982, 4.9747, -0.4583, -1.7465, -0.9161, 7.2119, 0.8965, -0.2723, -11.4012, + 7.6123, 10.5335, 16.3125, 23.5319, 21.6117, 16.329, 18.2001, 16.9715, 0.9425, -7.0707, -12.7338, -16.0871, -18.4761, -17.8994, -14.8763, -4.844, -8.9433, -6.8294, -0.8772, -23.408, + 9.1763, 3.0851, 4.6724, 8.0499, 14.6517, 16.8559, 10.4532, 11.9797, 13.2732, 7.6578, -1.4245, -7.0469, -11.9925, -15.0269, -14.7577, -15.9057, -2.4494, -8.2002, -4.4694, -18.5819, + -0.3793, 0.7119, 0.4558, 1.7011, 3.1548, 7.4097, 8.6888, 7.5902, 9.102, 7.3493, 9.7346, 15.2626, 6.8726, -0.7975, 0.8553, -9.6815, -9.3426, -14.3122, -13.9791, -30.3963, + 5.2988, 6.3406, 1.2009, 3.3308, 2.029, 2.8107, 1.003, 0.4513, -1.4458, 3.0391, 1.2595, -9.2407, 1.3164, 1.9175, 0.7738, 1.8301, 0.5948, -0.9497, -2.7482, -18.8117, + 23.5623, 25.058, 25.0568, 22.4174, 16.4713, 14.4026, 11.1159, 5.025, -1.0266, -8.5971, -10.1924, -9.612, -11.8638, -13.7028, -4.2, -6.01, -12.7481, -18.5497, -22.5946, -24.012, + -5.0424, -4.212, -3.2703, -0.4028, 1.8335, 3.2012, 2.3768, 2.0802, 0.6396, 0.2079, 0.1418, -0.1844, 2.5056, -0.2078, -1.3169, -0.2911, 0.814, 1.7717, 5.2809, -5.9255, + 7.633, 9.9835, 15.1303, 18.9128, 13.0001, 5.9224, 1.3978, -3.1674, -6.4703, -8.3713, -7.747, -5.2412, 1.6661, 5.3754, 0.9111, 2.2634, -7.6214, -11.2828, -5.6474, -26.647, + 15.3965, 19.4488, 18.3928, 11.4564, 4.0261, 0.4604, -4.6326, -9.8409, -11.0926, -12.7123, -13.1035, -12.3357, -8.4063, 1.3638, 7.8807, 5.5655, 3.421, 0.7205, 5.4867, -21.4953, + 4.0267, 4.8087, 7.0895, 9.6094, 12.6372, 17.6545, 19.7244, 17.4364, 13.7517, 13.9367, 6.0059, -4.5448, -9.4075, -13.3403, -13.662, -10.1856, -10.5214, -17.1512, -19.3146, -28.5537, + 26.5287, 22.7007, 21.6748, 17.6005, 11.9372, 12.6653, 5.4749, -6.1299, -8.9419, -6.962, -5.7222, -5.6209, -8.635, -10.0876, -8.1562, -7.7238, -5.4233, -10.0839, -13.1237, -21.9717, + 3.974, 4.1572, 5.7242, 12.448, 17.3522, 11.6512, 5.2405, 1.2103, 0.5569, 2.7329, 9.6369, -0.5073, -5.1263, -2.7956, -0.7621, -3.7186, -1.7764, -8.4788, -18.8985, -32.6208, + 6.8442, 11.6517, 15.0164, 13.0383, 3.5465, 0.5949, -3.0134, -7.5262, -8.2082, -8.6101, -7.2813, -1.2345, 9.272, 5.1011, 6.0543, -0.9163, -4.5878, 3.4588, -4.8078, -28.3926, + 7.8637, 4.0004, -2.938, 2.0521, 2.2442, -0.4633, 1.8855, 1.9277, -0.6295, 1.3834, 1.2896, 1.0703, -0.4938, 1.5669, 0.0079, -1.5584, -2.007, 0.9263, -0.4846, -17.6435, + 5.8623, 7.6023, 7.9357, 8.1933, 9.8252, 14.3094, 18.598, 17.631, 14.1029, 11.3791, 8.9224, 4.7903, -4.573, -11.3683, -17.8078, -14.2065, -11.2294, -16.2936, -23.1509, -30.5225, + -1.7942, -0.0063, 1.995, 3.6026, 3.2262, 0.8396, 2.3621, 2.373, 0.2704, 0.4107, 0.3605, 1.3362, -2.3048, -2.1177, -2.8566, 0.0808, -2.4432, 2.0828, 10.0173, -17.4341, + 16.0587, 21.303, 20.2092, 12.229, 4.0091, 1.0523, -3.6402, -8.1002, -8.5006, -10.1681, -9.7303, -7.7995, -1.2107, 8.9891, 5.5157, 1.2399, -8.3907, -7.4334, -1.1958, -24.4366, + 15.8248, 21.2415, 22.3705, 19.6523, 12.6511, 4.98, 2.0524, 1.2562, -2.0002, -7.0989, -8.4866, -8.1644, -3.6111, 2.9801, -6.3159, -7.3905, -2.5939, -11.1587, -18.1433, -28.0453, + 11.4701, 14.8919, 19.2495, 17.1766, 9.1256, 4.6224, 0.3569, -3.6692, -6.2969, -8.7664, -7.4764, -1.7487, 3.4354, -4.0219, -5.5797, 1.1971, -7.0079, -5.6899, -4.914, -26.3546, + 4.0502, 6.3561, 7.7528, 13.2425, 22.1071, 16.8285, 10.8539, 9.9555, 11.6373, 14.4871, 1.0686, -6.014, -8.7291, -9.9474, -5.242, -14.0196, -19.62, -16.4317, -13.2116, -25.1241, + 14.0747, 12.9823, 14.7396, 18.358, 20.8024, 21.6686, 20.4893, 18.2777, 14.8271, 4.2101, -4.6228, -5.0852, -8.9555, -9.9704, -14.4886, -22.2364, -24.8924, -24.6202, -19.9776, -25.5806, + 6.5756, 6.5342, 9.0959, 14.5314, 20.6452, 22.1123, 17.0555, 14.5823, 18.4626, 9.7441, 0.1482, -4.4759, -4.9624, -0.2271, -12.9306, -21.6336, -23.8195, -22.7039, -21.8165, -26.9179, + -2.413, -0.2375, 2.8918, 5.5011, 6.7427, 5.7418, 5.0778, 5.1858, 4.3188, 3.4462, 4.3416, 1.8899, 2.3449, -0.9372, -1.2877, -2.8414, -4.0969, -5.4193, -7.2573, -22.992, + 18.6934, 11.3904, 9.2311, 9.3832, 5.4199, 3.6295, -0.1793, 0.6487, -3.5589, -4.0062, -6.2031, 0.6797, 0.8497, -5.8255, -3.0197, -0.8407, 3.412, -4.6925, -10.2551, -24.7566, + -1.1447, 1.564, 1.4686, 1.7604, 1.7234, 2.3262, 4.7312, 2.6246, 3.8383, 6.5465, 3.383, 1.7225, -1.7619, -1.0275, -1.1491, 1.9434, -4.9663, -2.3871, -2.8449, -18.3507, + 14.1023, 13.565, 10.151, 8.7911, 7.7313, 7.648, 9.2651, 8.0399, 4.9244, 6.1141, 5.5459, -0.9256, -6.155, -7.0836, -8.6484, -9.0926, -9.2649, -13.5303, -12.0852, -29.0925, + 9.8451, 13.4743, 16.9269, 13.4623, 5.8133, 1.7553, -0.7487, -3.9831, -8.1249, -9.5689, -8.7611, -6.3983, -0.6612, 10.9895, 12.8583, 0.3283, -8.6023, -10.4136, -5.9048, -22.2865, + 19.2227, 18.1307, 15.9732, 13.2757, 8.9377, 4.0318, 2.7371, 2.4204, 4.8079, 5.9436, -1.6587, -5.6682, -8.2354, -8.6156, -5.7373, -5.9194, -13.5825, -11.1928, -9.7272, -25.1435, + 9.7172, 12.7596, 17.788, 19.5982, 13.1714, 6.9756, 4.2961, 1.3629, -0.4383, 4.963, 8.784, 0.9395, -2.9094, 0.87, -9.7739, -17.6442, -19.7626, -14.0983, -10.0576, -26.5411, + 19.7847, 26.9921, 27.0885, 20.9467, 13.4352, 6.9927, 3.8926, 5.5073, 6.395, 3.641, -3.526, -9.9366, -12.2833, -15.4366, -15.2739, -13.403, -13.6697, -14.5223, -14.0162, -22.6082, + -4.745, -2.3439, -1.2527, 0.2681, 2.5169, 3.0271, 3.2731, 1.1854, -1.4898, -2.2085, 0.9214, 6.1154, 5.0556, 7.1405, 5.3972, 1.8235, -0.1874, -0.9732, -2.7856, -20.7382, + 2.7354, 2.9846, 4.5226, 11.0075, 16.9767, 9.7039, 5.0497, 0.2367, -2.2382, -2.2319, 3.3972, 5.8953, -3.5572, -7.9222, -5.1006, 4.0687, -6.798, -6.9512, -1.5062, -30.2728, + 1.8923, 1.9933, 1.7272, 1.4697, 2.1029, 2.7198, 2.2271, 0.4083, 1.489, 2.3633, 0.0136, -3.1335, -1.8351, -3.4645, -2.5082, 0.1244, -0.6305, -0.2515, 2.667, -9.3744, + 7.3147, 10.8559, 16.3202, 21.3322, 15.5047, 5.7917, 2.0324, -0.5787, -3.8385, -3.1611, 4.7722, 6.9085, -0.8153, 0.2585, 0.5455, -11.9753, -19.4608, -19.4821, -11.0006, -21.3242, + -4.8271, -2.3317, -0.8263, -0.6913, 0.0284, 2.1785, 4.853, 2.4866, 0.5257, 1.0973, 0.9581, 2.0508, -0.085, -0.324, -2.1544, -3.6769, 8.253, 1.6818, 2.7619, -11.9586, + 28.0344, 21.3292, 26.7011, 15.9009, 17.4755, 11.8357, 5.06, 6.5559, -4.3031, -3.5802, -8.7494, -8.4692, -7.5683, -2.5689, -10.7488, -16.5549, -18.6071, -16.7713, -13.4451, -21.5263, + 11.4465, 12.5754, 14.651, 12.0835, 5.352, 1.6789, 2.3021, -2.4719, -2.0905, -0.5169, -2.1754, -2.9241, -2.7917, 2.0815, 1.0635, -3.6587, -4.768, -6.8125, -8.2348, -26.7899, + 11.1007, 8.9165, 11.8079, 11.0313, 1.9749, -0.9229, -2.467, -6.7769, -9.1537, -10.4373, -8.8596, -6.3617, 0.2425, 8.333, 2.9722, 9.5504, -3.2943, -3.168, 4.4488, -18.9367, + 12.7055, 18.2073, 17.6143, 9.1957, 1.5762, -1.0952, -4.9687, -6.129, -7.3791, -7.2053, -4.3066, 3.6014, 9.8467, 10.7313, -1.8676, -11.4282, -13.9225, -8.1802, 2.6837, -19.6797, + 0.8368, -1.761, 0.4628, 2.3612, 5.116, 7.7374, 9.4921, 4.3865, 6.1712, 5.6238, 6.3738, 5.3491, 2.7348, 5.4859, 4.6651, -8.4273, -10.9892, -8.675, -10.7619, -26.1822, + 12.9582, 16.0251, 19.0637, 18.9347, 12.6765, 7.8161, 3.8112, 0.9397, 6.1611, 7.4639, -2.5194, -7.1391, -10.2242, -10.1934, -4.1747, -5.7525, -14.4868, -8.2946, -13.9643, -29.1013, + 29.3165, 26.9707, 19.9517, 12.4469, 7.3647, 2.8794, 1.4068, -2.4963, -5.4012, -4.1083, -5.2153, -6.4891, -5.9548, -6.4872, -6.651, -6.7351, -9.9422, -8.4833, -11.8558, -20.5171, + 7.6646, 7.8496, 5.346, 3.4574, 6.3183, 1.1408, 3.1494, 5.1045, 0.2373, 1.0847, -0.432, -0.3662, -0.3503, -0.5473, -8.1949, -0.9695, -1.7599, -3.3828, -3.0248, -22.3253, + 7.0587, 8.6157, 9.7452, 14.4294, 20.8498, 17.0788, 7.0614, 2.4228, -0.5017, -1.0215, 3.1054, 5.3564, -3.4904, -7.3987, -7.4398, -7.0656, -8.8032, -12.863, -18.8666, -28.2731, + 5.767, -2.6937, 9.6459, -0.7839, 10.7523, 2.796, -2.6113, -3.2915, -6.2928, -7.6167, -12.6729, -5.4796, 5.0447, 13.7582, 10.305, 4.5191, -1.3433, 5.4917, -1.7375, -23.5567, + -11.2311, -7.9712, -5.4028, -3.3542, -3.1975, -4.2245, -3.9952, -5.3576, -5.3493, -4.8108, -5.4962, -2.9288, 2.5785, 4.7736, 13.8058, 17.8731, 9.8332, 14.95, 11.022, -11.5171, + 2.8142, 1.3603, 4.2714, 4.8975, 4.3374, -3.4231, 3.1881, 5.0714, 3.9705, 6.2234, 3.7268, 5.279, 1.3825, -7.6582, -2.9268, 2.0075, -4.057, -5.6086, 1.2855, -26.1418, + 4.9776, 6.4457, 7.7463, 9.3687, 9.5559, 9.1954, 6.3666, 4.9237, 2.1719, 1.7788, 1.4634, -0.3859, -6.1409, -5.3778, -2.6336, -2.5068, -8.3667, -7.0441, -11.2867, -20.2514, + 10.0472, 11.9967, 16.4907, 19.9334, 16.2325, 9.2915, 4.313, 0.7097, -4.0959, -8.1186, -10.5064, -10.3134, -5.2102, 1.0801, -1.5982, -3.8949, 1.2501, -7.5248, -12.9333, -27.1495, + 17.0433, 19.1713, 22.6813, 17.1064, 8.7516, 4.3917, -0.7236, -5.3026, -7.9288, -8.3773, -7.4784, -3.7859, -2.5186, 0.02, -1.5465, 0.1954, -10.783, -12.0301, -3.0579, -25.8283, + 18.6591, 22.3501, 23.5831, 19.0252, 13.9063, 13.3289, 9.0463, -3.2346, 1.2718, 1.4619, -4.3706, -7.4089, -10.771, -11.8151, -0.8947, -8.7094, -22.3259, -8.0672, -18.5235, -26.5118, + 3.2886, 3.8514, 1.5062, 4.9096, 3.9001, 3.8964, -0.6349, -1.5534, -1.3119, -2.313, -1.8455, -3.5666, -2.6094, 3.4411, -1.0089, -3.0556, 4.525, 3.3979, 1.1349, -15.952, + -5.6652, -3.8931, -1.8885, 1.6299, 2.3371, 2.0746, 2.1285, 0.4372, 0.0031, 4.2521, 5.201, 3.3227, 2.8933, 1.9467, 2.1449, 0.9405, 2.168, 2.3807, -1.3113, -21.1022, + 21.727, 24.2953, 23.2112, 13.4917, 7.3423, 1.4843, -3.1924, -4.8355, -10.3896, -11.396, -12.8133, -11.6304, -9.9774, -2.6034, 3.7943, 3.526, -4.2988, -6.0579, 0.3494, -22.0269, + 7.1102, 6.3521, 11.665, 18.7864, 16.7459, 8.3216, 5.8454, 4.3436, 9.4868, 7.7601, -3.1382, -10.3196, -14.1642, -15.1634, -11.6972, -1.82, -7.1959, -8.5258, -1.8553, -22.5374, + 14.2212, 17.8028, 21.4842, 24.9383, 24.9854, 22.3982, 21.377, 20.9687, 13.4315, 0.0683, -9.1695, -13.1215, -13.8982, -14.9798, -18.1636, -20.5802, -22.0396, -23.026, -22.3178, -24.3795, + 8.9039, 9.7955, 9.3225, 11.7206, 17.8844, 21.1802, 19.2262, 17.3421, 13.9029, 7.386, -2.6995, -8.3297, -10.1319, -8.7756, -6.059, -8.7597, -15.4747, -24.0243, -25.5723, -26.8375, + 3.8554, 4.2234, 6.2441, 12.5445, 18.1461, 14.0699, 5.9992, 2.722, 1.0526, 2.1813, 9.5825, 3.3502, -4.3618, -5.0291, 0.561, -10.3142, -15.3449, -12.7063, -7.6401, -29.1358, + -8.9085, -6.1917, -3.8341, 0.0473, -0.3559, -1.0455, 0.4343, 0.7424, 0.1788, -2.4081, -1.5815, 0.7755, 2.7896, -0.3538, 0.5914, 4.753, 5.3039, 5.5717, 8.461, -4.9697, + 6.0177, 9.1902, 12.54, 17.665, 18.0833, 11.1113, 3.6376, -0.9348, -2.434, -3.3221, -2.487, 5.475, 6.1443, -3.6923, -2.5169, -0.6902, -11.0083, -16.8129, -17.3554, -28.6106, + 12.6629, 16.5188, 17.012, 11.3763, 2.7817, -0.7077, -5.5288, -8.1972, -9.1883, -10.5072, -9.3239, -6.2042, 2.0877, 8.3448, 2.7802, 8.4635, -5.0126, -9.023, -5.59, -12.7449, + 26.6077, 25.1133, 19.7421, 13.7493, 7.5294, 4.8418, 5.8235, 5.9404, 3.3399, 4.8147, -1.6758, -4.4299, -7.1722, -6.547, -9.6023, -9.9251, -17.0327, -19.5694, -18.7525, -22.7953, + 9.3391, 15.4719, 19.7226, 13.6838, 5.7655, 2.9423, -0.2309, -3.0447, -5.0071, -3.643, 3.6089, 8.1171, -1.0555, -2.536, 2.0952, -6.4482, -11.0547, -9.9411, -11.5931, -26.1921, + 6.7164, 12.9088, 8.1465, 2.9974, -1.5306, 3.7966, 4.6355, 0.1956, -4.4054, 2.5643, -3.5126, -0.4027, 0.5107, -1.6406, 0.9829, -5.6846, -0.0083, -4.8894, -3.3272, -18.0535, + 1.8584, 3.5453, 10.7864, 10.3313, 8.8364, 11.3153, 12.655, 8.0839, 10.2072, 14.1247, 0.1105, 4.9955, 5.9811, 7.9709, 7.5141, -6.0319, -21.0185, -23.4977, -32.6987, -35.0693, + 13.1044, 15.4062, 17.5958, 18.0756, 11.3524, 4.367, 2.6428, 0.8781, 0.0399, 6.6751, 8.2361, -2.6757, -10.1776, -9.8299, -3.1506, -9.5151, -14.3971, -6.2859, -13.5883, -28.7532, + 0.0688, 2.2921, 6.5965, 8.3598, 8.2327, 8.6486, 7.1471, 7.1631, 4.4823, 3.4067, 11.3001, 9.5567, 0.6574, -2.5849, -6.7404, -8.6614, -8.6399, -12.0189, -13.1958, -26.0705, + 9.5134, 11.1944, 14.6379, 21.3303, 20.9351, 12.8622, 5.9234, 3.0673, 0.5662, 2.8569, 7.4992, -0.6339, -9.8527, -12.4761, -11.2573, -4.7464, -13.594, -18.0638, -14.8928, -24.8691, + 5.5904, 5.1588, 4.7053, 4.3271, 5.8271, 9.5093, 8.411, 1.6453, -2.2667, -2.6767, -1.4248, -1.126, 2.4114, -1.8009, -4.819, -8.2201, -2.9355, -0.2567, -0.3488, -21.7105, + 0.4175, 1.2148, 5.1829, 9.3743, 9.7458, 5.9476, 5.0377, 2.5369, -2.7391, -8.896, -11.0818, -7.065, -7.4393, -1.4335, 10.1963, 9.6385, 5.0133, -4.2894, -3.8725, -17.489, + 8.8274, 9.1037, 13.6965, 18.9331, 20.496, 15.7102, 9.1227, 5.5813, 1.7546, 1.3849, 6.9672, 6.4807, 5.2247, 4.2668, -9.8256, -18.2374, -24.2455, -24.1902, -22.7864, -28.2649, + -10.4296, -11.2348, -7.6061, -8.6646, -7.9499, -6.125, -4.3918, -6.8877, -5.4461, -2.2579, -1.3507, 2.298, 4.8244, 12.7426, 12.4434, 14.4927, 14.8125, 12.9871, 9.6224, -11.879, + 8.889, 12.0408, 17.2338, 23.3492, 22.1801, 17.325, 16.4611, 18.6109, 12.0359, -2.1102, -7.5218, -11.7288, -11.4854, -7.679, -11.7033, -21.2349, -23.6258, -19.3358, -7.8566, -23.8442, + -7.7648, -7.6325, -5.9874, -5.7763, -5.5038, -4.9788, -3.5524, -3.9264, -4.7269, -2.6727, -1.6911, -0.4884, 1.8633, 1.5449, 3.1375, 9.0909, 11.6855, 13.422, 16.9117, -2.9544, + 17.5979, 21.004, 20.369, 15.7264, 13.3239, 13.0722, 13.4678, 1.7577, -6.0904, -6.9925, -8.3415, -10.6335, -9.5482, -1.5234, 3.987, -6.9271, -17.4878, -18.4739, -8.9267, -25.3608, + 6.1805, 4.1462, 3.501, 2.723, 3.9708, 8.1302, 9.491, 3.6927, 2.979, 2.0598, -0.61, -1.6298, -2.5238, -2.5441, -3.9959, -2.7189, -3.9403, -3.9477, -4.9568, -20.0067, + 7.7322, 4.4707, 5.232, 7.8782, 9.1005, 5.4418, 6.0577, 3.7093, 0.1939, -0.2785, 1.1984, -2.6011, 0.6595, 2.7395, -0.9452, -4.5096, -8.4529, -6.4501, -6.8768, -24.2995, + -6.4169, -3.8203, -3.3676, -1.3384, 0.0068, -0.0917, -0.654, -1.1092, -2.2062, -2.8976, -3.0409, -2.6706, 2.975, 6.3064, 7.4779, 12.0806, 5.7715, 5.5715, 0.9432, -13.5194, + 7.6067, 9.3813, 13.4849, 19.9139, 22.7781, 18.435, 15.914, 18.9134, 10.1002, -4.3291, -8.2178, -13.6741, -15.704, -16.5313, -14.1193, -3.7115, -13.7922, -12.8183, -7.7992, -25.8309, + 4.7167, 3.8923, 5.7519, 8.0369, 12.8563, 16.738, 15.0698, 9.7568, 7.4623, 7.4165, 7.755, 1.1797, -6.3964, -6.5897, -1.5093, -9.7231, -17.0341, -15.7607, -12.6623, -30.9568, + 9.6098, 13.4286, 18.728, 18.1791, 9.8536, 3.5779, 1.4841, 0.4639, -0.5329, 2.6536, 9.8742, -3.2808, -8.9269, -11.0817, -6.3122, -2.5681, -15.3236, -12.3977, -1.9946, -25.4341, + 3.899, 7.6431, 13.4623, 16.8504, 10.0821, 3.4259, -0.1709, -4.7791, -8.1809, -9.2214, -8.3021, -5.9798, 2.0125, 6.9915, 1.4712, 6.5493, -3.7836, -4.9571, 1.3613, -28.3737, + 13.9079, 16.7984, 20.6342, 24.6533, 24.3507, 19.3643, 17.9172, 18.392, 11.702, 0.001, -10.1043, -14.9084, -18.2285, -20.4094, -21.5267, -19.7383, -13.5385, -9.5045, -16.6159, -23.1465, + 7.1797, 11.3922, 15.749, 19.3949, 17.3819, 10.7478, 7.3006, 6.1472, 9.1598, 11.0073, 4.7816, -2.4892, -3.7349, -3.7521, -1.7971, -9.8976, -22.2914, -25.755, -23.0236, -27.501, + 5.66, 8.46, 10.4652, 12.1954, 14.9914, 18.5645, 17.0459, 10.3163, 4.813, 2.322, 0.5889, 4.1108, 1.2082, -9.395, -13.7061, -13.109, -10.106, -11.3113, -21.8744, -31.2396, + -1.8886, -0.7563, 0.4909, 4.9127, 6.9239, 5.1456, 6.2254, 6.4299, 5.1768, 9.199, 13.2223, 5.4194, -3.0538, -4.7242, -5.1855, -3.7939, -7.3421, -6.1816, -4.3871, -25.8328, + 11.3455, 9.9507, 8.1659, 6.0877, 1.4526, 0.9704, 4.7975, 4.0208, -0.5941, 2.5357, 1.534, -4.3306, -1.6103, -4.4373, -0.0323, -2.6725, -2.0195, -3.5278, -6.3697, -25.2666, + -0.8009, 5.6194, 7.0974, 6.1331, 7.2063, 7.4038, 4.5741, 8.4379, 4.2968, 7.9137, 13.0725, 2.3362, 0.6963, -2.4917, -4.9374, -7.2728, -8.216, -9.6329, -14.4558, -26.98, + 9.4449, 12.499, 15.8206, 17.3018, 10.9373, 5.5366, 0.8716, -1.2105, -2.477, -3.4484, 1.0611, 6.1591, -1.7466, -7.5929, -6.9295, -2.1338, -8.9361, -10.3674, -6.3554, -28.4344, + 11.5326, 10.9047, 16.3163, 21.0845, 11.9757, 7.0511, 0.8356, -4.987, -6.945, -9.2309, -9.7748, -8.2038, -2.2957, 5.5139, -5.4119, -2.741, 2.4166, -7.4497, -6.0628, -24.5286, + 9.3064, 9.3678, 11.2235, 13.9991, 14.4345, 11.1982, 6.3282, 1.4131, -2.6884, -7.1825, -11.0075, -12.3749, -9.2573, -6.0414, 2.3206, 4.6097, 3.567, -3.2208, -9.5445, -26.4507, + -6.7163, -6.0323, -3.7943, 0.882, 3.6629, 4.3198, 4.7402, 4.0799, 4.8854, 5.8718, 8.3927, 9.6825, 10.5717, 3.8917, 0.9125, -1.2807, -3.7018, -5.757, -8.2525, -26.3582, + 10.2748, 11.6455, 16.3809, 20.149, 18.2488, 12.7899, 10.3972, 8.0106, -0.6794, -6.4024, -9.7054, -13.5667, -14.6497, -16.1902, -6.9531, 0.2117, -0.7067, -1.2331, -10.6728, -27.3488, + 13.3782, 16.35, 15.3612, 8.9247, 3.489, -0.7729, -2.6106, -7.5432, -8.0129, -7.614, -7.8535, -2.4356, 6.505, -4.5887, -3.2816, 5.8982, -1.3889, 0.3111, 0.3606, -24.4762, + 10.0811, 14.1057, 20.3635, 24.0314, 20.369, 17.0236, 16.446, 19.2548, 6.0111, -3.4365, -9.9143, -13.0905, -15.015, -11.4726, -6.6405, -10.0976, -14.6658, -19.9459, -19.48, -23.9274, + -7.1817, -5.5458, -1.6137, 0.8007, 1.9284, 2.5116, 0.3432, 3.3359, 0.2833, -1.3305, -2.496, -1.6366, -2.6968, 3.6695, 6.8225, 4.4926, 6.194, 6.7541, 2.2072, -16.8418, + 9.6326, 11.3478, 14.3982, 20.7665, 19.7772, 12.3406, 6.1933, 1.0438, -1.1521, -1.586, 1.844, 7.8419, -1.5328, -9.8703, -10.1973, -2.244, -12.0413, -18.5948, -20.6014, -27.366, + 1.5056, 1.688, 4.2152, 9.5291, 17.0514, 16.2096, 8.5432, 4.2111, 4.4898, 11.7231, 5.577, -4.8191, -7.502, -5.9733, -0.7664, -10.2798, -14.8967, -9.8638, -3.1062, -27.5357, + 15.2115, 17.9992, 21.5012, 24.9136, 19.176, 15.8798, 16.4094, 17.804, 5.9025, -3.3769, -10.4408, -15.3738, -18.5882, -19.7882, -17.7007, -14.2386, -13.9566, -13.8247, -5.8162, -21.6922, + 12.1911, 17.2966, 17.4896, 10.6943, 3.5061, -0.1018, -2.5405, -6.3143, -7.6095, -8.5828, -7.4501, -2.2275, 8.4004, 0.023, -1.6734, 2.8727, -8.2243, -7.2548, -0.595, -19.8998, + -0.4264, 0.0708, 1.9133, 6.0904, 12.781, 17.8469, 12.0313, 4.9753, 4.279, 6.9401, 10.3052, 0.2003, -6.7328, -10.0168, -10.0292, -2.7869, -5.6536, -9.3242, -6.0818, -26.3818, + 7.8387, 12.9821, 20.1116, 21.8527, 15.0291, 10.4182, 9.9996, 12.5177, 11.6815, -0.1048, -5.5624, -6.4577, -2.0918, -6.3498, -17.7376, -20.9015, -21.1073, -13.6752, -3.7477, -24.6953, + 18.0184, 21.7405, 20.202, 16.4376, 12.3859, 12.2417, 12.1975, 6.3324, -4.4281, -11.4734, -5.9353, -8.8421, -10.328, -4.7973, 3.4477, 1.4017, -15.9637, -17.1346, -16.9459, -28.5571, + 8.9922, 8.4069, 10.2569, 10.5303, 10.1285, 4.9362, 1.8698, -0.0537, -5.3906, -5.9983, -4.6797, 1.6021, -1.9697, -5.3874, -2.3336, -0.9265, -2.7071, -2.3523, -3.3933, -21.5307, + 0.1643, -2.21, -0.9888, -3.4801, -0.5275, -1.468, -0.5683, -1.5514, -0.4216, 0.5034, -0.8521, -2.7835, 0.5014, -1.2182, -0.7495, 5.2974, 5.8643, 8.2766, 6.0259, -9.8143, + 7.672, 8.0788, 9.1059, 14.2217, 21.6149, 24.6272, 15.4198, 12.7487, 14.5686, 14.3925, 0.6524, -7.7122, -12.314, -13.4374, -8.0366, -14.9387, -21.7305, -22.0625, -19.3233, -23.5474, + 2.2815, 1.7578, -0.6674, 1.7705, 0.4755, 0.4978, -1.3799, -2.1107, -2.6075, -3.5652, -2.8715, -6.8295, -1.7109, 2.8096, -0.7449, 2.5543, 8.6739, -0.5359, 6.8846, -4.6821, + 18.2027, 16.9209, 12.1191, 7.6862, 3.0545, 0.5751, -1.6156, -1.2378, -3.1289, -4.2377, -5.6464, -5.0994, -5.0515, -1.2417, 1.1802, 1.1938, 0.3821, -6.3202, -6.4152, -21.3203, + 3.5023, 4.9407, 6.5095, 8.9494, 13.2647, 15.1725, 11.9431, 6.2423, 1.1652, -1.6313, -2.9929, -1.9072, 3.4422, 2.8306, -3.2309, -5.3351, -2.3238, -10.7536, -17.8375, -31.9502, + 4.7778, 10.318, 13.9538, 16.0868, 9.138, 2.9991, -0.6627, -4.2067, -5.6625, -4.9839, -1.2287, 7.7334, 9.3244, 7.4153, -4.1228, -11.6166, -8.7569, -5.6012, -5.8002, -29.1044, + -3.8341, -1.3838, -0.9472, -0.4209, 1.7906, 4.2155, 2.2324, 4.3091, 1.1357, 8.4456, 9.7973, 6.3722, 2.6068, 0.3293, 0.1016, -0.3203, -4.2313, -3.6986, -3.9405, -22.5593, + 7.9933, 10.952, 14.6109, 19.7867, 15.1983, 6.5296, 4.9056, 0.7415, -0.5271, -0.1092, 6.9036, 12.3792, 7.7901, 2.0866, -9.1117, -12.3605, -5.7793, -23.1437, -29.0076, -29.8384, + 25.899, 23.1895, 19.6721, 15.4616, 9.3167, 5.4831, 6.1546, 7.4477, 4.2279, -1.3757, -8.0309, -11.4646, -10.4795, -7.5543, -4.2227, -6.0439, -16.4547, -16.3865, -13.0397, -21.7998, + 5.9702, 6.6918, 8.5551, 14.7594, 15.5278, 10.2403, 6.0423, 1.7099, -0.1415, 0.4245, 5.8906, 10.2752, 2.9571, 1.0304, -7.5844, -15.493, -16.0321, -8.3602, -12.0263, -30.437, + 0.2377, 1.249, 0.9118, 1.8024, 3.7548, 4.8963, 5.1515, 4.2684, 0.3786, 0.5058, 0.4839, -0.9914, 1.4073, 1.1727, -2.9065, -4.4307, -6.9456, -0.2385, 0.3969, -11.1044, + 4.9017, 3.2442, -1.2482, -1.2472, -2.0773, -5.4371, 0.3708, 4.1825, 12.1289, 1.295, -2.3136, -3.1723, -0.4429, -1.6571, -9.7455, 6.5626, 13.4075, 7.0987, -2.0865, -23.7642, + 26.5958, 8.4474, 11.9082, 11.6976, 1.401, -0.25, 3.9848, 3.6429, -6.0468, 2.5341, -5.2699, -11.5085, 3.8103, -6.3108, -2.4679, 2.153, -6.3876, -7.178, -8.406, -22.3496, + 2.2962, 0.8041, 0.8352, 6.615, 14.5461, 15.0856, 3.2964, 0.5549, -1.6557, -2.0236, 2.8955, 7.5016, -1.2031, -5.6899, -4.7833, 1.2942, -7.3403, -8.3771, -4.0417, -20.61, + -3.152, -0.4969, 6.6485, 7.8768, 5.5605, 6.5283, 5.6337, 4.1543, 13.9779, 2.7762, 6.1398, -3.707, -1.7982, -2.8944, -6.0041, -6.5265, -11.4873, -1.5122, 6.058, -27.7754, + -8.002, -4.6131, -0.7821, 3.316, 4.4465, 4.7754, 2.8155, 1.0612, 4.806, 6.0492, 5.939, 3.1446, 2.8568, -0.6657, -2.6961, -2.15, -0.9756, -0.2816, -1.9847, -17.0594, + 12.4378, 17.8157, 22.2857, 21.4926, 15.3987, 11.6565, 8.461, -5.9608, -14.7466, -15.8101, -21.885, -17.3295, -13.0545, -3.3503, 5.7314, 1.5346, 1.1396, -7.594, -1.8366, -16.3862, + 0.8964, 0.1937, 0.1104, 1.6479, 5.6517, 12.189, 10.2771, 4.4234, 1.0502, -0.5311, 1.2594, 6.8796, 5.2931, -3.9156, -6.05, -0.9098, -4.2858, -6.9837, -7.0958, -20.1002, + 19.8439, 13.428, 9.6622, 10.665, 8.095, 5.5066, 1.7572, -1.0429, -0.8012, -2.8142, -0.4934, 1.3117, 0.5243, -6.173, -8.129, -6.3324, -1.5063, -10.0417, -9.139, -24.3207, + -2.7279, -1.7097, -1.1534, 1.6639, 5.7537, 6.7942, 10.6044, 12.5105, 10.6069, 10.0936, 6.6639, 5.768, -0.0784, -3.9348, -2.0808, -2.5423, -7.773, -12.2311, -11.4054, -24.8224, + 10.1275, 12.1619, 16.2723, 20.8127, 20.974, 14.8019, 10.1842, 6.5306, 4.4543, 7.4531, 12.2713, 6.962, 6.8204, -5.0668, -18.1362, -24.0479, -25.9037, -25.4208, -24.389, -26.8618, + -9.9466, -6.5695, -9.8093, -1.7391, 0.058, 3.2073, 7.0375, 2.3619, -1.1764, -5.8692, 0.305, -4.2033, 11.2777, -0.3904, 7.8268, 9.8649, 4.7504, 6.9825, 7.6743, -21.6424, + 14.0137, 16.9699, 19.0697, 15.0058, 7.0268, 5.9083, 2.9474, 2.1595, 3.8159, 7.2602, 11.3975, 7.5965, 1.66, -6.7074, -13.8401, -15.7435, -16.6488, -16.4066, -16.4466, -29.0384, + 6.2399, 3.2858, -0.2213, -1.4923, 1.3132, 3.933, 3.5221, 2.8631, 1.3615, -0.079, -1.0125, -1.0737, -0.3033, -0.848, -0.4749, -1.1495, 0.1031, -0.209, -1.3002, -14.458, + 14.6593, 20.5101, 23.6344, 20.8409, 12.562, 6.6891, 3.7103, -0.8534, -3.6042, -5.9363, -7.011, -3.7764, 1.6775, -5.6072, -12.2281, -10.8044, -4.3275, -11.1148, -14.7836, -24.2367, + 17.5445, 22.4817, 15.1353, 12.588, 5.1049, 1.9643, 5.3928, -3.5987, -0.475, 11.7373, 12.9388, -3.8264, -3.5752, -8.3127, 9.4226, -10.0441, -20.2747, -19.0638, -21.801, -23.3385, + 11.5639, 14.1176, 19.178, 24.7909, 18.2344, 11.0457, 8.2594, 6.6617, 7.5852, 14.184, 12.1883, 7.8148, -0.4947, -16.4472, -21.5615, -22.7378, -21.8493, -21.9703, -24.981, -25.582, + 7.3833, 6.5793, 5.7205, 10.2722, 16.6567, 15.1599, 9.5922, 5.5668, 5.0234, 9.3817, 5.3741, -5.1082, -9.8091, -12.3432, -12.5495, -6.2366, -5.9929, -8.3697, -6.8581, -29.4426, + 0.3726, -5.6285, -3.2253, 2.1557, 3.8332, 12.1538, 14.6059, 12.3634, 15.7294, 17.0679, 4.8054, -1.6834, -7.5585, -11.9417, -12.8749, -9.7037, -1.2933, -5.8852, -6.0304, -17.2623, + 12.4589, 17.5375, 23.1698, 18.7129, 9.0574, 6.8369, 3.3366, -0.7668, -3.5028, -5.8079, -2.0422, 3.5413, -5.492, -15.4559, -14.9601, -7.186, -2.1139, -10.3945, -4.5301, -22.3991, + 7.7831, 5.9803, 3.3957, 1.1363, 0.6624, -0.3876, -1.227, 0.535, 0.3563, 5.2276, 9.1991, 8.9238, 2.632, -1.9335, -4.212, -2.5342, -1.0999, -4.9168, -4.9485, -24.572, + 12.7865, 11.7808, 12.0132, 12.7418, 11.7725, 11.2618, 10.9064, 7.0094, 3.3808, -2.3233, -4.5714, -6.7413, -8.0255, -8.7048, -10.995, -7.0616, -9.371, -7.6597, -4.91, -23.2897, + 7.4583, 10.3954, 16.3813, 20.381, 16.5656, 9.1371, 4.5296, 4.0559, 6.8658, 9.8043, 0.1187, -6.6202, -8.4161, -2.4957, -9.4787, -16.3418, -17.6122, -13.1639, -7.5007, -24.0638, + 10.5778, 12.5102, 15.45, 16.251, 14.1076, 12.4513, 11.9259, 10.4537, 6.3771, 1.6824, -3.8825, -5.5239, -8.8633, -8.0708, -4.646, -3.2386, -13.9943, -17.4761, -15.8823, -30.2093, + 16.545, 21.4563, 20.013, 10.542, 0.7521, -0.1817, -5.7313, -0.269, -4.1817, -0.5968, 6.2079, 4.1626, -0.4622, 5.1095, -10.2058, -16.0783, -19.9597, -11.663, 4.3789, -19.838, + 0.6538, 1.9228, 2.293, 5.2351, 12.5744, 11.0394, 7.485, 0.8228, -3.4564, -5.0324, -2.9456, 4.4755, 9.605, 1.6136, 0.0025, -0.9954, -6.7769, -7.886, -2.933, -27.6973, + 14.1315, 17.7109, 22.9482, 25.5022, 19.8506, 12.4355, 10.8121, 14.0608, 12.2635, -2.6541, -11.3457, -15.5204, -18.073, -18.739, -15.772, -7.2576, -9.9721, -9.7355, -17.106, -23.54, + -5.7314, -4.059, 1.0581, 0.9805, 1.3616, 2.7093, 6.3692, 11.6381, 12.018, 9.1818, 6.8001, 1.9409, 3.0785, -2.5335, -5.799, -0.6774, 0.8325, -4.7436, -7.1073, -27.3175, + -1.064, 0.7851, 2.716, 6.1021, 12.1198, 15.4431, 10.3026, 4.0089, 1.9648, -0.0384, 2.4993, 9.2599, 1.9572, -4.2838, -3.1953, -1.1928, -7.8283, -8.5999, -10.0789, -30.8773, + -5.6296, -4.3307, -2.3209, -0.8933, 0.2894, -1.9304, -2.0575, -2.778, -6.2185, -5.9192, -6.6197, -5.5076, 1.7, -2.2417, 6.734, 9.7221, 5.4135, 15.423, 16.2356, -9.0706, + 21.8983, 23.2393, 21.5176, 17.3026, 15.6381, 10.7095, -4.6739, -9.4131, -7.3736, -9.636, -10.3893, -7.6173, -3.694, 2.4229, 12.3234, -14.8401, -14.2133, -12.879, -4.4302, -25.8921, + 11.8056, 15.656, 20.2939, 16.8416, 9.1858, 2.5617, 2.6711, -1.0207, -1.45, -0.2437, 6.6714, 6.5193, -0.4136, -1.1308, -3.7531, -13.8441, -14.3531, -10.4897, -18.0817, -27.4259, + 55.7273, 39.936, 26.2526, 15.0127, 6.4718, 0.7391, -2.3157, -3.1939, -2.9475, -3.3569, -5.3235, -7.9446, -10.6626, -13.1662, -14.21, -14.4691, -14.4121, -13.8376, -15.6433, -22.6564, + 3.7665, 2.9173, 4.2496, 1.847, 7.9023, 14.8241, 11.0448, 3.454, 2.7173, -3.8368, 2.5626, 4.5604, 2.9217, -9.5401, -8.3622, -8.8234, -1.4224, -0.0449, -2.7094, -28.0285, + -9.3983, -8.0419, -4.4832, 1.9754, -0.3749, 4.6985, 6.4445, 3.4462, 1.2139, 4.153, -6.0488, 0.4383, 7.0647, 3.8491, 2.7818, -2.689, 2.0052, 6.3893, 4.3086, -17.7324, + 10.6303, 13.7716, 17.1718, 20.1678, 12.2486, 3.36, 2.4058, -2.5934, -4.8765, -6.0115, -4.6562, -0.7932, 8.0003, -2.284, -3.8243, 0.1863, -9.1648, -14.9839, -14.094, -24.6607, + 16.6586, 21.6444, 20.8223, 12.8954, 8.1955, 4.1214, 1.5648, -2.8573, -5.5724, -6.5555, -5.8004, -2.3591, 4.833, -0.2831, 0.7092, -9.8961, -15.4807, -12.0228, -6.1807, -24.4365, + 6.2715, 7.1856, 9.0377, 12.3924, 19.0793, 22.2584, 18.7678, 12.6682, 9.6569, 13.2645, 2.9549, -2.9501, -4.4734, -4.244, -12.7065, -19.5653, -21.3156, -21.7041, -19.8037, -26.7746, + 6.6118, 7.9766, 9.5899, 16.7112, 22.8331, 15.9736, 8.1328, 4.9522, 3.0471, 7.2666, 11.8402, -1.4154, -4.2808, -5.2523, -8.9476, -17.0691, -18.3281, -12.6216, -21.0003, -26.0198, + 17.3127, 17.4868, 17.7344, 12.4834, 5.8856, 4.6009, 1.073, -2.7678, -2.0723, -0.4628, -3.7999, -5.837, -8.6148, -7.6108, -6.5104, -2.5688, -1.6184, -6.1466, -7.5013, -21.0659, + 3.4054, 5.0769, 7.0766, 9.8006, 20.025, 22.5645, 11.5478, 6.2329, 4.4723, 6.4844, 10.6573, 0.2331, -6.2477, -11.087, -10.3507, -4.2484, -15.1989, -19.0756, -16.4193, -24.9492, + 4.7627, -2.1833, -2.2828, -3.7716, 2.8453, 7.51, 11.3439, 6.188, 0.3611, -1.2837, -10.299, -7.9318, -4.0985, 1.3582, 6.4088, 6.3304, 9.4372, -0.3781, -7.0962, -17.2205, + 0.0639, 1.7461, 3.2578, 7.1373, 14.2936, 21.0383, 16.8137, 10.1108, 14.304, 14.1399, 0.3676, -6.3231, -10.5295, -12.7919, -9.1838, -2.4821, -12.1068, -13.6518, -9.174, -27.0298, + 6.2012, 6.2177, 8.6617, 15.7008, 20.0807, 16.3263, 9.7644, 7.667, 11.6809, 8.6315, -2.6559, -7.4948, -10.0457, -10.1131, -6.9875, -12.9972, -15.776, -10.0148, -6.4425, -28.4048, + 8.4071, 5.8192, 3.5662, 1.9627, 2.4472, 1.8597, -0.737, 2.3814, 0.1779, 1.4958, 2.9385, -6.0143, -2.3152, 0.3049, -1.7145, 0.7158, -1.3399, -5.1439, 2.0438, -16.8555, + 7.4409, 3.3788, 6.5115, 14.5248, 13.0646, 4.0268, -1.1894, -5.0999, -7.691, -8.4282, -7.9356, -3.3516, 6.9774, 0.9806, -1.3988, 5.5785, -3.1694, -5.2282, 1.6484, -20.6401, + 11.6728, 5.2904, 7.2713, 8.1521, 8.6202, 4.839, 1.9077, -2.7604, -4.5028, -8.9428, -12.4662, -11.0383, -4.7642, 4.2903, 3.3702, 1.0547, 5.8752, 0.7203, -0.1952, -18.3942, + 1.7662, 2.1132, 0.6823, 0.5069, -0.7694, -0.573, -0.6749, 0.4539, -2.385, -0.8937, 3.2905, 1.9366, 4.8907, 8.891, 3.4773, 1.6832, -0.385, -1.0325, -5.4486, -17.5299, + 11.1327, 8.1369, 5.9398, 7.2387, 9.0755, 13.7563, 15.6715, 10.9671, 4.3603, 6.5521, 8.2784, 8.2998, -3.5109, -8.8874, -13.5723, -11.9565, -11.2912, -14.9059, -15.3573, -29.9274, + 17.2359, 18.8517, 18.1626, 16.5245, 13.3466, 10.8703, 8.4673, 4.7337, 2.635, 0.0183, 1.1954, 4.7388, -2.9359, -6.0731, -7.4347, -16.3769, -19.935, -20.0072, -15.2078, -28.8095, + 15.9881, 16.1253, 11.9372, 8.7157, 5.3883, 4.3873, 5.5095, 5.6589, 0.5361, -1.1208, -4.817, -4.8077, -4.2337, -3.8897, -5.7866, -5.1486, -6.6937, -4.6271, -8.1104, -25.0113, + 10.5287, 10.4645, 11.0189, 12.4921, 10.2092, 2.1803, 0.6775, -1.9607, -7.8737, -8.5232, -10.8456, -10.0601, -9.5234, -5.7091, 4.1283, 1.9979, 4.9082, 2.3842, -1.6831, -14.8109, + 6.8712, 7.1195, 7.8478, 9.0102, 7.5469, 4.9121, 6.0618, 3.0705, 0.6628, 1.7728, 2.714, 6.3541, 3.1029, -4.2377, -6.3687, -2.2545, -6.3865, -11.4164, -9.6711, -26.7119, + 16.6601, 22.046, 20.3084, 13.4923, 8.0021, 8.7024, 10.126, 10.4026, 4.1888, -3.7328, -6.171, -10.8693, -16.0494, -7.8483, 0.2833, 3.3381, -13.0116, -16.9474, -14.2501, -28.6704, + -1.6472, -1.5329, -0.7265, -0.859, 1.55, 3.3445, 6.06, 5.7678, 2.9402, 4.2316, 1.8384, -2.4116, 1.7488, -1.1846, 0.2843, -0.4495, 1.5215, -2.2191, -1.2847, -16.9723, + 5.4499, 9.2168, 13.6525, 18.6245, 21.2266, 16.3225, 10.2029, 13.7648, 16.3433, 7.8345, -0.8506, -3.0654, 0.8282, -4.7895, -14.3191, -13.6263, -16.5382, -25.7242, -26.3799, -28.1733, + 5.4928, 7.273, 11.4735, 16.9546, 13.9651, 4.9178, 1.4991, -1.5005, -3.3689, -4.2367, 1.4622, 8.4912, 0.6337, -0.2593, 0.3732, -7.8143, -10.1871, -7.5615, -7.0778, -30.5301, + 6.6781, 5.8903, 6.7632, 9.181, 8.8397, 9.7239, 8.7155, 7.797, 6.3227, 3.4228, 0.2514, 0.111, -1.6716, -5.4364, -5.9387, -8.2352, -7.5149, -7.0855, -8.8552, -28.9591, + 11.8209, 17.497, 19.5821, 14.6674, 8.781, 10.5929, 17.1599, 11.1304, -1.5934, -2.4291, -7.104, -7.2023, -9.3009, -11.7782, -8.5498, -11.3872, -9.756, -0.1211, -12.0128, -29.997, + 10.1575, 12.1948, 14.9933, 16.4447, 14.1842, 8.2787, 4.1829, 1.5996, -0.4007, 2.6686, 4.592, 3.807, -0.5362, -2.8498, -6.0317, -8.0974, -11.2561, -15.969, -16.7096, -31.2528, + 17.3728, 16.5602, 12.158, 2.2953, -0.7338, -2.2088, -3.006, -3.495, -5.7703, -1.8968, -4.1417, -2.255, -0.4691, -0.6536, -2.4783, -1.3584, 1.113, -1.5486, -2.18, -17.3041, + 10.9509, 14.6912, 20.9171, 20.7445, 13.3882, 9.0276, 8.481, 10.448, 11.1634, -1.3107, -8.8976, -12.455, -14.1419, -12.2168, -8.1653, -9.184, -14.6536, -10.7798, -3.349, -24.6582, + -4.2511, -4.318, -6.4235, -4.0719, -2.3887, -3.1485, -4.2032, -3.5194, -7.501, -5.4107, -2.3368, 0.6165, -2.548, -6.5746, 5.71, 1.8165, 14.8553, 24.383, 15.8024, -6.4884, + 6.8815, 10.8626, 15.3667, 14.4704, 2.5878, 0.6962, -3.7687, -7.2033, -9.3334, -10.5308, -9.619, -8.2135, -3.3921, 8.1225, 8.7748, 9.4979, -0.1825, -3.9609, 2.5378, -23.5939, + 10.7457, 13.4613, 16.3838, 18.1633, 11.9764, 6.2322, 2.2046, -1.6815, -5.4025, -5.3261, -1.9194, 5.785, 7.0183, 8.8506, -7.0398, -15.809, -17.0181, -9.4482, -9.5562, -27.6203, + 4.4895, 6.7459, 11.3127, 18.7251, 18.1351, 6.5502, 1.1677, -1.0341, -3.9953, -2.3382, 3.5745, 11.8555, 2.9192, 6.0596, -4.8984, -13.0118, -16.247, -15.0252, -10.6982, -24.2871, + 10.1449, 10.3471, 14.749, 16.1718, 16.9528, 11.3815, 6.8749, 1.4265, -2.7864, -6.1956, -8.0139, -7.8556, -2.8591, 4.0596, 5.4548, 3.3633, -10.2166, -16.2406, -18.8135, -27.945, + 9.5266, 9.8619, 11.6564, 16.1435, 22.5856, 19.0228, 9.5649, 5.1013, 3.9082, 6.9523, 9.4453, -4.8784, -10.6008, -16.0258, -16.6123, -14.774, -6.6639, -13.8342, -16.3927, -23.9867, + -2.8166, -0.2578, 2.8925, 4.4555, 5.6756, 4.6914, 3.4417, 3.4041, 1.889, 1.8575, -0.5242, 1.9867, 0.9536, -0.9744, -1.401, -2.1961, -1.2827, -2.3186, -2.1481, -17.3281, + 6.5757, 10.4876, 15.8653, 20.5177, 18.3749, 8.4114, 4.7411, 0.5009, -2.9659, -4.1461, -4.5681, -0.6566, 5.8038, -2.3737, -8.5532, -6.5787, -2.8561, -13.7548, -17.8769, -26.9485, + 7.1295, 8.3469, 8.9916, 14.7649, 20.5, 15.5149, 7.3359, 0.6792, -1.5195, -5.0373, 0.9468, 7.0372, -4.0339, -9.7787, -8.9444, -0.8558, -12.0386, -13.0157, -7.1764, -28.8465, + -6.3643, -3.56, -0.9853, 1.3808, 3.5164, 4.4752, 4.2783, 4.1699, 0.4058, -0.8097, -0.9913, 3.1386, 9.3653, -1.1057, -1.2662, 0.7587, 1.7985, -2.7481, 1.1071, -16.5641, + 10.8441, 6.1056, 4.5464, 11.5523, 11.5304, 4.8593, 1.2036, 0.6177, -6.5224, -11.5032, -13.3278, -7.1852, -1.6717, 9.2735, 6.7578, -0.905, -7.2789, -6.0827, 3.0089, -15.8228, + 2.43, 2.4475, 8.1825, 8.1925, 2.2974, 10.8311, 15.569, 1.4027, 0.329, -0.4366, 6.3648, 1.0487, -0.9166, -8.1367, -8.1915, -9.569, -3.4184, 0.0616, -4.9205, -23.5675, + 18.5545, 22.239, 21.2685, 17.01, 9.6982, 4.732, 4.3296, 7.5541, 8.1889, 7.8498, 0.4258, -3.7349, -6.3446, -8.3581, -11.0931, -16.2715, -16.4055, -15.8123, -17.441, -26.3892, + 5.3049, 3.9686, 5.5462, 12.1792, 19.9309, 17.032, 8.3644, 7.8784, 10.6383, 15.3943, 3.6647, -0.1421, 3.0499, -3.2605, -15.9284, -20.0685, -19.5084, -15.1548, -11.4151, -27.474, + -4.1173, -2.8993, -1.1226, 2.7523, 4.1168, 4.2377, 1.6192, 1.4859, 2.7141, 0.481, 0.9555, -0.9423, 1.2205, 0.597, 0.3948, 0.467, 2.1347, 1.5199, 1.6806, -17.2954, + 15.7137, 20.9924, 24.3419, 24.5468, 20.7453, 18.1011, 19.1224, 15.9122, 12.9399, 8.1629, -8.2323, -12.3399, -17.0242, -22.3729, -23.1787, -23.2286, -17.6989, -10.8077, -20.3082, -25.3873, + -1.2634, 1.8562, 5.1481, 8.605, 8.7868, 9.5351, 6.6634, 3.816, -0.1296, -4.656, -0.5036, -0.2003, 1.6621, -1.6607, -2.8913, -4.8208, 0.3233, -5.1066, -6.1044, -19.0592, + 10.6986, 11.8307, 11.5659, 12.449, 11.188, 6.9008, 2.6629, 3.0301, 3.4569, 5.3227, 2.5092, -1.0853, -3.8118, -7.084, -4.9747, -7.3629, -11.0099, -5.9887, -11.0008, -29.2965, + 13.6712, 17.1821, 19.2431, 13.3261, 5.9589, 0.4984, 0.367, -2.3834, -3.2315, -2.1198, 4.8356, 0.4745, -8.1763, -11.1278, -9.8688, -0.1733, -8.1227, -9.3563, -5.3546, -15.6426, + -5.7735, -2.5076, -1.5044, -1.1663, 0.0004, 2.3285, 2.2748, 3.5509, 0.5101, -3.3403, 0.8431, 1.7502, 3.2945, -0.4888, 1.3903, 4.0779, 1.6571, 2.3564, 6.2297, -15.4829, + 9.1796, 11.0931, 14.7746, 19.7918, 17.0503, 10.0451, 7.8355, 5.3063, 5.9805, 11.7545, 10.2992, 6.2216, 2.6489, -6.8542, -15.2068, -16.6927, -14.099, -23.4163, -26.3767, -29.3354, + 4.4691, 6.369, 7.7808, 12.847, 20.5705, 17.7665, 9.4381, 6.2778, 2.4431, 5.0549, 9.9596, 3.2883, -2.2059, 2.04, -4.0438, -15.0151, -19.7303, -18.2469, -20.2388, -28.8235, + 25.3208, 24.3974, 22.6154, 19.5733, 14.8131, 10.5701, 9.4361, 4.3748, -1.5593, -4.3511, -14.7283, -17.6258, -0.952, -8.5196, -7.3624, -3.251, -9.9332, -17.3271, -21.4343, -24.057, + 22.3042, 16.1278, 12.0077, 14.7975, 10.7206, 8.3648, 8.061, 10.1267, 7.5498, 1.8723, -3.9201, -8.2481, -10.1623, -11.376, -12.7367, -5.005, -3.3744, -11.9178, -17.47, -27.722, + 4.0018, 3.5852, 3.3315, 5.3461, 4.3656, 2.8461, -0.0206, -2.5696, 0.1895, 5.1002, 3.3534, 0.2158, 1.3297, -0.9671, -0.5937, -1.9855, -1.7054, -1.7064, -4.2453, -19.8713, + -0.182, 0.3377, 2.3741, 5.1705, 4.8793, 2.2995, 4.3309, 2.2662, 0.4173, -0.8843, 6.0098, 9.0178, 2.964, -0.8977, -1.5385, -6.1656, -4.1289, -4.7989, -1.1105, -20.3607, + 7.6526, 7.4466, 4.8852, 0.6442, 1.5298, 0.3141, 2.6136, 0.1768, 0.3184, 1.5717, 0.2364, -0.4716, -4.0283, -1.7854, 1.1771, -1.1242, 0.5833, -0.2901, -4.6526, -16.7979, + 19.3739, 25.1966, 25.2676, 19.4367, 10.1976, 2.4144, -1.1928, -4.0638, -8.7478, -10.523, -11.0799, -12.5634, -10.0392, -5.3666, 3.7592, 3.344, 0.1212, -8.8586, -13.7562, -22.9202, + 9.6043, 10.541, 12.3377, 19.7574, 26.3167, 19.8022, 16.1636, 16.4176, 17.5852, 2.8061, -5.6826, -11.1198, -15.0897, -15.5002, -11.1047, -14.2676, -20.4525, -20.5783, -15.3843, -22.1521, + 12.9015, 20.6704, 27.9257, 24.9274, 19.2594, 24.215, 19.1475, 0.5334, -3.3152, -12.4822, -15.0498, -16.9033, -19.2802, -17.1972, -9.8015, -9.8416, -13.7988, -8.2071, -2.2124, -21.4912, + 14.4389, 13.4012, 16.1103, 14.9288, 9.7959, 11.0171, 12.0893, -1.4171, -9.8704, -8.5713, -15.4225, -18.6377, -16.5003, -13.9403, 1.0172, 8.7826, 2.1557, -0.7217, -0.1613, -18.4945, + 3.2298, 2.2245, 4.4788, 6.2407, 6.6193, 4.0854, 3.5648, 2.2977, 2.4361, 0.5689, -4.6553, -1.2701, -2.8888, -2.1474, -1.0212, -1.5878, -0.7381, 0.5436, -4.6923, -17.2887, + 12.1886, 11.0008, 17.9358, 24.301, 22.2969, 15.0778, 12.8771, 17.0838, 11.2261, -0.0847, -7.9648, -13.0993, -17.1559, -19.7583, -18.6302, -14.9903, -5.4184, -14.9564, -12.137, -19.7926, + 18.1628, 19.7982, 21.7942, 23.1496, 22.2974, 18.3029, 13.8973, 12.5987, 14.0955, 8.3018, -1.2018, -2.7097, -5.1243, -15.5625, -20.9814, -25.9011, -25.5502, -25.1062, -24.3739, -25.8874, + 5.12, 2.6682, 2.7787, 5.122, 7.7683, 7.6609, 0.3239, -0.5597, -2.1976, -4.2025, -2.3433, 5.4581, 3.3195, -4.6819, -7.7339, -5.9433, 6.7709, -3.0093, -0.4617, -15.857, + 3.1474, 3.9068, 4.6743, 6.198, 3.9172, 5.5703, 3.756, 5.3815, 6.4792, 7.4263, 4.0188, -0.9053, -2.9276, -4.264, -3.8751, -2.5664, -3.8921, -5.7279, -7.3914, -22.9261, + 7.7606, 7.9634, 9.259, 13.4058, 20.913, 19.2571, 11.4285, 9.1142, 10.4227, 12.6605, 1.394, -7.8667, -12.9049, -16.1586, -15.3321, -7.7158, -10.1835, -11.8246, -14.2319, -27.3607, + 9.9378, 9.7046, 10.1765, 13.167, 9.5151, 2.2155, -0.0456, 0.0357, -0.3521, -1.264, 0.0667, 3.9496, -0.7853, 0.9935, 1.7327, -2.1738, -2.4763, -8.9075, -14.5354, -30.9548, + 9.4566, 14.4761, 17.5184, 16.5421, 10.8319, 4.8634, 3.7958, 1.0301, -0.7413, -4.7772, 0.1278, 10.6261, 1.7256, -4.7562, -1.8151, -1.2979, -10.9708, -19.1139, -21.0656, -26.4558, + 4.1609, 4.3674, 5.163, 10.4393, 19.9966, 22.0365, 15.0772, 16.7404, 13.2009, 0.0579, -7.2967, -13.1855, -16.4671, -16.2778, -13.5417, -3.6468, -7.6575, -10.0591, -0.8708, -22.2374, + 9.2619, 9.285, 10.6963, 10.0411, 5.3819, 1.803, 1.0922, -0.366, -0.8976, -3.181, -0.6819, -3.8642, -8.4569, -8.9974, -5.5095, -1.9498, -5.7587, -2.8793, 9.9987, -15.0177, + 16.0944, 15.0736, 17.429, 17.1266, 16.3425, 13.9152, -0.3124, -3.4633, -3.3349, -5.5676, 1.022, 7.3152, 5.0978, 0.8308, -5.9027, -14.3898, -14.2461, -12.232, -23.5828, -27.2154, + 2.0137, 5.7764, 10.2219, 14.9245, 16.5703, 10.5235, 3.0729, -1.4882, -7.205, -6.2506, -5.1311, 1.5065, 6.9953, -1.443, 1.824, -1.5831, -9.7701, -7.7954, -0.2269, -32.5358, + 0.8118, 3.1428, 4.1975, 8.8492, 17.1316, 16.9999, 8.6244, -0.0326, -4.953, -5.2292, -0.1353, 6.3691, -2.1837, -2.6835, 3.8299, -6.3313, -4.714, -0.206, -11.6261, -31.8615, + 16.0656, 15.8566, 16.266, 14.0919, 7.2745, 1.1478, 0.5592, -3.1884, -2.7528, -3.9872, -1.52, -5.6031, -7.1936, -11.6082, -9.9024, -5.9648, -1.2652, -4.4434, -0.5317, -13.3008, + 6.0546, 7.8172, 12.5175, 18.974, 18.6314, 12.5099, 8.6741, 7.3229, 9.6232, 16.1584, 9.3568, 6.3688, 5.3827, -10.1648, -19.1392, -25.0842, -25.6307, -21.0082, -12.2957, -26.0685, + 8.7645, 5.7385, 7.3877, 9.4659, 8.7034, 6.7927, 2.2815, 1.642, 0.5587, -0.7987, 1.2054, 8.0228, 11.5479, 4.5805, -6.4932, -9.4841, -11.6576, -7.6077, -9.5897, -31.0604, + 13.5337, 13.1762, 15.6646, 19.9549, 24.347, 21.3479, 19.5471, 19.3675, 13.3653, -0.5856, -8.6584, -13.2572, -16.9863, -17.9847, -20.7708, -15.4798, -11.0509, -15.4702, -16.1382, -23.9221, + 9.4656, 10.0639, 11.4433, 14.668, 18.7771, 15.2024, 9.3195, 5.137, 1.9578, 0.3561, 3.767, 8.6933, 1.32, -4.9956, -10.6736, -14.332, -17.7829, -18.0592, -14.314, -30.0137, + 1.5799, 4.3053, 2.3818, 2.891, -1.2059, -0.83, -0.1903, -0.1292, 1.0233, 3.9206, 3.9828, 2.2978, 3.232, -2.5703, -2.6923, -1.3776, 2.9213, 0.1727, -0.511, -19.2019, + 6.8519, 4.8647, 1.9844, 2.2401, 3.7555, 1.5005, -1.3694, 0.5704, 2.1485, 0.76, 0.6917, -1.0898, 1.8295, -1.7615, 0.1607, -2.4085, 0.4928, -1.2003, -0.2145, -19.8066, + 26.8652, 27.9313, 22.2964, 13.2728, 4.9234, 4.975, 10.5105, 12.7213, 4.9587, -6.5278, -2.0124, -3.4059, -5.9594, -7.3378, -10.2568, -18.1183, -18.7465, -15.1523, -18.6899, -22.2476, + 11.7015, 12.5524, 16.8036, 20.5917, 17.3325, 11.6535, 7.9132, 3.4464, 6.4909, 8.4604, 0.112, -8.677, -13.3036, -17.0534, -16.5775, -11.3553, -3.454, -9.9071, -10.954, -25.776, + 20.0026, 21.9415, 20.1743, 15.7692, 9.6829, 6.6171, 12.1877, 15.1379, 6.9729, -2.6223, -11.926, -8.003, -5.4775, -7.9242, -14.3282, -6.4602, -11.9823, -18.5276, -14.5214, -26.7133, + 8.4727, 10.313, 16.1554, 22.5237, 20.4885, 15.1245, 10.9192, 10.3785, 14.0959, 8.6752, -2.6735, -8.1503, -8.9174, -2.4684, -9.1899, -21.2524, -22.7439, -18.1241, -17.6618, -25.965, + 16.4001, 11.079, 6.5408, 3.9922, 0.9638, 0.6155, 0.1321, -0.0033, -1.5205, -0.5347, 0.0838, -0.8675, -0.2837, -1.6297, -1.6342, -2.753, -2.7291, -3.0597, -3.9086, -20.8833, + 12.8347, 13.993, 15.6832, 15.4917, 10.9362, 11.4157, 15.6476, 4.371, -10.872, 4.3584, -2.6363, -7.3238, -10.3423, -4.3725, 0.4684, 7.2994, -11.0045, -18.8176, -14.2499, -32.8805, + 12.3323, 15.8058, 21.8399, 24.3008, 14.4087, 10.993, 7.8357, 8.0265, 12.8222, 14.2335, 5.8155, 6.0731, -6.0593, -17.6762, -22.1263, -23.2555, -24.2165, -21.7123, -15.9183, -23.5226, + 5.7344, 5.3389, 3.8374, 3.419, 2.8812, 1.7219, 0.1439, 1.858, -0.5349, 2.0653, -5.3722, 2.7017, 1.0724, -0.8636, -1.4371, 0.4192, -0.6553, -2.1126, -0.737, -19.4805, + 8.7871, 8.8914, 10.508, 13.7939, 18.1053, 18.3809, 13.6037, 9.9123, 6.2489, 7.8891, 6.4768, -2.8713, -8.9109, -11.1699, -11.8847, -5.8137, -11.8112, -19.3777, -21.5409, -29.2171, + 21.2487, 22.5877, 21.7624, 19.0832, 14.4498, 8.3623, 6.4664, 3.1545, -0.286, -1.9696, -3.9389, -1.8288, -3.7243, -9.6176, -13.7865, -15.0846, -11.3343, -12.9399, -16.9243, -25.6805, + 15.5067, 16.3749, 16.311, 12.8646, 5.4498, 2.4274, -1.0299, -3.27, -3.2357, -0.0252, 7.5399, -0.6948, -6.2588, -9.1664, -6.8883, 0.76, -11.6902, -9.982, -1.1495, -23.8436, + 15.5548, 17.3265, 20.2482, 21.9118, 17.7825, 12.4436, 8.5947, 8.3626, 10.7582, 6.8704, -2.615, -7.1451, -11.7102, -15.2112, -16.7335, -10.8661, -12.143, -16.7183, -19.7849, -26.926, + 9.7348, 18.6985, 22.2, 9.7733, 3.5414, -0.989, -5.4561, -5.4928, -8.476, -6.8757, -4.1569, 6.8951, 2.1633, -1.2892, 3.0483, -7.4717, -12.0842, -7.7317, 1.0735, -17.105, + 6.6628, 6.9628, 9.289, 7.3292, 2.0881, -0.1054, -1.5163, -4.7058, -4.4988, -5.4883, -6.5025, -2.6194, 5.9468, -1.1287, -0.4851, 5.3144, -1.644, -1.6601, 4.2795, -17.5182, + 11.7595, 13.0074, 13.6551, 14.3417, 13.9024, 11.589, 9.9365, 4.195, -1.2916, -2.3847, -1.5414, -3.1381, -5.4213, -4.9864, 0.0096, 0.2286, -7.594, -13.3606, -21.1287, -31.778, + 16.556, 21.1528, 18.2294, 14.8217, 11.7211, 5.8948, 0.1128, -5.7142, 0.4819, 3.4296, -7.6731, -15.2596, -14.091, -4.345, 4.2359, -1.261, -8.7829, -14.4366, -8.1323, -16.9402, + -9.6162, -5.892, -0.4336, -0.0688, 3.9825, 0.71, -1.9156, -3.0982, -4.8027, -4.2612, -2.6264, 1.0431, 5.5418, 11.1806, 9.5552, 5.0905, 3.5862, 4.3463, 5.867, -18.1885, + 9.2493, 12.521, 14.8487, 20.3042, 16.9267, 10.5281, 5.4085, -1.4152, -5.3054, -5.325, -4.1371, 2.4443, 0.8006, -8.09, -7.9314, -5.9206, -13.5877, -13.0043, -4.8031, -23.5116, + 5.9148, 6.0122, 7.7679, 11.9347, 14.3202, 11.188, 5.7941, 0.6362, -0.9006, -3.7616, -1.0465, 6.3361, 0.5894, -7.7629, -9.2778, -6.0898, -0.474, -7.4253, -3.178, -30.5771, + 9.047, 12.9059, 18.1346, 24.2631, 23.6353, 19.2579, 20.8877, 17.0355, 3.1774, -5.2773, -10.0473, -14.9178, -17.5773, -16.4551, -11.9394, -9.6664, -11.9143, -7.0063, -19.2353, -24.308, + 11.6229, 13.7686, 16.3077, 18.973, 21.2077, 21.177, 18.6717, 15.526, 14.4577, 10.9286, -2.0523, -9.7658, -14.147, -18.3895, -20.2191, -19.9491, -14.1791, -17.4745, -18.9708, -27.4939, + -1.2854, -2.7859, 2.0352, 3.8729, 2.5634, 1.1875, 2.9803, 3.4105, 0.6928, -0.5396, -6.4408, -2.1739, 4.1284, -0.7168, -3.4324, -5.3047, 2.106, 6.1169, 6.17, -12.5844, + 3.6719, 5.1933, 3.433, 2.0915, 1.709, 4.9193, 7.5225, 11.4575, 7.7921, 1.1072, -1.3846, 0.672, -0.8916, -0.5196, -2.8857, -5.7085, -3.7344, -4.4707, -6.4364, -23.5377, + 5.0076, 6.0603, 5.6858, 5.8716, 4.9796, 4.351, 3.2343, -0.0278, -1.6006, -3.6879, -3.6306, -0.3994, -2.7867, -5.8602, -4.3815, -4.1661, 1.9375, 0.0251, 1.7605, -12.3723, + 1.5611, 2.5677, 6.9184, 12.7642, 12.9002, 7.6294, 1.5737, -0.4407, -4.6258, -3.3019, -0.3274, 9.4821, 8.3473, 7.1185, 0.9099, -4.2945, -2.0947, -5.5952, -16.6889, -34.4035, + -10.077, -9.2074, -7.5499, -5.3349, -2.0639, 0.7289, 3.3239, 5.0911, 7.8838, 10.9963, 10.2149, 9.1756, 7.3923, 3.8453, -0.9308, -1.4293, -1.7749, -2.4954, -0.635, -17.1538, + 11.6964, 15.7897, 21.5631, 25.0743, 21.2867, 19.0704, 20.7015, 14.1826, 0.0839, -7.4606, -11.2687, -14.0743, -15.6804, -14.7951, -10.801, -12.5161, -17.6133, -13.8075, -7.4286, -24.0031, + -6.9283, -6.6188, -5.8684, -5.5056, -3.6164, -2.5751, -3.3395, -0.3521, -3.7955, -8.6077, -6.1256, -4.7755, -5.6371, 1.9017, 5.4236, 6.9088, 17.0056, 9.6477, 17.8081, 5.05, + 1.04, 4.3584, 5.7473, 5.9965, 7.1951, 11.1543, 16.3999, 17.9219, 13.7898, 8.5105, 6.6032, 8.3888, 3.1208, -8.4853, -12.1692, -10.3091, -9.406, -16.3383, -22.0676, -31.451, + 4.0785, 3.7601, 3.2477, 4.5535, 2.8617, 2.8959, 4.0341, 3.3572, -6.7255, 5.4042, 2.4187, 1.223, 0.1581, -3.0654, -1.9472, 0.8423, -1.1312, 1.2092, -3.2861, -23.8888, + 7.3239, 6.915, 9.3764, 18.0744, 16.9415, 9.605, 5.2932, 1.9763, 2.0297, 6.284, 11.8379, 10.9565, 8.5711, -5.0433, -15.8094, -21.0356, -22.5868, -18.9436, -8.4281, -23.3379, + -1.7885, -4.8321, -3.3241, 0.9574, -0.7694, -4.0018, -4.5674, -4.526, -2.6221, 4.0186, 7.6808, 10.9687, 1.1618, 6.5552, 7.2914, 5.9801, 0.8194, -0.4241, 1.0077, -19.5855, + 2.5382, 2.7665, 6.6332, 9.6977, 12.0223, 5.6888, 5.2502, -0.0648, 0.179, 1.7261, 3.6718, 4.6019, -4.2546, -5.2838, -8.6175, -3.503, -2.89, -5.1451, -3.1562, -21.8607, + -1.7959, -1.641, -1.3048, -1.9856, -1.1093, -0.5878, -1.7759, -0.7425, -2.7139, -3.3222, -3.9402, -1.9787, -4.1788, -1.9573, -0.0518, 0.6181, 5.7386, 8.4544, 14.2974, -0.0227, + 1.9227, 3.4879, 4.9261, 5.1627, 4.2257, 4.6417, 3.0455, -0.455, -1.933, -4.6665, -6.5225, -3.7829, -5.2713, -1.4162, 3.7054, 5.6573, 7.046, 2.7847, -1.9201, -20.6381, + 5.4951, 4.1184, 5.0794, 4.1307, 2.3794, 0.0327, -0.8237, -1.5895, -3.7505, -6.6385, -6.0766, -2.2466, -0.408, -4.9327, -5.84, -1.6035, 0.3752, 6.5602, 12.3259, -6.5875, + 6.8048, 2.6542, 8.2117, 4.3594, 9.5824, 4.9978, 9.2805, 5.4616, 0.1801, 2.8218, 4.8979, 8.0336, 1.3602, -0.8584, 3.0641, -6.3167, -11.4947, -13.9096, -9.3665, -29.7643, + 20.4394, 23.8508, 19.9523, 13.4804, 4.7063, -0.881, 2.3157, 4.3508, 4.6054, 2.6117, -2.816, -5.7052, -5.0189, -10.4846, -14.5942, -12.8055, -6.1098, -12.0585, -7.7055, -18.1337, + 9.9351, 14.3502, 19.553, 16.3727, 7.0796, 2.9949, -1.1604, -3.2246, -3.9592, -2.8637, 3.6007, 8.3194, 1.5624, 4.008, -6.2282, -13.296, -15.2078, -10.4525, -5.9946, -25.3891, + 5.5354, 4.2644, 3.4234, 3.565, 3.9406, 1.8276, 0.2709, 0.3493, -0.002, -0.7304, 1.8692, 2.1692, -1.3779, -0.9234, -5.0911, 0.1335, -1.1518, -0.8308, -1.2357, -16.0052, + 14.718, 8.4248, 6.7389, 6.9731, 8.7963, 12.7964, 14.6589, 10.3137, 3.2909, -3.7235, -5.8542, -6.9864, -6.8348, -4.2701, -4.4326, -5.4747, 0.7281, -9.3904, -11.2298, -29.2424, + 9.1842, 9.7851, 10.8472, 12.9244, 10.6955, 6.8423, 4.6037, 0.765, -2.0301, -2.7855, 1.3686, 5.5053, -1.4464, -8.6948, -6.8949, -4.4565, -9.3587, -11.9106, -7.0277, -17.9162, + 9.5187, 11.0469, 10.8992, 10.5477, 12.4336, 17.931, 22.0092, 22.1029, 21.2249, 17.7472, 4.1368, -3.9142, -11.6583, -18.8125, -22.4708, -24.5855, -14.9292, -12.6855, -22.7109, -27.8313, + 12.0341, 16.6419, 15.8489, 10.0396, 3.3655, -1.8695, -5.2143, -9.4106, -10.9745, -12.0991, -12.045, -11.1231, -7.2635, 0.0306, 12.4231, 12.6061, 4.1888, -1.9085, 0.6831, -15.9537, + -1.3674, -0.5228, -4.0775, -3.81, -1.0761, 13.75, 19.2044, 15.7231, 9.5615, 7.9996, 6.5298, 3.6199, 0.5658, -1.3324, -7.5527, -6.3571, -7.0946, -6.2162, -8.1181, -29.4293, + 7.3145, 11.1318, 15.8219, 21.2414, 19.7326, 13.4391, 10.1286, 13.1458, 13.522, 4.5818, -4.9865, -10.4663, -12.4137, -8.4915, -7.5278, -14.5074, -14.9519, -10.6855, -18.9716, -27.0572, + -2.6938, -1.0116, 0.5434, -0.5197, 1.251, 2.781, -3.1452, 2.3461, 1.3093, 1.0916, 0.2998, 1.6109, 9.4326, 9.1761, -2.9635, -1.3175, -1.3459, -2.3687, -0.4622, -14.0137, + -0.6799, -0.1341, 0.7366, 1.5016, 2.3553, 1.9877, 1.8684, -1.1687, -1.7388, -0.3259, 3.2899, 3.7096, 2.8005, -0.4016, 0.0798, 0.8146, 0.249, -0.5574, 0.0812, -14.4681, + -4.5962, -1.7335, 2.2323, 4.9758, 4.1965, 6.112, 6.3004, -0.242, -0.4268, -3.4101, -1.9343, 1.8578, -0.3352, -3.5061, -2.9167, 0.7871, 0.7063, -1.6356, 3.3878, -9.8196, + 13.1227, 13.7568, 12.075, 11.2378, 13.9543, 15.7037, 14.8582, 9.5334, 0.1292, -3.0889, -7.7565, -10.9896, -5.4579, -2.1373, 0.1387, -11.7169, -13.0933, -7.4977, -12.364, -30.4077, + 29.3087, 22.8979, 20.4744, 14.9176, 7.8398, 2.3822, -3.7671, 1.0563, -3.5131, 2.1709, 4.106, -2.4865, -7.3802, -9.3667, -9.8213, -8.8247, -9.4073, -14.9259, -16.153, -19.5079, + 8.2477, 12.7093, 19.458, 20.8257, 15.6422, 8.6762, 4.5782, 4.1335, 5.6439, 14.7051, 12.4104, 11.4909, -6.3291, -17.1032, -20.7835, -24.4558, -22.5241, -14.5649, -5.2278, -27.5328, + 0.7217, 4.0954, 5.2473, 1.527, 1.7119, 3.5822, -1.4614, 0.872, -1.3606, -1.4757, -0.4869, 1.0336, -0.7433, 2.0743, 0.6152, -7.1442, 0.592, 6.3583, 2.8714, -18.6301, + 20.3582, 21.7378, 21.8475, 15.5031, 8.5323, 5.5254, -0.6584, -4.0833, -5.5901, -5.8466, -2.2597, 3.0499, -4.1864, -7.3615, -5.3521, -8.6549, -8.7165, -10.8646, -9.6599, -23.3202, + 7.9037, 5.3843, 2.5963, 1.7924, -4.1648, 1.1119, 1.0025, 0.4959, -1.4533, -3.0047, 0.7379, 1.8636, 2.4329, 0.95, -0.1706, -0.3177, 0.7889, 1.1735, -0.473, -18.6499, + -1.9942, -2.2404, 1.0361, 1.1275, 2.4246, 0.9687, -0.7731, -0.435, 2.7773, 4.6081, 2.2666, 5.9874, 1.4863, -4.3135, -1.0943, 3.1059, -4.9201, 3.6382, 1.5522, -15.2082, + 15.5189, 17.894, 20.2047, 21.1613, 16.5719, 9.883, 6.2072, 1.5961, -2.8649, -4.235, -1.2109, 1.6294, -0.3114, -6.289, -6.647, -6.6461, -16.7097, -18.4834, -19.5782, -27.6908, + 4.5707, 9.9453, 16.9194, 16.3836, 7.5074, 1.7185, -1.6704, -4.647, -7.171, -7.5216, -6.2372, -1.4728, 9.199, 4.5872, 4.2446, -3.1203, -10.1462, -8.9093, -2.0237, -22.1562, + 10.2043, 6.2265, 8.048, 6.0822, 2.9673, -0.2686, -0.4905, -3.3479, -4.2925, -4.0224, -2.6407, -3.8742, 0.6899, 3.7007, 5.8631, 8.848, -1.0855, -6.5692, -4.1304, -21.9079, + 12.9155, 18.0966, 19.8262, 14.0767, 6.9947, 1.6106, -0.8791, -6.2102, -7.3162, -10.2835, -10.9883, -8.3441, -1.6557, 0.008, -5.7847, 1.4192, -5.5022, -4.2471, 3.9784, -17.7147, + 5.1637, 8.0679, 12.5738, 17.5701, 14.9252, 4.1592, 0.9276, -0.3161, 0.0005, 3.6819, 10.2605, 3.1026, -2.7955, -2.8307, -1.1861, -9.2862, -11.7976, -5.3295, -15.7634, -31.1274, + 6.9673, 6.7974, 6.1367, 10.4782, 15.9809, 13.2295, 4.9742, 0.4813, -4.131, -5.6911, -5.9712, -1.2511, 7.3306, 2.6442, 0.3224, -0.8372, -7.4799, -9.3018, -8.5882, -32.0913, + 13.1396, 12.9563, 12.3478, 9.0857, 2.3849, -0.849, -1.4825, -4.2362, -7.2804, -7.4639, -6.8853, -6.4479, -4.2443, -8.2231, -3.9022, 0.4289, 0.1896, 3.7001, 6.9697, -10.1879, + 15.333, 18.1603, 22.1112, 21.6848, 13.1886, 10.5333, 8.8464, 9.6626, 12.4137, 13.9577, 10.142, -0.2864, -11.4409, -16.9791, -19.7494, -15.6645, -19.7643, -22.5, -23.5283, -26.1208, + 6.8457, -6.8649, 5.4271, 5.2712, -1.3685, 5.0072, 1.5557, 0.4655, -8.6121, 0.8133, -3.3697, -1.5367, 2.2231, 2.7614, 0.6905, -0.9517, 3.9757, 2.5271, 6.8378, -21.6975, + 4.0198, 5.3861, 1.469, -2.5892, -0.7717, 2.5302, 1.6444, 0.6228, 0.0646, 3.2916, 3.8112, -0.6089, 2.1623, 0.1459, 0.1339, 0.1325, -1.6768, -0.5331, -0.5013, -18.7335, + -7.1586, -2.6175, 0.5796, 4.1833, -1.3849, 0.3608, -8.9238, -4.4835, -1.6026, -5.1856, -8.3891, -1.473, 9.5706, -8.3291, 11.6042, 11.148, -0.2734, 4.8182, 12.1074, -4.5509, + 12.6166, 14.8923, 16.2633, 17.1269, 18.2744, 19.287, 16.5858, 10.4162, 6.9131, 6.3384, 2.9142, -1.3754, -10.9051, -16.4865, -19.5016, -17.7616, -6.9047, -16.5161, -23.1066, -29.0706, + 10.8009, 12.8094, 14.6516, 18.7246, 16.6285, 12.1161, 8.7229, 6.4887, 7.8806, 10.133, 4.172, -4.3839, -6.8368, -8.8011, -8.4415, -14.6175, -16.9291, -13.3638, -20.2402, -29.5143, + 6.219, 6.4291, 6.1608, 8.0273, 9.8018, 9.8514, 6.5431, 7.0773, 5.8326, 5.6116, 8.215, 7.4679, -0.2957, -6.5386, -7.9, -7.1888, -10.2895, -12.2362, -14.0338, -28.7541, + 8.0266, 9.6417, 12.2059, 15.4655, 15.3945, 10.4886, 6.7757, 2.33, 3.3664, 6.5551, 2.3159, -4.1967, -9.2962, -11.8145, -9.9788, 0.04, -6.7484, -6.4088, -11.3916, -32.771, + -6.0361, -3.7035, -0.2831, 1.4674, 0.7756, 0.3247, -0.7445, -0.5024, -2.1341, 2.7813, -0.1459, -3.5635, -3.9893, -4.293, -0.5948, 5.6527, 2.1314, 14.0267, 12.5554, -13.7247, + -14.2301, -11.8469, -5.4438, -2.2899, 3.4911, 0.4713, 0.7187, -2.7114, -1.5588, -2.821, -0.0887, 1.506, 2.8286, 9.35, 12.2742, 8.0817, 12.1298, 7.7574, 3.4239, -21.0423, + 10.2809, 9.4545, 10.3039, 12.6386, 19.498, 22.5798, 19.2258, 15.3342, 18.162, 10.8305, -3.6184, -11.2472, -16.1533, -19.0561, -21.3742, -19.1215, -7.0133, -13.0322, -12.3255, -25.3663, + -7.1992, -4.095, -0.4752, -0.0397, -1.2923, 1.268, 2.102, -2.0159, 0.5678, -4.1475, -2.286, 1.2468, 2.916, 3.7433, -3.5078, 6.2645, 5.1466, 3.3947, 11.0482, -12.6391, + -1.4558, 2.635, 2.5261, -0.4261, 7.9067, 7.3761, 10.505, 2.1413, -4.1382, -2.8818, 6.9021, 5.4317, 4.9534, 4.5363, -2.8372, -3.4508, -1.0165, -1.6706, -9.0235, -28.0132, + 5.4483, 7.0338, 8.8713, 13.9617, 19.3432, 16.574, 12.5536, 13.7232, 15.1487, 4.1979, -4.0767, -8.9863, -10.9482, -13.1722, -11.3412, -7.4945, -4.4916, -3.5707, -22.8865, -29.8879, + 12.0309, 14.2862, 17.8716, 18.2606, 13.3426, 8.9006, 1.3455, -9.418, -11.1012, -15.4444, -17.4768, -17.9985, -12.4515, -5.2431, 8.8612, 5.5913, 6.3114, -1.1018, 0.2013, -16.7679, + 16.8689, 16.8256, 18.5632, 14.4683, 8.2457, 2.7262, 1.7491, 0.4673, -4.4682, -6.2835, -4.328, 2.1966, -4.4856, -9.6447, -7.5807, 2.0175, -9.6747, -9.7002, -3.665, -24.2978, + 10.3443, 9.5624, 9.5859, 9.3945, 7.7097, 5.9502, 5.4955, 7.0578, 3.897, 1.8002, 2.9026, 0.83, -0.8072, -3.4283, -8.7861, -9.4681, -7.6897, -10.0581, -8.5829, -25.7097, + 8.4589, 13.906, 18.357, 21.8577, 20.8363, 13.5168, 7.0018, 3.5585, 0.2984, -4.3657, -7.6435, -5.4526, -6.4991, -0.0823, -10.9834, -14.489, -9.9873, -4.5713, -15.9935, -27.7237, + -2.7942, -1.0695, -0.1214, 2.5877, 1.5098, 1.0893, 1.5717, 3.2131, 6.2989, 10.9335, 9.8682, 8.6743, 4.8838, 1.8707, -1.0579, -3.7852, -5.7917, -7.6708, -7.9578, -22.2525, + 25.1784, 20.8581, 17.0052, 12.9557, 7.7424, 3.9815, 6.0072, 3.4663, -1.9041, -8.1079, -11.4077, -11.8642, -8.7727, 4.7601, 2.8284, -7.3135, -15.0133, -13.8178, -7.5999, -18.9821, + 13.6088, 10.9215, 11.1892, 11.7633, 13.2294, 6.3264, 1.9267, -1.7303, -3.3278, -4.4979, -7.2855, -3.9683, 5.3311, -1.6679, -8.5378, -6.9275, 2.8396, -8.2151, -5.8206, -25.1573, + 20.0774, 19.5893, 17.125, 15.9021, 10.2327, 5.8537, 4.1551, 8.7468, 6.2824, -1.6643, -0.8142, -5.7458, -5.8553, -6.7971, -4.8129, 0.1863, -14.4064, -22.1846, -19.7857, -26.0848, + 1.9579, 3.5459, 5.6047, 9.8227, 17.151, 16.9383, 8.2371, 2.3829, -0.9137, -2.6491, -2.1733, 3.0262, 6.5399, -2.8952, -2.9389, -0.9532, -9.2242, -11.9604, -12.7131, -28.7857, + 2.7147, 5.0851, 5.901, 8.2492, 9.0379, 12.5344, 15.7585, 7.9343, 2.8699, -7.6515, -7.5935, -7.0792, -7.0329, -0.2973, -4.1153, 0.8146, 0.8342, -8.0293, -6.0641, -23.8708, + -1.8671, 0.2021, 1.1744, 3.3514, 3.8114, 4.6535, 6.4708, 5.5903, 4.6873, 6.12, 7.1503, 10.882, 10.1467, 5.0564, -4.0471, -7.0223, -5.8028, -7.0328, -13.2761, -30.2485, + 14.4582, 17.2732, 16.2772, 7.1332, 0.6525, -4.4947, -7.791, -9.8395, -12.5801, -10.7856, -8.8712, -4.2717, 7.2719, 0.7198, 1.5521, 3.5804, -2.9845, 0.1717, 6.3548, -13.8266, + 28.6852, 25.8888, 20.5479, 11.1546, 4.6177, 1.8681, 3.9247, 1.295, -2.924, 4.305, 4.3461, -5.4196, -7.8904, -10.2821, -8.2802, -13.991, -11.2895, -12.538, -13.7725, -20.2458, + 6.9489, 8.2782, 12.9177, 18.1269, 10.1196, 2.5932, -1.2838, -5.9588, -9.0612, -10.7381, -10.6395, -8.4104, -4.0818, 7.0965, 0.3344, 2.1418, 2.2817, -3.7137, 1.6102, -18.5618, + 6.2919, 7.1483, 7.7499, 10.3266, 12.7585, 21.8234, 21.7899, 13.6697, 7.2737, 9.3185, 13.4418, -0.153, -6.4198, -9.4554, -7.4143, -12.4542, -21.2295, -24.5545, -24.4585, -25.4529, + 3.2078, 1.1604, 2.382, 7.1676, 15.6309, 19.6735, 9.8897, 7.8474, 10.1305, 10.405, -1.822, -9.0708, -12.7476, -14.298, -11.7869, -3.2366, -4.1439, -6.6114, -0.0121, -23.7655, + 4.9484, 5.9562, 10.0092, 16.2669, 12.926, 3.9525, 0.492, -2.9838, -4.7825, -5.0706, -3.0972, 4.4166, 5.1484, -3.0885, -2.2935, 1.8467, -6.6209, -8.5405, -3.2672, -26.218, + 9.119, 11.7308, 15.3181, 20.5759, 15.7183, 7.69, 3.7341, -3.2723, -6.7161, -9.0437, -8.0703, -0.593, 6.4087, 3.5269, 3.0413, -8.4178, -14.7425, -12.7049, -6.9905, -26.3121, + 1.4852, -0.6829, -1.569, -0.2848, 5.5052, 12.8631, 6.4129, 0.4626, -3.55, -5.4162, -3.9006, -1.4888, 7.5205, 5.649, 1.1393, 5.5204, -1.2344, -6.2194, -3.0728, -19.139, + 11.9158, 15.3244, 18.2371, 17.8689, 12.9861, 8.5734, 2.6935, -0.462, -0.3115, 4.3187, 1.8359, -6.5328, -11.3944, -12.3343, -10.2127, -3.2123, -10.7404, -11.6243, -6.0915, -20.8377, + -1.1406, 4.4681, 1.0243, 1.7567, 0.8452, 1.0568, 1.7113, 1.4304, 8.2151, 0.5703, 1.2053, -5.7909, -4.3638, 0.9165, -4.5872, 3.4354, 6.9859, 3.9875, -3.5121, -18.2142, + 18.8171, 22.5033, 16.7157, 10.3549, 3.9514, 1.6962, -0.6346, -5.9992, -6.8816, -7.3001, -7.9076, -4.3326, 4.9348, 4.6458, 0.9437, -3.5521, -9.364, -2.4386, -11.4118, -24.7409, + -0.9409, 0.5904, 2.2794, 4.9547, 5.8743, 8.7846, 11.0088, 11.1838, 11.6958, 14.1355, 8.9116, 2.5256, -1.8779, -5.6262, -5.5753, -9.1754, -9.0981, -12.4659, -11.4699, -25.7149, + 0.4141, 2.8215, 2.0838, 3.1886, 4.2216, 1.7188, 4.6179, 2.9704, 1.6545, -2.846, -0.9511, 2.6537, -1.8008, 0.9825, 1.2384, 1.5282, -0.7271, -3.094, -0.809, -19.8659, + 6.043, 4.6516, 4.3017, 7.7179, 6.7963, 6.291, 8.7476, 8.7592, 7.7014, 12.1586, 8.0227, -1.3414, -6.0075, -8.1097, -6.8511, -6.6141, -5.8068, -8.7086, -9.3302, -28.4218, + 7.1395, 6.4611, 6.477, 6.5752, 5.736, 5.6174, 3.8338, -0.3402, -1.9803, -2.2319, -4.1316, -3.2411, -2.2252, 4.195, 1.9636, -1.7425, 0.5431, -3.5115, -6.8529, -22.2844, + 17.8843, 21.4402, 20.6904, 15.9517, 9.7051, 2.5656, -1.5516, -7.4554, -8.8729, -10.2263, -8.6781, -5.1896, -0.7045, -6.768, -8.2898, -6.9326, 1.3954, -3.2208, -6.0504, -15.6928, + 10.6767, 10.3544, 18.1231, 11.2879, 6.1413, -0.361, -2.4504, -5.1076, -4.9943, -4.9704, -2.3126, 5.9757, 0.9523, -4.2427, -2.5152, 4.9197, -8.3019, -9.0057, 0.3384, -24.5078, + 9.9161, 11.8977, 18.2327, 24.4645, 22.2618, 14.5543, 11.0874, 11.6473, 16.7269, 16.7802, 10.9221, 4.3259, -12.8739, -20.0422, -22.5408, -24.1296, -20.9142, -22.6765, -24.3668, -25.2731, + 9.4023, 7.3715, 11.9062, 12.512, 7.0268, 13.6459, 7.2747, 2.8388, 14.6515, 22.1573, 24.2647, 6.5863, -1.1334, -12.1075, -18.8356, -21.0343, -18.7149, -21.3705, -23.1378, -23.304, + 6.1154, 6.8878, 8.0486, 2.083, 11.4555, 24.4875, 10.2548, 8.5452, 8.1934, -4.1865, 11.8854, 1.3485, 1.9895, -14.5678, -11.0286, -3.4615, 1.3428, -19.7548, -24.2069, -25.4313, + 10.357, 12.8522, 17.3265, 22.8368, 16.6859, 10.9743, 8.2198, 6.8557, 9.3432, 12.2609, 5.1561, 1.541, 1.3448, -11.6896, -19.8579, -22.4891, -19.3409, -16.0157, -19.9891, -26.372, + -2.2958, -3.0198, 2.5524, 6.5326, 5.0549, 2.8939, 1.6085, 1.4431, -0.1701, -2.0055, 1.1867, -1.3016, -2.2987, 6.124, 3.0188, -0.9646, 2.6135, 4.0735, 0.2584, -25.3041, + 3.3425, -4.9398, 1.7857, 0.981, 8.2974, 13.876, 7.3422, 4.3951, 4.0317, 8.9378, 9.1371, -1.7588, -9.1168, -12.4667, -12.0238, -9.0772, 4.3501, -0.6556, 4.4305, -20.8684, + 2.6724, 2.4627, -2.5441, -3.3045, -4.2917, -1.4508, 1.5865, -1.0572, -2.1109, 1.487, -1.0006, 3.5002, 3.7107, 1.3794, -1.6261, 0.0378, 2.0162, 0.3261, 3.2452, -5.0385, + 3.1268, 4.8784, 8.6218, 13.5865, 14.1019, 7.249, 1.4764, 0.4142, -1.444, -0.1256, 6.7242, 13.6333, 7.9001, 5.1808, -8.7618, -15.9427, -17.574, -13.2732, -3.9031, -25.8689, + 8.7515, 17.2518, 23.5164, 15.769, 8.1574, 4.9814, 0.5026, -0.4621, -1.5217, 2.4458, 11.1982, 12.8925, 8.2107, -10.1894, -18.8969, -20.9839, -19.6436, -9.2705, -7.3159, -25.3934, + 11.798, 12.1448, 14.6065, 20.2682, 20.5368, 14.0544, 8.9695, 7.1447, 9.3182, 10.2279, -1.3945, -9.863, -14.231, -14.26, -11.294, -5.3186, -14.6453, -16.0278, -14.7441, -27.2906, + 8.3692, 9.6882, 12.8542, 17.3005, 21.134, 18.5917, 11.2777, 5.5517, 0.547, -2.3437, -2.3633, -0.2054, 0.7833, -4.4844, -5.7547, -6.4185, -15.2118, -20.989, -20.6002, -27.7265, + 3.254, 3.5495, 5.6572, 11.4443, 18.6822, 14.2818, 7.9623, 5.8581, 7.6636, 11.238, 10.4719, -0.3434, -0.9127, 0.3323, -9.6682, -12.3368, -7.0303, -17.504, -22.5944, -30.0053, + 10.5668, 4.7765, 4.8789, 5.9385, 13.1029, 20.5979, 14.5257, 8.6496, 2.4271, -1.164, 1.2029, 9.4957, -0.02, -12.573, -14.8513, -9.422, -4.4288, -12.9535, -14.372, -26.3782, + 3.6092, 2.1429, -0.2581, 2.1516, 6.0252, 4.4742, 4.352, 2.9527, 3.6102, 2.6901, -0.0942, 2.2564, 1.3309, -0.5758, -1.109, 0.1191, -0.118, -0.1015, -5.5503, -27.9075, + 8.4206, 12.653, 18.9633, 23.9855, 21.254, 9.7237, 1.5121, -0.7361, 0.7545, -1.5581, 2.4158, 9.9186, 6.7278, 3.6705, -12.4971, -19.8574, -23.2581, -23.72, -10.9203, -27.4525, + 22.1951, 16.4633, 13.2055, 7.497, 2.228, -2.4528, 8.773, 10.687, 4.9929, 1.1178, -5.3802, -8.2471, -5.7256, -8.8078, -8.354, 1.5835, 1.5054, -11.6521, -13.9564, -25.6726, + -7.9053, -6.584, -6.0103, -4.8986, -4.2425, -4.7462, -6.7261, -8.5401, -8.6906, -8.8402, -5.6306, -0.7673, 8.6501, 5.08, 13.9798, 11.4953, 10.0314, 17.429, 14.9683, -8.0522, + 11.9359, 8.4098, 2.8637, 0.1621, 4.2653, 2.699, 1.2433, -1.9101, -2.5608, -4.4372, -0.737, 5.0345, 2.4512, -1.2451, -4.6924, -2.0267, 0.3932, -0.7445, -1.8229, -19.2813, + -1.3202, 3.8184, 7.4609, 11.6391, 16.2849, 25.4929, 15.8707, 1.4126, 12.3759, 21.2527, 8.1587, -3.8943, -14.786, -10.693, -17.9239, -16.3824, -1.7644, -13.0054, -19.3451, -24.6522, + 9.8443, 9.9627, 12.5201, 13.7261, 10.3992, 6.629, 2.9281, -0.7644, -3.9695, -5.3737, -8.3704, -7.5382, -1.7207, 5.7599, 1.941, -0.8146, 0.5436, -5.6632, -12.2155, -27.8236, + 6.429, 4.7082, 3.9317, 3.1702, -1.6353, -3.6078, -6.315, -9.1986, -10.3233, -9.8065, -5.8063, -1.3404, -0.7673, -2.2448, -1.2797, 7.1795, 3.2561, 15.5273, 14.8629, -6.7401, + 23.9506, 22.1558, 17.7456, 14.435, 8.3329, 3.1023, 4.3134, 8.6024, 3.8015, -3.9642, -10.78, -9.6229, -10.886, -10.6376, -8.0083, 4.7524, -6.4851, -13.7226, -12.4871, -24.598, + 9.576, 11.4366, 12.9012, 14.4846, 16.8425, 19.5473, 19.7042, 15.2736, 12.0272, 11.0446, 7.4677, 1.1314, -9.0848, -18.3215, -23.8214, -23.171, -19.9932, -10.2715, -17.3599, -29.4137, + -3.4431, -3.1613, -1.9102, -0.6935, 1.387, 1.2966, -1.0892, -2.4642, -3.0407, -4.4927, -5.4209, -4.2773, -0.5358, 0.409, 1.2794, 5.899, 14.3402, 3.7638, 11.1512, -8.9972, + 15.2464, 18.8014, 25.3166, 19.5775, 11.0313, 6.5896, 5.6381, 2.9552, 5.1185, 13.254, 13.6736, 8.5584, -8.3365, -15.9401, -20.3756, -21.2859, -21.2275, -19.3217, -15.1325, -24.1407, + 3.1035, 6.1792, 5.0462, 3.5926, 7.0741, 6.4046, 9.9419, 7.7684, 4.2113, 3.6277, 6.5092, 5.59, -1.7178, -6.4492, -7.8871, -6.9582, -5.1379, -8.3058, -10.5436, -22.049, + -0.728, 0.5704, 3.9717, 5.9469, 6.078, 4.077, 1.2426, -1.3458, -3.2314, -4.6819, -6.2378, -5.0198, -1.208, 10.5808, 2.6382, 3.7712, 3.8446, -1.7555, -1.1558, -17.3572, + 5.3326, 5.4267, 9.824, 16.2001, 13.6887, 6.951, 1.1917, -1.6723, -2.5788, -2.7648, 2.6931, 5.4843, -4.2095, -9.6143, -6.2919, 3.6211, -3.8754, -6.5263, -5.2823, -27.5977, + 2.5771, 3.4727, 5.4467, 8.8349, 9.887, 12.1341, 12.0826, 7.7444, 4.5255, 0.7889, -2.0382, -4.7604, -5.7542, -4.6241, -2.4718, -4.0958, -6.2797, -4.6267, -9.5398, -23.3031, + 14.7846, 16.0256, 18.44, 18.7731, 12.4129, 9.2087, 4.9463, 5.2837, 7.9434, 9.1983, 5.6775, 1.0431, -7.1678, -12.3799, -13.9635, -9.429, -13.5075, -18.2553, -21.2672, -27.767, + 14.086, 12.616, 17.7362, 22.848, 13.2766, 7.4189, 5.7487, 1.8704, 2.3287, 6.7312, 16.704, 13.9396, 0.1199, -14.272, -18.2397, -22.3862, -24.8172, -19.6941, -10.4326, -25.5823, + 1.2702, -1.274, -3.71, -0.5628, -4.5219, -4.458, -7.71, -8.3547, -7.0524, -3.3805, -3.0927, 1.978, 6.7217, 16.8392, 12.2288, 6.1018, 4.3647, 3.7046, 7.0648, -16.1569, + -1.5691, -0.6625, 0.8145, 2.7114, 4.5683, 6.3808, 5.3169, 3.3697, 3.7409, -1.1329, 1.3502, 1.4333, 7.1092, 8.0819, 7.414, -0.3489, -3.5222, -5.2023, -8.9373, -30.9159, + 8.8791, 11.5486, 17.4354, 21.959, 18.7721, 13.0614, 12.3597, 15.8383, 7.9901, -4.7504, -11.1404, -17.0402, -20.1418, -20.5768, -16.8543, -10.271, 3.5082, 1.5897, -6.0317, -26.1349, + 1.4924, 2.3041, 3.6995, 3.9735, 2.9478, 1.4182, -0.1153, -0.7081, -1.6935, -4.7155, -3.8966, -1.0552, 4.3924, 3.5582, 4.7903, 3.4573, 4.4498, 3.7588, -4.9783, -23.08, + 19.7104, 23.5312, 26.4663, 21.1276, 13.4352, 11.0142, 11.5216, 12.6431, 11.662, 1.8352, -2.6313, -2.1531, -10.9044, -16.4683, -19.1821, -21.4207, -21.6631, -20.6795, -14.544, -23.3003, + -7.3825, -5.1236, -2.0803, -0.3985, -2.1515, -3.3191, -2.5398, -3.6553, -4.6673, 0.245, -1.138, 0.4163, -5.0235, -3.1123, 1.6781, 0.5456, 9.2542, 19.9831, 16.2303, -7.7611, + 2.5108, 2.1845, 2.6268, 3.2213, 4.7277, 4.9151, 4.4068, 2.5115, -1.2667, -1.047, -0.584, 3.198, 11.3786, 3.1343, -1.5396, -0.779, -4.2909, -5.9553, -4.0558, -25.2973, + 1.3099, 3.8149, 5.9305, 6.029, 6.2561, 6.5634, 6.5483, 2.2558, 2.8164, 5.8479, 6.7553, 3.8567, 2.7371, -0.0626, -3.8527, -5.1436, -5.5124, -7.3236, -9.2045, -29.6219, + 6.9414, 7.8896, 11.9174, 19.4391, 22.8159, 17.513, 12.8967, 11.7403, 13.3801, 0.6255, -8.6365, -13.1338, -15.0777, -14.1269, -8.2615, -12.9862, -16.1846, -10.2908, -1.8314, -24.6297, + 13.6675, 18.7539, 23.7644, 23.5665, 14.5584, 8.2788, 5.9566, 3.8037, 5.8231, 9.3954, 3.8096, -3.7071, -3.0809, -2.7965, -15.391, -22.2338, -22.7083, -19.7578, -17.2327, -24.4698, + 6.8878, 4.6215, 4.083, 1.7534, 6.3161, 9.303, 9.1793, 1.8539, -3.8953, -6.2684, -7.283, -6.1167, 0.8013, 5.3564, -0.9241, -2.6976, 1.7576, -1.1627, -4.9125, -18.6528, + 11.5366, 9.1379, 9.1023, 13.3107, 15.2931, 8.4262, 2.0019, -1.8545, -5.347, -10.498, -13.165, -8.7617, -2.8037, 6.5213, -2.9746, -1.1653, 2.895, -3.9002, -0.4074, -27.3478, + 8.1149, 5.2054, 4.7193, 10.9119, 14.2393, 9.7159, 2.7743, 0.0628, -0.9042, 2.5046, 6.2675, 4.5297, -1.7121, -2.7212, -6.4591, -8.2032, -12.1525, -9.796, -4.5542, -22.5432, + 10.427, 10.1489, 7.8411, 6.9092, 5.2675, 3.1553, 3.186, 0.3063, 0.4719, -0.871, -0.6868, -1.1505, -4.6137, -2.9984, -2.9661, -2.854, -3.0302, -2.2057, -5.9823, -20.3547, + 16.5991, 18.818, 20.4139, 16.0812, 15.2582, 13.6, 9.773, 4.82, 7.267, 0.5444, -5.1929, -8.9752, -12.2178, -15.2451, -9.0857, -9.6324, -11.9042, -7.0554, -15.8485, -28.0175, + 6.9984, 7.5807, 9.7172, 14.2935, 21.1422, 18.8026, 13.0729, 13.6068, 15.6061, 5.7873, -4.4176, -10.663, -14.9625, -15.276, -12.1485, -4.9859, -13.8661, -15.0801, -8.9505, -26.2577, + 4.8529, 5.9107, 5.9519, 3.1046, -0.7986, -3.8, -3.3218, -6.5949, -9.5964, -7.6925, -7.0336, -3.5031, 2.4411, -0.1901, 9.1699, 13.0532, 0.4243, 10.947, 3.0406, -16.3654, + 2.3975, 0.4924, 3.8005, 6.146, 0.9043, 2.1381, -0.0106, 2.9239, -11.7677, -3.8359, -3.4925, 0.8716, 3.474, -2.8287, -3.8786, 1.2858, 6.8931, -2.1701, 3.3894, -6.7326, + -3.5428, -1.39, 0.9285, 2.4806, 2.9675, 0.798, 0.9612, 0.2854, -2.0562, -1.3222, -1.9025, -0.0059, 8.6474, 4.6327, 1.6964, 0.3984, 0.9512, 1.7069, 1.4812, -17.7159, + 17.4798, 18.9995, 21.9699, 20.6967, 14.4015, 9.2408, 9.2963, 4.6834, -0.5765, -2.0466, -4.687, -8.134, -10.84, -6.9387, -4.9129, -2.3346, -9.5282, -16.6374, -22.862, -27.27, + 30.2051, 29.0816, 22.701, 15.9702, 13.2347, 12.3034, 7.9736, 1.711, -2.905, -5.822, -9.0457, -11.4933, -10.9824, -10.7128, -9.7198, -11.447, -12.1083, -14.372, -14.3489, -20.2236, + 4.3667, 5.6948, 7.6382, 9.1345, 7.9965, 5.9946, 4.8983, 4.5838, 1.3099, -1.1182, -2.4032, -2.5986, -0.3123, -3.8248, -3.3874, -4.6492, -2.5381, -4.101, -4.4278, -22.2567, + 13.3799, 15.9919, 18.2801, 18.5738, 14.5051, 15.061, 12.6361, 1.8684, -4.4789, -7.5763, -7.3687, -5.7285, -8.7693, -10.097, -1.0795, 0.7696, -6.5956, -14.5402, -16.2583, -28.5735, + 1.2989, -0.2985, -0.1264, 2.2528, 6.1919, 9.085, 11.5888, 9.6084, 6.4565, 4.6999, 3.8291, -3.1433, -2.0178, -5.4377, -3.5892, -2.4088, -3.4525, -6.5279, -6.8848, -21.1245, + 6.699, 6.9952, 6.99, 10.6461, 18.176, 23.4925, 20.7738, 19.3068, 14.5258, 4.1679, -5.0313, -10.5967, -15.7569, -18.7535, -19.3572, -18.4953, -9.1098, -8.3084, -3.508, -22.8561, + 0.3614, -3.0919, -2.2049, 0.2924, 3.5194, 12.3203, 10.5339, 6.5081, 2.9888, 3.7587, 9.6208, 6.5139, -3.3458, -8.5883, -8.7468, -4.73, 1.1707, -5.5824, -3.0982, -18.2001, + 3.6833, 5.1669, 7.0034, 5.1138, 6.2451, 5.1324, 2.9024, -0.2756, 0.6913, 0.7688, 2.7471, -3.0081, -4.2841, -1.679, 0.6913, -2.2915, -1.1739, -2.5591, -2.7007, -22.1738, + 11.4726, 11.0663, 10.8078, 10.4446, 10.6033, 12.3965, 13.0646, 7.6243, 1.8855, -2.1733, -3.8981, -0.7658, 2.9887, -2.4982, -10.215, -14.2533, -12.1696, -5.433, -8.34, -32.608, + -6.7179, -4.6131, -3.1636, 0.0876, 0.6888, 1.0614, 0.5541, -3.503, -3.5922, -2.2597, -0.8136, 6.0096, 11.8925, 2.9252, -1.145, -0.4619, -0.0294, 2.9522, 6.4894, -6.3616, + 5.3482, 3.731, 5.0957, 3.1029, 1.678, 3.1184, 0.5161, -3.5018, -4.5034, -6.3519, -7.8639, -5.658, -5.1767, -2.3928, 0.1325, 3.3098, 7.821, 11.9881, 4.419, -14.8118, + 8.2697, 5.8835, 6.0215, 10.4427, 12.0342, 7.5709, 3.5443, -1.0166, -4.1313, -6.5619, -5.066, -0.8575, 7.1102, -0.6052, -4.0956, 0.6756, 0.8926, -4.2551, -6.4788, -29.3772, + 2.0192, 3.9566, 4.9448, 8.089, 14.6263, 15.3545, 12.2775, 10.3302, 7.2993, 12.5826, 7.7803, -2.3944, -7.4949, -10.2984, -9.7837, -7.3581, -7.2692, -6.1954, -16.7366, -31.7295, + 12.8428, 15.92, 16.2497, 11.854, 3.8, -1.0057, -2.5059, -6.532, -8.39, -9.9165, -9.6596, -6.0113, 1.0447, 13.8469, 7.3566, -4.1906, -11.0801, -8.0052, 3.2361, -18.8537, + 17.202, 18.636, 23.3502, 20.5862, 15.5823, 12.7495, 6.4445, -6.6661, -9.171, -15.5663, -21.8272, -18.4838, -16.7082, -14.2582, 2.8891, 3.6115, -0.4823, -0.0577, 2.5754, -20.4057, + 11.2405, 16.2045, 19.5245, 19.0279, 10.816, 4.2621, 0.0074, -4.8018, -7.7494, -9.5065, -10.8518, -10.4718, -6.2617, 1.5892, 9.5055, 4.0459, -4.23, -9.8946, -9.4119, -23.0441, + 21.5981, 16.6548, 9.2131, 4.2901, -2.7752, -6.0814, -5.7172, -6.8518, -5.3057, -3.6255, 1.9348, 7.8994, -1.326, -8.0365, -10.6481, -6.5275, -3.0468, 3.5257, 5.6627, -10.8371, + 2.3529, 1.9098, 1.1705, -1.0129, 0.2322, -2.1724, -2.7849, -0.3004, 1.1108, 2.9625, 0.3261, -2.0946, 1.0272, 3.4696, 1.9753, 1.1513, 2.4885, 2.1442, 0.7739, -14.7298, + -1.7003, -2.4848, -2.4346, 4.7038, 24.9669, 27.0962, 7.9463, 4.7152, 0.192, -0.8991, -0.8489, 9.9068, -2.48, -9.4907, -11.9321, -1.857, -6.2441, -11.0862, -11.2891, -16.7804, + 14.9206, 17.922, 23.4494, 28.4771, 23.9338, 22.5858, 21.7793, 9.3991, -3.6346, -10.2702, -14.3748, -16.3264, -19.3026, -18.4585, -17.3134, -12.271, -10.593, -10.9994, -7.9141, -21.0092, + 10.8472, 9.9985, 8.1012, 5.6373, 0.7372, 0.0745, -0.8638, -1.7933, -2.9142, -3.015, -2.2427, -0.7782, -2.5201, -6.2197, -5.1933, 0.2777, -5.0155, 0.2927, 4.1108, -9.5213, + 11.2774, 17.5024, 20.7927, 14.9512, 8.8893, 5.3831, 1.1126, -0.5407, -1.8226, -0.7548, 3.8991, 14.1917, 11.4189, -2.2812, -13.1711, -17.2396, -15.8893, -13.7806, -15.9376, -28.0009, + -1.8142, -1.3801, -0.2831, 1.382, 1.7722, 1.4623, -1.2023, -3.2113, -5.2345, -6.7523, -4.9565, -2.8637, 4.0779, -2.6764, 0.8821, 14.4958, 8.5614, 4.5439, 7.906, -14.7091, + 10.5077, 13.8832, 19.5676, 20.853, 17.7078, 12.7109, 11.5269, 8.0218, 2.2318, -5.7244, -10.1683, -12.812, -14.923, -10.7023, -2.0109, -8.3963, -10.2008, -5.4032, -10.7793, -25.8902, + -0.2509, 1.3469, 0.6421, 2.6377, 6.0659, 4.3721, 5.352, 3.9824, -1.7069, -2.0895, -5.2191, -1.537, -3.3737, 1.3384, 4.0383, 10.2321, 1.6548, -3.2413, -5.147, -19.0973, + 6.4953, 9.3365, 14.1057, 20.6271, 16.1168, 7.358, 1.4929, -2.7587, -4.0681, -3.9748, 1.3672, 8.9105, -0.92, -5.3133, 0.3345, -6.1299, -12.7503, -9.3229, -13.4612, -27.4454, + 0.6201, 2.4328, 4.976, 9.2545, 15.4025, 12.2971, 5.768, 5.0077, 4.0499, 4.2155, 9.706, 7.7493, 5.8274, 0.3852, -5.9984, -11.5236, -7.305, -10.3504, -20.7971, -31.7176, + -3.7294, -1.4413, -3.7524, -4.5904, -3.2743, 0.736, -3.2763, -4.8007, -0.6213, 4.903, 10.4614, 11.0474, 17.3494, -0.7763, 5.4732, 0.7769, 1.2498, -0.7639, -2.107, -22.8638, + 6.7163, 9.2255, 12.3187, 17.6924, 17.6404, 11.894, 7.0991, 4.2645, 4.3021, 9.9874, 5.8382, -3.4579, -6.9519, -4.809, -2.1538, -14.0697, -18.7474, -17.332, -11.2745, -28.1824, + 14.7156, 19.4663, 14.7897, 6.5422, 1.1728, -2.3524, -4.9286, -7.8168, -8.8525, -9.4747, -10.7274, -8.5129, -4.4565, 7.8312, 0.0283, 4.0451, 1.6338, -1.3894, 4.4306, -16.1441, + 19.068, 22.0875, 24.611, 22.0341, 17.3706, 15.8785, 14.1658, 11.9508, 4.4308, -1.1373, -6.4223, -10.3244, -11.8572, -13.5064, -14.4779, -15.1004, -15.5216, -16.8251, -22.0101, -24.4145, + 9.0336, 19.0176, 24.4867, 24.6758, 18.9461, 11.7838, 7.6427, 4.775, 1.2864, 0.4513, 1.8155, -1.2592, -9.2086, -14.2929, -15.7555, -13.6408, -7.7748, -14.5157, -21.5902, -25.877, + 1.4827, 0.2805, -0.381, 1.4732, 8.234, 8.1707, 10.06, 8.3087, 4.1212, 2.7249, 3.5821, 7.9718, 3.7426, -2.6511, -5.3909, -4.4519, -4.5293, -6.7232, -8.9602, -27.0648, + 10.5705, 10.67, 11.7791, 12.1925, 10.0236, 6.6964, 5.1163, 2.6148, 4.7648, 2.5521, -3.9125, -7.4628, -9.6721, -9.3307, -9.9466, -8.0895, 1.1968, -3.82, -3.4846, -22.458, + 7.5905, 8.3863, 11.5587, 16.2565, 22.0088, 23.0422, 17.8049, 13.1018, 17.1694, 13.5769, -0.2381, -1.8062, 1.5806, -10.3901, -20.8106, -24.7914, -25.0524, -24.3552, -19.3769, -25.2554, + 7.3275, 11.616, 16.6781, 15.5131, 8.1538, 4.8147, -1.7134, -2.9599, -6.5688, -7.0695, -0.9248, 5.3367, -4.508, -7.1758, -3.427, -3.5021, -8.7907, -5.2842, 1.7479, -19.2635, + 8.6994, 13.7488, 20.2706, 15.6056, 8.03, 2.7906, -2.4915, -6.3762, -9.0577, -10.4892, -11.7811, -10.7422, -7.7494, -0.3422, 10.0858, 3.8928, 3.968, -2.0796, -2.0561, -23.9265, + -1.8066, -1.3696, 1.0493, 1.3711, 1.9691, 1.1999, -1.8646, -1.9643, -1.7749, -1.339, -3.3717, 3.1526, 1.2109, 0.799, 0.4966, 2.5531, 3.3704, 2.3429, 4.9229, -10.9469, + 4.0689, 7.4175, 12.694, 18.06, 16.5869, 9.3259, 4.5282, 2.8636, 1.6428, 4.7328, 12.4121, 9.1212, 6.2302, 0.0152, -12.5596, -17.7355, -18.6999, -12.797, -17.6503, -30.2571, + 0.8292, 2.6495, 1.8804, 4.1439, 5.6667, 5.7021, 4.9475, 6.8868, 6.795, 8.0289, 10.5666, 8.6874, 1.8534, -2.2297, -6.3646, -6.79, -8.1505, -9.3082, -10.0423, -25.7522, + 7.1022, 3.8236, 1.8946, 4.423, 4.784, 4.6315, 5.8219, 2.7914, 1.6501, 0.4344, 2.2205, 4.0071, 0.0326, -2.6285, -2.5436, -3.5874, -3.6688, -4.2155, -7.0087, -19.9643, + 0.1242, 12.2019, 4.3084, 4.2478, 1.9093, 0.6288, 1.1102, 1.5269, 2.2918, 5.1362, 2.1955, -5.7687, 1.1936, -1.4469, 0.2971, -4.6605, 0.8522, 1.2017, -3.9848, -23.3647, + -5.1159, -1.2775, 2.526, 4.1265, 3.4097, -1.7194, -0.8844, -1.4795, -5.4958, -6.8537, -1.5398, 0.9661, -2.324, -4.8943, 8.2925, 3.4432, -1.7853, 6.31, 13.441, -9.1454, + 3.9898, 4.3777, 4.2357, 3.0453, 3.7447, 2.5019, 1.1011, -0.478, -2.4003, -0.6497, 0.8291, 0.2117, 0.0985, -0.2133, 0.383, -1.785, -1.0322, -2.1328, -1.6069, -14.2203, + 11.3622, 14.7416, 16.8859, 15.0883, 9.9488, 8.7692, 4.3995, -2.0242, -2.6878, -1.0092, 0.7764, -2.2298, -4.084, -8.1165, -6.2525, -5.2064, -7.0092, -6.7164, -9.2528, -27.3833, + 3.6579, 2.8996, 4.0461, 8.3701, 17.0082, 23.3625, 16.2578, 7.1955, 17.3887, 6.3999, -4.2883, -9.9015, -12.7556, -12.3388, -5.468, -10.3674, -10.9476, -10.1432, -6.0175, -24.3585, + 7.5312, 5.8939, 4.3265, 4.0014, 2.9087, 1.6542, 2.9601, 3.9087, 1.37, -2.9778, -0.8059, -0.8752, -0.992, -0.8125, -0.8336, -0.0306, -2.6451, -2.7999, -4.2986, -17.4834, + 15.3876, 20.0855, 22.6771, 20.6277, 15.1509, 8.8202, 3.6289, -2.1904, -8.5688, -13.1818, -15.2549, -15.0083, -12.7233, -8.7307, 0.5974, 4.3829, -2.277, -0.0304, -7.8902, -25.5026, + 23.6589, 23.2539, 20.352, 15.1761, 11.4144, 5.8059, 5.4712, 1.316, 0.0827, -2.4308, -7.0613, -6.1765, -1.8534, 5.6004, -1.4387, -15.4564, -17.387, -18.868, -17.3832, -24.0763, + 11.6709, 14.1123, 21.1753, 25.8068, 20.7082, 14.063, 14.1588, 17.922, 14.6153, 4.8179, 3.3194, 0.469, -11.4997, -19.1991, -21.5666, -21.4213, -21.1902, -22.3547, -22.1566, -23.4508, + 4.6799, 3.0606, 1.6539, 6.2007, -2.0201, 3.0954, 0.5569, 3.2707, 1.3312, 0.0725, 1.8286, -5.9667, 2.657, -0.0978, -1.2174, -2.2597, 0.2234, 1.4765, -4.2077, -14.3379, + 9.3104, 11.8578, 14.9832, 13.1906, 8.5578, 4.2616, -0.4942, -3.0677, -3.2171, -5.1322, -1.7298, 6.6384, -0.8475, -8.0712, -9.5863, -5.8386, 2.661, -8.3104, -6.0285, -19.1373, + 2.2896, 3.8587, 4.9224, 8.6357, 13.9236, 17.8222, 15.7427, 11.5211, 7.5272, 9.1679, 9.7247, 5.7451, 0.5275, 0.3504, -6.2281, -12.9212, -14.0843, -20.5964, -26.6432, -31.2855, + 18.9039, 18.0327, 13.6297, 9.7561, 7.4319, 5.3744, 2.9646, 1.7415, 0.6716, 0.6859, 2.7446, 0.5342, -4.3187, -6.1877, -6.9311, -9.8734, -11.9041, -9.1281, -8.9591, -25.169, + 6.4513, 6.7843, 9.4438, 12.9549, 16.4801, 14.9093, 8.2954, 1.6877, -2.5193, -4.4922, -6.7348, -6.9853, -4.6783, 0.7181, 1.0483, -5.1128, -1.1161, -7.5305, -12.398, -27.2058 +}; + /* /home/david/codec2-dev/src/codebook/train_120_2.txt */ +static const float codes1[] = { + -1.2668, -1.2477, -0.0681, 3.8419, -0.0693, -1.7919, -1.5943, 0.8402, 0.155, -3.1526, -3.0204, 0.7337, -0.2603, 1.659, 0.023, 5.5893, -2.4959, 1.9604, -0.6348, 0.7999, + 2.6673, 1.4923, 1.1408, -0.7478, -1.0755, -1.3421, -0.4884, 0.2535, 0.2951, 1.5088, 1.9447, -2.662, 2.3751, 1.5298, 4.1357, -6.563, -2.1766, -2.7535, -0.7706, 1.2362, + -0.6415, -0.4348, -1.2178, -0.987, -1.1057, -2.1421, -2.3594, -0.4977, -4.1484, -4.712, 5.5425, 3.0695, 3.661, 2.9729, 2.4379, -1.6136, -1.3052, 2.1342, 1.9164, -0.5692, + 1.593, -1.1175, -1.2476, 1.6203, 2.5315, 2.3427, -0.5223, -3.1063, -2.1739, -1.4774, -2.6108, -3.5842, -0.3828, -0.1511, 0.8929, 2.5717, -1.7657, 1.8954, 6.0193, -1.3272, + -0.2102, -0.3681, -1.2724, -1.152, -0.3715, -0.5633, -2.5238, -1.768, 4.7356, 5.6452, 0.862, 0.875, -0.8932, -1.5918, -1.4047, -0.072, -0.608, -0.7876, 1.3972, 0.0717, + 5.1178, -1.5391, -4.2881, -1.9745, 1.3515, 2.4014, 0.9329, 3.4647, -2.4062, -0.4224, 2.8708, -1.6053, -3.1492, -2.6783, -2.6937, -4.4645, 1.8599, -0.5456, 3.891, 3.877, + -1.7119, -1.0101, -0.5002, -1.7849, -0.4884, 0.2279, -0.8335, -1.0083, -1.2819, 0.1129, -1.3674, -1.3338, 0.929, 3.0765, 2.6339, 3.5627, -2.2713, 0.6565, -1.2099, 3.6022, + -1.5938, -1.3264, 0.9856, 2.8765, 2.37, 1.2528, 1.2586, -1.2453, -1.3974, -1.4988, -1.6309, -1.2183, -0.1625, -0.869, 0.003, -2.0081, 1.358, 2.9585, 3.3396, -3.452, + -1.368, -0.6304, -2.5755, -1.2397, 4.9487, 2.7251, 1.4675, -0.1832, -0.3932, 1.4723, 1.741, 0.6216, -1.0849, -0.7112, -0.3751, -1.7539, 0.1222, 1.9858, -0.5248, -4.2444, + -1.2786, -0.2384, 0.6718, 2.9763, -1.6959, 6.4607, -3.9459, -2.056, -2.7306, -0.2583, 0.0389, -3.6271, -4.0721, 0.826, 0.8112, 2.8769, 2.24, 0.5444, 0.3571, 2.0995, + 2.5196, 2.3359, 1.662, 0.625, -1.0528, -0.9133, 1.8668, 1.2853, 1.4368, 1.4676, 1.1301, 1.3664, 1.1076, -3.2853, -0.453, 0.4467, -4.7302, -3.8149, -3.9866, 0.9865, + 0.1738, 1.294, 1.3514, -0.3684, -0.7078, -0.2329, 1.3467, -1.0678, -0.0262, 0.2448, -0.8418, -0.391, 2.7415, 2.9948, -4.5965, -0.1192, 0.2496, 0.4684, 0.0669, -2.5805, + 0.2482, -1.3236, -1.481, 0.9433, 3.4287, 2.2233, 8.9344, -1.1138, 0.4585, -3.747, 3.0416, -2.7394, 2.288, 1.6598, -3.6439, 0.0633, -2.7363, -1.2617, -3.1924, -2.05, + 1.4672, -1.3248, -0.5511, 1.4512, -0.471, -1.2381, 2.9453, -2.3244, 2.3249, -2.1969, 0.9414, -1.9926, 0.5254, 0.0792, -3.2076, -2.414, 3.5291, 3.5738, -0.0613, -1.0556, + 1.556, 0.0091, 0.077, 2.8542, -1.4594, -2.0102, 0.544, 2.8119, -0.2925, -0.7111, 0.9589, -1.6923, -1.8606, 1.104, -1.6733, -0.0895, 3.6894, 2.7628, -6.9922, 0.4138, + -1.5539, 0.682, 1.4458, 0.4297, -0.4115, -1.3266, 0.5024, -0.6975, -0.382, 1.284, 0.9597, -1.0561, 2.2198, 0.1292, 1.4343, 3.0313, -3.9845, 0.6776, 0.338, -3.7217, + -2.0283, -1.5216, 1.0103, 4.8788, 3.7028, 4.4, -0.3076, 2.4853, 2.2296, -1.5213, 0.436, -5.9903, -2.6578, -2.3985, -2.0127, 1.3737, -3.795, 2.3105, -0.2099, -0.3839, + -1.7339, -0.9861, -0.2078, -1.2579, 2.5808, -0.9255, 3.2388, 1.0999, 3.6754, 4.6424, 1.9111, 1.4716, 2.7531, -0.2725, -0.3573, -0.5392, -4.2109, -6.4662, -2.3713, -2.0442, + 0.7177, 1.4094, 0.7205, 6.8683, 1.7836, 7.1562, -2.9368, 3.4036, -0.6064, 2.3377, 2.8714, -7.0408, -9.7129, 4.1278, -3.4444, -5.9919, 5.5073, -0.8996, -7.5142, 1.2434, + 0.8042, 1.5886, 0.8754, -0.4378, 0.2336, 0.0424, -0.1245, 0.0847, 0.6402, 2.6508, 1.6375, -3.2393, -2.2823, -2.1435, -1.5628, 0.4271, 2.2571, 2.5048, -1.5933, -2.3629, + 0.6292, 1.1956, 0.8357, -0.8634, -0.1796, 1.8589, 0.694, 2.8309, 2.5569, -0.4253, 0.2913, 0.7772, 1.418, 3.421, -1.9468, 4.2236, -7.3361, -3.7802, -3.598, -2.6029, + 1.9034, -0.7126, -2.3343, 0.2344, 3.6545, 3.9405, 3.0203, 0.1937, -1.1906, -1.9012, -0.6667, -1.259, -1.1021, -2.665, 0.14, -1.4183, -1.2342, 0.0547, 0.1519, 1.1906, + -3.6125, -2.2485, -1.082, -1.9912, -1.1521, -2.2527, -2.5383, 0.932, 1.1572, 2.023, 1.6579, 1.3763, 6.4432, 2.1652, -2.0259, 1.9724, 3.2824, -0.4615, -1.1909, -2.4539, + -1.153, -2.179, -0.7355, -2.0941, 0.6246, 1.7502, -3.3266, -3.4374, -2.6486, -2.2938, 0.9286, 1.3396, -2.1323, 0.2739, 1.2664, 4.4111, 1.3864, 3.905, 2.8286, 1.2861, + -1.9752, 0.7423, 2.4137, 1.8854, -1.1393, -2.5802, -2.9355, -3.674, -1.8244, 0.3099, 6.1403, 4.6215, -2.0636, -3.7172, -0.94, 1.424, -0.3669, 2.0205, 0.6217, 1.0369, + -0.1561, 3.9621, -1.3649, 0.2912, 3.5366, 0.8537, -0.9376, -3.7333, -6.5447, -1.2107, 3.3183, 2.5758, 1.9693, -4.869, 0.6212, 0.0985, 1.5746, 0.2433, -2.6173, 2.389, + 0.6849, -1.1521, -2.0382, -0.8953, 0.8771, 1.1996, -0.9704, -1.3679, -1.146, 0.0582, 0.2636, -1.9785, 0.5235, 1.6427, 0.6362, 0.7411, 5.6052, -0.3533, 0.6579, -2.9883, + 0.5989, -3.9928, -2.1937, 3.8742, 2.0056, 2.3132, -0.4478, -2.0855, -4.3607, -2.126, 5.3544, 1.9827, 5.3407, -0.8346, -2.4624, 1.1729, -4.3825, 0.7623, -1.9429, 1.424, + -3.3103, 0.0394, 2.0113, 2.6733, 1.2484, -0.2186, 0.1156, -0.4856, 2.4501, 0.8179, -1.1164, -2.1952, -0.9719, 2.0728, 0.4002, 1.1891, 1.7518, -1.2571, -3.3136, -1.9012, + 1.886, 6.9767, 2.4311, -2.0414, 3.91, 5.5378, -1.7478, -0.8304, 2.8523, -1.4075, 0.1309, 1.8232, -2.8868, -7.5003, -3.4867, -3.2756, -2.8584, 6.2611, -7.4682, 1.694, + 3.5074, 1.3392, 1.0862, 2.9814, 0.8158, -2.616, -2.3837, -0.8255, -0.1595, 2.0087, -2.8876, -2.4727, -1.3574, -1.2864, -1.5711, -1.0772, 0.4648, 2.7262, 2.1044, -0.397, + -0.143, -0.9788, -2.1195, -0.7774, 4.0804, 3.7123, 1.5082, 0.2869, -2.5968, -2.0127, 1.5147, 3.7486, 3.2447, 0.6959, 0.3308, -2.4516, -3.4598, -4.1669, -0.687, 0.2709, + 0.0724, 0.3235, -1.9536, -2.7454, -3.3392, -1.9023, -1.015, 0.7511, -0.0539, -2.8386, 5.2737, 5.1053, 1.4372, 1.4046, 1.4504, 2.4912, -2.6526, -0.6188, -0.653, -0.5369, + -6.955, 1.3233, 4.3542, 2.9502, 0.9929, -0.1186, -0.8657, -2.3452, 3.5061, 2.8348, -4.1741, -4.1264, 4.697, 3.0117, -0.2849, -8.0081, 3.4452, 0.7819, -2.7443, 1.7251, + -4.0878, -0.8849, -4.7521, 5.0067, -3.351, -4.8233, -6.6328, 4.8752, -0.7474, 3.8614, 2.6271, 0.9119, 1.0371, 2.2968, 4.316, -3.7042, 0.99, 0.496, 4.7952, -2.23, + 0.5901, 2.0654, 1.7824, -0.557, 0.4874, 2.7659, 0.8232, -0.1306, -0.6795, -1.3143, -1.248, 0.9969, 2.0563, 0.1625, 0.7346, 0.0223, -1.6836, -2.9087, -4.1058, 0.1406, + -0.5074, -0.8373, -0.8579, -0.046, -0.0854, -1.4221, -0.6935, 2.5302, 2.2014, 2.2225, 0.5896, 1.2715, -0.7624, -2.7997, -5.3296, 4.0372, 3.2176, -1.4146, -1.3705, 0.0565, + -3.819, -1.1051, 1.5169, -0.5542, -1.5591, 0.2921, -2.1144, 1.6664, 2.8275, 0.7745, 2.6977, 4.4021, -0.201, 0.0685, 1.3158, -0.8045, -5.9834, 1.7874, -2.1592, 0.9509, + 0.6749, -0.0635, 0.3751, 0.6561, 0.4718, -2.3144, -4.9191, -3.0907, 0.5499, -0.3498, 1.237, 2.6699, 1.5353, 1.6809, 1.2117, -1.3733, 0.0977, 1.361, 0.0102, -0.4207, + 0.8139, -2.9454, -1.1694, 1.1826, 3.5742, 4.3331, 1.4143, 1.7017, -1.2428, 4.8459, -4.4642, -0.0684, -1.7273, -0.1932, -2.6041, -1.4272, 0.2873, -0.9676, -0.1422, -1.2013, + -1.869, 1.2475, -2.8884, -0.3842, -0.3588, 2.7759, -2.006, -2.2023, -2.6599, -2.5791, -3.1221, 3.2645, 1.8131, 2.863, 6.3144, -4.2619, 0.7589, -0.7608, 4.8657, -0.8104, + 2.3449, 0.3057, -2.2411, -1.3084, 0.6572, -0.379, 0.2674, 0.5337, 0.4996, 0.8832, 2.3616, 3.9339, 4.7846, -2.7473, -0.5167, -0.0864, 0.9288, -4.3018, -4.0903, -1.8294, + 2.9658, 2.7467, -1.9276, -4.0009, -0.7257, -0.6616, -2.0255, -1.2898, 0.3022, 1.581, 3.0521, 2.579, -3.2369, -0.4791, 0.4455, 0.1138, 1.1032, 0.9003, -1.5708, 0.1285, + 5.2204, -2.819, 0.8203, 0.5992, -1.3205, -2.1549, 5.0256, -1.605, 0.5506, -2.8092, -0.2831, -1.6376, -1.8233, -0.0177, 2.5319, 2.0586, 0.9166, -1.5417, -0.3071, -1.4039, + 0.109, -0.1359, -0.4821, -0.506, -1.1903, -0.1205, 1.301, 0.0989, 0.228, 1.3298, 1.4648, 0.728, 0.0076, -1.4837, -0.1633, 1.2525, 0.9437, -0.0019, -3.9783, 0.5988, + -4.0941, -3.422, 0.4966, -5.4678, 6.0636, 1.1749, -0.183, 3.3518, 3.548, 1.4243, 2.5791, -5.9065, -1.8723, -1.6703, 1.399, 6.8845, 1.8643, -1.2344, -3.7475, -1.188, + 3.5819, 1.2282, -0.2187, -0.8194, -0.0683, 0.6784, 0.9405, -0.1871, -1.0635, -2.3089, -1.7476, -2.3377, -1.8039, -0.2123, 0.7402, 0.881, 0.7063, -3.8015, 4.2698, 1.5426, + -0.7508, -2.5319, -1.4606, 1.0638, -3.8848, 1.206, 2.6878, -1.2315, -0.1629, -2.273, -3.3361, -1.6208, 1.9855, 3.4308, -0.212, -1.4559, -0.3738, 2.3568, 2.3629, 4.2004, + 1.5564, 1.6137, 1.4225, 1.6668, 1.3266, 0.046, 0.1831, -0.3664, -1.4348, 2.569, 2.2918, 1.6955, 1.668, -1.3807, -1.0884, -1.098, -0.5844, -1.0295, -3.6955, -5.3616, + 1.7128, -1.8066, -4.0653, -3.8214, -0.9531, 3.4797, 0.7961, -2.4955, -2.7851, 0.0025, 0.7872, 1.0652, 1.5456, -0.4352, 1.9173, 4.6258, 0.3691, -0.1501, -0.2351, 0.4458, + -1.6777, -3.1299, -1.6947, -1.1535, -2.1999, -3.2226, -0.9846, -2.1533, -0.6467, 2.0938, 2.1307, 2.9065, 1.5181, 3.0875, 0.0486, -0.2157, 1.3461, 0.7741, 2.732, 0.4413, + -2.0098, -0.0651, -1.1313, -3.1454, -1.8173, 0.4664, 2.3278, 3.1806, -3.0726, -1.5969, 3.6994, 0.6478, -0.6833, 1.0635, 1.1405, 6.7102, -4.8934, -4.2029, 3.4752, -0.0933, + 3.0911, 3.132, 3.6764, 1.2247, 2.0977, -0.4399, -3.947, 1.4276, -0.2596, 0.5511, -6.4999, -0.9385, 3.2215, 1.7397, -2.0786, -2.616, -3.015, -2.0586, 1.9218, -0.2304, + 0.5955, -0.9572, -3.8115, -1.2133, 0.96, 3.0247, 8.636, 5.7851, 6.1244, 0.7094, -2.441, -1.1712, -1.7901, -3.5399, -2.8318, -2.5468, -4.9596, -0.6022, 0.6141, -0.5845, + 12.5835, 1.8094, 0.1352, 1.7718, 0.9427, -1.369, 7.1277, 0.0421, -2.3404, -4.665, 1.4653, -2.488, 2.6056, -10.3828, -8.1067, 4.1108, -1.2481, -1.833, -2.7827, 2.6214, + 2.9658, -0.2617, 0.2806, -0.2164, 2.855, 1.9755, -3.5301, -1.235, 0.9311, 0.8713, -2.2265, -0.6005, 2.6386, 2.7666, -2.3603, -2.5163, 1.6854, 1.0161, -7.8883, 2.8489, + -0.9445, 0.6006, -1.3214, -5.0651, -2.1702, -0.0289, 0.1003, 2.2883, 0.0424, 3.4686, 2.0494, 1.6327, -1.6152, 0.122, -2.8666, -2.2261, 4.9579, -2.2581, -2.7323, 5.9663, + -1.3666, -0.2364, -0.3999, -0.9988, -2.0227, -0.061, -0.5411, -2.2113, -0.2283, -1.715, 1.0239, 4.276, 1.9603, -3.0526, -2.5894, 0.8611, 5.2528, 3.4951, -2.2336, 0.7875, + 4.7609, 3.7023, 0.7955, -3.1291, -1.3671, 0.8798, -0.9947, 0.2668, 0.5762, -0.9479, -4.5541, -0.6922, 0.0699, -5.8412, 4.2302, 5.0652, 1.3544, -2.4661, -0.6224, -1.0865, + -2.6815, -0.9958, 1.6109, -1.7618, -2.5561, 1.0357, -1.5863, -2.2811, 3.4491, 1.1806, -0.2855, -0.138, -0.0202, 5.6861, 0.8289, -1.0913, 0.5986, -1.1493, 3.2455, -3.0884, + 1.7353, 3.1908, 5.0898, -0.4602, 0.0751, -2.1427, -5.091, -3.1667, -3.3291, 1.9531, 0.4802, -4.8101, 2.2518, 2.438, 0.6439, -7.3548, -0.0689, 1.8997, 5.717, 0.9491, + -1.1588, -3.1119, -3.4525, 0.2538, 1.3345, -1.05, -0.387, -0.0472, 0.1522, 4.0806, 2.8886, 3.8741, -1.9507, -2.9183, -0.3828, -0.0805, 0.4136, 1.1466, -3.1863, 3.5818, + -4.1654, -5.7362, -5.0041, -0.9889, 4.1884, 4.8135, 1.5658, -2.3781, 0.8425, 7.5151, 7.3977, 3.9243, 0.6283, 0.9194, -5.0741, -1.9566, 0.21, -4.9786, 0.876, -2.5989, + -5.3114, 2.2992, -1.9803, 1.215, 9.1545, -2.196, -2.8749, 9.6686, 0.5512, -4.17, -1.1338, -4.1549, 1.6645, -3.1643, -1.78, 4.9896, 0.339, -0.0421, -1.0391, -2.0347, + 1.074, 2.184, 0.9247, 2.0617, -2.1994, -4.0653, -1.5118, -0.9397, 1.3781, 2.9104, -0.8864, 8.5382, 0.5495, -3.5922, -0.2482, -0.5485, -0.9604, -1.8453, -3.1808, 0.3575, + 3.5141, 2.7621, 1.2101, -0.3665, -1.1827, -0.5351, 0.4822, 0.7598, 0.8241, 1.4976, -0.8943, -2.8067, -2.3512, -2.0448, 0.3706, -0.9201, -3.9192, 1.1431, 0.4761, 1.9809, + -1.7817, 1.1939, -1.2195, 1.7524, -4.7374, 1.152, 0.0973, 1.5475, 2.2848, -7.787, 2.0346, 0.5213, 2.8861, 3.1077, 1.1974, 2.3936, -1.4248, -0.2888, -1.4706, -1.4588, + -0.7677, -2.0426, -2.9918, -1.8722, -1.4336, 0.4207, 1.4107, 1.0509, -0.1714, 0.2221, 1.3054, 0.5884, 3.1454, 1.8747, 0.151, -0.5701, 0.5457, 2.7058, -0.0854, -3.4859, + 1.6593, 1.0024, 0.3202, 1.0267, -0.2368, 0.1208, -0.7272, -1.0487, 0.2686, -1.0197, -1.3131, 4.1829, 1.0297, 1.7779, -3.0898, -0.7777, -4.5532, 2.1765, -0.31, -0.4886, + 2.9341, -0.2895, -2.421, 0.9438, 2.949, 1.2447, -0.4279, -0.4133, -0.2487, 0.6464, 0.1859, -0.8613, 0.069, -2.0024, -3.5783, -0.9123, -2.3469, 0.3089, 5.3909, -1.171, + 13.8818, 0.6217, -0.6459, -3.4218, 0.8331, 0.8918, 2.2009, 4.0596, -3.038, -7.3862, -3.2105, -2.2108, 4.7972, -5.3735, 3.887, -1.819, -0.5123, 0.9752, -3.6921, -0.8383, + 0.2536, -11.0226, 4.4625, -7.9396, 8.6657, 2.6088, -1.0215, 0.4492, -5.0641, 2.7194, 1.1735, 2.207, 3.3733, -0.2605, 5.5319, 3.5989, 0.2759, -3.6185, -2.9338, -3.4591, + -0.2533, -1.2245, -1.1924, -0.1962, 0.6099, -2.1289, -2.0002, -2.039, -1.5592, 0.7879, 0.1165, -0.9325, -1.5485, 0.4552, 0.3883, 1.9054, 2.3495, 3.9138, 2.3594, 0.1886, + 0.175, 3.7528, 1.6899, -4.327, -5.0437, -3.141, -4.7768, -1.9628, -4.5893, 5.9435, -9.6773, -0.4601, 3.0571, 1.2797, 0.1161, 3.5574, 3.7157, -2.0222, 5.9308, 6.7823, + -0.6999, -2.9933, -3.6606, -0.6207, -1.4032, -1.1364, 0.253, -0.9004, -2.7685, -4.3142, -0.7561, 0.8142, -0.4715, 0.8444, 2.0053, 0.5983, 3.3363, 4.4913, 6.9146, 0.4673, + 1.0959, -0.0886, 0.2379, 3.2725, 1.2016, -1.1581, -1.364, -0.6268, -0.3678, 0.9051, 0.7593, -2.2902, -1.4578, 0.6349, 0.5115, -4.4984, 2.2315, 2.2535, -2.7867, 1.5345, + 3.6055, 3.8842, 2.1794, -0.7568, -1.05, -2.1686, -0.6731, -2.0718, 0.8001, -0.6819, 1.1112, 0.5707, -2.4862, 3.1489, 2.6767, 2.5134, -1.9147, -4.1519, -2.4548, -2.0802, + -1.9388, -0.7447, -0.8349, 0.1123, 0.1251, -1.3476, -2.6413, -0.477, 5.6864, -1.8563, -3.3514, -0.5309, -1.6295, -1.3453, -0.4664, 4.593, 1.1909, 2.9264, 0.9356, 1.5944, + 0.5951, -0.4177, -0.1304, 0.5462, -1.3265, 1.4534, 1.6425, 0.973, 0.8946, 2.1586, 4.2557, 0.8968, -5.0524, -1.9576, 2.6089, 0.6571, 0.7918, -2.2504, -4.5907, -1.748, + -1.6456, -2.0706, -2.4462, -2.5983, -2.5056, 2.0863, -0.9159, -0.8806, -0.8052, -0.7776, 1.0285, 0.4522, 1.5131, 3.453, 4.933, -2.7752, 1.775, 2.1982, -0.0181, -0.0006, + 2.2117, 0.6658, -0.1647, -0.7769, -0.3291, -0.0686, 3.183, 1.8603, 1.0488, -0.7866, -1.0352, 1.6465, 0.2395, 0.3989, -1.2496, -1.9498, -2.6996, -7.5216, 1.332, 3.9951, + 1.0405, 1.3681, 2.7153, 3.0279, 2.8206, 1.9933, -1.5434, -2.0223, -1.049, -1.2756, -0.1434, 0.2554, 0.8858, 1.3178, 0.3714, 3.567, -3.1912, -1.0147, -3.0243, -6.0993, + -0.8348, -2.4017, -3.6731, -2.0399, -0.2474, -1.064, -1.1488, 1.3352, 2.8367, 5.1498, -0.0673, 1.7148, 2.0672, 0.78, -2.8302, 2.8981, -0.7525, 1.3119, -2.4119, -0.6222, + 3.0927, 2.0509, 2.4548, -1.3001, -3.9942, -0.7486, 2.8523, 0.1569, -4.3404, -10.5627, 4.2087, 4.2968, 2.7013, -1.1646, 0.2008, -2.4272, 1.8708, 0.5192, -2.3092, 2.4416, + 0.6449, -3.5216, -3.8362, 2.1329, -1.2999, 0.6434, -2.5079, 3.1409, -0.943, 2.1409, -0.9005, 2.6639, 5.842, 2.2508, -0.1834, -3.5407, -2.0329, -1.9827, -0.2675, 1.5565, + 5.1512, 4.1361, 0.9497, -3.1897, -6.0608, -4.8346, -0.7128, -2.1849, -2.1809, 0.1265, 0.3295, 0.2665, 1.1233, -0.4722, 2.7945, 1.1909, 0.4093, 1.9529, 0.638, 0.5674, + -2.0255, 1.8944, 3.261, -0.6543, -0.1603, 1.6419, 1.8339, -4.1284, -1.6495, -7.4417, 2.7611, 3.0349, -5.4696, 5.3754, 0.2729, 5.17, 0.7296, -0.1265, -1.6533, -2.6659, + -7.1882, -6.8851, -0.9549, 2.6573, 1.6288, -0.3149, -2.2361, 1.6706, 4.0565, 3.2723, -2.0478, -0.6505, 2.7769, 4.9536, 1.831, -4.1026, -0.854, 2.2409, 0.8671, -0.7209, + 0.8703, 1.1461, 2.9551, 0.5102, 0.4539, 9.1307, -3.4339, -1.5513, -2.2902, -4.1038, -6.058, -0.8757, 3.583, 2.5081, -1.9449, 0.3605, 0.8645, 0.6768, -0.2206, -2.5809, + -4.5091, -1.0618, 1.6342, 0.589, 1.0199, 0.707, -0.4636, -0.7393, -2.0902, -4.3948, -1.8491, 2.8967, 1.9263, 0.6394, 4.9955, 3.9485, -0.2145, -1.3652, -1.4955, -0.1736, + -1.2527, -0.6868, 0.0359, 0.5854, 0.7286, -0.5988, -1.0892, -1.2358, -0.5524, -1.8766, -4.8554, 1.3154, 3.0969, 1.2141, 0.4785, 0.5435, 0.966, 0.9526, 2.5969, -0.3662, + -3.4429, -2.5359, -0.7902, 1.6794, 1.395, 0.9304, 0.5281, 2.0451, -0.282, -0.762, -2.3113, -2.5279, -1.2407, -4.6199, 3.9276, -1.3637, 2.0692, 2.0266, 2.415, 2.8601, + -0.0841, -1.4504, -2.5295, -2.1914, 0.016, -1.5806, -3.8581, -1.8751, 1.241, 1.4792, -0.0268, -3.0304, 1.1672, 3.1034, -0.0043, -1.775, 1.0722, 5.8103, 3.7335, 0.783, + -1.2601, -0.9248, -0.9753, -1.158, -0.4657, 0.9286, 0.4457, -0.7164, 2.9298, 6.0232, 1.1288, -9.2201, -2.6002, 1.0866, 3.5907, -0.3994, -0.8783, -0.4493, 3.0463, -0.132, + -2.6865, -1.7683, 0.5719, 4.2697, 0.4434, 0.9403, -0.1787, -3.9995, -1.4954, -2.9666, 0.5871, 0.7458, -0.5643, -3.3758, 2.4009, 1.363, 3.2345, 2.9305, 0.6423, -1.0943, + 0.2605, -0.1269, 0.1894, 0.8801, 5.6065, 4.4842, -0.336, 1.6337, -1.008, 2.2349, -1.3371, -3.4195, -1.5849, 3.4658, -2.7632, -2.8878, 0.2535, -1.0857, -3.4858, -0.9736, + 0.5903, -1.1309, -3.8731, -2.8181, 0.6957, -2.193, -3.7976, -0.1684, 0.3131, 0.8609, 0.0568, -0.1356, 5.9915, 2.3704, 3.984, 0.584, -1.9366, -2.6479, 0.4937, 2.7608, + -1.4917, 0.6707, -1.8279, 0.4736, -4.3226, 7.6508, -0.677, -1.0388, 1.6577, 3.4357, 2.121, -1.6783, -1.9394, -0.4857, 0.0446, -2.1769, -1.5641, 1.5895, 1.475, -1.9161, + -2.4617, -1.4865, 0.9268, 3.7356, 1.9298, -1.0879, -0.9003, -0.6573, -0.4536, 1.1463, 2.5279, -0.9025, -2.1547, 0.5579, -1.4546, -2.5618, -1.102, 1.7633, 4.9058, -2.2707, + 3.2436, 2.0698, 1.3674, -1.4618, -0.4269, 1.2764, 0.316, 1.2237, 0.7208, 1.5117, 1.4584, -0.5527, -0.7757, -2.7217, -4.0792, 1.8261, 2.7197, -3.9546, -1.7508, -2.0101, + 0.2659, 1.9357, 0.5705, -1.8509, -5.0017, -3.7512, -2.7574, 0.2996, -1.125, 0.6895, 2.7521, 3.709, 3.4556, 6.5334, -3.5389, -3.897, -2.9436, 0.765, 1.5177, 2.3717, + -1.2532, -0.7651, -0.7634, -1.69, -2.3167, -1.0574, 0.9291, -0.7963, -1.477, -1.6646, 0.5558, 0.7009, 3.4059, 9.2719, 1.4172, 2.4588, -0.7901, -3.7873, -1.0613, -1.3173, + 3.2264, 0.6063, -2.4159, -3.8529, -1.9936, 2.6889, 2.5115, 0.8341, 0.8209, 1.2008, 0.7255, -2.1489, -1.1543, -0.6443, 2.0479, -0.7011, -0.5619, -0.082, 0.5538, -1.6613, + 0.89, 0.2673, 1.2328, -0.1459, 2.5186, 2.3429, -0.5461, -0.5497, 1.9452, 5.1637, 1.5156, -3.9805, -1.5621, -1.5331, -2.7711, -2.2357, 0.7958, -1.6083, -2.3152, 0.5758, + 4.0233, 3.7838, 3.0862, 2.468, -0.8644, -2.4804, -0.9694, -1.9035, -3.4966, -3.959, -3.9724, -1.208, -1.6237, 0.7915, 0.4354, 0.8419, 1.1287, 1.8538, 2.3476, -0.2827, + -0.5315, 1.6742, 2.6296, -0.5391, -1.8812, 2.7171, 6.8646, 3.9934, -2.0577, -0.8537, -4.3316, -2.4473, -2.8864, -0.3456, -1.9169, -1.4494, 0.4578, 1.9608, -0.1673, -0.8898, + -2.1559, -2.48, -1.5001, 1.3457, 3.3362, 2.6367, 1.4331, 2.3397, 3.7557, 3.4063, 1.6588, 1.2723, -0.3658, 0.5614, -2.5827, -5.6096, -3.4952, -4.1966, -1.5564, 2.1965, + 0.1567, -1.6324, -1.8735, -2.1011, 0.8687, 2.8596, 1.0227, 5.0782, -3.8186, -0.4012, -1.0627, -1.0858, 2.3105, 2.5822, -1.0014, -0.6915, 1.2628, 0.1273, -4.312, 1.7113, + 0.5493, 0.1877, -0.3065, 0.0805, 0.17, -0.4682, -0.7192, 0.7521, 1.1935, -1.2445, 0.5061, 3.0407, 3.3122, 2.9044, 2.0613, -2.6946, -2.8479, -1.4855, -3.4536, -1.5377, + 1.2611, 1.2112, -0.4954, 1.5849, 2.8817, 0.5597, -3.2189, -1.8993, -2.3996, 0.0235, -0.927, -1.1263, -1.6443, -3.5163, -1.2543, 1.841, 4.5628, 1.0754, -0.1607, 1.6406, + -0.8759, -1.6975, 0.2532, 6.4042, -3.4246, -2.9858, 1.9661, -3.2513, -4.0109, -0.5134, 2.5545, -3.0437, -2.1093, -3.6915, 4.1398, 6.0036, -1.3456, 1.3628, -1.0285, 5.294, + 8.8405, -7.236, 2.8239, 7.1563, -1.4248, -8.041, -1.9196, 1.8187, -0.932, -3.1134, 1.9133, 4.5783, 5.5866, -1.744, -0.1615, -9.2039, 4.4457, -2.5424, 2.5822, -3.4268, + -1.9594, -0.144, -0.0014, -0.5248, -1.274, 1.9184, 0.2637, 0.9658, 3.9879, -1.7646, 0.8739, 3.6824, -1.4748, -0.5493, 4.194, -0.5892, 0.9704, -2.3393, -5.2036, -1.0319, + -1.8153, -0.8777, -1.3975, -2.8688, -1.315, 0.6005, 2.0795, 2.0158, -0.0187, 2.3273, 5.2446, 3.191, 0.542, -1.0394, 1.3294, -4.655, -1.5318, -1.6999, 0.2573, -0.3684, + 4.3069, 1.2137, -1.8464, -3.0026, -0.9539, 3.1554, 3.4215, 2.0922, 0.4828, 1.6102, 1.1857, 1.5577, -1.8593, -2.9907, -3.064, -4.6355, -1.6614, 1.3592, 1.5116, -1.8833, + 0.6407, 1.1519, 1.5429, -0.7369, -1.7269, -1.6671, -0.129, -0.7049, 0.8116, -1.2198, -4.0157, -5.1437, -3.1965, 2.3418, 0.7111, 2.6992, 0.5585, 1.9829, 4.9644, 1.1355, + 0.6364, 2.1072, 0.987, -5.1572, -4.3363, -1.0839, -1.3521, 1.8709, 0.8132, -0.2938, -0.2079, -2.5242, -0.8999, 2.3401, 0.7392, 3.1549, 3.0568, -1.1375, 0.0963, 1.1908, + -0.0136, -2.4241, -0.4209, 1.6339, 3.4114, 3.5889, -1.41, -3.5651, 3.1831, 2.0426, 0.5548, -2.0177, 1.6429, -3.2634, 1.578, -4.1305, -0.9389, 0.1651, 0.4588, -0.0751, + 2.0687, 0.8544, -0.3821, -0.1978, 1.0057, 2.3289, 3.0174, -0.333, 2.0178, -0.6679, -0.1993, -1.917, 1.6018, -0.3834, 0.6526, 1.9588, 0.3355, -2.0462, -4.1767, -5.5379, + 2.7809, 0.2282, 0.482, 1.9051, -1.735, -3.4716, -3.3685, -1.3005, 0.1251, -1.5366, -1.9516, -2.1469, 1.2541, 3.7123, 3.039, 0.8154, 2.3154, 2.5014, 0.0685, -3.7166, + -2.7442, -0.5589, 1.8753, 0.2528, -1.7122, -1.5279, 0.3471, 1.3429, -0.0809, -1.0979, -0.5556, 2.8899, 0.2864, 2.18, 1.7006, -3.4442, -2.6681, 2.9174, 1.9107, -1.3132, + 1.1471, -0.3191, -2.5131, -2.6788, 2.7236, 4.0318, 2.942, 3.1336, 1.5351, 0.48, -0.0086, -1.0945, -1.1975, -0.4758, 0.1588, -0.497, -0.2437, -3.5219, -3.3061, -0.2958, + -0.6947, -3.5085, -2.7613, 0.0475, 0.2365, -2.4104, -0.4597, -0.9262, -0.2261, 1.8983, 0.9162, 0.3544, -1.0767, 2.3229, 2.3748, -1.6417, 3.4712, -3.6716, 0.1472, 5.6077, + -1.7531, -0.9915, -0.4352, 0.4089, 0.189, -1.7111, -0.6401, -0.9353, -0.5743, 0.3365, -0.6869, 0.9392, 0.8776, -0.2201, 0.7815, -1.7487, -0.2509, 3.0732, 0.2971, 3.0442, + -6.4696, -1.5332, 1.3136, 7.9582, 4.7035, 0.4178, -1.4784, -2.4577, -0.6662, -2.4183, -3.1348, -2.0591, -4.3423, -0.208, 1.5975, -2.6953, 0.1211, 4.7779, 4.5315, 2.0419, + 0.8642, 3.0824, 1.7461, -0.8529, 0.9231, -0.3502, -2.7586, -2.7081, -1.4853, 1.1577, 2.4953, -2.0279, 3.1643, -1.1352, 0.2786, -0.165, 2.423, -0.5282, -0.4006, -3.7227, + -3.9091, 0.2639, -0.0395, -5.0339, 1.4635, 7.9381, -1.8279, -7.5321, 1.8947, 0.9696, -7.1991, 7.7502, 4.8838, -5.2722, 5.2271, 6.4012, -8.2785, -5.8271, 0.4487, 7.6786, + -0.4051, 0.3015, -0.5211, -1.1563, -1.5548, -0.8506, -1.7742, -0.6679, 0.3853, 3.9695, 3.145, -3.5632, -0.3392, -3.3757, 1.3514, 4.4934, -1.2754, -0.4248, 1.0022, 1.2601, + -3.0667, 3.2388, 3.6288, -0.3263, -3.6989, -4.3941, -3.0073, -2.9882, -2.7834, -3.8873, 2.3701, 6.1068, 1.0432, -2.8444, 0.146, -2.5272, 1.8208, 2.6818, 7.7176, 0.7699, + -0.8674, 0.6588, -0.0766, 1.935, 3.3452, 2.7012, 0.4707, -0.8282, -0.7703, -3.8252, -2.8814, -0.2389, -1.3895, -0.9376, 0.2572, -3.4418, -2.3763, -1.8695, 7.4789, 2.6558, + 0.8567, 1.9741, 0.6363, 2.1993, 1.9072, 2.2211, 3.7376, -0.0455, 1.3289, -1.0736, -4.8817, -4.0284, 2.4624, 1.0596, -3.8101, -3.8498, 0.8895, -0.5176, -2.3743, 1.3083, + 3.7465, 3.5865, 0.1979, 0.4072, -1.1714, -1.4598, -2.1688, -1.4971, -1.1953, -2.8028, -1.8515, 1.1483, 3.7654, -2.6485, 1.2635, -2.4929, -1.4965, 0.6356, 3.3756, 0.6583, + -1.7286, -0.6675, 0.3769, 1.1159, 0.0587, 1.4828, 1.214, 6.0165, 1.2212, -3.4526, -2.4321, -0.8616, -2.2663, -0.0017, -0.0046, 0.2615, 0.0517, -0.8546, 0.5801, -0.1095, + 3.4455, 1.4668, -0.0851, -2.9245, 0.0932, 1.2861, 1.125, -0.6317, -4.0005, -4.4206, -1.5097, 1.3643, -0.1238, -0.8046, -2.45, 4.2293, 2.9297, 3.2594, -3.0122, 0.7633, + 2.2354, -0.6334, -2.7256, -1.7876, -1.8603, 0.6549, 0.1244, -1.81, -1.7636, -2.7665, 1.0419, 3.6034, 2.7187, -5.8124, -0.9848, 2.8478, -0.3193, 3.4835, 2.5353, 1.2184, + 3.0602, 4.3425, 2.426, -0.5623, -0.8919, -0.273, 1.3901, 0.4772, -0.5219, -1.3754, 0.4815, 2.4087, -5.0472, -5.6009, -2.8901, -2.4607, 1.8809, 3.5997, 3.9232, -4.3669, + -0.0346, -0.2122, -0.229, -0.9365, -0.4221, -1.93, -2.3572, -2.9919, -2.2394, 3.2115, 2.4104, 2.4249, -0.5682, 1.5001, -1.3857, 2.614, -1.8866, -5.618, 7.3368, 1.3135, + -0.4484, -1.1107, -1.9143, -1.2992, -0.5392, -1.0181, -0.6562, 0.5186, -0.7919, -1.4379, -4.0959, 2.4107, 1.5417, 0.0557, 3.4844, 1.7096, -0.8275, 1.7994, 2.0983, 0.5209, + -0.4549, 0.183, 0.2262, -2.2572, -1.5931, -0.7026, 2.6431, 2.6098, 4.0381, -0.4805, -2.9134, -3.5443, -0.6536, -2.1551, 2.0956, 1.2393, 0.2979, 0.9155, -2.0621, 2.5682, + -0.1092, -1.2889, -2.5682, -2.3378, -1.7259, -0.5628, -0.6114, -2.8295, -2.569, -3.3678, -2.2669, 0.6023, 0.3823, 5.9006, 5.7607, 1.9871, 0.6942, 1.2471, 3.2445, 0.4186, + 0.6515, 1.8638, -0.3444, -2.0169, -0.6995, -2.9879, -2.4596, -1.0847, -0.8686, -2.3776, 2.0331, 4.8909, 4.1694, 1.269, 1.4079, 1.9289, 1.882, -0.9986, -3.0198, -3.239, + 1.7936, 1.2201, -1.9231, -2.6761, 1.6107, 7.0585, 8.8031, 2.9894, -2.3291, -6.5825, -1.5641, 3.0126, -4.0096, -4.0332, -0.6223, -0.5985, -0.8359, 1.2689, 0.3585, -2.941, + -1.2384, -0.3295, 2.3565, 3.0657, 3.2204, 1.089, -0.5456, 0.1283, 2.9904, -0.097, -5.2104, -1.5801, -2.5751, -2.3243, -0.3014, 2.6881, 0.5623, -1.5424, -1.9388, 1.5825, + -2.6631, -2.8705, -3.6445, -0.1511, 1.0369, 4.6018, 2.7993, -0.5794, -0.1152, 0.9196, 4.1279, -0.7083, -3.1505, -2.187, -2.5145, -0.8667, 1.9629, 3.781, 1.8562, -1.6347, + -3.7832, -0.9972, 1.0298, 0.8253, -2.4369, -3.3827, -2.6892, -0.8231, -1.082, -0.0375, -0.7937, -1.8433, -0.5302, 3.8146, 2.3123, 1.6122, 4.1004, 5.6672, -1.045, 0.0824, + -0.1, -2.02, -0.5383, 2.2917, 0.8366, -2.2105, -0.8495, 2.1052, 3.4989, -0.0827, -0.3031, -1.7154, 1.3463, 5.4572, -3.0939, -0.0935, -1.1704, -5.241, 2.43, -0.5476, + -3.7789, -1.9485, 1.8338, 2.9833, 0.6807, 1.8337, 5.1432, -0.4532, 0.5973, -0.6042, 0.8753, -1.5014, 0.4292, -2.2709, -1.2993, -0.1667, -1.6955, 1.1932, -6.0865, 4.2353, + -0.492, 0.0568, -2.6837, -3.2294, -0.292, -0.679, 2.7843, 3.0219, 1.7934, -2.2037, -3.0967, 1.8829, 0.5782, -1.6334, 1.9235, 4.5606, -4.2261, -0.0121, 2.2982, -0.3517, + -0.6429, 2.5139, 2.3667, 2.2, -1.8905, -1.3195, -0.0575, -0.672, 2.8832, 0.3828, 0.9744, 2.9334, -0.6053, 3.2595, 2.5269, 0.0016, -5.8119, -0.9627, -4.8744, -3.2058, + 0.8584, 0.9302, 0.363, -0.3058, -0.919, -1.1142, -3.3748, -2.621, 0.9921, -0.044, -0.2277, 0.806, 1.7478, 2.0581, 0.39, 4.4187, 5.843, -6.6138, -3.1191, -0.068, + 0.3281, -0.0986, -1.1173, -1.9481, -2.4515, -1.0863, -1.3545, 1.1448, 2.8412, 3.7501, 2.6741, 2.7224, 1.8554, 1.4018, -3.7195, -2.9142, -1.2068, -4.2062, 2.968, 0.417, + 0.2181, -1.3017, -1.3715, -0.9326, -1.1639, -0.6082, 2.2905, 2.1838, 3.153, 3.3746, 2.0088, -0.8055, -1.0486, 0.7007, -1.796, -0.3898, -2.4327, -2.4057, -2.1793, 2.506, + -2.4912, -0.4925, 1.9418, -0.632, -1.0125, 1.8048, -1.536, -1.7457, -0.3001, 0.5912, 0.4548, -1.4661, -1.5177, -0.5917, 5.6377, -3.6558, 1.8798, 3.7139, 3.0715, -3.6543, + -1.077, 1.7774, 3.6503, 0.2492, -2.5625, -1.2989, 0.3077, -1.4511, -0.7454, -1.0293, 0.9281, -0.097, -1.418, 0.5544, 2.007, 3.1415, 2.3666, -0.7117, -2.8143, -1.777, + -1.8815, -2.2795, -1.158, 1.0865, -0.0453, 1.6476, 0.0859, -1.8231, -0.7599, -1.0013, 0.0173, -0.6116, 0.011, 0.6057, 0.1048, 0.392, 2.8241, -0.4223, -0.292, 3.4995, + 0.0544, 2.8654, 4.0202, 1.6845, -1.8534, -2.9185, -1.4228, -3.6388, -2.021, -2.4342, -3.4254, -1.7961, 2.7218, 6.6019, 2.278, -0.0758, -2.1727, 1.0645, -0.3083, 0.7762, + -4.2733, -4.7209, -2.5347, -4.1434, -2.3709, 0.1195, 0.9517, -1.8672, 1.5567, 3.4133, 0.9511, 6.1534, 5.0591, 3.3617, 4.3448, -0.8335, 0.0697, -1.2096, -2.2085, -1.8188, + 0.0539, 1.0537, 0.6965, 0.7551, -2.3328, -4.4085, -1.7944, 4.6582, -1.8228, -0.38, 0.4342, 0.9079, 1.1727, -0.2538, -0.9787, 1.6403, 0.3758, 0.2889, -1.0679, 1.0017, + 0.9075, 0.5642, -0.6092, -2.8652, -3.3111, -1.2627, 1.6981, 0.5866, 2.5675, 2.8589, 1.6024, 2.0917, 0.4354, 1.0342, 1.2054, -2.7817, -0.5893, 0.0883, -2.8199, -1.401, + 0.898, -0.3869, -0.4833, 2.6033, -0.0884, -0.3699, 7.2953, 1.6809, 0.8531, 1.6498, -4.4993, 0.0072, -1.9421, -1.8001, -2.5825, -3.6475, -2.3221, 0.6178, 0.3128, 2.204, + -6.0307, -1.3653, -0.3786, 0.0247, 0.6616, 0.7676, 3.3234, 3.0965, 0.7765, -0.6097, 1.0441, -0.9142, 1.6186, -9.2158, -4.2017, 2.5866, 2.2875, 2.0945, 2.8697, 1.5646, + -0.3542, -0.028, 4.1718, 2.5282, 6.0404, 2.9659, -1.0269, -1.4497, -5.6815, -3.9178, -3.928, -6.4467, -2.5804, -4.6703, -1.3963, 3.1437, 4.398, -0.5477, 2.7035, 6.0758, + -1.5432, 3.8376, 1.421, -1.1449, 0.4892, 1.3172, -2.0383, -2.2564, -2.1791, 3.0272, -4.0284, -1.3615, -1.9716, -4.988, 3.88, 2.5715, -2.8049, 5.2429, -2.0992, 4.629, + 1.9112, 0.2401, 1.209, 1.9221, -0.5051, 2.0731, -0.8317, -1.4381, 1.1319, 0.2604, 4.857, -4.2486, -4.2343, -0.1445, 2.6106, 1.1135, -3.459, -1.7688, 1.2613, -1.96, + -4.6396, -2.9689, 0.9238, 0.7657, 0.5574, -0.365, -3.7022, -4.0756, -5.0362, 0.3243, 3.188, 1.727, -0.7319, 2.9308, 3.7592, 2.6099, -0.3181, 4.3233, 1.9146, -1.1863, + 0.198, -2.2883, 0.933, 3.8033, -3.0797, 0.0635, -1.8773, -1.7344, -1.0161, 0.156, -0.1661, -3.8927, -0.3658, 0.3316, 1.1226, 1.9542, -1.049, -2.2906, 3.6658, 5.5322, + -0.8058, -0.987, 1.9765, 0.8081, -0.8891, 1.6549, -1.7178, -0.2062, -0.6134, 3.7968, 2.8384, 4.3753, 1.2045, -6.0029, -1.5145, -3.5656, 0.8785, -0.8278, 0.9419, -1.3448, + -1.9513, 2.4604, 2.9573, 3.3043, 2.2986, 1.0394, -0.4185, -0.089, -0.2841, 2.2073, 1.6514, 0.3367, -1.0792, -1.4676, -0.885, 1.7747, 0.0695, -7.9932, -5.3486, 1.4171, + -2.8766, -0.2007, 0.3439, 0.7801, -0.0362, -1.8832, 1.2162, 3.7611, 1.5511, -0.2914, 4.4891, 2.4265, 0.517, 1.2791, -3.0822, -4.3172, 2.155, -1.7349, -2.5924, -1.5044, + -1.3853, -0.5001, 0.6365, -1.9167, -1.9693, -1.6932, -2.5123, -3.1209, -1.5363, 3.8772, 1.7176, 4.5613, 2.2969, -1.7507, -0.4549, 2.7398, -2.2572, -0.1132, 1.3625, 2.0183, + -0.2587, 0.7517, 0.0083, -1.5665, -2.9108, -3.8211, -5.3272, -2.2879, -3.3006, 3.201, 3.9688, 4.6713, 3.8047, 3.4665, 0.6502, 0.9612, 0.0958, -1.5002, 1.1994, -1.8059, + -0.0767, -2.8888, -3.8572, -1.6523, 2.8392, 3.7128, 0.7093, -0.0657, 0.9823, -1.6073, -2.181, -1.5064, -0.6392, 2.2679, 1.7322, -1.1001, 1.0422, 1.4078, 2.4192, -1.5382, + 2.1069, 1.6101, -0.6015, -1.1106, -0.0731, 0.3657, 2.1738, 0.6411, -3.2826, -4.2217, 0.0005, 4.1333, 2.9287, 4.0221, -1.0117, -7.1186, -0.37, 1.5812, 0.1654, -1.9391, + -3.3989, -5.4211, -3.3823, 0.1417, -0.209, -2.9282, 3.8367, 5.4395, 2.1603, -1.6658, -0.0286, 3.8151, -1.6236, -0.4057, -0.8473, 2.3634, 0.3434, 0.0424, -0.3374, 2.1055, + 3.8095, -5.8994, -4.2159, -2.8701, 5.179, -4.6791, -5.6257, 0.4437, 3.5907, 6.0531, -2.4206, -0.619, 2.0474, 3.5867, 7.1475, -4.6633, 4.1906, 1.2868, -11.1492, 4.8074, + -5.2857, -2.3511, 1.887, -1.8753, -2.8109, 0.3363, -1.9008, -0.409, 0.8741, -0.4525, -6.3796, 0.4485, 2.7092, 2.5765, 4.4129, 4.7975, -0.3228, 3.7712, 2.7353, -2.7608, + -3.9913, -5.9775, -2.6898, 8.0565, 3.5971, 1.2374, 3.459, 0.3338, 0.6958, -1.1912, -2.2406, -2.0748, 0.0857, 3.9701, 1.1276, 1.2332, 0.6559, -3.8152, 0.9255, -3.3971, + -2.4876, -2.515, -2.0296, -1.0642, 1.008, 0.6973, -1.7376, -1.5703, 1.5923, -0.7283, -0.1226, -1.7315, 2.4167, -0.4425, -1.5075, 3.8846, 0.5544, 0.8966, 4.627, 0.26, + 2.8767, 0.9007, 0.0796, -2.1662, -1.5086, 1.0148, -1.337, 0.8661, 0.0749, 1.4614, 3.18, 2.1743, -1.6449, -2.7523, -2.7644, 2.2901, -1.91, -4.8716, -2.0883, 6.1248, + 3.6336, 2.1044, 0.4628, -0.6805, -0.0353, -2.3281, 1.0902, 3.0334, -1.907, -2.0882, -2.9673, 0.1514, 0.3556, -1.0151, -5.4063, 2.3884, 2.5624, -3.2553, 3.9458, -0.0449, + -1.3869, -1.5992, 1.4579, 1.4992, 1.7691, 0.8878, 0.9518, 0.7305, -1.505, -1.6287, -1.6402, -0.3868, 2.7983, -2.2046, -0.5051, 0.1956, 7.1623, 2.4667, -5.9139, -3.1488, + -3.5734, -7.3577, -7.1566, -1.3669, 4.32, 2.1415, 0.4237, -0.1707, 3.4434, 2.6751, 2.2337, 0.4895, 2.5968, 1.0123, -0.9145, -1.1189, 0.9048, 2.1474, 0.4312, -1.1607, + -5.2465, -1.6283, -2.7428, -3.2948, -2.2122, 4.3049, 4.7808, 4.7619, 0.2262, -0.6089, 1.1643, 3.359, -2.1676, 0.2134, -1.1502, 1.4193, 1.4168, 0.3538, -2.8694, -0.0796, + -3.4905, 1.2508, 2.0451, 0.449, 3.13, 4.3899, 0.1675, -1.3519, -0.0668, 0.4245, -1.7121, 0.2301, -2.207, 0.3069, 3.1491, -7.5721, 2.7986, 3.8554, -4.1493, -1.6472, + 1.5232, 1.53, -1.0621, -1.4488, -0.8044, -0.39, 1.3086, -2.5549, -4.3776, 0.5264, 2.2421, -0.5299, -2.7363, 4.9582, 1.0929, 1.1601, 2.8351, 1.9896, -4.9813, -0.2808, + 6.5366, -2.5283, -5.5972, -3.4516, -0.2385, 1.8382, -1.6024, 0.2804, 8.8284, 4.4416, -6.1238, 3.7728, 3.4763, 2.9323, -2.3678, -5.511, -4.9901, -0.1283, 0.0084, 0.4242, + 1.9342, 1.566, 2.2346, 1.0331, -0.6035, -0.4461, 0.0271, 0.7571, 1.1796, 0.2963, -0.9807, -0.5607, -1.4711, -2.5426, -4.1871, 2.4178, 0.203, -1.7949, -3.6655, 4.6035, + 2.2188, 0.9702, -1.9037, -2.3323, -0.927, -0.7473, 0.4463, 4.0069, 3.238, 1.6378, 1.585, -1.9473, -1.213, -2.1935, -1.9102, -3.3249, 2.6456, 1.082, -1.3884, 0.057, + 1.8633, 1.2717, 1.6148, 0.3758, 2.9711, -0.8914, -1.2864, 1.1672, 2.0355, 1.2245, -3.703, 3.72, -3.0675, -1.925, 2.2356, -0.7355, 0.5128, -4.4528, -2.9595, 0.0288, + -2.2984, -0.5209, 0.3609, 2.6675, -3.691, -0.3519, 6.3822, 3.0237, -0.1277, -2.2553, 1.0403, 0.997, -1.3107, -1.9745, -0.1646, 4.8839, 0.1333, -1.3256, -3.424, -2.0441, + -2.319, 2.2812, 1.2138, -1.1727, -3.334, -5.2226, 3.639, 2.5124, -1.5642, 3.4166, 0.533, 1.8016, -0.3986, -2.9233, -3.7394, 0.9982, -0.006, -1.6833, 4.3443, 1.6231, + -2.2576, -2.6516, -1.1317, -1.2013, 0.7393, 0.1827, -1.2343, -3.2192, 2.3728, 2.7817, 1.6779, 0.8901, 0.532, 1.4647, 3.7014, 7.0412, -2.6912, -2.5104, -1.2474, -3.2389, + -1.769, -1.9167, -2.8243, 0.8559, 1.6454, 0.6817, 0.5231, -1.2522, -2.6542, -3.2288, -0.2864, 0.0091, 0.5513, -0.6182, -3.9328, 4.4973, 6.4951, 0.4313, 1.6808, 1.1116, + -0.2744, -1.578, -1.8323, -1.2019, -0.362, 1.2906, -0.2832, -1.9105, -0.8966, 0.8634, -0.4648, -2.3172, -1.9676, -1.7065, 0.8232, -2.4736, 3.5667, 5.3037, 4.3018, 1.1191, + -0.4003, -1.4016, -2.6548, -3.2373, -2.1471, -0.9075, -1.1057, 1.1084, 0.0584, 0.6994, -2.2697, 0.1501, -0.0187, -0.2177, -1.1214, 2.5501, 5.4533, 5.8815, -0.4561, 0.0366, + 2.4755, 2.6766, 3.381, 2.8797, -1.3067, -1.2604, 0.4792, -1.5575, -2.0569, -1.156, -1.3594, -0.7176, 0.2831, 1.2557, -0.1965, -2.5773, 0.8488, 0.4905, -3.0053, 0.4234, + -0.5334, -1.6405, -1.4903, -1.2901, -2.0368, -2.4054, -2.0422, -1.2649, -0.3204, 2.3946, 2.8987, 2.5774, -1.9494, -5.6321, 2.8212, 3.655, 3.985, 1.2152, 1.3991, -0.3406, + -1.8395, -0.9841, -0.1468, -2.7046, 0.5709, -0.0486, 2.3079, -3.1973, 5.7249, -2.0537, -0.8947, -0.5513, -1.5588, -0.066, 1.7712, 1.4939, 0.7539, 0.8995, 0.7376, -0.2144, + -2.1136, -6.496, 4.0091, -2.7287, -2.852, 0.0889, 4.2865, 1.1559, 1.4489, 2.3747, -0.2811, -1.6675, -2.1043, 2.4825, 1.5983, 3.0151, 1.4924, 1.4598, 1.4466, -6.6156, + 0.3044, 0.5145, 0.8314, -0.5726, -1.4732, 0.5522, 1.0454, 0.7132, -0.3595, 0.4703, 4.9451, 2.9593, 3.4319, -1.7835, -2.7963, -3.6604, -2.7125, 1.2113, -5.0055, 1.3846, + 2.3458, 3.264, 1.811, 0.4827, -1.6195, 1.9882, 1.8256, 3.5857, 4.1301, 1.6235, -5.1588, -3.8052, -1.7214, -1.0231, 1.3522, -0.3858, -5.6155, -1.3895, -1.6421, -0.048, + 3.7883, 2.2512, 0.5915, 3.6595, 3.6582, 1.2917, -2.0747, 3.0623, -4.8462, -9.6783, -4.7828, -4.1622, -5.2776, -1.2559, 2.3471, 0.9386, 6.0401, 4.8334, -1.7435, 1.3593, + -0.5609, -1.1658, -2.4817, -6.555, -4.61, -0.2509, 0.7628, -0.8368, 3.8495, 3.922, 3.0356, 2.0951, 1.5781, 3.7313, 2.8834, -1.2291, -3.427, 1.5639, 1.6072, -3.9116, + -1.4268, 0.2383, 2.3216, 0.1248, 2.0796, 1.5987, 0.8138, -0.2165, -2.9254, -1.2364, 4.4075, -3.3005, -5.5475, 2.3771, 2.6523, 1.5551, 2.538, 1.7514, -3.2529, -4.552, + -0.7746, 0.9904, 0.2665, 0.8152, 1.7416, -1.7222, -3.8193, 0.6115, 3.8698, -1.5065, -1.1919, -1.259, -0.954, 1.8722, -0.152, -4.1283, -0.551, 0.1951, 0.742, 4.9546, + -4.9471, -2.6326, -0.7296, -2.9661, 3.2611, 5.2949, 1.3584, -0.3484, 0.0238, -0.5367, 1.037, -2.4283, -1.4686, 5.4446, 2.1704, -0.2969, -1.9436, 4.7301, 0.0591, -5.0816, + 0.8281, -1.2416, -3.3762, -3.932, -1.3993, -3.0591, -0.9292, 2.5927, 2.1047, 2.4478, 0.5704, 1.2666, 0.5289, -0.2372, 1.2696, 3.8278, 3.1348, 1.0903, -4.3525, -1.1346, + -0.743, -0.748, -1.261, -0.7625, 1.0816, 1.6556, 1.2019, 2.2812, 3.2082, 1.5688, -1.3094, -2.0639, -2.5822, -2.2528, -1.34, -1.6246, 0.6375, 2.89, 1.4778, -1.315, + 0.8081, -1.3233, 1.3342, -0.4629, 2.2543, -1.7177, 1.7285, 2.2425, -4.4738, 0.6367, 1.5497, -1.2988, 0.3335, -1.159, 0.1744, -4.2648, 5.1183, 0.3072, -2.6556, 0.8684, + 4.0404, 1.9094, -0.2474, -1.16, -0.9167, -2.2516, 3.93, 2.7965, 0.9719, -0.3105, 2.6858, -1.8089, -6.0898, -5.0707, 2.0812, -0.0971, -1.5043, 0.0458, -1.0273, 2.0234, + 0.1375, 0.239, 1.2366, 1.5253, 1.5536, 1.1452, -3.3801, -3.1595, -2.7411, 1.0175, 6.4814, 1.4661, -1.2521, -3.3744, -3.5432, -5.427, -1.3071, 4.3703, 3.6696, 1.3422, + -0.0191, 0.4401, -0.0551, 1.261, 4.9915, 1.8859, 4.2946, 2.2533, 1.246, -0.3261, -1.8245, 0.5397, -0.962, -2.4208, -1.3984, 1.3654, -2.31, -4.0785, -1.5595, -3.3235, + -4.1713, -3.8609, -3.6233, -2.2953, 0.459, -0.2721, -0.1506, -1.7078, 0.0356, 1.5074, 1.0712, 0.7854, 0.7858, 0.0168, -0.816, 0.081, 0.5445, 4.5197, 7.1653, -0.0742, + -2.9674, -1.465, 1.0679, 3.2208, 3.0814, -0.6959, -0.9252, 1.0871, 0.168, -0.9317, -0.6966, -1.1041, 2.3656, 1.0874, -0.7021, -0.5843, -5.954, -1.0591, 4.3651, 0.6421, + -2.3881, -1.1722, -0.2878, -1.31, 0.1054, 2.7187, 3.1286, 1.395, 2.5138, 0.8551, -1.0485, -2.7991, -1.7081, -1.9009, -0.2092, -1.1297, 5.4416, 0.9634, -4.8359, 1.6679, + 0.3475, 0.6761, -0.916, -3.3303, -2.5114, -1.3053, -2.4606, -1.5909, -0.1066, 1.2867, 0.1087, 0.6627, -0.938, -2.1561, -4.1442, 0.553, 3.6775, 4.3771, 4.5604, 3.2095, + 1.8172, 1.9142, 1.3748, -1.2576, -1.3958, 0.406, -0.4725, -1.2643, 0.8079, -0.6725, -3.4257, -3.2969, 2.8901, -0.0329, 4.2131, 0.839, -2.3538, -2.2196, 3.3371, -1.2078, + 1.9496, 3.6573, 4.2326, 1.1863, 1.8389, -0.7982, -0.8176, 0.9762, -2.1796, -2.4082, 0.46, -2.1099, -0.13, 5.8933, -3.2271, 1.4122, -3.0287, -5.0286, 0.1022, -1.9807, + 0.7977, 0.4131, 0.7926, 0.7439, -2.715, -3.186, -1.6061, -0.5456, 3.5797, 0.0724, -0.4993, 0.4656, -0.7994, -0.5991, 0.0862, 3.6997, -0.5342, -0.3047, 0.9064, -0.7678, + 1.0025, 0.1292, 1.8299, -0.2181, -0.3367, 2.6298, -1.6812, -0.7903, 1.0473, -0.5336, -4.1833, 2.6382, 0.948, -0.3031, -1.3062, -0.6706, 1.4954, 1.107, -3.9483, 1.1443, + -2.822, -2.9373, -1.7368, -1.1113, 0.7976, 1.021, 2.2881, 1.7823, -1.6829, -2.1388, -0.0636, 0.6047, 1.3691, 0.5354, -2.8472, 1.99, -0.2414, -1.8409, 2.3664, 4.6674, + 0.81, 0.5306, 3.2216, 2.7904, 2.3222, -0.094, -1.2977, 0.6699, -0.3153, -2.0729, -0.4524, 0.1611, 0.0422, -0.9458, -1.6284, -1.059, 0.4113, -0.2203, -0.7025, -2.1711, + 0.6469, 2.9521, -0.5269, -2.8396, -2.829, -0.4167, -2.6035, -1.8694, -1.271, -1.195, -0.6111, -1.1719, -0.0843, 4.1129, 3.9912, -0.9572, -5.8704, 3.6319, 4.0418, 2.869, + -1.7675, 0.6361, 2.5132, 2.083, 1.8929, -1.5061, -3.5844, -4.2969, -2.8299, -0.687, 0.8308, 1.3968, 0.3529, 4.0998, -1.6161, 1.3306, 0.56, -0.5129, -1.6573, 2.7621, + -4.0964, -1.5173, 1.2551, 0.2978, 1.5682, 0.3497, -1.4315, -2.0554, -0.5756, 2.5392, 0.79, 3.4286, -2.9558, -1.7034, -0.8459, 1.0513, 5.1871, -2.5294, 1.2695, -0.0257, + 0.0328, -1.2155, -1.2836, -0.9363, -1.2229, -1.693, -1.8595, 0.3399, -1.5276, -1.0107, 6.404, -1.9072, 0.7733, 0.6079, 2.8719, 3.0211, 2.307, -3.5448, 0.3434, -0.5002, + -6.6638, -3.5679, 2.7288, 3.1465, -1.8044, -3.2026, 0.3954, 1.5738, 0.684, -0.5029, 1.1915, -2.4277, -2.892, -0.4612, 0.5352, 2.0495, 4.9107, 0.7993, 0.1809, 3.327, + -7.7693, -2.7271, -0.5302, -1.6862, -2.675, -4.1941, 6.2224, 4.1406, 1.2187, -0.8566, 3.217, 2.7593, 3.3324, -2.3093, -1.4924, 1.2643, -2.9807, 2.3328, 4.673, -1.9398, + -0.3214, 0.7654, 1.4453, 1.0347, 0.7854, -0.0281, 0.6653, 2.1756, 2.5539, 2.4886, 2.8291, -2.3264, -5.6113, -4.1472, -2.1955, -0.1794, -0.8897, -2.9162, 2.0658, 1.8062, + 0.0689, -0.0814, 0.5156, -0.9104, 1.9645, 1.489, -0.7622, -1.4287, 1.4489, 2.2731, 1.0561, 3.0605, 2.5928, -3.3062, -2.8865, -3.6767, -3.9506, -2.1727, -0.4806, 5.1867, + -2.7262, -0.408, -7.2353, 0.2532, -1.7494, 4.8406, 2.4161, -8.2402, -0.3311, 1.0612, 3.376, -0.5373, 3.2052, 3.7144, -2.9286, 10.7765, 4.9188, -8.1638, -0.8809, -1.3612, + 3.8706, 1.5102, 0.378, -7.459, -0.9006, 2.4899, 2.468, -2.4184, -1.4186, 0.2908, 2.1056, 2.4328, 4.226, -3.9887, -6.7913, -1.0651, 2.4289, 0.5874, 4.8024, -3.5488, + -1.2691, -4.1749, -2.7407, 1.493, 1.4665, -0.9212, -1.463, -5.1747, -2.2251, 0.8474, 0.854, 6.6525, 0.1651, -0.5706, -0.3287, 3.1547, -1.46, 0.8291, 2.5923, 2.2733, + 3.8347, 2.4921, 1.8361, 2.4264, 0.2839, -2.7167, 0.2831, -0.5469, -0.6398, 0.3108, 1.0194, -2.1389, -0.8456, -4.7666, -2.5049, 1.2075, -5.6326, 1.3761, 3.1197, 1.602, + -3.7739, -1.8529, 0.6063, -0.8541, -1.637, 3.6233, 0.8975, 1.9643, 3.5106, -0.3623, -2.4744, -0.7625, -0.7853, -1.5705, 0.2237, -0.6207, 0.0761, -0.4742, 1.5632, 2.7029, + 1.157, 0.8704, 1.6827, 1.2654, -0.5848, -2.69, -2.6615, -0.9589, -1.6641, -2.7103, -1.4381, -0.4901, 1.8045, -1.5216, -1.1394, 5.0021, 4.1235, 1.555, -3.7877, 2.1859, + 2.542, 1.6423, 0.7395, 0.8846, 0.9016, 2.7752, 3.3824, 2.5574, 0.4625, -2.0442, -1.8686, -0.186, -1.7933, -5.0038, -3.5773, -1.2917, -2.0519, -1.8556, 1.0146, 2.7701, + -4.4081, -3.4569, -0.8021, 0.2773, 2.5574, 2.3862, 1.3118, 0.1408, 0.6688, 1.9053, -1.5497, -0.5855, 1.2457, -0.5521, 0.963, -2.247, -2.8924, -3.743, 6.1844, 2.5961, + 0.4138, -4.3685, -4.3743, 3.3166, 1.9814, -1.9703, -1.1246, -1.8788, 1.8555, 2.5293, -0.6354, 0.3032, 3.9855, 0.4439, -1.3412, -2.6733, 1.5434, 2.8406, -1.39, 0.543, + -0.9949, 0.7752, 0.5153, -0.3382, 0.759, -0.3806, 0.6362, -0.0446, 0.6992, -2.3407, -2.218, -0.8794, 1.9075, 1.9883, 2.6403, 1.4665, 1.1384, 1.9497, -0.4373, -6.842, + -0.369, 1.5979, 3.652, 2.5947, 0.9915, -0.4587, -1.5761, -1.3889, -0.8595, -0.0002, 0.3336, 2.0392, 1.9215, -1.5962, -2.1409, -2.1868, -2.0225, -6.9604, 4.1862, 2.2427, + 0.7081, 1.2472, 1.2274, -0.7827, -1.3963, 0.1531, 1.0164, 1.122, 1.4236, 4.7449, 4.197, -1.6566, 1.4602, -0.4324, -5.0812, -4.6776, -3.2034, 0.202, -0.8325, 0.5609, + -0.8996, -1.1981, -0.4982, -3.3678, -3.1656, -0.484, -1.6889, 1.4162, 1.8691, 1.8944, 0.6984, 2.1971, 0.7659, -0.3399, -1.054, -1.9648, 4.8986, 2.2357, -0.435, -0.8795, + -3.0303, -1.1024, -3.6351, 1.8563, 2.2581, 0.9526, -1.318, 1.052, 0.9676, 1.4472, -0.2536, 1.6459, 0.5539, 2.7964, -2.3045, 3.1405, -0.8848, -0.5008, -4.0553, 0.4143, + -2.0566, 0.3509, 1.5804, -0.1468, -1.2009, -5.1236, -1.6316, -0.6083, -0.2262, -3.8727, -1.4106, 4.1461, 2.8353, 5.5841, 2.0344, -1.3445, -0.2669, 1.6597, 0.4425, -0.7448, + 0.4237, 5.5027, 3.4466, -0.9733, 1.1101, 0.3187, 0.4016, -0.8934, -4.1773, 1.2529, -1.0141, 1.7716, -1.4207, 2.0071, -6.7629, -1.426, -0.8769, -1.9766, 2.062, 1.2241, + 0.525, 0.4342, -1.3517, -2.8754, -3.0586, 0.6098, 2.2679, 1.4929, 1.4608, 3.1011, 1.506, -4.8013, -7.5268, -0.6504, -0.503, 2.778, 2.8557, 1.0462, 3.4571, -0.7675, + 3.573, 1.8714, -0.1581, -1.7722, -0.3433, -2.7056, -3.0806, -1.91, -3.1355, 1.0548, -1.9906, 0.4699, 0.0873, 2.5566, -0.1726, -0.8702, 2.1464, 4.3968, 5.0995, -5.1171, + -0.6968, -1.4896, -0.0495, 0.8149, 1.4216, -0.0327, -1.7535, -2.2313, -0.321, 1.9568, 4.8784, -1.9324, -1.8058, -2.6431, -3.7316, 0.3685, 1.1306, 4.9893, -0.2577, 1.3848, + -1.4341, -1.1497, -1.8056, 0.1413, 2.571, 2.939, 0.7055, -0.4196, -0.2614, 0.1608, -0.6195, -0.3637, 4.1643, 0.3576, 0.0984, 2.2749, 0.4728, -7.315, -0.1921, -0.3248, + -4.2895, -7.0396, -4.8802, -1.5844, 1.4442, 1.8886, 0.5829, 0.1608, -2.6352, -1.0632, 0.4985, 3.2097, 6.327, 9.0622, 8.0546, -0.4311, 2.12, -2.0642, -2.9293, -6.4319, + -2.8918, -0.9105, -1.1049, -1.3358, 0.0333, -0.4429, 1.114, 3.2177, -0.2479, -0.9423, 2.0518, -3.4204, -3.3752, -1.508, 4.5184, 3.5104, 0.837, 0.3279, 4.1906, -3.6215, + 1.1012, 2.83, 4.9338, 4.9135, -1.4413, -4.6933, -2.9852, -2.2104, -2.0709, -0.2446, -1.7323, 0.446, -0.3491, 0.7293, 1.2549, 1.552, -1.6591, -0.0263, -1.3091, 0.9607, + -3.8105, -2.2705, -0.4801, 0.003, -1.0835, -0.8967, -1.848, 4.3428, 2.2775, 1.1261, 1.5948, 4.4091, 3.5564, -2.1928, -2.8051, -1.2385, -1.6399, -0.9968, 0.5731, 1.3796, + 4.5581, 4.2833, 0.3675, -0.5438, 1.94, 3.0816, 0.3261, -0.8096, -2.6679, -2.1086, -0.8131, -4.9186, -3.634, 5.7405, 0.0185, 0.6308, 2.5276, -4.0355, -1.8846, -2.0583, + -1.2863, -0.264, -0.1222, 1.8197, -0.8215, -1.4173, 6.3047, -1.3136, 2.0735, -0.1627, 3.0262, 1.5599, -2.3044, -2.9292, -2.1284, -0.006, -0.2974, -0.4468, 0.2977, -1.5818, + -0.3043, -4.9833, -4.4641, 1.6692, 5.7638, 4.6547, 3.7525, -0.961, -3.955, -2.2488, 0.7885, 4.2621, 3.6322, 2.1375, -6.9698, 1.9153, 2.5541, -3.4886, -0.8469, -2.9081, + 1.6869, -2.2603, -5.3537, -1.924, -2.3796, 2.8412, 5.8922, -3.3838, 0.7866, 3.3273, 0.722, 4.1493, -2.8075, 1.2195, -4.122, 2.7912, 5.5751, -0.9361, -3.796, -2.0281, + 1.8743, 1.5687, 0.9347, -0.0119, 5.1974, -0.9505, -1.5819, -0.0387, -0.2355, 2.4835, -2.718, -2.1816, -1.0347, -1.5606, -1.4552, 0.4355, -1.6713, -3.1551, -0.2146, 4.3156, + -0.5064, 0.6473, 1.6157, 0.4031, -0.7786, 0.4664, 2.3609, -0.8533, -2.7426, 0.0584, 3.6047, -1.3728, 0.0256, -2.0089, 0.7575, -3.1106, -1.7839, 0.971, 1.5709, 0.6757, + -0.1854, -0.4792, 0.2327, 0.5721, 1.3762, 0.9344, 1.6367, 0.2158, 0.6455, 0.9744, -3.1471, -5.2734, -4.3577, 3.1646, 3.1365, 2.2803, 1.2303, -1.996, -1.5643, 0.6037, + 1.554, 2.1016, 2.3825, 0.8004, -2.0847, -2.7548, -1.5073, 0.1971, -0.2707, -0.769, -1.8324, -0.6385, -4.5361, -6.8801, 5.4599, 2.666, 1.1252, 2.285, 1.3862, 1.3159, + -2.3092, 8.5984, 0.5061, -0.6741, -2.467, 3.2934, -0.668, 2.0327, 0.6889, -1.8602, -0.9325, -1.2001, -4.3458, -2.5628, 0.6948, -1.1889, 0.4479, 2.595, 1.2931, -1.9416, + 0.8421, 1.5717, 0.5751, 0.5951, 0.4783, -2.2142, 0.3553, 6.0828, 3.0287, -2.3343, -3.2264, -0.7759, -2.009, -0.3873, -2.4778, 0.6768, -3.499, -0.8957, 4.2903, -0.6766, + -0.6942, 8.6603, -5.4134, -0.8727, -0.3504, -3.3092, -0.5586, -0.2913, 2.8905, -3.0583, -2.9724, -1.747, 3.325, -1.1022, -4.4193, 7.6704, 0.5149, -0.7173, -3.6, 6.0453, + 0.6802, 1.0947, 1.2451, 3.8611, 4.5266, 1.8951, 0.7625, 6.226, 2.5223, 4.8966, 1.838, -0.3753, 1.3861, -7.5361, -6.881, -3.7307, -4.9193, -2.5727, -4.5778, -0.3414, + -1.4648, -1.9631, -1.4302, 3.2813, 2.7021, -1.3306, -3.5822, -3.4123, -2.6251, -2.554, -2.983, 1.7868, 1.1612, 1.7944, 0.6471, 3.7619, 3.5844, -0.436, 2.9666, 0.0957, + -2.6065, -0.4815, 3.7667, 3.2609, 1.4317, 5.8806, 0.0973, -3.3441, -3.2874, -4.9485, -1.6589, 0.7537, 0.3424, 0.9215, 3.8135, -4.2041, -1.8751, -0.8917, 1.0067, 2.0227, + 4.0705, -1.6316, -3.7042, -1.3612, 1.3654, 1.6949, -0.0461, -0.428, 2.9316, 0.2615, -3.3312, 0.4341, 1.2323, -0.8543, -0.862, -4.8579, -6.1758, 3.1382, 4.934, 3.1899, + -4.1097, -4.1313, -2.7947, -1.2657, -0.6757, 0.0158, -0.2664, -0.7288, -2.8256, -1.9407, 0.4965, 2.0938, 4.2596, 1.7443, 2.092, 3.1468, 3.6217, 1.9383, 0.0884, -0.7586, + -0.5474, 3.7117, 4.4423, -1.1991, -3.2034, 0.2008, -1.1999, -0.3645, -0.3658, -1.5068, 4.3945, -0.5362, -1.4209, -0.9138, -0.075, -0.959, 3.3133, 2.7513, -7.0608, 0.5385, + -0.2792, 1.018, 0.1758, 4.6409, 0.999, 0.8572, -2.2212, -4.3593, 1.021, 5.0992, 3.1964, 1.4429, -1.7425, -0.9214, -2.3245, -1.3975, -6.8773, 2.8027, -1.1862, 0.056, + 1.7064, 0.3215, -0.2518, 0.0527, -2.5377, -4.4163, -3.0416, -0.1822, -1.1887, -2.941, 0.6761, 3.4948, 1.6101, 1.2626, 0.2612, 5.622, -3.9114, -1.0915, 4.1888, 0.3661, + -1.7866, -1.1389, -0.0309, -0.9349, 0.3853, 1.9195, 0.2339, 0.3886, 0.9745, 1.4208, 2.5313, 4.3943, -4.636, -2.5445, -2.1898, -2.533, -0.3527, 4.7621, 0.5928, -1.4558, + 7.8057, -3.8468, 0.8827, 0.8768, -4.7631, -5.1731, 0.0664, 5.3199, -1.789, -4.3428, 1.9966, 2.9221, -4.5512, 5.176, 0.582, -0.2561, -0.2887, 0.6505, -0.8654, -0.4024, + -2.578, -0.0834, 0.144, -1.6096, -4.137, -4.824, -1.6968, 2.0832, 4.4015, 2.3414, 0.0326, -1.7738, 3.0088, 2.5338, 2.2405, 0.7822, -3.427, 2.3235, 0.3274, -0.0892, + 2.1843, 2.593, 1.3745, 1.7373, 2.8715, 2.7285, -1.1274, -0.1783, 0.9497, 1.0004, -0.2974, -0.2919, 0.6463, 0.2228, -1.5085, -5.8708, -3.691, -0.8536, -2.5539, 0.0647, + -1.6643, -0.8616, 0.2098, 2.2486, 4.6647, 3.854, 2.3834, 1.3656, -0.2611, -0.7523, -0.2703, 2.863, 1.157, -1.6263, -4.3844, -3.5346, -0.0484, -0.8649, -4.9645, 0.4867, + 0.6824, 1.0939, 0.6691, 0.3291, -0.2396, -0.9714, -0.9487, 0.4056, -0.8422, -1.0662, -0.8121, -1.8756, 1.8363, 1.0681, 3.7568, 2.7493, -2.279, 1.4171, -4.9986, 0.0258, + -2.0461, -1.9677, -1.8134, -2.6831, -3.0621, -1.6874, 2.2873, 0.6491, 1.7878, 1.1808, 1.5028, -1.154, -1.2923, -0.0603, -3.5107, 6.4917, 4.0814, 1.4288, 0.0396, -0.1721, + 1.7926, 0.64, 0.0107, -3.4114, 12.2384, -4.2391, -4.1672, -5.5139, -1.6966, 5.3015, -0.9447, -4.0014, 3.1093, 5.2076, 5.6201, 2.3962, -5.3615, -1.8057, -0.2628, -4.9121, + 1.2301, -0.2653, 0.0535, -2.1294, -3.7763, -2.5405, -1.3165, 1.3892, 1.1754, 1.8095, 2.3931, -0.531, -0.8291, 0.5926, -0.2725, -7.2218, 1.8619, 3.8534, 3.4226, 1.1011, + -4.1789, -3.5276, -0.8324, -0.4176, -2.4, 0.0369, 0.9853, 5.4189, -1.8625, 4.5416, -0.0534, -2.2531, -1.839, 3.0263, 1.3992, -0.9141, -0.2291, 0.6856, 2.4454, -0.0313, + -6.4975, -4.6128, -3.3675, -4.8986, -0.8354, 2.3584, -0.6088, 4.1352, 0.6068, 0.7211, 0.275, -2.0557, 0.4476, 2.7831, 4.6078, -0.4014, 5.9849, 2.1061, 1.2312, -1.9795, + 1.323, 1.1384, 1.2773, 1.715, -0.7509, -3.8269, -1.129, -0.1851, -3.0673, 2.4551, -1.8006, -0.5768, 2.5367, -0.4358, 1.0236, 2.8956, 4.5161, -0.4242, -3.2309, -3.4534, + -0.3567, 2.4123, 4.0459, 3.3988, 2.0862, -2.1774, -5.126, -1.093, -2.2588, -0.1938, 0.5021, -0.2723, 1.0175, -2.6722, 0.0196, -1.3546, -1.6702, 0.808, 0.6509, 2.2336, + -3.1316, -2.5501, -0.7668, 1.9764, 1.8647, -0.0801, 0.9053, 0.9563, -1.0947, 0.3992, -1.9982, 2.2428, 2.0122, -5.4193, -2.6261, -0.7274, 0.7121, 1.7109, 3.9486, 1.666, + -7.9949, 4.0953, 3.7255, -1.4546, 8.0933, 1.7853, -4.2627, 4.4208, 9.6075, -2.0281, -0.5418, -3.566, -1.9219, -6.8006, -1.4426, -1.872, 6.0536, -6.8174, 0.7937, 0.1276, + -1.9787, -1.0115, 0.4548, -0.6009, 1.0489, -0.3883, -3.8168, 3.5539, 1.8044, -0.802, 2.2377, 4.013, 2.5264, 2.9341, 2.9402, 3.194, -12.1756, -4.5827, 0.714, -0.0649, + -2.6937, -0.9969, 0.6136, -0.2092, 0.1112, 0.1733, 0.0276, 0.6804, -4.181, 0.4835, 3.1126, -0.8365, -1.6005, 3.1133, -1.3297, -0.4657, 2.8302, 2.713, -2.7204, 1.175, + -4.2305, -1.0868, 0.5304, -0.1415, -1.2124, -0.8981, -0.879, -0.8763, -0.9777, 1.0148, 4.1145, 2.1714, 1.231, -1.6938, -1.4429, 1.2355, 6.6877, 0.2382, -3.2655, -0.5189, + -2.1503, -3.4325, -3.4567, -1.0918, 0.5993, 0.3527, 0.3437, 0.2288, 0.7821, 1.0173, 2.2607, -0.9887, -0.3595, 4.4457, 3.707, 1.5475, -3.7173, 0.7682, -0.5101, -0.3462, + -3.7019, -3.2897, -0.3993, 1.1225, 4.7873, 3.25, -1.8347, -2.0699, 0.0727, 1.2966, -0.1512, 1.4478, -2.4263, -0.3987, -2.4159, -3.3225, 2.8445, 0.7735, 0.8954, 3.5197, + 0.0807, -1.1966, -2.9464, 0.8465, 1.6234, 1.1215, 1.2824, 3.7187, 2.3234, -3.7329, -7.3924, -3.2192, -4.4371, -4.8564, 3.1927, 2.3654, 4.5154, -1.033, 4.4531, 3.291, + 0.0329, 2.1961, 1.8627, 0.509, -2.3566, -3.1635, -1.4865, -3.4766, -3.4834, -4.5095, -2.404, -5.545, 7.4389, 3.1752, 2.6905, 4.3345, 1.8695, -0.0444, -0.0458, 2.4056, + -4.2525, -4.2615, -2.8448, -1.4174, -1.4188, -1.0941, 0.0321, 2.7304, 1.6246, 3.7714, 3.6887, 2.3979, 1.9374, 0.7696, -7.0469, 0.1811, 3.9202, 4.8839, -3.2038, -0.3977, + -0.4109, -0.9615, -1.1887, -1.3425, -1.0669, -2.7829, -2.9395, 1.289, 1.6984, -0.5601, 1.6775, -0.5469, -0.8102, -0.2298, -0.7565, 0.3451, 3.1792, 2.2226, 4.5535, -1.3689, + -5.7264, -3.6531, -1.3521, 0.1463, 1.711, 3.189, 0.7838, -1.0176, -0.2195, 1.4384, 0.0207, -0.4968, -1.0491, 0.1749, 1.0739, 2.0378, 1.358, 1.236, 0.4429, -0.098, + 0.7773, -0.8979, -1.2165, -1.9337, -2.9157, -4.0101, -0.3148, -4.646, -4.2945, 4.177, 5.5969, 1.4549, 3.5448, 1.4079, -0.8343, -3.2017, 5.5239, 2.2268, -0.3838, -0.0607, + -0.6985, -0.6307, 2.4635, -0.5381, -0.2883, 3.4018, 2.1088, 2.918, -0.5123, -0.9613, 0.0579, -4.3385, -3.8027, 1.0743, 5.0578, -1.828, -2.2439, -4.7171, 0.9386, 2.5388, + -4.5218, 0.1558, 2.838, 2.3948, -1.9436, 0.6339, -0.7954, 1.9788, 1.5836, 1.1696, -4.5526, -0.564, 1.4447, 7.0584, -6.8023, -4.5393, -6.0449, -0.5031, 6.1354, 4.8739, + 0.3624, -1.2047, -2.0776, -1.5816, -0.7523, -0.4259, 1.9866, -0.1702, -0.471, -1.9514, -1.5113, -0.2099, 2.707, 3.8409, 4.1635, -1.6517, 0.8031, 3.118, -4.9637, -0.01, + 3.3248, 2.1375, 1.3785, 0.2103, 3.0519, 1.4244, 0.2968, -0.3016, -1.2728, 0.9142, 0.2763, 0.9396, 2.3345, -1.6742, -3.9431, -3.4421, -2.5066, -1.7463, 1.1359, -2.5381, + 7.3832, 7.8862, -6.4414, -8.9767, 0.1372, -3.3099, 3.3247, -2.2516, -2.6663, 1.5419, 7.2572, -0.6762, -1.4552, 3.0048, 6.921, -8.5959, -2.6649, 2.5301, -0.7893, -2.1588, + 1.3303, 0.1631, -2.4438, -1.2379, 0.9953, 2.7203, 1.9038, 1.2786, 0.3887, 2.8669, 0.368, -0.1846, 5.6338, 2.1238, -1.0482, -5.2051, -1.0787, -7.2281, -1.5184, 0.1722, + 0.1645, -0.9895, -2.0311, -3.1149, -3.298, -2.1249, 2.0221, 2.1048, -0.3058, -1.0676, -2.5289, -1.4215, -1.7517, 2.914, 4.1244, -0.6494, 2.6877, 3.2611, 2.5839, -0.5792, + -0.4639, -1.9119, -0.6903, 1.0816, 1.798, 1.1866, 0.422, 1.5316, 0.8944, -2.981, 5.6782, 3.5367, -0.9955, 2.4778, -1.9477, -3.1693, -0.034, -1.9442, -1.8186, -2.6506, + -3.9601, -3.1838, -1.3333, -0.9936, 0.4708, 1.864, 0.2776, -3.5639, -1.8523, 3.8979, 6.3274, 1.9935, 2.4867, -0.2835, -0.1329, -0.9778, 1.4936, 2.4315, 0.5084, -5.4702, + -1.9007, -8.9624, 0.7258, -2.6244, 1.8683, 0.7413, 8.169, -2.357, -4.2143, -5.3821, 5.3979, -0.3396, -0.0209, 2.4866, -1.7903, 8.5769, -2.6396, -4.5135, 0.4288, 6.3503, + 2.3682, 1.2735, 1.0581, 0.7198, -1.3884, -1.1783, 2.7862, -0.315, -4.4216, 1.0457, 0.802, 0.2322, -1.8255, 0.9933, 1.5522, 4.2681, -3.4105, -1.8681, -3.1691, 0.4773, + 0.1022, 3.5273, 4.7298, 1.5753, -3.6041, -2.406, 0.8414, 1.2204, 1.0785, 1.4517, 0.9533, 1.0682, -0.0095, -1.2482, -3.715, -1.4924, 0.0586, 0.2151, -3.5086, -0.8381, + 2.6097, 1.3046, 0.1797, -0.8433, -0.8002, -0.6737, -0.7817, -0.0181, -1.8564, -0.0021, 1.7429, 2.1363, 2.4019, 0.852, -1.2013, -2.3776, 0.1614, -1.6535, 0.2922, -1.473, + -1.1555, -1.9989, -3.7971, -3.5419, -1.7702, 5.6208, 1.6756, -3.4769, -2.2174, -0.5921, -2.9465, 2.4449, 3.2181, 2.5732, 0.5741, 1.4008, -1.6104, 2.6683, 4.0017, -1.0706, + 2.6808, 2.4971, 2.2595, 2.6039, 2.5012, 2.7248, 0.3061, -0.5761, -0.0415, -2.4607, -1.2162, -0.08, -2.7145, -3.3777, 0.3468, 1.3821, -2.901, -0.5334, -2.3262, -1.075, + -1.4573, -0.7869, 0.2356, -0.1795, -1.7997, -2.4756, -0.7083, -1.2917, -0.2409, 1.8121, 2.3854, -0.078, -2.6742, 0.8926, 3.1169, 2.4329, -3.2335, 1.5184, 1.6752, 0.8566, + 1.3578, 1.5299, 1.0786, -1.596, -3.3648, -1.6673, 1.3592, 5.7139, -0.3364, -0.8154, -1.0911, 0.3285, 1.2167, -6.5169, 3.5759, 0.3841, -3.4189, 2.252, -0.3564, 0.3665, + -3.9427, -4.1692, -3.9599, -2.7914, -2.7852, 0.8501, 2.1268, 3.1929, 2.9997, 0.9798, 3.7115, 2.7044, 0.8023, -1.3597, -0.1213, 1.8505, 0.8537, 2.357, 0.4425, -3.7419, + 1.1259, 1.7278, 1.7181, 1.0824, 0.9378, 2.2855, -0.4426, -2.0998, 0.2868, -2.3258, -2.4774, -3.503, -2.192, -0.0403, 0.0689, -2.1823, -1.7516, 0.3348, 2.6371, 4.8097, + 2.6282, 3.1949, 1.4763, -1.8168, -2.3026, -0.1157, -0.0177, 1.6877, 0.85, 0.1002, -0.5211, 1.2286, 1.5164, -0.6411, -0.9348, -3.1872, 0.1863, -3.1762, -3.7899, 3.6345, + 0.6239, 1.6179, 1.2014, 0.2608, -1.992, 4.7736, 2.9884, -1.6687, -1.57, -3.2904, 2.3265, 0.1217, -0.6529, 1.1537, -1.343, -3.266, -0.7427, -0.3946, -0.8553, 0.7078, + -2.5785, 3.3274, 0.7827, -1.1641, 0.3099, 2.093, -3.8923, -2.1233, -0.2174, -1.0352, 2.3827, 3.2008, -1.3061, -1.3553, 2.0138, -4.8137, 2.2926, -0.4492, 0.2262, 2.3061, + 0.703, -0.6796, 0.6702, 1.233, 0.3286, -1.1249, -0.2281, 0.9008, -0.4257, 1.5252, 0.1413, 3.8708, -2.7125, -0.1048, -1.3046, -2.6469, -1.7645, -0.4236, 2.6448, -0.6022, + -2.0396, 0.9147, 3.7884, 2.4844, -0.2561, -2.4529, 1.8969, -0.1479, 0.695, -1.2549, -4.9008, -1.2459, 0.9313, 0.6906, 5.2636, -1.1277, -0.2394, -2.2895, -2.5856, 1.8753, + 1.678, -1.6532, -2.7599, -2.245, 0.5197, -1.6003, 4.4426, 1.0934, -0.3109, 0.9191, -3.4242, 1.3304, -1.5208, -0.9853, -0.2434, 3.9418, 0.4425, -2.2543, 4.6335, -2.0037, + 2.2658, -0.6139, -1.3935, -0.0563, -2.955, -1.9056, 3.4601, -0.3817, -1.6475, -0.291, -0.5503, 1.7727, 0.0114, 2.6384, 2.8574, 0.5346, -5.4829, -2.6161, 0.958, 3.3952, + -2.9553, 0.0039, 3.9564, 2.2087, -0.9348, -1.5953, -1.378, 0.1552, -2.1548, 0.7917, 1.8242, 1.6997, -1.8826, -0.8677, -0.7876, -0.2152, 2.3842, 2.1467, 1.7116, -4.111, + 0.7023, 1.9303, 1.0064, 0.0165, 5.4286, -1.1464, -1.0459, -2.0088, -1.2634, -2.1806, -0.6159, 0.3372, 3.405, -1.1188, -2.8596, -2.391, -0.555, 5.4226, -1.0697, -1.9937, + -0.8683, 0.0341, 1.1306, -1.3868, -1.9833, 2.9612, -0.7025, 0.9705, -3.1777, 4.1388, 0.7353, 0.3664, 2.0843, 0.2998, -0.405, -1.1895, 3.2137, -5.0324, 1.1351, -2.3244, + -1.0092, 0.5101, 2.307, 2.1852, 1.5304, -1.7001, 1.6095, -1.457, -3.9762, -1.6422, -0.2532, 1.3474, 0.8974, 0.9819, -2.2295, 4.7058, -2.038, 3.1038, -2.542, -2.3311, + 1.9713, 1.0803, -1.0686, -1.2321, 0.3041, -0.5899, -1.6032, -0.6543, -2.1903, -2.1676, 0.3844, 0.2905, -0.5787, -1.1285, -3.3703, -0.5637, 0.3705, 2.2696, 8.3763, 0.1004, + -2.3313, 3.6108, -3.7738, 2.3534, -6.3897, 3.9802, 2.8098, 6.2413, 2.517, 5.126, 2.4541, -1.7202, -4.9921, -5.7179, -3.3204, 5.3271, 2.0124, -5.7657, 0.7907, -3.2116, + 0.323, 1.0311, 1.366, 0.9706, 2.0785, 2.0724, -0.0151, -0.8301, -1.1195, -2.8044, -0.9819, 0.0417, 0.0944, -1.2077, -2.2323, 4.1593, 1.4207, -2.7654, -0.5102, -1.0909, + 1.0182, 0.5812, 0.3232, 1.704, 1.6371, 0.0882, 0.7883, 2.0623, -2.4549, -1.7632, -0.0828, 0.1245, -1.0882, -0.0487, -2.0254, -0.8118, -5.9132, 2.5533, 0.488, 2.8199, + -2.1755, -1.411, 0.7926, 3.1903, 3.2045, 1.4005, 2.2246, 0.4995, 1.4795, 1.0003, 1.4155, -1.8108, -1.7649, -2.0289, -4.9177, 1.9399, 0.4644, -0.6846, -2.6827, -0.1356, + -2.3372, -0.8774, 1.8295, 2.5713, 0.4237, -1.62, 0.725, 1.2049, -2.5557, -1.7837, -2.0535, 1.8608, 2.0142, 1.1559, 0.414, -2.2055, 2.6316, -1.0207, -0.4407, 0.0634, + -6.476, 2.3566, 6.2881, 1.178, 2.2768, 0.5492, 3.6691, 1.5956, 1.5393, 0.8045, -2.4474, -1.1396, -3.0192, -2.8013, 2.1788, 0.9584, -4.0593, -1.3318, -0.6033, -1.5164, + -0.2224, 3.1469, 4.1918, -1.5853, -2.9401, 2.4424, -2.0556, -1.6902, 1.4657, -1.4987, -4.5783, -3.9175, 1.8499, 2.5001, -2.9926, -3.1367, 4.3814, 2.8761, -0.3135, 2.0766, + 0.2838, 0.7448, 1.5373, 1.7127, 1.9184, 1.9954, 1.4552, 0.6636, -0.0775, -1.4076, -2.7023, -2.4765, -6.0615, -4.2297, -2.8214, 4.4402, 0.5975, 1.2302, 2.2798, 0.9178, + 0.1873, 0.8058, 1.4948, 0.4584, -0.6762, -2.1053, -0.4098, -0.951, -0.4347, -0.3909, -1.0508, -2.5837, -1.0389, -4.2899, -4.0647, 3.8453, 2.2675, 2.8481, 4.595, 1.4936, + 6.4165, 4.769, 2.1643, -0.5306, -1.7418, -1.1821, 0.4655, 2.4797, -1.0005, -2.7835, 0.6462, 1.054, 0.1648, -0.2195, -1.2133, -1.6876, -0.2896, -1.1843, -4.2375, -2.0895, + 0.6591, -2.4247, -3.5305, -2.0684, 0.7993, 0.5286, -1.0223, -0.9537, 0.6266, 1.4075, 1.462, 1.6652, 1.3324, -0.3799, 1.6047, -0.403, -1.4183, -0.7574, 3.5079, -0.6351, + -0.7402, -0.5022, -0.0104, -0.1501, 0.0126, -0.8303, -0.6338, 0.0643, 0.7573, 4.3586, 2.2234, -0.7379, 3.8453, 0.8151, 2.8221, -1.4249, -1.4011, -3.5524, -6.4818, 1.5666, + 1.297, 2.6835, 1.2613, -1.8292, -0.939, -1.6773, -1.9287, 1.2477, 1.3854, -1.9138, -1.0744, 1.6338, -4.8418, -0.558, -1.29, 5.2745, -2.7458, 2.6939, -0.9625, 2.2835, + 1.8861, 3.1363, 4.0321, 1.7435, 0.5233, -0.7855, 2.0137, 0.8065, 1.2174, -4.0074, 0.586, -1.0339, -6.4815, -6.1251, 1.1641, -3.9644, -6.3895, 7.8222, 2.0846, 1.7715, + 3.9399, 2.2907, 1.6049, 0.7588, -0.5727, -0.4203, 1.1669, 0.6185, -0.3417, 1.2484, 1.5946, 1.7091, -1.8086, -4.7596, -2.8399, -3.9325, -2.0296, -0.678, -0.7509, 3.2019, + -0.3222, 0.619, 2.2698, 6.3269, 5.8198, 2.6992, 0.0601, -0.5335, -1.7361, -3.6667, 0.2231, -2.3194, -2.0166, 2.496, 0.142, -3.4765, -2.9842, -0.3195, -1.1974, -2.084, + 1.2403, -2.3646, -2.0313, 0.7252, 3.2474, 2.8194, 3.1981, 0.9009, 1.1286, -0.917, -2.4531, -2.402, 1.6229, 2.3317, -1.4971, 0.7586, -3.2903, -2.1223, -1.2864, 0.3911, + 2.1547, -0.4814, -1.6208, -0.2568, 3.766, 2.5927, -0.5335, 0.5221, 2.1027, -1.7193, -2.1878, -1.5973, 0.4487, -3.0208, -3.0695, -0.2839, 1.21, -4.2182, 4.88, 1.3123, + -0.8216, 0.0172, 1.0117, 1.8195, 2.2767, 0.0322, -4.7072, -3.7244, 0.2876, 1.2946, -1.1268, -2.0514, -0.3229, 1.5642, 2.8282, 1.4525, -0.2405, 0.3745, -0.8299, 0.8658, + -0.5885, -0.7711, -0.1566, 0.2456, -1.1305, -2.14, -1.5832, -2.7023, 2.6573, 2.8982, -1.9439, -1.4435, 3.2616, 3.0544, -1.0646, -0.2393, 0.2808, -0.6774, -3.3509, 5.3938, + -2.1609, 4.7541, 2.6519, 2.9104, -0.9771, -3.4464, 1.3102, 4.9024, 3.0997, 0.1198, -0.6878, -5.0516, -2.6241, -0.139, 0.326, -3.7625, -4.6033, 5.7644, -2.7192, 0.333, + -0.0774, 0.0212, 1.7356, 2.6966, 3.8703, -1.264, -2.204, -3.8688, -2.8745, -0.383, -1.2433, 2.7247, 1.1808, 0.5913, 3.3839, -2.9426, 0.1962, -0.6047, -3.1975, 2.2593, + -1.7694, -0.8337, -1.4857, 1.6357, 3.0084, 1.4757, 0.7496, 0.4982, -0.8638, 1.0294, 3.8151, 2.548, -0.4944, -5.1598, -4.1575, 1.6819, -0.9028, -3.0629, 2.9081, -0.6201, + -4.1737, -1.1372, 0.4218, -0.398, -0.2873, -2.0904, -1.4241, 1.1799, 4.8192, 5.5695, 2.124, -1.9634, -0.1503, -0.2208, -2.6623, -1.214, 1.5287, 0.1773, -0.4832, 0.3844, + 1.1759, 3.6352, 3.0816, -1.1382, -0.8341, -1.2549, 1.7627, -0.261, -1.7582, -4.6767, -1.9887, 0.8806, -0.2903, -2.9331, -3.3697, 0.3291, -2.5313, 6.3991, 2.6926, 1.0793, + 3.1054, 0.5446, -2.7707, -3.1154, -2.4354, -2.1091, -1.9215, 1.5263, -0.5089, -2.1954, -3.0602, -1.7502, 2.0283, 3.094, 3.1639, 6.0315, 0.1168, -2.3219, 2.2755, 0.3024, + 1.4017, 0.2037, -0.1188, 0.363, -1.7809, 1.2589, -0.0416, 0.1426, -0.29, -0.0669, -0.9365, -1.7637, -4.6543, 4.5857, 0.7173, -1.2893, 0.7992, 1.8632, 0.4734, -0.8667, + -0.6645, 0.3054, -0.1583, 0.39, 0.1223, 1.1996, 4.2148, 1.7843, 2.7706, 0.9297, -1.0663, 1.2711, -0.1675, -0.5861, -2.5452, -2.9107, 1.264, 0.2394, -4.6672, -1.7254, + 1.3908, 0.5115, -0.8577, 0.3878, 0.771, 1.2838, -1.2112, -1.293, -1.9359, -2.3893, -2.5796, 1.2692, 3.1933, -0.2748, 0.2489, 3.4206, -5.3967, -3.2312, 2.6326, 4.06, + -3.1151, -2.4768, -1.4409, 0.082, -0.065, 0.8542, 2.7545, 0.8481, 2.7775, 3.2925, -1.1392, -0.56, 5.6459, -1.5505, 0.7937, -0.2372, -3.8294, -1.7699, -1.1681, 0.3038, + -1.4631, -1.5744, -1.0602, 1.2727, 5.2755, 0.7411, 2.6424, 0.9111, -1.5443, -0.8217, -2.458, -1.9627, -0.3229, -0.7005, -0.1842, 1.441, 1.119, -0.0388, -1.7254, 0.4532, + 2.6735, -0.132, -2.0731, -1.2667, -0.0059, 0.4063, 1.1045, -0.65, 0.2919, -0.2343, -0.1432, 0.5161, -1.3203, -1.9223, -1.8439, -0.3541, 2.5902, 0.7807, 0.9691, 0.6136, + -2.576, -2.1039, 3.3039, 7.5737, 4.851, -1.928, 1.3509, -0.0624, 1.3149, 2.3856, -2.8836, 1.6777, 1.6919, -0.2315, 2.0672, -1.6292, -7.7877, -7.8864, -2.423, 3.2949, + 0.1825, 1.4326, 1.8802, -0.76, -3.5028, -2.0654, -2.5905, -1.978, -1.3931, -2.0377, 2.0912, -0.7666, -1.6801, 0.1901, 1.3312, -0.8245, -0.8221, 9.1933, 2.6121, -0.4925, + 0.6596, 0.5183, 0.0656, 0.6099, 0.217, -0.2483, 0.3752, 0.0528, -1.355, -1.959, -3.0746, -2.7901, 1.748, 0.0667, -1.3253, 1.8365, 1.2016, 0.6331, 1.5502, 1.2179, + 1.518, -2.8697, -3.0225, 1.1901, 1.2949, 1.2425, -0.2655, -1.0124, 0.1504, 0.9476, 0.8294, 0.498, -4.6214, -0.4714, 2.314, 0.5042, 0.0042, 0.6173, 0.025, 1.1274, + 5.2946, 0.9166, -1.6961, 2.6183, 3.7503, -0.5464, -0.4536, -2.5804, 0.7239, -3.0443, -0.9745, -0.5296, -1.2153, 0.2578, -4.9483, 0.2574, 1.6442, -1.7218, -1.0182, 3.2654, + -0.3113, 0.1627, 0.201, -0.6825, 0.4894, 0.3705, 0.5406, -0.5307, 2.3413, 3.1334, -0.2531, 0.7289, 0.0127, 0.8411, -0.5394, -1.5751, -4.4648, 3.3442, -1.3619, -2.4473, + 0.7892, 1.6007, 2.2451, -0.0142, -1.8268, 1.0211, 1.1632, -0.431, 0.4809, 0.7681, -0.3119, -3.184, 1.8621, 0.7982, 3.9396, 5.5125, -9.0182, -7.2338, 1.472, 0.3673, + 4.5691, 3.1984, 0.4848, -1.6299, -1.5279, -0.4613, -0.394, -0.7641, -0.774, -1.4705, -2.0718, -3.7739, -3.8204, -2.0882, 0.9538, 2.3794, 3.3309, 2.1292, 0.9829, 0.7475, + -1.7639, -2.13, 1.8133, 5.4637, 4.9096, 0.44, -0.2077, -3.2872, -2.801, -3.3973, 1.4612, -0.7884, -0.4468, 0.3167, 3.033, 3.6546, 1.5554, -2.1172, -5.0158, -0.6924, + -0.9691, 2.1549, 0.9464, -1.8955, -2.483, 0.5229, 1.0573, -0.1544, -2.7731, -1.7762, -1.2133, 0.4997, -0.404, 0.0598, 2.1564, 0.9676, 0.1749, -0.3066, 1.3334, 2.102, + 0.1735, -0.6351, -2.2851, 0.3979, 2.1071, 0.8723, -1.4327, 2.7248, 2.2122, -3.8366, -6.8693, 2.9956, 2.234, 0.2392, 4.5854, 0.8064, -0.4877, -1.9451, 0.1604, -2.0173, + -3.0467, -2.6229, -0.6828, -1.5402, -4.5504, -0.6274, -1.5654, -1.1048, -5.0244, 1.2208, 4.3959, 1.7152, 0.8404, 2.3104, 3.911, 1.3725, 3.6004, -1.5868, -0.0242, 3.0095, + 4.6972, -2.0723, 3.7478, -0.0539, -1.3604, -1.6975, -5.1051, 4.5477, 7.491, 0.8111, -1.5236, -2.0035, -2.3201, -1.9156, -1.8399, 2.7039, 1.1102, 2.7618, 0.1987, -8.1775, + 4.2697, 2.1482, 1.1807, -0.8188, -0.0158, -0.9415, -3.1934, -7.6652, -5.2761, -0.4096, 0.8289, -0.6591, -0.1321, -2.2645, 2.689, 3.5308, -0.186, 2.2844, 2.1691, 2.4613, + -2.6176, -1.9646, -0.3365, 0.449, 1.789, 3.0096, 1.2687, 0.1913, 0.7099, 3.1055, 2.4376, 1.5156, 0.2027, -3.2954, -0.8316, 0.625, 2.5125, -1.9645, -4.736, -2.0703, + 0.9801, -1.159, -1.1869, -1.8206, -2.6697, -2.2474, -1.9247, 1.339, 0.7955, 3.2786, 2.1796, 1.2439, 3.831, 0.9791, -3.7027, -2.0691, -3.3297, 3.47, 4.0219, -2.0091, + -1.9305, 1.1296, 2.7892, 3.5086, -0.4192, 1.8621, -2.4767, -4.562, -1.3151, -0.4855, 0.213, 4.0896, -0.2763, 2.9118, 1.5789, -0.3477, -0.82, 5.6054, -7.8822, -3.173, + 3.5183, 4.1815, 1.9981, -0.8261, -1.4369, -0.3881, 1.0213, -3.8793, -3.6636, 2.2621, 1.1803, 1.7727, -0.7985, -1.2902, -5.0777, -1.2307, 0.3381, 4.4122, -1.4815, -0.612, + 4.0477, 1.4256, -1.6604, -3.5999, -1.9136, -0.3445, 0.3946, 1.6694, 1.2905, 0.9828, 0.5724, -0.1289, 1.3498, 1.3379, 0.2067, 0.3656, 0.2492, -1.2128, -3.2905, -1.7416, + -2.0178, -2.6699, -1.3526, 0.2496, 0.4148, -0.8854, 1.0823, -0.6203, 1.2579, 0.4148, -2.2346, -0.4015, 1.4157, 4.8809, 6.623, -3.5608, -1.8735, -4.5603, 3.5038, 0.334, + 1.4937, -1.542, -2.385, 3.1706, 1.4707, 0.1938, 0.5057, 3.8806, -0.0936, 0.3334, 0.4606, 1.4472, -0.903, -1.4318, 3.5118, -5.2689, -1.4235, -1.2997, 0.0053, -2.1257, + -3.6561, 0.1855, 0.3705, 1.1645, 0.2341, -0.8092, 2.398, -0.3274, -0.4576, -1.1851, -3.8496, 2.0281, -3.3309, 0.9466, -0.078, 1.0318, 4.0737, 2.619, -0.3495, -1.0083, + -0.1238, -0.3756, -0.3626, -1.1974, -3.028, -3.3983, -3.5184, -2.8303, -0.2464, -1.0525, 0.7469, 1.1667, 1.9967, 2.0536, 5.8842, 4.672, 0.6593, -0.227, -1.2558, 0.4368, + 1.4898, -0.0036, 2.1872, 4.7731, 5.3388, 2.1104, 0.861, -1.9286, -4.4764, -2.9139, -5.8875, 0.1502, 2.3687, -3.3444, 1.8016, 2.0118, 0.348, 1.5855, -1.0664, -5.4053, + -0.2559, -0.097, 0.6606, -3.0637, -4.0503, -2.5522, 0.2345, 0.1786, -0.3244, -2.5706, 1.7286, 2.2086, 1.6927, 2.74, 1.934, -0.1619, 5.414, 3.6846, -5.1534, -2.2469, + 0.7337, 0.6464, -0.7291, -0.8337, -0.3024, 0.3377, 1.5178, 1.0116, 2.585, 0.9759, -1.397, -3.2182, -3.6906, -0.0798, 3.4993, -1.9939, -5.3046, 1.4115, 4.7666, 0.0639, + -2.9601, -0.9321, -1.3007, -4.5012, -0.6859, 1.6271, 0.8938, 1.8188, 2.7147, 2.4868, 2.4402, 0.6577, 1.204, 2.0247, 0.2523, 1.3499, 1.0757, -5.3086, -0.2223, -2.6347, + 1.2887, 2.2547, 3.3766, 1.8575, -1.791, -1.7548, 1.5265, 2.7964, 1.224, 1.972, 0.2687, 1.81, 3.1328, -2.586, -2.7821, -3.9778, -2.4086, -2.0066, -0.0746, -4.1265, + 0.8108, -0.0118, 0.351, 0.2469, -0.3564, -0.0688, 2.2772, 2.9983, 0.022, -0.8672, -4.831, -2.0824, 0.0877, 2.2501, 0.0661, -8.6456, -1.6422, 4.8643, 2.3157, 2.2152, + -2.3502, 1.9923, 1.6641, -2.2786, 3.4633, 2.605, -3.0058, 1.5172, -5.319, -0.9994, -2.4221, 0.2495, 3.8898, -2.058, 1.1705, 0.4058, -1.2798, 2.5712, -0.5349, 0.7192, + 5.2963, 2.758, 0.0542, -1.8363, 0.6217, 3.1975, 0.8761, 0.6926, 0.1889, -2.2049, -2.6639, -2.3949, -0.455, 0.9028, 0.9417, -2.32, -1.6049, 2.2215, -3.0876, -1.184, + 0.0332, 0.6867, -0.5444, -2.656, -2.3272, -1.9975, 2.7492, 3.4613, 1.2531, 2.297, 0.6826, 1.6161, 0.8081, -2.8567, -0.251, 3.1363, -4.7699, -0.8591, 1.4746, -1.9362, + 0.1179, 0.1304, -0.0905, -0.0885, 0.5876, 2.0857, -0.3875, -1.3306, -0.8957, -0.1982, 0.8458, -0.0513, -2.2349, -5.5634, 7.5385, 3.9965, -1.063, -1.5645, -2.102, 0.268, + 1.5416, 0.4773, -0.0338, 0.6704, 0.3091, -0.0982, -0.8312, -1.8586, -2.1668, -3.0698, -3.6621, -2.8717, -0.1465, 2.9749, 3.0473, 2.3156, -0.0362, 0.7605, 1.1471, 1.5312, + -1.4651, -1.1492, -0.67, -0.6012, -0.1247, 1.155, -0.2106, -1.2695, -0.4411, 1.1446, 4.1491, 2.66, 1.3124, 1.6069, 0.6316, -0.4851, -2.5715, -4.3867, -1.004, 1.7189, + 0.2437, 0.6555, 0.3411, 0.8466, -1.7425, -0.1636, 6.1311, 0.6211, -2.703, -1.5009, -0.1744, 0.866, 1.3589, 1.249, 1.1273, -2.7402, -0.0949, -1.544, -1.861, -0.9159, + 4.3927, 3.3672, 0.9009, -1.2521, 0.623, -0.5206, 0.8245, -0.9087, -1.8374, 0.0097, -3.1469, -2.4307, -3.0482, 0.2541, 1.948, 5.7092, -3.3716, -3.2953, 2.6836, -0.9014, + 2.2171, 0.1913, -1.6779, -0.9585, -1.3241, 0.2292, 1.4881, 2.7969, 0.2756, -3.8207, -2.4695, -0.3208, 2.3024, 2.5414, -0.1815, -0.2933, 2.0837, 0.9892, -1.0861, -2.9823, + 0.1186, 0.1645, -0.3865, -0.8001, -0.3047, -2.3398, -0.6229, -0.0641, 0.8491, 1.7026, -1.1341, -2.0704, -0.3123, 0.1814, 3.882, 1.2943, 0.4627, -0.5672, 0.5181, -0.5712, + -0.1015, -2.3234, -2.352, 0.9949, 2.2704, 0.9946, 0.356, 0.9113, 0.1017, -0.453, 0.852, -1.0302, 0.8806, 0.3674, -2.6615, -4.89, -2.9475, 1.9045, 2.6392, 4.4864, + 2.3941, 1.701, 1.9067, 0.4931, -1.4348, -2.6074, -1.1597, -1.0504, -3.046, -2.8157, -0.6597, -0.592, -0.3406, -1.123, -0.8586, 4.9381, 2.8734, 1.4518, 2.5923, -2.6625, + -0.8669, 1.9301, 3.2551, 6.1577, 2.0399, 2.6785, 0.738, -0.3115, 4.7391, 1.4868, -6.0175, -7.4317, -4.5623, -0.859, 3.8966, -0.1349, -2.5476, -0.008, -1.4441, -2.7383, + -1.8064, 0.5147, 0.58, -2.6271, -3.9359, -2.9321, -2.4785, 0.6104, -1.7343, -0.3653, -0.3024, 0.235, 2.3057, 1.9998, 2.2392, 1.9124, 3.0438, -0.2241, 5.1672, -2.202, + 1.858, 3.3342, 3.04, 1.067, 0.2251, 0.548, 1.7906, 0.7871, 1.285, -0.3795, -2.015, -2.3713, 0.5611, 0.5214, -0.8547, 0.0171, -1.8463, -2.7006, -1.7828, -3.0844, + 1.4841, -0.81, -2.4242, -1.8509, -0.9746, -1.0553, 4.8924, 1.3818, -1.8605, -4.3708, -2.0142, 6.4457, 0.9506, -0.5924, 0.1104, 2.4175, -0.6754, -0.8459, -0.1554, -0.053, + -0.0877, -0.9877, -1.7358, 0.3853, 1.1022, 1.2975, 4.3189, -1.9877, -3.1833, 1.0392, 0.1796, 4.1158, 1.465, -1.6177, 1.6123, -4.1615, -3.2584, 1.2187, -4.3136, 4.5989, + 0.4487, -0.1107, -2.0381, -0.2337, 2.5745, 2.8339, -0.0417, 1.4413, -1.4483, -1.1675, -6.2515, -6.936, -3.2717, 4.8492, 0.9246, -0.975, 4.1724, 1.7821, 1.382, 2.0655, + 0.1081, -0.6949, 0.1665, 0.6685, 0.879, 0.7273, 0.1766, -0.0005, -0.2218, -0.4294, 0.4489, -0.4843, 0.2008, 2.1975, 4.5024, -1.0296, -1.2026, -2.5547, -1.0944, -2.3636, + 2.3396, 2.1543, 2.2429, 4.7578, 0.839, -0.8895, 4.6297, 0.4985, -2.3653, 2.1787, -1.0612, -0.8953, -6.2919, 0.5546, -0.4272, -0.967, -1.9781, -0.4692, -5.5295, 0.6795, + 0.153, -2.1926, 2.1973, 4.5005, -1.3453, 1.3286, -2.031, 1.0783, -1.351, -0.7983, 0.6783, -3.4857, 5.3977, -3.6561, -3.5986, 6.0882, 0.1428, -0.9697, 3.0219, -5.1583, + -2.6086, -0.0766, 2.7222, 2.0552, 2.4096, 3.0319, 1.0596, -0.1283, -0.8104, -0.2732, -1.4259, -4.0229, -1.4469, -1.6716, -1.1861, -0.9216, 0.678, -0.0004, 2.0118, 0.6041, + 1.8333, 3.1078, -1.8097, 1.1817, 3.7643, 0.5185, 1.9828, -0.3454, 1.2321, -1.0494, -6.2996, 3.9399, -4.6043, 2.7296, -2.2906, -1.7821, -0.5503, -0.1687, 1.5615, -2.9514, + -1.9822, -1.787, -2.0807, -0.6471, 1.7376, -0.7108, -0.9897, 0.1273, -1.5435, -3.408, 1.1979, 3.2003, 1.0189, -0.9731, -1.079, -1.9655, 3.5511, 1.2692, 3.4593, 1.6049, + 1.8097, 0.7952, 2.3044, 2.0422, 0.0385, -1.489, -2.6817, -2.4115, -2.0814, -4.7349, 1.3168, 5.2099, 2.0691, 0.2209, -0.3967, -1.391, -0.0825, -1.397, -1.3074, 2.1664, + -0.6317, -0.6961, -1.7818, 1.7212, 1.8896, 0.7627, 6.4133, 0.0239, -2.0812, -0.634, -0.8745, -0.8436, -3.5167, -3.0992, -0.4403, -5.0217, 5.7819, 4.7221, -2.9383, 1.2443, + -0.8542, -4.8873, -5.4381, -4.263, -4.129, 0.7749, 4.7768, 0.2842, 0.3115, -0.282, 0.2149, -0.1804, 0.6193, 5.7873, 5.1866, -1.3257, -3.0389, -1.9693, 8.9711, -0.5589, + -1.7203, 0.3016, 0.2697, 0.0913, 0.2499, 2.9554, 0.332, 0.0927, -3.0516, 1.3578, -0.8456, 1.2764, 0.1248, 3.9102, 2.8147, -2.3847, -6.7532, -2.2614, 1.9868, 1.2535, + 2.3588, 1.8978, 1.0798, 1.0217, 0.8258, -0.3312, 0.8967, -0.1754, -0.3981, 1.015, -0.3879, -0.8493, -1.269, -1.1797, 1.5079, -0.1598, -2.3607, 1.1269, 2.648, -7.2674, + 1.1746, 4.6165, 5.494, 3.4461, -3.9021, -1.605, -0.1323, -0.938, -0.4156, -1.9, -0.2856, -1.2349, -3.6515, -2.9147, 0.053, 1.1469, 0.2371, -1.3253, 3.8834, -1.7466, + -2.2758, 1.8844, 4.6711, 2.2076, -1.3597, -0.4741, 0.4627, -0.0358, -0.0017, -1.0258, -0.6957, -1.027, 1.1372, -2.604, -3.0616, -4.3523, 1.6973, 1.9314, 1.1807, 1.741, + 1.9665, 1.3206, -0.1069, 0.8467, 1.1209, 2.6581, 1.0313, -0.7646, -0.9327, -0.4666, 1.3979, -1.1019, -2.4235, -8.2049, 1.1737, 4.931, 0.7484, 0.2664, -6.0708, 2.6104, + 1.1852, -1.5416, -3.6491, 4.4048, -6.7437, 4.6469, 1.6802, 1.291, 2.2789, 2.761, 1.3944, -0.7732, -5.8136, 4.4421, -2.2039, 0.8414, -5.8722, -4.6747, -3.6578, 10.0038, + -3.9689, -0.5502, 1.1683, -2.1974, -1.9082, 0.1416, 1.6772, 0.326, 3.7162, 2.4168, 2.6207, -1.7735, 1.5236, 0.348, -0.3569, 4.1471, 1.4471, -0.6226, -8.1997, 0.0448, + 0.6532, 1.491, 1.2058, 1.7096, 2.395, 1.7319, -1.5483, -1.8447, -2.2888, 0.7634, 3.2796, 1.6709, -4.9985, -3.0829, -1.1211, 1.2229, -0.2209, -1.194, 1.9569, -1.7811, + -1.9523, -4.3005, -4.5837, 1.0346, 1.2567, 1.0099, 3.2344, 2.8332, 1.1895, -1.5164, -2.2052, -1.2334, -1.4331, 2.1022, 2.3179, 5.6712, 2.1958, -2.0504, -2.5243, -1.046, + -1.1815, -1.53, -0.6842, -0.5633, -2.6867, -1.4016, 0.6359, -2.017, -1.297, -1.6432, -1.0489, -1.3764, -1.1731, -0.5962, 3.5229, 5.3595, 3.1187, 3.4061, 0.3009, 0.855, + -3.1382, -0.628, -0.8774, -0.9941, 0.9435, 0.9619, 0.852, -3.3796, -3.2423, -1.3758, 3.304, 2.2194, 1.0056, 2.5348, -0.2996, 0.9762, -3.7819, -0.3936, 5.7234, -0.4105, + -3.2428, -5.3967, -1.5226, 4.3711, 2.0836, 2.1112, 0.7032, -4.0183, -12.6551, -15.4852, 0.9361, 9.2253, 10.5424, 3.4081, 3.4337, -0.7556, 1.6657, 0.8127, 4.5992, -0.816, + 1.8248, 0.0419, 0.5248, 1.8646, -1.2814, -2.6618, -0.0669, 0.1817, 2.2151, -0.8152, 5.1179, 2.3104, 3.6555, -8.7128, -2.079, 1.0629, -0.0963, -1.5473, 0.4756, -2.0146, + -0.1111, 0.3482, -0.0235, -0.7175, -0.1449, -0.3857, -0.8724, 0.4592, 0.498, 0.2237, 0.3924, 0.2623, -0.5426, 0.937, -0.6701, 0.16, 0.1978, 1.4707, -0.454, -1.0274, + -0.9442, -0.4989, -0.2375, -0.5991, -1.2414, -0.4327, -0.2055, -0.5191, 2.6955, 3.9938, -2.7275, 1.8004, 1.9744, 1.7067, -0.5541, -5.7033, 0.6046, -1.4009, -1.3782, 3.6669, + -0.8575, 0.6722, 1.8197, 2.2695, 1.4265, -1.5445, -1.743, -1.5937, 2.047, -0.1126, 0.3473, 1.4243, 0.9317, -1.3895, -1.064, 0.4664, -0.0706, -3.0958, -1.0532, 1.1198, + 0.9735, -3.1553, -4.9524, -1.8534, 0.7715, 2.4911, 5.1271, 0.432, -4.1146, 1.1236, 2.7184, 2.0135, 1.9444, 1.7813, 1.8232, -2.6267, -5.6361, 0.3774, 1.0979, -0.3363, + 1.9497, 1.0413, -1.2191, -0.8636, 0.0511, -0.3375, -0.5315, -1.0284, 2.1218, -5.0828, 1.0827, -2.2172, -1.3936, 0.4537, 3.3006, 0.9962, -1.2147, 0.093, -2.8723, 5.6705, + -3.0064, -0.669, 1.9882, 3.1451, 0.5101, 1.4897, 6.0735, 3.0322, 0.7197, 2.5823, 0.9024, -1.3595, -0.6102, -4.4164, -5.2345, 0.5038, -1.7243, -1.0135, 0.3868, -3.2999, + -1.3127, -0.5603, -0.4395, -0.5779, -1.3273, -0.7737, 1.1446, 2.1363, 0.5709, -0.9646, 0.1742, -0.3429, 0.7079, -1.3617, -0.1807, 0.8278, 4.5177, -3.6128, 1.9484, -0.5738, + 4.9592, 5.5662, -1.4308, 2.4625, -1.3728, 0.3179, 2.5142, -3.1176, -3.0793, 2.5866, -6.0767, -3.0209, -1.0428, 3.7946, 3.4423, -3.9407, 3.868, -5.8781, -3.2612, 2.7097, + 1.8752, 4.6096, 2.6992, 0.0622, 1.9683, -1.5159, -0.2846, 2.0429, 5.1916, 0.0415, 0.4228, 0.2499, -1.8859, -1.2282, -1.8414, -3.2239, -2.8594, -2.2718, -1.947, -2.105, + -0.4172, -0.066, -0.7815, -1.3234, 1.6425, 1.596, 0.1952, 2.8005, 1.8348, -0.0556, -1.7528, -0.333, 2.5351, 3.2175, -0.0237, -2.6102, -2.3993, -0.4569, 0.2104, -3.8124, + 0.534, -7.1325, 7.3739, -7.1474, 5.0035, 4.0837, 1.7481, 0.6285, 2.147, 3.3649, 3.4871, -4.6213, 5.3643, -0.8361, 2.3067, -0.6517, -4.1528, -4.1599, -0.0969, -7.2432, + 6.4977, -1.8922, 6.0123, 2.6649, 3.9019, -2.9401, -5.9544, 6.5995, -3.7727, -1.3909, -4.1986, 0.3151, 1.1248, 0.2299, 1.4836, -7.4381, 0.2549, 4.7727, -2.9947, -3.2755, + 0.0546, 0.0075, 0.5596, 0.2523, -2.3268, -4.5642, -3.6799, -0.8395, 2.7336, 3.7088, 2.7486, 2.6118, 1.5065, 0.0463, 0.417, -0.5592, 1.5006, -0.4534, -1.6715, -2.0529, + 2.9815, 2.4495, 1.7545, 3.2822, 2.8844, 2.5666, 0.0398, 1.6192, 2.6128, 3.3153, -4.7284, -2.6356, -1.7561, -4.3333, -3.6328, -2.9815, -0.9212, -0.8755, -0.3601, -1.2811, + -0.8024, 1.2002, 3.222, -0.7626, -2.1102, -1.0525, -1.8044, 0.6518, -0.3024, 1.2038, 0.2348, 0.2257, -2.8991, -1.661, 1.3306, -0.9177, -2.5629, -0.6077, 5.6868, 1.7272, + -0.1833, -0.3751, 0.5635, 0.1503, -0.2949, -0.6821, 1.4873, -1.2805, -1.3007, -0.6803, 0.0098, 0.9789, 1.7868, 3.5914, 0.8184, 1.0857, 6.4677, -3.3457, -6.706, -2.0913, + 4.2126, 1.0339, -0.8906, 0.9053, 2.8206, 3.1913, 0.4808, 1.7342, 1.1617, 0.7387, 3.7928, -0.7288, -6.1883, -1.6937, -4.9005, -3.6291, -0.7611, -1.4035, -0.2407, 0.3643, + -8.3754, -2.2519, 1.308, 1.8062, 0.885, 1.6497, 2.088, 2.7261, 0.2633, -0.5998, 0.5979, 0.7034, 0.996, 2.9711, 0.165, 0.8745, -0.1614, -0.6875, -1.3556, -3.6024, + 1.4188, 1.0202, 1.5256, 1.662, 0.7476, -1.439, -3.4051, -1.878, 0.4521, -3.9741, 0.7867, -0.3719, -2.3721, -1.0437, 0.6801, -0.2011, -3.0818, 2.9062, 4.2361, 2.3315, + 0.1054, -2.6122, -4.3807, -5.3145, -0.2846, 4.3842, 3.017, 3.8061, 0.711, -1.0498, -0.2574, -0.9802, 0.3402, 1.2503, 2.5457, -7.8042, -0.1469, 2.8259, 3.0062, 0.8386, + 5.2058, 7.108, 4.9534, -1.243, -6.6855, -3.7117, -6.1961, -2.1515, -0.5576, -1.6169, 5.7678, 7.778, -3.9195, 1.0323, -4.8749, 2.1979, -6.6948, 5.7018, -1.1809, -0.9126, + 5.0054, 3.2246, 2.722, 2.5774, 0.3515, -0.4988, -0.6659, -1.1531, -0.3512, -0.2899, -1.1677, 0.8076, -0.071, -1.3279, -1.882, -2.0262, -1.5275, -2.277, -2.2582, 0.808, + -0.3421, -2.1542, -1.9404, 1.9715, 2.0717, 1.269, -0.59, 2.8831, 2.5295, -0.0718, 1.0132, -2.1895, 0.9449, 0.2787, 2.8471, 3.2171, -2.0622, -4.9892, -4.8142, 0.1278, + -3.5648, -4.522, -3.8219, -0.0484, 2.559, 3.3348, 4.6892, 3.089, 3.1738, 2.4402, -0.3648, -2.0478, -1.8476, 0.1171, -0.1749, -2.2364, 0.1988, -2.2378, 0.6726, 0.592, + -2.5566, -0.841, -0.428, -0.4406, -0.5726, -0.3279, -1.871, -2.483, 2.814, 4.1548, -1.1877, -1.2228, 1.1741, 0.7041, -4.1128, 0.8974, 1.646, 2.7315, 1.4956, 0.4265, + 0.6395, 0.6244, 0.2175, 0.2548, -0.6436, -1.4509, -1.2471, -1.8889, -1.6984, 0.63, -0.0902, -1.4274, 1.6267, 2.2897, -1.4907, -1.0863, -0.599, -0.3234, 4.5402, 1.1229, + -3.0281, -3.4576, 0.2465, 1.1848, -0.3128, -1.4112, -1.7883, -2.4368, -3.6604, 0.2309, 4.1432, 0.2306, 3.9874, 1.3414, -2.9661, 0.2318, 1.3943, 2.8996, 1.0512, 2.1197, + -6.4523, -0.8108, 3.0394, 2.9265, 1.7276, -0.6852, -1.3401, -1.2086, 0.2339, 0.6323, 0.9584, -0.4322, -0.4865, 1.1438, 3.9792, -0.5978, -3.3409, -0.0134, 0.1557, 0.5712, + 0.8836, 0.6632, -0.5682, 1.0909, 1.02, 0.2143, 1.7898, 0.4314, -1.2105, -1.6888, -2.8939, 1.5904, 1.4323, 5.0287, -2.409, -2.6282, -1.2927, -1.8499, -3.8726, 4.2691, + 2.7571, 0.5054, 0.5914, -0.4593, -1.9535, -2.8534, -5.1043, -5.0146, 0.3167, 1.921, 1.992, 1.2596, 1.2329, -1.0134, -2.2148, -0.9619, 3.3405, 0.4893, 1.9185, 3.2509, + -7.8257, -8.0514, -2.2922, 4.6049, 1.7841, 0.2877, 2.46, 0.2299, 0.3961, 0.7952, 4.9841, 0.5914, -3.3601, 1.4043, 5.5671, 2.2508, 0.0018, 1.51, -2.0511, -3.2867, + 1.5686, 1.2169, -0.6391, -2.6751, -3.0325, -3.9104, -2.5516, -0.9763, 6.3909, -1.3255, 1.3817, 1.7409, 2.2064, 2.8908, 0.3118, 0.3554, 0.3092, -0.0695, -2.5566, -0.6363, + 1.1784, 0.7886, 1.7506, 3.8841, 0.1097, -3.4846, -1.1668, -0.2517, -0.3004, -0.0493, 2.027, 0.2092, 1.544, 3.4255, 0.2943, -0.8517, -1.6072, -4.0976, -5.8976, 2.4958, + 0.9988, 2.8848, 3.2891, 3.3681, 1.4676, 3.2906, 1.3735, 1.197, 0.4611, -0.5875, 1.7464, 0.9583, 0.5681, -1.4825, -4.2976, -3.2226, -2.3712, -7.0782, -2.8558, 0.2917, + -0.2746, -0.1545, -0.1213, -1.7658, -0.9647, -0.899, -2.2776, -1.6043, 2.1487, 5.2377, -7.3002, -1.2976, 0.8951, 2.6087, 1.9104, 0.8944, 4.2107, 2.4289, -0.6124, -3.0624, + 4.5993, 2.8908, 2.6348, 2.5753, 3.5423, -1.3467, -3.634, -1.3719, -1.5896, -1.7807, 0.4182, -0.4869, -0.0081, -1.7322, -5.0302, -4.0281, 3.2297, 0.1854, 0.7317, 0.2006, + -3.2143, -2.4079, 2.3832, -1.4835, -2.9589, -4.3471, -9.4701, -8.698, 2.2131, 11.9939, 3.4222, 5.6731, 1.0493, 0.9347, 3.177, 3.6996, -0.0115, 2.2951, -2.8928, -1.3571, + 2.2986, 0.5686, -2.7234, 0.0628, 3.3595, 3.0322, 1.2528, 0.1697, 0.2877, -3.1109, -4.5198, 4.2898, 4.5477, -0.5365, -2.9437, -1.776, -3.4896, -0.4971, 0.5506, -0.823, + 0.0226, -1.9088, -4.1034, -3.5139, 1.8311, 6.6465, 1.9042, -0.2585, 0.4811, -1.3603, -0.8669, -2.6469, -2.4021, -2.3699, -1.0708, 1.8059, 0.3697, 0.3642, 3.4726, 3.6036, + 1.8666, 0.3455, -0.4415, 1.453, 2.1752, 0.4141, 0.9988, 0.9339, 2.0369, 0.0808, -1.3138, -1.2683, 0.1032, 0.3074, 0.3794, -2.248, -4.4451, -2.7006, 1.2456, 0.077, + -0.9714, 0.8948, -0.5528, -1.5023, -2.1884, -1.619, -2.6643, 0.3765, 5.2588, 1.9474, 4.7336, 6.0668, 0.9206, -6.1173, 0.2687, 4.2344, -2.7801, 4.7836, -5.9468, -5.1428, + -3.5447, -2.6492, -1.1225, 1.1104, -0.6763, -0.3734, 0.7874, 2.9348, 3.7914, 3.3802, -3.0687, -1.7645, -1.7552, 0.4322, 1.5566, 3.1434, -2.9717, 0.2913, 0.3294, 0.1693, + 2.3099, -0.6833, -2.4051, -0.87, -0.1793, -0.7055, -1.1773, 0.0766, -2.2742, -3.5734, -2.1986, 0.6775, 0.1605, 0.0083, 4.2284, 1.3025, 3.7892, -0.0746, -0.9582, 2.5465, + 0.9486, 0.1048, 1.8316, 3.4918, 2.1758, 1.1342, 1.0848, 2.4632, 0.0993, -1.9453, -1.1703, -1.6274, -2.0353, 0.8991, 0.4736, -4.0911, -2.9565, -2.3552, -2.1133, 3.5874, + 0.6208, 3.4997, 6.2697, 4.2107, 1.2652, 2.1894, 1.1355, -2.5271, -2.9525, 0.0535, 0.3829, -2.5199, -2.9063, -2.7287, -1.9607, 1.46, 1.2748, 0.44, -4.8467, -2.3602, + 0.5243, 2.9289, 2.2684, 0.4191, -2.1542, -0.2881, -0.2706, 0.6758, 5.4475, 1.1883, -2.5477, -6.5024, -4.1506, 0.6656, 0.9576, -1.2352, 1.0736, -4.8441, 2.5699, 3.2741, + -0.7794, 1.1463, 3.5016, 1.112, 0.8485, -1.0628, -0.8132, 3.8405, -0.3344, 1.2653, 0.4357, 0.5494, -2.5741, -2.4964, -3.4166, -4.9706, 4.8271, -4.7341, 1.1838, 2.4711, + 1.8447, 1.0979, -1.7573, 0.3863, -0.5133, -3.1578, 0.0583, -0.5417, 4.1974, -4.603, 0.1241, -3.2329, 4.6242, -4.6647, -2.461, 0.5959, 3.2183, -1.2626, 5.6612, 0.3859, + -2.3894, -1.0328, 1.7896, 5.5648, 5.222, 1.8869, 1.0956, -0.1977, 3.2983, 0.9466, -2.0813, -0.1679, -0.5816, -0.1714, -2.751, 1.1951, 1.5496, 1.64, -5.0073, -9.808, + 0.7738, -1.7298, -3.2257, -0.3183, 1.9284, 1.7227, 0.8166, 0.9095, 0.5332, -0.5016, -1.266, -1.9608, 2.0035, -2.6922, 3.7039, 0.8905, -0.7247, 2.7531, -3.0591, -0.5571, + -0.0748, -0.507, -0.2516, 1.7723, 1.4041, 4.352, 1.7022, 1.099, -1.4641, -2.362, 3.1174, 0.5476, 1.5192, -1.9294, -4.9678, 0.2919, -3.1451, 1.3976, -0.5997, -1.9017, + -0.3043, -4.5751, -6.4864, -2.8079, 2.8553, 1.4264, -0.629, 0.8259, 1.1617, -0.8255, -1.1913, -0.9336, -0.8179, -0.6841, 2.7254, 1.919, 4.4832, 2.4919, 2.0452, -0.6788, + 2.9368, 3.5644, 3.7164, 3.7726, 0.3148, -2.5071, -1.0177, 0.4365, 0.4818, -2.1099, -3.0728, -1.1823, -1.8323, -2.546, -3.2217, -2.5081, 0.1068, -0.334, 2.0018, 3.0001, + 2.0122, -0.8437, -0.0894, -3.5669, 0.2151, 1.3672, -1.1852, 2.2748, 0.2674, 2.1266, -4.5961, -3.5181, 1.641, 4.2095, -4.0873, 0.0362, 3.5548, -2.6567, 1.8468, 0.9915, + -2.9528, 1.3693, 1.3737, 3.6447, 4.6399, 3.0004, -0.4081, -0.5069, -2.0885, -2.1563, 0.7639, 0.479, -2.4821, 1.6495, 0.828, -0.4457, -4.8607, 3.5285, 3.1896, -8.5655, + -4.4449, -2.6584, -0.3396, 2.7055, 3.1313, 2.6691, -0.1405, -2.692, 1.138, 5.9263, 0.1508, -2.5031, -2.5963, -2.2339, -0.4387, 2.7348, 0.1166, -2.0958, -0.1884, 1.7591, + -0.4506, -2.2585, -2.0183, -1.2141, 2.3804, 5.1371, -0.1012, 0.7185, -1.9558, -5.5843, 1.7274, 2.5676, 1.3295, -2.3148, 3.4722, 0.9168, 0.3809, -1.2468, -0.6805, -0.8055, + -0.5741, -1.3187, -1.6054, -1.8387, -3.0009, -2.2631, 1.6411, 1.0542, 0.863, 1.3059, 0.666, 0.5171, -0.9355, -1.8837, 0.8703, 0.385, -0.0855, 0.2754, 4.4605, 1.4674, + 4.0853, 2.9178, 0.0251, -1.7053, -2.9819, -2.0918, -1.9947, -0.8293, -0.6373, 0.5052, 2.1796, 2.6733, -1.7046, -0.6344, 1.362, -0.4864, -2.0884, -1.6708, 1.5012, 1.5754, + -1.5635, 2.8252, -0.9149, -3.0463, -4.7327, 2.7084, 1.1209, 0.7968, 0.7865, -1.2527, -0.1248, 2.6941, 2.7972, 2.2336, -0.0652, -0.4532, -2.9265, -0.056, -0.4324, -0.3945, + 2.462, 0.7164, -1.5674, -3.1513, -1.6402, 2.4149, 2.901, 2.5761, 3.2262, 0.0749, -4.5314, -3.4112, 0.2922, 1.0743, 0.0408, -1.5976, -0.5032, 0.6577, 0.7598, -0.794, + 1.971, 1.173, -0.6838, -2.2094, -1.9356, 1.4952, -2.0825, -0.2927, 0.7657, -1.8337, 4.4472, -3.8324, 0.7557, 0.0732, -3.6271, -1.9071, 4.314, 2.4552, -0.0317, 0.9857, + 3.7325, 2.7934, 1.0157, -1.7096, -2.8454, -1.8953, -0.7562, 0.3146, -0.3781, -1.002, -1.6158, -0.3984, -0.0573, 0.9972, 1.0112, -1.0599, 0.037, 3.6124, 1.1087, -2.9047, + -1.4832, -1.9899, -0.8731, -0.933, -2.9066, 2.382, -0.1603, -0.717, -1.1285, -0.9274, 2.1578, 6.4011, -1.6535, 2.3099, -1.6654, 3.7268, 0.0883, -1.8527, -0.5184, -0.2568, + 0.6353, 1.3687, 1.8257, 0.3226, -0.8766, 1, 1.0853, 1.2934, 0.8779, 1.7553, 1.1543, -2.0442, -1.6763, -0.4593, 0.9294, -1.2072, -2.2593, -0.6144, -2.8074, -0.3032, + -1.207, -1.3475, -1.8312, -1.7806, -2.9611, -3.1818, 2.9332, -0.124, 0.1906, 2.9202, -1.8371, 1.0525, -2.0319, 2.7074, -2.1979, -1.3072, -0.5591, 3.0013, 2.66, 4.9011, + -5.1303, 3.387, -3.7967, -1.9466, -5.3864, -1.1368, -0.5684, 3.7351, -0.5755, -3.2378, -4.425, 2.035, 3.9372, 5.4701, -2.7768, 5.9464, 6.6849, -3.7875, 1.9948, -0.423, + -1.3037, -1.9678, -3.152, -1.4018, 0.2092, 2.801, 2.076, -0.3324, 1.0911, 0.905, 1.7187, 3.4255, 1.0022, 3.5722, -3.5224, -4.7658, -1.0745, 0.2766, 1.2898, -0.8471, + 1.9772, -2.9635, -3.024, -2.2547, 0.1703, 1.7771, -1.6073, -3.1859, 1.541, 1.4356, 0.9203, 3.9297, 4.2495, 5.7007, -4.0193, -0.8612, 1.6423, 0.8844, -5.1605, -1.1517, + 2.9132, 0.8992, -1.0688, -1.5448, -0.9185, 0.4003, -1.77, -2.7768, -1.4639, 0.2261, 0.7139, 1.7997, 3.0514, 3.3204, 0.6803, 0.9792, -0.2717, -2.645, -0.2252, -2.2988, + -2.9741, -2.4804, -3.0116, -3.1521, 0.1074, 1.3714, 0.6662, 2.0637, 1.7849, -0.4611, -0.772, -1.6172, 0.8203, 3.4203, 0.8069, 2.2581, 3.2451, 0.5915, -2.2429, -0.4245, + -0.8028, -0.229, 0.2137, -0.4319, 0.558, 0.2543, 0.9172, 0.8892, -0.4807, -1.2827, 0.9202, 1.1454, -1.6931, -3.6479, 0.4568, 3.9049, 1.2435, 2.6145, 0.7928, -5.3425, + 2.619, 1.9162, 0.9769, -0.1078, -0.429, -0.365, -2.8284, -4.4494, -5.991, -4.8405, 0.711, -0.4595, 0.2195, 3.3942, 0.9527, -1.8867, 3.8742, 3.7699, 1.215, 1.7087, + 1.8829, 0.7201, 0.6607, -0.0626, -1.194, -1.4411, -0.0944, 0.1172, -0.7491, -0.3712, -2.5287, -2.1899, -1.228, -1.4906, -0.5689, -1.4885, 2.7842, 4.0586, -1.1367, 4.32, + 4.671, 0.9897, -0.6156, -0.6851, -1.412, 4.1532, 4.4321, 1.1339, -1.0985, 0.5736, 1.4085, -4.6356, -3.3117, -1.5968, -3.4345, -0.7293, -0.0528, -0.3096, -3.6684, 4.188, + -2.5398, -1.383, 0.0979, 1.9654, 3.5192, -0.0522, -3.287, -3.8507, 0.6356, -0.985, -3.0198, -3.7269, -0.831, 1.9829, 1.8339, -0.8073, 0.2152, 2.0459, 6.118, 2.0688, + 0.4962, 3.2227, 3.5953, 1.3395, -3.4218, -4.9933, -1.9981, 0.9513, -1.0998, -2.7535, 1.3298, -0.6976, 0.0716, 0.7392, 5.8854, -4.3047, 2.189, 1.9699, -2.4444, -0.0765, + -5.8327, 1.1129, 0.8081, 5.6003, 5.5684, 4.702, 2.8089, 0.4347, 1.1649, -4.9188, -11.4465, -1.3196, 0.4225, -2.4705, 0.3286, -0.0113, 8.734, -2.122, -2.1264, -1.4373, + -1.6231, -1.3969, -2.0111, -1.262, 4.3084, -1.2012, 1.2341, 0.1866, 0.0635, -2.6548, 2.3896, 1.8088, 0.029, -4.3105, 3.9166, -0.0331, -0.3748, -2.471, 1.0435, 2.3583, + 0.631, 1.3989, 1.5277, 0.7608, 1.0894, 1.7235, 2.0681, 2.3537, 0.9918, 1.2164, -0.3325, -2.2666, 0.1756, 0.1615, 0.5196, -2.673, -7.1201, -2.9272, -5.4551, 6.1563, + 7.8768, 5.4153, -2.5369, 0.0405, 4.1259, -0.2108, -4.6599, -0.9803, -1.3472, -5.5873, 0.0334, -6.0975, -0.7915, 0.7551, -0.1575, 2.8766, -3.5702, -0.2561, 4.01, 1.0615 +}; + +const struct lsp_codebook newamp1vq_cb[] = { + /* /home/david/codec2-dev/src/codebook/train_120_1.txt */ + { + 20, + 9, + 512, + codes0 + }, + /* /home/david/codec2-dev/src/codebook/train_120_2.txt */ + { + 20, + 9, + 512, + codes1 + }, + { 0, 0, 0, 0 } +}; diff --git a/codebooknewamp1_energy.c b/codebooknewamp1_energy.c new file mode 100644 index 0000000..6ecdd7c --- /dev/null +++ b/codebooknewamp1_energy.c @@ -0,0 +1,39 @@ +/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */ + +/* + * This intermediary file and the files that used to create it are under + * The LGPL. See the file COPYING. + */ + +#include "defines.h" + + /* /home/david/codec2-dev/src/codebook/newamp1_energy_q.txt */ +static const float codes0[] = { + 10, + 12.5, + 15, + 17.5, + 20, + 22.5, + 25, + 27.5, + 30, + 32.5, + 35, + 37.5, + 40, + 42.5, + 45, + 47.5 +}; + +const struct lsp_codebook newamp1_energy_cb[] = { + /* /home/david/codec2-dev/src/codebook/newamp1_energy_q.txt */ + { + 1, + 4, + 16, + codes0 + }, + { 0, 0, 0, 0 } +}; diff --git a/codebooknewamp2.c b/codebooknewamp2.c new file mode 100644 index 0000000..c8389b0 --- /dev/null +++ b/codebooknewamp2.c @@ -0,0 +1,527 @@ +/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */ + +/* + * This intermediary file and the files that used to create it are under + * The LGPL. See the file COPYING. + */ + +#include "defines.h" + + /* /Users/erdgeist/Coding/codec2/src/codebook/codes_450.txt */ +#ifdef __EMBEDDED__ +static const float codes0[] = { +#else +static float codes0[] = { +#endif + 11.9178, 14.1558, 15.0079, 16.3077, 17.3822, 18.2611, 17.4655, 14.7258, 9.9322, 5.5523, 2.3108, -0.5449, -3.1948, -5.2578, -6.672, -7.0718, -6.2242, -3.5271, -0.4724, -0.6426, -5.5883, -11.069, -13.9474, -14.1999, -11.6213, -9.2487, -10.7685, -15.1688, -17.7995, 4.747, 5.3362, 4.5288, 2.041, -0.2507, -1.4078, -1.9789, -2.0773, -2.8836, -2.6876, -5.367, -21.5899, + 20.9429, 19.2708, 15.6619, 12.7137, 9.1871, 6.4196, 3.1467, 1.6784, 0.8989, 1.2827, 1.4966, 0.1254, -2.5426, -4.515, -6.1876, -6.3874, -6.0478, -5.9793, -6.4367, -5.2532, -2.2523, -0.5109, 1.6273, 0.3551, -4.439, -9.5465, -11.7875, -11.3329, -11.5883, 4.4211, 3.0334, 0.1707, -1.8877, -1.6176, -0.7003, 0.0063, 0.8933, -0.3305, -0.5297, -3.459, -17.2335, + 10.3698, 10.9179, 12.2827, 14.2252, 13.1924, 8.1149, 3.4397, 0.4163, -0.6468, -1.2093, -1.7787, -2.1501, -2.3738, -2.1698, -1.6602, -2.0012, -2.2206, -2.6679, -2.9048, -4.0924, -3.9533, -4.6653, -3.4648, -4.1545, -4.7802, -5.9292, -6.6217, -6.2599, -7.2545, -1.4487, -2.0915, -2.0764, -2.524, -2.8369, -1.7282, 0.3818, 1.6462, 2.6312, 4.3951, 3.6513, -6.604, + 10.7001, 9.9813, 8.3287, 7.1242, 6.507, 6.5092, 5.9516, 5.2985, 4.9376, 4.9107, 3.3698, 2.148, 1.7415, 1.8271, 2.9065, 1.7503, 1.1809, -0.5973, -2.5964, -4.1194, -4.3826, -4.2663, -6.1171, -8.2455, -10.0389, -10.0722, -11.1753, -11.2765, -12.2855, 0.8221, 0.8933, 0.0873, 0.1278, -0.2444, -0.1326, 0.4115, -0.088, 0.3496, 0.6766, -2.9033, -13.4861, + 14.8732, 12.7779, 9.6261, 7.1258, 5.1364, 5.1173, 4.4647, 4.316, 3.755, 3.9126, 3.6316, 2.8536, 1.993, -1.1494, -2.4465, -3.4951, -3.8807, -4.2782, -4.514, -4.6567, -4.7573, -4.9527, -5.3524, -6.1002, -6.5648, -6.24, -6.7782, -6.9091, -7.5078, -0.7325, -1.047, -1.1322, -1.23, -1.1725, -0.7847, -0.074, 0.3234, 1.3703, 2.8077, 1.6715, -7.7106, + 13.0634, 13.058, 11.8762, 10.3012, 8.7287, 8.2751, 6.914, 5.6997, 4.4786, 3.7849, 4.1201, 2.8106, 0.712, -1.419, -2.0942, -2.3582, -0.5397, 1.516, 0.4684, -2.9378, -7.1601, -10.1338, -10.8807, -10.0235, -7.7214, -7.4752, -9.9005, -11.5702, -11.5927, 4.263, 3.6157, 2.2639, 2.6715, 3.2976, 2.2826, 0.9481, -1.7723, -4.4187, -3.5441, -9.6074, -17.0075, + 17.4365, 16.75, 15.4119, 14.0262, 11.9105, 8.764, 5.0192, 1.9276, 0.0772, -0.8006, -1.8916, -2.6101, -3.2178, -2.5671, -1.7974, -0.9511, -1.6296, -2.8438, -5.2983, -6.939, -8.1364, -7.5562, -6.4223, -7.1565, -8.562, -8.8653, -6.302, -4.6173, -3.1589, 0.3453, 2.406, 5.1191, 5.4688, 4.3371, 3.0997, 0.6091, -2.3128, -3.0561, -3.3297, -12.6865, -6.0911, + 13.0911, 12.7368, 12.4903, 13.0944, 13.0545, 12.0753, 8.9618, 6.1436, 4.1205, 3.004, 2.5067, 2.1012, 1.7892, 1.0194, -0.5009, -2.7054, -4.3792, -5.7855, -7.3332, -7.6356, -6.8161, -6.3032, -6.7524, -8.6805, -9.1565, -8.9761, -9.6991, -10.228, -11.2374, -0.8915, -1.3351, -1.3279, -0.8507, -1.1734, -0.5889, -0.2953, 0.9333, 1.7331, 2.7464, 1.0499, -11.7092, + 20.5201, 20.0295, 17.9227, 15.1345, 11.8697, 8.3087, 5.1766, 3.006, 1.254, 0.4174, -0.172, -0.8532, -1.8929, -2.4981, -2.7278, -3.1121, -3.4982, -3.7976, -4.7868, -5.4073, -5.4391, -5.9033, -7.2898, -8.3095, -8.7395, -9.6577, -9.6812, -9.1534, -10.7197, -2.0265, -2.4422, -3.2898, -3.0803, -2.9851, -1.2856, 0.1567, 1.891, 3.3083, 5.0377, 4.7157, -9.9218, + 8.7254, 11.0045, 12.0666, 13.2121, 13.3296, 12.8324, 10.851, 7.8774, 5.4319, 2.5287, -0.0029, -1.8774, -3.6195, -5.042, -5.6921, -5.2354, -4.487, -3.3016, -2.0527, -2.1409, -3.9671, -5.5705, -6.5599, -6.6471, -6.1324, -6.7689, -8.5096, -9.9894, -10.2634, 3.4359, 2.7738, 2.8295, 2.9482, 1.6625, 0.8956, -0.0514, -1.5848, -1.4749, -2.2921, -9.1424, -14.2391, + 23.9657, 22.7269, 19.7344, 15.7159, 12.2183, 10.6582, 8.5153, 6.8034, 5.1757, 2.7658, 0.5046, -1.3116, -2.041, -1.6635, 0.4261, 3.7125, 3.3282, 0.1068, -4.3151, -7.4691, -8.1547, -7.8283, -7.2057, -10.8214, -15.3903, -17.5933, -17.6434, -16.8095, -18.1107, 1.5132, 0.3244, 0.0189, -0.7294, -1.1966, -0.6245, -0.5177, 0.2092, 1.03, 0.8494, -0.877, -19.8535, + 16.628, 15.7442, 12.731, 10.1009, 8.2897, 8.5577, 8.8444, 10.056, 10.305, 9.1696, 6.7854, 3.8917, 0.3608, -3.0307, -5.8666, -7.1637, -6.5677, -5.6155, -5.1575, -4.9714, -6.5135, -7.7608, -7.9326, -8.4341, -8.5905, -8.717, -10.2926, -12.2908, -12.5593, 4.2267, 2.1595, 0.5102, -1.382, -1.1131, -0.0305, -0.5306, -0.0216, -0.2857, -0.0746, -3.4583, -17.0769, + 13.6209, 12.7507, 12.8553, 14.2468, 15.9471, 14.0699, 8.8461, 3.2261, -1.1845, -3.9187, -5.7488, -7.4173, -8.8555, -9.2473, -8.9917, -6.5605, -1.7283, 2.9838, 3.3778, -0.7316, -2.7883, -0.8816, 0.0532, -4.9902, -8.7894, -10.3247, -7.5806, -5.9415, -6.2971, 14.656, 9.593, 3.1821, -1.9796, -0.7713, -2.07, -4.1354, -3.8071, -3.636, -4.5115, -6.5203, -23.1275, + 23.4988, 25.5182, 26.1443, 25.6216, 23.429, 19.3707, 13.905, 7.5166, 1.8256, -2.4154, -5.4517, -7.7013, -9.8647, -11.2215, -12.6184, -14.4069, -15.4023, -15.6232, -14.8399, -14.567, -14.519, -13.7907, -10.6309, -3.489, 1.4794, 1.635, -2.2134, -1.66, 0.471, 10.9708, 10.5205, 11.2036, 9.2796, 5.4146, -1.1911, -4.4466, -8.0856, -10.7515, -10.9044, -12.0101, -11.4961, + -0.5898, -1.0967, -1.1205, -1.0443, -1.2431, -3.0645, -6.3248, -9.1338, -11.1628, -12.4243, -13.5982, -14.0819, -13.6551, -13.9519, -12.0462, -9.7393, -6.5133, -1.4737, 1.3159, 2.742, 3.1032, 9.2423, 13.5689, 17.8419, 17.0272, 18.0312, 18.1676, 16.34, 14.8841, 4.5894, 3.407, 3.1758, 1.7888, 1.6163, 0.3158, 0.2364, -0.4657, -1.0093, -2.6399, -11.0146, 8.1604, + 13.0299, 12.0907, 11.0575, 11.898, 14.1078, 15.4469, 13.8192, 9.6452, 5.0678, 1.5872, -1.0858, -3.3552, -4.4488, -5.1355, -3.8141, 0.5493, 5.0898, 4.4313, -0.414, -3.7603, -4.7684, -3.669, -4.362, -10.8698, -15.5016, -18.468, -18.1605, -12.2966, -7.7111, 13.7174, 7.2067, 0.5178, -3.0887, -2.4521, -1.3997, -1.4244, -0.6539, -2.051, -3.7269, -6.6452, -24.084, + 20.2958, 22.7253, 24.1108, 25.8434, 27.1854, 26.7629, 24.301, 22.1308, 21.1525, 19.6181, 13.7675, 5.3826, -2.8225, -8.7282, -12.7146, -14.6989, -16.2675, -17.4195, -18.1391, -18.1287, -17.6301, -15.6767, -15.3188, -16.1464, -16.5053, -15.5852, -16.0162, -15.5577, -15.9205, 1.1396, 0.2956, 0.2622, -0.146, -0.2889, 0.0275, 0.0598, -0.0862, -0.0115, -0.3351, -0.9169, -18.8932, + 21.5882, 22.6633, 22.5911, 21.7567, 19.8871, 16.4681, 11.6127, 6.5703, 2.578, -0.4539, -2.9597, -5.4269, -8.0935, -10.3291, -11.8474, -12.0219, -10.4753, -7.1877, -2.9765, -0.5555, -2.4316, -6.5984, -7.4329, -5.2211, -3.7364, -8.4581, -13.117, -14.2101, -12.1825, 9.2042, 6.8442, 4.1847, 1.6315, -1.3411, -3.276, -3.4037, -3.4563, -3.6074, -2.1629, -4.6172, -19.8953, + 10.6094, 9.956, 8.4942, 8.0886, 9.3761, 11.3323, 13.7662, 16.0947, 16.8139, 12.1179, 6.8094, 2.767, 1.8054, 3.1768, 7.3289, 5.1766, -2.2376, -6.9741, -8.5553, -10.5642, -11.2643, -7.7672, -9.8975, -14.2107, -19.646, -19.4783, -14.0319, -7.9045, -11.1818, -5.2324, -8.464, 2.9045, 12.886, 11.9777, 10.5541, 7.9613, -4.2589, -8.3955, -8.1996, -11.7332, -19.6994, + 5.5041, 5.3222, 5.1942, 5.546, 6.9576, 8.9054, 10.4828, 11.034, 9.8032, 6.8135, 3.3656, -0.1277, -3.596, -5.7793, -6.2939, -4.2863, -0.0268, 4.572, 4.4361, 0.4802, -3.4351, -5.2809, -4.4513, -2.2637, -4.765, -9.6486, -13.3377, -14.7275, -10.3971, 17.8073, 13.8296, 10.4356, 9.0219, 2.4512, -5.9813, -10.1712, -10.716, -9.7016, -7.6983, -9.2773, -25.0775, + 16.3656, 18.4878, 18.9993, 18.9918, 18.4816, 16.9653, 13.5777, 9.3381, 5.1691, 1.7384, -1.9039, -5.4804, -8.83, -11.9448, -15.0434, -16.8969, -17.167, -15.0995, -10.9516, -5.3056, 1.0232, 3.6264, 1.1957, 1.1028, 1.6644, -3.8335, -10.3741, -12.278, -11.6184, 10.0963, 5.3648, 2.5424, 2.471, -0.7901, -3.2113, -3.7043, -3.1, -2.4933, -1.9709, -5.2046, -20.9631, + 17.8837, 18.4715, 18.4874, 18.4556, 18.3711, 17.499, 15.0865, 11.4049, 7.8551, 5.655, 5.2257, 5.9267, 6.7868, 6.4202, 3.6161, -0.83, -5.6377, -9.6817, -12.6005, -14.4203, -15.5246, -15.5077, -13.4622, -11.2201, -12.0997, -15.712, -18.3392, -17.8512, -14.2586, 8.3898, 6.8733, 5.8658, 4.5307, 0.2802, -3.1226, -4.8018, -4.8634, -4.4593, -3.4916, -5.2013, -22.21, + -3.1319, -2.9567, -3.5158, -3.6542, -3.9792, -4.569, -4.2861, -2.5541, -2.2464, -1.9153, -2.4682, -3.1479, -3.0568, -4.8839, -4.5795, -5.39, -5.0456, -3.5545, -1.3265, 0.8505, 3.0174, 4.7498, 6.6168, 8.1567, 6.6236, 7.6792, 9.3003, 9.8713, 9.3959, -10.5735, -12.5116, -14.0639, -7.5471, -1.304, 2.4789, 5.3713, 7.7962, 9.4623, 10.2101, 10.6812, 18.1437, + 21.9881, 22.0268, 21.418, 21.0501, 19.7092, 16.8902, 12.8939, 9.2408, 6.1523, 3.8245, 2.5628, 1.6418, 0.828, 0.3977, 0.2944, 0.9841, 0.5033, -2.6922, -7.8516, -11.9595, -14.1961, -14.2907, -11.4202, -8.4658, -10.2796, -16.2385, -20.8415, -22.5979, -21.5723, 2.4756, 1.959, 0.8663, 0.5639, -0.3186, -0.6196, -0.7514, -0.8893, -0.926, -0.411, -1.9489, -22.2015, + 13.6868, 14.9404, 15.1, 15.5585, 16.0353, 14.4054, 10.2425, 6.216, 2.6004, 0.014, -1.093, -1.9058, -2.2147, -3.1008, -3.0478, -1.9164, -0.2033, 1.1951, -1.7083, -5.1393, -7.0402, -8.4745, -8.2053, -8.7459, -9.3367, -10.365, -11.228, -12.609, -13.6605, -1.5164, -1.7406, -1.1213, -1.2392, -0.3054, 0.1166, 1.2891, 0.806, 2.8591, 2.2703, -1.4183, -13.8822, + 24.2507, 21.6076, 17.0141, 11.8925, 7.3451, 3.9013, 1.1114, -0.6837, -1.7199, -1.9483, -2.6719, -3.0002, -3.6624, -4.0397, -4.0608, -4.1225, -3.981, -4.1129, -4.5653, -4.8917, -4.8071, -4.8794, -4.6353, -4.2726, -4.735, -4.9508, -5.2264, -5.1675, -4.9885, -5.7398, -5.9757, -5.9417, -4.9603, -3.1354, -0.5548, 2.3754, 4.4296, 5.8362, 7.1375, 6.5291, -0.9148, + 17.2631, 17.8371, 17.1292, 16.2736, 14.9354, 14.1976, 13.0153, 12.0657, 10.4316, 7.4938, 4.2444, 1.4828, -0.6872, -3.7746, -5.5994, -5.3343, -3.0025, -0.6389, -0.055, -2.7128, -6.5932, -9.9814, -10.8426, -10.0857, -9.6056, -13.2586, -18.8699, -22.5792, -22.7486, -0.7483, -1.0121, -2.2299, -2.0299, -0.7415, -0.0212, 1.8597, 2.903, 2.7112, 2.3661, -3.0572, -22.3309, + -11.1995, -10.693, -9.1942, -8.1742, -7.6079, -6.5119, -6.9193, -7.1422, -7.9717, -7.7574, -7.1013, -6.4983, -6.0445, -5.1389, -3.0175, -0.5052, 2.9571, 5.6253, 7.3169, 6.5738, 7.6017, 10.0073, 10.6429, 11.476, 11.4863, 10.6648, 9.4863, 8.0975, 9.5413, 3.3127, 3.2227, 3.8144, 3.7156, 4.3089, 2.3578, 0.7872, -1.2526, -2.7715, -4.3321, -13.1631, 5.2507, + 17.1783, 16.8887, 14.7421, 11.8348, 8.0205, 3.2499, -1.9129, -6.6225, -10.9397, -13.6517, -14.723, -16.1104, -18.1604, -17.7193, -17.2055, -15.5458, -13.1652, -9.9983, -5.1836, -1.0331, 1.9889, 4.4501, 8.5649, 11.1613, 14.3782, 14.8611, 11.2164, 10.3416, 13.0949, 7.1449, 3.2853, 6.0619, 4.3926, 2.9056, -0.2214, -2.0011, -1.6095, -2.237, -3.8553, -13.8661, 1.4609, + 10.6486, 10.4669, 9.1585, 9.0007, 10.2209, 13.1112, 15.2667, 14.3795, 11.1262, 6.6047, 3.1822, -0.1678, -2.0727, -1.3024, 2.42, 5.9038, 2.7803, -3.182, -6.2303, -8.685, -9.4777, -6.1465, -4.6662, -9.5877, -14.2877, -18.3825, -17.6042, -13.824, -8.6536, 4.3381, -2.0474, -4.0413, 0.7437, 4.3435, 8.027, 4.8604, 0.4728, -3.1556, -4.1581, -9.3831, -21.0994, + 4.5339, 3.018, 1.159, -1.8077, -3.7376, -3.2592, -4.8664, -9.0451, -10.5616, -11.0424, -11.0656, -11.1375, -9.1571, -8.9187, -5.487, -3.7659, -1.1875, -3.3535, 6.862, 12.8048, 15.213, 16.4198, 9.1571, 6.4605, 6.304, 10.6463, -0.7014, -3.2795, 9.7951, 11.6354, 5.742, 6.8106, 9.3406, 9.2914, 6.7851, 13.375, 12.321, -24.4316, -25.4838, -25.3856, -1.3255, + 6.4369, 5.6614, 4.5505, 3.277, 2.0132, 1.6324, -0.2278, -1.7054, -2.5408, -2.944, -2.5595, -3.6388, -4.3998, -3.8497, -2.46, -0.6672, 0.4797, -0.4954, -0.1361, -0.3178, -0.0794, 0.9249, 1.391, 0.569, 0.3416, 1.0916, 0.5145, 1.1248, -3.9866, 15.2047, 12.434, 6.7379, -7.0628, -9.2462, -7.3526, -5.253, -3.4204, -1.8366, -0.0754, -0.1298, -20.8819, + 13.5404, 15.5222, 16.2893, 16.887, 17.0524, 17.1327, 14.7572, 10.872, 6.784, 2.54, -0.5888, -3.3697, -5.4657, -6.7879, -7.7962, -7.6553, -7.4342, -6.9197, -6.9455, -6.3541, -6.7461, -7.4159, -7.7579, -8.3178, -7.4289, -7.3424, -8.2132, -8.9949, -9.843, 0.3453, -0.2701, -0.5525, 0.0397, 0.0597, 0.2448, 0.8902, 1.5587, 1.2101, 0.8399, -4.3658, -12.2454, + 24.5559, 23.413, 20.6408, 17.3808, 14.416, 11.8493, 9.6532, 8.6801, 7.2117, 5.4621, 3.0668, 0.223, -2.112, -4.3454, -5.0915, -4.2332, -0.9253, -0.0786, -2.2834, -6.2673, -9.6185, -12.226, -14.2603, -13.3716, -11.5386, -12.2997, -15.1963, -16.5699, -16.1351, 4.5303, 3.2491, 1.5538, 0.2521, -0.8115, -1.5855, -1.5263, -1.3266, -0.9651, -0.7138, -2.6565, -20.2257, + 8.1022, 9.7899, 9.7931, 9.7477, 9.2987, 8.7666, 6.9904, 5.329, 3.0336, 1.6204, 0.386, -1.2415, -2.468, -4.1707, -5.1485, -6.7003, -7.657, -8.3503, -8.5552, -8.8991, -9.0059, -8.7857, -7.078, -4.545, -2.6069, 0.6288, 2.8467, 3.7676, 5.1114, 3.4695, 4.5378, 3.2083, 2.5145, 1.3409, -1.3752, -0.8674, -0.472, -1.0186, -1.5059, -9.8318, 0.0727, + 14.4586, 14.2733, 13.1879, 11.9606, 10.2045, 9.3636, 9.6651, 11.0114, 12.1122, 12.3036, 11.028, 8.7772, 5.9733, 2.4672, 0.3102, 0.0747, 1.2366, 0.9815, -2.8016, -7.9803, -12.3829, -14.765, -15.7924, -13.6058, -11.0614, -13.0621, -17.8806, -20.1354, -19.922, 5.074, 2.9263, -0.3365, -1.5294, -1.0384, -0.437, -0.2758, -0.3204, -0.0653, -0.0869, -3.9105, -24.588, + 16.8931, 17.8847, 18.3283, 18.5232, 18.199, 16.7506, 13.533, 8.8264, 3.6715, -0.1991, -2.2432, -3.329, -3.3054, -2.6748, -0.669, 2.7103, 4.8565, 3.5571, -0.4645, -5.0037, -8.7773, -10.0343, -10.0215, -10.2618, -11.9582, -16.0391, -19.8259, -20.4865, -18.4405, 4.2237, 7.7521, 9.4271, 7.7776, 3.2089, -1.3047, -4.371, -6.1258, -6.624, -6.4665, -7.4973, -21.6119, + 26.2407, 26.8595, 25.5084, 23.5987, 20.6139, 16.2421, 10.9416, 5.9994, 2.3434, -0.3767, -2.7912, -5.3898, -7.9202, -9.5689, -11.3407, -12.1566, -12.5654, -12.0723, -10.0537, -6.9972, -3.0971, -1.8157, -4.5501, -5.7844, -5.5235, -7.2936, -10.9909, -13.4932, -14.5663, 2.1561, 1.5321, 0.2818, -0.1633, -0.3426, -0.3136, 0.0161, -0.3898, 0.0287, -0.0952, -2.7103, -16.2994, + 18.3705, 19.3592, 20.1123, 19.1051, 15.6286, 9.5321, 3.0603, -1.6458, -4.5598, -6.3273, -7.5713, -8.4739, -9.3282, -10.3168, -10.7509, -9.103, -6.7703, -2.574, 3.3208, 6.7538, 4.2453, 2.974, 1.108, -3.3077, -7.0808, -9.7837, -9.6571, -8.2866, -8.0329, 10.1201, 5.6162, 1.7587, -0.9681, -1.7807, -2.3958, -2.4286, -1.6485, -1.8262, -1.9033, -4.544, -20.3964, + 13.2741, 15.4244, 17.0234, 18.2818, 19.5432, 18.9691, 14.9962, 9.1156, 3.6419, -0.2906, -3.157, -6.1768, -7.9818, -9.3506, -9.4656, -9.2507, -8.4602, -6.2085, -1.8201, 1.5162, 1.249, -0.0059, -1.8007, -4.5282, -8.6837, -12.6709, -15.3611, -15.4209, -12.4015, 7.815, 3.1728, 1.5432, 0.795, -0.5318, -1.2456, -1.5988, -1.7996, -2.1907, -2.0052, -3.9542, -22.2556, + 15.9184, 17.3622, 17.4678, 16.8842, 14.6841, 11.8317, 7.6477, 2.3173, -1.3712, -4.0441, -5.5323, -6.8296, -7.7101, -8.4121, -8.4766, -8.2702, -8.0827, -7.3742, -7.9359, -7.9155, -8.0671, -7.6939, -7.0166, -5.7862, -3.8811, -1.0122, 2.4703, 3.9838, 4.8441, 2.9188, 2.7328, 3.6011, 4.033, 4.2894, 1.6661, -1.5176, -1.7944, -2.1907, -2.2625, -11.4761, -0.6248, + 27.6543, 28.3344, 28.0974, 27.8652, 25.881, 21.2395, 14.9679, 8.7442, 3.5965, -1.0986, -5.8391, -9.7803, -12.4065, -13.0919, -11.4339, -7.2826, -2.4552, -0.6713, -3.1822, -8.1469, -9.6767, -9.4577, -8.9612, -11.2661, -13.6229, -15.3616, -15.2642, -14.0444, -13.3373, 2.3229, 0.95, 0.5581, 0.0389, -0.1161, 0.3407, -0.3396, -0.7413, -0.8075, -0.6566, -1.5496, -16.0531, + 14.7743, 15.871, 16.5584, 17.4275, 18.6438, 19.6359, 19.7934, 19.0788, 17.9177, 16.9057, 15.9073, 14.4531, 10.2026, 3.0567, -4.1665, -9.7579, -13.4361, -15.9678, -18.1928, -19.8105, -20.3101, -20.0861, -19.2226, -16.1803, -12.5817, -12.1735, -14.1311, -13.5138, -10.6954, 7.7639, 2.5429, 2.6941, 2.9367, 0.5893, -1.929, -2.8709, -3.1704, -3.0337, -2.2216, -3.3012, -22.819, + 12.7199, 12.8622, 12.1185, 10.3818, 7.6754, 5.4729, 4.0902, 2.5106, 1.3459, -0.1508, -1.059, -0.9743, -1.2979, -1.7207, -2.0981, -3.4023, -3.6088, -3.7334, -2.9611, -2.7071, -3.2507, -3.7314, -4.9032, -4.9793, -5.4541, -5.3634, -5.5199, -5.9327, -6.3294, 0.5719, 0.7629, 0.4111, 0.3851, 0.5406, 0.361, -0.6901, -0.4405, 0.2987, 0.0781, -2.2788, -7.7046, + 17.0925, 17.268, 16.3588, 15.6578, 15.5233, 15.868, 16.0037, 14.7721, 12.292, 8.7258, 4.3618, 0.2688, -3.5171, -6.9208, -9.2849, -8.9305, -6.2881, -2.6008, 0.0832, -0.7819, -3.3713, -5.1713, -4.904, -6.2218, -11.397, -17.6896, -21.9017, -23.4215, -21.8734, 3.1762, 2.3323, 1.1259, -0.1136, -0.6656, -1.1934, -1.1198, -0.332, -0.0039, -0.1887, -3.0174, -24.2388, + 17.2297, 15.6739, 13.0707, 10.1587, 7.8155, 7.3743, 6.0217, 4.4665, 3.0535, 2.6239, 2.2641, 1.967, 1.5434, 0.6206, -1.2673, -3.0579, -4.7912, -5.9248, -5.918, -6.122, -5.8687, -6.3517, -6.5968, -7.5677, -7.4916, -7.9499, -8.0977, -8.4791, -8.399, 1.8899, 2.2808, 2.6284, 2.1186, 1.2552, 0.2046, -0.3591, -0.6669, -1.5091, -1.4378, -6.4047, -11.8263, + 4.5933, 4.7596, 4.4438, 5.2453, 6.6446, 8.2821, 6.9832, 4.381, 1.1278, -1.5253, -1.8904, -2.1516, -3.4268, -5.4133, -6.8772, -7.1547, -5.3998, -2.6582, 1.2751, 2.0882, -0.7302, -4.1881, -5.1819, -2.1264, 0.8208, 0.5532, -1.8235, -1.5249, 0.8743, 5.3771, 4.5451, 4.0828, 5.1397, 3.7744, 0.358, -1.2512, -0.7183, -2.7542, -4.1142, -14.4391, -6.0204, + -2.2799, -1.768, -3.2413, -3.927, -2.7062, -1.0703, -1.335, -1.9824, -2.4957, -1.3919, -2.1103, -4.0545, -4.3911, -5.7784, -7.9812, -7.7496, -7.5943, -5.8788, -3.7846, -2.676, 2.8977, 4.842, 8.2162, 4.4328, 10.2839, 10.4092, 11.3489, 11.1069, 10.659, -9.8885, -12.0674, -13.7764, -6.7026, -2.8416, 2.6527, 5.34, 7.6116, 8.5217, 10.1675, 10.983, 18.5816, + 8.679, 8.1241, 7.9956, 9.001, 10.6051, 11.9336, 12.07, 10.4828, 7.604, 4.4092, 1.4213, -0.5435, -1.807, -2.2849, -1.1776, 2.4297, 6.7853, 8.4364, 6.3991, 4.5951, 1.7264, -5.9987, -12.0781, -16.538, -18.7068, -19.2937, -18.0295, -14.918, -11.3219, 9.6625, 7.9093, 9.1967, 5.7578, -1.0641, -5.1134, -6.0886, -5.4946, -5.3822, -2.7102, -6.6734, -25.9833, + 10.3657, 10.3631, 9.7058, 9.4298, 9.0617, 7.9822, 5.9655, 2.6688, -0.5238, -2.6855, -3.0614, -3.3624, -4.7739, -5.3797, -4.5954, -3.2382, -1.5077, -1.7236, -2.7671, -2.9653, -4.5764, -6.3959, -5.0542, -3.3922, -3.4383, -5.4556, -2.3727, -2.0655, 3.7923, -5.226, -22.0236, -1.5093, 6.4261, 7.5104, 7.6639, 4.2871, 1.2994, 0.5479, 5.7985, -4.7744, 7.7899, + 10.4446, 10.4588, 9.0587, 7.0901, 3.1501, -0.3318, -2.706, -4.6185, -5.7165, -6.2274, -5.5457, -6.1342, -6.9016, -7.4068, -6.2107, -3.8982, -1.1383, -1.7125, -3.1209, -2.5081, -2.3909, 0.2919, 4.6445, 2.6432, 2.6694, 4.3011, 3.5911, 6.8931, 1.3315, 21.797, 18.1696, 11.3834, -3.1623, -8.4098, -8.5693, -7.6899, -7.0385, -5.9998, -5.4794, -5.0009, -22.6316, + 17.2287, 17.7616, 17.8929, 19.2677, 20.817, 21.4764, 18.7667, 14.2036, 10.5122, 8.1941, 7.842, 9.4381, 10.7037, 7.2143, -0.2794, -6.1524, -10.8365, -13.8587, -16.1691, -17.3352, -17.228, -14.8106, -11.1914, -12.304, -16.0739, -18.1082, -16.4868, -14.5719, -15.9127, 2.3379, 0.5208, 0.3528, -0.1779, -0.65, -0.5172, -0.1244, -0.1086, 0.2128, -0.1577, -1.6885, -22.6503, + 18.5355, 20.4972, 20.185, 18.5749, 15.6167, 12.2745, 7.9486, 3.0171, -0.8357, -2.7695, -4.9, -6.7903, -8.0533, -9.4775, -9.7203, -10.0951, -9.496, -9.2581, -9.1995, -6.3741, -2.3905, 0.456, 1.0899, -0.4465, -1.4521, -2.6965, -6.3247, -8.5287, -9.3872, 0.7079, 0.5683, -0.4043, -0.7092, -0.1113, 1.5441, 2.4584, 1.8607, 0.7709, -0.1603, -6.5252, -13.3875, + 15.7485, 14.5502, 12.3547, 10.1884, 8.6909, 8.0435, 6.3074, 4.6065, 2.2122, -0.193, -1.2413, -2.4859, -3.7253, -4.0244, -2.8733, -1.95, -1.0559, -2.6557, -3.6275, -3.0937, -3.1904, -3.242, -3.8325, -6.0485, -6.6724, -6.1617, -7.5456, -8.3219, -10.7613, 9.0819, 5.6131, 0.9836, -3.3767, -5.113, -4.5161, -2.5844, -1.0875, -0.3335, 0.8807, 0.4519, -18.486, + 13.0658, 12.0977, 9.3051, 6.8101, 5.9796, 6.1211, 5.3037, 4.3634, 4.1469, 2.3546, 0.6265, -1.0456, -1.8168, -2.1623, -1.4037, -2.0812, -2.8168, -3.454, -4.9104, -5.6641, -6.1702, -5.2274, -3.5942, -3.4678, -3.4265, -4.9099, -5.1651, -6.2588, -6.5997, 3.1896, 2.3931, 3.5929, 2.5385, 1.8123, 0.7336, -0.3261, -0.9462, -1.535, -2.552, -8.9007, -9.6432, + 6.9128, 6.7304, 6.9243, 6.4631, 5.6472, 3.9796, 1.7898, -0.2489, -2.4436, -2.6508, -2.547, -2.8932, -3.7418, -4.0472, -3.7409, -4.1721, -4.5045, -2.5398, -1.2681, -2.2512, -4.0819, -2.5504, -0.5617, -0.8125, -6.3247, -16.4522, 5.3598, 10.4107, 13.6148, 2.9041, 3.9937, 4.1878, 3.1505, 2.3718, 2.0861, -0.7564, -2.898, -3.01, -1.1906, -10.8392, 7.899, + 15.3717, 14.4646, 14.0665, 15.2685, 17.889, 16.6173, 10.8299, 5.4591, 1.3248, -1.5112, -3.5105, -5.0396, -4.7139, -3.2327, 0.4893, 6.608, 9.2663, 7.1616, 4.6529, 0.9359, -6.9866, -12.7386, -15.0655, -16.3268, -15.5303, -12.5805, -11.4429, -13.9588, -17.7676, 4.4548, 2.5041, -0.5574, -1.9092, -1.6954, -0.798, -0.8178, 0.6929, 0.2455, 0.1742, -2.2936, -23.5972, + 15.1415, 17.2129, 18.5276, 20.2576, 22.0435, 22.941, 21.3301, 18.4906, 16.7921, 16.6351, 16.5489, 13.5214, 7.0026, -0.4264, -6.3907, -10.2154, -12.0432, -13.8717, -14.814, -14.5501, -12.6863, -11.2906, -14.4502, -19.325, -21.0242, -20.2029, -17.6079, -17.4052, -20.1409, -0.1152, 0.2933, 0.6422, 0.8539, 0.5304, -0.1244, -0.6918, -0.3401, -0.1677, 0.0292, -0.9099, -22.1229, + 16.3527, 16.4358, 14.5529, 11.7515, 8.0259, 5.7593, 4.7947, 5.2455, 6.9418, 9.3793, 10.6924, 9.9655, 9.0457, 8.3252, 8.4762, 6.3689, 3.4623, -0.5745, -4.6846, -8.568, -10.9887, -12.4636, -14.764, -14.5242, -15.3129, -17.5422, -18.4522, -18.6412, -19.0596, 4.6132, 1.4513, -0.0514, -0.1917, -0.3334, -0.137, -0.0439, -0.2954, -0.2393, -0.9118, -3.8606, -24.6234, + 3.0149, 3.3679, 2.0858, 1.6705, 1.6501, 2.5867, 1.6237, 0.5766, -1.332, -2.3047, -2.927, -3.0607, -3.6274, -5.2376, -5.7845, -5.3526, -3.5342, -1.1532, 1.814, 2.9895, 2.7465, 1.9285, 1.7068, 1.7703, 2.22, 1.9728, 0.2297, -1.0946, 1.4544, -2.0981, -1.6916, 0.235, 2.2065, 3.1538, 2.2516, 2.893, 1.2452, 0.2641, 0.7151, -9.1746, 0.1743, + 33.1383, 31.0792, 25.7434, 19.1612, 13.837, 10.1403, 5.0657, -0.9848, -4.0125, -3.8049, -1.4317, 2.9301, 4.0459, 0.1222, -5.3168, -8.1684, -10.0826, -10.8448, -10.2597, -10.3317, -9.4719, -5.7311, -3.3677, -4.7251, -6.396, -9.1268, -12.2844, -14.42, -14.5022, 2.606, 2.2289, 1.6967, 0.1399, -0.9831, -0.9608, -0.851, -1.0292, -0.7889, -0.5855, -1.473, -15.7149, + 27.2923, 26.1076, 23.8786, 21.313, 19.0418, 17.172, 15.5267, 14.4631, 14.0462, 13.507, 12.4676, 9.9142, 5.6853, 0.598, -4.4056, -8.3465, -10.4675, -12.5667, -14.3166, -15.5842, -15.4689, -15.0589, -15.5652, -16.495, -16.8464, -17.9497, -19.4354, -19.6539, -18.853, 1.2956, 0.1647, -0.0666, -0.5622, -1.0818, -1.0177, -0.6516, 0.0389, 0.9296, 1.4023, -0.4513, -20.2788, + 26.6766, 26.7374, 25.7566, 24.028, 20.4779, 14.6637, 7.833, 1.9621, -2.07, -4.7989, -7.3077, -9.0786, -9.622, -7.7331, -4.741, 0.1848, 4.407, 2.7266, -2.1973, -5.5028, -7.5677, -8.3692, -9.3827, -11.2185, -12.6814, -12.9582, -12.5667, -13.3838, -14.2742, 2.1312, 0.7483, 0.4117, -0.1309, -0.2886, -0.2604, -0.4816, 0.0583, -0.0383, -0.2744, -1.8754, -17.9569, + 3.3978, 4.4684, 4.2593, 3.9748, 2.4838, 0.6609, -2.0182, -4.4753, -6.9532, -7.4489, -7.9821, -8.8126, -7.7701, -6.4035, -3.2114, -0.1726, 4.0273, 6.9857, 8.4846, 6.351, 4.9727, 4.647, 4.6414, 3.6916, 1.9176, 0.3255, -2.6101, -3.475, -3.9565, 1.7533, 1.1049, 0.647, -0.2625, -0.1699, -0.7934, -1.0459, -1.6085, 0.7985, 2.6353, -3.0588, -6.3429, + 10.0599, 9.5448, 6.901, 4.3178, 2.5886, 1.5303, 0.1509, -1.0275, -2.6254, -2.8291, -3.0667, -3.4775, -4.4368, -5.1122, -6.2497, -6.7213, -5.2797, -3.88, -2.4109, -1.6128, -3.0693, -4.8056, -5.1575, -1.7918, 2.5625, 3.7623, 3.5521, 7.7141, 10.8696, 8.0651, 6.4772, 6.6051, 3.56, 1.8517, -0.5246, -1.7934, -2.7395, -3.6923, -4.3495, -13.4599, 0.6565, + 25.7569, 24.1232, 20.4182, 16.1881, 12.4409, 10.9425, 10.5212, 10.6127, 10.069, 8.9583, 6.8593, 5.3047, 4.2774, 2.9654, 1.7215, -0.5266, -3.2445, -6.9442, -10.3293, -12.7061, -14.021, -14.2363, -13.7968, -14.0351, -15.0354, -15.6847, -16.5621, -16.6992, -17.3378, 1.2536, 0.3575, 0.1415, -0.1561, -0.1699, -0.6288, -0.437, 0.0255, 0.2138, 0.5498, -1.1499, -20.2166, + 0.0231, -0.9014, -1.8167, -1.2335, -0.9356, 0.1659, 0.0099, -0.3194, -1.2785, -1.6159, -0.9934, -0.9581, -1.828, -2.2803, -1.6717, -0.1281, -0.6227, 0.0211, -0.2651, -0.5372, -0.9352, -1.0325, 0.2653, -0.4461, 0.6598, 1.585, 4.5525, 6.2731, 6.2437, 6.2289, 7.1906, 6.8806, 4.1911, 2.5668, 0.0429, -1.5955, -2.8462, -4.6688, -4.0492, -13.9413, -0.0713, + 7.9284, 9.1572, 9.8203, 10.6262, 11.7687, 13.2204, 14.0222, 13.2111, 10.5107, 6.8116, 3.6111, 0.4955, -2.3899, -5.1121, -6.5572, -6.6556, -5.2199, -2.9231, -0.5211, -0.857, -4.748, -9.1464, -11.8191, -10.7137, -6.0224, -4.822, -8.063, -12.3598, -13.2532, 13.1773, 12.7484, 9.6243, 5.0688, -0.9409, -6.7845, -7.3453, -6.4726, -6.1985, -4.8683, -8.0086, -24.4428, + 20.659, 19.3955, 16.2834, 13.6379, 12.4445, 12.1295, 10.9807, 10.1646, 10.4918, 11.3802, 11.3612, 11.2354, 10.6339, 6.7227, 1.1138, -3.7021, -6.4288, -7.959, -9.976, -11.0475, -13.1574, -15.9863, -18.1733, -17.6149, -16.1809, -16.3342, -15.4709, -13.2473, -13.3553, 6.4606, 2.2334, 0.0904, -1.0983, -1.1535, -1.871, -1.3953, -0.4539, -0.1442, 0.1951, -2.8632, -21.9027, + 11.5076, 12.066, 12.717, 14.7721, 15.3221, 13.0928, 8.0689, 3.5812, 1.5428, 1.239, 0.9197, -0.0146, -2.1654, -5.8495, -7.9985, -6.4957, -1.4612, 4.6035, 5.2013, 1.9497, -2.2153, -5.558, -2.2714, -3.5929, -8.3748, -16.9482, -17.692, -14.1565, -11.7896, -0.1089, 2.8427, 6.389, 4.636, 3.9712, 2.8762, -3.4553, 0.8911, -3.1126, -3.8817, -11.0478, -18.2605, + 9.1012, 8.2983, 7.709, 8.2796, 9.717, 11.3893, 12.9622, 12.4812, 9.4717, 5.4783, 2.6937, 2.0314, 2.3476, 3.7201, 7.2459, 7.9823, 4.2063, -1.0767, -4.4784, -6.7559, -4.5456, -4.6976, -8.2963, -18.7549, -25.0006, -24.3482, -13.5441, -8.7468, -4.87, 9.4162, -0.0518, -5.6394, -1.8175, 2.846, 5.7461, 4.9827, 2.5039, -4.5892, -5.3372, -8.0598, -24.0108, + 25.3914, 22.4719, 18.4847, 14.1484, 9.8827, 6.3827, 3.7424, 2.3869, 2.0026, 2.1806, 2.2067, 2.4594, 2.5334, 2.7925, 2.7285, 2.5917, 0.9336, -1.3314, -3.7507, -6.3146, -9.9633, -12.2523, -11.7329, -10.5539, -10.5613, -12.897, -14.8061, -16.0931, -13.0635, 9.4907, 8.6133, 6.9669, 5.2967, 0.8483, -2.8965, -3.7224, -5.4526, -6.1034, -5.5404, -7.5006, -19.2567, + 14.7633, 21.0347, 26.5178, 28.8557, 23.366, 14.8939, 7.8472, 4.1479, 1.6451, 0.194, -1.0241, -1.71, -2.7839, -5.4888, -5.8766, -6.7065, -6.5101, -6.3172, -7.4748, -8.1349, -8.6673, -9.2054, -8.7696, -9.2949, -9.5243, -9.8586, -10.6206, -12.3755, -12.9225, 0.5464, 0.3011, -0.4717, -0.8221, -0.5981, -0.7596, -0.1787, 0.0888, 0.268, 1.7014, -0.0756, -13.4143, + 14.5722, 15.9781, 17.0264, 17.6175, 17.4232, 16.5459, 14.6151, 11.6122, 8.3872, 5.7241, 3.1297, 0.7916, -1.8948, -4.6319, -7.4829, -9.0432, -9.8372, -10.2623, -9.8461, -8.3463, -7.1311, -7.5141, -8.8925, -9.9645, -10.0906, -8.0182, -7.1753, -10.4665, -12.8258, 7.5756, 9.5196, 10.3723, 8.1609, 3.493, -3.1717, -6.1605, -6.9929, -7.1805, -6.8863, -8.7297, -20.7652, + 37.2037, 35.8111, 32.3205, 28.0474, 23.2802, 17.7045, 11.6084, 5.8427, 0.267, -3.7432, -6.2669, -8.1167, -9.3928, -10.1312, -10.3467, -10.0877, -9.5979, -9.7744, -10.3207, -10.6331, -9.9469, -8.6203, -8.3585, -9.6074, -10.8446, -11.5167, -11.7789, -11.6363, -11.3647, 0.3839, 0.1181, -0.0142, -0.2099, -0.2835, 0.155, -0.034, 0.1033, 0.0295, 0.1568, -0.4049, -11.8075, + 25.2715, 25.9731, 25.5019, 24.4387, 22.0168, 17.9875, 12.8839, 8.1186, 4.0883, 0.9493, -1.832, -4.9719, -7.8984, -10.8034, -12.5203, -12.4959, -10.7116, -8.3345, -4.1201, -0.1578, 0.1929, 0.1873, -2.8273, -8.7555, -14.7009, -17.595, -18.3997, -17.0685, -14.4171, 1.9066, 0.3797, 0.2936, 0.7746, -0.4377, -0.094, 0.1464, -0.0351, 0.2602, -0.8075, -2.3869, -18.3683, + -1.7829, -2.9115, -3.3197, -3.0219, -3.0103, -2.1963, -1.8274, -1.5453, -1.3834, -0.5971, -0.1822, -0.0707, -0.4004, -0.4751, 0.5738, 0.6319, 1.4145, 1.0927, 1.3496, 1.6238, 1.3746, 1.5109, 1.6452, 1.4227, 2.6607, 1.9921, 2.0933, 1.3984, 1.9401, -5.1733, -5.1451, -4.0887, -4.3334, -2.3485, -1.275, 1.8849, 3.8802, 5.4984, 6.3884, 4.712, 5.8699, + 3.0884, 3.6195, 4.4987, 5.4241, 5.9234, 4.3151, 1.2318, -2.0672, -4.856, -6.7176, -7.7263, -9.2051, -9.8093, -9.8027, -9.8649, -7.58, -3.5471, 1.2395, 3.8333, 2.452, -0.138, -0.1169, 2.7696, 4.2835, 3.0029, 2.8349, 6.1975, 8.555, 8.1619, 3.4262, 3.7255, 2.9723, 1.5679, 0.6856, 0.7789, 0.0324, -0.04, -1.093, -1.5814, -10.4745, 2.5083, + 7.7805, 8.5455, 8.0969, 7.418, 6.0322, 4.2643, 0.7072, -3.9008, -6.6106, -8.5279, -9.9913, -12.2197, -13.9875, -14.6194, -13.4585, -8.5866, -0.141, 5.8556, 2.7328, -4.3868, -7.6497, 1.0307, 6.7604, 2.0849, -2.0565, 4.3945, 7.6154, 14.5442, 18.2732, 15.9793, 12.4675, 8.6361, 9.3177, 7.162, -0.437, -7.8068, -13.596, -11.2218, -10.5975, -9.9034, -5.2521, + 15.1743, 16.3078, 16.6845, 19.2037, 24.9642, 26.0482, 22.2299, 20.1754, 18.1609, 11.9813, 3.3906, -4.1269, -9.8102, -12.4054, -13.1972, -14.9771, -15.2101, -17.035, -17.5402, -17.273, -16.8388, -14.0848, -9.7661, -6.4551, -6.0572, -3.5105, -0.1292, -3.2831, -12.6212, 2.675, 0.5089, 0.394, -0.3851, -0.0012, -0.1207, -0.3792, 0.6121, -0.3176, -1.0554, -1.9307, -19.7041, + 31.556, 30.0892, 27.2291, 23.5683, 19.0546, 13.2491, 7.4257, 2.9756, 1.0209, 1.0243, 1.37, 0.6757, -1.0362, -3.4535, -5.1118, -5.5508, -4.6428, -3.9233, -3.2906, -5.2994, -8.4124, -11.6578, -14.3387, -15.5177, -14.9184, -14.036, -14.9127, -16.4768, -16.6595, 1.6433, 1.397, 1.0165, 0.631, -0.0752, -0.3736, -0.503, -0.708, -0.7791, -0.4687, -1.7802, -17.0148, + 10.1749, 8.8485, 5.1795, 4.5617, 6.0171, 6.4829, 4.3672, 1.6019, -1.645, -2.9876, -3.6524, -3.2008, -2.3296, -2.1644, -0.9768, 0.4251, 1.9391, 3.4981, 4.6467, 4.5048, 2.1218, -0.3094, -2.3029, -5.762, -6.5009, -7.7314, -8.789, -8.6982, -7.319, -8.3023, -3.9045, 0.7597, 3.5083, 5.647, 8.438, 8.927, 8.157, 4.5045, 0.2453, -27.9802, 0.6878, + -2.6861, 19.2221, 33.978, 25.1761, 5.3276, 0.9553, 6.0941, 10.8857, -5.1659, -6.6908, 10.287, 5.5719, -7.7825, 0.7662, -3.2785, -9.7089, 2.1449, -8.495, -0.8482, -8.2638, -3.5649, -9.0557, -5.193, -8.2034, -6.3047, -4.3602, -8.0851, -11.0228, -11.6996, 3.2339, 2.5869, 1.5692, 0.5614, -0.4616, -0.6459, -1.3729, -1.3736, -1.2425, -0.6779, -2.177, -11.9897, + 7.7287, 10.4343, 12.3692, 13.9892, 14.6808, 14.5459, 13.0629, 9.866, 5.8851, 1.8545, -0.9409, -3.2758, -5.5305, -7.8527, -9.4747, -10.4586, -10.7336, -9.8759, -8.2611, -5.1685, -1.7008, 0.1176, -2.2902, -4.5858, -4.0962, -2.2, -2.3668, -6.9728, -8.7495, 13.3085, 14.0301, 12.5973, 11.0446, 6.5436, -2.6637, -9.4551, -11.0645, -11.2845, -10.7446, -12.3117, -20.4326, + 10.736, 10.3386, 8.2768, 6.4632, 4.7302, 3.0267, 0.5796, 0.112, 1.9363, 5.0018, 8.3004, 9.8879, 8.2713, 4.5555, 2.8097, 1.8606, 2.8946, 3.7421, 5.297, 1.2683, -4.7378, -8.7201, -12.8564, -12.496, -9.6753, -7.5251, -10.0781, -16.3686, -17.6314, 11.3379, 8.1471, 4.3411, 2.5211, 1.4007, -1.3607, -3.3014, -4.3151, -5.9538, -5.2614, -7.5554, -24.6877, + 15.8329, 15.515, 15.4055, 16.5837, 18.1854, 17.6604, 13.6126, 8.4914, 4.4891, 2.4328, 0.8814, 0.778, 2.695, 5.3091, 6.6587, 3.8545, -1.3529, -6.1324, -10.5147, -12.4571, -13.5735, -11.0746, -7.2535, -11.2844, -17.2383, -20.4683, -17.4107, -10.9397, -8.6853, 6.2333, 2.1814, 0.232, -2.1897, -2.6025, -1.7475, 0.3359, 2.9117, 0.0927, -0.1075, -5.3398, -21.1984, + 7.6562, 6.587, 4.6968, 5.126, 9.8218, 14.9709, 16.085, 11.5684, 4.7265, -0.2176, -2.9979, -6.0694, -8.2544, -9.495, -8.0755, -5.7955, -0.4807, 4.7296, 3.3026, -0.0914, -2.8102, -1.2809, -0.3393, -3.3149, -5.6215, -8.5469, -6.678, -7.897, -11.3047, 12.3298, 6.3356, 1.6165, -2.5162, -1.6392, -1.6454, -1.7173, -2.3908, -2.4175, -3.1101, -4.8454, -23.7397, + 4.9452, 5.0593, 3.8655, 4.302, 7.6977, 11.2424, 13.0502, 11.2196, 6.9219, 2.6857, 0.2056, -1.5076, -2.7845, -3.1104, -0.8091, 1.9648, 6.1634, 5.4049, 1.224, 0.3494, -1.5074, -1.8246, -3.5432, -4.5137, -4.3268, -8.6129, -12.2904, -18.8599, -22.6111, 7.0748, 5.7565, 2.9123, -0.3591, -1.5206, -1.728, -1.8572, -1.6318, -2.3011, -2.3197, -4.0261, -26.4685, + 6.064, 7.2189, 7.3048, 8.3637, 9.316, 10.4746, 10.1941, 8.3124, 5.0444, 1.9281, -0.2645, -1.4345, -2.125, -2.621, -3.0015, -2.7992, -2.6148, -2.9666, -3.0696, -3.8743, -4.5941, -4.898, -5.682, -5.7978, -5.5722, -5.1973, -5.4147, -6.4176, -5.8765, -6.4521, -7.2215, -4.2413, -2.7669, -0.8266, 1.9295, 3.3149, 5.244, 5.9014, 6.7572, -1.6387, -0.2567, + 5.2371, 4.8863, 3.31, 2.1337, 3.1492, 5.6939, 8.7998, 11.5679, 12.8023, 11.4528, 9.0298, 8.9298, 10.6661, 11.0071, 6.4326, 0.2441, -4.1637, -7.7062, -9.8518, -10.2264, -9.582, -9.1951, -8.6992, -10.3299, -13.3858, -12.1048, -8.3569, -6.0495, -5.6913, 14.1502, 9.0286, 4.54, -1.001, -2.1523, -1.3098, -3.6803, -4.2446, -3.9915, -4.5409, -6.7984, -22.3276, + 1.1749, 2.9147, 3.84, 5.6634, 7.4575, 9.0125, 7.3532, 4.8392, 2.719, 0.871, -1.4481, -2.7601, -4.4452, -5.2662, -3.9827, -3.4617, -3.6219, -3.1639, 0.2716, 3.4947, 2.5863, 2.0483, 0.3695, -1.8223, -3.055, -5.56, -5.1761, -5.3683, -5.4841, 2.7668, 2.1577, 3.0912, 2.4351, 2.4455, 2.9457, 1.449, -1.5314, -2.866, -2.9647, -9.929, -9.9768, + 25.7146, 25.3619, 23.9564, 22.3568, 19.1718, 13.1052, 5.5763, -0.1008, -2.7575, -4.2993, -6.3232, -7.4184, -9.0999, -12.1658, -14.7424, -14.2269, -13.0082, -10.2417, -6.6055, -0.914, 1.6308, -1.8199, -3.8874, -1.8765, -3.1164, -7.7016, -9.3481, -4.282, -2.9383, 8.4368, 1.7117, -0.7722, -1.4926, -2.2285, -1.9674, -1.046, -0.6567, 0.1437, 0.9502, -3.079, -15.7527, + 10.7572, 9.4885, 7.7426, 6.5423, 6.0951, 6.6895, 8.5238, 11.1515, 12.9326, 13.0679, 11.3687, 8.6878, 5.8071, 4.2486, 4.2979, 5.1375, 3.6691, -0.4487, -5.794, -9.6188, -11.6687, -12.0791, -10.1837, -7.1986, -9.3267, -15.4942, -18.3956, -19.0668, -16.9329, 10.8057, 6.4011, 3.369, 1.5029, -0.9587, -2.8947, -3.7517, -3.2931, -2.8022, -2.8052, -5.5731, -27.3774, + 30.7504, 28.4951, 25.5185, 22.1742, 18.1099, 13.036, 7.7976, 3.5112, 0.1176, -2.6569, -5.1898, -7.4966, -10.1459, -13.1401, -15.8245, -17.097, -17.1868, -16.6198, -16.0292, -14.4009, -11.3257, -6.937, 0.011, 2.6766, 1.9106, 1.9904, 0.8448, -1.2215, -1.6723, 13.9837, 12.0732, 6.7883, 4.2122, -0.6419, -6.1564, -6.879, -7.3232, -5.7545, -3.2248, -7.0778, -13.8733, + 5.5235, 4.9142, 3.2141, 2.659, 2.9961, 4.2989, 2.3547, 0.5028, -0.826, -1.5841, -2.8526, -2.4476, -1.183, 1.5505, 2.5932, 1.4615, -0.955, -2.6992, -1.462, 0.7531, 3.9055, 4.2326, 1.8576, -1.8966, -2.2755, -5.1995, -7.0773, -7.5304, -4.8283, 8.7008, 8.7053, 7.0759, 3.5239, 0.2213, -0.4716, -2.9649, -4.4365, -3.897, -5.646, -10.8111, -11.0662, + 10.0683, 11.2576, 9.125, 5.5609, 2.1927, 2.3916, 0.5672, -0.6821, -1.7701, -2.4144, -2.1229, -2.5051, -3.0931, -3.4474, -3.5498, -4.6568, -4.0419, -2.9786, -1.6058, 0.2043, 0.2119, -0.9338, -2.1449, -1.59, -1.2476, -0.0367, -0.7467, -1.0002, -1.0118, -12.1871, -7.6015, -6.026, -2.6153, 1.8019, 5.1419, 7.0075, 7.4839, 6.3084, 5.7281, -5.0417, 11.1839, + 19.0914, 19.5418, 18.555, 17.3149, 15.8219, 14.6893, 12.7457, 11.1878, 8.8607, 6.1729, 3.1425, -0.6029, -5.0284, -9.2811, -12.4294, -13.9531, -12.8183, -10.2445, -6.0419, -0.7352, 0.9087, -2.2874, -5.6745, -5.3857, -4.8993, -8.6787, -14.4653, -17.3889, -18.1181, 2.0079, 2.3051, 0.155, -1.9709, -2.1518, -1.0518, -0.2981, 0.922, 1.4828, 1.7198, -3.1202, -19.8209, + 7.5768, 6.693, 5.4155, 4.9157, 5.4796, 5.747, 5.5734, 5.4561, 5.0927, 4.7098, 4.4827, 3.6618, 2.9817, 3.26, 4.2867, 6.6922, 8.7811, 7.7587, 3.8523, -0.1532, -4.4933, -6.9881, -8.1454, -8.949, -9.5267, -13.8968, -17.7691, -17.7758, -14.7195, 9.4196, 10.2634, 10.4478, 8.8124, 5.1507, 1.4872, -4.9411, -9.3928, -9.8991, -10.009, -11.3391, -24.4463, + 6.3112, 6.1145, 5.3668, 4.5313, 3.6954, 4.7877, 6.2658, 8.3789, 10.2936, 11.7688, 11.4084, 9.532, 6.981, 5.0657, 4.7615, 5.5904, 6.1808, 3.6441, -0.8606, -5.0517, -7.7101, -8.0207, -7.3867, -7.998, -11.4209, -15.6623, -18.321, -19.2583, -18.9878, 1.9218, -1.0898, -2.1315, -2.6064, -0.329, 1.3612, 2.7055, 3.4481, 2.127, 0.3937, -5.8006, -23.891, + 4.7133, 7.0828, 7.4451, 6.1536, 5.1026, 6.1735, 5.562, 4.7204, 2.3449, 0.0662, -0.0552, -1.4746, -1.3028, -2.0833, -2.3742, -3.0032, -1.8959, -3.1532, -2.7407, -2.7522, -3.1457, -4.1303, -3.0723, -3.0359, -3.2114, -2.1394, -2.2842, -3.9496, -3.5601, -9.5458, -8.5225, -2.1447, -3.0135, -13.5275, -8.701, 7.2088, 11.6588, 11.789, 11.7226, 3.0758, 6.7721, + 14.9989, 17.5318, 17.0021, 15.1799, 12.5029, 9.0797, 3.8559, 0.1428, -2.0371, -1.8983, 1.178, 2.723, 2.0463, 1.0309, 1.6621, 0.5141, -1.5732, -3.0527, -4.0016, -5.2671, -5.7073, -7.6154, -8.5918, -8.8827, -8.7941, -6.7438, -5.5924, -13.4525, -16.2384, -1.004, -2.5012, -0.5919, 1.0505, 3.9201, 5.2244, 4.5335, 2.9522, -3.9239, 1.3432, -11.0028, -13.759, + 23.3831, 23.986, 23.9088, 23.9899, 24.5442, 24.7231, 23.4676, 20.9361, 19.0352, 18.1315, 16.6484, 13.2407, 6.9323, -0.853, -7.8736, -12.542, -15.8304, -18.1801, -19.7679, -20.6937, -20.6499, -19.866, -18.7929, -17.4798, -16.8484, -17.7541, -18.9554, -19.1779, -17.6622, 2.2274, 0.2658, 0.2329, 0.5563, -0.2993, -0.6411, -0.8349, -0.8217, -0.3946, 0.3529, -0.6438, -20.4737, + 27.1582, 28.3012, 27.2357, 25.1547, 21.7324, 15.2318, 7.9956, 2.0196, -1.2674, -2.1412, -2.5552, -3.818, -5.536, -7.5787, -8.8477, -9.9856, -10.6186, -10.6812, -11.5427, -13.058, -14.018, -14.2114, -12.3911, -5.9856, -0.0551, 2.4393, -1.0062, -8.7488, -13.2219, 8.5421, 8.1274, 3.1062, 1.0714, -1.1957, -2.6079, -3.1237, -3.4444, -3.3713, -3.1296, -3.9745, -17.2997, + 0.2274, 1.5742, 0.903, -0.0755, -0.9929, -0.001, 0.9686, 1.1448, 0.4783, -0.3525, -0.1336, -0.1913, -1.6241, -4.5094, -5.8249, -5.384, -4.269, -0.9607, 3.2627, 5.8265, 5.0034, 2.6931, 1.4156, 0.6324, 1.3181, 1.5226, -0.7562, -0.2634, -1.6323, 10.1447, 8.1369, 6.9278, 1.8273, -2.8348, -3.1502, -3.8258, -3.2103, -3.0403, -2.8386, -8.1368, -10.7452, + 2.203, 2.3567, 2.277, 1.9391, 1.4807, 2.4535, 3.7369, 4.5955, 4.8497, 4.7689, 3.9314, 2.906, 0.5571, -2.275, -3.2233, -2.8254, -1.7099, 0.781, 3.0014, 3.5591, 0.5135, -3.7594, -6.0245, -4.9397, -2.1317, -1.108, -3.4783, -7.2902, -7.145, 17.4214, 15.9833, 12.556, 11.8901, 6.7955, -3.1206, -12.2737, -12.4585, -12.5086, -11.3448, -12.94, -23.4673, + 1.7001, 2.1276, 3.1509, 3.8711, 3.445, 3.9578, 3.9916, 2.2726, 1.586, 2.9582, 1.5039, -0.3172, -1.6934, 0.048, 1.7637, 5.8108, 12.7325, 15.4092, 10.2323, 1.637, -5.9209, -8.2841, -8.8154, -8.6341, -8.8994, -8.7332, -8.858, -9.426, -8.6166, 1.0902, -0.3804, -1.838, -2.1594, -2.0188, -0.5336, -0.2356, 0.9072, 1.9988, 2.4507, 0.7188, -11.1533, + 3.347, 4.2651, 3.1581, 1.5899, 1.3593, 5.4416, 9.6912, 10.3789, 8.2781, 5.7621, 2.3516, -1.6093, -4.6703, -4.3014, -2.0948, 1.2895, 4.5826, 5.8867, 2.758, -0.5921, -1.6254, -0.3408, -0.8297, -4.7115, -8.7548, -10.195, -9.4023, -10.1017, -10.9107, 5.4257, 1.3752, -1.6808, -1.6847, 0.0776, 4.2441, 3.7807, 1.7086, -1.1629, -3.5093, -8.5743, -19.3479, + 16.0698, 16.0234, 16.6242, 18.4265, 19.5793, 17.7359, 12.2454, 6.7061, 2.9279, 1.0254, 1.3081, 3.1537, 6.2322, 6.7809, 1.2833, -4.6315, -8.4988, -10.9702, -12.9812, -12.8617, -10.8763, -6.7933, -7.5585, -12.211, -13.1807, -11.6979, -8.6529, -10.8315, -14.3767, 3.5106, 2.2779, 0.8347, -0.4316, 0.4812, -0.3548, -0.958, -0.3001, -0.9639, -1.0077, -3.0884, -21.7124, + 14.8614, 14.3243, 13.2597, 11.9042, 11.3617, 12.9241, 16.0023, 18.6135, 19.9112, 18.7801, 18.0215, 16.7944, 15.059, 9.5509, 2.2373, -3.7737, -7.9433, -11.6438, -15.8775, -19.0534, -20.0063, -19.8849, -17.4072, -14.6677, -14.9214, -15.6185, -17.3399, -17.4032, -18.065, 0.4331, -1.3874, -1.3387, -1.2657, 0.1397, 0.9913, 1.3715, 1.5636, 0.9626, 0.3031, -1.7729, -22.491, + 24.4358, 25.1322, 25.6771, 26.9458, 25.4271, 20.1741, 13.1848, 7.1606, 2.9511, -1.5207, -6.2228, -9.1615, -10.2139, -7.9615, -3.5511, 0.8947, -0.064, -5.6909, -11.888, -15.0418, -13.4238, -8.6724, -10.1392, -15.6141, -16.4146, -15.3775, -9.3359, -5.8457, -5.844, 5.367, 0.7714, -1.2803, -0.3316, 0.0917, 1.3247, -0.3166, -0.6629, -0.4726, -0.9886, -3.5022, -15.8979, + 11.2574, 14.5322, 17.177, 19.437, 21.2176, 22.024, 20.3915, 16.7178, 12.6022, 9.4053, 7.3741, 6.1361, 6.443, 7.2023, 6.6378, 2.8391, -3.5908, -9.035, -12.7524, -16.0348, -18.3668, -20.0831, -20.1715, -19.0743, -16.0476, -13.945, -16.7267, -18.3902, -17.1759, 6.7669, 3.5601, 1.4726, 1.2131, 0.8001, -1.0515, -1.7968, -2.1212, -2.4567, -2.6039, -3.7828, -21.2313, + 9.8296, 10.9668, 11.4657, 12.4379, 13.8874, 14.6363, 14.3342, 12.4038, 8.9235, 5.049, 2.1177, -0.5223, -2.7832, -4.1482, -4.6107, -3.0828, -0.2052, 2.3942, 2.4641, -1.9911, -6.8813, -9.3285, -9.5593, -6.0838, -4.8651, -9.6703, -15.7893, -21.0597, -20.3293, 7.8335, 9.3572, 8.2255, 6.2992, 3.6571, -1.3039, -4.8523, -6.7448, -6.9973, -6.7242, -8.7501, -23.8675, + 10.0961, 10.4449, 9.9127, 8.5711, 6.218, 4.5618, 2.4521, 1.111, -0.1627, -0.3653, 0.8918, 1.6279, 1.8907, 0.7438, -0.7728, -1.2107, -1.2055, -1.5566, -3.2793, -4.1807, -4.1312, -5.1981, -4.9412, -5.1286, -4.9138, -5.1042, -5.2876, -6.4396, -4.6442, -4.2766, -4.5588, -1.6946, -0.6815, 1.6923, 2.6384, 3.794, 3.9827, 3.1253, 3.8234, -7.8447, -3.7539, + 0.0757, -0.0653, -0.5789, 0.6712, 3.3974, 5.2272, 3.8057, 1.3204, -0.9531, -1.2566, -1.6955, -1.1717, -0.9735, 0.2237, 1.1803, 4.3319, 6.8301, 9.0463, 9.4433, 7.5902, 3.7433, 0.0327, -1.4644, -4.7154, -6.0059, -7.2747, -9.9821, -10.6151, -10.1672, 1.8545, 3.4334, 6.1661, 5.8556, 3.1158, 1.3495, -0.3375, -1.2855, -2.2198, -4.5273, -13.4049, -11.7714, + 18.832, 19.0344, 19.1952, 19.544, 18.8449, 14.8697, 8.6867, 2.7879, -1.6869, -4.7635, -7.1363, -8.878, -9.6594, -9.0777, -6.9523, -1.8282, 3.5267, 4.4511, -1.5807, -5.656, -7.8512, -4.0511, 0.2367, -5.4146, -11.328, -13.9141, -12.866, -9.0793, -8.286, 7.2253, 2.308, 0.9914, -1.0476, -1.1123, -1.0979, 0.2181, 0.5772, -1.1907, -1.879, -4.9926, -19.5991, + 6.9436, 25.3648, 31.2509, 23.4659, 7.6212, 8.5476, 13.4044, 12.1024, 6.331, 6.4395, 11.2808, 6.4453, 3.3798, -0.4108, -2.6193, -4.1535, -5.4353, -7.8115, -9.9117, -10.8599, -12.3626, -13.5397, -13.0447, -13.134, -12.5666, -12.9922, -14.205, -14.7731, -14.7573, 0.6782, 0.293, 1.1419, 0.5868, -0.3036, -0.7149, -0.2401, 0.2321, -0.6483, 0.2892, -1.3142, -13.0829, + 8.063, 8.593, 8.9037, 9.6389, 9.9192, 8.643, 5.1562, 1.1687, -2.685, -5.3768, -7.2472, -8.6966, -9.7539, -8.277, -7.3009, -4.7332, -2.5381, -2.7034, -3.2364, -4.1264, -4.6546, -3.984, -4.4745, -3.1865, -2.7693, 0.2429, 6.0573, 8.4087, 10.949, 1.5828, 2.2857, 2.4626, 4.2564, 3.1914, 1.9048, -0.4814, -1.9794, -1.6878, -0.6562, -10.8788, 6.9006, + 15.3121, 14.0216, 12.315, 10.8984, 9.8481, 9.486, 9.9555, 11.2336, 12.1475, 11.5421, 9.508, 6.1797, 2.1804, -1.5586, -4.1037, -3.8925, -2.2145, -0.574, -2.0726, -5.8999, -9.587, -12.3986, -13.2888, -11.0931, -8.695, -10.6144, -15.3843, -17.4751, -15.7759, 11.6735, 8.2281, 4.7038, 3.1666, 1.7515, -3.5926, -5.6951, -5.7508, -5.1915, -3.439, -5.8544, -26.0008, + 10.5147, 10.1953, 9.3949, 9.1051, 8.3007, 7.6855, 5.3821, 2.1136, -0.5365, -2.3955, -3.8024, -5.3725, -5.6568, -4.8775, -2.4291, 0.2566, 4.4555, 7.9385, 8.4324, 6.4827, 2.9059, 0.5262, -2.9536, -6.313, -9.2242, -10.021, -12.3911, -13.793, -13.9236, -1.0018, -1.0252, -1.9659, -2.6464, -2.974, -1.2967, 0.3806, 1.637, 3.3651, 4.3609, 1.1664, -14.6511, + 17.246, 16.9637, 17.1204, 18.874, 20.7478, 19.3865, 13.9822, 8.1265, 3.288, 0.778, -0.2592, -1.0141, 0.0742, 3.2639, 4.6036, 2.5181, -3.1653, -6.8864, -8.0795, -7.3818, -6.3471, -6.8628, -11.5495, -14.8984, -15.4665, -15.712, -14.8453, -15.6943, -18.8106, 1.498, 1.4377, 1.0081, 0.1939, -0.3867, 0.3736, -0.2884, -0.4032, -0.4237, -0.7102, -2.299, -21.4765, + 29.1324, 27.4472, 23.9346, 19.8815, 15.3348, 10.3288, 4.4524, -0.1346, -3.0576, -4.7063, -5.5439, -5.9222, -5.9328, -6.6024, -6.7197, -6.0365, -5.2696, -5.1176, -6.4818, -7.5705, -8.4454, -8.5007, -8.4654, -7.9097, -7.0136, -8.1875, -7.3437, -4.302, -1.2484, 4.1307, 4.9307, 5.3321, 3.9185, 2.3886, 0.5401, -1.5333, -2.6429, -3.4176, -4.0077, -9.6393, -7.8398, + 26.1063, 27.1257, 26.4958, 24.5623, 21.0909, 16.0392, 10.3606, 5.2224, 1.283, -1.7057, -5.2899, -8.7872, -11.5471, -13.8485, -15.6146, -16.5388, -16.6318, -15.7526, -14.3061, -11.8594, -6.9641, 0.2736, 3.2894, 2.3319, 2.1876, -0.1464, -6.9487, -10.5477, -9.8802, 8.0155, 5.1637, 1.2918, -0.1585, -1.6768, -2.1876, -2.1575, -2.3734, -1.4901, -0.3422, -4.085, -16.2781, + -2.8938, 0.5854, 4.9032, 19.8896, 33.0777, 27.8431, 5.8284, -0.8777, -0.4212, 7.5419, 14.4523, 0.5889, -7.2843, -5.7721, 2.2765, -3.867, -7.0376, -2.4089, -1.923, -6.9736, -5.054, -6.8128, -9.1282, -7.6378, -9.9538, -8.0762, -10.1133, -10.3156, -10.4365, 1.79, 1.293, 1.2513, 1.1649, -0.0523, -0.1935, -1.3719, -0.6466, -0.7256, -0.6226, -1.8868, -11.7248, + 5.0511, 7.2825, 7.4756, 7.6284, 6.3099, 6.5711, 6.0062, 5.2464, 4.1337, 3.5789, 2.7344, 1.9171, -0.0947, -4.7055, -6.3175, -6.726, -8.3754, -7.5699, -4.4289, -0.5061, 0.5491, -0.6121, -1.663, -2.5886, -1.0683, -1.0286, -4.3484, -7.2928, -7.1586, 2.8359, 1.6298, 0.9777, 0.2594, 0.2894, -0.2649, -0.2767, 0.5984, -0.0902, -0.5417, -5.4171, -8.5849, + 26.8109, 26.2612, 24.6562, 22.4444, 19.7975, 16.2207, 11.9006, 7.5618, 4.2432, 1.162, -1.9686, -4.6999, -7.0035, -8.7711, -9.4863, -9.0559, -7.8923, -6.8802, -7.012, -8.4837, -11.2123, -13.1769, -13.1832, -11.7848, -8.9173, -7.9697, -7.9495, -8.0762, -7.535, 6.9413, 5.9114, 4.4559, 1.9045, -0.222, -1.5629, -2.1181, -2.9624, -3.1458, -3.1496, -6.0522, -15.8707, + 15.4221, 13.9665, 11.5956, 9.4217, 7.3471, 4.9825, 2.5822, 1.1306, -0.4479, -0.0543, 0.4224, 2.6264, 2.4323, 2.9777, 3.9679, 4.5466, 4.0757, 2.5862, 0.7066, -2.3566, -5.4206, -6.8028, -9.1716, -8.9333, -8.9478, -9.7023, -11.2057, -13.2026, -14.5445, 4.5118, 3.2465, 1.4635, 1.0112, 0.8257, -0.5633, -0.8311, -1.4185, -1.8127, -1.1914, -5.2417, -16.4127, + 28.007, 28.9811, 29.1691, 29.0099, 27.2163, 23.1256, 18.5752, 16.0256, 16.0772, 16.0792, 13.4415, 7.1002, -1.0509, -7.6202, -12.1978, -14.61, -16.035, -16.8734, -17.1512, -17.3461, -17.2821, -16.7355, -16.3289, -16.1605, -16.3294, -16.8373, -17.0316, -17.0117, -16.2062, 0.8143, -0.0316, 0.0425, -0.0469, -0.56, -0.2604, -0.2934, -0.0397, 0.1815, 0.6487, -0.4551, -17.2928, + 21.3473, 20.28, 18.5835, 16.4034, 13.0771, 9.2891, 7.0954, 6.8063, 9.6682, 13.1023, 14.6281, 13.8935, 12.0583, 11.5472, 11.1879, 7.7716, 2.5072, -3.2634, -8.4595, -14.0714, -18.2085, -21.2308, -24.2103, -24.5753, -21.1428, -16.8159, -16.8684, -20.7499, -19.65, 7.8883, 2.8059, -0.2509, 0.2746, 0.577, -0.7075, -1.0613, -1.6761, -2.152, -2.4962, -3.2017, -23.7494, + 16.7277, 16.51, 14.9737, 13.3864, 11.3764, 9.4606, 7.4445, 4.9221, 3.5715, 2.4337, 1.9778, 1.0209, 0.1128, -1.6904, -3.3639, -3.2615, -1.5944, -0.2581, -0.903, -2.3174, -4.1698, -4.9533, -4.5665, -6.1912, -10.0495, -13.234, -15.5995, -16.5459, -15.2199, 5.3973, 5.3767, 6.35, 5.5996, 2.0913, -2.3482, -4.267, -3.6648, -4.0077, -3.9263, -6.601, -20.6386, + 3.6641, 3.072, 2.139, 1.3959, 0.5821, 0.1856, -0.7457, -1.801, -2.5799, -2.9996, -3.1922, -3.7936, -4.3073, -4.4608, -3.725, -2.3583, -1.9204, -1.2606, -2.2907, -2.819, -3.6214, -3.1415, -2.0045, 0.0938, 2.4493, 4.0398, 6.5627, 10.1038, 12.7333, -5.2898, -3.8412, -0.6529, 0.7502, 1.5439, 2.507, 2.6854, 3.8159, 2.2321, 3.0585, -6.8092, 14.5213, + 7.5981, 6.7937, 5.2222, 4.6535, 5.7305, 7.9847, 10.01, 10.9988, 9.0694, 6.0491, 3.4695, 2.202, 3.1237, 4.5225, 7.5338, 7.066, 2.89, -1.4622, -5.4401, -6.1963, -7.3166, -5.9799, -7.7791, -10.5609, -13.5413, -13.8804, -12.9467, -9.4679, -10.3461, 11.6866, 9.3826, 4.4701, -2.9772, -5.447, -4.9307, -2.727, -0.1581, -1.4072, -1.6802, -6.2119, -24.8632, + 5.8372, 5.4933, 4.4445, 3.1566, 1.2701, 1.1435, -1.1096, -2.4243, -3.5109, -2.2282, 0.6573, 2.1785, 1.1141, 0.6038, -0.927, -0.101, 0.3438, 0.9773, 1.8036, -0.1658, -2.1507, -2.6201, -1.5194, -0.3072, 1.7488, -3.1481, -4.7553, -3.5314, -2.2733, 1.5456, 3.9136, 6.0524, 4.791, 5.6839, 4.8261, 0.4655, -3.9096, -15.7692, 1.863, -9.4624, -9.489, + 4.6026, 4.2957, 4.0221, 3.8863, 4.8775, 7.7799, 11.9268, 15.6438, 16.1838, 13.0359, 8.2259, 3.9397, 1.1633, -0.5844, -0.4453, 1.672, 3.9861, 4.4822, 0.7429, -4.6835, -8.2254, -8.6845, -8.8455, -9.205, -9.3625, -12.115, -14.9115, -16.6057, -16.7984, 9.4268, 8.2301, 5.436, 2.2444, -2.802, -3.6865, -3.4374, -3.621, -3.4624, -3.4351, -4.8928, -25.4465, + 31.7873, 30.4727, 26.1023, 20.2575, 14.3546, 8.305, 2.5479, -2.7242, -6.2652, -7.8786, -9.5076, -10.7253, -11.9221, -12.5796, -13.002, -12.411, -11.3787, -10.5858, -9.2885, -7.2279, -5.6862, -4.5481, -3.8155, -3.181, -0.2688, 1.7479, 2.4086, 2.6005, 2.4118, 6.0159, 2.6937, 1.8092, 1.2143, 0.6228, -0.1962, -1.5166, -0.7925, -1.1563, -2.0509, -6.6433, -6.4991, + 18.8196, 18.806, 19.0012, 19.7425, 18.9386, 15.192, 9.3626, 3.8042, -0.7101, -2.8913, -4.5793, -4.8562, -4.2855, -1.5235, 2.8079, 3.9527, -0.682, -6.1064, -9.0907, -10.7715, -10.2261, -6.853, -5.4028, -9.0538, -11.2966, -11.9744, -10.3023, -9.0454, -10.7763, 4.8079, 2.0464, 0.5831, -0.5085, -0.7115, -0.6171, -0.2759, -0.3213, -0.227, -0.8577, -3.9185, -18.4439, + 29.8848, 29.1207, 27.5698, 25.5473, 23.0863, 20.0333, 16.4515, 12.7057, 8.6525, 4.4123, 0.1328, -3.7662, -7.0685, -9.2222, -10.1967, -10.3862, -9.4399, -7.5052, -6.1986, -7.052, -9.653, -11.7447, -12.817, -13.2994, -13.4411, -14.5193, -16.0619, -17.4467, -17.7785, 0.6444, 0.915, 1.0957, 0.6198, -0.2661, -0.3037, -0.4308, -0.4697, -0.3863, -0.3182, -1.1, -17.5027, + 18.4803, 19.3278, 19.3456, 18.5446, 16.5534, 13.5838, 10.0057, 6.5241, 3.2399, 0.544, -2.4922, -5.5969, -8.475, -10.0774, -10.9952, -10.9028, -10.6525, -9.9639, -8.7708, -5.9295, -0.9987, 2.2097, -2.2176, -6.2966, -4.0572, -2.0702, -5.9921, -9.8384, -13.0318, 9.7202, 8.7919, 5.85, 1.2627, -3.1473, -4.0847, -3.9814, -3.8063, -3.2668, -2.9485, -4.3897, -21.4605, + 10.8936, 10.0376, 8.9233, 8.3835, 9.1909, 11.1956, 12.7625, 12.831, 11.2547, 8.6892, 5.7674, 5.0532, 5.1919, 6.4652, 5.5698, 1.2762, -3.6991, -7.9057, -10.9535, -12.3006, -13.0325, -12.0668, -10.2756, -8.9081, -9.5586, -12.4845, -12.5292, -10.6874, -9.0841, 6.7548, 4.3777, 7.2866, 11.0895, 5.9012, -3.2191, -7.2773, -7.4247, -5.9063, -4.6316, -6.951, -23.662, + 14.1801, 13.6094, 10.246, 6.2621, 3.2304, 0.492, -3.3704, -5.1542, -6.4379, -7.1331, -6.8071, -6.701, -7.0994, -6.7923, -5.4284, -4.1081, -2.2588, -0.3405, 0.3901, -0.1306, 0.2111, 1.2777, 2.612, 2.4542, 2.4177, 2.7283, 1.9381, 0.6674, -0.9548, 1.3373, 0.4195, 0.2246, -0.2612, -0.578, -0.3401, 0.2289, 0.3082, 1.5502, 2.1823, -5.0717, -1.9154, + 7.4197, 7.6107, 5.1248, 2.8926, 2.5158, 5.2747, 7.9445, 9.5554, 9.8134, 10.8602, 11.2127, 10.8181, 10.8451, 8.6337, 3.4818, -1.7126, -6.6143, -9.2501, -11.755, -13.8987, -14.1553, -13.7199, -12.4906, -7.978, -7.1759, -5.4179, -4.3134, -2.3617, -3.1596, 3.7397, 0.2684, -0.7543, 2.0473, 3.1074, 3.1748, 0.6925, 0.1021, -1.9327, -0.9979, -9.4471, -15.9473, + 5.0374, 7.8743, 10.506, 13.2551, 15.8405, 18.1863, 17.687, 15.2297, 11.9245, 8.8446, 6.8821, 5.5715, 2.9277, -1.1968, -4.6014, -6.2302, -7.5567, -8.8097, -8.9946, -8.6106, -9.0917, -8.5223, -8.8031, -10.3066, -10.5465, -10.512, -10.3576, -11.9252, -13.702, 3.764, 1.872, 2.0488, 1.2415, 0.9134, -0.5949, -1.6362, -1.3248, -1.6433, -1.0179, -3.6227, -18.8186, + 19.2311, 20.9055, 21.1816, 19.8035, 16.764, 10.9316, 4.3014, -1.2152, -6.3082, -9.8229, -12.4158, -14.601, -15.196, -13.5529, -10.486, -6.001, -0.0077, 5.5394, 4.4883, 0.8609, -0.7114, -0.5882, -2.0714, -4.1988, -3.5305, -2.7385, -3.9119, -6.6059, -10.044, 6.8589, 1.6709, -0.4277, -0.8756, -0.7567, -0.4132, -0.3654, -0.2776, -1.2933, -1.0276, -3.0928, -19.711, + 24.3921, 23.8657, 21.7178, 19.5721, 17.2483, 13.0391, 8.278, 4.5096, 2.1017, 1.4583, 0.4028, -1.6986, -2.5413, -2.4202, -3.3681, -6.3081, -8.4179, -8.6508, -8.3994, -5.6233, -2.8768, -2.4582, -4.6987, -11.026, -15.7297, -17.5495, -16.498, -11.2445, -7.0765, 10.9683, 8.5482, 1.624, -0.8116, -2.3291, -2.0794, -2.7065, -3.3384, -2.8326, -2.6102, -4.4326, -18.4205, + 21.6293, 21.2629, 20.0435, 18.0462, 14.0665, 8.5047, 3.1435, -1.3209, -4.4014, -5.7444, -6.244, -6.5178, -6.8764, -6.1381, -3.8131, -1.3478, -0.7585, -3.8085, -6.8211, -8.0966, -7.589, -5.2013, -2.5966, -3.9678, -5.8322, -4.8627, -3.8164, -4.4574, -6.4845, 7.4192, 3.5944, 0.8769, -1.2773, -0.8711, -1.2539, -1.2063, -1.1651, -0.7991, -1.1807, -4.1369, -15.4669, + 25.3218, 25.2194, 24.6132, 23.8034, 22.1467, 19.2686, 16.007, 12.6244, 9.8907, 7.3439, 4.6106, 2.0173, -0.23, -3.1887, -6.2778, -8.9287, -10.75, -12.4083, -13.6221, -14.5295, -14.0216, -11.6668, -8.29, -7.178, -8.6454, -13.0929, -18.1357, -20.6369, -21.2645, 0.649, 1.5279, 1.4976, 1.2259, -0.2509, -0.5437, -1.0645, -0.9697, -0.4026, 0.0229, -1.6919, -19.5268, + -1.2546, -1.5446, -0.9486, 0.9829, 1.7405, 1.8511, 2.612, 4.5582, 4.2836, 3.2383, 1.925, 1.5674, 0.4781, -1.1296, -1.5011, -0.3895, 1.2177, 2.8828, 3.7419, 3.9893, 0.6886, -1.304, -2.837, -5.679, -3.6007, -1.063, -1.5598, -5.1076, -7.8381, 10.2277, 6.2474, 2.9832, -0.8736, -8.4082, -6.4397, -4.2854, -1.8654, 0.4359, 0.954, 1.0241, -18.8314, + -3.652, -0.9802, 0.633, 3.0142, 3.7152, 4.2246, 3.065, 2.2808, 0.7668, -0.9696, -2.1283, -3.4617, -5.696, -9.1999, -10.9932, -10.595, -8.8872, -8.3491, -3.9024, 3.8951, 4.5732, 4.1833, 4.4267, 5.3015, 7.163, 6.8136, 3.6, 4.1437, 7.0149, 8.8113, 4.5339, 4.332, 3.8462, 2.4702, 0.0061, -1.7359, -2.2461, -3.3967, -3.6881, -12.9329, -0.9921, + 24.1276, 23.4144, 21.9515, 19.2491, 15.3233, 10.6683, 5.7075, 1.4491, -1.9622, -3.4974, -4.3346, -5.264, -5.4783, -4.5424, -2.5563, 1.0471, 2.9749, 1.0585, -4.2112, -7.704, -8.5161, -8.5574, -7.1906, -8.4892, -11.7312, -13.8838, -13.1386, -9.4367, -6.477, -5.2323, -4.7057, -2.176, 0.8632, 2.4803, 4.6972, 3.2524, 3.1237, 0.8651, 3.0078, -6.1758, -9.0277, + 9.207, 8.6269, 7.9993, 9.2567, 10.6048, 10.9179, 8.2726, 5.4801, 2.9587, 1.4349, 1.6895, 0.8687, -0.1341, -1.4667, -2.2954, -2.9979, -3.1146, -3.5248, -3.6823, -3.9108, -4.704, -5.0502, -5.2411, -6.0582, -6.2892, -7.1229, -6.8496, -7.8359, -7.0393, 1.0164, 0.3126, 0.256, 0.1094, 0.1566, -0.0117, -0.2184, 0.266, 0.0029, 0.5627, -2.4525, -9.3388, + 19.0542, 19.7864, 20.4414, 20.8883, 19.4828, 14.6899, 8.0652, 2.5866, -1.961, -4.2899, -5.3264, -5.8141, -5.3969, -2.8814, 0.6767, 3.6783, 2.8172, -1.1754, -3.8287, -4.3496, -4.1271, -2.7566, -3.4552, -6.5139, -9.4384, -14.1688, -17.1871, -19.0448, -20.4515, 1.8392, 0.8553, 0.2154, -0.0271, -0.4104, -0.2449, -0.1708, 0.0249, -0.0369, -0.2525, -1.7922, -22.7099, + 22.2875, 23.2966, 21.0875, 19.4172, 19.4631, 20.2489, 19.086, 14.7884, 9.6247, 4.7618, -1.1341, -7.8711, -13.4709, -16.4039, -17.9473, -16.0183, -8.7161, -0.3674, 4.2198, 1.897, -0.6141, -0.3383, 1.4297, -1.9778, -12.253, -18.9367, -22.1657, -22.0094, -21.384, 0.0857, -0.3388, -0.3844, -0.6424, -0.7435, -0.5609, -0.1067, 0.1511, 0.7988, 1.0267, 0.7142, -22.3449, + 1.5997, 0.7952, 0.5771, -0.1086, -0.9165, -0.4936, -0.5385, -1.1104, -2.3027, -2.7303, -1.7093, -1.2741, -1.2559, 0.1339, 2.1512, 4.2566, 4.4113, 3.294, 1.9275, 1.166, 0.9857, 0.1003, -0.1015, -0.9056, -0.5391, -0.5752, -1.0655, -2.5147, -3.257, 1.4399, 1.6942, 1.2365, 0.6457, -0.0065, 0.5875, 0.3795, -0.0796, 0.4453, 1.0116, -7.354, -5.9661, + 17.6306, 19.8446, 20.6406, 20.9119, 20.8696, 19.9715, 17.0436, 12.6644, 7.8356, 3.7315, 0.0618, -2.5156, -4.0666, -3.6383, -2.3405, -0.6112, -0.7237, -3.4603, -8.5171, -12.2394, -14.9608, -15.8437, -14.9681, -12.615, -11.0775, -11.0437, -12.1047, -15.2272, -15.2522, 3.8383, 2.7442, 1.4004, 0.6138, -0.4141, -0.6861, -1.0225, -0.8449, -0.9118, -0.8189, -3.8984, -19.7618, + 4.0159, 4.7341, 5.0428, 5.4476, 5.5823, 5.0017, 4.7364, 5.0152, 5.4244, 7.2281, 10.0426, 12.1892, 12.5133, 10.8886, 9.4587, 9.9271, 9.6594, 6.2877, 1.1672, -4.8743, -9.8309, -10.9887, -10.4195, -8.8449, -10.0345, -14.288, -19.4282, -23.5124, -22.141, 9.6326, 8.1547, 3.0154, -1.3662, -1.9025, -0.9827, -0.5431, -2.6536, -3.4587, -4.054, -5.842, -26.6165, + 1.3951, 2.3341, 2.7846, 3.6043, 3.9813, 5.2605, 5.5279, 4.846, 3.2475, 2.3327, 1.8366, 1.4325, 0.6121, -0.4539, -1.6285, -2.8274, -4.2077, -4.6993, -5.0706, -4.2874, -4.4071, -3.4175, -3.0547, -3.3504, -1.7471, -0.7879, -0.0749, -0.117, 0.9361, 4.5093, 3.2132, 3.2053, 2.7775, 1.5517, -0.0446, -1.3922, -2.0535, -0.9648, -1.7751, -9.0269, -4.586, + 28.2916, 29.7152, 29.0955, 27.1159, 23.3768, 18.1997, 11.9697, 5.6704, 0.9205, -2.5625, -6.9213, -11.486, -15.0627, -16.3635, -16.7915, -16.8262, -16.229, -14.5129, -11.0684, -5.6647, 2.9493, 7.145, 4.8374, 2.6581, -2.8551, -9.629, -15.306, -15.9776, -14.6886, 0.7674, -0.5757, -1.0994, -0.2628, -0.333, 0.2608, 0.1505, 0.3201, 0.6736, 0.6525, -0.5539, -15.2205, + 21.3574, 19.0821, 16.0689, 13.5763, 11.7756, 9.8197, 7.1626, 5.6591, 4.1988, 2.6866, 1.2839, 0.297, -0.7392, -2.1025, -2.9588, -3.9692, -4.2266, -4.5449, -5.2046, -5.5074, -6.5396, -7.8927, -8.7128, -9.14, -9.3002, -10.003, -10.319, -10.7968, -11.0108, 1.2272, 0.8607, 0.9681, 0.0462, -0.4903, -0.1304, -0.4412, -0.146, 0.3281, 0.933, -3.1554, -13.2931, + -11.9427, -9.0347, -8.1854, 0.5355, 16.2351, 30.0772, 15.6863, -0.5026, -5.1802, -3.4273, 8.1185, 14.303, 3.9959, -5.7275, -2.8537, 5.8633, 2.1444, -4.9037, -1.6011, 1.0216, -1.4938, -3.6235, -5.0675, -4.7195, -2.6927, -4.8393, -5.4537, -9.4932, -7.2387, 4.1282, 1.8786, 1.9953, 0.5488, -0.3819, -1.3723, -1.0026, 0.0804, -1.6472, -0.9937, -3.2335, -11.7554, + 18.449, 17.8582, 16.6014, 15.4593, 14.0319, 12.3568, 10.0803, 7.8236, 5.707, 4.5343, 3.607, 3.4959, 2.7669, 0.5453, -0.986, -2.0713, -2.6104, -3.5225, -5.566, -7.1856, -8.5038, -9.9136, -10.8379, -12.1072, -13.2841, -13.7883, -13.6681, -14.0513, -15.221, 1.9454, 1.7954, 1.7868, 0.9124, 0.3779, -0.2762, -0.6521, -0.9212, -0.7314, -0.0795, -4.1574, -18.4931, + 11.8976, 17.951, 18.5286, 15.1944, 9.4977, 6.4581, 3.3668, -0.2268, -3.9011, -5.4058, -5.9886, -7.2383, -7.8525, -10.3087, -12.8063, -12.1794, -11.0999, -8.8156, -8.1165, -6.1532, -4.2252, -4.0395, -1.3151, 0.5738, 3.955, 8.7131, 6.7113, 1.7138, 5.1116, 0.9965, 1.4759, 3.0237, 2.9344, 5.1266, 4.6639, 2.7831, 2.9561, 0.3334, -5.8448, -18.4487, 1.1692, + 0.9487, 1.413, 0.9479, -0.0826, 0.2145, 3.217, 4.0687, 3.2987, 3.5035, 4.5743, 4.0544, 3.4101, 4.0914, 4.5664, 4.8132, 6.4401, 9.3451, 8.9607, 6.079, 2.7728, 0.8498, -0.8017, -2.4432, -4.7032, -9.3198, -12.6235, -15.1492, -15.7996, -16.6466, -0.8633, -0.9141, -0.0119, -0.337, -0.1759, 0.0244, 0.0238, 0.6518, 1.091, 1.8672, -1.356, -15.2177, + 34.1302, 32.0599, 27.8887, 23.7603, 19.3256, 13.9648, 7.8176, 2.2845, -0.8316, -2.8468, -4.8687, -6.8758, -8.2507, -10.028, -11.0038, -9.9438, -7.5333, -4.6451, -2.1804, -2.2669, -3.7303, -5.3382, -6.9605, -9.3264, -11.3621, -13.0806, -13.5868, -13.1789, -13.393, 0.4195, 0.2121, 0.0329, 0.2371, 0.0989, 0.178, 0.0464, 0.0275, 0.3526, 0.0885, -1.6936, -14.6518, + 15.6422, 15.2859, 14.7754, 15.3593, 17.2032, 19.1105, 18.2304, 15.0687, 12.08, 11.4521, 13.3209, 14.1182, 10.1435, 2.4651, -4.8883, -9.38, -12.5864, -13.8568, -15.1276, -15.6378, -14.1885, -9.7248, -6.9518, -9.9796, -12.4385, -13.0782, -14.0208, -19.5089, -22.8872, 0.499, 0.8082, 1.3862, 0.4212, 0.1198, -0.3486, -1.0547, -0.403, 0.3854, -0.1208, -1.6927, -24.4489, + 31.6974, 29.478, 26.629, 23.262, 19.3188, 14.1307, 8.2731, 2.81, -1.094, -3.2472, -4.229, -4.829, -5.3248, -6.1539, -6.7558, -5.9669, -4.6964, -4.4401, -6.192, -8.0753, -8.1121, -6.2825, -6.0789, -5.7147, -3.3695, -8.9378, -16.7789, -19.5464, -19.7736, 3.0519, 6.0787, 1.0322, -0.6589, -1.6175, -2.1104, -1.9403, -1.7062, -0.9516, 0.481, -1.659, -17.7143, + 6.6516, 7.1945, 6.2582, 4.9369, 3.5619, 3.6748, 2.077, 0.4189, -2.1975, -3.886, -3.9613, -3.8644, -5.3511, -7.2609, -7.6175, -7.1661, -5.7976, -4.5218, -1.9308, 1.448, 5.0915, 4.7364, 4.6719, 3.6113, 3.3328, 2.0626, -1.533, -2.8815, -1.7589, 6.4246, 5.9081, 6.0283, 5.5237, 2.9559, -0.7124, -3.2659, -4.6501, -4.6857, -3.8757, -9.6509, -8.7268, + 12.9326, 13.6158, 13.6027, 13.5734, 13.4039, 13.8175, 13.8659, 12.7258, 9.7632, 6.3103, 2.7321, -0.5733, -3.8746, -7.086, -9.645, -10.7832, -10.3935, -8.3777, -4.8027, -1.1394, -0.1906, -2.9954, -5.6539, -5.3461, -4.393, -8.2738, -13.2039, -15.2593, -14.3519, 12.0896, 7.9934, 4.3314, 2.9333, -0.2922, -3.974, -5.2453, -5.1292, -4.2466, -2.5427, -5.9177, -24.1706, + 3.3111, 5.7192, 7.6731, 8.6538, 8.7816, 9.2367, 10.2956, 10.7802, 8.7371, 5.9609, 4.1644, 2.5137, 0.7897, -0.7157, -1.6711, -1.2978, -0.9879, -0.5737, -1.7029, -3.8746, -6.212, -6.9054, -7.5755, -8.5853, -8.663, -8.4875, -9.3126, -9.4585, -10.5934, 1.9845, 0.8889, 0.2842, -0.9179, -1.4593, -0.6826, -0.6777, -0.0392, 0.8979, 1.4414, -1.7202, -13.5455, + 14.2205, 14.4641, 13.7854, 13.0598, 13.2991, 14.8419, 16.1502, 16.5712, 15.2079, 11.8669, 7.9213, 4.5068, 2.1444, 1.2542, 2.5468, 4.6558, 4.3109, 0.6255, -5.187, -9.7699, -11.4109, -10.1544, -8.4757, -11.5168, -17.9764, -22.4698, -24.8959, -25.1837, -24.3922, 1.4299, 0.413, 0.0191, -0.2559, 0.4822, -0.2917, -0.0644, 0.3763, 0.0596, -0.3088, -1.8594, -27.0927, + -2.8758, 15.2556, 21.0124, 15.289, 2.1565, 2.6722, 2.923, 4.3949, 0.446, -0.9254, 1.7753, 1.364, 0.4328, -3.9146, -4.3331, -4.1112, -3.8881, -5.2841, -2.7539, -1.9759, -0.4884, -4.8231, -3.5586, -3.51, -2.3689, -4.3495, -5.1658, -7.1944, -6.2007, -2.475, -1.0212, 2.7562, 1.1019, 2.0472, 2.2292, 2.3273, 2.8928, -1.1663, -0.0381, -8.6541, -3.0398, + 18.8285, 20.4979, 21.7173, 23.1703, 24.2063, 23.5814, 21.0896, 17.9453, 15.643, 14.4782, 13.143, 9.6223, 4.1452, -1.1378, -5.0589, -7.8909, -10.5229, -13.0157, -15.3961, -16.7612, -17.5151, -17.5485, -17.4267, -17.8018, -18.7396, -19.9281, -20.0342, -16.863, -12.4276, 8.6336, 4.4955, 1.3996, -0.2307, -1.5565, -2.0497, -2.323, -2.1696, -2.165, -1.6041, -2.43, -20.8387, + 16.1197, 16.1677, 13.0422, 10.1574, 7.482, 4.6731, 0.9828, -1.4519, -2.9998, -3.7625, -4.0148, -4.3809, -5.3027, -6.4756, -7.1149, -7.3309, -7.7257, -6.9484, -6.1237, -4.9958, -3.5063, -1.5803, 0.7658, 1.786, 3.3939, 3.3871, 0.1351, -1.5829, -2.7956, 3.7721, 2.8811, 2.698, 2.1046, 1.6496, 1.643, 0.3146, -1.1205, -1.2974, -2.3187, -10.3263, -6.3444, + 33.2222, 30.5262, 25.0634, 19.0582, 13.7573, 9.6221, 5.3575, 1.773, -0.2567, -0.9304, -1.7632, -2.8645, -3.748, -4.1938, -4.1659, -4.0416, -4.7502, -6.0605, -7.9728, -8.5077, -8.1116, -7.8726, -8.1931, -9.0767, -10.5826, -11.3078, -11.2136, -11.3407, -11.426, 0.8122, 0.488, 0.3714, -0.1432, -0.1971, -0.2624, -0.2558, -0.0613, 0.088, 0.0913, -0.931, -13.399, + 23.3644, 24.0993, 25.3117, 28.071, 27.1967, 22.1136, 17.5071, 15.1758, 14.335, 11.14, 4.3238, -3.0833, -8.0197, -10.4359, -12.1778, -13.4366, -14.3352, -15.1818, -14.9458, -14.461, -13.872, -11.3742, -10.2486, -10.0143, -11.6705, -10.3545, -10.901, -13.4149, -14.7113, -0.0476, -0.0526, 0.7467, 1.6512, 0.2779, 1.1979, -0.1397, -0.0153, -0.2711, -0.9085, -2.4389, -16.2622, + 14.4881, 12.3355, 8.8723, 6.0773, 3.3394, 2.1115, 0.8125, 0.2147, 0.056, -0.0137, -0.2214, -0.6427, -0.7267, -1.5641, -2.3561, -2.2954, -2.4665, -2.8622, -3.0085, -3.0425, -3.2164, -3.541, -3.2388, -3.283, -3.0079, -3.0781, -3.2229, -3.1753, -3.3443, 0.6505, 0.0498, -0.1331, -1.126, -0.6639, -0.2628, -0.209, 0.4291, 0.7281, 1.5146, -0.9773, -5.3512, + 2.0621, 1.412, 0.1443, -0.6564, 0.5194, 4.127, 7.3667, 9.7238, 11.5833, 11.3655, 7.7646, 4.2923, 2.5041, 4.7009, 7.5418, 8.5568, 4.4916, -1.2294, -4.3559, -5.7809, -5.5627, -3.7357, -4.6814, -7.6996, -10.083, -11.5284, -10.0528, -10.0753, -12.7146, 1.7722, -0.0816, -0.3269, 0.6524, 2.3093, 3.6584, 1.5222, 0.4498, -1.3345, -1.6645, -6.9568, -19.683, + 25.4648, 24.2073, 21.4183, 18.0385, 14.5373, 11.3133, 7.9671, 5.3323, 3.4067, 2.4589, 2.3509, 1.9998, 0.7508, -0.6518, -2.8305, -5.4658, -7.9173, -10.2576, -11.4401, -11.9089, -12.2924, -10.4402, -8.9248, -9.352, -7.9692, -5.3374, -6.585, -12.1411, -15.7319, 4.8043, 4.3614, 2.147, 0.1372, -1.2225, -1.5199, -1.617, -1.646, -1.4994, -1.0956, -2.8494, -19.563, + 10.4477, 9.9103, 9.3167, 9.9753, 13.0396, 16.4188, 16.2006, 11.2422, 5.492, 2.0198, -0.5193, -2.2228, -3.7621, -2.3955, 0.6073, 4.9323, 5.7164, 1.908, -3.853, -5.3428, -5.1549, -4.4637, -8.4757, -12.2439, -13.8905, -14.278, -11.6814, -12.1684, -16.7752, 0.6951, -0.414, -0.215, -0.4177, -0.1652, 2.0344, 0.4827, 0.3849, 0.6488, 0.2765, -3.3105, -20.973, + 11.6894, 11.5653, 11.7767, 13.6634, 16.8841, 16.8356, 11.607, 5.3075, 0.2573, -3.0445, -5.5117, -6.5939, -7.5658, -6.4151, -2.9369, 2.581, 5.6008, 0.1628, -5.9773, -6.9647, -6.5125, -3.3783, -4.0081, -8.2854, -9.9143, -9.2857, -6.2357, -5.9007, -9.4002, 10.4552, 5.0807, 0.6307, -1.3477, -0.5399, -0.5873, -1.8383, -1.7997, -2.057, -2.8514, -5.1454, -22.0833, + 21.2161, 21.5655, 20.7743, 20.2657, 20.4741, 20.8267, 19.9547, 17.4467, 13.8013, 9.3303, 4.0053, -0.5555, -4.305, -6.2844, -5.9649, -3.292, -0.3039, -0.5084, -4.2075, -9.2735, -12.3913, -12.0554, -11.2851, -13.2289, -17.6674, -21.0646, -22.6765, -22.3615, -22.2348, 0.6227, 0.2943, 0.3156, -0.0153, -0.3658, -0.4357, -0.0101, 0.1177, 0.2549, 0.3115, -1.0897, -21.8725, + -5.8017, -5.8902, -5.5846, -4.762, -4.4881, -3.9174, -4.283, -5.1666, -6.3677, -6.8882, -6.9995, -6.8752, -7.3225, -8.7191, -9.5016, -8.754, -7.1882, -3.8658, -0.5597, 2.3798, 1.4716, 2.7987, 5.8548, 11.0383, 14.5525, 16.8697, 19.0261, 18.9539, 19.9898, 7.1234, 3.7053, 2.7491, 2.3946, 1.8894, -0.2885, -0.8988, -0.3606, -0.2356, -2.8434, -13.235, 10.7649, + 29.8544, 29.8362, 28.5318, 26.532, 23.6452, 19.329, 14.5539, 10.284, 6.4573, 3.11, 0.1941, -2.1012, -5.6884, -9.9636, -12.852, -13.5951, -13.0431, -13.2967, -13.3194, -12.2195, -9.3679, -5.0767, -1.3008, -4.8112, -12.0561, -15.7608, -16.8756, -16.0321, -14.9678, 2.1806, 0.2835, -0.2562, -0.386, -0.657, -0.1415, -0.217, -0.2013, 0.4029, 0.2038, -1.2117, -16.045, + 8.0644, 8.0499, 7.1416, 6.5893, 5.5981, 4.3993, 3.4826, 2.7143, 2.8318, 2.358, 2.4915, 1.9093, -0.3049, -1.4506, -1.2401, -2.3404, -1.2673, -2.2808, -2.4575, -3.4995, -3.9318, -5.0149, -5.3296, -3.8867, -4.4533, -4.5744, -4.0511, -4.8087, -4.7385, -9.0466, -10.6663, -9.9253, -6.6473, -2.6332, 0.9689, 4.1205, 6.334, 8.2517, 9.8032, 9.4405, 1.9804, + 9.5207, 9.0443, 7.8069, 7.3329, 7.3094, 8.0083, 9.9299, 12.4518, 13.0618, 11.3574, 7.8442, 3.8017, -0.1018, -3.9012, -6.5018, -7.0985, -5.6241, -2.4385, 1.2347, 1.1544, -2.3784, -5.3165, -6.5624, -5.5597, -5.2937, -9.9992, -14.6755, -17.3896, -17.0176, 9.0473, 5.4785, 3.0998, 0.8918, -1.3974, -3.6623, -3.5233, -2.5034, -1.0502, -1.2373, -5.1436, -25.0416, + -5.0642, -5.1796, -4.6005, -5.1034, -4.7822, -2.6885, -1.4531, -1.7854, -2.0629, -2.7192, -4.452, -3.929, -3.4335, -4.7675, -6.1288, -7.0944, -6.633, -5.1475, -3.279, 1.153, 2.3119, 6.3456, 6.1984, 9.1249, 10.9774, 11.5921, 12.7428, 11.4754, 8.3823, -9.7326, -13.5256, -14.6472, -7.0881, -1.2233, -0.9864, 6.1958, 7.2048, 10.0661, 12.3652, 11.3714, 19.005, + 6.7705, 6.0726, 4.7668, 4.7287, 5.5025, 5.2104, 3.6077, 1.7454, 0.3953, -0.348, -0.7236, -1.1397, -2.5075, -2.4282, -2.0351, -1.5354, -0.9783, -1.1816, -2.7792, -3.3855, -3.4229, -4.1416, -3.3236, -3.6243, -3.9451, -2.9592, -1.2582, 1.2767, 1.6406, 9.6325, 11.3324, 9.8681, 5.5229, 2.3829, -0.2309, -2.8115, -5.0973, -6.3038, -7.6243, -16.6711, -7.8822, + 18.7275, 18.7602, 15.1086, 10.7098, 6.9559, 5.0306, 2.7456, 0.2771, -1.9055, -2.8108, -2.7768, -3.7007, -4.2089, -5.7436, -6.2204, -5.8236, -4.9148, -3.2075, -2.8848, -3.121, -2.7428, -4.5923, -3.8926, -3.7191, -2.9927, -3.2069, -3.9982, -3.813, -2.0396, -6.3039, -3.8256, -2.1569, 0.2409, 3.3218, 4.6289, 5.0475, 3.5987, 1.8219, 1.8959, -8.2692, 2.9296, + 19.0392, 17.4654, 14.9352, 12.2077, 10.497, 11.1852, 10.4778, 8.4045, 4.8902, 1.7924, -0.876, -4.1317, -6.0495, -6.1897, -5.015, -1.439, 2.3264, 1.7138, -1.0924, -3.4019, -4.302, -3.5935, -2.4494, -6.411, -11.384, -13.3423, -14.0158, -14.8337, -16.408, 5.217, 2.0001, 0.7957, -0.6171, -0.8902, -1.2003, -1.1541, -0.6336, -0.6395, -0.6616, -2.2164, -21.367, + 10.4791, 9.9395, 9.0805, 9.1584, 10.6784, 12.7374, 14.6952, 15.0752, 12.809, 9.8648, 7.835, 7.5607, 9.0798, 10.1615, 7.6961, 2.2376, -2.6758, -6.5418, -9.4708, -10.5541, -11.1366, -10.0882, -12.2916, -15.8392, -17.7528, -18.3635, -16.7645, -14.5122, -13.097, 9.0915, 6.6105, 3.9354, -0.3391, -3.1013, -3.4367, -2.504, -2.1417, -1.8401, -1.7766, -4.4978, -24.3538, + 2.0821, 3.1287, 4.0753, 5.4302, 5.7802, 6.6537, 7.213, 6.6951, 4.596, 2.8045, 2.4487, 1.8103, 0.4415, -1.7609, -3.0165, -2.8462, 0.1898, 3.3827, 4.319, 1.6896, -2.8185, -5.5524, -7.0484, -7.5484, -6.109, -5.9753, -4.7225, -7.1165, -8.2257, 3.668, 2.9008, 1.3962, 0.7099, 1.6828, 1.2318, -0.5067, -1.7458, -1.5988, -1.6313, -6.1069, -11.5601, + 1.1497, 1.32, 1.2707, 2.0082, 2.0004, 1.8044, 1.127, -0.2158, -1.8933, -2.4634, -3.4218, -4.7937, -4.71, -4.6869, -4.1693, -4.4056, -4.91, -4.6525, -4.3514, -5.3638, -6.5281, -5.1288, -3.6008, -0.1517, 2.6878, 7.224, 11.7457, 15.7449, 17.364, 6.9238, 4.8734, 3.1279, 0.9919, 0.1466, -0.3872, -0.1158, -0.4139, -1.8167, -1.7305, -11.5996, 8.8903, + 9.7978, 8.0725, 4.8934, 3.5284, 2.7083, 3.7014, 4.0313, 4.6282, 3.9292, 3.2742, 2.0518, 0.7154, -1.2921, -1.9667, -1.5639, -1.3033, -0.5627, -0.4778, -0.7607, -2.2442, -3.8987, -4.4781, -4.252, -4.6421, -4.1577, -4.5224, -4.4218, -5.2138, -5.574, 0.7391, -0.0616, -0.3222, 0.1802, -0.1541, -0.5544, -0.09, 0.4549, 0.453, 0.6154, -1.2603, -6.8376, + 11.0218, 10.5069, 8.2672, 5.9543, 3.9578, 3.9631, 2.6698, 1.5498, 0.3926, 0.318, 0.1925, 0.7238, -0.6282, -2.8873, -3.5603, -4.0488, -2.8863, 0.6168, 3.2951, 2.8007, -0.0448, -2.6501, -4.7672, -5.2381, -5.1827, -6.3352, -6.8157, -6.003, -5.1825, 5.7059, 6.0081, 5.5317, 5.2309, 1.9392, -0.7052, -2.995, -3.4059, -4.2816, -4.2198, -8.8083, -12.1555, + 30.722, 30.4352, 28.7635, 26.8276, 23.0072, 17.1944, 10.8428, 5.1151, 0.6042, -2.9361, -6.0945, -8.6787, -10.4457, -11.4951, -12.7062, -13.0113, -13.2579, -13.2793, -13.0584, -12.0898, -10.8056, -8.6431, -7.2774, -8.7256, -10.1911, -7.2394, -2.5936, -0.3436, -0.6396, 5.5942, 2.8807, 1.9726, 1.6097, 0.9653, 0.3476, -0.8863, -1.5202, -2.194, -2.7497, -6.0197, -9.7496, + 11.0431, 11.2874, 10.754, 9.9197, 8.6647, 8.6958, 8.6183, 9.9875, 10.047, 8.3112, 7.2898, 5.9718, 4.5865, 2.1034, -0.7735, -2.4122, -3.3246, -3.2844, -4.4966, -6.4114, -8.1119, -10.1936, -10.6919, -10.5371, -10.9794, -10.4475, -10.1218, -12.43, -13.0643, -8.4396, -8.4986, -5.5124, -3.9624, -1.092, -0.4675, 2.3907, 5.5877, 7.2456, 8.023, 4.7255, -8.4177, + 12.7397, 11.0783, 9.2586, 6.5612, 4.1628, 2.3704, 1.9316, 1.0515, -1.035, -1.2451, -1.9616, -3.0021, -4.2825, -5.4905, -5.6435, -5.621, -6.6154, -6.2022, -5.0535, -4.7672, -3.5637, -2.1688, -1.0431, 0.1656, 0.9547, 1.642, 2.0989, 1.7796, 1.9001, -9.9315, -12.1933, -12.6352, -7.0282, -1.8872, 1.8245, 4.5894, 7.3621, 9.3193, 10.4805, 10.0998, 9.3097, + 15.1389, 17.4197, 18.3393, 18.5836, 17.5461, 15.0277, 11.1098, 6.8515, 2.5234, -0.3132, -2.9049, -4.0328, -5.4435, -6.6072, -7.1258, -7.1761, -6.4666, -4.533, -0.7343, 1.2614, -1.3012, -6.3734, -11.7238, -12.6667, -10.4556, -6.4641, -7.1625, -10.7517, -11.5648, 8.7437, 7.862, 8.4762, 9.1692, 5.7736, -1.6953, -4.9554, -7.2071, -8.1718, -8.3657, -9.6294, -20.1832, + 18.735, 18.8415, 17.7238, 16.779, 16.8597, 17.9978, 19.1477, 18.5999, 16.1427, 12.4936, 8.6595, 5.9831, 4.9948, 5.7667, 5.588, 1.9462, -3.6217, -9.0782, -13.3577, -15.7337, -14.0069, -9.9754, -8.9549, -15.6483, -21.552, -23.5522, -23.683, -23.3131, -23.7818, 0.3454, -0.042, -0.0575, 0.3156, 0.1128, -0.3066, -0.4222, -0.0008, 0.1796, 0.4486, -0.5731, -24.7214, + 16.6836, 16.0011, 14.2761, 12.3355, 8.6965, 4.5639, -0.4844, -4.198, -4.765, -4.1296, -4.0155, -2.9656, -1.797, 0.468, 1.9673, 2.9994, 4.5, 3.5757, 1.1168, -0.5475, -1.7944, -2.5137, -4.8674, -5.5801, -7.1945, -9.0212, -11.1995, -10.8822, -11.2279, 0.2823, -1.5628, -3.0013, -1.8679, -2.2856, -1.4908, 0.7971, 1.9446, 3.1469, 4.5357, -0.4981, -12.2633, + 19.0033, 19.2025, 17.7777, 15.3002, 12.665, 9.5501, 5.6575, 1.8616, -1.6276, -3.6035, -5.2976, -7.4545, -9.9218, -11.055, -12.1614, -12.333, -11.7581, -10.8363, -9.3486, -5.9142, -0.9878, 3.2625, 3.7572, 3.2186, 3.6513, 0.3807, -3.4386, -5.0746, -4.4758, 13.3555, 8.9978, 5.4532, 3.6182, -1.0628, -3.2096, -4.4349, -5.7492, -5.1348, -3.5353, -8.2981, -16.823, + 18.4297, 15.9331, 11.2397, 7.8129, 5.538, 4.6599, 3.1356, 2.3935, 1.0751, 1.097, 0.648, -0.216, -2.0789, -2.6802, -3.0441, -2.3536, -0.3163, 1.8936, 2.7495, 0.5565, -3.1908, -5.3708, -7.0075, -7.5402, -7.2433, -8.2848, -9.2167, -9.4201, -9.1988, 2.6256, 2.051, 1.3148, 0.5355, 0.063, -0.6332, -0.4758, -0.6747, -0.4639, -0.1424, -4.2, -12.3908, + 7.3097, 7.7813, 7.8527, 7.8546, 8.1128, 8.9506, 10.6384, 12.8363, 14.6251, 15.4901, 15.1366, 13.4976, 11.9988, 11.7295, 11.3616, 8.4914, 2.9159, -3.6536, -9.48, -13.735, -17.1927, -18.7882, -17.6248, -13.8464, -10.5674, -13.8181, -18.1434, -20.8743, -18.8591, 11.3245, 8.7172, 3.5788, -0.9416, -1.5672, -2.3545, -2.3414, -3.3449, -3.961, -3.8438, -5.2662, -25.7869, + -1.6196, -1.5619, -1.3693, -0.0041, 0.6985, 1.0211, -0.2712, -1.1631, -2.5701, -3.8567, -4.4749, -4.1959, -4.6373, -5.4392, -6.632, -6.8724, -5.3058, -4.2328, -1.9447, -0.2533, 0.7399, 0.5052, 2.5635, 6.5244, 9.7417, 10.9027, 8.3775, 5.7836, 9.5462, -0.9205, 1.3066, 3.5975, 5.1438, 4.6369, 2.962, -0.2142, 1.2689, -0.0412, -3.1056, -14.6343, 6.0567, + 14.2155, 14.8572, 14.6396, 15.6515, 18.4554, 21.3207, 21.295, 16.587, 10.7997, 7.0073, 4.3743, 2.985, 1.5061, 3.2006, -0.1576, -6.6249, -11.7054, -14.9389, -16.7542, -15.9586, -13.4133, -9.9384, -8.4859, -12.4268, -14.9176, -16.0461, -14.1275, -6.4255, -4.9741, 5.5063, 0.3654, 3.5212, 7.9053, 3.8839, -1.5841, -4.1647, -4.5145, -3.545, -1.9892, -5.3846, -20.3075, + 9.1018, 8.8735, 7.5282, 6.865, 7.5449, 8.2635, 6.4844, 3.4564, 0.6817, -1.5163, -2.2174, -2.8199, -3.288, -2.4514, -0.1202, 2.7625, 4.3459, 5.3239, 3.3628, -0.1718, -3.0498, -4.4866, -5.5655, -6.7973, -7.4857, -9.1801, -9.3929, -8.469, -7.5827, 4.3844, 4.6419, 5.2823, 3.5134, 1.9965, 0.2705, -0.4359, -2.5064, -3.1275, -3.8266, -10.1926, -14.0516, + 22.6352, 23.6582, 24.5865, 26.389, 26.4341, 23.2091, 17.7722, 13.535, 11.1208, 9.98, 8.2759, 4.0348, -1.7705, -7.8105, -12.5187, -14.9802, -16.3623, -17.382, -17.7578, -17.649, -15.5778, -12.8018, -11.4459, -14.3128, -16.352, -15.2082, -10.9596, -5.2865, -3.4553, 7.6752, 3.5999, 2.0739, 1.1336, -0.6895, -1.5345, -2.458, -2.0781, -1.8815, -2.5118, -3.3292, -17.5176, + 1.875, 1.8662, 1.4311, 0.9127, -0.1302, -0.376, -0.5434, -0.222, 1.2349, 3.6442, 6.7696, 8.9037, 8.5438, 6.152, 3.7222, 3.0903, 4.4232, 5.4581, 6.2833, 3.7218, -0.7522, -4.4112, -6.2164, -5.4842, -3.9166, -5.963, -10.1542, -15.3434, -14.5193, 13.3682, 11.1151, 8.2449, 5.7945, 3.1501, -1.3709, -6.5216, -8.303, -8.2964, -7.6878, -9.493, -25.2906, + 23.8996, 24.1043, 23.8658, 23.668, 21.5342, 15.4333, 6.3905, -1.1158, -4.6322, -5.8867, -6.7301, -7.6112, -8.9183, -10.1939, -10.8837, -8.9691, -3.9727, 3.1911, 5.9335, 0.9841, -5.6662, -8.2167, -5.1918, -3.2488, -11.7754, -15.7999, -16.0905, -9.046, -5.0555, 9.193, 1.3362, -0.8279, -1.4971, -1.9949, -1.9954, -1.0397, -0.8391, 0.6715, 0.815, -3.8216, -17.2628, + 2.1343, 3.1072, 3.1035, 2.4651, 1.077, 2.5793, 2.6348, 1.2152, -0.5649, -2.3867, -0.692, 0.8781, 1.3547, -0.8951, -2.8053, -3.6858, -2.1707, 1.958, 5.8746, 8.3664, 5.4534, -0.2992, -2.5199, -5.0547, -5.4956, -3.579, -4.0494, -3.2599, -4.7435, 6.3175, 4.364, 4.2936, 4.0751, 4.2436, 2.1309, -2.1883, -4.5757, -4.9307, -4.577, -9.1531, -11.6403, + 24.1543, 25.338, 25.2642, 24.289, 21.5268, 15.8776, 8.7349, 1.8963, -3.3513, -6.9022, -9.3648, -10.8355, -12.1831, -12.5211, -12.8565, -12.9812, -11.8854, -11.1641, -9.286, -5.4976, -0.9263, 3.4028, 4.724, 3.7754, 2.3125, -4.4255, -11.3777, -13.5943, -12.1432, 6.6341, 8.4368, 8.7627, 5.8486, 0.7153, -3.2965, -5.0124, -5.0678, -5.2114, -4.9009, -6.9086, -15.732, + 33.3595, 30.8257, 27.394, 23.1538, 18.548, 12.9357, 7.6481, 4.1721, 3.2632, 3.436, 3.9739, 4.0188, 3.3042, 2.799, 2.1257, 0.5313, -1.9459, -5.6161, -9.5935, -12.9587, -14.8978, -16.0532, -16.3206, -16.6767, -16.1054, -16.6153, -17.9698, -18.6045, -18.1317, 1.5134, 0.826, -0.0981, -0.1095, -0.5148, -0.5502, -0.3922, -0.2658, -0.1093, 0.4252, -0.7246, -17.8748, + 1.6216, 0.9985, 0.7656, 2.7126, 3.5846, 4.9869, 4.3162, 4.0409, 2.9716, 0.7825, 0.4168, 0.2302, -0.1647, -1.1633, -1.3128, -0.8806, -0.1106, -0.3406, -2.2081, -3.7852, -4.1417, -2.9134, -2.1959, -1.8077, -1.5502, -2.2082, -1.4934, -0.695, -0.4569, -7.0535, -3.1321, 1.0676, 0.9741, 1.5466, 3.3522, 3.6041, 3.9392, 1.3441, 1.8148, -7.4571, 2.7151, + 15.5981, 19.5861, 21.1052, 20.7702, 17.9972, 13.4362, 8.4295, 3.6958, -0.0748, -3.8419, -6.8494, -8.7952, -9.5977, -10.9677, -13.2231, -11.6825, -9.656, -6.9659, -3.1059, 0.6508, -2.2959, -4.9921, -6.595, -5.9531, -3.291, -4.7702, -3.987, -1.794, -2.8308, -2.5, -4.6538, -0.7258, 4.733, 8.3235, 5.3781, -0.4169, -0.0664, 0.8379, -2.0639, -8.8455, -9.7704, + 23.7863, 25.9404, 25.3891, 21.9998, 16.2579, 9.6322, 3.4737, -1.7621, -6.1163, -9.2774, -11.9071, -13.8355, -14.8079, -15.2219, -15.496, -14.785, -13.1085, -11.2726, -7.3218, -0.9826, 6.1996, 7.861, 5.9579, 4.5346, 0.9527, -4.262, -5.857, -3.1595, -2.8119, 8.3142, 3.663, 2.1376, 0.017, -1.3069, -1.1574, -2.2597, -2.0274, -1.1056, -1.2385, -5.0363, -15.6945, + 20.3765, 22.4983, 23.2522, 22.4935, 18.6192, 11.9388, 4.7215, -2.2228, -6.9248, -8.7614, -9.4361, -10.4167, -12.0447, -14.3511, -15.7581, -15.0919, -13.4051, -11.6659, -8.9412, -4.6688, 1.6099, 5.0989, 2.6335, 0.0407, 0.1956, 0.6445, -1.3875, -1.9917, 2.9449, 22.4551, 18.5214, 5.2727, 6.1503, -0.1446, -8.9143, -8.7222, -9.1792, -9.3487, -7.5459, -8.5445, -16.1222, + 11.1076, 12.0485, 11.055, 10.5716, 11.0874, 11.6622, 9.9206, 4.9761, 0.3715, -2.6436, -4.8249, -9.221, -10.4786, -11.6233, -11.899, -10.3869, -9.3054, -5.4126, -0.0922, 1.7786, 1.9733, 2.3237, 2.4041, 2.1518, -0.8245, -3.1849, -3.9744, -5.1713, -4.3894, 1.391, -2.4885, -4.1076, -3.8565, -1.6768, 1.3241, 2.8087, 3.8092, 4.3728, 3.2455, -4.8218, -10.0894, + -0.2633, -1.4544, -2.4182, -3.0882, -3.5531, -4.3925, -6.6002, -8.5372, -9.6704, -9.8444, -10.3936, -9.9956, -8.9278, -7.5639, -5.9124, -1.9933, 2.8919, 6.3172, 5.944, 4.7295, 5.0606, 5.2459, 8.2338, 8.7234, 10.0863, 10.2509, 9.9392, 9.0613, 8.1243, 1.1238, 0.9922, 1.1101, 1.8146, 2.6706, 2.2247, 1.2363, 1.1432, -0.1842, -0.9655, -11.166, 5.3441, + 6.9294, 5.0117, 2.6132, 2.2629, 4.5422, 9.5764, 14.7837, 15.8748, 11.9468, 7.4679, 4.5656, 4.3597, 5.8184, 8.6426, 5.8541, -0.7924, -5.2311, -8.036, -9.7347, -8.9, -8.2834, -6.3029, -5.072, -7.3093, -8.1284, -8.3417, -7.7152, -10.4763, -15.926, 4.7158, 2.3141, 1.3121, 1.3526, 1.5962, -0.3417, -1.386, -1.6767, -1.776, -1.6516, -4.4588, -23.6471, + 20.5611, 21.499, 21.6805, 21.4105, 19.9564, 16.4129, 11.009, 4.5495, -0.7043, -3.4671, -4.6121, -5.3523, -6.5924, -7.7881, -8.2287, -7.0226, -4.0117, -0.4161, 1.788, 1.3595, -1.3403, -3.8721, -3.965, -4.9622, -8.7031, -14.8711, -18.9891, -20.1269, -15.2011, 9.5765, 9.609, 6.3797, 4.6167, -0.3327, -3.7082, -4.7974, -5.1837, -5.3397, -4.8761, -5.9441, -20.3305, + 28.9011, 29.1365, 27.4009, 24.4914, 20.2583, 14.7607, 8.7681, 4.0956, 2.2405, 2.3157, 3.7552, 5.6036, 6.0319, 3.0401, -2.3373, -6.5825, -9.1181, -11.519, -13.0607, -13.4398, -13.0287, -11.6613, -11.3947, -12.1649, -13.2592, -14.7276, -15.9052, -16.4327, -16.1678, 0.805, 0.5113, 0.4244, -0.0076, -0.2346, -0.4785, -0.2332, -0.0629, -0.0095, 0.3865, -1.101, -17.2993, + 14.0295, 13.9502, 13.6228, 13.9615, 14.5159, 15.7344, 16.5458, 16.6583, 15.876, 14.9767, 14.5095, 14.6169, 14.1664, 10.4532, 3.0906, -3.2947, -6.9042, -10.1425, -12.3464, -13.3132, -12.9262, -11.8067, -11.4974, -15.4253, -20.2544, -22.9691, -22.5572, -21.639, -21.6312, 2.018, 1.7654, 2.894, 1.2851, 1.2694, -0.7044, -1.7554, -1.1719, -1.4637, -0.7534, -3.3831, -24.9877, + 14.3136, 12.8038, 10.76, 9.9164, 8.0164, 4.8641, 0.3656, -1.398, -2.3438, -1.8387, -0.9641, -0.4343, -1.8428, -3.9974, -5.5735, -6.9534, -5.2614, -1.8837, -0.6653, -2.2186, -4.1385, -7.9205, -4.8743, -0.0041, -1.6958, -8.8891, -5.9515, 2.5199, 5.289, -0.4214, 3.3144, 7.7656, 5.2578, 2.3868, 4.6757, -4.9484, 1.0462, -11.2993, 2.2105, -9.9881, -1.011, + 15.2498, 16.8589, 17.4454, 17.3595, 15.7318, 12.0402, 6.8196, 1.9584, -1.895, -4.1206, -5.7554, -6.5663, -7.4096, -8.0543, -8.0905, -5.7704, -1.8905, 1.4927, 2.8765, 0.693, -2.5985, -3.9517, -2.8026, -3.1264, -6.0718, -8.7896, -10.874, -11.1991, -9.5592, 1.025, 2.5513, 3.7885, 4.2634, 3.9729, 3.4142, 0.3627, -0.0631, -2.7607, -5.0823, -11.4719, -15.3324, + 19.7099, 20.3722, 20.4412, 20.5912, 20.9609, 21.5266, 21.3284, 19.9806, 17.9191, 15.7219, 13.9555, 12.9719, 11.7125, 7.8879, 1.8651, -4.0484, -8.384, -12.3338, -16.2678, -19.1476, -20.5188, -20.7942, -19.7332, -19.5087, -20.0131, -21.1706, -22.0267, -21.828, -21.17, 2.6261, 1.4238, 0.5675, 0.1586, -0.3335, -0.753, -0.695, -0.815, -0.6504, -0.3559, -1.1732, -23.1129, + 1.8825, 1.5975, 0.765, 0.8382, 1.097, 2.3121, 1.7334, 1.3645, 1.6653, 2.5832, 3.6249, 3.8831, 3.7892, 3.6596, 2.8817, 2.2713, 1.6918, 1.3161, 0.6652, 0.0342, -2.3559, -3.5644, -4.4403, -3.4709, -4.1781, -4.9507, -5.6105, -5.7659, -5.319, -4.6785, -6.2814, -4.417, -3.7355, -2.9146, -0.606, 2.7131, 5.1159, 5.7786, 5.8363, 3.1891, -2.7682, + 20.9204, 18.3266, 13.9646, 10.345, 7.1213, 4.7949, 2.3975, 0.3252, -0.8377, -1.2032, -1.3516, -1.2322, -1.3903, -2.0806, -3.2115, -3.8099, -3.7972, -3.8008, -4.4221, -4.5737, -4.8822, -4.8118, -5.0104, -5.0121, -4.8009, -5.1006, -5.4825, -5.7785, -5.6058, 0.0304, 0.0212, -0.8099, -1.099, -0.8995, -1.1798, -0.0605, 0.4825, 1.2857, 1.8683, 0.3606, -7.2005, + 5.2951, 4.6853, 3.2703, 1.4395, -0.0679, -1.5464, -4.0205, -5.271, -6.2684, -7.4709, -7.5305, -6.6769, -5.9752, -5.0052, -2.1987, 1.0365, 4.3659, 5.4876, 4.1372, 2.9011, 2.0765, 1.4275, 2.262, 2.497, 2.1857, 1.8463, 1.4213, 2.718, 2.9788, 2.6542, 4.1837, 4.7936, 4.0109, 4.2119, 2.0348, 0.3166, -0.4254, -3.181, -4.8204, -13.7789, -1.2474, + 10.5896, 10.0518, 9.5208, 11.5878, 14.9277, 14.1122, 8.4894, 2.1708, -2.5335, -5.3221, -7.6712, -9.9945, -11.5742, -11.8957, -12.0296, -10.9304, -8.1129, -3.4826, 2.2855, 6.7275, 2.7163, 2.8417, 3.8437, 1.4929, -1.9462, -3.7791, -2.6804, -3.2326, -6.1727, 14.4024, 9.7441, 3.2594, -2.4965, -1.6315, -2.624, -3.3409, -3.9874, -3.0303, -4.0633, -6.2319, -23.1513, + 12.3877, 13.4337, 14.0526, 15.3719, 16.723, 17.0301, 15.6932, 13.1714, 10.9923, 10.12, 9.9867, 8.1477, 4.6596, 0.522, -3.1428, -6.2242, -8.4106, -10.536, -11.526, -13.2012, -11.1252, -8.8838, -9.7283, -14.6481, -19.0045, -16.0374, -8.1446, -9.6615, -12.0177, -3.6514, -5.1768, -3.3816, -0.8285, 1.8774, 4.0666, 6.6919, 6.7739, 0.8553, -0.399, -6.8277, -19.582, + 7.513, 6.3917, 4.409, 3.2713, 2.4681, 1.4505, -0.7914, -2.2729, -2.7937, -1.4184, 0.5941, 1.7683, 1.7245, 2.1691, 0.8665, 0.4093, 0.8033, 3.3147, 3.5683, -0.9897, -3.9384, -5.0587, -4.1462, -2.0529, -1.2512, -5.3164, -7.9226, -1.6494, -1.1198, 3.1545, 4.178, 6.4164, 4.4137, 1.438, 1.5613, -8.5713, -1.5266, -2.1776, 0.8939, -9.7803, -10.1082, + -0.4172, 3.9814, -2.5335, 4.7982, 6.2404, 9.5386, 1.728, -2.6347, 7.9832, -10.0263, -1.023, 2.1623, 7.0028, 7.7748, 15.0971, 5.6506, 5.2734, 4.3666, -5.3182, -6.5883, -8.8498, 1.1908, 5.523, -1.1525, -3.9009, -23.1871, 0.2212, -1.9086, -20.9924, 7.1776, 8.9477, 9.4213, 0.6845, 6.7206, 6.8189, 0.9603, -10.6166, 0.5146, -13.1811, -17.4476, -7.6137, + 23.378, 25.0892, 26.2191, 26.9457, 24.6201, 18.5566, 11.6556, 4.9788, 0.6249, -3.74, -8.5904, -12.3926, -14.727, -15.9297, -15.762, -14.5514, -11.9079, -8.2268, -0.1798, 5.9532, 4.5772, 3.1484, 0.2938, -5.5237, -12.1896, -14.8172, -14.8798, -12.4827, -10.1404, 3.2764, -1.6281, -2.1589, -1.373, -0.4182, 0.5715, -0.2811, 1.7069, 1.5263, 1.5414, -2.7632, -16.8809, + 26.2968, 26.9773, 27.1574, 27.9417, 26.5696, 21.5857, 14.8761, 8.6361, 4.1683, 0.7533, -1.9295, -2.5208, -0.0812, 2.225, 0.9523, -3.4957, -8.2811, -11.7647, -14.3663, -15.2907, -14.5936, -12.5687, -12.9612, -14.8338, -16.5565, -16.2573, -15.0745, -13.883, -13.6813, 1.4448, -0.0533, -0.092, -0.0314, -0.2973, 0.5069, -0.2172, -0.1011, -0.0306, -0.0946, -1.0343, -16.8789, + 15.2599, 15.8558, 16.5112, 17.1923, 16.9184, 12.7155, 6.7767, 1.6437, -3.4349, -7.8714, -10.5492, -12.4016, -14.2321, -14.946, -15.0099, -14.2604, -12.3944, -9.913, -6.0566, 3.4214, 4.0393, 0.985, 0.9812, 5.2322, 5.1852, 2.0753, 2.8816, 0.5603, -7.1654, 13.9261, 10.8083, 1.8284, -2.6412, -3.5133, -2.9693, -2.93, -3.3031, -3.3193, -3.2617, -4.6248, -21.7463, + 17.6998, 15.3407, 11.6586, 7.2522, 2.903, 1.127, 0.287, 0.3993, 0.1515, 0.9131, 1.2039, 0.835, 0.617, -0.2241, -0.4502, -0.7194, -0.2872, -1.3096, -2.7798, -3.9323, -4.0148, -5.4557, -5.6772, -5.5259, -5.6333, -6.0967, -5.8797, -6.4353, -5.9666, -4.2226, -4.1479, -4.5146, -4.3292, -2.7654, -0.8517, 1.0845, 2.937, 4.9613, 6.0166, 5.832, -4.0046, + 6.7958, 6.618, 6.8562, 7.7048, 9.32, 10.2947, 9.2183, 6.4762, 2.7485, -0.8988, -3.443, -4.619, -6.3031, -8.1363, -8.6511, -7.2066, -4.4822, -1.4434, 2.6598, 5.1827, 2.6866, -0.9832, -2.3089, -1.3324, -0.7075, -3.4975, -7.3602, -8.3172, -6.8713, 15.6013, 14.5952, 12.4864, 10.1694, 6.7654, -5.1118, -14.7309, -11.9476, -9.2847, -6.6284, -11.9143, -21.6331, + 14.4296, 12.7223, 10.1123, 8.5522, 7.7405, 6.5977, 2.6762, -1.5488, -4.129, -3.7931, -3.089, -3.1619, -4.0464, -5.1734, -7.7679, -6.3552, -4.2463, 2.5055, 5.5392, 0.2036, -3.7031, -5.8323, -6.0258, -1.1405, -6.8812, -8.2643, -6.4325, 2.2624, 8.249, -1.6654, -1.1619, -3.519, -1.9517, -1.3057, -0.412, 0.2731, 3.0941, 3.3892, 6.7202, -3.4609, 4.9976, + 16.2171, 16.8083, 17.6167, 19.1924, 18.7528, 14.2594, 8.5818, 3.6957, -0.9158, -4.4517, -7.0958, -9.391, -11.6987, -13.394, -14.5794, -13.1362, -10.8013, -7.497, -2.2178, 3.955, 3.3524, 1.1405, 1.732, 1.1123, -4.7613, -8.88, -8.5945, -6.1985, -2.8033, 13.6191, 7.9112, 3.4818, -0.7153, -0.3308, -2.3878, -3.9144, -3.8872, -3.3753, -4.2532, -6.1481, -19.8313, + 6.8744, 6.6595, 5.9608, 5.627, 4.3932, 3.6619, 1.6033, 0.6207, 0.2849, 0.0399, 0.6193, -0.4371, -1.6617, -0.9777, 1.0971, 4.1974, 5.9086, 2.26, -0.0342, 1.3932, -0.7669, -2.8459, -3.327, -4.4869, -4.5589, -4.9693, -7.563, -7.8037, -11.7691, 6.8143, 4.0009, -0.8944, -7.1111, -6.4611, -4.2217, -1.7229, 0.436, 2.1972, 3.2561, 3.7068, -18.5017, + 18.3619, 17.7217, 16.1766, 13.4866, 10.6915, 10.2793, 11.8384, 14.1579, 15.8226, 15.6994, 14.1178, 12.1825, 10.7237, 10.1085, 8.7558, 5.2488, -0.0978, -5.2425, -10.2876, -14.5133, -15.8759, -16.5173, -16.7647, -16.0517, -18.5506, -21.537, -23.2401, -23.8593, -22.8353, 1.5487, 0.0279, -0.5628, -0.2643, 0.4887, -0.1023, -0.4874, 0.2721, 0.8224, -0.165, -1.5779, -24.7124, + 31.7198, 31.7692, 29.2043, 25.0452, 19.3123, 12.8393, 5.9234, 0.3241, -2.4789, -4.4056, -7.0192, -8.8068, -10.3571, -11.5877, -12.2897, -12.495, -12.4338, -12.1031, -11.1686, -9.2498, -5.8575, -2.3369, -1.375, -2.0352, -2.1517, -3.404, -5.9186, -8.2233, -10.44, -0.0554, -0.5312, 0.1527, 0.4184, 0.6585, 0.9224, 0.6649, 0.9519, 0.5466, -0.5067, -3.222, -11.4604, + 20.9886, 21.1123, 20.4027, 20.0167, 19.1884, 16.5783, 12.5867, 8.3317, 4.5773, 1.2778, -1.2341, -2.6474, -2.9142, -1.9783, -0.0434, 0.4668, -1.7813, -4.6738, -7.2502, -9.3057, -10.6229, -10.4876, -10.2177, -11.841, -13.179, -14.6712, -15.1393, -14.287, -13.2531, -3.396, -1.5619, 2.3074, 5.7136, 6.3342, 5.5398, 2.4437, 0.2877, -1.8718, -4.5073, -11.2895, -13.3591, + 19.3924, 20.6124, 21.6255, 22.8929, 23.6118, 22.1117, 17.5653, 12.1779, 8.8663, 7.6147, 7.1982, 7.2343, 9.0939, 9.9573, 8.6027, 6.9323, 4.6278, -0.1742, -9.4767, -17.6803, -21.359, -22.4801, -22.5914, -22.5224, -22.4181, -22.3005, -22.8483, -23.1612, -23.1052, 0.6133, 0.2252, -0.4348, -0.4131, -0.5289, -0.397, -0.218, 0.1438, 0.5713, 0.4924, -0.0541, -22.3321, + -5.4361, -5.853, -6.336, -5.5397, -4.6575, -4.7263, -5.3668, -5.7909, -7.2619, -6.2038, -4.8838, -2.3553, -0.0793, 2.8083, 6.1069, 7.9082, 8.9577, 8.4116, 6.9427, 5.3831, 4.8464, 3.2166, 2.969, 3.6037, 2.4221, 1.8058, 0.2551, -0.2588, -0.888, 1.1827, 1.8083, 1.5989, 1.9336, 1.4331, 1.415, 1.02, 0.1423, -1.1623, -0.54, -8.8315, -3.2727, + 15.8074, 16.7591, 16.8279, 14.8127, 12.3398, 10.0795, 6.3564, 1.5357, -1.2393, -3.3949, -5.2006, -6.9275, -7.1545, -7.4402, -8.2594, -9.4265, -11.1999, -12.9999, -8.0859, -4.8163, -2.9284, 1.356, 0.0774, -2.3044, -1.8591, 0.1665, -4.2809, -4.0953, 5.4946, 9.8215, 5.0171, 7.0888, 8.4199, 6.4234, 3.6409, 10.6458, 9.4642, -18.581, -21.0542, -20.8865, -9.8207, + 16.5885, 17.1406, 17.0874, 16.5509, 14.5628, 11.8287, 11.686, 12.5074, 11.7212, 10.7081, 10.1468, 9.1212, 8.375, 5.9474, 2.4174, 0.3172, -1.3076, -2.387, -7.4556, -13.1264, -14.3324, -15.1303, -14.9156, -14.1134, -15.0136, -16.5819, -19.31, -21.7927, -21.2401, -7.0652, -6.6847, -6.5388, -5.2451, -2.6953, 0.0429, 2.8899, 5.3552, 6.884, 7.0718, 5.9852, -18.2709, + 5.7159, 5.5464, 5.7456, 6.9034, 7.0731, 7.8586, 8.0236, 8.6981, 9.1036, 9.353, 10.1684, 9.7683, 7.9546, 5.4206, 1.7391, -0.2107, -1.2165, -2.1493, -3.9988, -5.8835, -7.1432, -9.2187, -9.9765, -11.168, -10.8259, -10.9835, -11.5153, -12.5521, -12.2304, 0.1902, 0.2673, 0.6601, -0.0091, -0.1874, -0.6461, -0.5035, -1.0433, 0.8599, 2.7028, -2.2908, -14.5718, + 17.6557, 17.3889, 17.6615, 17.9794, 16.5379, 12.1975, 5.9007, 0.5883, -3.1335, -4.8335, -5.4254, -6.2659, -6.3932, -5.9023, -4.4098, -0.6232, 2.7006, 4.3695, 3.8488, 2.2808, 0.7423, -2.7461, -8.2729, -11.5807, -12.4732, -11.8352, -10.1651, -11.6722, -14.1196, 8.4864, 3.3593, 0.136, -1.6129, -1.5632, -1.3569, -1.625, -0.1613, -1.1646, -1.4389, -3.0589, -22.3338, + -10.394, -11.3059, -10.7072, -9.0929, -7.9625, -7.9528, -9.4227, -10.3318, -10.941, -11.1389, -11.6416, -11.7743, -11.8888, -11.1901, -10.5924, -9.486, -5.0151, 0.7991, 6.1915, 8.4506, 7.592, 12.1623, 17.6583, 20.5566, 20.2652, 20.369, 19.7694, 19.3174, 17.7068, 3.6441, 3.32, 3.1784, 2.3126, 2.6626, 2.7456, 1.7616, 0.1272, -1.6565, -3.6722, -14.4236, 11.3192, + -5.28, -6.7018, -5.8538, -2.9829, -0.9541, -0.9051, -2.3575, -3.5615, -3.7286, -3.675, -3.1606, -4.9611, -3.9368, -5.758, -6.751, -8.289, -7.8523, -5.0164, -1.2817, -1.0886, 3.4595, 6.5066, 6.9768, 10.1455, 9.1411, 11.6105, 10.998, 12.7941, 12.4636, -8.2776, -14.0532, -15.1503, -7.3901, -2.1067, 2.8745, 5.7677, 7.7844, 9.1465, 10.3125, 11.0923, 19.6399, + 29.3262, 30.3667, 30.846, 31.0752, 29.3541, 25.4538, 21.7947, 19.7689, 18.2651, 13.3813, 5.5283, -2.7838, -9.2904, -12.5752, -14.327, -15.2147, -15.6347, -15.958, -16.2781, -16.2588, -15.7969, -15.4712, -15.0026, -15.2417, -15.4496, -14.8024, -15.4856, -15.3255, -14.2641, 0.8519, 0.0729, -0.0994, -0.0081, -0.3526, -0.2653, 0.2798, -0.1248, -0.0021, 0.1016, -0.4538, -15.6262, + 15.4867, 33.4494, 31.067, 16.7893, 6.4957, 16.0571, 16.9999, 3.5875, -1.1144, 4.8625, -0.6863, -3.8211, -1.9744, -8.9072, -8.5418, -10.0978, -9.2052, -7.2961, -7.0614, -7.4703, -6.4488, -9.4828, -7.1526, -6.4892, -6.7913, -8.1872, -9.9015, -12.0879, -12.078, 0.2229, 0.6948, 1.138, 0.0739, -0.1888, -0.1421, 0.1878, 0.2524, -0.6463, 0.3346, -1.9272, -10.914, + 5.6609, 8.4186, 9.2335, 8.5627, 6.3863, 5.2965, 4.7202, 4.121, 2.247, 0.4513, -1.5117, -3.6436, -5.3381, -8.3221, -7.4711, -7.9576, -7.8478, -7.1587, -4.1684, -2.5146, -2.1257, -2.2843, -1.1957, -1.5497, 0.8946, 0.9399, 1.4159, 1.7779, 2.9627, -5.4497, -6.1886, -3.2681, -2.133, -0.0404, 3.3281, 4.7853, 6.276, 5.5714, 2.7564, -5.6374, 7.7525, + 8.2746, 28.7187, 36.6976, 28.2924, 10.6085, 7.9432, 11.522, 11.0743, -0.8646, -3.5525, 2.5564, -2.1952, -6.5887, -4.6155, -7.3323, -7.9392, -7.8581, -8.4524, -7.5176, -8.1708, -7.7429, -8.5235, -8.284, -8.3037, -8.0554, -8.4741, -9.7485, -10.9377, -10.531, 0.614, 0.5808, 0.566, -0.0413, 0.0489, -0.0922, -0.0506, -0.0413, -0.202, -0.1189, -1.2632, -9.9199, + 11.0404, 11.4527, 12.0166, 13.1928, 15.2678, 14.9233, 9.1277, 2.3164, -2.7085, -5.3527, -7.7675, -9.0506, -9.7011, -10.3636, -8.8246, -5.5374, -1.0381, 4.5069, 6.0732, 3.0152, -2.7476, -2.7839, 0.0922, -1.8194, -6.8672, -9.4573, -9.4575, -5.7898, -3.7583, 10.8326, 2.8363, 2.0266, -5.3026, -6.6996, -2.9341, 1.7162, 6.9334, 1.7529, -2.8185, -8.3432, -20.4214, + 12.4387, 12.5027, 11.9274, 11.7982, 12.5741, 13.7391, 15.0701, 16.2946, 15.8718, 14.4312, 13.1234, 12.3489, 12.0782, 10.4253, 5.1065, -2.4414, -7.7163, -11.2866, -14.5564, -17.0603, -18.3751, -18.6502, -16.8442, -12.5688, -10.3598, -13.7062, -17.0023, -16.5492, -12.6137, 10.1763, 4.1712, 1.7946, 2.0076, 0.9052, -2.1595, -3.3835, -3.6172, -3.1645, -2.457, -4.273, -25.1913, + 23.6574, 23.796, 23.2767, 22.058, 20.0235, 16.6036, 11.9504, 7.3306, 3.6864, 1.7264, 0.9711, 0.7044, 1.071, 2.2585, 2.9655, 1.1649, -2.95, -7.6177, -11.4979, -13.5632, -15.3135, -16.4809, -16.207, -14.4023, -12.2974, -13.2762, -14.7359, -14.053, -10.8494, 8.8738, 6.6767, 4.8152, 2.7736, 0.0848, -2.4935, -3.4294, -4.0796, -4.0216, -3.7791, -5.4208, -19.2524, + 24.5799, 26.6882, 26.121, 23.6936, 19.3829, 13.8994, 6.2899, -0.2105, -4.0678, -6.8423, -8.5308, -9.6576, -10.9976, -12.5439, -13.932, -14.634, -14.8621, -14.4895, -13.6415, -12.6341, -10.1213, -4.554, 2.381, 5.5155, 4.5043, 4.6729, 1.554, -3.0055, -4.5582, 9.0263, 7.4732, 2.8612, 0.7241, -2.0536, -2.7733, -3.2059, -2.7189, -1.5532, -1.3601, -6.4198, -12.7575, + 7.6213, 8.4172, 8.9876, 10.4827, 12.2597, 15.2393, 17.4791, 18.0965, 15.0336, 10.0484, 5.7655, 2.6712, 0.2945, -1.4627, -1.971, -1.066, 1.16, 3.098, 1.1433, -4.1444, -8.297, -10.7541, -12.9877, -13.8031, -13.3996, -14.1617, -17.1393, -19.3636, -19.2476, 6.5354, 4.7648, 2.4269, 0.5232, -1.4945, -1.8813, -1.964, -1.7311, -1.653, -1.7955, -3.7308, -24.6643, + 13.5087, 13.5242, 12.7722, 11.8179, 11.1371, 10.7172, 10.5263, 11.1693, 11.9327, 11.741, 11.0557, 10.1108, 9.3715, 8.9355, 7.6249, 5.0772, 0.6107, -4.7883, -10.1816, -14.0801, -16.86, -18.9941, -20.5775, -19.3418, -15.1559, -10.7533, -12.0838, -14.9402, -13.8764, 11.0621, 7.6386, 4.9345, 4.3245, 3.4049, 0.2756, -3.5276, -6.3143, -7.1008, -6.6692, -8.0282, -24.5342, + 5.8438, 4.0764, 2.213, 1.0693, 0.2917, 0.2268, 0.3178, 0.0571, -0.122, -0.3299, -0.5484, -0.7221, -0.5026, -0.6535, -0.827, -0.8342, -1.183, -1.478, -1.3638, -1.1982, -1.1886, -1.0489, -0.664, -0.3974, -0.3609, -0.2538, 0.0154, -0.0545, -0.3807, -6.2176, -6.9549, -7.1781, -6.1296, -3.0722, 0.1331, 2.5736, 4.6982, 6.3374, 7.5607, 8.2495, 4.9755, + 0.8084, -0.3755, -1.4286, -0.3083, 0.4094, 0.3217, -1.3855, -3.3308, -4.9621, -6.0578, -7.2055, -8.3467, -8.9662, -9.8798, -8.8811, -7.5773, -5.2881, -2.3523, -0.7359, -2.064, -3.5321, 3.1588, 7.1883, 8.4965, 6.8253, 10.082, 14.4185, 16.1906, 14.7782, 2.7472, 3.178, 3.1134, 1.3703, 0.638, 0.5841, -0.0788, -0.4106, -0.5281, -1.2372, -9.3762, 9.7708, + 6.0347, 7.9306, 7.3087, 7.586, 8.0389, 6.2727, 1.7726, -1.951, -5.1723, -6.4728, -8.8919, -11.0154, -12.2556, -12.0671, -11.6595, -10.0395, -9.5655, -7.4114, -6.337, -7.0881, -7.2175, -0.9489, 2.422, 5.6816, 9.0238, 12.3465, 14.645, 14.7417, 14.2888, 2.3315, 1.6729, 1.0736, 1.3455, 0.9342, 1.8468, 0.4757, 0.6854, 0.1631, -0.4447, -10.0841, 9.3461, + 46.3168, 40.1857, 32.991, 25.4126, 18.0879, 11.1478, 4.737, -0.5137, -4.1524, -5.9367, -6.6956, -7.3488, -7.7462, -7.7468, -7.367, -6.8462, -6.4988, -7.1096, -8.3038, -9.1796, -8.8798, -8.2279, -8.5672, -9.495, -9.9228, -10.8964, -12.033, -12.6718, -12.7395, 0.0319, 0.3618, 0.0496, -0.3085, -0.3788, -0.2193, -0.1354, 0.1832, 0.4305, 0.6666, -0.6818, -13.371, + 11.6554, 10.6537, 9.3283, 9.0008, 10.6684, 13.7237, 16.302, 16.4883, 14.7382, 14.1678, 15.6614, 15.7353, 11.5669, 3.2738, -3.5965, -7.5962, -9.386, -11.3905, -12.5797, -12.1046, -11.4132, -10.6087, -9.1391, -12.6739, -14.9908, -15.8921, -11.8803, -12.2627, -17.4496, 3.468, 2.416, 1.3256, -0.8144, 0.1187, -0.6282, -0.9031, -0.1242, -0.905, -0.7535, -3.1999, -23.5324, + 12.1675, 12.7254, 13.2135, 14.1985, 15.5137, 16.9806, 16.3379, 13.0366, 8.366, 4.1955, 1.8866, 0.9609, 0.6094, 1.9753, 4.6385, 5.7596, 1.8347, -3.2804, -8.2098, -10.9983, -11.7998, -9.9732, -7.5792, -9.7338, -14.223, -17.7555, -18.8744, -17.4527, -14.5201, 8.5409, 5.7667, 4.956, 3.2564, 0.0271, -3.4128, -3.9385, -3.7737, -3.3325, -3.1328, -4.9568, -24.6241, + 9.112, 9.5643, 6.4962, 4.5254, 2.7757, 3.3307, 2.9999, 2.2174, 0.0229, -1.1179, 0.0764, 1.8616, 1.8079, -0.7101, -2.7389, -1.9102, -1.6224, -0.6549, 0.4717, -1.0044, -2.57, -7.5968, -14.5192, -14.0727, -5.93, 1.9148, 1.1204, 1.1277, 5.0226, -1.2631, 1.5663, 1.1958, 1.8714, 2.7703, 3.0917, 1.6973, 0.4038, -0.8317, -0.0474, -10.4545, 2.316, + 17.413, 18.4485, 19.823, 21.9391, 23.4308, 21.8507, 17.8532, 15.0747, 14.5401, 16.0453, 15.3416, 9.4703, 1.3616, -5.8986, -10.9098, -13.9034, -16.0964, -17.8246, -18.9143, -19.3551, -18.7588, -15.8862, -10.9884, -9.6544, -11.1991, -11.1716, -7.9982, -9.7072, -14.3257, 2.4025, 0.4919, 0.6628, -0.0126, 0.21, -0.6177, -0.6937, -0.1321, -0.2311, -0.0316, -2.0484, -21.0953, + 23.3464, 23.7587, 23.3198, 22.6359, 21.2675, 18.808, 15.3692, 11.2959, 7.5849, 4.5951, 2.3321, 0.6206, 0.1406, 1.2537, 2.7028, 2.3454, -1.0568, -5.4629, -9.1807, -11.1211, -11.633, -11.0576, -12.1808, -16.0691, -19.9208, -21.7935, -21.7452, -20.5008, -19.6545, 1.7728, 0.6055, 0.3687, 0.2898, 0.001, -0.3228, -0.5114, -0.4052, -0.3988, -0.136, -1.2637, -21.53, + -3.6391, -1.828, -2.2141, -2.8117, -2.3529, -0.6648, 0.7132, 2.6314, 3.0327, 3.8765, 4.7159, 6.0331, 6.984, 8.0909, 8.2184, 7.4433, 5.1418, 1.2303, -2.8864, -5.9181, -7.2732, -6.6797, -6.8357, -5.8669, -3.4482, -1.6078, -1.4231, -1.7328, -0.9288, 5.0214, 2.8439, 1.2445, 2.6452, 1.4416, 1.0353, -0.6548, -1.6658, 0.1662, -1.8989, -10.1785, -9.4487, + 28.59, 28.4485, 26.4597, 24.2982, 20.1833, 14.5406, 9.8101, 7.1801, 4.6176, 2.4138, 0.7001, -2.5862, -4.1909, -6.9729, -9.1018, -9.6205, -10.881, -11.6812, -10.5387, -10.434, -10.1742, -2.9512, -0.769, -7.7471, -11.9011, -14.8085, -14.9057, -14.9118, -13.0663, -2.8812, -2.2219, 3.1021, 7.3299, 4.0256, 5.0339, 1.4276, -2.9978, -1.6788, -3.5104, -7.6288, -12.833, + 17.2116, 17.2987, 16.9789, 18.3176, 20.751, 21.2753, 16.7522, 10.5133, 5.1142, 1.071, -1.6324, -4.2824, -5.9266, -7.1525, -5.1415, -0.8661, 3.3622, 1.3492, -3.6601, -7.4519, -9.7242, -8.3497, -5.386, -9.2331, -14.7369, -17.544, -17.6867, -15.904, -15.3169, 3.1075, 0.5173, 0.2992, -0.3406, -0.3, 0.1907, 0.194, 0.147, -0.5, -0.5615, -2.7535, -21.0709, + -3.1988, -4.0916, -5.2881, -5.3666, -5.4604, -5.669, -4.5675, -2.8244, -2.3646, -2.2769, -2.5378, -3.9469, -5.3482, -6.8601, -7.9884, -9.9236, -10.036, -5.5943, -1.7619, 2.5871, 4.2247, 6.6177, 8.6593, 10.3741, 10.0072, 13.2806, 13.3423, 12.7747, 13.2373, -10.5369, -13.7286, -14.4672, -7.5571, -1.4016, 2.5948, 5.6055, 7.446, 9.7262, 10.9589, 11.36, 20.0322, + 6.7783, 7.2343, 7.5331, 7.7761, 7.5074, 7.6964, 8.5725, 10.1613, 11.2545, 11.2432, 10.164, 8.2217, 5.7244, 3.0761, 1.5943, 2.29, 3.8412, 4.4389, 2.8003, -1.0955, -5.1726, -8.1891, -9.0934, -10.2132, -12.0854, -15.5298, -19.4471, -23.4981, -23.5838, 4.8567, 5.6416, 5.2432, 4.8449, 4.3077, 1.0329, -3.6054, -4.753, -5.3304, -4.6545, -7.5837, -26.896, + 8.4973, 9.579, 10.3958, 11.0142, 10.3482, 7.3892, 3.2338, 0.0093, -2.226, -2.9444, -3.5594, -3.3833, -3.1035, -3.2915, -3.1816, -1.7272, -1.5694, -1.309, -0.9698, -1.6827, -1.8826, -2.4935, -2.7299, -3.3411, -3.5987, -3.5349, -4.0664, -5.515, -4.3567, 3.6788, 2.2969, 2.2073, 2.205, 0.4179, -0.5426, -0.2219, -1.2268, -0.5609, -0.3836, -7.8702, -9.1107, + 17.6231, 17.9262, 18.5472, 20.0216, 20.3023, 17.2887, 12.1996, 7.3566, 4.7274, 3.6547, 4.0756, 5.881, 5.504, 1.8555, -4.482, -8.8437, -12.2983, -14.1074, -15.701, -15.7749, -15.0957, -12.7982, -7.9092, -8.3535, -11.5389, -11.4704, -7.3965, -5.1788, -6.015, 7.6735, 4.3849, 2.0779, 0.2256, -0.3031, -1.8488, -2.2661, -1.6177, -1.6092, -1.8719, -4.8451, -18.7476, + 12.8205, 14.2684, 15.5868, 16.7831, 17.8071, 18.5983, 18.8925, 18.18, 16.6295, 15.0296, 14.4114, 15.1384, 15.0538, 11.9286, 6.3973, 0.5192, -5.4829, -11.2613, -15.915, -19.5693, -22.3818, -23.8883, -24.2652, -24.1324, -21.657, -17.7761, -13.9964, -14.512, -13.2068, 12.3627, 9.0753, 5.2809, 2.4178, 1.3885, -1.6252, -3.9036, -5.7988, -6.3917, -5.9659, -6.8402, -21.2728, + 20.5006, 19.7859, 17.9876, 15.5578, 13.4254, 11.0431, 7.8434, 4.6796, 1.3542, -1.1988, -3.1242, -4.8289, -6.6124, -8.2071, -8.4241, -6.4513, -2.471, 0.8654, 0.4899, -3.0973, -6.3396, -7.6626, -7.3643, -5.6214, -3.7466, -5.6286, -8.3519, -11.4399, -12.9632, 6.3044, 6.3906, 3.8753, 0.4819, -1.9504, -2.646, -2.8098, -2.5547, -2.1552, -0.9715, -3.9646, -18.7636, + 4.95, 4.5607, 3.172, 2.1209, 0.349, -1.0626, -3.5132, -4.7851, -6.2971, -7.3286, -6.8625, -6.4027, -6.8983, -8.1437, -7.2159, -6.5081, -6.243, -5.2328, -3.1319, -1.8582, -0.2079, -0.4158, 1.4593, 6.3046, 10.2618, 11.6043, 10.489, 12.3236, 14.512, 7.5422, 7.3893, 6.7744, 4.7439, 3.7082, 1.4685, -2.1681, -2.4628, -6.2634, -5.1931, -15.539, 4.5238, + -7.141, -6.5576, -5.8532, -3.8568, -2.3391, -0.1389, -0.2988, -0.6152, -1.3909, -2.2598, -3.3096, -3.1888, -4.0487, -5.2444, -3.1046, -1.246, -0.3725, 1.6801, 1.7857, 1.4104, 0.4592, 2.1738, 4.1615, 5.0013, 6.4493, 6.5541, 6.132, 7.0552, 8.1032, 1.4568, 1.3024, 1.2345, 0.1461, -0.9716, 0.5343, 1.2784, 1.2357, -0.0481, 1.4818, -7.6504, 7.6553, + 2.7066, 2.4471, 1.1636, -0.0118, -0.1417, -0.8857, -3.1245, -4.8414, -6.9143, -7.764, -7.8038, -8.175, -9.1533, -9.9253, -10.0476, -7.9885, -5.4758, -0.6781, 2.4938, 3.5356, 5.3377, 10.4949, 13.4549, 12.5233, 9.2737, 7.1566, 5.3825, 4.3104, 2.6502, 1.7997, 1.0976, 0.5063, 0.9888, -0.0215, 0.8543, 0.3799, 1.5785, 0.4497, 0.6056, -8.2389, 0.7587, + 15.6038, 13.7257, 10.761, 8.3191, 6.7695, 6.1252, 5.5801, 6.3511, 7.5592, 7.0879, 5.0425, 2.3556, -0.6287, -2.0902, -1.8476, 1.1771, 5.218, 6.2633, 2.3465, -3.3395, -7.6295, -9.3311, -8.2251, -8.2814, -12.4973, -15.3911, -16.5987, -12.5111, -11.9141, 6.9187, 2.666, -0.5025, -2.5042, -3.4261, -3.1605, -1.1635, 1.6816, 1.5678, 1.5285, -3.6059, -21.5346, + 17.6619, 19.2955, 19.3999, 18.1758, 14.7064, 10.338, 5.4051, 0.8448, -2.7673, -5.8069, -8.5749, -10.4074, -11.7428, -13.3545, -14.7279, -15.0946, -14.9717, -14.1635, -12.0366, -9.1704, -5.5296, 1.7983, 8.7621, 10.6721, 9.0083, 6.252, 0.4593, -2.8951, -1.5362, 17.6102, 14.966, 11.8151, 6.0356, -2.6221, -10.0292, -11.4635, -9.0063, -4.3623, -3.1041, -9.8395, -15.6595, + 15.5037, 19.5752, 20.4189, 20.0547, 19.078, 16.8051, 14.6828, 13.1886, 10.1566, 3.7762, -1.134, -2.4739, -2.6979, -3.0349, -2.9212, -1.9641, -2.139, -4.2528, -5.4908, -5.4648, -2.3822, 1.3316, 0.1433, -8.8993, -18.5802, -23.4001, -24.1794, -22.3013, -23.3986, -0.5049, 2.4704, -2.1518, 0.1889, 8.8275, 7.0883, -1.7491, -2.8957, -3.5389, -3.58, -4.1549, -22.0424, + 22.2571, 23.2194, 23.3933, 23.2954, 22.5841, 20.0392, 15.7479, 11.5849, 8.77, 7.9103, 8.1392, 8.4163, 7.8831, 4.6926, -0.6859, -6.5062, -11.4228, -14.857, -17.9311, -19.2012, -19.8667, -20.3831, -19.2002, -15.1301, -11.0896, -11.7977, -14.413, -13.8987, -11.5493, 6.2481, 3.7903, 3.5761, 3.3013, -0.8054, -2.9745, -3.092, -3.5267, -2.491, -0.8625, -3.1636, -20.4183, + 9.8965, 9.6623, 8.329, 7.4658, 5.9247, 5.2895, 3.6738, 3.1009, 1.1973, -0.2394, 0.0744, -0.2488, -1.7673, -2.8794, -4.7879, -4.3784, -4.5885, -3.9967, -2.8591, -1.8656, -2.4063, -3.7709, -4.0771, -4.7175, -3.4331, -2.4372, -2.8219, -1.4458, -1.8932, 10.2458, 7.5639, 2.768, -9.9537, -3.5803, -1.8907, 0.2144, 0.7131, -0.3057, 0.1415, -5.9163, -11.5491, + 15.2412, 13.6648, 11.746, 11.4262, 12.464, 13.7257, 13.2285, 9.7944, 4.8606, 1.4831, -0.3682, -1.5802, -2.2343, -0.4399, 3.1592, 4.1899, -0.2603, -4.7397, -7.1446, -6.9457, -6.2341, -4.9071, -5.6164, -9.2612, -10.3548, -11.0953, -11.7433, -14.5977, -17.4609, 6.0283, 4.4046, 1.6269, -0.9371, -1.3835, -1.4248, -1.2533, -0.8106, -1.1426, -1.5174, -3.5905, -22.8504, + 10.9657, 10.2369, 8.6562, 6.5066, 5.4153, 4.3801, 3.7307, 2.9701, 3.0231, 3.962, 5.6227, 6.8354, 6.8607, 7.7333, 9.3711, 9.9052, 7.3966, 2.1887, -3.3161, -8.0311, -11.2107, -14.2345, -15.6874, -15.1299, -12.3738, -7.8431, -8.18, -10.637, -9.1168, 12.4941, 8.2803, 6.3797, 5.8238, 4.5394, 1.5368, -3.0238, -7.3749, -9.2127, -8.2187, -11.2239, -21.6561, + -1.8184, 2.4357, 5.5586, 6.9268, 6.9316, 6.6729, 5.8397, 5.6316, 4.9978, 3.5427, 2.8029, 2.1519, 1.5431, 0.6158, 0.3469, -0.516, -0.7873, -1.1647, -1.4196, -2.0573, -2.9471, -3.3866, -4.0651, -4.9043, -5.5018, -6.2789, -6.6909, -6.974, -7.4862, 0.3871, 0.0109, -0.4655, -0.7491, -0.9646, -0.7984, -0.5764, -0.2825, 0.8617, 1.8001, 0.7766, -8.6084, + 26.9824, 24.7422, 20.3883, 16.4687, 12.785, 8.7194, 4.1423, 1.1187, 0.4923, 1.295, 1.3167, -1.4325, -5.9855, -8.8959, -10.4619, -7.317, -2.2777, -2.0173, -3.2424, -2.3419, 0.2272, 1.3235, 1.3113, -5.1772, -12.0604, -15.3385, -15.4975, -15.3067, -13.9604, 3.9044, 0.9553, -0.105, -0.6867, -0.6467, -0.6666, -0.6241, -0.2928, -0.2046, -0.3915, -1.2419, -18.1483, + 17.4264, 17.8739, 18.0003, 19.1004, 20.7794, 20.0129, 15.2235, 9.3432, 5.1301, 3.7231, 2.3327, 1.2995, 1.8338, 4.1579, 7.7891, 10.5489, 10.0894, 9.6396, 4.8572, -4.9005, -15.2998, -20.5168, -23.2742, -23.953, -23.553, -22.129, -20.9638, -20.9315, -23.6395, 0.5658, 0.703, -0.1044, -0.6743, -0.6856, -0.735, -0.3973, 0.2942, 0.8749, 0.8195, -0.6608, -23.7592, + 11.0645, 10.901, 10.3455, 9.1551, 8.2401, 8.4773, 10.1716, 11.9195, 13.3973, 14.303, 14.0566, 13.0477, 11.7356, 9.5219, 7.83, 6.8087, 4.1182, -0.0372, -5.3649, -10.0547, -11.7439, -11.6649, -9.2813, -10.9454, -17.6273, -22.3121, -25.1873, -26.7049, -24.1694, 1.5313, -0.0939, -0.8118, -1.4436, 1.2266, 2.0907, 1.6972, 1.5907, -0.0005, -1.5372, -4.2496, -26.64, + 7.2201, 8.5015, 11.5206, 11.9242, 7.928, 3.2514, 0.5668, 0.7646, 1.2768, 1.9716, 3.4275, 3.9772, 2.0908, -0.4764, -2.4307, -1.9307, -0.2561, 1.3364, 0.1271, -2.1785, -4.4197, -5.1263, -6.374, -7.1163, -6.5611, -6.9173, -7.2567, -7.3864, -7.4542, 4.2215, 2.477, 1.4908, 0.9538, 0.278, -2.2207, -1.8537, -1.0888, -0.2235, 0.301, -4.3353, -11.8723, + 9.0358, 8.4259, 6.9459, 5.289, 4.7496, 6.3098, 9.2991, 13.3013, 15.9079, 15.539, 12.4964, 10.644, 9.7104, 9.7273, 8.5423, 3.6988, -2.7453, -8.0067, -11.5004, -13.3609, -14.6771, -13.2598, -11.305, -7.8208, -9.6607, -12.4588, -13.3476, -14.2784, -17.201, 1.6164, -1.2748, -1.3834, -0.4721, 0.9792, 1.3035, 2.0628, 2.1638, 0.6958, -0.7525, -4.9387, -23.7718, + 9.9565, 8.4628, 5.9625, 4.33, 2.9878, 3.3325, 3.411, 2.9855, 3.4264, 4.1032, 5.0697, 5.2769, 4.9009, 3.1001, 1.4373, -0.264, -1.896, -3.0143, -3.5656, -4.3939, -4.4464, -4.68, -5.3044, -6.0923, -5.6495, -6.5418, -7.2604, -8.5353, -7.0993, 1.0313, 1.1537, 1.5169, 0.9291, 0.7698, 0.3306, -0.6705, -0.6783, -0.1746, -0.1455, -4.0627, -9.9902, + 8.8206, 8.3311, 7.6969, 7.4773, 8.8832, 10.4436, 11.5039, 11.592, 9.4044, 5.3729, 2.7965, 1.9244, 0.844, 0.9343, 3.0627, 6.0994, 4.9989, -0.1279, -4.374, -6.7306, -7.8914, -6.9026, -5.4598, -8.4881, -12.8495, -16.5109, -17.0277, -14.2238, -9.5997, 15.6704, 10.6049, 9.844, 7.9028, 1.2354, -5.4491, -8.2374, -7.873, -7.9121, -7.2858, -8.5, -25.1681, + 28.034, 39.0868, 27.1887, 10.6361, 11.9455, 17.4394, 5.1212, 0.4727, 0.9604, -3.2583, -4.9003, -4.7245, -5.4538, -5.8998, -6.9947, -8.1227, -7.9559, -7.4467, -7.2961, -8.3144, -8.2615, -7.493, -6.2339, -6.9302, -6.771, -7.9933, -8.7878, -9.0802, -8.9666, 0.2832, 0.1164, 0.0146, 0.0499, -0.3417, -0.2028, 0.0292, -0.0176, 0.3328, 0.3092, -0.5731, -8.1546, + 13.2856, 13.6736, 13.8385, 14.28, 16.0154, 17.101, 16.3952, 13.2274, 9.9508, 8.9754, 9.0915, 10.0588, 8.791, 4.7013, -0.6836, -5.8039, -9.0189, -11.2256, -12.734, -12.444, -11.1395, -8.86, -7.8172, -12.7618, -18.4517, -20.0185, -18.1437, -12.9371, -7.3458, 15.2491, 9.0836, 7.8889, 2.1805, -3.0815, -5.2994, -5.5285, -5.1346, -5.1469, -4.4882, -5.723, -22.9727, + 13.2791, 36.046, 37.8677, 20.5156, 1.8115, 5.3912, 6.3369, -1.8419, -4.5104, -2.1483, -1.6031, -4.4187, -2.3622, -5.5552, -5.8859, -5.4153, -6.3869, -5.0848, -6.7256, -6.3113, -6.6644, -6.7067, -6.3379, -7.1113, -6.5094, -6.6908, -7.2644, -7.5701, -8.1431, 0.0788, -0.2498, 0.1241, -0.2112, 0.0855, -0.0675, 0.3132, 0.2893, 0.0553, 0.4068, -0.8245, -8.0347, + 7.9344, 6.5125, 3.7957, 3.5965, 6.7588, 12.694, 16.5097, 15.1028, 8.0593, 1.9598, -1.2146, -2.5926, -3.3772, -1.3486, 3.1728, 5.8914, 1.9225, -4.7654, -9.1401, -9.7051, -8.8318, -4.5607, -2.0376, -6.245, -8.0736, -8.0805, -5.2827, -6.9369, -11.718, 7.2258, 3.3652, 1.3586, -1.1046, 0.1664, -0.3445, -1.186, -1.2597, -1.3364, -2.1233, -4.7616, -22.1072, + 21.0378, 20.1437, 17.5203, 14.9435, 12.2481, 9.7639, 5.599, 1.4969, -1.3751, -3.1146, -3.919, -4.7517, -4.5423, -4.8816, -3.7907, -3.156, -2.1567, -0.7505, 0.1795, -0.4587, -2.1088, -3.6718, -5.6034, -7.3929, -8.2906, -9.552, -10.5896, -12.2849, -10.5415, -10.7549, -8.4301, -5.8121, -1.4994, 2.1408, 6.5891, 7.6924, 9.5764, 7.2596, 6.0779, -12.8398, -1.9629, + 10.7156, 9.5865, 7.6225, 6.9649, 7.0204, 6.9685, 5.2279, 3.7124, 2.4551, 1.6576, 1.9988, 3.6736, 4.0688, 1.8389, -1.2786, -2.3368, -0.4395, 1.0954, 3.9267, 3.5576, -1.4334, -6.6048, -9.776, -10.9008, -10.7709, -9.343, -10.2106, -9.759, -9.2378, 2.5943, 0.3766, -1.2329, -1.3523, -0.5254, -0.1927, -0.3463, -0.4383, 0.4702, 1.6846, -1.0379, -12.5558, + 24.058, 24.4379, 23.9745, 23.0444, 20.8465, 16.8979, 11.813, 7.1514, 3.368, 0.5959, -1.6053, -3.718, -5.6992, -7.0693, -6.5902, -3.1806, 1.0957, 2.1175, -1.3667, -5.8106, -7.7326, -6.3061, -6.7167, -11.4328, -17.2877, -19.9514, -19.4929, -18.2702, -17.1703, 1.8172, -0.1844, -0.2118, -0.1481, -0.6409, -0.6132, -0.3659, 0.2614, 0.3884, 0.5934, -0.896, -20.2332, + 19.4765, 20.139, 19.4603, 17.8222, 14.3397, 10.2003, 4.8581, -0.7364, -4.1646, -6.0966, -7.2789, -8.6454, -10.5389, -11.5302, -9.4624, -7.2408, -3.9524, -2.2222, -4.3879, -6.9029, -9.6078, -8.5139, -4.7196, -4.0072, -5.4425, -3.2306, 1.5193, 5.03, 5.8358, 16.6913, 13.78, 8.079, 4.9477, 0.9965, -4.7924, -7.0379, -7.8346, -6.8472, -7.4504, -10.5321, -11.1317, + 18.8135, 17.0829, 14.0965, 11.2672, 7.9285, 3.6326, 1.0246, 1.6274, 5.2441, 9.5096, 12.7855, 11.9891, 9.99, 8.1345, 7.9624, 7.3196, 8.1668, 7.4695, 3.3884, -5.5692, -13.6276, -18.3033, -22.2152, -22.3568, -16.4382, -9.9941, -12.6602, -22.2049, -24.0632, 8.03, 3.8659, 0.487, 0.5409, 0.8745, -0.3373, -1.1358, -2.3213, -3.1408, -3.2458, -3.6172, -26.2789, + -3.1846, -2.1461, -1.3884, -2.1168, -3.4536, -2.2068, -1.9328, -3.2837, -4.0724, -3.4451, -3.7064, -3.449, -5.5867, -7.8526, -8.9224, -10.9618, -10.414, -7.1444, -2.693, 1.689, 4.0196, 6.33, 6.7767, 10.2897, 10.6153, 11.6584, 13.3164, 12.9788, 10.2869, -8.7628, -13.5736, -14.7094, -7.7628, -1.0738, 2.3985, 3.7455, 7.9153, 9.1097, 10.9709, 11.7425, 19.7352, + 7.2036, 10.7988, 12.0301, 12.67, 13.909, 16.0294, 17.1742, 15.7924, 13.0556, 11.3737, 9.8981, 9.758, 10.055, 8.6757, 4.393, 0.9731, -2.5467, -5.8685, -7.3935, -7.9704, -6.2553, -7.4006, -13.7008, -21.8328, -25.5284, -24.9555, -17.274, -13.6475, -19.4157, -0.8046, -1.7221, 0.6106, 5.7975, 8.4089, 4.3333, -1.5262, -3.211, -3.4206, -4.0492, -4.4166, -25.3279, + 15.5255, 15.8281, 15.8649, 15.5717, 15.2512, 14.5946, 13.3549, 11.766, 10.2176, 8.4641, 7.0906, 6.0253, 5.1563, 4.7439, 4.4714, 3.6019, 0.9681, -2.7655, -6.2281, -9.0931, -11.2485, -13.4855, -15.2719, -16.2999, -17.251, -18.5206, -20.9106, -20.3915, -17.03, 7.378, 8.0307, 7.885, 7.6236, 5.1345, 1.2557, -3.7418, -6.8045, -8.6459, -8.6051, -9.5101, -22.9827, + 26.7348, 25.8552, 24.2536, 22.168, 19.2892, 15.067, 11.8818, 10.349, 10.6841, 11.6366, 12.5339, 12.4939, 11.6206, 9.1288, 4.6195, -0.5596, -5.8142, -10.4221, -14.3446, -17.6431, -19.9802, -21.2101, -22.1807, -21.9, -20.1487, -18.1387, -18.1454, -19.6347, -18.1941, 5.5041, 1.739, -0.1498, 0.3482, -0.1172, -0.967, -1.1456, -1.3452, -1.2394, -1.1363, -1.491, -21.2326, + 16.937, 16.4331, 14.8117, 13.584, 11.6269, 10.1575, 7.6822, 5.8162, 3.2955, 0.7078, -0.94, -2.4858, -3.3054, -4.9715, -5.404, -5.2105, -5.0578, -4.9223, -4.7159, -4.8903, -5.6388, -6.4062, -6.4586, -6.1964, -6.2205, -6.7543, -6.8166, -7.3223, -7.3349, -2.386, -1.5474, -0.5275, -0.2007, 0.87, 2.1354, 2.2672, 1.9194, 1.3885, 1.7931, -5.712, -7.0233, + 18.1837, 17.9105, 17.8502, 18.6001, 17.6649, 14.2299, 8.9135, 3.9793, 0.2595, -2.5341, -4.9127, -7.3705, -8.608, -10.0958, -9.6568, -8.5105, -6.6859, -1.7349, 3.3029, 3.1008, 0.1928, -0.6889, -2.6251, -6.034, -10.08, -12.4257, -10.0527, -7.9815, -14.1909, -0.8841, -2.2545, -2.1948, -0.1934, 1.8452, 1.587, 0.0467, 0.886, 1.7017, 2.0046, -2.5444, -18.3771, + 8.7179, 7.6147, 4.8975, 2.3828, 0.6009, 0.0492, 0.7007, 3.0024, 5.6126, 8.3164, 9.7108, 8.5643, 5.5842, 2.4437, 0.8618, 1.4883, 2.2665, 4.0837, 2.0839, -2.0359, -5.2412, -7.0937, -7.9286, -7.0963, -7.3007, -8.8955, -10.5985, -11.5307, -11.2613, 4.1091, 1.9827, 0.6908, -1.0075, -0.1945, -0.4742, -0.465, 0.2047, 0.0728, -0.1453, -4.7735, -16.8928, + 26.5577, 26.0733, 24.6549, 22.5723, 19.6449, 15.1079, 9.6936, 5.0965, 2.0343, 0.4929, -0.51, -0.7852, -0.6639, -1.6495, -4.5761, -7.3418, -9.5136, -10.9969, -12.3139, -12.694, -11.8566, -8.9787, -3.5622, 1.2887, 1.2102, -6.9904, -16.4084, -22.1027, -23.4832, -1.8879, 0.4885, 2.0094, -0.3326, -2.5347, -2.2882, -2.5729, -1.0909, 0.4876, 5.9716, 1.75, -19.5897, + 35.3242, 34.3711, 32.268, 29.4806, 25.8876, 21.5217, 17.0469, 12.7325, 8.2745, 3.717, -0.9461, -5.4939, -9.1998, -10.9322, -11.5916, -11.7605, -11.9938, -12.5431, -13.0923, -13.2971, -13.3947, -13.1377, -12.6123, -12.5003, -13.0962, -13.2815, -13.653, -14.1174, -13.9808, 0.5697, 0.0342, -0.0298, -0.0559, -0.1023, 0.0891, -0.0151, -0.1749, -0.0061, 0.0508, -0.3598, -13.8339, + 10.0703, 9.7251, 9.1433, 8.8944, 8.618, 8.9798, 8.7995, 7.6156, 6.5867, 6.0265, 5.9165, 4.8201, 3.4139, 2.636, 2.763, 3.8113, 3.0665, -0.158, -4.1852, -6.9646, -8.5002, -7.9262, -6.4833, -8.3135, -11.7801, -15.4185, -14.2921, -13.7284, -13.1365, 1.2932, 3.3955, 6.0907, 4.2778, 4.2667, 1.2855, -2.6003, -1.0796, -3.6746, -1.8634, -11.3916, -19.3656, + 23.3051, 24.1993, 23.9215, 23.6862, 23.1858, 21.5213, 18.1183, 13.5369, 8.5586, 3.3648, -2.7305, -8.4197, -12.7332, -14.9501, -15.7545, -16.1289, -14.8115, -12.7042, -10.1815, -6.8723, -4.1455, -3.1746, -3.2618, -1.9552, -2.0348, -7.0796, -14.1032, -17.0807, -15.2758, 6.0612, 4.0067, 0.6827, -0.7321, -1.3626, -1.3544, -1.3699, -1.2448, -1.0738, -0.8706, -2.7423, -19.3798, + 15.2674, 16.9866, 17.1277, 16.7099, 15.7308, 13.2318, 9.297, 4.9391, 0.8073, -2.3215, -4.1763, -5.419, -5.9209, -6.5426, -6.5178, -6.1109, -5.5659, -5.2001, -5.0134, -5.0517, -5.0368, -5.4231, -5.5314, -6.1976, -6.3703, -6.2889, -5.3624, -6.1367, -5.9099, -8.075, -7.3361, -4.4931, -3.1183, -2.2693, -0.445, 2.6648, 5.708, 7.3558, 8.7204, 1.2878, -1.4334, + 16.2521, 17.5727, 18.3716, 19.7318, 20.2218, 17.5895, 11.4595, 3.5824, -4.4163, -9.7646, -11.0944, -11.4598, -11.7153, -11.2087, -10.3436, -9.499, -7.9409, -5.7447, -1.7839, 3.2246, 5.5449, 5.2691, 3.5281, 1.4077, -0.7885, -7.8706, -13.4426, -14.7741, -11.9087, 8.1501, 11.0831, 13.4143, 10.3995, 2.9803, -3.3969, -7.2017, -8.5882, -8.4386, -8.7227, -9.6791, -18.788, + 13.3298, 15.6004, 16.9495, 17.9742, 18.6413, 18.0052, 15.3407, 10.8188, 5.7704, 1.6139, -1.5541, -4.5241, -6.85, -8.6887, -10.0915, -10.3456, -9.1067, -7.2349, -3.6908, -0.4604, -0.7272, -4.5894, -7.5233, -6.1277, -2.5212, -4.8361, -11.8782, -16.9767, -16.3176, 9.514, 11.6129, 9.6344, 6.8283, 1.8214, -5.0008, -6.9907, -7.4822, -6.786, -5.353, -7.7983, -21.5097, + 5.8509, 5.0121, 4.1809, 3.1146, 2.3783, 3.1729, 5.0219, 8.3707, 10.9759, 11.227, 8.3063, 4.3902, 0.4943, -2.3167, -1.645, 1.9935, 5.6473, 4.3761, -0.8021, -4.8923, -7.3829, -8.9257, -7.0734, -4.5608, -5.6127, -9.9029, -12.5815, -12.1258, -6.6911, 19.4769, 13.9666, 10.8452, 9.4207, 4.267, -4.7851, -10.4839, -11.6782, -11.7512, -9.0329, -10.245, -24.1213, + 21.8999, 23.2973, 23.7997, 23.4635, 22.0363, 18.0109, 11.7586, 5.0662, 0.6662, -2.2727, -5.6763, -8.5064, -10.4473, -10.5884, -9.8688, -7.3515, -1.6565, 4.9891, 8.0386, 5.1463, 1.6954, -0.6651, -6.4585, -12.0333, -17.064, -19.1042, -20.056, -19.6043, -18.5148, 1.3036, -0.0062, -0.2979, -0.3133, -0.533, -0.7489, -0.3368, 0.3007, 0.2781, 0.7521, -0.3986, -20.6963, + -10.8987, -3.8431, 0.8023, 3.7818, 5.0658, 6.8699, 5.8536, 5.2186, 3.8311, 2.242, 1.7635, 0.0185, -1.2264, -1.7443, -3.2128, -1.6985, -0.4682, -0.6943, 1.3731, 2.1612, 2.0833, 0.947, -0.8848, -2.3964, -2.7117, -2.4339, -2.8978, -3.2996, -3.6012, 2.7097, 2.9692, 3.1594, 3.0175, 3.5504, 2.5518, -0.2289, -2.095, -2.3143, -3.331, -9.9888, -7.1246, + 24.4808, 26.3759, 27.594, 28.3806, 27.5669, 22.5831, 15.7417, 10.5723, 9.0486, 9.8475, 11.5983, 11.3131, 7.1102, 0.2086, -7.1702, -11.973, -14.3609, -16.1449, -17.3317, -17.8091, -17.4066, -16.0482, -15.0664, -15.2895, -16.4422, -17.0076, -17.0725, -17.2911, -16.0079, 1.3349, -0.0323, -0.0023, -0.0696, -0.4582, -0.2103, -0.2903, -0.1486, -0.0517, 0.5839, -0.6555, -18.4443, + 17.9414, 16.0904, 14.3699, 13.3391, 11.1223, 8.3964, 4.984, 2.4988, 0.7921, 0.1608, -0.231, 0.1816, -0.4705, -2.1166, -2.9171, -3.7835, -3.0302, -2.2559, -1.96, -0.9583, -1.2307, -3.4055, -6.3253, -8.4085, -9.7194, -10.3891, -10.6675, -10.8207, -11.1873, 1.0986, 0.4777, -0.0911, -0.085, -0.2734, 0.014, -0.2098, 0.7129, 0.898, 1.8977, -4.4395, -12.1029, + 12.4723, 14.3737, 15.7331, 17.5345, 18.5865, 17.4102, 13.1675, 8.1222, 3.7914, 0.4168, -2.7856, -5.0694, -6.1658, -6.8186, -6.5122, -3.9192, 0.1995, 5.0703, 4.8669, 1.2909, -0.9029, -1.6452, -6.8885, -13.7427, -17.9265, -18.6395, -13.8409, -11.8927, -16.286, 1.0018, -0.413, 0.2921, 0.9706, 3.0372, 2.3311, -1.1419, -1.468, -0.837, -1.0945, -2.6785, -23.0503, + 16.1352, 15.6199, 13.6322, 10.9321, 8.0808, 7.3912, 8.2284, 10.3433, 11.9724, 11.5988, 9.3631, 5.6849, 2.7468, -0.1363, -1.7113, -0.5317, 2.3026, 3.9081, 0.3916, -4.3635, -7.2068, -8.5384, -8.455, -8.954, -13.2029, -18.1608, -21.6849, -22.2538, -23.132, 1.1059, 0.2225, -0.9789, -1.0458, -0.6792, -0.6786, -0.0893, 1.8547, 2.2928, 0.8548, -2.8591, -24.9911, + 28.0419, 26.8927, 23.9676, 20.3423, 17.0949, 14.1432, 11.117, 8.5048, 5.9497, 3.7523, 1.8284, -1.1682, -4.22, -7.3805, -9.6413, -9.8772, -7.8838, -5.3446, -3.541, -3.9253, -6.0372, -7.8179, -8.639, -8.2594, -11.0251, -14.9594, -17.1292, -17.6345, -17.1513, 2.0146, 1.0165, 0.2708, -0.3124, -0.5924, -0.7003, -0.5256, -0.1176, 0.1111, -0.074, -1.0907, -18.2597, + 30.4937, 29.9533, 27.013, 23.2537, 19.3056, 15.2225, 11.4303, 9.6244, 9.1658, 8.8058, 7.5946, 3.9214, -0.3706, -4.6724, -8.3883, -10.6272, -11.6333, -12.3129, -12.9451, -13.0994, -12.8851, -12.729, -13.3639, -13.9071, -13.6304, -13.0095, -13.0398, -14.2416, -14.9284, 0.6244, 0.4573, 0.2518, -0.4563, -0.2954, -0.1108, -0.0098, 0.1405, 0.0912, 0.3156, -1.0087, -16.5521, + 23.7058, 24.6386, 24.654, 23.9896, 22.7528, 20.4522, 16.9148, 13.0348, 9.6982, 7.0016, 4.5976, 2.122, -0.6149, -3.6746, -5.8863, -5.9902, -4.5281, -3.6266, -4.892, -9.1128, -13.5269, -16.4106, -17.2411, -16.4096, -15.1425, -15.8149, -18.5726, -21.0323, -21.086, 0.97, 2.5909, 2.5737, 1.8731, 0.5116, -0.3889, -0.5545, -1.3812, -1.8817, -1.7258, -2.5873, -20.1722, + 22.205, 22.3808, 20.3781, 16.4796, 12.6684, 8.8562, 3.8726, -0.891, -3.6288, -4.2849, -3.4387, -1.6917, 0.1253, 1.9297, 2.5614, 1.1487, -1.7631, -3.8451, -4.6916, -4.6895, -4.3072, -5.2689, -7.0584, -8.3927, -8.7357, -10.2762, -11.8104, -13.7994, -14.0324, 5.754, 5.5094, 3.1104, 0.8059, 0.0318, -1.6334, -2.2746, -2.0707, -2.1335, -1.8766, -5.2228, -18.1315, + 17.6753, 18.8195, 20.1357, 22.2056, 22.9569, 20.8704, 15.5249, 10.2701, 6.9749, 6.5302, 7.5814, 7.0271, 2.6959, -1.7891, -4.8427, -7.5373, -9.7567, -11.089, -11.6891, -11.88, -12.2196, -11.3183, -11.2853, -12.8185, -14.2184, -14.2772, -13.2856, -15.1315, -16.1298, 1.6839, 0.9589, 0.5363, 0.356, 0.0003, -0.3851, -0.4445, -0.1741, -0.4978, -0.0434, -1.9906, -19.7528, + 16.983, 17.0052, 16.9926, 18.4021, 19.9925, 19.1283, 15.4081, 10.3401, 5.5724, 1.5019, -1.4332, -3.0065, -3.3422, -1.3956, 2.0439, 4.2794, 1.1281, -3.7178, -7.4632, -8.5376, -7.6364, -6.3039, -11.6545, -18.3967, -21.4453, -20.788, -16.5366, -10.0359, -7.0843, 11.0713, 4.6537, 0.5072, -0.3393, -0.6602, 0.5953, -2.0626, -2.4851, -3.0603, -3.5773, -4.6428, -20.8691, + 17.7707, 19.5364, 20.6287, 20.9849, 20.093, 17.6674, 14.5484, 11.0817, 6.902, 2.2545, -2.3356, -5.7371, -8.9898, -12.8304, -15.5822, -17.0433, -18.8124, -19.7104, -19.4116, -18.1842, -15.3531, -8.7155, -0.1993, 4.7176, 5.4518, 4.7364, 1.7967, -2.2008, -3.0647, 15.041, 12.3154, 5.6659, 1.3689, -3.8672, -5.9083, -6.0931, -4.9235, -3.3736, -2.9423, -7.2832, -16.8582, + 9.1549, 8.6933, 7.899, 7.7096, 7.5098, 8.0171, 9.241, 10.6919, 12.1971, 13.4831, 13.6508, 14.1654, 13.7371, 10.9089, 4.6506, -2.3217, -5.6454, -8.0201, -9.9057, -10.0159, -10.6042, -10.3898, -8.1978, -9.743, -12.7378, -17.4512, -17.2848, -13.59, -15.8022, 0.6882, 4.3643, 6.04, 2.5052, 2.9297, 1.4706, -1.9898, -0.8867, -4.2772, -3.045, -7.7994, -22.2645, + -7.8843, -6.8506, -6.0261, -4.4439, -3.8369, -1.9649, 0.3352, 2.3185, 3.0465, 3.3257, 3.554, 4.668, 3.7349, 2.5291, 2.4128, 3.779, 4.5682, 5.6219, 5.4149, 4.7479, 2.2185, -0.8515, -1.7161, -2.4559, -2.0632, -2.2051, -3.7165, -3.1032, -5.1569, 8.135, 6.3528, 5.3232, 1.0605, 1.2735, 0.2509, -2.2104, -2.9957, -3.4893, -2.5108, -11.1898, -12.1806, + 19.3396, 19.941, 20.3727, 21.0809, 21.0327, 19.1352, 15.1028, 10.7594, 7.8609, 7.5499, 8.5005, 9.706, 9.1824, 5.3617, -1.3028, -5.6212, -8.2717, -9.5373, -9.7484, -8.8869, -7.1221, -9.045, -14.6697, -18.5948, -20.2891, -20.4076, -19.813, -20.1946, -21.4218, 1.2915, 0.6782, 0.3569, -0.0683, -0.483, -0.2926, -0.3937, 0.261, 0.1608, 0.1333, -1.644, -22.5256, + 2.7246, 2.5148, 1.4831, 1.8238, 1.6121, 2.4035, 2.7381, 2.9387, 2.1358, 2.0826, 2.3275, 2.3406, 1.9098, 0.1135, -0.7424, -0.9928, -0.9805, -0.2098, 0.5803, 0.3688, 0.0187, -1.6561, -1.4168, -1.4577, -1.3632, -2.614, -4.7663, -7.0691, -6.8479, 2.3665, 2.3301, 1.9626, 1.0968, 1.9491, 1.1267, -0.1355, -0.0256, -1.2772, -1.4379, -7.9556, -8.3907, + 4.529, 1.5249, 0.3659, 0.0056, 0.863, 3.3152, 1.1307, -3.3632, -4.3601, -3.7553, -5.0257, -5.6659, -5.3754, -4.9885, -4.3119, -4.9927, -6.0531, -10.2279, -4.3307, 2.1887, 3.8591, 8.8378, 4.5088, 3.9006, 4.9936, 11.1237, 3.014, -1.5171, 9.8068, 13.2445, 7.3306, 5.9252, 9.0687, 7.7216, 4.0675, 11.9777, 11.311, -23.2633, -23.8643, -23.5193, -4.4759, + 22.151, 23.1727, 23.3097, 23.0639, 21.6223, 18.4164, 13.8969, 8.9695, 4.5053, 1.2957, -1.3036, -3.3247, -5.1402, -7.1172, -8.6948, -7.8753, -4.6461, -1.4461, -1.0227, -4.3094, -8.8842, -11.9962, -11.9234, -9.0257, -6.5369, -10.3321, -16.4292, -19.9706, -20.425, 2.3851, 5.8201, 6.5059, 3.9876, 0.333, -2.1429, -2.898, -3.4857, -3.4682, -2.4183, -4.6186, -20.078, + 11.7456, 12.7989, 13.3162, 13.8312, 14.7779, 15.3799, 14.0233, 10.9089, 7.3194, 4.1768, 1.7992, 0.0512, -0.9458, -0.5202, 1.3786, 3.486, 2.0668, -2.392, -7.4022, -10.759, -12.9261, -14.3064, -12.7761, -8.6791, -8.3015, -10.8632, -13.2729, -14.2798, -9.6355, 15.8594, 13.6933, 9.1741, 8.4349, 3.8782, -4.9728, -8.7226, -9.3197, -9.3643, -8.7767, -9.8839, -22.469, + 22.5139, 20.9546, 19.1373, 16.905, 14.6133, 12.3135, 10.2395, 8.4844, 6.951, 5.0069, 2.4662, -0.438, -3.5684, -7.0424, -9.9771, -11.1936, -9.88, -6.3251, -3.0189, -1.9735, -4.9442, -9.7372, -12.9352, -11.8709, -6.8801, -5.688, -9.6188, -12.4995, -11.9948, 12.0588, 11.2938, 8.1711, 2.396, -3.1587, -5.3733, -5.898, -5.622, -4.8347, -3.2857, -5.7474, -21.5935, + 26.6734, 23.862, 18.347, 12.7193, 8.0473, 4.8602, 2.4155, 1.4627, 1.0558, 0.6193, 0.2671, -0.5986, -1.6798, -2.4678, -2.2065, -2.936, -2.8372, -4.0092, -4.438, -5.3046, -5.8491, -6.4148, -7.4157, -7.9456, -8.4776, -9.0352, -9.1998, -9.5061, -10.0078, 1.63, 1.341, 0.6385, 0.2013, -0.3629, -0.2927, -0.3661, -0.3133, -0.063, 0.4392, -2.852, -12.0787, + 9.0155, 7.9133, 6.4106, 6.4968, 8.6477, 11.6576, 14.8601, 16.0323, 14.2529, 11.8653, 10.9041, 9.9373, 7.2309, 2.3059, -4.1636, -8.0163, -9.7982, -12.7129, -15.1421, -15.4797, -14.8005, -12.834, -10.4715, -5.856, -5.3611, -5.0344, -3.584, -5.3517, -8.924, 11.043, 4.7986, 3.1188, -0.3636, -1.4561, -1.9319, -2.5464, -2.3041, -2.3666, -3.0258, -4.9659, -22.6702, + 9.0489, 10.4274, 10.5425, 10.8125, 12.0032, 13.7184, 13.0711, 9.6959, 5.4837, 1.6077, -1.9964, -4.4495, -7.8808, -10.2103, -11.6407, -11.4255, -9.7241, -7.5467, -3.5478, 1.8951, 3.5718, 1.5955, -0.5403, 0.5662, 0.2415, -4.3154, -9.5295, -11.0052, -10.4693, 11.1024, 7.2333, 6.1462, 4.3929, 0.7029, -2.0309, -3.7294, -5.1402, -4.8388, -4.6151, -9.2233, -21.2734, + 11.5593, 10.342, 8.917, 7.7962, 6.0867, 5.9638, 3.8519, 0.4188, -0.7715, -1.3184, -1.5894, -1.6173, -0.5956, 0.0397, 0.998, 0.672, -0.2103, -4.0838, 0.9485, 2.7667, 1.7723, -0.8231, -4.4419, -7.1686, -8.5571, -4.2281, -12.0695, -12.5608, -2.0974, 7.0256, 2.5786, 2.8194, 7.2989, 5.3493, 3.5256, 11.6032, 11.1767, -16.6084, -17.8153, -16.9535, -14.6567, + 24.2288, 25.1078, 25.3408, 25.2954, 24.689, 22.7229, 18.9908, 14.5853, 10.6023, 7.4918, 5.2132, 4.666, 5.1836, 5.0476, 2.8795, -1.3269, -6.117, -10.7585, -14.7563, -17.5071, -18.3274, -18.4398, -17.9983, -17.57, -18.5575, -19.775, -20.4184, -20.5476, -19.9453, 1.4677, 0.899, 0.5256, 0.5195, -0.193, -0.5086, -0.7678, -0.6113, -0.2499, -0.1187, -0.9625, -20.088, + 1.3606, 0.3524, -0.4981, -3.0376, -5.4591, -5.1861, -5.3381, -7.9395, -4.6276, -1.6746, -2.1073, -1.772, 2.3082, 5.262, 5.3649, 4.6501, 3.6803, -1.4394, 4.494, 9.4882, 7.6591, 6.7428, -0.6196, -2.1749, -1.2855, 2.9511, -4.6673, -9.5251, 3.038, 18.0806, 14.1151, 9.121, 5.7949, 2.4151, -7.5054, 6.895, -0.4827, -16.5385, -16.07, -15.8252, -15.5778, + 21.5243, 22.4067, 22.6543, 21.9383, 19.0581, 14.0232, 8.4188, 2.8494, -1.1924, -2.9917, -3.8222, -4.1823, -4.8633, -4.9565, -2.8338, 0.9516, 2.0941, -1.6445, -6.8552, -9.959, -11.1205, -11.0602, -8.6668, -7.9525, -10.6286, -14.095, -13.9349, -10.3116, -4.8478, 13.9994, 11.9398, 8.001, 4.2542, -0.6981, -4.9047, -6.1557, -6.5212, -6.7797, -5.8456, -7.2894, -17.9998, + 13.8275, 13.6751, 13.2793, 13.1536, 13.5104, 14.6497, 15.6909, 16.1684, 15.2109, 12.8857, 9.6156, 6.423, 4.2876, 3.2525, 3.1015, 2.9273, 0.8232, -3.76, -9.4442, -13.3046, -15.6203, -16.1398, -14.4329, -11.4384, -11.9914, -16.0394, -20.1422, -21.4553, -18.7137, 9.9896, 6.0754, 2.5716, 1.2147, -0.1252, -2.8394, -3.5768, -3.1998, -3.2277, -2.5626, -4.3197, -26.1243, + 1.0072, 1.0349, 0.4547, 2.0233, 3.1568, 3.6248, 2.6871, 2.1595, 0.3986, -1.1817, -0.8372, -0.4964, -1.131, -1.353, -1.2089, 0.5624, 1.6332, 2.6953, 2.6143, 2.1661, 1.0687, -0.5002, -1.863, -2.0422, -1.929, -2.0051, -4.7328, -5.7009, -2.3057, -9.2017, -9.126, -10.3545, -1.5749, 2.8548, 5.5584, 7.3199, 8.4704, 7.1113, 6.4743, -7.532, 8.8174, + 22.3237, 20.1229, 16.3186, 14.9885, 15.806, 14.2422, 9.0206, 4.5767, 2.3692, 1.2439, -0.3609, -2.4418, -4.3713, -8.0945, -10.811, -9.9282, -5.6299, 1.8658, 5.9594, 1.6554, -4.8836, -8.0129, -7.8686, -4.1518, -10.8846, -16.3956, -17.6436, -10.8807, -8.1336, 8.1699, 0.1374, -2.1155, -2.7808, -2.5717, -2.5099, -1.4743, 0.402, 2.8792, 2.7754, -2.9117, -19.9846, + 14.9448, 13.3235, 11.069, 7.797, 3.6467, 1.2905, -0.1418, 0.0865, 0.0848, 0.1249, -0.0042, -0.4006, -0.5457, -2.0216, -2.4005, -2.6631, -2.7574, -3.493, -3.6341, -4.853, -3.8008, -4.5467, -3.9983, -3.1834, -3.3005, -2.257, -2.3485, -2.8054, -3.2121, -8.3072, -10.2892, -11.0655, -7.2025, -2.5835, 1.3158, 3.9103, 6.1494, 8.7822, 9.4411, 9.849, 4.1623, + 17.4109, 16.3957, 12.7323, 9.0568, 6.0296, 4.0628, 1.3809, -1.0636, -2.5917, -3.1282, -2.4806, -2.6332, -2.6331, -3.0197, -3.1246, -3.2078, -3.2369, -3.3087, -3.5259, -3.6952, -3.2777, -3.5126, -3.3483, -4.6082, -4.5229, -3.9702, -2.8815, -2.2298, -1.0686, 10.2492, 8.7238, 6.5287, 4.1319, 1.3909, -1.3457, -3.1912, -4.083, -5.8573, -5.7467, -10.8007, -10.7504, + 3.681, 4.8086, 4.9739, 5.5677, 4.9032, 4.1256, 1.8122, 0.1556, -1.1456, -2.1369, -2.2315, -2.0785, -3.1848, -4.0677, -5.2026, -5.8769, -6.5043, -6.1685, -5.6023, -5.9105, -4.2511, -1.3453, 1.8335, 3.4033, 5.1448, 5.5509, 4.8678, 3.4921, 1.3864, 4.5899, 3.1561, 2.1086, 1.0104, -0.3847, -0.6586, -0.6429, -0.112, -0.4119, -0.3363, -8.3185, -3.2346, + 3.1333, 2.2434, 0.566, -0.1689, 0.6551, 3.137, 6.4778, 9.1712, 8.4572, 6.33, 4.6298, 2.8657, 0.1787, -1.1319, -0.2827, 2.3196, 5.5007, 6.1676, 2.4317, -1.1696, -3.2988, -3.3141, -2.9589, -3.536, -5.2348, -8.6527, -10.1506, -11.6535, -12.7119, 12.8762, 10.2239, 6.7637, 2.0074, -1.9484, -4.8866, -5.3018, -4.5051, -4.3255, -3.6989, -7.2049, -23.9005, + 8.622, 10.8825, 12.2872, 13.3601, 14.228, 15.3604, 14.9416, 12.814, 8.4375, 3.9118, -0.1235, -3.3572, -6.8491, -10.5514, -12.6045, -13.2373, -13.4285, -13.2888, -12.4858, -9.8652, -5.1267, 0.837, 1.7581, 3.1241, 4.135, -0.4102, -5.4532, -8.806, -9.1118, 14.9701, 12.4418, 7.1314, 0.5687, -6.407, -6.8941, -5.5568, -3.3084, -2.3663, -1.6449, -8.9346, -21.6106, + 19.1182, 16.6713, 12.8335, 8.8739, 6.1759, 6.223, 7.5297, 9.2506, 9.4142, 7.8053, 5.9066, 4.3378, 3.9155, 4.5696, 4.9822, 3.2409, -0.8415, -5.8082, -9.1525, -11.0999, -12.9425, -14.8404, -14.6104, -11.5397, -8.3035, -9.3615, -9.7422, -9.9642, -12.6415, 4.2777, 1.5675, 1.0684, 0.6135, 0.0628, -0.5807, -1.1085, -1.0788, -0.8209, -0.6136, -3.3875, -20.5875, + 0.8644, 0.924, 0.5001, 1.9751, 3.9631, 6.3687, 6.1077, 3.622, 0.7094, -1.0962, -1.8495, -2.7933, -4.0125, -4.8808, -2.1854, 1.6422, 4.3506, 5.1936, 3.1952, -0.0683, -2.2673, -2.2756, -2.5661, -3.5305, -3.3037, -2.7368, -2.4517, -1.7145, -1.6839, 4.7659, 4.9768, 3.8161, 1.7084, 0.2338, 0.0457, -0.5947, -0.8458, -1.4961, -2.2835, -10.3266, -8.0604, + 22.8493, 23.0279, 22.4564, 21.783, 19.763, 14.2941, 7.4867, 2.4477, 1.1542, 1.702, 2.145, 2.1381, 2.9526, 3.5821, 3.514, 2.5293, 1.8263, 1.6906, -0.1177, -4.358, -9.4178, -13.6122, -17.0109, -18.1586, -18.2289, -17.0887, -18.0638, -20.2393, -21.0462, 1.905, 0.4924, 0.1429, -0.1603, -0.2972, -0.2106, -0.5323, -0.0051, -0.0488, 0.0713, -1.3573, -21.7449, + -5.0691, 5.7916, 20.3977, 33.7608, 20.5478, 6.3862, -0.6167, 2.4285, 7.7738, 0.648, -5.4985, -5.1477, -2.1058, -9.1202, -9.7561, -5.6897, -8.4994, -6.6489, -4.049, -6.39, -1.1222, -4.7105, -1.2435, -3.1404, -0.467, -1.2691, -3.2353, -6.3597, -7.5957, 2.6335, 2.9453, 2.3526, 1.7483, 0.5793, -0.6841, -0.692, -0.588, -1.6805, -2.0348, -4.5797, -8.0873, + 27.8982, 26.1875, 22.3314, 17.8436, 13.657, 9.3782, 4.5001, 1.0587, -0.1319, 0.5334, 2.2176, 3.9007, 4.3904, 2.8784, -0.5056, -2.7187, -4.2442, -4.9618, -6.1501, -6.656, -6.3475, -6.6372, -7.4694, -9.822, -14.653, -16.2989, -16.6133, -16.9745, -16.5912, 1.5751, 0.2732, 0.392, -0.1605, -0.6644, -0.5397, -0.03, -0.1057, -0.0387, 0.4893, -1.1907, -17.7674, + 4.0687, 5.1941, 6.0984, 7.7169, 8.4142, 8.8229, 7.325, 5.7734, 4.1436, 2.4793, 2.4633, 2.0981, 1.079, 0.0726, -0.0934, -1.1969, -2.7251, -3.5007, -3.7768, -4.1983, -4.436, -4.9365, -5.3239, -6.0842, -6.5913, -6.0399, -5.6196, -5.4516, -5.7753, 2.3864, 4.1318, 4.1698, 4.0758, 2.9462, 1.5278, 0.0907, -0.4889, -3.3101, -2.5223, -13.0073, -9.7421, + -2.5217, 6.6906, 18.938, 32.5385, 26.0727, 10.4378, 1.8923, 3.892, 11.1274, 10.8157, 0.2901, -2.1358, 1.8304, 0.111, -6.1198, -3.9839, -1.5639, -5.813, -5.0685, -6.2978, -9.356, -8.6952, -9.9906, -9.6668, -9.281, -8.9004, -9.6041, -12.9599, -12.678, 1.0846, 1.273, 0.8512, 0.3292, 0.2685, 0.1416, -0.4299, -0.2512, -0.6945, -0.7869, -1.7857, -11.2964, + 9.0608, 8.3549, 5.9106, 3.0223, 1.5989, 1.4872, 0.5967, -0.7899, -2.0584, -2.6475, -1.994, -0.9341, -0.2649, 0.8782, 0.819, 0.7941, 0.2218, -0.275, -0.3771, -0.9402, -2.1665, -2.7001, -2.978, -2.6056, -1.981, -2.2466, -2.1946, -2.6591, -2.9316, 2.9882, 2.9231, 2.3934, 1.2468, 1.7808, 1.5958, 0.9538, 0.0307, -1.6679, -1.9384, -10.3063, -6.9292, + 25.3209, 26.4747, 25.0162, 21.0118, 15.7497, 9.7187, 3.2049, -2.7534, -7.5484, -11.3498, -13.8939, -15.3292, -16.7275, -17.7766, -18.3047, -18.0188, -16.5419, -14.814, -11.1748, -6.2506, 1.1228, 5.4465, 3.3274, 4.0262, 6.8686, 6.7842, 4.545, 4.7788, 7.0872, 14.4073, 8.6959, 4.9137, 0.7333, -0.0689, -3.2729, -3.9427, -4.6901, -3.7843, -4.7606, -8.2309, -11.1556, + 39.324, 35.158, 30.1649, 24.8807, 19.4559, 14.1503, 9.3376, 5.7395, 2.9171, 0.8743, -0.16, -1.561, -3.3663, -5.479, -7.0899, -8.1039, -8.6121, -9.3362, -10.6742, -11.7063, -11.8889, -11.631, -11.7325, -11.7388, -11.4894, -12.8703, -14.4784, -15.0647, -15.0195, 0.4215, 0.7196, 0.4543, 0.0332, -0.2347, -0.2869, -0.3136, -0.1185, -0.0711, 0.1485, -0.7523, -15.3163, + 4.1198, 2.4046, -0.9207, -3.0537, -4.9411, -4.5132, -4.0855, -3.8951, -3.8661, -1.0021, 0.5493, 0.6922, -0.1138, -0.3066, 0.1108, -0.0251, 0.8424, 2.6646, 9.217, 6.3754, 2.4274, 3.211, 3.9376, 2.5394, 1.3314, 0.0248, -3.5589, -5.2404, -4.9255, -3.5255, -3.1009, -3.7604, -3.47, -2.8733, -1.9992, 0.5113, 3.0512, 5.1249, 4.8231, 5.219, -1.6532, + 3.662, 2.9859, 3.004, 3.0506, 2.2625, 2.4007, 2.1773, 2.2676, 1.7231, 1.4288, 1.216, 0.5069, -0.1552, -0.1104, -0.1481, -0.3494, -0.2743, -0.5949, -0.9982, -1.2915, -1.7757, -1.8432, -2.05, -2.8592, -2.5411, -2.0302, -1.9641, -2.8754, -4.8244, 7.6823, 3.2328, -2.8255, -7.4261, -7.6683, -4.0922, -1.2719, 1.1834, 2.9852, 4.1242, 4.0762, -14.2392, + 12.2682, 12.4958, 10.637, 8.6802, 6.1895, 3.3521, 0.012, -3.1196, -5.8915, -7.9346, -8.4726, -9.2365, -10.2529, -11.6156, -12.3872, -11.4245, -9.0191, -6.8545, -3.2918, -0.0972, 1.404, 0.7813, 2.7012, 7.4433, 10.4513, 8.1526, 4.822, 3.6293, 6.5779, 3.5887, 2.5442, 4.8598, 3.9894, 2.1825, 1.899, -1.1549, -1.3419, -2.5535, -1.8075, -12.206, 0.8433, + 15.4243, 14.3712, 10.5979, 6.0053, 3.6236, 3.166, 2.6457, 3.0378, 3.3307, 2.9774, 1.6056, 0.6289, -1.2252, -2.5293, -2.5259, -3.3644, -3.2999, -2.9968, -4.1243, -3.1379, -4.5943, -5.1946, -6.5332, -5.4258, -4.3474, -2.458, -3.2897, -3.9496, -8.4184, 12.5953, 13.0978, 8.0807, 2.08, -3.4741, -5.6039, -6.0827, -5.2556, -5.1645, -4.3359, -5.937, -19.1939, + 12.6031, 11.514, 9.5918, 8.9721, 11.2278, 16.3861, 18.3055, 15.2493, 9.3533, 5.1262, 3.409, 2.8449, 4.219, 7.3448, 7.1824, 2.1285, -4.7265, -9.0679, -11.7653, -12.9187, -12.377, -9.886, -9.0188, -10.4117, -12.4113, -14.1603, -11.834, -11.7956, -15.0847, 1.6333, -0.1749, -0.124, -0.2004, 0.4426, 1.4656, 0.2738, 0.7777, -0.0047, -0.2122, -3.8769, -21.6008, + 15.7554, 16.8394, 17.1615, 17.2884, 17.403, 17.2657, 15.8921, 13.5652, 10.3715, 6.8406, 3.5351, 0.5517, -2.1632, -4.146, -4.2553, -2.4789, 0.2986, 0.953, -2.3858, -7.5703, -11.2229, -12.115, -10.5591, -8.6344, -11.4398, -17.0807, -20.6444, -20.9882, -18.0373, 8.3336, 5.5551, 2.471, 1.8701, 0.0297, -2.8652, -3.472, -2.9808, -2.8086, -2.1702, -3.9628, -24.3752, + 27.9412, 27.2421, 22.9503, 16.5254, 9.6885, 4.5967, 0.6997, -3.4665, -6.6867, -7.8148, -9.1495, -10.061, -11.4055, -11.7392, -11.8813, -11.3038, -9.8795, -7.5418, -2.587, 4.6153, 3.8429, 0.5688, -2.8955, -0.2237, 1.9886, 1.7001, 1.8074, -3.1272, -14.4038, -3.8881, -2.8329, -1.6443, 1.8671, 3.1413, 1.8729, 0.1398, 2.8367, 0.3757, 1.7313, -3.5996, -13.385, + 9.1831, 9.4128, 8.6344, 9.5797, 10.1063, 10.3011, 8.2263, 4.5395, 1.0974, -1.7556, -3.6105, -4.8265, -5.4684, -5.8802, -4.5931, -3.1888, -0.4075, 0.3805, -0.9063, -3.405, -4.9101, -5.9677, -5.8009, -5.0301, -5.4306, -6.4969, -3.081, -2.1162, 1.4143, -5.1355, -2.3496, -0.042, 3.9648, 4.8248, 5.4912, 2.045, -0.1732, 0.0828, 0.7502, -9.4585, 1.8224, + 4.4588, 4.2389, 3.3197, 3.133, 4.0702, 5.7759, 7.7099, 9.0876, 11.1245, 12.651, 12.5527, 11.9764, 10.9501, 11.0837, 11.4805, 9.3639, 4.7521, -0.5944, -4.4402, -7.1309, -8.3207, -8.3043, -9.481, -12.7554, -15.5784, -17.8883, -18.8492, -17.9501, -16.4359, 5.8124, 3.4155, 3.383, 3.3147, 1.6832, -0.537, -2.7626, -3.1367, -2.1515, -2.797, -6.2238, -24.3008, + 11.3859, 11.294, 10.4575, 10.5198, 11.2222, 12.7124, 13.5178, 13.4129, 10.5164, 5.9792, 2.3897, -0.1138, -1.9321, -3.1972, -3.142, -0.7773, 2.4075, 3.1154, -1.3266, -7.1228, -10.5939, -11.1307, -9.876, -7.3492, -6.6029, -10.8829, -13.8968, -15.3987, -15.5878, 8.9895, 6.7302, 4.3952, 0.2012, -4.6771, -5.1924, -3.7684, -1.4949, -0.4984, -0.067, -4.6178, -24.6307, + 18.9158, 19.7886, 19.7526, 19.1358, 18.1177, 16.4664, 14.0122, 10.8818, 7.5481, 4.5462, 1.5367, -0.9445, -2.7129, -3.9653, -5.5016, -7.5102, -9.0864, -9.0742, -9.0767, -10.2313, -9.4105, -5.3027, -1.9268, -1.391, -3.5726, -10.4635, -17.0711, -22.1873, -21.273, 5.4315, 7.4977, 3.9877, 0.2418, -1.1556, -2.9339, -2.8218, -3.2557, -2.2125, -0.425, -4.3542, -22.8328, + 28.1526, 28.1117, 24.7174, 18.3759, 10.6219, 2.4804, -4.1378, -7.4788, -9.3437, -10.849, -12.5556, -14.1384, -15.1322, -15.0182, -14.614, -14.5304, -14.2862, -13.9234, -11.7259, -8.2717, -1.7653, 6.2167, 7.1311, 7.8239, 8.7319, 8.2789, 7.6074, 7.1853, 2.3358, 3.7971, -0.5557, -1.9296, -2.2395, -1.0081, 1.6256, 1.1217, 0.2632, 1.4311, 1.1466, -3.6525, -7.2238, + -1.9896, -1.5846, -1.1882, -1.5851, -4.5749, -6.7021, -4.694, -3.5898, -2.8275, -4.0926, -5.1006, -4.1183, -4.9559, -5.2145, -6.9309, -7.9964, -7.8043, -5.1453, -1.8211, -0.6339, 3.5622, 6.5139, 7.8184, 9.0948, 11.5264, 11.4601, 10.4022, 10.4535, 11.7185, -9.6611, -13.7925, -13.7882, -6.6479, -2.4133, 2.1029, 4.5429, 8.2581, 9.4338, 9.8315, 12.1338, 18.9608, + 29.0162, 27.1449, 23.5731, 20.2452, 17.511, 14.7918, 12.0251, 9.1599, 6.0664, 3.8158, 0.8485, -1.4407, -3.2916, -4.0983, -4.397, -4.3435, -5.263, -7.1322, -9.5766, -10.6471, -11.1044, -11.3079, -11.3508, -11.6324, -11.9889, -12.9298, -13.9392, -14.6929, -15.0614, 0.4975, 0.3394, -0.0827, -0.4799, -0.4676, -0.3009, 0.0384, 0.1607, 0.4964, 0.5891, -0.7905, -17.1701, + 8.4713, 7.5563, 6.3767, 6.1947, 6.0689, 6.3779, 4.9213, 3.5036, 2.5255, 3.0901, 4.1254, 6.3043, 8.3238, 9.4464, 9.317, 6.566, 2.2721, -0.8163, -4.484, -7.0774, -8.1734, -9.5687, -10.5231, -10.5767, -10.2078, -10.4331, -9.7161, -9.9741, -9.8905, 3.2535, 1.2694, 0.1807, -0.6651, -1.0284, -0.5802, 0.6037, 0.3968, 0.3279, 1.2972, -5.0555, -13.8489, + 8.3726, 8.7329, 8.5586, 8.5134, 8.7002, 9.8765, 11.6676, 13.2674, 13.5452, 12.0942, 10.0691, 7.6401, 4.866, 2.868, 2.7547, 3.9563, 4.9074, 3.0494, -2.0753, -8.4742, -13.384, -15.824, -17.8178, -16.4808, -10.6391, -9.9987, -14.2994, -17.06, -17.3864, 10.6631, 9.4847, 5.5492, 1.305, -3.107, -4.8971, -4.8382, -4.5691, -2.3532, -2.1714, -5.066, -26.2617, + 19.0595, 18.3832, 15.9029, 12.653, 10.0486, 8.156, 6.2927, 4.3924, 2.8935, 2.2985, 1.7559, 0.7258, -0.7293, -3.1142, -3.953, -4.8127, -4.7935, -5.2925, -6.6673, -7.3117, -8.4213, -8.8278, -9.24, -8.0623, -7.4252, -7.1006, -5.9527, -5.3881, -5.4699, 10.5325, 9.0445, 4.9973, 0.1331, -3.2907, -4.1662, -4.1984, -3.1495, -2.7117, -2.1058, -5.085, -17.2009, + 52.2372, 44.3578, 36.5608, 28.9176, 21.5115, 14.4397, 7.8187, 1.8482, -3.252, -7.1355, -9.4888, -11.6207, -13.4063, -14.7098, -15.4667, -15.9341, -16.1369, -16.0366, -15.3538, -13.7588, -10.6277, -7.7814, -6.1144, -5.0819, -4.0409, -3.936, -4.9781, -5.9562, -6.8747, 3.7022, 1.466, 0.4111, 0.137, -0.3542, -0.1182, -0.112, -0.5566, -0.7197, -0.2876, -3.568, -11.6568, + 18.5298, 18.5912, 18.1337, 17.486, 16.8943, 16.3587, 16.0594, 15.4122, 13.4402, 10.4256, 7.3367, 4.652, 2.5497, 1.6836, 2.6521, 4.205, 4.7439, 1.2637, -5.1624, -11.963, -16.836, -19.069, -18.8984, -17.4618, -16.1587, -17.2824, -20.6892, -23.3973, -23.4997, 3.2388, 3.5069, 1.9919, 0.0447, -0.5876, -0.7419, -0.9096, -1.1897, -1.237, -1.2266, -2.8899, -24.3059, + 14.2216, 15.1107, 15.4424, 14.9543, 12.7476, 8.8407, 3.8349, -1.225, -5.2339, -7.6335, -9.5259, -10.5663, -11.348, -10.711, -9.3182, -6.6849, -3.0625, 0.0032, 2.0229, 0.5151, -0.5651, -0.4048, 0.5255, -0.7083, -2.6478, -3.1557, -2.5836, -2.0039, -0.8405, 3.7139, 1.8811, 2.0645, 2.2576, 1.8972, 2.7893, 0.9195, -0.0976, -1.1232, -2.5385, -11.7639, -9.8006, + 27.6767, 26.3073, 23.1657, 18.9402, 14.2694, 9.6933, 4.9155, 1.3429, -1.0736, -2.1647, -2.4791, -3.7245, -5.2366, -7.8495, -9.6757, -10.3534, -9.9166, -8.3142, -6.6376, -3.953, -4.0753, -4.3093, -3.5187, -3.901, -5.2935, -7.7755, -9.0692, -8.273, -8.7168, 5.8445, 3.8687, 2.4179, 0.0649, -0.8031, -1.3677, -1.4763, -1.6757, -1.5716, -1.57, -3.7316, -15.598, + 7.4225, 6.3812, 4.2676, 2.9128, 1.8225, 2.633, 3.2026, 3.4899, 4.3798, 5.0782, 4.0849, 3.8689, 3.6113, 4.5683, 5.8542, 4.5947, 0.2532, -3.2821, -6.4774, -7.465, -7.9861, -7.4196, -6.0622, -5.4357, -5.0398, -5.4225, -4.6902, -3.4197, -5.7249, 10.3884, 8.1074, 7.3911, 3.6782, 0.8704, -2.0339, -3.8319, -4.9728, -4.3725, -5.2689, -9.9555, -15.7366, + 17.5213, 20.443, 21.919, 22.2701, 21.3171, 18.9687, 14.6306, 9.0767, 3.5198, -0.8778, -4.3458, -6.9865, -9.548, -11.142, -12.3506, -13.4175, -13.6194, -14.0717, -13.7947, -12.3999, -9.1656, -3.9176, -0.2193, -1.5457, -4.1719, -2.7467, -2.4932, -5.3995, -7.4528, 7.1434, 7.0238, 7.2627, 6.798, 5.2527, 1.0139, -3.4114, -6.523, -7.8521, -6.8412, -9.8668, -15.3691, + 23.8876, 22.5517, 20.2028, 18.0102, 15.3733, 12.6542, 9.101, 5.3097, 1.3988, -1.1554, -2.5833, -3.9593, -5.0937, -4.9268, -4.3385, -4.0356, -4.4731, -5.2411, -5.8573, -6.0798, -6.4837, -6.6593, -7.293, -7.7787, -8.422, -9.5983, -10.7066, -11.6689, -12.1349, 1.8395, 1.5059, 0.7809, 0.7822, 0.3229, 0.0573, -0.1778, 0.0288, -0.5032, -0.4347, -4.2018, -15.0448, + 13.9062, 13.1904, 12.429, 13.6194, 15.2333, 15.2034, 12.0474, 7.3708, 3.009, -0.0473, -1.0773, -1.4032, 0.0264, 2.8347, 3.5334, 0.2574, -4.8606, -8.499, -10.3461, -10.2062, -9.1724, -6.5298, -5.6943, -9.5272, -11.1766, -10.7021, -7.7752, -7.2838, -8.3598, 9.0389, 8.3462, 5.7086, 0.2994, -0.2224, -1.6621, -3.2697, -3.1981, -3.4783, -4.1342, -7.4282, -20.6505, + -0.1956, 12.8891, 25.959, 29.2372, 11.9659, 3.6545, 1.9759, 11.5615, 8.2666, -2.4823, 2.1238, 10.6975, 3.0083, -5.1305, 2.5407, -3.5456, -5.3431, 1.0377, -4.8653, -4.1095, -8.9872, -10.0069, -10.663, -10.8153, -10.0788, -9.9282, -11.0117, -13.4387, -14.316, 0.9647, 0.5126, 1.4038, 0.7744, 0.0988, -0.4577, -0.1039, -0.1823, -0.4661, -0.3208, -2.2235, -13.2318, + 25.9629, 27.1177, 27.848, 28.135, 27.2179, 24.6308, 20.83, 16.5838, 12.6784, 8.6134, 4.1825, 0.4406, -2.7846, -5.2345, -6.7282, -7.9739, -9.5601, -11.2902, -13.5857, -15.5917, -16.3027, -16.6819, -16.4912, -15.9456, -15.775, -16.835, -17.5886, -18.0613, -17.8109, 1.0702, 0.8294, 0.1689, 0.5813, -0.0091, 0.1284, -0.3058, -0.7039, -0.552, -0.2521, -0.9553, -17.8347, + 28.3817, 26.3242, 22.4988, 18.1016, 13.8114, 9.4292, 5.2503, 1.4133, -1.6541, -2.4802, -2.4725, -3.0842, -3.4601, -3.8401, -3.4525, -2.3946, -2.6693, -1.6244, -0.8581, 0.9642, 0.0547, -3.6789, -8.6927, -12.3146, -14.172, -14.6132, -14.5422, -14.6064, -15.6195, 1.2358, -0.1021, -0.4812, -0.1634, -0.1968, 0.6015, -0.1027, -0.0844, -0.0133, 0.251, -0.9445, -16.6483, + 14.8559, 14.2769, 13.3144, 13.4636, 14.521, 15.1971, 13.3361, 10.1599, 6.7908, 5.5468, 6.0091, 7.5005, 8.7471, 7.3385, 1.8761, -2.5391, -5.4603, -7.6289, -8.7381, -8.1046, -7.0789, -6.1772, -7.8795, -11.4586, -14.0732, -15.6269, -16.7078, -19.9955, -21.4649, 1.8161, 1.8568, 0.796, 0.3224, 0.4841, -0.7227, -0.9581, 0.3734, -0.1277, -0.0325, -3.8078, -24.4035, + 5.4535, 4.296, 0.7585, -1.6071, -2.7931, -2.2472, -2.8178, -3.1626, -2.5628, -1.3912, -0.366, 1.6795, 4.203, 6.4164, 7.0674, 7.5227, 7.0796, 4.9076, 4.3543, 2.9287, -0.1541, -2.4266, -4.0876, -4.9944, -4.2282, -4.2178, -6.484, -7.8159, -5.3111, 9.2246, 8.2902, 7.184, 5.6544, 4.317, 2.1934, 1.5215, -2.4633, -8.8855, -12.3322, -14.7039, -13.9292, + 9.098, 9.2332, 9.0227, 7.89, 7.2001, 9.306, 12.746, 15.4304, 15.0788, 11.5632, 8.2993, 7.2707, 8.2449, 10.9986, 9.5064, 3.6569, -2.3332, -7.1688, -8.9599, -9.8137, -8.1433, -4.6312, -6.5469, -11.9994, -16.1445, -17.53, -16.182, -19.8515, -25.2405, 0.4708, -0.3092, 0.2379, 1.4804, -0.1717, -0.9282, -1.5045, 0.4378, 1.4582, 0.6172, -1.7888, -27.118, + 30.5921, 29.7607, 27.5057, 24.3076, 20.267, 15.1816, 9.3486, 3.1611, -1.4937, -4.0966, -4.8189, -4.992, -5.0548, -3.9493, -2.766, -2.8294, -4.1521, -6.8587, -8.9405, -9.3227, -7.2576, -3.2574, -2.6669, -7.8789, -12.9388, -16.4992, -17.2553, -16.5402, -16.5552, 0.5625, 0.3502, 0.0083, -0.184, -0.6199, -0.4748, -0.2997, -0.1545, 0.4846, 0.8919, -0.5646, -16.4454, + 14.8981, 14.8814, 13.6043, 11.5145, 9.5013, 6.6072, 1.92, -2.184, -4.25, -5.6701, -6.3798, -6.5602, -7.0938, -7.2697, -4.0665, -0.3509, 2.6024, 2.4125, -0.1554, -3.0971, -4.9214, -6.2652, -5.4681, -4.3507, -3.9793, -4.8021, -2.3819, -1.6978, 3.0025, 2.862, 3.2617, 6.8021, 5.2352, 3.3376, 0.5084, -1.9352, -2.2484, -1.4495, -1.6734, -14.7006, -2.2554, + 19.3171, 19.5822, 19.1016, 18.4606, 17.7886, 17.3421, 16.7071, 15.2413, 12.1252, 7.557, 2.4543, -2.6968, -6.6532, -9.4513, -11.1611, -10.7979, -8.4551, -5.851, -3.975, -5.4484, -8.6775, -10.2725, -9.6723, -8.111, -6.9238, -9.5412, -14.0157, -16.8585, -17.1147, 6.4595, 5.2042, 2.6176, 0.4543, -1.5212, -2.1299, -2.1223, -2.0336, -1.9001, -1.436, -3.5925, -21.8904, + 10.0554, 11.4918, 12.0024, 11.9869, 11.4982, 10.7952, 8.7236, 5.9738, 2.4552, -0.5185, -1.8366, -4.1108, -5.5111, -6.6353, -6.8364, -7.097, -6.1121, -5.4311, -4.4856, -3.253, -4.1916, -5.5562, -5.6815, -5.4794, -4.5844, -3.0317, -1.607, -1.6034, -1.4198, 6.0457, 6.4584, 6.3816, 6.2004, 3.9293, 1.7377, -2.4799, -5.0585, -4.1685, -5.2278, -13.8183, -8.6957, + 5.1528, 4.1179, 3.0625, 2.9843, 1.9679, 0.9714, 1.4744, 4.4833, 5.5293, 4.703, 3.5767, 3.8031, 1.7543, -1.0533, -1.2774, 0.957, 5.1278, 5.59, 4.5922, 0.5748, -5.0484, -6.9525, -6.3139, -9.2098, -9.0484, -9.2166, -5.0713, -4.7295, -2.5016, 10.5692, 7.5278, 2.2517, 0.6253, 2.9159, 0.5499, -2.4843, -3.578, -4.6422, -4.8638, -8.8714, -13.879, + 18.7418, 15.9185, 12.8438, 10.204, 7.5183, 6.1018, 4.7206, 3.9908, 3.3693, 2.4047, 1.441, 0.1504, -0.1335, -0.4013, 0.1702, -0.4796, -1.4923, -3.1582, -4.6899, -4.8726, -5.5428, -6.5059, -7.1643, -7.5192, -7.9222, -8.7815, -9.429, -9.6309, -9.8521, -0.4363, -0.6716, -0.6321, -1.0615, -1.3192, -0.9262, 0.103, 0.7901, 1.5962, 2.2939, 0.2637, -10.2983, + 35.3923, 32.3026, 26.5029, 19.6975, 12.6365, 5.9222, 0.137, -3.8927, -5.9336, -6.6867, -6.9777, -6.7865, -6.2733, -4.3479, -3.5674, -3.6341, -3.7323, -5.0584, -6.319, -6.1046, -4.6307, -4.8921, -3.7741, -3.8037, -7.6419, -9.4026, -9.7867, -9.3143, -10.0304, -0.3209, -0.8025, -0.7882, -0.9161, -0.6206, -0.3729, 0.2723, 0.9229, 1.0626, 1.2478, 0.3157, -11.3279, + 15.1154, 17.2376, 18.5113, 18.6287, 17.8606, 16.0374, 12.387, 7.3049, 2.2274, -1.2547, -3.4619, -4.9984, -7.5019, -10.3433, -11.986, -13.4479, -13.9092, -13.7812, -13.8196, -12.9157, -11.1559, -7.187, -2.1572, 1.9368, 1.9384, 1.8602, 1.894, -1.4092, -3.6107, 13.969, 15.4855, 13.978, 10.9462, 5.3217, -5.087, -10.7886, -11.2651, -11.1873, -9.5973, -11.775, -16.726, + 18.2228, 18.4615, 17.4249, 17.1396, 16.6125, 14.4185, 10.8568, 8.6164, 6.3579, 5.237, 3.856, 1.9252, -0.6359, -4.275, -5.1889, -6.7505, -7.9919, -9.0778, -10.1, -9.9142, -8.7383, -6.1658, -3.7111, -6.176, -9.8971, -12.5047, -12.7338, -12.8872, -12.3808, -0.813, 0.6976, 0.3804, 0.6457, 1.5482, 2.4749, 3.0413, 2.8395, -0.4708, -2.7284, -7.6154, -15.6555, + 6.0325, 10.0051, 11.3341, 12.3589, 13.89, 16.1481, 16.3116, 12.7566, 8.9105, 7.2557, 4.4785, 2.2316, 0.9797, -0.6614, 0.5661, 4.8341, 6.5458, 3.6213, -1.1381, -4.3272, -5.4198, -6.5113, -7.7865, -12.3725, -19.933, -25.0176, -17.8042, -15.8364, -21.4525, -3.1483, -3.2143, -0.2635, 8.5907, 13.2637, 6.6922, -2.8514, -3.6166, -4.6591, -4.9686, -5.8249, -25.4194, + 17.3207, 17.7695, 17.5402, 17.0035, 16.5266, 15.9285, 14.7115, 13.0615, 10.7412, 7.7296, 4.597, 1.7062, -1.0815, -3.0472, -3.6756, -2.2649, -0.4084, -0.9339, -5.2361, -10.6763, -14.8835, -17.2271, -17.8907, -15.6384, -10.4668, -8.4525, -11.8808, -15.4044, -15.4675, 8.8476, 9.5703, 6.9625, 3.109, -0.1253, -3.622, -4.8452, -5.4253, -5.054, -3.4938, -5.9236, -22.7477, + 18.232, 19.5978, 19.719, 18.7548, 16.3427, 13.615, 10.6951, 8.6087, 5.9251, 3.1428, 1.8336, 0.1222, -0.3161, -1.8892, -3.4565, -4.4788, -4.1025, -3.7501, -4.9649, -7.4742, -8.6908, -9.9373, -10.883, -11.3028, -11.4257, -11.5192, -12.7474, -14.6156, -15.0348, -8.1772, -8.1988, -6.2878, -4.971, -3.0389, -0.0545, 3.6911, 6.8598, 7.3721, 8.3424, 4.4628, -8.8778, + 13.8589, 12.2371, 9.8247, 7.6249, 6.1891, 5.8925, 4.1202, 1.8072, 0.1905, -0.9244, -0.4689, 0.1547, 0.5703, 1.3955, 2.047, 2.6142, 1.4776, -0.3379, -2.6582, -5.2107, -5.8303, -6.1283, -6.7972, -7.3151, -7.5206, -7.3966, -7.0187, -6.1092, -6.2882, 2.8357, 1.3808, 1.5156, 0.8705, -0.2752, -0.1447, -0.1738, -1.0712, -0.4308, -0.502, -4.005, -11.046, + 25.9341, 27.732, 28.2232, 27.7876, 25.5774, 21.4281, 15.8329, 10.0447, 4.4219, -0.7932, -4.9567, -7.948, -9.7086, -10.7951, -11.8434, -13.0235, -13.3873, -13.9249, -14.4275, -14.4362, -13.1477, -10.3022, -6.8516, -4.3801, -3.0535, -2.9543, -6.5274, -11.658, -12.8631, 5.4748, 4.2973, 2.0928, 0.3859, -0.05, -1.0781, -1.5335, -2.0293, -2.087, -2.0482, -3.4246, -15.9155, + 12.5611, 14.6864, 16.3579, 17.9048, 19.1559, 20.0003, 19.3273, 16.6175, 11.9366, 7.1513, 3.6125, 1.1772, -0.676, -2.6536, -3.6769, -3.9465, -1.4534, 2.8613, 3.1405, -2.9573, -11.3536, -17.9162, -20.1933, -20.5787, -18.1872, -12.946, -11.7495, -17.2172, -20.9852, 3.0886, 4.0379, 3.6614, 1.7858, 1.8672, 1.0455, -1.0249, -2.3716, -3.3037, -4.0002, -4.786, -22.6731, + 6.3873, 6.0538, 5.2554, 4.7605, 3.7352, 4.0478, 3.0878, 1.1603, -0.41, -0.4842, 0.3498, 0.7144, -0.2324, -1.6604, -3.0147, -3.2036, -2.2852, 0.45, 5.1996, 6.1851, 1.9002, -1.2909, -2.8734, -4.709, -4.8637, -4.9906, -6.0915, -6.1561, -7.0214, -0.4395, -0.6291, -0.8046, -1.1373, -1.0367, -1.1976, -0.5358, 0.8614, 1.5251, 2.7259, 0.6681, -8.1549, + 6.4678, 24.1453, 28.3564, 16.3768, 0.9487, 6.1492, 9.9337, 5.7837, 0.7687, 2.7379, 7.4627, 2.6615, 2.1447, -1.7243, -4.9079, -3.6716, -5.126, -1.3976, -1.3562, -1.3187, -5.1578, -9.3517, -9.8801, -10.0344, -8.5754, -9.5176, -12.9621, -14.5277, -14.4277, 2.6144, 2.0177, 2.0939, -0.3296, 0.2968, -0.6507, -0.6394, 0.0217, -1.9957, -0.1306, -3.2985, -14.8655, + 12.551, 12.4285, 11.8955, 12.7578, 16.9371, 21.2938, 20.7903, 16.7803, 12.6688, 11.7788, 11.63, 7.3846, 0.3301, -5.6353, -9.1568, -12.4924, -14.5919, -16.295, -17.9481, -16.1853, -15.7323, -12.4489, -10.0349, -7.7045, -8.7699, -6.9254, -3.1598, -3.0985, -9.0472, 7.8424, 3.8265, 0.9376, -0.6967, -1.1188, -1.5694, -1.9503, -0.6167, -1.4541, -2.2369, -2.9635, -21.8681, + 15.6754, 16.7432, 16.5153, 12.3311, 4.2455, 0.205, -0.6894, 2.1431, 4.3595, 7.572, 9.8733, 9.2508, 5.8913, 2.6955, 1.6669, 2.5024, 2.1823, 0.5005, -4.3623, -8.712, -8.4826, -7.8486, -12.0698, -13.3968, -11.9915, -10.9867, -12.2995, -11.0273, -12.4867, -2.7836, -4.412, -5.1131, -4.1277, -2.4732, -0.972, 1.3438, 3.6062, 4.7125, 5.6821, 4.537, -11.9, + 22.3286, 23.0046, 23.0498, 23.5807, 23.1994, 18.4599, 10.9563, 4.0795, 0.4966, -1.421, -3.5925, -5.4787, -5.7217, -4.6302, -2.1947, 3.6628, 9.53, 10.8217, 9.1886, 2.5031, -8.0477, -14.9331, -18.4387, -19.9305, -20.4501, -20.2597, -19.9758, -19.4479, -20.3392, 1.1842, 0.4014, 0.0219, -0.1675, -0.5484, -0.3769, -0.3371, -0.0928, -0.0308, 0.3091, -0.3631, -21.5338, + 21.9984, 23.9238, 25.3357, 26.4343, 26.0313, 22.5182, 16.6027, 9.8676, 5.2339, 2.4325, -0.1466, -2.8415, -2.8856, -0.9913, 3.1553, 6.9975, 6.7848, 4.8021, -2.7887, -13.1318, -18.6046, -20.0234, -20.0047, -19.9587, -19.6763, -19.9132, -20.3439, -20.4619, -20.3457, 1.2714, 0.3555, 0.0928, -0.1438, -0.1909, -0.1061, -0.2499, -0.3508, -0.1985, -0.175, -0.3048, -19.6659, + -0.2567, -0.2113, -0.8684, 0.4465, 3.3786, 5.2759, 2.6214, -1.2665, -3.2281, -4.9538, -5.9464, -5.0624, -5.8449, -5.2078, -4.5607, -2.446, -0.3193, 2.4345, 5.491, 8.175, 9.787, 9.0613, 6.6768, 1.8115, -0.9513, -2.1611, -3.707, -3.7433, -4.4246, 0.1631, 2.1256, 4.6102, 5.3221, 6.3935, 4.7668, 3.6937, 3.2175, -0.8613, -8.2952, -21.136, -6.1298, + 3.8793, 4.4914, 2.0392, 1.3477, -1.0271, -0.6639, 0.1117, -1.7816, -3.233, -2.324, -1.7798, -3.8111, -6.4867, -7.2086, -6.2062, -8.1286, -2.5, 3.355, 12.4119, 16.8546, 9.9403, 10.7928, 11.849, 6.7929, -4.703, -7.2697, -8.7835, -9.4026, -8.5564, -1.174, -2.4092, -2.9332, -3.4178, -3.5228, -2.2895, -0.328, 1.5973, 4.164, 4.8094, 5.5038, -5.9517, + 55.6246, 47.8318, 40.1222, 32.5666, 25.2478, 18.2625, 11.7233, 5.7654, 0.6757, -2.9249, -4.9251, -6.7338, -8.2843, -9.4091, -10.0166, -10.5275, -11.0842, -11.8508, -12.6565, -13.2845, -13.4392, -13.4505, -13.5945, -14.13, -14.9588, -15.832, -16.5919, -17.0696, -17.0561, -0.1692, -0.1054, -0.1641, -0.3548, -0.4054, -0.2499, -0.1197, 0.3574, 0.6137, 0.729, -0.1316, -16.1029, + 28.348, 28.4457, 26.9174, 24.2222, 20.0737, 14.3497, 7.6659, 1.6711, -2.293, -4.4091, -5.0514, -3.9119, -1.1398, 2.5446, 4.7855, 3.9543, 0.0941, -4.3143, -7.576, -9.0354, -10.4294, -11.217, -12.2003, -12.8513, -13.7072, -15.19, -16.7728, -16.6535, -16.3197, 1.689, 1.2293, 1.498, 1.02, -0.3583, -0.7205, -0.7464, -0.7978, -0.7991, -0.4289, -1.5854, -17.0352, + 7.1738, 5.876, 3.417, 2.3215, 1.3711, 0.544, -1.4461, -3.1488, -4.5999, -4.7859, -4.3101, -4.0022, -3.9658, -3.1268, -2.0884, -1.4297, -0.0002, 0.9577, 1.567, 1.5085, 1.0721, 0.3227, 0.511, 0.7323, 0.8496, 1.7441, 0.7228, 0.7656, 1.447, -8.6193, -7.2247, -5.3667, -3.5827, -1.8357, 0.6166, 4.1585, 4.9638, 7.0248, 8.8447, 1.0209, 8.4769, + -0.7467, 0.3554, 1.8709, 0.8731, -1.4638, -3.343, -6.6672, -9.5951, -10.4012, -10.6421, -11.0116, -11.8429, -12.2455, -11.7931, -7.9381, -3.6179, 4.3015, 10.3005, 10.2729, 5.6096, 4.179, 4.6704, 9.5416, 5.1426, 3.2307, 6.6932, 7.397, 11.6314, 15.2383, 14.9214, 12.3993, 10.3175, 9.4781, 6.529, 0.7143, -6.7843, -12.1011, -12.5497, -11.0634, -11.8611, -4.9295, + 8.9473, 8.9587, 8.3247, 7.7486, 7.2645, 6.8446, 6.7225, 7.4361, 8.0756, 8.3721, 7.8521, 5.8385, 3.2013, -0.0003, -2.2581, -3.0372, -2.3326, -0.4339, 2.2803, 1.7881, -3.0603, -8.5789, -12.0665, -11.7987, -9.2546, -6.5489, -9.3084, -14.6968, -16.2796, 11.5926, 10.477, 8.8581, 8.3385, 5.311, -2.0531, -7.544, -8.5312, -8.7087, -8.2386, -9.5016, -25.9443, + 17.7853, 20.4425, 22.0494, 22.6794, 21.5241, 17.2874, 10.6686, 4.0415, -0.8452, -3.3573, -4.8317, -6.2098, -8.0414, -10.4109, -12.4433, -13.6668, -13.5852, -12.5998, -10.4309, -6.2165, -0.7444, 0.8686, -2.2118, -2.8842, -0.1978, -1.0432, -7.6768, -11.1308, -8.8188, 14.1142, 12.1567, 7.0646, 6.3108, 1.5813, -5.6339, -6.7414, -7.8081, -7.7366, -5.6857, -7.6219, -18.4403, + 10.4095, 10.1666, 9.2271, 8.086, 6.4145, 4.2188, 0.0306, -2.2509, -4.0464, -2.5048, 0.7199, 3.4238, 3.2446, 1.8968, 2.3554, 2.4242, 1.5237, 2.3494, 4.0741, 2.8937, -1.4622, -5.2927, -9.7781, -9.2472, -7.305, -3.6229, -4.1228, -9.1846, -14.6411, 8.1502, 5.2313, 1.058, 1.4879, 3.7251, 2.9439, -0.5626, -1.1335, -5.4441, -3.6896, -11.7665, -16.0896, + 16.3683, 15.7368, 14.0789, 11.8221, 8.6363, 4.8193, 0.7944, -2.5033, -4.2969, -5.1383, -5.1385, -5.8567, -6.7831, -7.2715, -6.194, -4.4484, -2.8402, -2.2612, -2.0718, -1.0756, 0.0928, 1.1543, 1.4991, -0.3, 0.0566, -0.6778, -3.4172, -5.3252, -9.4588, 11.6386, 8.1885, 3.6288, -1.2989, -3.6855, -3.9476, -4.1335, -3.4808, -2.6249, -1.8682, -2.4166, -19.6188, + 9.9289, 9.2679, 7.9267, 8.7379, 10.9513, 13.7239, 14.8623, 12.3233, 7.4753, 3.3088, 0.9949, -1.1257, -2.9647, -3.3198, -1.5514, 1.8208, 1.1498, -4.6271, -7.9003, -10.0749, -11.1748, -10.0605, -6.3035, -5.8941, -7.6734, -10.1071, -9.5489, -6.0056, -4.14, 9.5365, 2.656, 3.6743, 6.2251, 4.9344, -1.5821, -4.9354, -4.9959, -4.249, -3.3389, -7.9251, -19.9895, + 15.7601, 15.5371, 14.5879, 13.6852, 13.7329, 14.2619, 14.5602, 14.105, 11.9855, 9.0424, 5.9338, 2.9248, 1.1175, -0.2175, -0.4564, -0.8056, -2.8269, -5.9252, -9.3719, -12.1962, -12.8615, -12.521, -10.3147, -10.3071, -11.7171, -13.5357, -14.5158, -14.3799, -15.2819, 0.2685, -1.1025, -1.4893, -1.4317, -1.3748, -0.8857, -0.0388, 0.9292, 2.3295, 3.5114, -0.7158, -18.7537, + 10.0771, 10.8307, 10.8465, 11.7532, 13.7152, 14.8042, 13.3142, 9.3177, 4.2443, -0.137, -2.8245, -4.9084, -6.2428, -7.4346, -7.1199, -4.5048, -0.3499, 3.4684, 5.2923, 2.9229, -0.3932, -2.4266, -2.9696, -4.8989, -8.2386, -13.2276, -16.6579, -16.3335, -11.9188, 12.1564, 11.5591, 10.1368, 8.7589, 4.6074, -3.2222, -8.3162, -9.1139, -8.8367, -7.9752, -9.7544, -23.1025, + 11.5053, 11.7027, 11.7371, 13.2093, 15.2251, 15.5948, 12.9282, 8.237, 4.0626, 1.5654, 0.2206, -0.6203, 0.1854, 2.0975, 5.0249, 6.2795, 5.603, 2.918, 1.3161, -0.0224, -2.9425, -5.8601, -7.8659, -9.4742, -11.962, -17.3077, -22.0414, -24.853, -26.4631, 0.6245, 0.843, 0.7564, -0.0344, 0.186, 0.2573, 0.0022, 0.3483, -0.0033, -0.3539, -2.626, -27.0235, + 5.1441, 5.4989, 4.5886, 4.889, 4.4149, 4.7882, 4.1037, 2.1106, -0.5897, -1.6882, -2.0231, -2.3075, -4.0395, -5.998, -7.0714, -7.2239, -6.85, -6.2178, -5.879, -4.2255, -3.0049, -0.9642, 0.5881, 1.855, 5.0224, 5.6412, 5.331, 2.5657, 1.5411, 13.0414, 12.1678, 10.8758, 8.35, 3.9695, -1.2713, -6.6778, -7.5357, -8.1366, -9.815, -14.9679, -9.097, + 5.6158, 4.9839, 2.6123, 0.8571, -0.5963, -0.3233, -0.2214, -0.3194, -0.137, 0.4421, 0.3275, 0.0835, -0.517, -0.8713, -0.8569, -0.8339, -0.8554, -0.5354, -0.0395, -0.0558, -0.9263, -0.8835, -0.8978, -0.6944, -0.6268, -0.8091, -1.0483, -1.4194, -1.4539, -1.4149, -1.4513, -1.7313, -2.1794, -1.7446, -0.9286, 0.2594, 1.3903, 2.1796, 3.3663, 2.2545, -1.2043, + 10.708, 10.7135, 9.5629, 8.5444, 8.8788, 10.1398, 10.5302, 9.9131, 6.6128, 3.5565, 2.0899, 1.1039, 0.3794, 0.6277, -0.198, -1.3526, -2.7157, -4.4999, -6.1998, -7.9255, -8.1415, -9.2812, -8.2556, -8.1488, -8.8083, -9.3952, -7.3216, -6.7527, -4.3647, -4.2821, -3.0286, 0.3702, 1.9504, 4.267, 4.98, 3.4858, 0.8969, -0.2219, 0.7569, -9.1747, -5.7376, + 15.6199, 17.2444, 17.3338, 14.6899, 10.1694, 6.6473, 3.7155, 2.2358, 1.5381, 1.6499, 1.6341, 0.4488, 0.1506, -1.4323, -2.951, -3.5813, -3.4819, -3.2311, -4.3442, -6.2089, -6.4666, -6.7538, -7.4724, -7.2719, -7.5336, -7.1999, -7.6644, -8.4572, -9.0267, -8.4693, -10.5727, -9.758, -6.2924, -2.3994, 1.2587, 4.0421, 6.4837, 8.0877, 9.5585, 8.0612, -1.6481, + 19.7459, 20.2278, 18.163, 15.009, 12.1531, 9.979, 6.226, 3.3367, 0.8576, -0.7079, -0.8905, -2.1529, -4.1404, -5.6658, -7.062, -8.838, -8.6505, -8.0785, -6.8102, -4.7097, -3.3992, -4.6255, -5.7732, -5.7892, -3.5462, -3.1831, -5.7363, -8.6675, -7.2716, 4.1141, 4.3678, 4.3289, 4.1542, 4.0907, 1.7285, -0.9643, -1.7912, -4.9181, -4.5913, -10.5192, -12.1315, + 6.1392, 7.2498, 8.1626, 7.685, 6.4337, 6.4811, 6.2044, 4.4007, 3.1418, 2.4995, 0.929, 0.1185, -0.7668, 1.7199, 1.8949, 2.0578, 0.9328, -0.211, -2.8546, -2.7195, -3.0066, -5.4613, -5.4714, -6.1331, -7.3092, -7.381, -7.7191, -8.5523, -8.4648, -2.487, -2.6525, -3.0263, -3.5473, -2.5564, -1.093, 0.1556, 2.3664, 3.5226, 4.7554, 4.5624, -7.591, + 9.311, 9.9536, 9.2138, 10.0448, 12.2215, 15.3929, 16.8943, 15.4237, 10.3171, 4.7547, 1.0177, -2.1707, -4.9877, -7.5219, -7.9593, -6.9345, -4.8837, -0.9854, 3.2044, 2.3045, -0.4463, -2.4338, -5.1476, -7.89, -10.631, -12.6634, -14.4919, -15.1208, -15.7863, 5.6159, 2.3509, 0.9141, -0.354, -1.9709, -1.3207, -0.835, -0.2962, -0.1715, -0.2711, -3.6616, -23.6214, + 23.3043, 22.9242, 21.5293, 19.5762, 16.1241, 10.4648, 6.0084, 4.4333, 5.1608, 6.7668, 7.1607, 5.7544, 1.6077, -1.1787, -4.1636, -7.1966, -8.5322, -8.3418, -7.6815, -6.4004, -5.6492, -7.9013, -12.6029, -15.0772, -12.4774, -7.5784, -9.0924, -17.5597, -19.3815, 3.7144, 2.6198, 1.4796, 0.442, -0.5744, -0.9102, -0.6355, -1.0076, -1.4038, -1.1279, -2.5963, -20.6144, + 11.2061, 12.3118, 12.8295, 13.0523, 13.1146, 12.3645, 9.9362, 5.7743, 1.7043, -1.8769, -4.8871, -7.3022, -10.0064, -12.5843, -14.2598, -13.6895, -11.6784, -9.5138, -6.1691, -0.5296, 5.2373, 5.2179, 3.438, 3.0836, 2.2733, -1.6391, -6.1888, -7.6374, -3.5815, 20.8484, 18.6436, 8.9742, 10.0179, 3.879, -7.4403, -11.3642, -12.3105, -11.5853, -8.933, -10.7298, -20.8771, + 16.8529, 17.4255, 16.4102, 15.5784, 15.8674, 17.495, 18.1947, 15.9349, 11.712, 7.2655, 2.7249, -1.9527, -5.0648, -6.5508, -5.6015, -1.523, 3.8782, 6.4704, 3.5684, -1.2082, -2.4831, -2.6718, -6.1617, -14.2995, -21.6998, -24.5766, -25.7294, -25.4801, -24.3755, 1.7078, 0.3442, -0.186, -0.3639, -0.6031, -0.7615, -0.5273, -0.1524, 0.161, 0.3883, -0.0071, -25.9432, + 3.6247, 4.1362, 4.7304, 5.4643, 6.0686, 6.7599, 7.37, 7.9086, 8.2045, 8.2007, 8.305, 7.9346, 6.506, 5.2072, 4.901, 4.7326, 5.1044, 4.6386, 2.5145, -2.675, -8.8497, -12.8927, -16.3752, -16.1979, -12.4272, -9.0385, -10.4849, -12.3511, -11.0196, 16.8771, 16.0363, 12.4221, 5.0921, -2.2734, -6.9441, -6.2634, -7.9111, -8.604, -8.3171, -10.1145, -25.1507, + 20.4102, 22.2333, 21.4536, 19.4223, 16.2855, 13.0015, 8.6431, 4.0577, 0.1512, -3.055, -6.8588, -9.9672, -11.6652, -13.5703, -15.4009, -14.9881, -14.1899, -13.0588, -12.144, -10.7868, -7.9129, -2.9873, -1.111, -1.0826, 1.2318, 4.7844, 4.0367, 1.8708, 1.1966, 1.4837, -0.6523, -2.7877, -2.3545, -1.2604, 3.0293, 4.438, 2.6853, 3.182, 0.1563, -7.9197, -4.8422, + 24.4801, 24.0824, 22.4438, 19.5938, 14.694, 8.679, 3.7523, 0.8565, -0.9075, -1.514, -0.7636, 1.4427, 4.6338, 4.78, -0.4807, -5.3801, -6.6867, -7.1351, -7.2085, -6.89, -7.0642, -5.4063, 1.9414, 1.1193, -8.061, -17.439, -17.6573, -19.7125, -20.1924, -1.8469, 0.7851, 2.9495, 5.7461, 5.1153, 0.0343, 1.2368, -1.4044, -2.4151, -4.0039, -6.1967, -17.9837, + 34.238, 33.5242, 31.1201, 27.6874, 23.0098, 16.3994, 8.7955, 1.8365, -2.8561, -4.7762, -4.6828, -3.5969, -2.7477, -3.7154, -5.8733, -6.7781, -7.1404, -9.1196, -11.1436, -11.7088, -11.204, -10.1729, -10.8046, -9.7894, -7.4004, -10.6648, -13.8125, -14.2674, -14.356, 0.7706, 1.2161, 0.201, -0.2054, -0.41, -0.3813, -0.4077, -0.2383, -0.1037, 0.0286, -0.4699, -14.1437, + 28.8775, 29.5132, 28.5106, 26.2574, 21.3404, 14.0753, 6.0344, -0.6419, -5.0399, -7.8669, -10.5378, -12.6348, -13.9599, -14.7351, -14.0154, -11.1568, -6.4165, -1.6004, -0.2199, -4.6568, -7.7877, -4.327, -3.6815, -7.3611, -9.9812, -9.0522, -3.7854, -1.0622, -4.0886, 4.5036, 0.0436, -1.262, 0.1566, 0.7061, 0.993, -0.1034, -0.8841, -0.1473, -0.6208, -3.3851, -11.7638, + 23.7811, 23.4799, 22.5985, 21.1811, 19.295, 16.9827, 14.153, 11.0015, 7.6758, 4.3321, 1.377, -1.2257, -4.1809, -8.056, -12.0663, -14.7575, -16.2562, -16.8262, -16.6031, -14.6213, -10.859, -6.2555, -3.6846, -3.645, -3.7342, -4.0353, -7.6132, -10.866, -10.5716, 9.6447, 7.8023, 3.9088, 0.9709, -1.2963, -2.9548, -3.6717, -3.5325, -2.8548, -2.7867, -5.23, -17.9213, + 7.3168, 7.9817, 8.1669, 8.3682, 8.5119, 8.7999, 8.5177, 8.224, 7.976, 7.1004, 4.9797, 2.844, -0.2787, -2.8393, -5.1812, -6.501, -7.8099, -7.3824, -4.9246, -1.2066, 1.0202, -1.2524, -5.5773, -6.6635, -6.2109, -4.9615, -7.0357, -10.7105, -11.2719, 12.8705, 11.8805, 10.2523, 9.3642, 5.4904, -1.6627, -6.1562, -9.1055, -10.2004, -10.6557, -12.0775, -23.3035, + 29.5404, 29.4681, 28.4882, 26.7591, 23.995, 19.9029, 14.9906, 9.9884, 4.9431, 0.7201, -2.7182, -4.9295, -5.8329, -5.2835, -3.1411, -1.0337, -1.2994, -4.6551, -9.294, -12.6166, -14.4507, -14.7304, -13.5533, -12.6574, -13.3765, -15.4995, -17.3894, -18.253, -18.0815, 0.4964, 0.5507, 1.1546, 0.737, -0.0255, -0.3498, -0.5226, -0.4656, -0.4711, -0.2868, -0.8174, -17.811, + -1.0744, 14.9003, 33.1596, 35.0523, 13.0736, 2.0052, -0.7661, 8.7597, 2.7166, -6.495, -4.261, 3.772, -4.3426, -8.7782, -3.2656, -7.4382, -8.4893, -4.5093, -7.9161, -3.7247, -7.052, -3.6709, -6.265, -4.496, -4.0238, -4.7559, -5.1416, -7.861, -9.1128, 0.6813, 1.7272, 1.1217, 0.4323, -0.0682, -0.265, -0.1787, -0.4185, -0.8065, -0.2104, -2.0153, -10.3544, + 17.3596, 17.5673, 15.0858, 11.4644, 7.3814, 4.0226, -0.141, -3.3849, -5.6204, -6.9233, -7.1105, -7.9534, -8.3396, -9.0384, -9.3087, -9.0779, -7.7416, -7.4684, -7.3969, -6.6548, -5.2109, -4.5759, -2.5217, -0.3381, 2.765, 6.1586, 8.7075, 9.567, 8.7272, 5.4636, 3.5914, 3.5111, 3.4034, 3.2185, 1.4996, -0.7001, -2.2097, -2.6342, -2.6685, -12.4751, 1.7656, + 9.2805, 8.3218, 6.4144, 5.5901, 4.5122, 4.117, 2.0243, 0.4668, -1.3946, -1.908, -1.6016, -2.3054, -3.2805, -3.6877, -3.6998, -3.136, -2.3723, -2.0691, -2.5325, -3.5697, -3.7685, -3.6638, -2.437, -2.4841, -1.3748, -1.3849, -0.1182, 1.3637, 4.6978, -2.5191, 0.6452, 3.8178, 5.9716, 6.9002, 5.0344, 1.4694, -0.9067, -2.4853, -4.2997, -13.628, 3.6107, + 14.3113, 15.3825, 16.0172, 17.0841, 17.9406, 17.4527, 13.8237, 9.1622, 4.4761, 0.4333, -1.8491, -4.1973, -6.2352, -7.3255, -6.6956, -3.8665, 0.4871, 1.8452, -1.9049, -6.4158, -9.6692, -9.9954, -8.3868, -6.3274, -7.5276, -11.6979, -13.095, -12.8586, -10.3679, 12.6405, 9.43, 6.8308, 1.9954, -1.8154, -4.05, -4.6445, -4.94, -4.6161, -4.141, -6.6897, -21.7106, + 15.9574, 13.5685, 10.9183, 9.2647, 7.9607, 6.5007, 4.5878, 3.5591, 3.2169, 1.2933, -0.051, -0.9224, -2.2752, -2.6282, -3.7623, -4.7934, -4.9449, -4.3779, -4.6931, -3.1458, -4.4724, -5.0318, -4.9908, -4.4859, -5.058, -5.3554, -5.0038, -5.0901, -5.7451, -5.4116, -5.6692, -5.7576, -5.1885, -3.0995, -0.5277, 2.1995, 4.1437, 5.6134, 6.876, 6.8216, -1.5471, + 19.4303, 18.5843, 17.0128, 17.0462, 18.3032, 19.023, 17.0309, 14.9915, 13.9671, 13.7472, 10.8472, 5.3475, -0.7858, -5.0732, -8.3887, -9.9459, -10.5501, -11.5448, -12.079, -11.0765, -11.334, -10.813, -12.3197, -14.8319, -14.5526, -12.6243, -11.2782, -13.0457, -15.0877, 2.8732, 1.857, 1.3694, -0.0267, -0.8287, -0.4903, -0.4684, -0.4454, -0.2649, -0.5119, -3.0635, -20.4302, + 12.4117, 13.0466, 13.2331, 13.485, 13.9028, 13.3369, 10.6679, 6.6169, 2.3362, -0.7175, -3.1184, -5.0629, -7.1577, -9.3769, -10.526, -9.6526, -5.9526, -0.9724, 3.2956, 3.3183, -0.2154, -2.7832, -2.1155, -2.0009, -5.4287, -9.8635, -12.0371, -11.731, -6.9389, 19.8935, 17.5132, 8.1204, 5.9513, -0.9114, -7.8096, -9.0959, -8.7765, -8.7232, -7.8238, -8.3381, -22.9941, + 5.4465, 6.1545, 6.596, 7.3692, 6.5453, 5.6331, 3.5394, 2.3607, 0.8659, 0.0509, -0.6899, -0.6602, -0.8114, -0.9871, -2.062, -2.1051, -2.1293, -2.4346, -2.8842, -2.7862, -2.7031, -2.7005, -2.3058, -2.4182, -2.9614, -3.3012, -3.625, -3.4399, -3.5562, 1.1375, 0.955, 0.1967, 0.2876, -0.3489, -0.1347, -0.2618, -0.2052, 0.1031, 0.1921, -1.9213, -5.8132, + 19.3219, 18.607, 17.2268, 15.7037, 13.2112, 9.2621, 6.1735, 5.2932, 6.8689, 8.1175, 8.5297, 6.2006, 2.9639, 0.2106, -1.5424, -3.0741, -3.6228, -1.7612, 1.1881, 0.4888, -4.7011, -12.4521, -18.8925, -20.1895, -15.2633, -7.7586, -8.4595, -18.6161, -23.0341, 7.2675, 6.3572, 1.7187, 0.3913, 0.3928, -0.3109, -1.9821, -2.8777, -3.2372, -3.3101, -4.4095, -25.201, + 8.4541, 8.1779, 7.1194, 5.4725, 2.9601, 1.1998, -0.3538, -1.2461, -1.9054, -1.1532, -0.8697, -0.7216, -1.4868, -2.8361, -3.9114, -3.9948, -3.2868, -2.9321, -1.6346, 0.6941, 1.5767, 0.1133, -0.6901, -1.9526, -1.704, -0.6393, -1.7853, -2.0227, -0.6415, 6.3775, 3.5011, 1.7742, 0.8521, -0.8807, -2.4262, -1.9793, -2.713, -1.0301, -0.2906, -3.185, -7.4694, + 10.0438, 9.573, 9.4079, 10.5993, 13.6404, 15.4525, 14.499, 10.5598, 6.2936, 3.7658, 1.8182, 2.4916, 3.9516, 5.8549, 9.0644, 9.6627, 6.8173, 4.3977, 1.349, -4.2076, -12.0535, -17.0808, -19.6338, -19.7015, -18.7275, -16.8855, -13.8529, -11.6701, -15.4293, 6.271, 4.5162, 0.1386, -2.0908, -1.7858, -2.0793, -1.8138, 0.2844, 0.7409, 0.2032, -4.3846, -24.8049, + 25.0551, 24.1141, 20.9653, 16.3108, 10.8527, 5.3678, 0.7364, -2.8219, -5.0859, -5.765, -6.1499, -6.6367, -7.4276, -7.5696, -8.0119, -6.4695, -2.7893, 0.4057, 2.0532, 0.861, -1.2343, -2.5971, -2.0921, -3.1259, -5.4032, -7.7358, -7.6535, -8.064, -10.089, 1.7165, 0.5619, 0.1133, -0.0994, -0.1364, -0.266, -0.4353, 0.5041, 0.4384, 0.8615, -3.2587, -14.5713, + -0.2824, -1.2002, -1.1857, -0.7688, -0.8143, -0.7172, -1.5304, -2.1288, -3.0516, -3.6018, -4.8378, -6.1535, -7.732, -6.8121, -6.1824, -3.6103, -1.4311, 0.9978, 1.1937, 0.8415, 2.4841, 6.3803, 8.8835, 7.0925, 6.7752, 9.2623, 5.7944, 2.8315, -0.4967, 18.7297, 14.2388, 10.8799, 4.2826, -6.9342, -8.6376, -8.3976, -6.7575, -6.0459, -5.4581, -5.9001, -18.8293, + 10.1128, 8.8893, 7.3473, 6.5214, 7.293, 10.3397, 14.0197, 15.8841, 13.7146, 8.7127, 4.4971, 1.7567, 0.2355, 0.565, 2.536, 6.4325, 6.1884, 1.5759, -3.2537, -5.8565, -5.4444, -3.863, -6.5876, -12.9364, -16.8492, -18.9964, -18.8056, -16.0076, -18.0217, 3.9553, 2.3698, 1.9291, -0.0877, -0.9652, -0.9019, -0.4445, -0.6487, -0.2555, -1.3366, -3.614, -25.1871, + 12.2726, 11.228, 9.4632, 7.3787, 5.2189, 3.66, 2.1581, 1.8973, 1.7208, 1.1692, 2.6675, 2.148, 0.1934, -0.9062, -0.5766, -0.7741, -0.2722, -1.4842, -1.6982, -2.2141, -2.7162, -2.8899, -3.2527, -3.3476, -3.8185, -5.7582, -8.5254, -9.5927, -13.3491, 2.9336, -0.0614, -5.1792, -7.8262, -5.8818, -2.4979, 0.281, 2.5842, 4.2687, 5.4567, 5.9224, -16.9053, + 37.2172, 34.3913, 31.2113, 27.7111, 23.6697, 19.0839, 14.6521, 10.8663, 7.8437, 5.4886, 3.9602, 2.5869, 0.56, -1.9033, -4.6862, -7.319, -10.071, -12.7038, -14.768, -15.8511, -16.1191, -16.1652, -16.2159, -15.9004, -15.8958, -16.8057, -17.9478, -18.494, -18.3957, 0.4419, 0.2835, -0.0357, -0.2713, -0.3987, -0.3334, -0.2999, -0.1625, 0.2757, 0.674, -0.1736, -16.8775, + 11.3753, 13.7268, 15.9469, 19.24, 21.6371, 21.2732, 16.6665, 10.0971, 4.1118, -0.3896, -3.6531, -5.5614, -8.0681, -10.2817, -11.6723, -11.5104, -10.0734, -10.1816, -8.5685, -7.1045, -6.4138, -4.8696, -3.9548, -5.7824, -5.0034, -4.9254, -6.3935, -5.3682, -4.2986, 12.8596, 6.0788, 2.4099, 2.8908, 0.0595, -2.3723, -2.9619, -4.0883, -4.5273, -4.0164, -6.3324, -17.4382, + 26.4179, 26.6038, 25.6315, 22.7118, 17.4654, 11.2374, 4.563, -0.6721, -3.649, -5.1965, -6.8885, -8.5149, -9.9685, -10.5303, -10.6988, -9.8426, -8.6196, -5.7793, -0.9658, 3.2322, 2.5498, 0.5196, -0.4196, -3.4101, -7.4205, -10.7757, -11.9107, -12.1132, -13.5565, 2.4448, 1.027, 0.2616, -0.2763, -0.6725, -0.5323, -0.4687, -0.3345, 0.1168, 0.1296, -1.6954, -17.0871, + 18.4471, 16.7466, 13.9277, 10.8916, 8.7857, 7.1932, 5.5568, 4.1778, 3.8018, 3.6509, 4.1995, 4.5197, 3.7143, 2.0835, 1.0146, 0.3919, -0.3931, -1.7518, -3.7102, -5.6106, -7.0424, -8.2355, -8.7436, -9.9803, -10.8971, -12.1221, -12.4526, -14.0451, -14.1182, 1.5911, 1.3311, 0.9816, 0.2592, 0.5671, -0.15, -0.6917, -0.071, -0.0271, 0.0589, -3.8492, -16.0146, + 5.9232, 5.3337, 3.8014, 2.9697, 3.4359, 4.2543, 3.4648, 1.7717, 0.1194, -0.0269, 0.7474, 1.7656, 2.2681, 3.3777, 5.535, 7.6925, 7.117, 5.0594, 1.6134, -2.884, -4.6636, -5.6498, -6.726, -7.6581, -7.7482, -7.0077, -8.1003, -8.2149, -7.5709, 2.7271, 3.2452, 3.0964, 1.8085, 1.2978, 0.1047, -1.3807, -1.5844, -0.8243, -0.5104, -7.9799, -12.0827, + 12.4719, 12.1361, 10.1546, 7.9843, 6.3039, 5.8891, 4.6571, 2.6181, -0.1657, -1.9369, -2.8607, -3.3105, -4.8578, -7.0042, -7.1916, -5.9866, -4.1997, -1.7831, 1.5238, 4.3316, 3.2165, 1.1019, 0.2627, -0.7887, -2.3974, -4.1659, -7.7383, -8.8914, -9.3732, 3.3631, 2.173, 1.7422, 1.8227, 1.4558, 0.1916, -0.0971, -0.1883, -1.5408, -1.1423, -7.7797, -11.8474, + 11.3451, 10.9, 8.9585, 6.1028, 3.1858, -1.1621, -5.3836, -9.5575, -11.5639, -12.6129, -13.2817, -13.1921, -12.6233, -11.4537, -9.9063, -7.2485, -2.9323, -0.1679, 2.3451, 3.4644, 4.1413, 6.5832, 8.0312, 9.6, 9.3866, 8.339, 7.0332, 6.2115, 5.4582, 2.4819, 2.4952, 2.5332, 1.3146, 1.284, 1.1744, 1.4075, 1.6533, -0.791, -1.1435, -12.4097, 1.0916, + 23.6029, 24.2878, 23.193, 21.6752, 20.1647, 17.8825, 13.5147, 9.0959, 4.9067, 0.9398, -2.2819, -4.7976, -6.5405, -7.8935, -8.5957, -8.1319, -5.7029, -2.901, -1.4003, -3.8107, -7.7146, -10.9603, -11.9185, -11.3097, -10.0262, -10.8911, -13.0763, -15.2199, -16.0905, -4.3614, -2.5556, -2.1777, -1.8997, -0.5988, 1.0869, 2.5785, 3.4868, 4.0967, 3.3192, -2.9749, -12.6358, + 4.1481, 24.8058, 32.005, 24.107, 7.9048, 5.1844, 9.4865, 6.993, -4.1867, -5.3105, -0.1042, -5.3429, -7.948, -8.834, -11.8488, -10.9382, -11.6153, -10.8429, -8.8763, -8.2063, -5.9086, -4.678, -0.7362, 0.9339, 1.6189, 1.242, -2.165, -5.4458, -5.4417, 3.8026, 4.9367, 2.9396, 1.2003, 0.8096, -0.4055, -1.2653, -1.7631, -2.913, -1.4945, -5.8474, -8.5756, + 23.7954, 23.1921, 21.7016, 20.0766, 17.1113, 13.7019, 10.3999, 7.0724, 4.4505, 3.2062, 3.6711, 5.104, 6.2303, 4.8847, -0.1659, -4.8929, -7.3427, -9.3139, -10.945, -11.4728, -10.0337, -7.5622, -3.5203, -5.8211, -14.2213, -19.1068, -19.3958, -20.2365, -20.5672, -0.5258, 0.0632, 2.1808, 3.9092, 2.4964, -0.3407, -0.519, -0.8656, -0.9771, -1.7973, -3.6241, -20.0182, + -3.736, -3.6185, -3.3879, -2.0035, -2.0453, -3.0452, -2.1024, -2.2759, -2.6516, -4.3569, -3.6456, -2.3824, -3.7115, -5.0829, -6.2136, -7.0765, -6.8802, -6.4042, -2.6943, 1.3032, 2.8085, -2.4198, 6.8476, 8.522, 10.8666, 10.9764, 11.8694, 11.688, 10.8525, -10.1854, -14.3979, -14.1885, -6.1104, -2.3069, 3.0598, 3.2787, 7.7402, 9.9334, 10.5862, 12.5907, 18.9431, + 13.3492, 12.8348, 12.1001, 10.6097, 8.9141, 7.8597, 5.9391, 3.8673, 2.6411, 2.3479, 2.7602, 2.8027, 2.2779, 0.4287, -1.3226, -2.0315, -2.1676, -1.5551, -1.2222, -2.1197, -4.0818, -6.1594, -8.1874, -9.3177, -9.4499, -9.7874, -10.1789, -10.6801, -10.4712, -3.7681, -4.8313, -5.1537, -4.2661, -3.2035, -1.4351, 1.4217, 3.2157, 5.2602, 6.9893, 5.7708, -7.9426, + 23.1558, 23.5472, 22.1677, 18.7915, 13.0187, 6.0783, -0.4803, -4.5728, -6.1861, -7.0011, -7.3578, -8.089, -10.0377, -12.234, -12.8288, -11.4502, -9.5173, -6.4728, -2.1175, 2.0048, 1.357, -2.9595, -2.6436, 1.518, 3.0406, -2.5769, -4.8065, -2.5134, -0.8343, 3.1119, 3.3528, 5.9276, 3.6737, 2.5908, 1.6925, -3.4674, -1.5813, -3.2207, -2.1812, -9.8987, -8.8538, + 26.492, 27.5278, 23.5895, 18.4003, 14.4396, 11.3628, 6.6147, 2.4341, -0.2444, -2.4075, -4.2073, -6.4485, -7.8162, -9.2259, -9.5571, -9.3064, -9.091, -7.0174, -7.1701, -7.0279, -7.651, -7.5329, -8.2698, -7.2504, -4.4537, -4.4137, -4.3225, -4.9571, -2.4902, -7.3866, -6.0243, -3.8745, 0.0041, 2.702, 4.9257, 5.6046, 5.2905, 3.4738, 1.697, -6.4124, 2.1053, + 20.0311, 32.4089, 21.4065, 3.874, 5.863, 17.0357, 3.7543, 2.9904, 15.6577, 4.2113, -0.9665, 3.2682, -4.9242, 0.9109, -5.5297, -0.979, -5.0003, -0.7131, -5.5269, -8.0296, -9.9403, -10.8809, -10.2649, -9.9965, -9.6956, -10.6759, -12.5982, -13.0794, -12.6109, 0.8915, 0.0604, -0.2305, -0.0021, -0.6053, -0.3414, -0.0731, 0.4824, 0.7549, -0.1062, -0.8306, -13.4365, + 16.7766, 17.5169, 16.4982, 14.0891, 10.0932, 5.3461, 0.6341, -3.6859, -5.9242, -6.3128, -5.935, -5.7548, -6.0307, -6.0498, -6.4996, -6.5626, -4.8816, -3.2502, -3.2922, -4.2819, -4.8479, -5.5791, -4.7813, -3.1384, -3.49, -2.8954, 0.2902, 4.4573, 7.4915, -5.5534, -4.1269, -1.5355, 0.4168, 0.9124, 3.0599, 2.1241, 2.4262, 2.5, 4.5034, -4.7272, 8.0549, + 14.2987, 14.8926, 15.4168, 16.0974, 16.7877, 16.0424, 12.971, 8.0251, 2.909, -0.5642, -2.964, -4.5656, -6.3342, -5.7781, -3.4597, 0.3272, 2.7738, -0.3574, -4.8087, -8.1398, -9.6152, -7.9303, -6.227, -7.0986, -10.3018, -13.1453, -11.2961, -9.1627, -8.7927, 1.0994, 1.8123, 2.8974, 2.905, 4.6509, 3.4505, -0.601, -1.4758, -2.7795, -2.4745, -9.4847, -15.4782, + 19.5896, 21.6796, 21.9059, 19.1821, 14.0268, 8.5044, 2.2676, -4.7266, -10.645, -13.046, -14.086, -14.5335, -14.9498, -14.787, -14.0697, -11.4549, -8.2147, -4.026, 0.3628, 4.9113, 3.4988, 0.578, 1.9943, 2.981, 0.8573, -1.3207, -0.074, 2.1207, 1.474, 10.3387, 1.2319, -0.4911, -1.8207, -1.07, -0.8286, 0.3764, 0.204, -0.829, -1.6698, -5.4418, -14.7994, + 7.6904, 8.5944, 9.5072, 9.882, 10.2276, 10.5222, 10.3373, 9.3607, 7.6459, 4.8852, 2.1707, -0.1575, -1.8433, -2.7877, -2.2526, -0.5664, 2.3824, 4.3345, 3.544, -0.6514, -5.2439, -9.2918, -11.7988, -14.1092, -12.7385, -9.1451, -9.6551, -10.7736, -10.0695, 11.9243, 11.2262, 10.3898, 9.8282, 8.0787, 3.3521, -3.2649, -10.5053, -13.2404, -13.3007, -14.4881, -21.2847, + 30.307, 29.5477, 26.4796, 21.7752, 16.6251, 11.7301, 7.3299, 3.8872, 0.729, -1.2037, -2.4737, -3.5896, -4.8044, -5.4589, -6.3339, -6.5407, -6.0748, -6.4957, -7.6726, -8.7065, -8.7749, -8.8999, -9.3481, -9.1891, -9.9612, -10.0486, -10.55, -11.2845, -11, -6.1498, -6.3059, -5.5965, -4.5595, -2.8356, 0.0899, 2.711, 4.5977, 5.7639, 7.0861, 5.1987, -6.4033, + 12.2542, 12.1227, 12.1295, 13.7252, 16.2506, 16.1281, 10.9394, 4.8988, -0.4731, -3.6819, -5.4021, -7.4944, -8.2715, -8.0576, -6.1477, -3.0306, 1.9117, 4.056, 2.1482, 0.8098, 0.1207, 0.0058, -2.3034, -4.0466, -3.922, -6.4147, -11.2118, -17.1187, -19.9247, 6.0099, 3.6952, 1.2907, -0.5044, -0.8291, -1.0627, -1.1957, -1.1416, -1.4267, -1.5418, -3.2939, -24.486, + 9.7234, 8.7897, 6.536, 5.5091, 6.6941, 8.8748, 9.0238, 7.6482, 4.3129, 1.4757, -0.7289, -2.4072, -4.4322, -5.3461, -3.7806, -1.1393, 2.9797, 3.5166, -1.5034, -4.0711, -4.3945, -4.4639, -5.1951, -6.0761, -6.0336, -6.996, -6.516, -4.952, -7.048, 14.6458, 13.1436, 9.144, 2.7564, -0.8129, -3.8913, -6.65, -6.1267, -6.0986, -6.7696, -9.3407, -21.2384, + 8.5519, 7.5224, 5.9151, 4.8177, 3.503, 2.2565, 1.1622, 0.1988, -0.5493, -0.385, -0.1928, -0.4114, -0.8801, -1.0153, -1.0764, -1.4171, -1.4905, -1.3971, -1.0636, -1.1738, -0.9725, -1.888, -2.3866, -2.7467, -2.5988, -2.5326, -3.1114, -3.2783, -3.3604, -3.8082, -3.8849, -4.0621, -3.5801, -2.8055, -1.5136, 0.9076, 2.835, 4.3455, 5.8838, 5.6825, -0.4474, + 7.7224, 9.4298, 7.9025, 6.4102, 5.0524, 7.1733, 6.8444, 5.1985, 1.7514, 0.1644, 0.4222, 1.0885, -0.3101, -2.4745, -2.9872, -2.3617, -3.5889, -3.7306, -1.5428, -0.5556, -0.6425, -2.7366, -1.5405, -2.2119, -3.2504, -3.1003, -4.4891, -10.0519, -13.5853, -15.9446, -3.2508, 0.2918, -0.9236, 3.57, 5.1357, 5.1789, 6.0048, 3.6122, 3.0229, -6.6974, 0.466, + 12.4572, 13.576, 13.8205, 13.8979, 14.7964, 17.0228, 18.4159, 17.4577, 14.0275, 10.4467, 7.5633, 5.822, 5.5014, 6.0819, 6.428, 5.7453, 2.9483, 0.4368, -2.0706, -3.5909, -6.3177, -11.4245, -17.9894, -23.7008, -25.5017, -25.0724, -24.5956, -23.3443, -22.8376, 1.8005, 0.405, -0.0309, -0.4072, -0.7903, -0.7639, -0.633, 0.2496, 0.9862, 0.2958, -1.1118, -25.7677, + 4.7942, 4.1637, 3.1217, 3.4886, 5.7426, 8.4586, 9.4051, 8.4408, 4.0573, -0.0847, -2.6488, -4.2622, -6.8882, -7.9882, -8.0785, -6.5745, -3.6736, 0.0836, 3.7506, 4.295, 1.443, 1.7647, 2.5945, 0.5096, -1.403, -2.4095, -4.2409, -7.3362, -10.5254, 14.3716, 9.9001, 5.5613, -0.4343, -4.0106, -4.4911, -4.7396, -4.3992, -3.5933, -3.3021, -4.8629, -20.9215, + 21.6217, 21.5816, 19.9361, 17.4078, 14.6925, 11.478, 7.736, 4.5567, 2.3261, 1.3757, 0.8699, 1.0465, 1.101, -0.3579, -2.1883, -4.1422, -5.522, -7.4591, -9.7124, -11.0673, -12.8828, -14.8063, -14.5786, -12.2038, -9.6561, -7.6717, -6.6862, -4.494, -2.3008, -2.8294, -2.2589, -0.7299, 1.858, 3.4539, 3.4053, 2.7591, 1.9997, 0.5308, 0.5471, -8.7356, -3.9438, + 1.0482, 0.882, 0.312, -0.0147, 0.1548, 1.1642, 2.5065, 4.2829, 6.8793, 9.8376, 11.4462, 10.6004, 8.7525, 7.4364, 7.3679, 8.2254, 7.9411, 4.8316, -0.5361, -4.6026, -6.7708, -7.8326, -7.7624, -5.3939, -6.4851, -9.7433, -13.7435, -16.3579, -14.4263, 10.9932, 7.619, 5.9532, 4.7231, 0.1759, -2.5109, -4.5002, -5.8815, -4.2941, -4.7897, -7.4879, -24.0798, + 8.4638, 7.6638, 6.7405, 6.7849, 9.6108, 11.6513, 11.2989, 8.3544, 3.044, -0.8467, -3.9303, -4.9339, -3.7358, -4.1317, -2.0585, 2.7514, 7.6579, 7.9793, 2.3491, -1.2307, -6.1104, -5.2397, -3.7933, -5.5972, -9.8841, -12.1146, -11.4629, -8.7974, -10.4828, 8.1529, 4.6235, 5.0235, -3.915, -7.5503, -5.3361, -1.2531, 6.4683, 2.2949, -0.055, -8.4536, -22.5498, + 9.8543, 8.7085, 6.2122, 3.2566, 2.0932, 1.8184, 0.621, -1.4796, -2.3312, -2.6373, -4.0537, -4.6289, -4.6135, -3.7432, -2.1216, 0.8603, 3.6326, 5.0735, 3.4051, 1.8301, 1.3556, -1.1657, -2.6873, -3.258, -2.3407, -3.5712, -3.7082, -3.8659, -2.5155, -3.0106, -3.6582, 1.1257, 3.5876, 5.1138, 3.862, 1.9732, 0.5329, 1.0253, -0.8077, -9.7439, -1.3313, + -2.9689, -3.6925, -3.2882, -2.1408, -0.3207, 1.4181, 2.0372, 0.1628, -1.5615, -1.1744, -1.1748, -2.3007, -3.8174, -4.8189, -4.0221, -1.3971, 3.2927, 7.6888, 9.8326, 7.1859, 3.6459, 2.2387, 1.1579, 1.6876, 0.0249, -1.1344, -3.2237, -2.0378, -1.2991, 8.2053, 7.6257, 7.4526, 5.2692, 0.6619, -2.5875, -5.5343, -3.5316, -3.8077, -4.5073, -9.2463, -10.5134, + 9.7903, 6.5524, 4.2187, 2.8629, 1.5301, 2.609, 2.8671, -0.4058, 0.1443, 2.1025, 2.2641, 2.254, 2.8227, 4.2305, 2.6246, 0.1011, -0.5037, -2.5281, 5.9816, 8.8018, 3.5902, -2.1055, -8.2336, -7.5542, -8.3988, -6.77, -12.1221, -12.6274, -4.0986, 15.9214, 10.1934, 4.0555, -0.7395, -4.485, -5.0408, 1.8975, -3.7215, -6.1218, -5.7613, -6.198, -17.642, + 29.2898, 29.127, 27.9887, 26.035, 22.788, 18.9325, 14.8741, 10.7353, 6.3361, 1.5435, -3.4721, -8.0918, -11.5471, -14.2024, -15.543, -16.5237, -17.5387, -18.0503, -18.3862, -18.0321, -17.2039, -14.4258, -7.6289, -2.1492, -0.8256, -0.4858, 0.7007, -0.7217, -3.5225, 7.7486, 6.5879, 3.6481, 0.1102, -1.4486, -1.4917, -1.7642, -2.4587, -2.7189, -2.3171, -5.8956, -12.2398, + 4.4923, 5.9961, 3.5313, -0.1456, -2.9561, -3.9972, -5.5178, -6.5495, -8.2904, -9.4007, -9.5368, -9.2154, -10.6132, -12.2389, -12.145, -11.3212, -9.2653, -6.1867, -0.5047, 2.8376, -1.5645, 1.0645, 6.8296, 12.903, 17.1169, 16.2097, 16.8799, 17.2979, 14.2904, 3.6672, 1.4385, 0.6939, -0.7824, -1.0548, 0.7585, 1.5905, 1.4809, 1.2351, 0.7042, -9.7316, 9.0007, + 17.1014, 20.3617, 22.1941, 23.6186, 23.8203, 21.498, 16.0993, 10.2193, 4.4688, 0.3152, -2.6232, -4.4565, -5.7629, -7.4399, -7.9702, -8.7398, -8.6156, -7.5758, -5.6113, -3.8507, -4.771, -7.9311, -11.5008, -12.9375, -11.7921, -9.1891, -8.8722, -13.4431, -16.6139, 2.6455, 3.2595, 3.634, 3.0753, 1.5772, -0.5994, -1.7486, -1.896, -2.7589, -2.489, -4.6996, -18.2534, + -6.795, -4.3945, -2.1814, -0.0391, 1.0243, 2.1577, 2.4659, 2.7954, 2.9978, 2.3847, 1.7726, 1.1096, -0.1514, -3.1834, -4.1688, -4.9229, -4.741, -4.3919, -0.8572, 1.4319, 1.2097, 1.1996, -0.6138, 0.0932, 1.9431, 3.2864, 3.0149, 3.03, 4.5238, -4.4471, -6.9731, -3.2184, -0.9733, 0.9643, 1.9409, 2.7291, 5.1726, 4.8981, 5.2725, -5.3657, 7.6481 +}; + +const struct lsp_codebook newamp2vq_cb[] = { + /* /Users/erdgeist/Coding/codec2/src/codebook/codes_450.txt */ + { + 41, + 8.96578, + 500, + codes0 + }, + { 0, 0, 0, 0 } +}; diff --git a/codebooknewamp2_energy.c b/codebooknewamp2_energy.c new file mode 100644 index 0000000..2c9ecb9 --- /dev/null +++ b/codebooknewamp2_energy.c @@ -0,0 +1,35 @@ +/* THIS IS A GENERATED FILE. Edit generate_codebook.c and its input */ + +/* + * This intermediary file and the files that used to create it are under + * The LGPL. See the file COPYING. + */ + +#include "defines.h" + + /* /Users/erdgeist/Coding/codec2/src/codebook/newamp2_energy_q.txt */ +#ifdef __EMBEDDED__ +static const float codes0[] = { +#else +static float codes0[] = { +#endif + 0.1, + 5, + 10, + 15, + 20, + 30, + 37.5, + 42.5 +}; + +const struct lsp_codebook newamp2_energy_cb[] = { + /* /Users/erdgeist/Coding/codec2/src/codebook/newamp2_energy_q.txt */ + { + 1, + 3, + 8, + codes0 + }, + { 0, 0, 0, 0 } +}; diff --git a/codec2.c b/codec2.c new file mode 100644 index 0000000..840fe21 --- /dev/null +++ b/codec2.c @@ -0,0 +1,2721 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: codec2.c + AUTHOR......: David Rowe + DATE CREATED: 21/8/2010 + + Codec2 fully quantised encoder and decoder functions. If you want use + codec2, the codec2_xxx functions are for you. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2010 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#include +#include +#include +#include +#include + +#include "defines.h" +#include "codec2_fft.h" +#include "sine.h" +#include "nlp.h" +#include "dump.h" +#include "lpc.h" +#include "quantise.h" +#include "phase.h" +#include "interp.h" +#include "postfilter.h" +#include "codec2.h" +#include "lsp.h" +#include "newamp2.h" +#include "codec2_internal.h" +#include "machdep.h" +#include "bpf.h" +#include "bpfb.h" +#include "c2wideband.h" + +#include "debug_alloc.h" + +/*---------------------------------------------------------------------------* \ + + FUNCTION HEADERS + +\*---------------------------------------------------------------------------*/ + +void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]); +void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model, + COMP Aw[], float gain); +void codec2_encode_3200(struct CODEC2 *c2, unsigned char * bits, short speech[]); +void codec2_decode_3200(struct CODEC2 *c2, short speech[], const unsigned char * bits); +void codec2_encode_2400(struct CODEC2 *c2, unsigned char * bits, short speech[]); +void codec2_decode_2400(struct CODEC2 *c2, short speech[], const unsigned char * bits); +void codec2_encode_1600(struct CODEC2 *c2, unsigned char * bits, short speech[]); +void codec2_decode_1600(struct CODEC2 *c2, short speech[], const unsigned char * bits); +void codec2_encode_1400(struct CODEC2 *c2, unsigned char * bits, short speech[]); +void codec2_decode_1400(struct CODEC2 *c2, short speech[], const unsigned char * bits); +void codec2_encode_1300(struct CODEC2 *c2, unsigned char * bits, short speech[]); +void codec2_decode_1300(struct CODEC2 *c2, short speech[], const unsigned char * bits, float ber_est); +void codec2_encode_1200(struct CODEC2 *c2, unsigned char * bits, short speech[]); +void codec2_decode_1200(struct CODEC2 *c2, short speech[], const unsigned char * bits); +void codec2_encode_700(struct CODEC2 *c2, unsigned char * bits, short speech[]); +void codec2_decode_700(struct CODEC2 *c2, short speech[], const unsigned char * bits); +void codec2_encode_700b(struct CODEC2 *c2, unsigned char * bits, short speech[]); +void codec2_decode_700b(struct CODEC2 *c2, short speech[], const unsigned char * bits); +void codec2_encode_700c(struct CODEC2 *c2, unsigned char * bits, short speech[]); +void codec2_decode_700c(struct CODEC2 *c2, short speech[], const unsigned char * bits); +void codec2_encode_450(struct CODEC2 *c2, unsigned char * bits, short speech[]); +void codec2_decode_450(struct CODEC2 *c2, short speech[], const unsigned char * bits); +void codec2_decode_450pwb(struct CODEC2 *c2, short speech[], const unsigned char * bits); +static void ear_protection(float in_out[], int n); + + + +/*---------------------------------------------------------------------------*\ + + FUNCTIONS + +\*---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_create + AUTHOR......: David Rowe + DATE CREATED: 21/8/2010 + + Create and initialise an instance of the codec. Returns a pointer + to the codec states or NULL on failure. One set of states is + sufficient for a full duuplex codec (i.e. an encoder and decoder). + You don't need separate states for encoders and decoders. See + c2enc.c and c2dec.c for examples. + +\*---------------------------------------------------------------------------*/ + + +//Don't create CODEC2_MODE_450PWB for Encoding as it has undefined behavior ! +struct CODEC2 * codec2_create(int mode) +{ + struct CODEC2 *c2; + int i,l; + +#ifndef CORTEX_M4 + if (( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, mode)) || + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, mode)) ) { + return NULL; + } +#endif + + c2 = (struct CODEC2*)MALLOC(sizeof(struct CODEC2)); + if (c2 == NULL) + return NULL; + + c2->mode = mode; + + /* store constants in a few places for convenience */ + + if( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, mode) == 0){ + c2->c2const = c2const_create(8000, N_S); + }else{ + c2->c2const = c2const_create(16000, N_S); + } + c2->Fs = c2->c2const.Fs; + int n_samp = c2->n_samp = c2->c2const.n_samp; + int m_pitch = c2->m_pitch = c2->c2const.m_pitch; + + c2->Pn = (float*)MALLOC(2*n_samp*sizeof(float)); + if (c2->Pn == NULL) { + return NULL; + } + c2->Sn_ = (float*)MALLOC(2*n_samp*sizeof(float)); + if (c2->Sn_ == NULL) { + FREE(c2->Pn); + return NULL; + } + c2->w = (float*)MALLOC(m_pitch*sizeof(float)); + if (c2->w == NULL) { + FREE(c2->Pn); + FREE(c2->Sn_); + return NULL; + } + c2->Sn = (float*)MALLOC(m_pitch*sizeof(float)); + if (c2->Sn == NULL) { + FREE(c2->Pn); + FREE(c2->Sn_); + FREE(c2->w); + return NULL; + } + + for(i=0; iSn[i] = 1.0; + c2->hpf_states[0] = c2->hpf_states[1] = 0.0; + for(i=0; i<2*n_samp; i++) + c2->Sn_[i] = 0; + c2->fft_fwd_cfg = codec2_fft_alloc(FFT_ENC, 0, NULL, NULL); + c2->fftr_fwd_cfg = codec2_fftr_alloc(FFT_ENC, 0, NULL, NULL); + make_analysis_window(&c2->c2const, c2->fft_fwd_cfg, c2->w,c2->W); + make_synthesis_window(&c2->c2const, c2->Pn); + c2->fftr_inv_cfg = codec2_fftr_alloc(FFT_DEC, 1, NULL, NULL); + quantise_init(); + c2->prev_f0_enc = 1/P_MAX_S; + c2->bg_est = 0.0; + c2->ex_phase = 0.0; + + for(l=1; l<=MAX_AMP; l++) + c2->prev_model_dec.A[l] = 0.0; + c2->prev_model_dec.Wo = TWO_PI/c2->c2const.p_max; + c2->prev_model_dec.L = PI/c2->prev_model_dec.Wo; + c2->prev_model_dec.voiced = 0; + + for(i=0; iprev_lsps_dec[i] = i*PI/(LPC_ORD+1); + } + c2->prev_e_dec = 1; + + c2->nlp = nlp_create(&c2->c2const); + if (c2->nlp == NULL) { + return NULL; + } + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, mode)) + c2->gray = 0; // natural binary better for trellis decoding (hopefully added later) + else + c2->gray = 1; + + c2->lpc_pf = 1; c2->bass_boost = 1; c2->beta = LPCPF_BETA; c2->gamma = LPCPF_GAMMA; + + c2->xq_enc[0] = c2->xq_enc[1] = 0.0; + c2->xq_dec[0] = c2->xq_dec[1] = 0.0; + + c2->smoothing = 0; + c2->se = 0.0; c2->nse = 0; + c2->user_rate_K_vec_no_mean_ = NULL; + c2->post_filter_en = 1; + + c2->bpf_buf = (float*)MALLOC(sizeof(float)*(BPF_N+4*c2->n_samp)); + assert(c2->bpf_buf != NULL); + for(i=0; in_samp; i++) + c2->bpf_buf[i] = 0.0; + + c2->softdec = NULL; + + /* newamp1 initialisation */ + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) { + mel_sample_freqs_kHz(c2->rate_K_sample_freqs_kHz, NEWAMP1_K, ftomel(200.0), ftomel(3700.0) ); + int k; + for(k=0; kprev_rate_K_vec_[k] = 0.0; + } + c2->Wo_left = 0.0; + c2->voicing_left = 0;; + c2->phase_fft_fwd_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 0, NULL, NULL); + c2->phase_fft_inv_cfg = codec2_fft_alloc(NEWAMP1_PHASE_NFFT, 1, NULL, NULL); + } + +#ifndef CORTEX_M4 + /* newamp2 initialisation */ + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode)) { + n2_mel_sample_freqs_kHz(c2->n2_rate_K_sample_freqs_kHz, NEWAMP2_K); + int k; + for(k=0; kn2_prev_rate_K_vec_[k] = 0.0; + } + c2->Wo_left = 0.0; + c2->voicing_left = 0;; + c2->phase_fft_fwd_cfg = codec2_fft_alloc(NEWAMP2_PHASE_NFFT, 0, NULL, NULL); + c2->phase_fft_inv_cfg = codec2_fft_alloc(NEWAMP2_PHASE_NFFT, 1, NULL, NULL); + } + /* newamp2 PWB initialisation */ + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode)) { + n2_mel_sample_freqs_kHz(c2->n2_pwb_rate_K_sample_freqs_kHz, NEWAMP2_16K_K); + int k; + for(k=0; kn2_pwb_prev_rate_K_vec_[k] = 0.0; + } + c2->Wo_left = 0.0; + c2->voicing_left = 0;; + c2->phase_fft_fwd_cfg = codec2_fft_alloc(NEWAMP2_PHASE_NFFT, 0, NULL, NULL); + c2->phase_fft_inv_cfg = codec2_fft_alloc(NEWAMP2_PHASE_NFFT, 1, NULL, NULL); + } +#endif + + c2->fmlfeat = NULL; + + // make sure that one of the two decode function pointers is empty + // for the encode function pointer this is not required since we always set it + // to a meaningful value + + c2->decode = NULL; + c2->decode_ber = NULL; + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) + { + c2->encode = codec2_encode_3200; + c2->decode = codec2_decode_3200; + } + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) + { + c2->encode = codec2_encode_2400; + c2->decode = codec2_decode_2400; + } + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) + { + c2->encode = codec2_encode_1600; + c2->decode = codec2_decode_1600; + } + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) + { + c2->encode = codec2_encode_1400; + c2->decode = codec2_decode_1400; + } + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) + { + c2->encode = codec2_encode_1300; + c2->decode_ber = codec2_decode_1300; + } + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) + { + c2->encode = codec2_encode_1200; + c2->decode = codec2_decode_1200; + } + +#ifndef CORTEX_M4 + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700, c2->mode)) + { + c2->encode = codec2_encode_700; + c2->decode = codec2_decode_700; + } + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, c2->mode)) + { + c2->encode = codec2_encode_700b; + c2->decode = codec2_decode_700b; + } +#endif + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) + { + c2->encode = codec2_encode_700c; + c2->decode = codec2_decode_700c; + } +#ifndef CORTEX_M4 + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode)) + { + c2->encode = codec2_encode_450; + c2->decode = codec2_decode_450; + } + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode)) + { + //Encode PWB doesnt make sense + c2->encode = codec2_encode_450; + c2->decode = codec2_decode_450pwb; + } + +#endif + + return c2; +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_destroy + AUTHOR......: David Rowe + DATE CREATED: 21/8/2010 + + Destroy an instance of the codec. + +\*---------------------------------------------------------------------------*/ + +void codec2_destroy(struct CODEC2 *c2) +{ + assert(c2 != NULL); + FREE(c2->bpf_buf); + nlp_destroy(c2->nlp); + codec2_fft_free(c2->fft_fwd_cfg); + codec2_fftr_free(c2->fftr_fwd_cfg); + codec2_fftr_free(c2->fftr_inv_cfg); + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) { + codec2_fft_free(c2->phase_fft_fwd_cfg); + codec2_fft_free(c2->phase_fft_inv_cfg); + } + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode)) { + codec2_fft_free(c2->phase_fft_fwd_cfg); + codec2_fft_free(c2->phase_fft_inv_cfg); + } + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode)) { + codec2_fft_free(c2->phase_fft_fwd_cfg); + codec2_fft_free(c2->phase_fft_inv_cfg); + } + FREE(c2->Pn); + FREE(c2->Sn); + FREE(c2->w); + FREE(c2->Sn_); + FREE(c2); +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_bits_per_frame + AUTHOR......: David Rowe + DATE CREATED: Nov 14 2011 + + Returns the number of bits per frame. + +\*---------------------------------------------------------------------------*/ + +int codec2_bits_per_frame(struct CODEC2 *c2) { + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) + return 64; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) + return 48; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) + return 64; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) + return 56; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) + return 52; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) + return 48; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700, c2->mode)) + return 28; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, c2->mode)) + return 28; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) + return 28; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode)) + return 18; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode)) + return 18; + + return 0; /* shouldn't get here */ +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_samples_per_frame + AUTHOR......: David Rowe + DATE CREATED: Nov 14 2011 + + Returns the number of speech samples per frame. + +\*---------------------------------------------------------------------------*/ + +int codec2_samples_per_frame(struct CODEC2 *c2) { + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) + return 160; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) + return 160; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) + return 320; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) + return 320; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) + return 320; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) + return 320; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700, c2->mode)) + return 320; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, c2->mode)) + return 320; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) + return 320; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode)) + return 320; + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode)) + return 640; + return 0; /* shouldnt get here */ +} + +void codec2_encode(struct CODEC2 *c2, unsigned char *bits, short speech[]) +{ + assert(c2 != NULL); + assert(c2->encode != NULL); + + c2->encode(c2, bits, speech); + +} + +void codec2_decode(struct CODEC2 *c2, short speech[], const unsigned char *bits) +{ + codec2_decode_ber(c2, speech, bits, 0.0); +} + +void codec2_decode_ber(struct CODEC2 *c2, short speech[], const unsigned char *bits, float ber_est) +{ + assert(c2 != NULL); + assert(c2->decode != NULL || c2->decode_ber != NULL); + + if (c2->decode != NULL) + { + c2->decode(c2, speech, bits); + } + else + { + c2->decode_ber(c2, speech, bits, ber_est); + } +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_encode_3200 + AUTHOR......: David Rowe + DATE CREATED: 13 Sep 2012 + + Encodes 160 speech samples (20ms of speech) into 64 bits. + + The codec2 algorithm actually operates internally on 10ms (80 + sample) frames, so we run the encoding algorithm twice. On the + first frame we just send the voicing bits. On the second frame we + send all model parameters. Compared to 2400 we use a larger number + of bits for the LSPs and non-VQ pitch and energy. + + The bit allocation is: + + Parameter bits/frame + -------------------------------------- + Harmonic magnitudes (LSPs) 50 + Pitch (Wo) 7 + Energy 5 + Voicing (10ms update) 2 + TOTAL 64 + +\*---------------------------------------------------------------------------*/ + +void codec2_encode_3200(struct CODEC2 *c2, unsigned char * bits, short speech[]) +{ + MODEL model; + float ak[LPC_ORD+1]; + float lsps[LPC_ORD]; + float e; + int Wo_index, e_index; + int lspd_indexes[LPC_ORD]; + int i; + unsigned int nbit = 0; + + assert(c2 != NULL); + + memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); + + /* first 10ms analysis frame - we just want voicing */ + + analyse_one_frame(c2, &model, speech); + pack(bits, &nbit, model.voiced, 1); + + /* second 10ms analysis frame */ + + analyse_one_frame(c2, &model, &speech[c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS); + pack(bits, &nbit, Wo_index, WO_BITS); + + e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); + e_index = encode_energy(e, E_BITS); + pack(bits, &nbit, e_index, E_BITS); + + encode_lspds_scalar(lspd_indexes, lsps, LPC_ORD); + for(i=0; ic2const, Wo_index, WO_BITS); + model[1].L = PI/model[1].Wo; + + e_index = unpack(bits, &nbit, E_BITS); + e[1] = decode_energy(e_index, E_BITS); + + for(i=0; iprev_model_dec, &model[1], c2->c2const.Wo_min); + e[0] = interp_energy(c2->prev_e_dec, e[1]); + + /* LSPs are sampled every 20ms so we interpolate the frame in + between, then recover spectral amplitudes */ + + interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5, LPC_ORD); + + for(i=0; i<2; i++) { + lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); + aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, + c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); + apply_lpc_correction(&model[i]); + synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0); + } + + /* update memories for next frame ----------------------------*/ + + c2->prev_model_dec = model[1]; + c2->prev_e_dec = e[1]; + for(i=0; iprev_lsps_dec[i] = lsps[1][i]; +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_encode_2400 + AUTHOR......: David Rowe + DATE CREATED: 21/8/2010 + + Encodes 160 speech samples (20ms of speech) into 48 bits. + + The codec2 algorithm actually operates internally on 10ms (80 + sample) frames, so we run the encoding algorithm twice. On the + first frame we just send the voicing bit. On the second frame we + send all model parameters. + + The bit allocation is: + + Parameter bits/frame + -------------------------------------- + Harmonic magnitudes (LSPs) 36 + Joint VQ of Energy and Wo 8 + Voicing (10ms update) 2 + Spare 2 + TOTAL 48 + +\*---------------------------------------------------------------------------*/ + +void codec2_encode_2400(struct CODEC2 *c2, unsigned char * bits, short speech[]) +{ + MODEL model; + float ak[LPC_ORD+1]; + float lsps[LPC_ORD]; + float e; + int WoE_index; + int lsp_indexes[LPC_ORD]; + int i; + int spare = 0; + unsigned int nbit = 0; + + assert(c2 != NULL); + + memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); + + /* first 10ms analysis frame - we just want voicing */ + + analyse_one_frame(c2, &model, speech); + pack(bits, &nbit, model.voiced, 1); + + /* second 10ms analysis frame */ + + analyse_one_frame(c2, &model, &speech[c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + + e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); + WoE_index = encode_WoE(&model, e, c2->xq_enc); + pack(bits, &nbit, WoE_index, WO_E_BITS); + + encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD); + for(i=0; ic2const, &model[1], &e[1], c2->xq_dec, WoE_index); + + for(i=0; iprev_model_dec, &model[1], c2->c2const.Wo_min); + e[0] = interp_energy(c2->prev_e_dec, e[1]); + + /* LSPs are sampled every 20ms so we interpolate the frame in + between, then recover spectral amplitudes */ + + interpolate_lsp_ver2(&lsps[0][0], c2->prev_lsps_dec, &lsps[1][0], 0.5, LPC_ORD); + for(i=0; i<2; i++) { + lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); + aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, + c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); + apply_lpc_correction(&model[i]); + synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0); + + /* dump parameters for deep learning experiments */ + + if (c2->fmlfeat != NULL) { + /* 10 LSPs - energy - Wo - voicing flag - 10 LPCs */ + fwrite(&lsps[i][0], LPC_ORD, sizeof(float), c2->fmlfeat); + fwrite(&e[i], 1, sizeof(float), c2->fmlfeat); + fwrite(&model[i].Wo, 1, sizeof(float), c2->fmlfeat); + float voiced_float = model[i].voiced; + fwrite(&voiced_float, 1, sizeof(float), c2->fmlfeat); + fwrite(&ak[i][1], LPC_ORD, sizeof(float), c2->fmlfeat); + } + } + + /* update memories for next frame ----------------------------*/ + + c2->prev_model_dec = model[1]; + c2->prev_e_dec = e[1]; + for(i=0; iprev_lsps_dec[i] = lsps[1][i]; +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_encode_1600 + AUTHOR......: David Rowe + DATE CREATED: Feb 28 2013 + + Encodes 320 speech samples (40ms of speech) into 64 bits. + + The codec2 algorithm actually operates internally on 10ms (80 + sample) frames, so we run the encoding algorithm 4 times: + + frame 0: voicing bit + frame 1: voicing bit, Wo and E + frame 2: voicing bit + frame 3: voicing bit, Wo and E, scalar LSPs + + The bit allocation is: + + Parameter frame 2 frame 4 Total + ------------------------------------------------------- + Harmonic magnitudes (LSPs) 0 36 36 + Pitch (Wo) 7 7 14 + Energy 5 5 10 + Voicing (10ms update) 2 2 4 + TOTAL 14 50 64 + +\*---------------------------------------------------------------------------*/ + +void codec2_encode_1600(struct CODEC2 *c2, unsigned char * bits, short speech[]) +{ + MODEL model; + float lsps[LPC_ORD]; + float ak[LPC_ORD+1]; + float e; + int lsp_indexes[LPC_ORD]; + int Wo_index, e_index; + int i; + unsigned int nbit = 0; + + assert(c2 != NULL); + + memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); + + /* frame 1: - voicing ---------------------------------------------*/ + + analyse_one_frame(c2, &model, speech); + pack(bits, &nbit, model.voiced, 1); + + /* frame 2: - voicing, scalar Wo & E -------------------------------*/ + + analyse_one_frame(c2, &model, &speech[c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + + Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS); + pack(bits, &nbit, Wo_index, WO_BITS); + + /* need to run this just to get LPC energy */ + e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); + e_index = encode_energy(e, E_BITS); + pack(bits, &nbit, e_index, E_BITS); + + /* frame 3: - voicing ---------------------------------------------*/ + + analyse_one_frame(c2, &model, &speech[2*c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + + /* frame 4: - voicing, scalar Wo & E, scalar LSPs ------------------*/ + + analyse_one_frame(c2, &model, &speech[3*c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + + Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS); + pack(bits, &nbit, Wo_index, WO_BITS); + + e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); + e_index = encode_energy(e, E_BITS); + pack(bits, &nbit, e_index, E_BITS); + + encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD); + for(i=0; ic2const, Wo_index, WO_BITS); + model[1].L = PI/model[1].Wo; + + e_index = unpack(bits, &nbit, E_BITS); + e[1] = decode_energy(e_index, E_BITS); + + model[2].voiced = unpack(bits, &nbit, 1); + + model[3].voiced = unpack(bits, &nbit, 1); + Wo_index = unpack(bits, &nbit, WO_BITS); + model[3].Wo = decode_Wo(&c2->c2const, Wo_index, WO_BITS); + model[3].L = PI/model[3].Wo; + + e_index = unpack(bits, &nbit, E_BITS); + e[3] = decode_energy(e_index, E_BITS); + + for(i=0; iprev_model_dec, &model[1], c2->c2const.Wo_min); + e[0] = interp_energy(c2->prev_e_dec, e[1]); + interp_Wo(&model[2], &model[1], &model[3], c2->c2const.Wo_min); + e[2] = interp_energy(e[1], e[3]); + + /* LSPs are sampled every 40ms so we interpolate the 3 frames in + between, then recover spectral amplitudes */ + + for(i=0, weight=0.25; i<3; i++, weight += 0.25) { + interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD); + } + for(i=0; i<4; i++) { + lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); + aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, + c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); + apply_lpc_correction(&model[i]); + synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0); + } + + /* update memories for next frame ----------------------------*/ + + c2->prev_model_dec = model[3]; + c2->prev_e_dec = e[3]; + for(i=0; iprev_lsps_dec[i] = lsps[3][i]; + +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_encode_1400 + AUTHOR......: David Rowe + DATE CREATED: May 11 2012 + + Encodes 320 speech samples (40ms of speech) into 56 bits. + + The codec2 algorithm actually operates internally on 10ms (80 + sample) frames, so we run the encoding algorithm 4 times: + + frame 0: voicing bit + frame 1: voicing bit, joint VQ of Wo and E + frame 2: voicing bit + frame 3: voicing bit, joint VQ of Wo and E, scalar LSPs + + The bit allocation is: + + Parameter frame 2 frame 4 Total + ------------------------------------------------------- + Harmonic magnitudes (LSPs) 0 36 36 + Energy+Wo 8 8 16 + Voicing (10ms update) 2 2 4 + TOTAL 10 46 56 + +\*---------------------------------------------------------------------------*/ + +void codec2_encode_1400(struct CODEC2 *c2, unsigned char * bits, short speech[]) +{ + MODEL model; + float lsps[LPC_ORD]; + float ak[LPC_ORD+1]; + float e; + int lsp_indexes[LPC_ORD]; + int WoE_index; + int i; + unsigned int nbit = 0; + + assert(c2 != NULL); + + memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); + + /* frame 1: - voicing ---------------------------------------------*/ + + analyse_one_frame(c2, &model, speech); + pack(bits, &nbit, model.voiced, 1); + + /* frame 2: - voicing, joint Wo & E -------------------------------*/ + + analyse_one_frame(c2, &model, &speech[c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + + /* need to run this just to get LPC energy */ + e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); + + WoE_index = encode_WoE(&model, e, c2->xq_enc); + pack(bits, &nbit, WoE_index, WO_E_BITS); + + /* frame 3: - voicing ---------------------------------------------*/ + + analyse_one_frame(c2, &model, &speech[2*c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + + /* frame 4: - voicing, joint Wo & E, scalar LSPs ------------------*/ + + analyse_one_frame(c2, &model, &speech[3*c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + + e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); + WoE_index = encode_WoE(&model, e, c2->xq_enc); + pack(bits, &nbit, WoE_index, WO_E_BITS); + + encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD); + for(i=0; ic2const, &model[1], &e[1], c2->xq_dec, WoE_index); + + model[2].voiced = unpack(bits, &nbit, 1); + + model[3].voiced = unpack(bits, &nbit, 1); + WoE_index = unpack(bits, &nbit, WO_E_BITS); + decode_WoE(&c2->c2const, &model[3], &e[3], c2->xq_dec, WoE_index); + + for(i=0; iprev_model_dec, &model[1], c2->c2const.Wo_min); + e[0] = interp_energy(c2->prev_e_dec, e[1]); + interp_Wo(&model[2], &model[1], &model[3], c2->c2const.Wo_min); + e[2] = interp_energy(e[1], e[3]); + + /* LSPs are sampled every 40ms so we interpolate the 3 frames in + between, then recover spectral amplitudes */ + + for(i=0, weight=0.25; i<3; i++, weight += 0.25) { + interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD); + } + for(i=0; i<4; i++) { + lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); + aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, + c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); + apply_lpc_correction(&model[i]); + synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0); + } + + /* update memories for next frame ----------------------------*/ + + c2->prev_model_dec = model[3]; + c2->prev_e_dec = e[3]; + for(i=0; iprev_lsps_dec[i] = lsps[3][i]; + +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_encode_1300 + AUTHOR......: David Rowe + DATE CREATED: March 14 2013 + + Encodes 320 speech samples (40ms of speech) into 52 bits. + + The codec2 algorithm actually operates internally on 10ms (80 + sample) frames, so we run the encoding algorithm 4 times: + + frame 0: voicing bit + frame 1: voicing bit, + frame 2: voicing bit + frame 3: voicing bit, Wo and E, scalar LSPs + + The bit allocation is: + + Parameter frame 2 frame 4 Total + ------------------------------------------------------- + Harmonic magnitudes (LSPs) 0 36 36 + Pitch (Wo) 0 7 7 + Energy 0 5 5 + Voicing (10ms update) 2 2 4 + TOTAL 2 50 52 + +\*---------------------------------------------------------------------------*/ + +void codec2_encode_1300(struct CODEC2 *c2, unsigned char * bits, short speech[]) +{ + MODEL model; + float lsps[LPC_ORD]; + float ak[LPC_ORD+1]; + float e; + int lsp_indexes[LPC_ORD]; + int Wo_index, e_index; + int i; + unsigned int nbit = 0; + //#ifdef PROFILE + //unsigned int quant_start; + //#endif + + assert(c2 != NULL); + + memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); + + /* frame 1: - voicing ---------------------------------------------*/ + + analyse_one_frame(c2, &model, speech); + pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray); + + /* frame 2: - voicing ---------------------------------------------*/ + + analyse_one_frame(c2, &model, &speech[c2->n_samp]); + pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray); + + /* frame 3: - voicing ---------------------------------------------*/ + + analyse_one_frame(c2, &model, &speech[2*c2->n_samp]); + pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray); + + /* frame 4: - voicing, scalar Wo & E, scalar LSPs ------------------*/ + + analyse_one_frame(c2, &model, &speech[3*c2->n_samp]); + pack_natural_or_gray(bits, &nbit, model.voiced, 1, c2->gray); + + Wo_index = encode_Wo(&c2->c2const, model.Wo, WO_BITS); + pack_natural_or_gray(bits, &nbit, Wo_index, WO_BITS, c2->gray); + + //#ifdef PROFILE + //quant_start = machdep_profile_sample(); + //#endif + e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); + e_index = encode_energy(e, E_BITS); + pack_natural_or_gray(bits, &nbit, e_index, E_BITS, c2->gray); + + encode_lsps_scalar(lsp_indexes, lsps, LPC_ORD); + for(i=0; igray); + } + //#ifdef PROFILE + //machdep_profile_sample_and_log(quant_start, " quant/packing"); + //#endif + + assert(nbit == (unsigned)codec2_bits_per_frame(c2)); +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_decode_1300 + AUTHOR......: David Rowe + DATE CREATED: 11 May 2012 + + Decodes frames of 52 bits into 320 samples (40ms) of speech. + +\*---------------------------------------------------------------------------*/ +static int frames; +void codec2_decode_1300(struct CODEC2 *c2, short speech[], const unsigned char * bits, float ber_est) +{ + MODEL model[4]; + int lsp_indexes[LPC_ORD]; + float lsps[4][LPC_ORD]; + int Wo_index, e_index; + float e[4]; + float snr; + float ak[4][LPC_ORD+1]; + int i,j; + unsigned int nbit = 0; + float weight; + COMP Aw[FFT_ENC]; + //PROFILE_VAR(recover_start); + + assert(c2 != NULL); + frames+= 4; + /* only need to zero these out due to (unused) snr calculation */ + + for(i=0; i<4; i++) + for(j=1; j<=MAX_AMP; j++) + model[i].A[j] = 0.0; + + /* unpack bits from channel ------------------------------------*/ + + /* this will partially fill the model params for the 4 x 10ms + frames */ + + model[0].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray); + model[1].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray); + model[2].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray); + model[3].voiced = unpack_natural_or_gray(bits, &nbit, 1, c2->gray); + + Wo_index = unpack_natural_or_gray(bits, &nbit, WO_BITS, c2->gray); + model[3].Wo = decode_Wo(&c2->c2const, Wo_index, WO_BITS); + model[3].L = PI/model[3].Wo; + + e_index = unpack_natural_or_gray(bits, &nbit, E_BITS, c2->gray); + e[3] = decode_energy(e_index, E_BITS); + //fprintf(stderr, "%d %f\n", e_index, e[3]); + + for(i=0; igray); + } + decode_lsps_scalar(&lsps[3][0], lsp_indexes, LPC_ORD); + check_lsp_order(&lsps[3][0], LPC_ORD); + bw_expand_lsps(&lsps[3][0], LPC_ORD, 50.0, 100.0); + + if (ber_est > 0.15) { + model[0].voiced = model[1].voiced = model[2].voiced = model[3].voiced = 0; + e[3] = decode_energy(10, E_BITS); + bw_expand_lsps(&lsps[3][0], LPC_ORD, 200.0, 200.0); + //fprintf(stderr, "soft mute\n"); + } + + /* interpolate ------------------------------------------------*/ + + /* Wo, energy, and LSPs are sampled every 40ms so we interpolate + the 3 frames in between */ + + //PROFILE_SAMPLE(recover_start); + for(i=0, weight=0.25; i<3; i++, weight += 0.25) { + interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD); + interp_Wo2(&model[i], &c2->prev_model_dec, &model[3], weight, c2->c2const.Wo_min); + e[i] = interp_energy2(c2->prev_e_dec, e[3],weight); + } + + /* then recover spectral amplitudes */ + + for(i=0; i<4; i++) { + lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); + aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, + c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); + apply_lpc_correction(&model[i]); + synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0); + + /* dump parameters for deep learning experiments */ + + if (c2->fmlfeat != NULL) { + /* 10 LSPs - energy - Wo - voicing flag - 10 LPCs */ + fwrite(&lsps[i][0], LPC_ORD, sizeof(float), c2->fmlfeat); + fwrite(&e[i], 1, sizeof(float), c2->fmlfeat); + fwrite(&model[i].Wo, 1, sizeof(float), c2->fmlfeat); + float voiced_float = model[i].voiced; + fwrite(&voiced_float, 1, sizeof(float), c2->fmlfeat); + fwrite(&ak[i][1], LPC_ORD, sizeof(float), c2->fmlfeat); + } + } + /* + for(i=0; i<4; i++) { + printf("%d Wo: %f L: %d v: %d\n", frames, model[i].Wo, model[i].L, model[i].voiced); + } + if (frames == 4*50) + exit(0); + */ + //PROFILE_SAMPLE_AND_LOG2(recover_start, " recover"); + #ifdef DUMP + dump_lsp_(&lsps[3][0]); + dump_ak_(&ak[3][0], LPC_ORD); + #endif + + /* update memories for next frame ----------------------------*/ + + c2->prev_model_dec = model[3]; + c2->prev_e_dec = e[3]; + for(i=0; iprev_lsps_dec[i] = lsps[3][i]; + +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_encode_1200 + AUTHOR......: David Rowe + DATE CREATED: Nov 14 2011 + + Encodes 320 speech samples (40ms of speech) into 48 bits. + + The codec2 algorithm actually operates internally on 10ms (80 + sample) frames, so we run the encoding algorithm four times: + + frame 0: voicing bit + frame 1: voicing bit, joint VQ of Wo and E + frame 2: voicing bit + frame 3: voicing bit, joint VQ of Wo and E, VQ LSPs + + The bit allocation is: + + Parameter frame 2 frame 4 Total + ------------------------------------------------------- + Harmonic magnitudes (LSPs) 0 27 27 + Energy+Wo 8 8 16 + Voicing (10ms update) 2 2 4 + Spare 0 1 1 + TOTAL 10 38 48 + +\*---------------------------------------------------------------------------*/ + +void codec2_encode_1200(struct CODEC2 *c2, unsigned char * bits, short speech[]) +{ + MODEL model; + float lsps[LPC_ORD]; + float lsps_[LPC_ORD]; + float ak[LPC_ORD+1]; + float e; + int lsp_indexes[LPC_ORD]; + int WoE_index; + int i; + int spare = 0; + unsigned int nbit = 0; + + assert(c2 != NULL); + + memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); + + /* frame 1: - voicing ---------------------------------------------*/ + + analyse_one_frame(c2, &model, speech); + pack(bits, &nbit, model.voiced, 1); + + /* frame 2: - voicing, joint Wo & E -------------------------------*/ + + analyse_one_frame(c2, &model, &speech[c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + + /* need to run this just to get LPC energy */ + e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); + + WoE_index = encode_WoE(&model, e, c2->xq_enc); + pack(bits, &nbit, WoE_index, WO_E_BITS); + + /* frame 3: - voicing ---------------------------------------------*/ + + analyse_one_frame(c2, &model, &speech[2*c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + + /* frame 4: - voicing, joint Wo & E, scalar LSPs ------------------*/ + + analyse_one_frame(c2, &model, &speech[3*c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + + e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD); + WoE_index = encode_WoE(&model, e, c2->xq_enc); + pack(bits, &nbit, WoE_index, WO_E_BITS); + + encode_lsps_vq(lsp_indexes, lsps, lsps_, LPC_ORD); + for(i=0; ic2const, &model[1], &e[1], c2->xq_dec, WoE_index); + + model[2].voiced = unpack(bits, &nbit, 1); + + model[3].voiced = unpack(bits, &nbit, 1); + WoE_index = unpack(bits, &nbit, WO_E_BITS); + decode_WoE(&c2->c2const, &model[3], &e[3], c2->xq_dec, WoE_index); + + for(i=0; iprev_model_dec, &model[1], c2->c2const.Wo_min); + e[0] = interp_energy(c2->prev_e_dec, e[1]); + interp_Wo(&model[2], &model[1], &model[3], c2->c2const.Wo_min); + e[2] = interp_energy(e[1], e[3]); + + /* LSPs are sampled every 40ms so we interpolate the 3 frames in + between, then recover spectral amplitudes */ + + for(i=0, weight=0.25; i<3; i++, weight += 0.25) { + interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD); + } + for(i=0; i<4; i++) { + lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD); + aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD, &model[i], e[i], &snr, 0, 0, + c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); + apply_lpc_correction(&model[i]); + synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0); + } + + /* update memories for next frame ----------------------------*/ + + c2->prev_model_dec = model[3]; + c2->prev_e_dec = e[3]; + for(i=0; iprev_lsps_dec[i] = lsps[3][i]; +} + + +#ifndef CORTEX_M4 +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_encode_700 + AUTHOR......: David Rowe + DATE CREATED: April 2015 + + Encodes 320 speech samples (40ms of speech) into 28 bits. + + The codec2 algorithm actually operates internally on 10ms (80 + sample) frames, so we run the encoding algorithm four times: + + frame 0: nothing + frame 1: nothing + frame 2: nothing + frame 3: voicing bit, scalar Wo and E, 17 bit LSP MEL scalar, 2 spare + + The bit allocation is: + + Parameter frames 1-3 frame 4 Total + ----------------------------------------------------------- + Harmonic magnitudes (LSPs) 0 17 17 + Energy 0 3 3 + log Wo 0 5 5 + Voicing 0 1 1 + spare 0 2 2 + TOTAL 0 28 28 + +\*---------------------------------------------------------------------------*/ + +void codec2_encode_700(struct CODEC2 *c2, unsigned char * bits, short speech[]) +{ + MODEL model; + float lsps[LPC_ORD_LOW]; + float mel[LPC_ORD_LOW]; + float ak[LPC_ORD_LOW+1]; + float e, f; + int indexes[LPC_ORD_LOW]; + int Wo_index, e_index, i; + unsigned int nbit = 0; + float bpf_out[4*c2->n_samp]; + short bpf_speech[4*c2->n_samp]; + int spare = 0; + + assert(c2 != NULL); + + memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); + + /* band pass filter */ + + for(i=0; ibpf_buf[i] = c2->bpf_buf[4*c2->n_samp+i]; + for(i=0; i<4*c2->n_samp; i++) + c2->bpf_buf[BPF_N+i] = speech[i]; + inverse_filter(&c2->bpf_buf[BPF_N], bpf, 4*c2->n_samp, bpf_out, BPF_N-1); + for(i=0; i<4*c2->n_samp; i++) + bpf_speech[i] = bpf_out[i]; + + /* frame 1 --------------------------------------------------------*/ + + analyse_one_frame(c2, &model, bpf_speech); + + /* frame 2 --------------------------------------------------------*/ + + analyse_one_frame(c2, &model, &bpf_speech[c2->n_samp]); + + /* frame 3 --------------------------------------------------------*/ + + analyse_one_frame(c2, &model, &bpf_speech[2*c2->n_samp]); + + /* frame 4: - voicing, scalar Wo & E, scalar LSPs -----------------*/ + + analyse_one_frame(c2, &model, &bpf_speech[3*c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + Wo_index = encode_log_Wo(&c2->c2const, model.Wo, 5); + pack_natural_or_gray(bits, &nbit, Wo_index, 5, c2->gray); + + e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD_LOW); + e_index = encode_energy(e, 3); + pack_natural_or_gray(bits, &nbit, e_index, 3, c2->gray); + + for(i=0; igray); + } + + pack_natural_or_gray(bits, &nbit, spare, 2, c2->gray); + + assert(nbit == (unsigned)codec2_bits_per_frame(c2)); +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_decode_700 + AUTHOR......: David Rowe + DATE CREATED: April 2015 + + Decodes frames of 28 bits into 320 samples (40ms) of speech. + +\*---------------------------------------------------------------------------*/ + +void codec2_decode_700(struct CODEC2 *c2, short speech[], const unsigned char * bits) +{ + MODEL model[4]; + int indexes[LPC_ORD_LOW]; + float mel[LPC_ORD_LOW]; + float lsps[4][LPC_ORD_LOW]; + int Wo_index, e_index; + float e[4]; + float snr, f_; + float ak[4][LPC_ORD_LOW+1]; + int i,j; + unsigned int nbit = 0; + float weight; + COMP Aw[FFT_ENC]; + + assert(c2 != NULL); + + /* only need to zero these out due to (unused) snr calculation */ + + for(i=0; i<4; i++) + for(j=1; j<=MAX_AMP; j++) + model[i].A[j] = 0.0; + + /* unpack bits from channel ------------------------------------*/ + + model[3].voiced = unpack(bits, &nbit, 1); + model[0].voiced = model[1].voiced = model[2].voiced = model[3].voiced; + + Wo_index = unpack_natural_or_gray(bits, &nbit, 5, c2->gray); + model[3].Wo = decode_log_Wo(&c2->c2const, Wo_index, 5); + model[3].L = PI/model[3].Wo; + + e_index = unpack_natural_or_gray(bits, &nbit, 3, c2->gray); + e[3] = decode_energy(e_index, 3); + + for(i=0; igray); + } + + decode_mels_scalar(mel, indexes, LPC_ORD_LOW); + for(i=0; isoftdec) { + float e = 0.0; + for(i=9; i<9+17; i++) + e += c2->softdec[i]*c2->softdec[i]; + e /= 6.0; + //fprintf(stderr, "e: %f\n", e); + //if (e < 0.3) + // bw_expand_lsps(&lsps[3][0], LPC_ORD_LOW, 150.0, 300.0); + } + #endif + + /* interpolate ------------------------------------------------*/ + + /* LSPs, Wo, and energy are sampled every 40ms so we interpolate + the 3 frames in between, then recover spectral amplitudes */ + + for(i=0, weight=0.25; i<3; i++, weight += 0.25) { + interpolate_lsp_ver2(&lsps[i][0], c2->prev_lsps_dec, &lsps[3][0], weight, LPC_ORD_LOW); + interp_Wo2(&model[i], &c2->prev_model_dec, &model[3], weight, c2->c2const.Wo_min); + e[i] = interp_energy2(c2->prev_e_dec, e[3],weight); + } + for(i=0; i<4; i++) { + lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD_LOW); + aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD_LOW, &model[i], e[i], &snr, 0, 0, + c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); + apply_lpc_correction(&model[i]); + synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0); + } + + #ifdef DUMP + dump_lsp_(&lsps[3][0]); + dump_ak_(&ak[3][0], LPC_ORD_LOW); + dump_model(&model[3]); + if (c2->softdec) + dump_softdec(c2->softdec, nbit); + #endif + + /* update memories for next frame ----------------------------*/ + + c2->prev_model_dec = model[3]; + c2->prev_e_dec = e[3]; + for(i=0; iprev_lsps_dec[i] = lsps[3][i]; +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_encode_700b + AUTHOR......: David Rowe + DATE CREATED: August 2015 + + Version b of 700 bit/s codec. After some experiments over the air I + wanted was unhappy with the rate 700 codec so spent a few weeks + trying to improve the speech quality. This version uses a wider BPF + and vector quantised mel-lsps. + + Encodes 320 speech samples (40ms of speech) into 28 bits. + + The codec2 algorithm actually operates internally on 10ms (80 + sample) frames, so we run the encoding algorithm four times: + + frame 0: nothing + frame 1: nothing + frame 2: nothing + frame 3: voicing bit, 5 bit scalar Wo and 3 bit E, 18 bit LSP MEL VQ, + 1 spare + + The bit allocation is: + + Parameter frames 1-3 frame 4 Total + ----------------------------------------------------------- + Harmonic magnitudes (LSPs) 0 18 18 + Energy 0 3 3 + log Wo 0 5 5 + Voicing 0 1 1 + spare 0 1 1 + TOTAL 0 28 28 + +\*---------------------------------------------------------------------------*/ + +void codec2_encode_700b(struct CODEC2 *c2, unsigned char * bits, short speech[]) +{ + MODEL model; + float lsps[LPC_ORD_LOW]; + float mel[LPC_ORD_LOW]; + float mel_[LPC_ORD_LOW]; + float ak[LPC_ORD_LOW+1]; + float e, f; + int indexes[3]; + int Wo_index, e_index, i; + unsigned int nbit = 0; + float bpf_out[4*c2->n_samp]; + short bpf_speech[4*c2->n_samp]; + int spare = 0; + + assert(c2 != NULL); + + memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); + + /* band pass filter */ + + for(i=0; ibpf_buf[i] = c2->bpf_buf[4*c2->n_samp+i]; + for(i=0; i<4*c2->n_samp; i++) + c2->bpf_buf[BPF_N+i] = speech[i]; + inverse_filter(&c2->bpf_buf[BPF_N], bpfb, 4*c2->n_samp, bpf_out, BPF_N-1); + for(i=0; i<4*c2->n_samp; i++) + bpf_speech[i] = bpf_out[i]; + + /* frame 1 --------------------------------------------------------*/ + + analyse_one_frame(c2, &model, bpf_speech); + + /* frame 2 --------------------------------------------------------*/ + + analyse_one_frame(c2, &model, &bpf_speech[c2->n_samp]); + + /* frame 3 --------------------------------------------------------*/ + + analyse_one_frame(c2, &model, &bpf_speech[2*c2->n_samp]); + + /* frame 4: - voicing, scalar Wo & E, VQ mel LSPs -----------------*/ + + analyse_one_frame(c2, &model, &bpf_speech[3*c2->n_samp]); + pack(bits, &nbit, model.voiced, 1); + Wo_index = encode_log_Wo(&c2->c2const, model.Wo, 5); + pack_natural_or_gray(bits, &nbit, Wo_index, 5, c2->gray); + + e = speech_to_uq_lsps(lsps, ak, c2->Sn, c2->w, c2->m_pitch, LPC_ORD_LOW); + e_index = encode_energy(e, 3); + pack_natural_or_gray(bits, &nbit, e_index, 3, c2->gray); + + for(i=0; igray); + } + + pack_natural_or_gray(bits, &nbit, spare, 1, c2->gray); + + assert(nbit == (unsigned)codec2_bits_per_frame(c2)); +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_decode_700b + AUTHOR......: David Rowe + DATE CREATED: August 2015 + + Decodes frames of 28 bits into 320 samples (40ms) of speech. + +\*---------------------------------------------------------------------------*/ + +void codec2_decode_700b(struct CODEC2 *c2, short speech[], const unsigned char * bits) +{ + MODEL model[4]; + int indexes[3]; + float mel[LPC_ORD_LOW]; + float lsps[4][LPC_ORD_LOW]; + int Wo_index, e_index; + float e[4]; + float snr, f_; + float ak[4][LPC_ORD_LOW+1]; + int i,j; + unsigned int nbit = 0; + float weight; + COMP Aw[FFT_ENC]; + + assert(c2 != NULL); + + /* only need to zero these out due to (unused) snr calculation */ + + for(i=0; i<4; i++) + for(j=1; j<=MAX_AMP; j++) + model[i].A[j] = 0.0; + + /* unpack bits from channel ------------------------------------*/ + + model[3].voiced = unpack(bits, &nbit, 1); + model[0].voiced = model[1].voiced = model[2].voiced = model[3].voiced; + + Wo_index = unpack_natural_or_gray(bits, &nbit, 5, c2->gray); + model[3].Wo = decode_log_Wo(&c2->c2const, Wo_index, 5); + model[3].L = PI/model[3].Wo; + + e_index = unpack_natural_or_gray(bits, &nbit, 3, c2->gray); + e[3] = decode_energy(e_index, 3); + + for(i=0; i<3; i++) { + indexes[i] = unpack_natural_or_gray(bits, &nbit, lspmelvq_cb_bits(i), c2->gray); + } + + lspmelvq_decode(indexes, mel, LPC_ORD_LOW); + + #define MEL_ROUND 10 + for(i=1; iprev_lsps_dec, &lsps[3][0], weight, LPC_ORD_LOW); + interp_Wo2(&model[i], &c2->prev_model_dec, &model[3], weight, c2->c2const.Wo_min); + e[i] = interp_energy2(c2->prev_e_dec, e[3],weight); + } + for(i=0; i<4; i++) { + lsp_to_lpc(&lsps[i][0], &ak[i][0], LPC_ORD_LOW); + aks_to_M2(c2->fftr_fwd_cfg, &ak[i][0], LPC_ORD_LOW, &model[i], e[i], &snr, 0, 0, + c2->lpc_pf, c2->bass_boost, c2->beta, c2->gamma, Aw); + apply_lpc_correction(&model[i]); + synthesise_one_frame(c2, &speech[c2->n_samp*i], &model[i], Aw, 1.0); + } + + #ifdef DUMP + dump_lsp_(&lsps[3][0]); + dump_ak_(&ak[3][0], LPC_ORD_LOW); + dump_model(&model[3]); + if (c2->softdec) + dump_softdec(c2->softdec, nbit); + #endif + + /* update memories for next frame ----------------------------*/ + + c2->prev_model_dec = model[3]; + c2->prev_e_dec = e[3]; + for(i=0; iprev_lsps_dec[i] = lsps[3][i]; +} +#endif + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_encode_700c + AUTHOR......: David Rowe + DATE CREATED: Jan 2017 + + Version c of 700 bit/s codec that uses newamp1 fixed rate VQ of amplitudes. + + Encodes 320 speech samples (40ms of speech) into 28 bits. + + The codec2 algorithm actually operates internally on 10ms (80 + sample) frames, so we run the encoding algorithm four times: + + frame 0: nothing + frame 1: nothing + frame 2: nothing + frame 3: 18 bit 2 stage VQ (9 bits/stage), 4 bits energy, + 6 bit scalar Wo/voicing. No spare bits. + + Voicing is encoded using the 0 index of the Wo quantiser. + + The bit allocation is: + + Parameter frames 1-3 frame 4 Total + ----------------------------------------------------------- + Harmonic magnitudes (rate k VQ) 0 18 18 + Energy 0 4 4 + log Wo/voicing 0 6 6 + TOTAL 0 28 28 + +\*---------------------------------------------------------------------------*/ + +void codec2_encode_700c(struct CODEC2 *c2, unsigned char * bits, short speech[]) +{ + MODEL model; + int indexes[4], i, M=4; + unsigned int nbit = 0; + + assert(c2 != NULL); + + memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); + + for(i=0; in_samp]); + } + + int K = 20; + float rate_K_vec[K], mean; + float rate_K_vec_no_mean[K], rate_K_vec_no_mean_[K]; + + newamp1_model_to_indexes(&c2->c2const, + indexes, + &model, + rate_K_vec, + c2->rate_K_sample_freqs_kHz, + K, + &mean, + rate_K_vec_no_mean, + rate_K_vec_no_mean_, &c2->se); + c2->nse += K; + +#ifndef CORTEX_M4 + /* dump features for deep learning experiments */ + if (c2->fmlfeat != NULL) { + fwrite(&mean, 1, sizeof(float), c2->fmlfeat); + fwrite(rate_K_vec_no_mean, K, sizeof(float), c2->fmlfeat); + fwrite(rate_K_vec_no_mean_, K, sizeof(float), c2->fmlfeat); + } +#endif + + pack_natural_or_gray(bits, &nbit, indexes[0], 9, 0); + pack_natural_or_gray(bits, &nbit, indexes[1], 9, 0); + pack_natural_or_gray(bits, &nbit, indexes[2], 4, 0); + pack_natural_or_gray(bits, &nbit, indexes[3], 6, 0); + + assert(nbit == (unsigned)codec2_bits_per_frame(c2)); +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_decode_700c + AUTHOR......: David Rowe + DATE CREATED: August 2015 + + Decodes frames of 28 bits into 320 samples (40ms) of speech. + +\*---------------------------------------------------------------------------*/ + +void codec2_decode_700c(struct CODEC2 *c2, short speech[], const unsigned char * bits) +{ + MODEL model[4]; + int indexes[4]; + int i; + unsigned int nbit = 0; + + assert(c2 != NULL); + + /* unpack bits from channel ------------------------------------*/ + + indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0); + indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0); + indexes[2] = unpack_natural_or_gray(bits, &nbit, 4, 0); + indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0); + + int M = 4; + COMP HH[M][MAX_AMP+1]; + float interpolated_surface_[M][NEWAMP1_K]; + + newamp1_indexes_to_model(&c2->c2const, + model, + (COMP*)HH, + (float*)interpolated_surface_, + c2->prev_rate_K_vec_, + &c2->Wo_left, + &c2->voicing_left, + c2->rate_K_sample_freqs_kHz, + NEWAMP1_K, + c2->phase_fft_fwd_cfg, + c2->phase_fft_inv_cfg, + indexes, + c2->user_rate_K_vec_no_mean_, + c2->post_filter_en); + + + for(i=0; in_samp*i], &model[i], &HH[i][0], 1.5); + } +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_energy_700c + AUTHOR......: Jeroen Vreeken + DATE CREATED: Jan 2017 + + Decodes energy value from encoded bits. + +\*---------------------------------------------------------------------------*/ + +float codec2_energy_700c(struct CODEC2 *c2, const unsigned char * bits) +{ + int indexes[4]; + unsigned int nbit = 0; + + assert(c2 != NULL); + + /* unpack bits from channel ------------------------------------*/ + + indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0); + indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0); + indexes[2] = unpack_natural_or_gray(bits, &nbit, 4, 0); + indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0); + + float mean = newamp1_energy_cb[0].cb[indexes[2]]; + mean -= 10; + if (indexes[3] == 0) + mean -= 10; + + return POW10F(mean/10.0); +} + +#ifndef CORTEX_M4 +float codec2_energy_450(struct CODEC2 *c2, const unsigned char * bits) +{ + int indexes[4]; + unsigned int nbit = 0; + + assert(c2 != NULL); + + /* unpack bits from channel ------------------------------------*/ + + indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0); + //indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0); + indexes[2] = unpack_natural_or_gray(bits, &nbit, 3, 0); + indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0); + + float mean = newamp2_energy_cb[0].cb[indexes[2]]; + mean -= 10; + if (indexes[3] == 0) + mean -= 10; + + return POW10F(mean/10.0); +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_get_energy() + AUTHOR......: Jeroen Vreeken + DATE CREATED: 08/03/2016 + + Extract energy value from an encoded frame. + +\*---------------------------------------------------------------------------*/ + +float codec2_get_energy(struct CODEC2 *c2, const unsigned char *bits) +{ + assert(c2 != NULL); + assert( + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) || + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) || + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) || + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) || + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) || + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) || + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700, c2->mode)) || + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, c2->mode)) || + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) || + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode)) || + ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode)) + ); + MODEL model; + float xq_dec[2] = {}; + int e_index, WoE_index; + float e; + unsigned int nbit; + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_3200, c2->mode)) { + nbit = 1 + 1 + WO_BITS; + e_index = unpack(bits, &nbit, E_BITS); + e = decode_energy(e_index, E_BITS); + } + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_2400, c2->mode)) { + nbit = 1 + 1; + WoE_index = unpack(bits, &nbit, WO_E_BITS); + decode_WoE(&c2->c2const, &model, &e, xq_dec, WoE_index); + } + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1600, c2->mode)) { + nbit = 1 + 1 + WO_BITS; + e_index = unpack(bits, &nbit, E_BITS); + e = decode_energy(e_index, E_BITS); + } + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1400, c2->mode)) { + nbit = 1 + 1; + WoE_index = unpack(bits, &nbit, WO_E_BITS); + decode_WoE(&c2->c2const, &model, &e, xq_dec, WoE_index); + } + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1300, c2->mode)) { + nbit = 1 + 1 + 1 + 1 + WO_BITS; + e_index = unpack_natural_or_gray(bits, &nbit, E_BITS, c2->gray); + e = decode_energy(e_index, E_BITS); + } + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_1200, c2->mode)) { + nbit = 1 + 1; + WoE_index = unpack(bits, &nbit, WO_E_BITS); + decode_WoE(&c2->c2const, &model, &e, xq_dec, WoE_index); + } + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700, c2->mode)) { + nbit = 1 + 5; + e_index = unpack_natural_or_gray(bits, &nbit, 3, c2->gray); + e = decode_energy(e_index, 3); + } + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700B, c2->mode)) { + nbit = 1 + 5; + e_index = unpack_natural_or_gray(bits, &nbit, 3, c2->gray); + e = decode_energy(e_index, 3); + } + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode)) { + e = codec2_energy_700c(c2, bits); + } + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode)) { + e = codec2_energy_450(c2, bits); + } + + return e; +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_encode_450 + AUTHOR......: Thomas Kurin and Stefan Erhardt + INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg + DATE CREATED: July 2018 + + 450 bit/s codec that uses newamp2 fixed rate VQ of amplitudes. + + Encodes 320 speech samples (40ms of speech) into 28 bits. + + The codec2 algorithm actually operates internally on 10ms (80 + sample) frames, so we run the encoding algorithm four times: + + frame 0: nothing + frame 1: nothing + frame 2: nothing + frame 3: 9 bit 1 stage VQ, 3 bits energy, + 6 bit scalar Wo/voicing/plosive. No spare bits. + + If a plosive is detected the frame at the energy-step is encoded. + + Voicing is encoded using the 000000 index of the Wo quantiser. + Plosive is encoded using the 111111 index of the Wo quantiser. + + The bit allocation is: + + Parameter frames 1-3 frame 4 Total + ----------------------------------------------------------- + Harmonic magnitudes (rate k VQ) 0 9 9 + Energy 0 3 3 + log Wo/voicing/plosive 0 6 6 + TOTAL 0 18 18 + + +\*---------------------------------------------------------------------------*/ + +void codec2_encode_450(struct CODEC2 *c2, unsigned char * bits, short speech[]) +{ + MODEL model; + int indexes[4], i,h, M=4; + unsigned int nbit = 0; + int plosiv = 0; + float energydelta[M]; + int spectralCounter; + + assert(c2 != NULL); + + memset(bits, '\0', ((codec2_bits_per_frame(c2) + 7) / 8)); + for(i=0; in_samp]); + energydelta[i] = 0; + spectralCounter = 0; + for(h = 0;h<(model.L);h++){ + //only detect above 300 Hz + if(h*model.Wo*(c2->c2const.Fs/2000.0)/M_PI > 0.3){ + energydelta[i] = energydelta[i] + 20.0*log10(model.A[10]+1E-16); + spectralCounter = spectralCounter+1; + } + + } + energydelta[i] = energydelta[i] / spectralCounter ; + } + //Constants for plosive Detection tdB = threshold; minPwr = from below this level plosives have to rise + float tdB = 15; //not fixed can be changed + float minPwr = 15; //not fixed can be changed + if((c2->energy_prev)((c2->energy_prev)+tdB)){ + + plosiv = 1; + } + if(energydelta[0](energydelta[0]+tdB)){ + + plosiv = 2; + } + if(energydelta[1](energydelta[1]+tdB)){ + + plosiv = 3; + } + if(energydelta[2](energydelta[2]+tdB)){ + + plosiv = 4; + } + if(plosiv != 0 && plosiv != 4){ + analyse_one_frame(c2, &model, &speech[(plosiv-1)*c2->n_samp]); + } + + c2->energy_prev = energydelta[3]; + + + int K = 29; + float rate_K_vec[K], mean; + float rate_K_vec_no_mean[K], rate_K_vec_no_mean_[K]; + if(plosiv > 0){ + plosiv = 1; + } + newamp2_model_to_indexes(&c2->c2const, + indexes, + &model, + rate_K_vec, + c2->n2_rate_K_sample_freqs_kHz, + K, + &mean, + rate_K_vec_no_mean, + rate_K_vec_no_mean_, + plosiv); + + + pack_natural_or_gray(bits, &nbit, indexes[0], 9, 0); + //pack_natural_or_gray(bits, &nbit, indexes[1], 9, 0); + pack_natural_or_gray(bits, &nbit, indexes[2], 3, 0); + pack_natural_or_gray(bits, &nbit, indexes[3], 6, 0); + + assert(nbit == (unsigned)codec2_bits_per_frame(c2)); +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_decode_450 + AUTHOR......: Thomas Kurin and Stefan Erhardt + INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg + DATE CREATED: July 2018 + +\*---------------------------------------------------------------------------*/ + +void codec2_decode_450(struct CODEC2 *c2, short speech[], const unsigned char * bits) +{ + MODEL model[4]; + int indexes[4]; + int i; + unsigned int nbit = 0; + + assert(c2 != NULL); + + /* unpack bits from channel ------------------------------------*/ + + indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0); + //indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0); + indexes[2] = unpack_natural_or_gray(bits, &nbit, 3, 0); + indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0); + + int M = 4; + COMP HH[M][MAX_AMP+1]; + float interpolated_surface_[M][NEWAMP2_K]; + int pwbFlag = 0; + + newamp2_indexes_to_model(&c2->c2const, + model, + (COMP*)HH, + (float*)interpolated_surface_, + c2->n2_prev_rate_K_vec_, + &c2->Wo_left, + &c2->voicing_left, + c2->n2_rate_K_sample_freqs_kHz, + NEWAMP2_K, + c2->phase_fft_fwd_cfg, + c2->phase_fft_inv_cfg, + indexes, + 1.5, + pwbFlag); + + + for(i=0; in_samp*i], &model[i], &HH[i][0], 1.5); + } +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: codec2_decode_450pwb + AUTHOR......: Thomas Kurin and Stefan Erhardt + INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg + DATE CREATED: July 2018 + + Decodes the 450 codec data in pseudo wideband at 16kHz samplerate. + +\*---------------------------------------------------------------------------*/ + +void codec2_decode_450pwb(struct CODEC2 *c2, short speech[], const unsigned char * bits) +{ + MODEL model[4]; + int indexes[4]; + int i; + unsigned int nbit = 0; + + assert(c2 != NULL); + + /* unpack bits from channel ------------------------------------*/ + + indexes[0] = unpack_natural_or_gray(bits, &nbit, 9, 0); + //indexes[1] = unpack_natural_or_gray(bits, &nbit, 9, 0); + indexes[2] = unpack_natural_or_gray(bits, &nbit, 3, 0); + indexes[3] = unpack_natural_or_gray(bits, &nbit, 6, 0); + + int M = 4; + COMP HH[M][MAX_AMP+1]; + float interpolated_surface_[M][NEWAMP2_16K_K]; + int pwbFlag = 1; + + newamp2_indexes_to_model(&c2->c2const, + model, + (COMP*)HH, + (float*)interpolated_surface_, + c2->n2_pwb_prev_rate_K_vec_, + &c2->Wo_left, + &c2->voicing_left, + c2->n2_pwb_rate_K_sample_freqs_kHz, + NEWAMP2_16K_K, + c2->phase_fft_fwd_cfg, + c2->phase_fft_inv_cfg, + indexes, + 1.5, + pwbFlag); + + + for(i=0; in_samp*i], &model[i], &HH[i][0], 1.5); + } +} + +#endif + +/*---------------------------------------------------------------------------* \ + + FUNCTION....: synthesise_one_frame() + AUTHOR......: David Rowe + DATE CREATED: 23/8/2010 + + Synthesise 80 speech samples (10ms) from model parameters. + +\*---------------------------------------------------------------------------*/ + +void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model, COMP Aw[], float gain) +{ + int i; + //PROFILE_VAR(phase_start, pf_start, synth_start); + + //#ifdef DUMP + //dump_quantised_model(model); + //#endif + + //PROFILE_SAMPLE(phase_start); + + if ( CODEC2_MODE_ACTIVE(CODEC2_MODE_700C, c2->mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_450, c2->mode) || CODEC2_MODE_ACTIVE(CODEC2_MODE_450PWB, c2->mode) ) { + /* newamp1/2, we've already worked out rate L phase */ + COMP *H = Aw; + phase_synth_zero_order(c2->n_samp, model, &c2->ex_phase, H); + } else { + /* LPC based phase synthesis */ + COMP H[MAX_AMP+1]; + sample_phase(model, H, Aw); + phase_synth_zero_order(c2->n_samp, model, &c2->ex_phase, H); + } + + //PROFILE_SAMPLE_AND_LOG(pf_start, phase_start, " phase_synth"); + + postfilter(model, &c2->bg_est); + + //PROFILE_SAMPLE_AND_LOG(synth_start, pf_start, " postfilter"); + + synthesise(c2->n_samp, c2->fftr_inv_cfg, c2->Sn_, model, c2->Pn, 1); + + for(i=0; in_samp; i++) { + c2->Sn_[i] *= gain; + } + + //PROFILE_SAMPLE_AND_LOG2(synth_start, " synth"); + + ear_protection(c2->Sn_, c2->n_samp); + + for(i=0; in_samp; i++) { + if (c2->Sn_[i] > 32767.0) + speech[i] = 32767; + else if (c2->Sn_[i] < -32767.0) + speech[i] = -32767; + else + speech[i] = c2->Sn_[i]; + } + +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: analyse_one_frame() + AUTHOR......: David Rowe + DATE CREATED: 23/8/2010 + + Extract sinusoidal model parameters from 80 speech samples (10ms of + speech). + +\*---------------------------------------------------------------------------*/ + +void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]) +{ + COMP Sw[FFT_ENC]; + float pitch; + int i; + //PROFILE_VAR(dft_start, nlp_start, model_start, two_stage, estamps); + int n_samp = c2->n_samp; + int m_pitch = c2->m_pitch; + + /* Read input speech */ + + for(i=0; iSn[i] = c2->Sn[i+n_samp]; + for(i=0; iSn[i+m_pitch-n_samp] = speech[i]; + + //PROFILE_SAMPLE(dft_start); + dft_speech(&c2->c2const, c2->fft_fwd_cfg, Sw, c2->Sn, c2->w); + //PROFILE_SAMPLE_AND_LOG(nlp_start, dft_start, " dft_speech"); + + /* Estimate pitch */ + + nlp(c2->nlp, c2->Sn, n_samp, &pitch, Sw, c2->W, &c2->prev_f0_enc); + //PROFILE_SAMPLE_AND_LOG(model_start, nlp_start, " nlp"); + + model->Wo = TWO_PI/pitch; + model->L = PI/model->Wo; + + /* estimate model parameters */ + + two_stage_pitch_refinement(&c2->c2const, model, Sw); + //PROFILE_SAMPLE_AND_LOG(two_stage, model_start, " two_stage"); + estimate_amplitudes(model, Sw, c2->W, 0); + //PROFILE_SAMPLE_AND_LOG(estamps, two_stage, " est_amps"); + est_voicing_mbe(&c2->c2const, model, Sw, c2->W); + //PROFILE_SAMPLE_AND_LOG2(estamps, " est_voicing"); + #ifdef DUMP + dump_model(model); + #endif +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: ear_protection() + AUTHOR......: David Rowe + DATE CREATED: Nov 7 2012 + + Limits output level to protect ears when there are bit errors or the input + is overdriven. This doesn't correct or mask bit errors, just reduces the + worst of their damage. + +\*---------------------------------------------------------------------------*/ + +static void ear_protection(float in_out[], int n) { + float max_sample, over, gain; + int i; + + /* find maximum sample in frame */ + + max_sample = 0.0; + for(i=0; i max_sample) + max_sample = in_out[i]; + + /* determine how far above set point */ + + over = max_sample/30000.0; + + /* If we are x dB over set point we reduce level by 2x dB, this + attenuates major excursions in amplitude (likely to be caused + by bit errors) more than smaller ones */ + + if (over > 1.0) { + gain = 1.0/(over*over); + //fprintf(stderr, "gain: %f\n", gain); + for(i=0; i= 0.0) && (beta <= 1.0)); + assert((gamma >= 0.0) && (gamma <= 1.0)); + c2->lpc_pf = enable; + c2->bass_boost = bass_boost; + c2->beta = beta; + c2->gamma = gamma; +} + +/* + Allows optional stealing of one of the voicing bits for use as a + spare bit, only 1300 & 1400 & 1600 bit/s supported for now. + Experimental method of sending voice/data frames for FreeDV. +*/ + +int codec2_get_spare_bit_index(struct CODEC2 *c2) +{ + assert(c2 != NULL); + + switch(c2->mode) { + case CODEC2_MODE_1300: + return 2; // bit 2 (3th bit) is v2 (third voicing bit) + break; + case CODEC2_MODE_1400: + return 10; // bit 10 (11th bit) is v2 (third voicing bit) + break; + case CODEC2_MODE_1600: + return 15; // bit 15 (16th bit) is v2 (third voicing bit) + break; + case CODEC2_MODE_700: + return 26; // bits 26 and 27 are spare + break; + case CODEC2_MODE_700B: + return 27; // bit 27 is spare + break; + } + + return -1; +} + +/* + Reconstructs the spare voicing bit. Note works on unpacked bits + for convenience. +*/ + +int codec2_rebuild_spare_bit(struct CODEC2 *c2, int unpacked_bits[]) +{ + int v1,v3; + + assert(c2 != NULL); + + v1 = unpacked_bits[1]; + + switch(c2->mode) { + case CODEC2_MODE_1300: + + v3 = unpacked_bits[1+1+1]; + + /* if either adjacent frame is voiced, make this one voiced */ + + unpacked_bits[2] = (v1 || v3); + + return 0; + + break; + + case CODEC2_MODE_1400: + + v3 = unpacked_bits[1+1+8+1]; + + /* if either adjacent frame is voiced, make this one voiced */ + + unpacked_bits[10] = (v1 || v3); + + return 0; + + break; + + case CODEC2_MODE_1600: + v3 = unpacked_bits[1+1+8+5+1]; + + /* if either adjacent frame is voiced, make this one voiced */ + + unpacked_bits[15] = (v1 || v3); + + return 0; + + break; + } + + return -1; +} + +void codec2_set_natural_or_gray(struct CODEC2 *c2, int gray) +{ + assert(c2 != NULL); + c2->gray = gray; +} + +void codec2_set_softdec(struct CODEC2 *c2, float *softdec) +{ + assert(c2 != NULL); + c2->softdec = softdec; +} + +void codec2_open_mlfeat(struct CODEC2 *codec2_state, char *filename) { + if ((codec2_state->fmlfeat = fopen(filename, "wb")) == NULL) { + fprintf(stderr, "error opening machine learning feature file: %s\n", filename); + exit(1); + } +} + +#ifndef __EMBEDDED__ +void codec2_load_codebook(struct CODEC2 *codec2_state, int num, char *filename) { + FILE *f; + + if ((f = fopen(filename, "rb")) == NULL) { + fprintf(stderr, "error opening codebook file: %s\n", filename); + exit(1); + } + //fprintf(stderr, "reading newamp1vq_cb[%d] k=%d m=%d\n", num, newamp1vq_cb[num].k, newamp1vq_cb[num].m); + float tmp[newamp1vq_cb[num].k*newamp1vq_cb[num].m]; + int nread = fread(tmp, sizeof(float), newamp1vq_cb[num].k*newamp1vq_cb[num].m, f); + float *p = (float*)newamp1vq_cb[num].cb; + for(int i=0; inse) + return codec2_state->se/codec2_state->nse; + else + return 0; +} + +float *codec2_enable_user_ratek(struct CODEC2 *codec2_state, int *K) { + codec2_state->user_rate_K_vec_no_mean_ = (float*)malloc(sizeof(float)*NEWAMP1_K); + *K = NEWAMP1_K; + return codec2_state->user_rate_K_vec_no_mean_; +} + +void codec2_700c_post_filter(struct CODEC2 *codec2_state, int en) { + codec2_state->post_filter_en = en; +} diff --git a/codec2.h b/codec2.h new file mode 100644 index 0000000..60532ca --- /dev/null +++ b/codec2.h @@ -0,0 +1,127 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: codec2.h + AUTHOR......: David Rowe + DATE CREATED: 21 August 2010 + + Codec 2 fully quantised encoder and decoder functions. If you want use + Codec 2, these are the functions you need to call. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2010 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CODEC2__ +#define __CODEC2__ + +#include + +#define CODEC2_MODE_3200 0 +#define CODEC2_MODE_2400 1 +#define CODEC2_MODE_1600 2 +#define CODEC2_MODE_1400 3 +#define CODEC2_MODE_1300 4 +#define CODEC2_MODE_1200 5 +#define CODEC2_MODE_700 6 +#define CODEC2_MODE_700B 7 +#define CODEC2_MODE_700C 8 +#define CODEC2_MODE_450 10 +#define CODEC2_MODE_450PWB 11 + +#ifndef CODEC2_MODE_EN_DEFAULT +#define CODEC2_MODE_EN_DEFAULT 1 +#endif + +// by default we enable all modes +// disable during compile time with -DCODEC2_MODE_1600_EN=0 +// all but CODEC2 1600 are enabled then + +//or the other way round +// -DCODEC2_MODE_EN_DEFAULT=0 -DCODEC2_MODE_1600_EN=1 +// only CODEC2 Mode 1600 + +#if !defined(CODEC2_MODE_3200_EN) + #define CODEC2_MODE_3200_EN CODEC2_MODE_EN_DEFAULT +#endif +#if !defined(CODEC2_MODE_2400_EN) + #define CODEC2_MODE_2400_EN CODEC2_MODE_EN_DEFAULT +#endif +#if !defined(CODEC2_MODE_1600_EN) + #define CODEC2_MODE_1600_EN CODEC2_MODE_EN_DEFAULT +#endif +#if !defined(CODEC2_MODE_1400_EN) + #define CODEC2_MODE_1400_EN CODEC2_MODE_EN_DEFAULT +#endif +#if !defined(CODEC2_MODE_1300_EN) + #define CODEC2_MODE_1300_EN CODEC2_MODE_EN_DEFAULT +#endif +#if !defined(CODEC2_MODE_1200_EN) + #define CODEC2_MODE_1200_EN CODEC2_MODE_EN_DEFAULT +#endif +#if !defined(CODEC2_MODE_700_EN) + #define CODEC2_MODE_700_EN CODEC2_MODE_EN_DEFAULT +#endif +#if !defined(CODEC2_MODE_700B_EN) + #define CODEC2_MODE_700B_EN CODEC2_MODE_EN_DEFAULT +#endif +#if !defined(CODEC2_MODE_700C_EN) + #define CODEC2_MODE_700C_EN CODEC2_MODE_EN_DEFAULT +#endif +#if !defined(CODEC2_MODE_450_EN) + #define CODEC2_MODE_450_EN CODEC2_MODE_EN_DEFAULT +#endif +#if !defined(CODEC2_MODE_450PWB_EN) + #define CODEC2_MODE_450PWB_EN CODEC2_MODE_EN_DEFAULT +#endif + +#define CODEC2_MODE_ACTIVE(mode_name, var) ((mode_name##_EN) == 0 ? 0: (var) == mode_name) + +struct CODEC2; + +struct CODEC2 * codec2_create(int mode); +void codec2_destroy(struct CODEC2 *codec2_state); +void codec2_encode(struct CODEC2 *codec2_state, unsigned char * bits, short speech_in[]); +void codec2_decode(struct CODEC2 *codec2_state, short speech_out[], const unsigned char *bits); +void codec2_decode_ber(struct CODEC2 *codec2_state, short speech_out[], const unsigned char *bits, float ber_est); +int codec2_samples_per_frame(struct CODEC2 *codec2_state); +int codec2_bits_per_frame(struct CODEC2 *codec2_state); + +void codec2_set_lpc_post_filter(struct CODEC2 *codec2_state, int enable, int bass_boost, float beta, float gamma); +int codec2_get_spare_bit_index(struct CODEC2 *codec2_state); +int codec2_rebuild_spare_bit(struct CODEC2 *codec2_state, int unpacked_bits[]); +void codec2_set_natural_or_gray(struct CODEC2 *codec2_state, int gray); +void codec2_set_softdec(struct CODEC2 *c2, float *softdec); +float codec2_get_energy(struct CODEC2 *codec2_state, const unsigned char *bits); + +// support for ML and VQ experiments +void codec2_open_mlfeat(struct CODEC2 *codec2_state, char *filename); +void codec2_load_codebook(struct CODEC2 *codec2_state, int num, char *filename); +float codec2_get_var(struct CODEC2 *codec2_state); +float *codec2_enable_user_ratek(struct CODEC2 *codec2_state, int *K); +void codec2_700c_post_filter(struct CODEC2 *codec2_state, int en); + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/codec2_fft.c b/codec2_fft.c new file mode 100644 index 0000000..14b8670 --- /dev/null +++ b/codec2_fft.c @@ -0,0 +1,158 @@ +/* + * codec2_fft.c + * + * Created on: 24.09.2016 + * Author: danilo + */ + +#include "codec2_fft.h" + +#include "debug_alloc.h" + +#ifdef USE_KISS_FFT +#include "_kiss_fft_guts.h" + +#else +#if 0 +// caching constants in RAM did not seem to have an effect on performance +// TODO: Decide what to with this code +#define FFT_INIT_CACHE_SIZE 4 +const arm_cfft_instance_f32* fft_init_cache[FFT_INIT_CACHE_SIZE]; + +static const arm_cfft_instance_f32* arm_fft_instance2ram(const arm_cfft_instance_f32* in) +{ + + arm_cfft_instance_f32* out = malloc(sizeof(arm_cfft_instance_f32)); + + if (out) { + memcpy(out,in,sizeof(arm_cfft_instance_f32)); + out->pBitRevTable = malloc(out->bitRevLength * sizeof(uint16_t)); + out->pTwiddle = malloc(out->fftLen * sizeof(float32_t)); + memcpy((void*)out->pBitRevTable,in->pBitRevTable,out->bitRevLength * sizeof(uint16_t)); + memcpy((void*)out->pTwiddle,in->pTwiddle,out->fftLen * sizeof(float32_t)); + } + return out; +} + + +static const arm_cfft_instance_f32* arm_fft_cache_get(const arm_cfft_instance_f32* romfft) +{ + const arm_cfft_instance_f32* retval = NULL; + static int used = 0; + for (int i = 0; fft_init_cache[i] != NULL && i < used; i++) + { + if (romfft->fftLen == fft_init_cache[i]->fftLen) + { + retval = fft_init_cache[i]; + break; + } + } + if (retval == NULL && used < FFT_INIT_CACHE_SIZE) + { + retval = arm_fft_instance2ram(romfft); + fft_init_cache[used++] = retval; + } + if (retval == NULL) + { + retval = romfft; + } + return retval; +} +#endif +#endif + +void codec2_fft_free(codec2_fft_cfg cfg) +{ +#ifdef USE_KISS_FFT + KISS_FFT_FREE(cfg); +#else + FREE(cfg); +#endif +} + +codec2_fft_cfg codec2_fft_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem) +{ + codec2_fft_cfg retval; +#ifdef USE_KISS_FFT + retval = kiss_fft_alloc(nfft, inverse_fft, mem, lenmem); +#else + retval = MALLOC(sizeof(codec2_fft_struct)); + retval->inverse = inverse_fft; + switch(nfft) + { + case 128: + retval->instance = &arm_cfft_sR_f32_len128; + break; + case 256: + retval->instance = &arm_cfft_sR_f32_len256; + break; + case 512: + retval->instance = &arm_cfft_sR_f32_len512; + break; +// case 1024: +// retval->instance = &arm_cfft_sR_f32_len1024; +// break; + default: + abort(); + } + // retval->instance = arm_fft_cache_get(retval->instance); +#endif + return retval; +} + +codec2_fftr_cfg codec2_fftr_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem) +{ + codec2_fftr_cfg retval; +#ifdef USE_KISS_FFT + retval = kiss_fftr_alloc(nfft, inverse_fft, mem, lenmem); +#else + retval = MALLOC(sizeof(codec2_fftr_struct)); + retval->inverse = inverse_fft; + retval->instance = MALLOC(sizeof(arm_rfft_fast_instance_f32)); + arm_rfft_fast_init_f32(retval->instance,nfft); + // memcpy(&retval->instance->Sint,arm_fft_cache_get(&retval->instance->Sint),sizeof(arm_cfft_instance_f32)); +#endif + return retval; +} +void codec2_fftr_free(codec2_fftr_cfg cfg) +{ +#ifdef USE_KISS_FFT + KISS_FFT_FREE(cfg); +#else + FREE(cfg->instance); + FREE(cfg); +#endif +} + +// there is a little overhead for inplace kiss_fft but this is +// on the powerful platforms like the Raspberry or even x86 PC based ones +// not noticeable +// the reduced usage of RAM and increased performance on STM32 platforms +// should be worth it. +void codec2_fft_inplace(codec2_fft_cfg cfg, codec2_fft_cpx* inout) +{ + +#ifdef USE_KISS_FFT + kiss_fft_cpx in[512]; + // decide whether to use the local stack based buffer for in + // or to allow kiss_fft to allocate RAM + // second part is just to play safe since first method + // is much faster and uses less RAM + if (cfg->nfft <= 512) + { + memcpy(in,inout,cfg->nfft*sizeof(kiss_fft_cpx)); + kiss_fft(cfg, in, (kiss_fft_cpx*)inout); + } + else + { + kiss_fft(cfg, (kiss_fft_cpx*)inout, (kiss_fft_cpx*)inout); + } +#else + arm_cfft_f32(cfg->instance,(float*)inout,cfg->inverse,1); + if (cfg->inverse) + { + arm_scale_f32((float*)inout,cfg->instance->fftLen,(float*)inout,cfg->instance->fftLen*2); + } + +#endif +} diff --git a/codec2_fft.h b/codec2_fft.h new file mode 100644 index 0000000..c741202 --- /dev/null +++ b/codec2_fft.h @@ -0,0 +1,104 @@ +/* + * codec2_fft.h + * + * Created on: 17.09.2016 + * Author: danilo + */ + +#ifndef DRIVERS_FREEDV_CODEC2_FFT_H_ +#define DRIVERS_FREEDV_CODEC2_FFT_H_ + +#include +#include +#include +#include +#include + +#ifdef FDV_ARM_MATH + #include "fdv_arm_math.h" +#else + #define USE_KISS_FFT +#endif + +#include "defines.h" +#include "comp.h" + + +typedef COMP codec2_fft_cpx; +#include "kiss_fftr.h" + +#ifdef USE_KISS_FFT + #include "kiss_fft.h" + typedef kiss_fftr_cfg codec2_fftr_cfg; + typedef kiss_fft_cfg codec2_fft_cfg; + typedef kiss_fft_scalar codec2_fft_scalar; +#else + typedef float32_t codec2_fft_scalar; + typedef struct { + arm_rfft_fast_instance_f32* instance; + int inverse; + } codec2_fftr_struct; + + typedef codec2_fftr_struct* codec2_fftr_cfg; + + typedef struct { + const arm_cfft_instance_f32* instance; + int inverse; + } codec2_fft_struct; + typedef codec2_fft_struct* codec2_fft_cfg; +#endif + + + +static inline void codec2_fftr(codec2_fftr_cfg cfg, codec2_fft_scalar* in, codec2_fft_cpx* out) +{ + +#ifdef USE_KISS_FFT + kiss_fftr(cfg, in, (kiss_fft_cpx*)out); +#else + arm_rfft_fast_f32(cfg->instance,in,(float*)out,cfg->inverse); + out->imag = 0; // remove out[FFT_ENC/2]->real stored in out[0].imag +#endif +} + +static inline void codec2_fftri(codec2_fftr_cfg cfg, codec2_fft_cpx* in, codec2_fft_scalar* out) +{ +#ifdef USE_KISS_FFT + kiss_fftri(cfg, (kiss_fft_cpx*)in, out); +#else + arm_rfft_fast_f32(cfg->instance,(float*)in,out,cfg->inverse); + // arm_scale_f32(out,cfg->instance->fftLenRFFT,out,cfg->instance->fftLenRFFT); +#endif + +} + +codec2_fft_cfg codec2_fft_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem); +codec2_fftr_cfg codec2_fftr_alloc(int nfft, int inverse_fft, void* mem, size_t* lenmem); +void codec2_fft_free(codec2_fft_cfg cfg); +void codec2_fftr_free(codec2_fftr_cfg cfg); + + +static inline void codec2_fft(codec2_fft_cfg cfg, codec2_fft_cpx* in, codec2_fft_cpx* out) +{ + +#ifdef USE_KISS_FFT + kiss_fft(cfg, (kiss_fft_cpx*)in, (kiss_fft_cpx*)out); +#else + memcpy(out,in,cfg->instance->fftLen*2*sizeof(float)); + arm_cfft_f32(cfg->instance,(float*)out,cfg->inverse, 1); + // TODO: this is not nice, but for now required to keep changes minimal + // however, since main goal is to reduce the memory usage + // we should convert to an in place interface + // on PC like platforms the overhead of using the "inplace" kiss_fft calls + // is neglectable compared to the gain in memory usage on STM32 platforms + if (cfg->inverse) + { + arm_scale_f32((float*)out,cfg->instance->fftLen,(float*)out,cfg->instance->fftLen*2); + } +#endif +} + +void codec2_fft_inplace(codec2_fft_cfg cfg, codec2_fft_cpx* inout); + + +#endif diff --git a/codec2_internal.h b/codec2_internal.h new file mode 100644 index 0000000..498a6c4 --- /dev/null +++ b/codec2_internal.h @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: codec2_internal.h + AUTHOR......: David Rowe + DATE CREATED: April 16 2012 + + Header file for Codec2 internal states, exposed via this header + file to assist in testing. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2012 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __CODEC2_INTERNAL__ +#define __CODEC2_INTERNAL__ + +#include "codec2_fft.h" +#include "newamp1.h" +#include "newamp2.h" + +struct CODEC2 { + int mode; + C2CONST c2const; + int Fs; + int n_samp; + int m_pitch; + codec2_fft_cfg fft_fwd_cfg; /* forward FFT config */ + codec2_fftr_cfg fftr_fwd_cfg; /* forward real FFT config */ + float *w; /* [m_pitch] time domain hamming window */ + COMP W[FFT_ENC]; /* DFT of w[] */ + float *Pn; /* [2*n_samp] trapezoidal synthesis window */ + float *bpf_buf; /* buffer for band pass filter */ + float *Sn; /* [m_pitch] input speech */ + float hpf_states[2]; /* high pass filter states */ + void *nlp; /* pitch predictor states */ + int gray; /* non-zero for gray encoding */ + + codec2_fftr_cfg fftr_inv_cfg; /* inverse FFT config */ + float *Sn_; /* [2*n_samp] synthesised output speech */ + float ex_phase; /* excitation model phase track */ + float bg_est; /* background noise estimate for post filter */ + float prev_f0_enc; /* previous frame's f0 estimate */ + MODEL prev_model_dec; /* previous frame's model parameters */ + float prev_lsps_dec[LPC_ORD]; /* previous frame's LSPs */ + float prev_e_dec; /* previous frame's LPC energy */ + + int lpc_pf; /* LPC post filter on */ + int bass_boost; /* LPC post filter bass boost */ + float beta; /* LPC post filter parameters */ + float gamma; + + float xq_enc[2]; /* joint pitch and energy VQ states */ + float xq_dec[2]; + + int smoothing; /* enable smoothing for channels with errors */ + float *softdec; /* optional soft decn bits from demod */ + + /* newamp1 states */ + + float rate_K_sample_freqs_kHz[NEWAMP1_K]; + float prev_rate_K_vec_[NEWAMP1_K]; + float Wo_left; + int voicing_left; + codec2_fft_cfg phase_fft_fwd_cfg; + codec2_fft_cfg phase_fft_inv_cfg; + float se; /* running sum of squared error */ + unsigned int nse; /* number of terms in sum */ + float *user_rate_K_vec_no_mean_; /* optional, user supplied vector for quantisation experiments */ + int post_filter_en; + + /*newamp2 states (also uses newamp1 states )*/ + float energy_prev; + float n2_rate_K_sample_freqs_kHz[NEWAMP2_K]; + float n2_prev_rate_K_vec_[NEWAMP2_K]; + float n2_pwb_rate_K_sample_freqs_kHz[NEWAMP2_16K_K]; + float n2_pwb_prev_rate_K_vec_[NEWAMP2_16K_K]; + + /* used to dump features for deep learning experiments */ + FILE *fmlfeat; + + /* encode/decode function pointers for the selected mode */ + void (*encode)(struct CODEC2 *c2, unsigned char * bits, short speech[]); + void (*decode)(struct CODEC2 *c2, short speech[], const unsigned char * bits); + void (*decode_ber)(struct CODEC2 *c2, short speech[], const unsigned char * bits, float ber_est); +}; + +// test and debug +void analyse_one_frame(struct CODEC2 *c2, MODEL *model, short speech[]); +void synthesise_one_frame(struct CODEC2 *c2, short speech[], MODEL *model, + COMP Aw[], float gain); +#endif diff --git a/comp.h b/comp.h new file mode 100644 index 0000000..ffc20c1 --- /dev/null +++ b/comp.h @@ -0,0 +1,38 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: comp.h + AUTHOR......: David Rowe + DATE CREATED: 24/08/09 + + Complex number definition. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2009 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __COMP__ +#define __COMP__ + +/* Complex number */ + +typedef struct { + float real; + float imag; +} COMP; + +#endif diff --git a/comp_prim.h b/comp_prim.h new file mode 100644 index 0000000..d0f070a --- /dev/null +++ b/comp_prim.h @@ -0,0 +1,141 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: comp_prim.h + AUTHOR......: David Rowe + DATE CREATED: Marh 2015 + + Complex number maths primitives. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2015 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __COMP_PRIM__ +#define __COMP_PRIM__ + +/*---------------------------------------------------------------------------*\ + + FUNCTIONS + +\*---------------------------------------------------------------------------*/ + +inline static COMP cneg(COMP a) +{ + COMP res; + + res.real = -a.real; + res.imag = -a.imag; + + return res; +} + +inline static COMP cconj(COMP a) +{ + COMP res; + + res.real = a.real; + res.imag = -a.imag; + + return res; +} + +inline static COMP cmult(COMP a, COMP b) +{ + COMP res; + + res.real = a.real*b.real - a.imag*b.imag; + res.imag = a.real*b.imag + a.imag*b.real; + + return res; +} + +inline static COMP fcmult(float a, COMP b) +{ + COMP res; + + res.real = a*b.real; + res.imag = a*b.imag; + + return res; +} + +inline static COMP cadd(COMP a, COMP b) +{ + COMP res; + + res.real = a.real + b.real; + res.imag = a.imag + b.imag; + + return res; +} + +inline static float cabsolute(COMP a) +{ + return sqrtf((a.real * a.real) + (a.imag * a.imag) ); +} + +/* + * Euler's formula in a new convenient function + */ +inline static COMP comp_exp_j(float phi){ + COMP res; + res.real = cosf(phi); + res.imag = sinf(phi); + return res; +} + +/* + * Quick and easy complex 0 + */ +inline static COMP comp0(){ + COMP res; + res.real = 0; + res.imag = 0; + return res; +} + +/* + * Quick and easy complex subtract + */ +inline static COMP csub(COMP a, COMP b){ + COMP res; + res.real = a.real-b.real; + res.imag = a.imag-b.imag; + return res; +} + +/* + * Compare the magnitude of a and b. if |a|>|b|, return true, otw false. + * This needs no square roots + */ +inline static int comp_mag_gt(COMP a,COMP b){ + return ((a.real*a.real)+(a.imag*a.imag)) > ((b.real*b.real)+(b.imag*b.imag)); +} + +/* + * Normalize a complex number's magnitude to 1 + */ +inline static COMP comp_normalize(COMP a){ + COMP b; + float av = cabsolute(a); + b.real = a.real/av; + b.imag = a.imag/av; + return b; +} + +#endif diff --git a/debug_alloc.h b/debug_alloc.h new file mode 100644 index 0000000..65ce9bd --- /dev/null +++ b/debug_alloc.h @@ -0,0 +1,2 @@ +#define FREE free +#define MALLOC malloc diff --git a/defines.h b/defines.h new file mode 100644 index 0000000..dcd1841 --- /dev/null +++ b/defines.h @@ -0,0 +1,125 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: defines.h + AUTHOR......: David Rowe + DATE CREATED: 23/4/93 + + Defines and structures used throughout the codec. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2009 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __DEFINES__ +#define __DEFINES__ + +/*---------------------------------------------------------------------------*\ + + DEFINES + +\*---------------------------------------------------------------------------*/ + +/* General defines */ + +#define N_S 0.01 /* internal proc frame length in secs */ +#define TW_S 0.005 /* trapezoidal synth window overlap */ +#define MAX_AMP 160 /* maximum number of harmonics */ +#ifndef PI +#define PI 3.141592654 /* mathematical constant */ +#endif +#define TWO_PI 6.283185307 /* mathematical constant */ +#define MAX_STR 2048 /* maximum string size */ + +#define FFT_ENC 512 /* size of FFT used for encoder */ +#define FFT_DEC 512 /* size of FFT used in decoder */ +#define V_THRESH 6.0 /* voicing threshold in dB */ +#define LPC_ORD 10 /* LPC order */ +#define LPC_ORD_LOW 6 /* LPC order for lower rates */ + +/* Pitch estimation defines */ + +#define M_PITCH_S 0.0400 /* pitch analysis window in s */ +#define P_MIN_S 0.0025 /* minimum pitch period in s */ +#define P_MAX_S 0.0200 /* maximum pitch period in s */ + +/*---------------------------------------------------------------------------*\ + + TYPEDEFS + +\*---------------------------------------------------------------------------*/ + +/* Structure to hold constants calculated at run time based on sample rate */ + +typedef struct { + int Fs; /* sample rate of this instance */ + int n_samp; /* number of samples per 10ms frame at Fs */ + int max_amp; /* maximum number of harmonics */ + int m_pitch; /* pitch estimation window size in samples */ + int p_min; /* minimum pitch period in samples */ + int p_max; /* maximum pitch period in samples */ + float Wo_min; + float Wo_max; + int nw; /* analysis window size in samples */ + int tw; /* trapezoidal synthesis window overlap */ +} C2CONST; + +/* Structure to hold model parameters for one frame */ + +typedef struct { + float Wo; /* fundamental frequency estimate in radians */ + int L; /* number of harmonics */ + float A[MAX_AMP+1]; /* amplitiude of each harmonic */ + float phi[MAX_AMP+1]; /* phase of each harmonic */ + int voiced; /* non-zero if this frame is voiced */ +} MODEL; + +/* describes each codebook */ + +struct lsp_codebook { + int k; /* dimension of vector */ + int log2m; /* number of bits in m */ + int m; /* elements in codebook */ +#ifdef __EMBEDDED /* make sure stored in flash */ + const float *cb; /* The elements */ +#else + float *cb; /* The elements */ +#endif +}; + +extern const struct lsp_codebook lsp_cb[]; +extern const struct lsp_codebook lsp_cbd[]; +extern const struct lsp_codebook lsp_cbvq[]; +extern const struct lsp_codebook lsp_cbjnd[]; +extern const struct lsp_codebook lsp_cbdt[]; +extern const struct lsp_codebook lsp_cbjvm[]; +extern const struct lsp_codebook lsp_cbvqanssi[]; +extern const struct lsp_codebook mel_cb[]; +extern const struct lsp_codebook ge_cb[]; +extern const struct lsp_codebook lspmelvq_cb[]; +extern const struct lsp_codebook newamp1vq_cb[]; +extern const struct lsp_codebook newamp1_energy_cb[]; +extern const struct lsp_codebook newamp2vq_cb[]; +extern const struct lsp_codebook newamp2_energy_cb[]; + +#ifdef _GNU_SOURCE + #define POW10F(x) exp10f((x)) +#else + #define POW10F(x) expf(2.302585092994046f*(x)) +#endif + +#endif diff --git a/dump.h b/dump.h new file mode 100644 index 0000000..e69de29 diff --git a/interp.c b/interp.c new file mode 100644 index 0000000..2109acb --- /dev/null +++ b/interp.c @@ -0,0 +1,331 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: interp.c + AUTHOR......: David Rowe + DATE CREATED: 9/10/09 + + Interpolation of 20ms frames to 10ms frames. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2009 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#include +#include +#include +#include + +#include "defines.h" +#include "interp.h" +#include "lsp.h" +#include "quantise.h" + +float sample_log_amp(MODEL *model, float w); + +#if 0 +/*---------------------------------------------------------------------------*\ + + FUNCTION....: interp() + AUTHOR......: David Rowe + DATE CREATED: 22/8/10 + + Given two frames decribed by model parameters 20ms apart, determines + the model parameters of the 10ms frame between them. Assumes + voicing is available for middle (interpolated) frame. Outputs are + amplitudes and Wo for the interpolated frame. + + This version can interpolate the amplitudes between two frames of + different Wo and L. + + This version works by log linear interpolation, but listening tests + showed it creates problems in background noise, e.g. hts2a and mmt1. + When this function is used (--dec mode) bg noise appears to be + amplitude modulated, and gets louder. The interp_lsp() function + below seems to do a better job. + +\*---------------------------------------------------------------------------*/ + +void interpolate( + MODEL *interp, /* interpolated model params */ + MODEL *prev, /* previous frames model params */ + MODEL *next, /* next frames model params */ + float Wo_min +) +{ + int l; + float w,log_amp; + + /* Wo depends on voicing of this and adjacent frames */ + + if (interp->voiced) { + if (prev->voiced && next->voiced) + interp->Wo = (prev->Wo + next->Wo)/2.0; + if (!prev->voiced && next->voiced) + interp->Wo = next->Wo; + if (prev->voiced && !next->voiced) + interp->Wo = prev->Wo; + } + else { + interp->Wo = Wo_min; + } + interp->L = PI/interp->Wo; + + /* Interpolate amplitudes using linear interpolation in log domain */ + + for(l=1; l<=interp->L; l++) { + w = l*interp->Wo; + log_amp = (sample_log_amp(prev, w) + sample_log_amp(next, w))/2.0; + interp->A[l] = powf(10.0, log_amp); + } +} +#endif + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: sample_log_amp() + AUTHOR......: David Rowe + DATE CREATED: 22/8/10 + + Samples the amplitude envelope at an arbitrary frequency w. Uses + linear interpolation in the log domain to sample between harmonic + amplitudes. + +\*---------------------------------------------------------------------------*/ + +float sample_log_amp(MODEL *model, float w) +{ + int m; + float f, log_amp; + + assert(w > 0.0); assert (w <= PI); + + m = floorf(w/model->Wo + 0.5); + f = (w - m*model->Wo)/w; + assert(f <= 1.0); + + if (m < 1) { + log_amp = f*log10f(model->A[1] + 1E-6); + } + else if ((m+1) > model->L) { + log_amp = (1.0-f)*log10f(model->A[model->L] + 1E-6); + } + else { + log_amp = (1.0-f)*log10f(model->A[m] + 1E-6) + + f*log10f(model->A[m+1] + 1E-6); + } + + return log_amp; +} + +#ifdef NOT_NEEDED + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: interp_lsp() + AUTHOR......: David Rowe + DATE CREATED: 10 Nov 2010 + + Given two frames decribed by model parameters 20ms apart, determines + the model parameters of the 10ms frame between them. Assumes + voicing is available for middle (interpolated) frame. Outputs are + amplitudes and Wo for the interpolated frame. + + This version uses interpolation of LSPs, seems to do a better job + with bg noise. + +\*---------------------------------------------------------------------------*/ + +void interpolate_lsp( + codec2_fft_cfg fft_fwd_cfg, + MODEL *interp, /* interpolated model params */ + MODEL *prev, /* previous frames model params */ + MODEL *next, /* next frames model params */ + float *prev_lsps, /* previous frames LSPs */ + float prev_e, /* previous frames LPC energy */ + float *next_lsps, /* next frames LSPs */ + float next_e, /* next frames LPC energy */ + float *ak_interp, /* interpolated aks for this frame */ + float *lsps_interp, /* interpolated lsps for this frame */ + float Wo_min +) +{ + int i; + float e; + float snr; + + /* trap corner case where V est is probably wrong */ + + if (interp->voiced && !prev->voiced && !next->voiced) { + interp->voiced = 0; + } + + /* Wo depends on voicing of this and adjacent frames */ + + if (interp->voiced) { + if (prev->voiced && next->voiced) + interp->Wo = (prev->Wo + next->Wo)/2.0; + if (!prev->voiced && next->voiced) + interp->Wo = next->Wo; + if (prev->voiced && !next->voiced) + interp->Wo = prev->Wo; + } + else { + interp->Wo = Wo_min; + } + interp->L = PI/interp->Wo; + + //printf(" interp: prev_v: %d next_v: %d prev_Wo: %f next_Wo: %f\n", + // prev->voiced, next->voiced, prev->Wo, next->Wo); + //printf(" interp: Wo: %1.5f L: %d\n", interp->Wo, interp->L); + + /* interpolate LSPs */ + + for(i=0; iA[1]); +} +#endif + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: interp_Wo() + AUTHOR......: David Rowe + DATE CREATED: 22 May 2012 + + Interpolates centre 10ms sample of Wo and L samples given two + samples 20ms apart. Assumes voicing is available for centre + (interpolated) frame. + +\*---------------------------------------------------------------------------*/ + +void interp_Wo( + MODEL *interp, /* interpolated model params */ + MODEL *prev, /* previous frames model params */ + MODEL *next, /* next frames model params */ + float Wo_min + ) +{ + interp_Wo2(interp, prev, next, 0.5, Wo_min); +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: interp_Wo2() + AUTHOR......: David Rowe + DATE CREATED: 22 May 2012 + + Weighted interpolation of two Wo samples. + +\*---------------------------------------------------------------------------*/ + +void interp_Wo2( + MODEL *interp, /* interpolated model params */ + MODEL *prev, /* previous frames model params */ + MODEL *next, /* next frames model params */ + float weight, + float Wo_min +) +{ + /* trap corner case where voicing est is probably wrong */ + + if (interp->voiced && !prev->voiced && !next->voiced) { + interp->voiced = 0; + } + + /* Wo depends on voicing of this and adjacent frames */ + + if (interp->voiced) { + if (prev->voiced && next->voiced) + interp->Wo = (1.0 - weight)*prev->Wo + weight*next->Wo; + if (!prev->voiced && next->voiced) + interp->Wo = next->Wo; + if (prev->voiced && !next->voiced) + interp->Wo = prev->Wo; + } + else { + interp->Wo = Wo_min; + } + interp->L = PI/interp->Wo; +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: interp_energy() + AUTHOR......: David Rowe + DATE CREATED: 22 May 2012 + + Interpolates centre 10ms sample of energy given two samples 20ms + apart. + +\*---------------------------------------------------------------------------*/ + +float interp_energy(float prev_e, float next_e) +{ + //return powf(10.0, (log10f(prev_e) + log10f(next_e))/2.0); + return sqrtf(prev_e * next_e); //looks better is math. identical and faster math +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: interp_energy2() + AUTHOR......: David Rowe + DATE CREATED: 22 May 2012 + + Interpolates centre 10ms sample of energy given two samples 20ms + apart. + +\*---------------------------------------------------------------------------*/ + +float interp_energy2(float prev_e, float next_e, float weight) +{ + return POW10F((1.0 - weight)*log10f(prev_e) + weight*log10f(next_e)); + +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: interpolate_lsp_ver2() + AUTHOR......: David Rowe + DATE CREATED: 22 May 2012 + + Weighted interpolation of LSPs. + +\*---------------------------------------------------------------------------*/ + +void interpolate_lsp_ver2(float interp[], float prev[], float next[], float weight, int order) +{ + int i; + + for(i=0; i. +*/ + +#ifndef __INTERP__ +#define __INTERP__ + +#include "kiss_fft.h" + +void interpolate(MODEL *interp, MODEL *prev, MODEL *next); +void interpolate_lsp(kiss_fft_cfg fft_dec_cfg, + MODEL *interp, MODEL *prev, MODEL *next, + float *prev_lsps, float prev_e, + float *next_lsps, float next_e, + float *ak_interp, float *lsps_interp, float Wo_min); +void interp_Wo(MODEL *interp, MODEL *prev, MODEL *next, float Wo_min); +void interp_Wo2(MODEL *interp, MODEL *prev, MODEL *next, float weight, float Wo_min); +float interp_energy(float prev, float next); +float interp_energy2(float prev, float next, float weight); +void interpolate_lsp_ver2(float interp[], float prev[], float next[], float weight, int order); + +#endif diff --git a/kiss_fft.c b/kiss_fft.c new file mode 100644 index 0000000..05f7f27 --- /dev/null +++ b/kiss_fft.c @@ -0,0 +1,408 @@ +/* +Copyright (c) 2003-2010, Mark Borgerding + +All rights reserved. + +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. + * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +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. +*/ + + +#include "_kiss_fft_guts.h" +/* The guts header contains all the multiplication and addition macros that are defined for + fixed or floating point complex numbers. It also delares the kf_ internal functions. + */ + +static void kf_bfly2( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + int m + ) +{ + kiss_fft_cpx * Fout2; + kiss_fft_cpx * tw1 = st->twiddles; + kiss_fft_cpx t; + Fout2 = Fout + m; + do{ + C_FIXDIV(*Fout,2); C_FIXDIV(*Fout2,2); + + C_MUL (t, *Fout2 , *tw1); + tw1 += fstride; + C_SUB( *Fout2 , *Fout , t ); + C_ADDTO( *Fout , t ); + ++Fout2; + ++Fout; + }while (--m); +} + +static void kf_bfly4( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + const size_t m + ) +{ + kiss_fft_cpx *tw1,*tw2,*tw3; + kiss_fft_cpx scratch[6]; + size_t k=m; + const size_t m2=2*m; + const size_t m3=3*m; + + + tw3 = tw2 = tw1 = st->twiddles; + + do { + C_FIXDIV(*Fout,4); C_FIXDIV(Fout[m],4); C_FIXDIV(Fout[m2],4); C_FIXDIV(Fout[m3],4); + + C_MUL(scratch[0],Fout[m] , *tw1 ); + C_MUL(scratch[1],Fout[m2] , *tw2 ); + C_MUL(scratch[2],Fout[m3] , *tw3 ); + + C_SUB( scratch[5] , *Fout, scratch[1] ); + C_ADDTO(*Fout, scratch[1]); + C_ADD( scratch[3] , scratch[0] , scratch[2] ); + C_SUB( scratch[4] , scratch[0] , scratch[2] ); + C_SUB( Fout[m2], *Fout, scratch[3] ); + tw1 += fstride; + tw2 += fstride*2; + tw3 += fstride*3; + C_ADDTO( *Fout , scratch[3] ); + + if(st->inverse) { + Fout[m].r = scratch[5].r - scratch[4].i; + Fout[m].i = scratch[5].i + scratch[4].r; + Fout[m3].r = scratch[5].r + scratch[4].i; + Fout[m3].i = scratch[5].i - scratch[4].r; + }else{ + Fout[m].r = scratch[5].r + scratch[4].i; + Fout[m].i = scratch[5].i - scratch[4].r; + Fout[m3].r = scratch[5].r - scratch[4].i; + Fout[m3].i = scratch[5].i + scratch[4].r; + } + ++Fout; + }while(--k); +} + +static void kf_bfly3( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + size_t m + ) +{ + size_t k=m; + const size_t m2 = 2*m; + kiss_fft_cpx *tw1,*tw2; + kiss_fft_cpx scratch[5]; + kiss_fft_cpx epi3; + epi3 = st->twiddles[fstride*m]; + + tw1=tw2=st->twiddles; + + do{ + C_FIXDIV(*Fout,3); C_FIXDIV(Fout[m],3); C_FIXDIV(Fout[m2],3); + + C_MUL(scratch[1],Fout[m] , *tw1); + C_MUL(scratch[2],Fout[m2] , *tw2); + + C_ADD(scratch[3],scratch[1],scratch[2]); + C_SUB(scratch[0],scratch[1],scratch[2]); + tw1 += fstride; + tw2 += fstride*2; + + Fout[m].r = Fout->r - HALF_OF(scratch[3].r); + Fout[m].i = Fout->i - HALF_OF(scratch[3].i); + + C_MULBYSCALAR( scratch[0] , epi3.i ); + + C_ADDTO(*Fout,scratch[3]); + + Fout[m2].r = Fout[m].r + scratch[0].i; + Fout[m2].i = Fout[m].i - scratch[0].r; + + Fout[m].r -= scratch[0].i; + Fout[m].i += scratch[0].r; + + ++Fout; + }while(--k); +} + +static void kf_bfly5( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + int m + ) +{ + kiss_fft_cpx *Fout0,*Fout1,*Fout2,*Fout3,*Fout4; + int u; + kiss_fft_cpx scratch[13]; + kiss_fft_cpx * twiddles = st->twiddles; + kiss_fft_cpx *tw; + kiss_fft_cpx ya,yb; + ya = twiddles[fstride*m]; + yb = twiddles[fstride*2*m]; + + Fout0=Fout; + Fout1=Fout0+m; + Fout2=Fout0+2*m; + Fout3=Fout0+3*m; + Fout4=Fout0+4*m; + + tw=st->twiddles; + for ( u=0; ur += scratch[7].r + scratch[8].r; + Fout0->i += scratch[7].i + scratch[8].i; + + scratch[5].r = scratch[0].r + S_MUL(scratch[7].r,ya.r) + S_MUL(scratch[8].r,yb.r); + scratch[5].i = scratch[0].i + S_MUL(scratch[7].i,ya.r) + S_MUL(scratch[8].i,yb.r); + + scratch[6].r = S_MUL(scratch[10].i,ya.i) + S_MUL(scratch[9].i,yb.i); + scratch[6].i = -S_MUL(scratch[10].r,ya.i) - S_MUL(scratch[9].r,yb.i); + + C_SUB(*Fout1,scratch[5],scratch[6]); + C_ADD(*Fout4,scratch[5],scratch[6]); + + scratch[11].r = scratch[0].r + S_MUL(scratch[7].r,yb.r) + S_MUL(scratch[8].r,ya.r); + scratch[11].i = scratch[0].i + S_MUL(scratch[7].i,yb.r) + S_MUL(scratch[8].i,ya.r); + scratch[12].r = - S_MUL(scratch[10].i,yb.i) + S_MUL(scratch[9].i,ya.i); + scratch[12].i = S_MUL(scratch[10].r,yb.i) - S_MUL(scratch[9].r,ya.i); + + C_ADD(*Fout2,scratch[11],scratch[12]); + C_SUB(*Fout3,scratch[11],scratch[12]); + + ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4; + } +} + +/* perform the butterfly for one stage of a mixed radix FFT */ +static void kf_bfly_generic( + kiss_fft_cpx * Fout, + const size_t fstride, + const kiss_fft_cfg st, + int m, + int p + ) +{ + int u,k,q1,q; + kiss_fft_cpx * twiddles = st->twiddles; + kiss_fft_cpx t; + int Norig = st->nfft; + + kiss_fft_cpx * scratch = (kiss_fft_cpx*)KISS_FFT_TMP_ALLOC(sizeof(kiss_fft_cpx)*p); + + for ( u=0; u=Norig) twidx-=Norig; + C_MUL(t,scratch[q] , twiddles[twidx] ); + C_ADDTO( Fout[ k ] ,t); + } + k += m; + } + } + KISS_FFT_TMP_FREE(scratch); +} + +static +void kf_work( + kiss_fft_cpx * Fout, + const kiss_fft_cpx * f, + const size_t fstride, + int in_stride, + int * factors, + const kiss_fft_cfg st + ) +{ + kiss_fft_cpx * Fout_beg=Fout; + const int p=*factors++; /* the radix */ + const int m=*factors++; /* stage's fft length/p */ + const kiss_fft_cpx * Fout_end = Fout + p*m; + +#ifdef _OPENMP + // use openmp extensions at the + // top-level (not recursive) + if (fstride==1 && p<=5) + { + int k; + + // execute the p different work units in different threads +# pragma omp parallel for + for (k=0;k floor_sqrt) + p = n; /* no more factors, skip to end */ + } + n /= p; + *facbuf++ = p; + *facbuf++ = n; + } while (n > 1); +} + +/* + * + * User-callable function to allocate all necessary storage space for the fft. + * + * The return value is a contiguous block of memory, allocated with malloc. As such, + * It can be freed with free(), rather than a kiss_fft-specific function. + * */ +kiss_fft_cfg kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem ) +{ + kiss_fft_cfg st=NULL; + size_t memneeded = sizeof(struct kiss_fft_state) + + sizeof(kiss_fft_cpx)*(nfft-1); /* twiddle factors*/ + + if ( lenmem==NULL ) { + st = ( kiss_fft_cfg)KISS_FFT_MALLOC( memneeded ); + }else{ + if (mem != NULL && *lenmem >= memneeded) + st = (kiss_fft_cfg)mem; + *lenmem = memneeded; + } + if (st) { + int i; + st->nfft=nfft; + st->inverse = inverse_fft; + + for (i=0;iinverse) + phase *= -1; + kf_cexp(st->twiddles+i, phase ); + } + + kf_factor(nfft,st->factors); + } + return st; +} + + +void kiss_fft_stride(kiss_fft_cfg st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int in_stride) +{ + if (fin == fout) { + //NOTE: this is not really an in-place FFT algorithm. + //It just performs an out-of-place FFT into a temp buffer + kiss_fft_cpx * tmpbuf = (kiss_fft_cpx*)KISS_FFT_TMP_ALLOC( sizeof(kiss_fft_cpx)*st->nfft); + kf_work(tmpbuf,fin,1,in_stride, st->factors,st); + memcpy(fout,tmpbuf,sizeof(kiss_fft_cpx)*st->nfft); + KISS_FFT_TMP_FREE(tmpbuf); + }else{ + kf_work( fout, fin, 1,in_stride, st->factors,st ); + } +} + +void kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout) +{ + kiss_fft_stride(cfg,fin,fout,1); +} + + +void kiss_fft_cleanup(void) +{ + // nothing needed any more +} + +int kiss_fft_next_fast_size(int n) +{ + while(1) { + int m=n; + while ( (m%2) == 0 ) m/=2; + while ( (m%3) == 0 ) m/=3; + while ( (m%5) == 0 ) m/=5; + if (m<=1) + break; /* n is completely factorable by twos, threes, and fives */ + n++; + } + return n; +} diff --git a/kiss_fft.h b/kiss_fft.h new file mode 100644 index 0000000..c01722c --- /dev/null +++ b/kiss_fft.h @@ -0,0 +1,124 @@ +#ifndef KISS_FFT_H +#define KISS_FFT_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + ATTENTION! + If you would like a : + -- a utility that will handle the caching of fft objects + -- real-only (no imaginary time component ) FFT + -- a multi-dimensional FFT + -- a command-line utility to perform ffts + -- a command-line utility to perform fast-convolution filtering + + Then see kfc.h kiss_fftr.h kiss_fftnd.h fftutil.c kiss_fastfir.c + in the tools/ directory. +*/ + +#ifdef USE_SIMD +# include +# define kiss_fft_scalar __m128 +#define KISS_FFT_MALLOC(nbytes) _mm_malloc(nbytes,16) +#define KISS_FFT_FREE _mm_free +#else +#define KISS_FFT_MALLOC malloc +#define KISS_FFT_FREE free +#endif + + +#ifdef FIXED_POINT +#include +# if (FIXED_POINT == 32) +# define kiss_fft_scalar int32_t +# else +# define kiss_fft_scalar int16_t +# endif +#else +# ifndef kiss_fft_scalar +/* default is float */ +# define kiss_fft_scalar float +# endif +#endif + +typedef struct { + kiss_fft_scalar r; + kiss_fft_scalar i; +}kiss_fft_cpx; + +typedef struct kiss_fft_state* kiss_fft_cfg; + +/* + * kiss_fft_alloc + * + * Initialize a FFT (or IFFT) algorithm's cfg/state buffer. + * + * typical usage: kiss_fft_cfg mycfg=kiss_fft_alloc(1024,0,NULL,NULL); + * + * The return value from fft_alloc is a cfg buffer used internally + * by the fft routine or NULL. + * + * If lenmem is NULL, then kiss_fft_alloc will allocate a cfg buffer using malloc. + * The returned value should be free()d when done to avoid memory leaks. + * + * The state can be placed in a user supplied buffer 'mem': + * If lenmem is not NULL and mem is not NULL and *lenmem is large enough, + * then the function places the cfg in mem and the size used in *lenmem + * and returns mem. + * + * If lenmem is not NULL and ( mem is NULL or *lenmem is not large enough), + * then the function returns NULL and places the minimum cfg + * buffer size in *lenmem. + * */ + +kiss_fft_cfg kiss_fft_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem); + +/* + * kiss_fft(cfg,in_out_buf) + * + * Perform an FFT on a complex input buffer. + * for a forward FFT, + * fin should be f[0] , f[1] , ... ,f[nfft-1] + * fout will be F[0] , F[1] , ... ,F[nfft-1] + * Note that each element is complex and can be accessed like + f[k].r and f[k].i + * */ +void kiss_fft(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout); + +/* + A more generic version of the above function. It reads its input from every Nth sample. + * */ +void kiss_fft_stride(kiss_fft_cfg cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,int fin_stride); + +/* If kiss_fft_alloc allocated a buffer, it is one contiguous + buffer and can be simply free()d when no longer needed*/ +#define kiss_fft_free free + +/* + Cleans up some memory that gets managed internally. Not necessary to call, but it might clean up + your compiler output to call this before you exit. +*/ +void kiss_fft_cleanup(void); + + +/* + * Returns the smallest integer k, such that k>=n and k has only "fast" factors (2,3,5) + */ +int kiss_fft_next_fast_size(int n); + +/* for real ffts, we need an even size */ +#define kiss_fftr_next_fast_size_real(n) \ + (kiss_fft_next_fast_size( ((n)+1)>>1)<<1) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/kiss_fftr.c b/kiss_fftr.c new file mode 100644 index 0000000..7cc0286 --- /dev/null +++ b/kiss_fftr.c @@ -0,0 +1,154 @@ +/* +Copyright (c) 2003-2004, Mark Borgerding + +All rights reserved. + +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. + * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +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. +*/ + +#include "kiss_fftr.h" +#include "_kiss_fft_guts.h" +#include "assert.h" + +struct kiss_fftr_state{ + kiss_fft_cfg substate; + kiss_fft_cpx * tmpbuf; + kiss_fft_cpx * super_twiddles; +#ifdef USE_SIMD + void * pad; +#endif +}; + +kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem) +{ + int i; + kiss_fftr_cfg st = NULL; + size_t subsize, memneeded; + + if (nfft & 1) { + fprintf(stderr,"Real FFT optimization must be even.\n"); + return NULL; + } + nfft >>= 1; + + kiss_fft_alloc (nfft, inverse_fft, NULL, &subsize); + memneeded = sizeof(struct kiss_fftr_state) + subsize + sizeof(kiss_fft_cpx) * ( nfft * 3 / 2); + + if (lenmem == NULL) { + st = (kiss_fftr_cfg) KISS_FFT_MALLOC (memneeded); + } else { + if (*lenmem >= memneeded) + st = (kiss_fftr_cfg) mem; + *lenmem = memneeded; + } + if (!st) + return NULL; + + st->substate = (kiss_fft_cfg) (st + 1); /*just beyond kiss_fftr_state struct */ + st->tmpbuf = (kiss_fft_cpx *) (((char *) st->substate) + subsize); + st->super_twiddles = st->tmpbuf + nfft; + kiss_fft_alloc(nfft, inverse_fft, st->substate, &subsize); + + for (i = 0; i < nfft/2; ++i) { + float phase = + -3.14159265358979323846264338327 * ((float) (i+1) / nfft + .5); + if (inverse_fft) + phase *= -1; + kf_cexp (st->super_twiddles+i,phase); + } + return st; +} + +void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata) +{ + /* input buffer timedata is stored row-wise */ + int k,ncfft; + kiss_fft_cpx fpnk,fpk,f1k,f2k,tw,tdc; + + assert(st->substate->inverse==0); + + ncfft = st->substate->nfft; + + /*perform the parallel fft of two real signals packed in real,imag*/ + kiss_fft( st->substate , (const kiss_fft_cpx*)timedata, st->tmpbuf ); + /* The real part of the DC element of the frequency spectrum in st->tmpbuf + * contains the sum of the even-numbered elements of the input time sequence + * The imag part is the sum of the odd-numbered elements + * + * The sum of tdc.r and tdc.i is the sum of the input time sequence. + * yielding DC of input time sequence + * The difference of tdc.r - tdc.i is the sum of the input (dot product) [1,-1,1,-1... + * yielding Nyquist bin of input time sequence + */ + + tdc.r = st->tmpbuf[0].r; + tdc.i = st->tmpbuf[0].i; + C_FIXDIV(tdc,2); + CHECK_OVERFLOW_OP(tdc.r ,+, tdc.i); + CHECK_OVERFLOW_OP(tdc.r ,-, tdc.i); + freqdata[0].r = tdc.r + tdc.i; + freqdata[ncfft].r = tdc.r - tdc.i; +#ifdef USE_SIMD + freqdata[ncfft].i = freqdata[0].i = _mm_set1_ps(0); +#else + freqdata[ncfft].i = freqdata[0].i = 0; +#endif + + for ( k=1;k <= ncfft/2 ; ++k ) { + fpk = st->tmpbuf[k]; + fpnk.r = st->tmpbuf[ncfft-k].r; + fpnk.i = - st->tmpbuf[ncfft-k].i; + C_FIXDIV(fpk,2); + C_FIXDIV(fpnk,2); + + C_ADD( f1k, fpk , fpnk ); + C_SUB( f2k, fpk , fpnk ); + C_MUL( tw , f2k , st->super_twiddles[k-1]); + + freqdata[k].r = HALF_OF(f1k.r + tw.r); + freqdata[k].i = HALF_OF(f1k.i + tw.i); + freqdata[ncfft-k].r = HALF_OF(f1k.r - tw.r); + freqdata[ncfft-k].i = HALF_OF(tw.i - f1k.i); + } +} + +void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata) +{ + /* input buffer timedata is stored row-wise */ + int k, ncfft; + + assert(st->substate->inverse == 1); + + ncfft = st->substate->nfft; + + st->tmpbuf[0].r = freqdata[0].r + freqdata[ncfft].r; + st->tmpbuf[0].i = freqdata[0].r - freqdata[ncfft].r; + C_FIXDIV(st->tmpbuf[0],2); + + for (k = 1; k <= ncfft / 2; ++k) { + kiss_fft_cpx fk, fnkc, fek, fok, tmp; + fk = freqdata[k]; + fnkc.r = freqdata[ncfft - k].r; + fnkc.i = -freqdata[ncfft - k].i; + C_FIXDIV( fk , 2 ); + C_FIXDIV( fnkc , 2 ); + + C_ADD (fek, fk, fnkc); + C_SUB (tmp, fk, fnkc); + C_MUL (fok, tmp, st->super_twiddles[k-1]); + C_ADD (st->tmpbuf[k], fek, fok); + C_SUB (st->tmpbuf[ncfft - k], fek, fok); +#ifdef USE_SIMD + st->tmpbuf[ncfft - k].i *= _mm_set1_ps(-1.0); +#else + st->tmpbuf[ncfft - k].i *= -1; +#endif + } + kiss_fft (st->substate, st->tmpbuf, (kiss_fft_cpx *) timedata); +} diff --git a/kiss_fftr.h b/kiss_fftr.h new file mode 100644 index 0000000..72e5a57 --- /dev/null +++ b/kiss_fftr.h @@ -0,0 +1,46 @@ +#ifndef KISS_FTR_H +#define KISS_FTR_H + +#include "kiss_fft.h" +#ifdef __cplusplus +extern "C" { +#endif + + +/* + + Real optimized version can save about 45% cpu time vs. complex fft of a real seq. + + + + */ + +typedef struct kiss_fftr_state *kiss_fftr_cfg; + + +kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem); +/* + nfft must be even + + If you don't care to allocate space, use mem = lenmem = NULL +*/ + + +void kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata); +/* + input timedata has nfft scalar points + output freqdata has nfft/2+1 complex points +*/ + +void kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata); +/* + input freqdata has nfft/2+1 complex points + output timedata has nfft scalar points +*/ + +#define kiss_fftr_free free + +#ifdef __cplusplus +} +#endif +#endif diff --git a/lpc.c b/lpc.c new file mode 100644 index 0000000..31442cd --- /dev/null +++ b/lpc.c @@ -0,0 +1,306 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: lpc.c + AUTHOR......: David Rowe + DATE CREATED: 30 Sep 1990 (!) + + Linear Prediction functions written in C. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2009-2012 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#define LPC_MAX_N 512 /* maximum no. of samples in frame */ +#define PI 3.141592654 /* mathematical constant */ + +#define ALPHA 1.0 +#define BETA 0.94 + +#include +#include +#include "defines.h" +#include "lpc.h" + +/*---------------------------------------------------------------------------*\ + + pre_emp() + + Pre-emphasise (high pass filter with zero close to 0 Hz) a frame of + speech samples. Helps reduce dynamic range of LPC spectrum, giving + greater weight and hense a better match to low energy formants. + + Should be balanced by de-emphasis of the output speech. + +\*---------------------------------------------------------------------------*/ + +void pre_emp( + float Sn_pre[], /* output frame of speech samples */ + float Sn[], /* input frame of speech samples */ + float *mem, /* Sn[-1]single sample memory */ + int Nsam /* number of speech samples to use */ +) +{ + int i; + + for(i=0; i 1.0) + k = 0.0; + + a[i][i] = k; + + for(j=1; j<=i-1; j++) + a[i][j] = a[i-1][j] + k*a[i-1][i-j]; /* Equation 38c, Makhoul */ + + e *= (1-k*k); /* Equation 38d, Makhoul */ + } + + for(i=1; i<=order; i++) + lpcs[i] = a[order][i]; + lpcs[0] = 1.0; +} + +/*---------------------------------------------------------------------------*\ + + inverse_filter() + + Inverse Filter, A(z). Produces an array of residual samples from an array + of input samples and linear prediction coefficients. + + The filter memory is stored in the first order samples of the input array. + +\*---------------------------------------------------------------------------*/ + +void inverse_filter( + float Sn[], /* Nsam input samples */ + float a[], /* LPCs for this frame of samples */ + int Nsam, /* number of samples */ + float res[], /* Nsam residual samples */ + int order /* order of LPC */ +) +{ + int i,j; /* loop variables */ + + for(i=0; i. +*/ + +#ifndef __LPC__ +#define __LPC__ + +#define LPC_MAX_ORDER 20 + +void pre_emp(float Sn_pre[], float Sn[], float *mem, int Nsam); +void de_emp(float Sn_se[], float Sn[], float *mem, int Nsam); +void hanning_window(float Sn[], float Wn[], int Nsam); +void autocorrelate(float Sn[], float Rn[], int Nsam, int order); +void levinson_durbin(float R[], float lpcs[], int order); +void inverse_filter(float Sn[], float a[], int Nsam, float res[], int order); +void synthesis_filter(float res[], float a[], int Nsam, int order, float Sn_[]); +void find_aks(float Sn[], float a[], int Nsam, int order, float *E); +void weight(float ak[], float gamma, int order, float akw[]); + +#endif diff --git a/lsp.c b/lsp.c new file mode 100644 index 0000000..05d190e --- /dev/null +++ b/lsp.c @@ -0,0 +1,321 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: lsp.c + AUTHOR......: David Rowe + DATE CREATED: 24/2/93 + + + This file contains functions for LPC to LSP conversion and LSP to + LPC conversion. Note that the LSP coefficients are not in radians + format but in the x domain of the unit circle. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2009 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#include "defines.h" +#include "lsp.h" +#include +#include +#include + +/*---------------------------------------------------------------------------*\ + + Introduction to Line Spectrum Pairs (LSPs) + ------------------------------------------ + + LSPs are used to encode the LPC filter coefficients {ak} for + transmission over the channel. LSPs have several properties (like + less sensitivity to quantisation noise) that make them superior to + direct quantisation of {ak}. + + A(z) is a polynomial of order lpcrdr with {ak} as the coefficients. + + A(z) is transformed to P(z) and Q(z) (using a substitution and some + algebra), to obtain something like: + + A(z) = 0.5[P(z)(z+z^-1) + Q(z)(z-z^-1)] (1) + + As you can imagine A(z) has complex zeros all over the z-plane. P(z) + and Q(z) have the very neat property of only having zeros _on_ the + unit circle. So to find them we take a test point z=exp(jw) and + evaluate P (exp(jw)) and Q(exp(jw)) using a grid of points between 0 + and pi. + + The zeros (roots) of P(z) also happen to alternate, which is why we + swap coefficients as we find roots. So the process of finding the + LSP frequencies is basically finding the roots of 5th order + polynomials. + + The root so P(z) and Q(z) occur in symmetrical pairs at +/-w, hence + the name Line Spectrum Pairs (LSPs). + + To convert back to ak we just evaluate (1), "clocking" an impulse + thru it lpcrdr times gives us the impulse response of A(z) which is + {ak}. + +\*---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: cheb_poly_eva() + AUTHOR......: David Rowe + DATE CREATED: 24/2/93 + + This function evalutes a series of chebyshev polynomials + + FIXME: performing memory allocation at run time is very inefficient, + replace with stack variables of MAX_P size. + +\*---------------------------------------------------------------------------*/ + + +static float +cheb_poly_eva(float *coef,float x,int order) +/* float coef[] coefficients of the polynomial to be evaluated */ +/* float x the point where polynomial is to be evaluated */ +/* int order order of the polynomial */ +{ + int i; + float *t,*u,*v,sum; + float T[(order / 2) + 1]; + + /* Initialise pointers */ + + t = T; /* T[i-2] */ + *t++ = 1.0; + u = t--; /* T[i-1] */ + *u++ = x; + v = u--; /* T[i] */ + + /* Evaluate chebyshev series formulation using iterative approach */ + + for(i=2;i<=order/2;i++) + *v++ = (2*x)*(*u++) - *t++; /* T[i] = 2*x*T[i-1] - T[i-2] */ + + sum=0.0; /* initialise sum to zero */ + t = T; /* reset pointer */ + + /* Evaluate polynomial and return value also free memory space */ + + for(i=0;i<=order/2;i++) + sum+=coef[(order/2)-i]**t++; + + return sum; +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: lpc_to_lsp() + AUTHOR......: David Rowe + DATE CREATED: 24/2/93 + + This function converts LPC coefficients to LSP coefficients. + +\*---------------------------------------------------------------------------*/ + +int lpc_to_lsp (float *a, int order, float *freq, int nb, float delta) +/* float *a lpc coefficients */ +/* int order order of LPC coefficients (10) */ +/* float *freq LSP frequencies in radians */ +/* int nb number of sub-intervals (4) */ +/* float delta grid spacing interval (0.02) */ +{ + float psuml,psumr,psumm,temp_xr,xl,xr,xm = 0; + float temp_psumr; + int i,j,m,flag,k; + float *px; /* ptrs of respective P'(z) & Q'(z) */ + float *qx; + float *p; + float *q; + float *pt; /* ptr used for cheb_poly_eval() + whether P' or Q' */ + int roots=0; /* number of roots found */ + float Q[order + 1]; + float P[order + 1]; + + flag = 1; + m = order/2; /* order of P'(z) & Q'(z) polynimials */ + + /* Allocate memory space for polynomials */ + + /* determine P'(z)'s and Q'(z)'s coefficients where + P'(z) = P(z)/(1 + z^(-1)) and Q'(z) = Q(z)/(1-z^(-1)) */ + + px = P; /* initilaise ptrs */ + qx = Q; + p = px; + q = qx; + *px++ = 1.0; + *qx++ = 1.0; + for(i=1;i<=m;i++){ + *px++ = a[i]+a[order+1-i]-*p++; + *qx++ = a[i]-a[order+1-i]+*q++; + } + px = P; + qx = Q; + for(i=0;i= -1.0)){ + xr = xl - delta ; /* interval spacing */ + psumr = cheb_poly_eva(pt,xr,order);/* poly(xl-delta_x) */ + temp_psumr = psumr; + temp_xr = xr; + + /* if no sign change increment xr and re-evaluate + poly(xr). Repeat til sign change. if a sign change has + occurred the interval is bisected and then checked again + for a sign change which determines in which interval the + zero lies in. If there is no sign change between poly(xm) + and poly(xl) set interval between xm and xr else set + interval between xl and xr and repeat till root is located + within the specified limits */ + + if(((psumr*psuml)<0.0) || (psumr == 0.0)){ + roots++; + + psumm=psuml; + for(k=0;k<=nb;k++){ + xm = (xl+xr)/2; /* bisect the interval */ + psumm=cheb_poly_eva(pt,xm,order); + if(psumm*psuml>0.){ + psuml=psumm; + xl=xm; + } + else{ + psumr=psumm; + xr=xm; + } + } + + /* once zero is found, reset initial interval to xr */ + freq[j] = (xm); + xl = xm; + flag = 0; /* reset flag for next search */ + } + else{ + psuml=temp_psumr; + xl=temp_xr; + } + } + } + + /* convert from x domain to radians */ + + for(i=0; i. +*/ + +#ifndef __LSP__ +#define __LSP__ + +int lpc_to_lsp (float *a, int lpcrdr, float *freq, int nb, float delta); +void lsp_to_lpc(float *freq, float *ak, int lpcrdr); + +#endif diff --git a/machdep.h b/machdep.h new file mode 100644 index 0000000..4dff9ba --- /dev/null +++ b/machdep.h @@ -0,0 +1,52 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: machdep.h + AUTHOR......: David Rowe + DATE CREATED: May 2 2013 + + Machine dependant functions, e.g. profiling that requires access to a clock + counter register. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2013 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __MACHDEP__ +#define __MACHDEP__ + +#ifdef PROFILE +#define PROFILE_VAR(...) unsigned int __VA_ARGS__ +#define PROFILE_SAMPLE(timestamp) timestamp = machdep_profile_sample() +#define PROFILE_SAMPLE_AND_LOG(timestamp, prev_timestamp, label) \ + timestamp = machdep_profile_sample_and_log(prev_timestamp, label) +#define PROFILE_SAMPLE_AND_LOG2(prev_timestamp, label) \ + machdep_profile_sample_and_log(prev_timestamp, label) +#else +#define PROFILE_VAR(...) +#define PROFILE_SAMPLE(timestamp) +#define PROFILE_SAMPLE_AND_LOG(timestamp, prev_timestamp, label) +#define PROFILE_SAMPLE_AND_LOG2(prev_timestamp, label) +#endif + +void machdep_profile_init(void); +void machdep_profile_reset(void); +unsigned int machdep_profile_sample(void); +unsigned int machdep_profile_sample_and_log(unsigned int start, char s[]); +void machdep_profile_print_logged_samples(void); + +#endif diff --git a/main.c b/main.c new file mode 100644 index 0000000..10a0818 --- /dev/null +++ b/main.c @@ -0,0 +1,34 @@ +#include +#include + +#include "codec2.h" + +int main() { + struct timespec tstart={0,0}, tend={0,0}; + short input[976692]; + FILE * recoded = fopen("count-recoded.raw", "w+"); + FILE * f = fopen("count.raw", "r"); + void * codec2 = codec2_create(CODEC2_MODE_700C); + int nsam = codec2_samples_per_frame(codec2); + int nbit = codec2_bits_per_frame(codec2); + int off = 0; + unsigned char bits[128]; + + fread(input, 976692, 1, f); + fclose(f); + + clock_gettime(CLOCK_MONOTONIC, &tstart); + + while (off < 976692 / 2) { + codec2_encode(codec2, bits, input + off); + codec2_decode(codec2, input + off, bits); + off += 320; + } + + clock_gettime(CLOCK_MONOTONIC, &tend); + printf("%lf\n", ((double)tend.tv_sec + 1.0e-9*tend.tv_nsec) - ((double)tstart.tv_sec + 1.0e-9*tstart.tv_nsec)); + + fwrite(input, 976692, 1, recoded); + + codec2_destroy(codec2); +} diff --git a/mbest.c b/mbest.c new file mode 100644 index 0000000..6216b77 --- /dev/null +++ b/mbest.c @@ -0,0 +1,173 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: mbest.c + AUTHOR......: David Rowe + DATE CREATED: Jan 2017 + + Multistage vector quantiser search algorithm that keeps multiple + candidates from each stage. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright David Rowe 2017 + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . + +*/ + +#include +#include +#include +#include +#include + +#include "mbest.h" + +struct MBEST *mbest_create(int entries) { + int i,j; + struct MBEST *mbest; + + assert(entries > 0); + mbest = (struct MBEST *)malloc(sizeof(struct MBEST)); + assert(mbest != NULL); + + mbest->entries = entries; + mbest->list = (struct MBEST_LIST *)malloc(entries*sizeof(struct MBEST_LIST)); + assert(mbest->list != NULL); + + for(i=0; ientries; i++) { + for(j=0; jlist[i].index[j] = 0; + mbest->list[i].error = 1E32; + } + + return mbest; +} + + +void mbest_destroy(struct MBEST *mbest) { + assert(mbest != NULL); + free(mbest->list); + free(mbest); +} + + +/*---------------------------------------------------------------------------*\ + + mbest_insert + + Insert the results of a vector to codebook entry comparison. The + list is ordered in order of error, so those entries with the + smallest error will be first on the list. + +\*---------------------------------------------------------------------------*/ + +void mbest_insert(struct MBEST *mbest, int index[], float error) { + int i, j, found; + struct MBEST_LIST *list = mbest->list; + int entries = mbest->entries; + + found = 0; + for(i=0; ii; j--) + list[j] = list[j-1]; + for(j=0; jentries; i++) { + for(j=0; jlist[i].index[j]); + fprintf(stderr, " %f\n", mbest->list[i].error); + } +} +#endif + + +/*---------------------------------------------------------------------------*\ + + mbest_search + + Searches vec[] to a codebbook of vectors, and maintains a list of the mbest + closest matches. + +\*---------------------------------------------------------------------------*/ + +void mbest_search( + const float *cb, /* VQ codebook to search */ + float vec[], /* target vector */ + float w[], /* weighting vector */ + int k, /* dimension of vector */ + int m, /* number on entries in codebook */ + struct MBEST *mbest, /* list of closest matches */ + int index[] /* indexes that lead us here */ +) +{ + float e; + int i,j; + float diff; + + for(j=0; j. + +*/ + +#ifndef __MBEST__ +#define __MBEST__ + +#define MBEST_STAGES 4 + +struct MBEST_LIST { + int index[MBEST_STAGES]; /* index of each stage that lead us to this error */ + float error; +}; + +struct MBEST { + int entries; /* number of entries in mbest list */ + struct MBEST_LIST *list; +}; + +struct MBEST *mbest_create(int entries); +void mbest_destroy(struct MBEST *mbest); +void mbest_insert(struct MBEST *mbest, int index[], float error); +void mbest_search(const float *cb, float vec[], float w[], int k, int m, struct MBEST *mbest, int index[]); +void mbest_search450(const float *cb, float vec[], float w[], int k,int shorterK, int m, struct MBEST *mbest, int index[]); + +// #define MBEST_PRINT_OUT +#ifdef MBEST_PRINT_OUT + #define MBEST_PRINT(a,b) mbest_print((a),(b)) +#else + #define MBEST_PRINT(a,b) +#endif + + +#endif diff --git a/newamp1.c b/newamp1.c new file mode 100644 index 0000000..575620a --- /dev/null +++ b/newamp1.c @@ -0,0 +1,625 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: newamp1.c + AUTHOR......: David Rowe + DATE CREATED: Jan 2017 + + Quantisation functions for the sinusoidal coder, using "newamp1" + algorithm that resamples variable rate L [Am} to a fixed rate K then + VQs. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright David Rowe 2017 + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . + +*/ + +#include +#include +#include +#include +#include + +#include "defines.h" +#include "phase.h" +#include "quantise.h" +#include "mbest.h" +#include "newamp1.h" + +#define NEWAMP1_VQ_MBEST_DEPTH 5 /* how many candidates we keep for each stage of mbest search */ + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: interp_para() + AUTHOR......: David Rowe + DATE CREATED: Jan 2017 + + General 2nd order parabolic interpolator. Used splines orginally, + but this is much simpler and we don't need much accuracy. Given two + vectors of points xp and yp, find interpolated values y at points x. + +\*---------------------------------------------------------------------------*/ + +void interp_para(float y[], float xp[], float yp[], int np, float x[], int n) +{ + assert(np >= 3); + + int k,i; + float xi, x1, y1, x2, y2, x3, y3, a, b; + + k = 0; + for (i=0; iL; m++) { + AmdB[m] = 20.0*log10f(model->A[m]+1E-16); + if (AmdB[m] > AmdB_peak) { + AmdB_peak = AmdB[m]; + } + rate_L_sample_freqs_kHz[m] = m*model->Wo*(c2const->Fs/2000.0)/M_PI; + //printf("m: %d AmdB: %f AmdB_peak: %f sf: %f\n", m, AmdB[m], AmdB_peak, rate_L_sample_freqs_kHz[m]); + } + + /* clip between peak and peak -50dB, to reduce dynamic range */ + + for(m=1; m<=model->L; m++) { + if (AmdB[m] < (AmdB_peak-50.0)) { + AmdB[m] = AmdB_peak-50.0; + } + } + + interp_para(rate_K_vec, &rate_L_sample_freqs_kHz[1], &AmdB[1], model->L, rate_K_sample_freqs_kHz, K); +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: rate_K_mbest_encode + AUTHOR......: David Rowe + DATE CREATED: Jan 2017 + + Two stage rate K newamp1 VQ quantiser using mbest search. + +\*---------------------------------------------------------------------------*/ + +float rate_K_mbest_encode(int *indexes, float *x, float *xq, int ndim, int mbest_entries) +{ + int i, j, n1, n2; + const float *codebook1 = newamp1vq_cb[0].cb; + const float *codebook2 = newamp1vq_cb[1].cb; + struct MBEST *mbest_stage1, *mbest_stage2; + float target[ndim]; + float w[ndim]; + int index[MBEST_STAGES]; + float mse, tmp; + + /* codebook is compiled for a fixed K */ + + assert(ndim == newamp1vq_cb[0].k); + + /* equal weights, could be argued mel freq axis gives freq dep weighting */ + + for(i=0; ilist[j].index[0]; + for(i=0; ilist[0].index[1]; + n2 = mbest_stage2->list[0].index[0]; + mse = 0.0; + for (i=0;iL; m++) { + rate_L_sample_freqs_kHz[m] = m*model->Wo*(c2const->Fs/2000.0)/M_PI; + } + + interp_para(&AmdB[1], rate_K_sample_freqs_kHz_term, rate_K_vec_term, K+2, &rate_L_sample_freqs_kHz[1], model->L); + for(m=1; m<=model->L; m++) { + model->A[m] = POW10F(AmdB[m]/20.0); + // printf("m: %d f: %f AdB: %f A: %f\n", m, rate_L_sample_freqs_kHz[m], AmdB[m], model->A[m]); + } +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: determine_phase + AUTHOR......: David Rowe + DATE CREATED: Jan 2017 + + Given a magnitude spectrum determine a phase spectrum, used for + phase synthesis with newamp1. + +\*---------------------------------------------------------------------------*/ + +void determine_phase(C2CONST *c2const, COMP H[], MODEL *model, int Nfft, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg) +{ + int i,m,b; + int Ns = Nfft/2+1; + float Gdbfk[Ns], sample_freqs_kHz[Ns], phase[Ns]; + float AmdB[MAX_AMP+1], rate_L_sample_freqs_kHz[MAX_AMP+1]; + + for(m=1; m<=model->L; m++) { + assert(model->A[m] != 0.0); + AmdB[m] = 20.0*log10f(model->A[m]); + rate_L_sample_freqs_kHz[m] = (float)m*model->Wo*(c2const->Fs/2000.0)/M_PI; + } + + for(i=0; iFs/1000.0)*(float)i/Nfft; + } + + interp_para(Gdbfk, &rate_L_sample_freqs_kHz[1], &AmdB[1], model->L, sample_freqs_kHz, Ns); + mag_to_phase(phase, Gdbfk, Nfft, fwd_cfg, inv_cfg); + + for(m=1; m<=model->L; m++) { + b = floorf(0.5+m*model->Wo*Nfft/(2.0*M_PI)); + H[m].real = cosf(phase[b]); H[m].imag = sinf(phase[b]); + } +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: newamp1_model_to_indexes + AUTHOR......: David Rowe + DATE CREATED: Jan 2017 + + newamp1 encoder for amplitdues {Am}. Given the rate L model + parameters, outputs VQ and energy quantiser indexes. + +\*---------------------------------------------------------------------------*/ + +void newamp1_model_to_indexes(C2CONST *c2const, + int indexes[], + MODEL *model, + float rate_K_vec[], + float rate_K_sample_freqs_kHz[], + int K, + float *mean, + float rate_K_vec_no_mean[], + float rate_K_vec_no_mean_[], + float *se + ) +{ + int k; + + /* convert variable rate L to fixed rate K */ + + resample_const_rate_f(c2const, model, rate_K_vec, rate_K_sample_freqs_kHz, K); + + /* remove mean and two stage VQ */ + + float sum = 0.0; + for(k=0; kvoiced) { + int index = encode_log_Wo(c2const, model->Wo, 6); + if (index == 0) { + index = 1; + } + indexes[3] = index; + } + else { + indexes[3] = 0; + } + + } + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: newamp1_interpolate + AUTHOR......: David Rowe + DATE CREATED: Jan 2017 + +\*---------------------------------------------------------------------------*/ + +void newamp1_interpolate(float interpolated_surface_[], float left_vec[], float right_vec[], int K) +{ + int i, k; + int M = 4; + float c; + + /* (linearly) interpolate 25Hz amplitude vectors back to 100Hz */ + + for(i=0,c=1.0; i. +*/ + +#ifndef __NEWAMP1__ +#define __NEWAMP1__ + +#define NEWAMP1_N_INDEXES 4 /* Number of indexes to pack: vq1, vq2, energy, Wo */ +#define NEWAMP1_PHASE_NFFT 128 /* size of FFT used for phase synthesis */ +#define NEWAMP1_K 20 /* rate K vector length */ + +#include "codec2_fft.h" +#include "comp.h" + +void interp_para(float y[], float xp[], float yp[], int np, float x[], int n); +float ftomel(float fHz); +void mel_sample_freqs_kHz(float rate_K_sample_freqs_kHz[], int K, float mel_start, float mel_end); +void resample_const_rate_f(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K); +float rate_K_mbest_encode(int *indexes, float *x, float *xq, int ndim, int mbest_entries); +void post_filter_newamp1(float vec[], float sample_freq_kHz[], int K, float pf_gain); +void interp_Wo_v(float Wo_[], int L_[], int voicing_[], float Wo1, float Wo2, int voicing1, int voicing2); +void resample_rate_L(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K); +void determine_phase(C2CONST *c2const, COMP H[], MODEL *model, int Nfft, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg); +void newamp1_model_to_indexes(C2CONST *c2const, + int indexes[], + MODEL *model, + float rate_K_vec[], + float rate_K_sample_freqs_kHz[], + int K, + float *mean, + float rate_K_vec_no_mean[], + float rate_K_vec_no_mean_[], + float *se); +void newamp1_indexes_to_rate_K_vec(float rate_K_vec_[], + float rate_K_vec_no_mean_[], + float rate_K_sample_freqs_kHz[], + int K, + float *mean_, + int indexes[], + float user_rate_K_vec_no_mean_[], + int post_filter_en); +void newamp1_interpolate(float interpolated_surface_[], float left_vec[], float right_vec[], int K); + +void newamp1_indexes_to_model(C2CONST *c2const, + MODEL model_[], + COMP H[], + float interpolated_surface_[], + float prev_rate_K_vec_[], + float *Wo_left, + int *voicing_left, + float rate_K_sample_freqs_kHz[], + int K, + codec2_fft_cfg fwd_cfg, + codec2_fft_cfg inv_cfg, + int indexes[], + float user_rate_K_vec_no_mean_[], + int post_filter_en); + +#endif diff --git a/newamp2.c b/newamp2.c new file mode 100644 index 0000000..6550557 --- /dev/null +++ b/newamp2.c @@ -0,0 +1,570 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: newamp2.c + AUTHOR......: Thomas Kurin and Stefan Erhardt + INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg + DATE CREATED: July 2018 + BASED ON....: "newamp1" by David Rowe + + Quantisation functions for the sinusoidal coder, using "newamp1" + algorithm that resamples variable rate L [Am} to a fixed rate K then + VQs. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright David Rowe 2017 + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . + +*/ + +#include +#include +#include +#include +#include + +#include "defines.h" +#include "phase.h" +#include "quantise.h" +#include "mbest.h" +#include "newamp1.h" +#include "newamp2.h" + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: n2_mel_sample_freqs_kHz() + AUTHOR......: Thomas Kurin and Stefan Erhardt + INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg + DATE CREATED: July 2018 + + Outputs fixed frequencies for the K-Vectors to be able to work with both 8k and 16k mode. + +\*---------------------------------------------------------------------------*/ + +void n2_mel_sample_freqs_kHz(float rate_K_sample_freqs_kHz[], int K) +{ + float freq[] = {0.199816, 0.252849, 0.309008, 0.368476, 0.431449, 0.498134, 0.568749, 0.643526, 0.722710, 0.806561, 0.895354, 0.989380, + 1.088948, 1.194384, 1.306034, 1.424264, 1.549463, 1.682041, 1.822432, 1.971098, 2.128525, 2.295232, 2.471763, 2.658699, + 2.856652, 3.066272, 3.288246, 3.523303, 3.772214, 4.035795, 4.314912, 4.610478, 4.923465, 5.254899, 5.605865, 5.977518, + 6.371075, 6.787827, 7.229141, 7.696465}; + int k; + //printf("\n\n"); + for (k=0; kL; m++) { + AmdB[m] = 20.0*log10(model->A[m]+1E-16); + if (AmdB[m] > AmdB_peak) { + AmdB_peak = AmdB[m]; + } + rate_L_sample_freqs_kHz[m] = m*model->Wo*(c2const->Fs/2000.0)/M_PI; + //printf("m: %d AmdB: %f AmdB_peak: %f sf: %f\n", m, AmdB[m], AmdB_peak, rate_L_sample_freqs_kHz[m]); + } + + /* clip between peak and peak -50dB, to reduce dynamic range */ + + for(m=1; m<=model->L; m++) { + if (AmdB[m] < (AmdB_peak-50.0)) { + AmdB[m] = AmdB_peak-50.0; + } + } + + interp_para(rate_K_vec, &rate_L_sample_freqs_kHz[1], &AmdB[1], model->L, rate_K_sample_freqs_kHz, K); +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: n2_rate_K_mbest_encode + AUTHOR......: Thomas Kurin and Stefan Erhardt + INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg + DATE CREATED: July 2018 + + One stage rate K newamp2 VQ quantiser using mbest search. + +\*---------------------------------------------------------------------------*/ + +void n2_rate_K_mbest_encode(int *indexes, float *x, float *xq, int ndim) +{ + int i, n1; + const float *codebook1 = newamp2vq_cb[0].cb; + struct MBEST *mbest_stage1; + float w[ndim]; + int index[1]; + + /* codebook is compiled for a fixed K */ + + //assert(ndim == newamp2vq_cb[0].k); + + /* equal weights, could be argued mel freq axis gives freq dep weighting */ + + for(i=0; ilist[0].index[0]; + + mbest_destroy(mbest_stage1); + + //indexes[1]: legacy from newamp1 + indexes[0] = n1; indexes[1] = n1; + +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: n2_resample_rate_L + AUTHOR......: Thomas Kurin and Stefan Erhardt + INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg + DATE CREATED: July 2018 + + Decoder side conversion of rate K vector back to rate L. + Plosives are set to zero for the first 2 of 4 frames. + +\*---------------------------------------------------------------------------*/ + +void n2_resample_rate_L(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K,int plosive_flag) +{ + float rate_K_vec_term[K+2], rate_K_sample_freqs_kHz_term[K+2]; + float AmdB[MAX_AMP+1], rate_L_sample_freqs_kHz[MAX_AMP+1]; + int m,k; + + /* terminate either end of the rate K vecs with 0dB points */ + + rate_K_vec_term[0] = rate_K_vec_term[K+1] = 0.0; + rate_K_sample_freqs_kHz_term[0] = 0.0; + rate_K_sample_freqs_kHz_term[K+1] = 4.0; + + for(k=0; kL; m++) { + rate_L_sample_freqs_kHz[m] = m*model->Wo*(c2const->Fs/2000.0)/M_PI; + } + + interp_para(&AmdB[1], rate_K_sample_freqs_kHz_term, rate_K_vec_term, K+2, &rate_L_sample_freqs_kHz[1], model->L); + for(m=1; m<=model->L; m++) { + if(plosive_flag==0){ + model->A[m] = pow(10.0, AmdB[m]/20.0); + }else{ + model->A[m] = 0.1; + } + // printf("m: %d f: %f AdB: %f A: %f\n", m, rate_L_sample_freqs_kHz[m], AmdB[m], model->A[m]); + } +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: n2_post_filter_newamp2 + AUTHOR......: Thomas Kurin and Stefan Erhardt + INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg + DATE CREATED: July 2018 + + Postfilter for the pseudo wideband mode. Still has to be adapted! + +\*---------------------------------------------------------------------------*/ + +void n2_post_filter_newamp2(float vec[], float sample_freq_kHz[], int K, float pf_gain) +{ + int k; + + /* + vec is rate K vector describing spectrum of current frame lets + pre-emp before applying PF. 20dB/dec over 300Hz. Postfilter + affects energy of frame so we measure energy before and after + and normalise. Plenty of room for experiment here as well. + */ + + float pre[K]; + float e_before = 0.0; + float e_after = 0.0; + for(k=0; kvoiced) { + int index = encode_log_Wo(c2const, model->Wo, 6); + if (index == 0) { + index = 1; + } + if (index == 63) { + index = 62; + } + indexes[3] = index; + } + else { + indexes[3] = 0; + } + if(plosive != 0){ + indexes[3] = 63; + } + } + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: newamp2_indexes_to_rate_K_vec + AUTHOR......: Thomas Kurin and Stefan Erhardt + INSTITUTE...: Institute for Electronics Engineering, University of Erlangen-Nuremberg + DATE CREATED: July 2018 + + newamp2 decoder for amplitudes {Am}. Given the rate K VQ and energy + indexes, outputs rate K vector. Equal to newamp1 but using only one stage VQ. + +\*---------------------------------------------------------------------------*/ + +void newamp2_indexes_to_rate_K_vec(float rate_K_vec_[], + float rate_K_vec_no_mean_[], + float rate_K_sample_freqs_kHz[], + int K, + float *mean_, + int indexes[], + float pf_gain) +{ + int k; + const float *codebook1 = newamp2vq_cb[0].cb; + int n1 = indexes[0]; + + for(k=0; kmean2) + +\*---------------------------------------------------------------------------*/ + +void newamp2_16k_indexes_to_rate_K_vec(float rate_K_vec_[], + float rate_K_vec_no_mean_[], + float rate_K_sample_freqs_kHz[], + int K, + float *mean_, + int indexes[], + float pf_gain) +{ + int k; + const float *codebook1 = newamp2vq_cb[0].cb; + float mean2 = 0; + int n1 = indexes[0]; + + for(k=0; k50){ + mean2 = 50; + } + + for(k=0; k0 && indexes[3]<63) { + Wo_right = decode_log_Wo(c2const, indexes[3], 6); + voicing_right = 1; + } + //Unvoiced + else if(indexes[3] == 0){ + Wo_right = 2.0*M_PI/100.0; + voicing_right = 0; + } + //indexes[3]=63 (= Plosive) and unvoiced + else { + Wo_right = 2.0*M_PI/100.0; + voicing_right = 0; + plosive_flag = 1; + } + + /* interpolate 25Hz rate K vec back to 100Hz */ + + float *left_vec = prev_rate_K_vec_; + float *right_vec = rate_K_vec_; + newamp2_interpolate(interpolated_surface_, left_vec, right_vec, K,plosive_flag); + + /* interpolate 25Hz v and Wo back to 100Hz */ + + float aWo_[M]; + int avoicing_[M], aL_[M], i; + + interp_Wo_v(aWo_, aL_, avoicing_, *Wo_left, Wo_right, *voicing_left, voicing_right); + + /* back to rate L amplitudes, synthesis phase for each frame */ + + for(i=0; i0){ + //First two frames are set to zero + if (i<2){ + n2_resample_rate_L(c2const, &model_[i], &interpolated_surface_[K*i], rate_K_sample_freqs_kHz, K,1); + } + else{ + n2_resample_rate_L(c2const, &model_[i], &interpolated_surface_[K*i], rate_K_sample_freqs_kHz, K,0); + } + } + //No Plosive, standard resample + else{ + n2_resample_rate_L(c2const, &model_[i], &interpolated_surface_[K*i], rate_K_sample_freqs_kHz, K,0); + } + determine_phase(c2const, &H[(MAX_AMP+1)*i], &model_[i], NEWAMP2_PHASE_NFFT, fwd_cfg, inv_cfg); + } + + /* update memories for next time */ + + for(k=0; k. +*/ + +#ifndef __NEWAMP2__ +#define __NEWAMP2__ + +#define NEWAMP2_N_INDEXES 4 /* Number of indexes to pack: vq1, vq2, energy, Wo */ +#define NEWAMP2_PHASE_NFFT 128 /* size of FFT used for phase synthesis */ +#define NEWAMP2_K 29 /* rate K vector length */ +#define NEWAMP2_16K_K 40 /* rate K vector length for 16k Mode */ + +#include "codec2_fft.h" +#include "comp.h" + +void n2_mel_sample_freqs_kHz(float rate_K_sample_freqs_kHz[], int K); +void n2_resample_const_rate_f(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K); +void n2_rate_K_mbest_encode(int *indexes, float *x, float *xq, int ndim); +void n2_resample_rate_L(C2CONST *c2const, MODEL *model, float rate_K_vec[], float rate_K_sample_freqs_kHz[], int K,int plosive_flag); +void n2_post_filter_newamp2(float vec[], float sample_freq_kHz[], int K, float pf_gain); +void newamp2_interpolate(float interpolated_surface_[], float left_vec[], float right_vec[], int K,int plosive_flag); +void newamp2_model_to_indexes(C2CONST *c2const, + int indexes[], + MODEL *model, + float rate_K_vec[], + float rate_K_sample_freqs_kHz[], + int K, + float *mean, + float rate_K_vec_no_mean[], + float rate_K_vec_no_mean_[], + int plosiv + ); +void newamp2_indexes_to_rate_K_vec(float rate_K_vec_[], + float rate_K_vec_no_mean_[], + float rate_K_sample_freqs_kHz[], + int K, + float *mean_, + int indexes[], + float pf_gain); +void newamp2_16k_indexes_to_rate_K_vec(float rate_K_vec_[], + float rate_K_vec_no_mean_[], + float rate_K_sample_freqs_kHz[], + int K, + float *mean_, + int indexes[], + float pf_gain); +void newamp2_indexes_to_model(C2CONST *c2const, + MODEL model_[], + COMP H[], + float interpolated_surface_[], + float prev_rate_K_vec_[], + float *Wo_left, + int *voicing_left, + float rate_K_sample_freqs_kHz[], + int K, + codec2_fft_cfg fwd_cfg, + codec2_fft_cfg inv_cfg, + int indexes[], + float pf_gain, + int flag16k); + +#endif diff --git a/nlp.c b/nlp.c new file mode 100644 index 0000000..8c8d5f1 --- /dev/null +++ b/nlp.c @@ -0,0 +1,702 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: nlp.c + AUTHOR......: David Rowe + DATE CREATED: 23/3/93 + + Non Linear Pitch (NLP) estimation functions. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2009 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#include "defines.h" +#include "nlp.h" +#include "dump.h" +#include "codec2_fft.h" +#undef PROFILE +#include "machdep.h" +#include "os.h" + +#include +#include +#include + +/*---------------------------------------------------------------------------*\ + + DEFINES + +\*---------------------------------------------------------------------------*/ + +#define PMAX_M 320 /* maximum NLP analysis window size */ +#define COEFF 0.95 /* notch filter parameter */ +#define PE_FFT_SIZE 512 /* DFT size for pitch estimation */ +#define DEC 5 /* decimation factor */ +#define SAMPLE_RATE 8000 +#define PI 3.141592654 /* mathematical constant */ +#define T 0.1 /* threshold for local minima candidate */ +#define F0_MAX 500 +#define CNLP 0.3 /* post processor constant */ +#define NLP_NTAP 48 /* Decimation LPF order */ +#undef POST_PROCESS_MBE /* choose post processor */ + +/* 8 to 16 kHz sample rate conversion */ + +#define FDMDV_OS 2 /* oversampling rate */ +#define FDMDV_OS_TAPS_16K 48 /* number of OS filter taps at 16kHz */ +#define FDMDV_OS_TAPS_8K (FDMDV_OS_TAPS_16K/FDMDV_OS) /* number of OS filter taps at 8kHz */ + +/*---------------------------------------------------------------------------*\ + + GLOBALS + +\*---------------------------------------------------------------------------*/ + +/* 48 tap 600Hz low pass FIR filter coefficients */ + +const float nlp_fir[] = { + -1.0818124e-03, + -1.1008344e-03, + -9.2768838e-04, + -4.2289438e-04, + 5.5034190e-04, + 2.0029849e-03, + 3.7058509e-03, + 5.1449415e-03, + 5.5924666e-03, + 4.3036754e-03, + 8.0284511e-04, + -4.8204610e-03, + -1.1705810e-02, + -1.8199275e-02, + -2.2065282e-02, + -2.0920610e-02, + -1.2808831e-02, + 3.2204775e-03, + 2.6683811e-02, + 5.5520624e-02, + 8.6305944e-02, + 1.1480192e-01, + 1.3674206e-01, + 1.4867556e-01, + 1.4867556e-01, + 1.3674206e-01, + 1.1480192e-01, + 8.6305944e-02, + 5.5520624e-02, + 2.6683811e-02, + 3.2204775e-03, + -1.2808831e-02, + -2.0920610e-02, + -2.2065282e-02, + -1.8199275e-02, + -1.1705810e-02, + -4.8204610e-03, + 8.0284511e-04, + 4.3036754e-03, + 5.5924666e-03, + 5.1449415e-03, + 3.7058509e-03, + 2.0029849e-03, + 5.5034190e-04, + -4.2289438e-04, + -9.2768838e-04, + -1.1008344e-03, + -1.0818124e-03 +}; + +typedef struct { + int Fs; /* sample rate in Hz */ + int m; + float w[PMAX_M/DEC]; /* DFT window */ + float sq[PMAX_M]; /* squared speech samples */ + float mem_x,mem_y; /* memory for notch filter */ + float mem_fir[NLP_NTAP]; /* decimation FIR filter memory */ + codec2_fft_cfg fft_cfg; /* kiss FFT config */ + float *Sn16k; /* Fs=16kHz input speech vector */ + FILE *f; +} NLP; + +#ifdef POST_PROCESS_MBE +float test_candidate_mbe(COMP Sw[], COMP W[], float f0); +float post_process_mbe(COMP Fw[], int pmin, int pmax, float gmax, COMP Sw[], COMP W[], float *prev_Wo); +#endif +float post_process_sub_multiples(COMP Fw[], + int pmin, int pmax, float gmax, int gmax_bin, + float *prev_f0); +static void fdmdv_16_to_8(float out8k[], float in16k[], int n); + +/*---------------------------------------------------------------------------*\ + + nlp_create() + + Initialisation function for NLP pitch estimator. + +\*---------------------------------------------------------------------------*/ + +void *nlp_create(C2CONST *c2const) +{ + NLP *nlp; + int i; + int m = c2const->m_pitch; + int Fs = c2const->Fs; + + nlp = (NLP*)malloc(sizeof(NLP)); + if (nlp == NULL) + return NULL; + + assert((Fs == 8000) || (Fs == 16000)); + nlp->Fs = Fs; + + nlp->m = m; + + /* if running at 16kHz allocate storage for decimating filter memory */ + + if (Fs == 16000) { + nlp->Sn16k = (float*)malloc(sizeof(float)*(FDMDV_OS_TAPS_16K + c2const->n_samp)); + for(i=0; iSn16k[i] = 0.0; + } + if (nlp->Sn16k == NULL) { + free(nlp); + return NULL; + } + + /* most processing occurs at 8 kHz sample rate so halve m */ + + m /= 2; + } + + assert(m <= PMAX_M); + + for(i=0; iw[i] = 0.5 - 0.5*cosf(2*PI*i/(m/DEC-1)); + } + + for(i=0; isq[i] = 0.0; + nlp->mem_x = 0.0; + nlp->mem_y = 0.0; + for(i=0; imem_fir[i] = 0.0; + + nlp->fft_cfg = codec2_fft_alloc (PE_FFT_SIZE, 0, NULL, NULL); + assert(nlp->fft_cfg != NULL); + + return (void*)nlp; +} + +/*---------------------------------------------------------------------------*\ + + nlp_destroy() + + Shut down function for NLP pitch estimator. + +\*---------------------------------------------------------------------------*/ + +void nlp_destroy(void *nlp_state) +{ + NLP *nlp; + assert(nlp_state != NULL); + nlp = (NLP*)nlp_state; + + codec2_fft_free(nlp->fft_cfg); + if (nlp->Fs == 16000) { + free(nlp->Sn16k); + } + free(nlp_state); +} + +/*---------------------------------------------------------------------------*\ + + nlp() + + Determines the pitch in samples using the Non Linear Pitch (NLP) + algorithm [1]. Returns the fundamental in Hz. Note that the actual + pitch estimate is for the centre of the M sample Sn[] vector, not + the current N sample input vector. This is (I think) a delay of 2.5 + frames with N=80 samples. You should align further analysis using + this pitch estimate to be centred on the middle of Sn[]. + + Two post processors have been tried, the MBE version (as discussed + in [1]), and a post processor that checks sub-multiples. Both + suffer occasional gross pitch errors (i.e. neither are perfect). In + the presence of background noise the sub-multiple algorithm tends + towards low F0 which leads to better sounding background noise than + the MBE post processor. + + A good way to test and develop the NLP pitch estimator is using the + tnlp (codec2/unittest) and the codec2/octave/plnlp.m Octave script. + + A pitch tracker searching a few frames forward and backward in time + would be a useful addition. + + References: + + [1] http://rowetel.com/downloads/1997_rowe_phd_thesis.pdf Chapter 4 + +\*---------------------------------------------------------------------------*/ + +float nlp( + void *nlp_state, + float Sn[], /* input speech vector */ + int n, /* frames shift (no. new samples in Sn[]) */ + float *pitch, /* estimated pitch period in samples at current Fs */ + COMP Sw[], /* Freq domain version of Sn[] */ + COMP W[], /* Freq domain window */ + float *prev_f0 /* previous pitch f0 in Hz, memory for pitch tracking */ +) +{ + NLP *nlp; + float notch; /* current notch filter output */ + COMP Fw[PE_FFT_SIZE]; /* DFT of squared signal (input/output) */ + float gmax; + int gmax_bin; + int m, i, j; + float best_f0; + PROFILE_VAR(start, tnotch, filter, peakpick, window, fft, magsq, shiftmem); + + assert(nlp_state != NULL); + nlp = (NLP*)nlp_state; + m = nlp->m; + + /* Square, notch filter at DC, and LP filter vector */ + + /* If running at 16 kHz decimate to 8 kHz, as NLP ws designed for + Fs = 8kHz. The decimating filter introduces about 3ms of delay, + that shouldn't be a problem as pitch changes slowly. */ + + if (nlp->Fs == 8000) { + /* Square latest input samples */ + + for(i=m-n; isq[i] = Sn[i]*Sn[i]; + } + } + else { + assert(nlp->Fs == 16000); + + /* re-sample at 8 KHz */ + + for(i=0; iSn16k[FDMDV_OS_TAPS_16K+i] = Sn[m-n+i]; + } + + m /= 2; n /= 2; + + float Sn8k[n]; + fdmdv_16_to_8(Sn8k, &nlp->Sn16k[FDMDV_OS_TAPS_16K], n); + + /* Square latest input samples */ + + for(i=m-n, j=0; isq[i] = Sn8k[j]*Sn8k[j]; + } + assert(j <= n); + } + //fprintf(stderr, "n: %d m: %d\n", n, m); + + PROFILE_SAMPLE(start); + + for(i=m-n; isq[i] - nlp->mem_x; + notch += COEFF*nlp->mem_y; + nlp->mem_x = nlp->sq[i]; + nlp->mem_y = notch; + nlp->sq[i] = notch + 1.0; /* With 0 input vectors to codec, + kiss_fft() would take a long + time to execute when running in + real time. Problem was traced + to kiss_fft function call in + this function. Adding this small + constant fixed problem. Not + exactly sure why. */ + } + + PROFILE_SAMPLE_AND_LOG(tnotch, start, " square and notch"); + + for(i=m-n; imem_fir[j] = nlp->mem_fir[j+1]; + nlp->mem_fir[NLP_NTAP-1] = nlp->sq[i]; + + nlp->sq[i] = 0.0; + for(j=0; jsq[i] += nlp->mem_fir[j]*nlp_fir[j]; + } + + PROFILE_SAMPLE_AND_LOG(filter, tnotch, " filter"); + + /* Decimate and DFT */ + + for(i=0; isq[i*DEC]*nlp->w[i]; + } + PROFILE_SAMPLE_AND_LOG(window, filter, " window"); + #ifdef DUMP + dump_dec(Fw); + #endif + + // FIXME: check if this can be converted to a real fft + // since all imag inputs are 0 + codec2_fft_inplace(nlp->fft_cfg, Fw); + PROFILE_SAMPLE_AND_LOG(fft, window, " fft"); + + for(i=0; isq); + dump_Fw(Fw); + #endif + + /* todo: express everything in f0, as pitch in samples is dep on Fs */ + + int pmin = floor(SAMPLE_RATE*P_MIN_S); + int pmax = floor(SAMPLE_RATE*P_MAX_S); + + /* find global peak */ + + gmax = 0.0; + gmax_bin = PE_FFT_SIZE*DEC/pmax; + for(i=PE_FFT_SIZE*DEC/pmax; i<=PE_FFT_SIZE*DEC/pmin; i++) { + if (Fw[i].real > gmax) { + gmax = Fw[i].real; + gmax_bin = i; + } + } + + PROFILE_SAMPLE_AND_LOG(peakpick, magsq, " peak pick"); + + #ifdef POST_PROCESS_MBE + best_f0 = post_process_mbe(Fw, pmin, pmax, gmax, Sw, W, prev_f0); + #else + best_f0 = post_process_sub_multiples(Fw, pmin, pmax, gmax, gmax_bin, prev_f0); + #endif + + PROFILE_SAMPLE_AND_LOG(shiftmem, peakpick, " post process"); + + /* Shift samples in buffer to make room for new samples */ + + for(i=0; isq[i] = nlp->sq[i+n]; + + /* return pitch period in samples and F0 estimate */ + + *pitch = (float)nlp->Fs/best_f0; + + PROFILE_SAMPLE_AND_LOG2(shiftmem, " shift mem"); + + PROFILE_SAMPLE_AND_LOG2(start, " nlp int"); + + *prev_f0 = best_f0; + + return(best_f0); +} + +/*---------------------------------------------------------------------------*\ + + post_process_sub_multiples() + + Given the global maximma of Fw[] we search integer submultiples for + local maxima. If local maxima exist and they are above an + experimentally derived threshold (OK a magic number I pulled out of + the air) we choose the submultiple as the F0 estimate. + + The rational for this is that the lowest frequency peak of Fw[] + should be F0, as Fw[] can be considered the autocorrelation function + of Sw[] (the speech spectrum). However sometimes due to phase + effects the lowest frequency maxima may not be the global maxima. + + This works OK in practice and favours low F0 values in the presence + of background noise which means the sinusoidal codec does an OK job + of synthesising the background noise. High F0 in background noise + tends to sound more periodic introducing annoying artifacts. + +\*---------------------------------------------------------------------------*/ + +float post_process_sub_multiples(COMP Fw[], + int pmin, int pmax, float gmax, int gmax_bin, + float *prev_f0) +{ + int min_bin, cmax_bin; + int mult; + float thresh, best_f0; + int b, bmin, bmax, lmax_bin; + float lmax; + int prev_f0_bin; + + /* post process estimate by searching submultiples */ + + mult = 2; + min_bin = PE_FFT_SIZE*DEC/pmax; + cmax_bin = gmax_bin; + prev_f0_bin = *prev_f0*(PE_FFT_SIZE*DEC)/SAMPLE_RATE; + + while(gmax_bin/mult >= min_bin) { + + b = gmax_bin/mult; /* determine search interval */ + bmin = 0.8*b; + bmax = 1.2*b; + if (bmin < min_bin) + bmin = min_bin; + + /* lower threshold to favour previous frames pitch estimate, + this is a form of pitch tracking */ + + if ((prev_f0_bin > bmin) && (prev_f0_bin < bmax)) + thresh = CNLP*0.5*gmax; + else + thresh = CNLP*gmax; + + lmax = 0; + lmax_bin = bmin; + for (b=bmin; b<=bmax; b++) /* look for maximum in interval */ + if (Fw[b].real > lmax) { + lmax = Fw[b].real; + lmax_bin = b; + } + + if (lmax > thresh) + if ((lmax > Fw[lmax_bin-1].real) && (lmax > Fw[lmax_bin+1].real)) { + cmax_bin = lmax_bin; + } + + mult++; + } + + best_f0 = (float)cmax_bin*SAMPLE_RATE/(PE_FFT_SIZE*DEC); + + return best_f0; +} + +#ifdef POST_PROCESS_MBE + +/*---------------------------------------------------------------------------*\ + + post_process_mbe() + + Use the MBE pitch estimation algorithm to evaluate pitch candidates. This + works OK but the accuracy at low F0 is affected by NW, the analysis window + size used for the DFT of the input speech Sw[]. Also favours high F0 in + the presence of background noise which causes periodic artifacts in the + synthesised speech. + +\*---------------------------------------------------------------------------*/ + +float post_process_mbe(COMP Fw[], int pmin, int pmax, float gmax, COMP Sw[], COMP W[], float *prev_Wo) +{ + float candidate_f0; + float f0,best_f0; /* fundamental frequency */ + float e,e_min; /* MBE cost function */ + int i; + #ifdef DUMP + float e_hz[F0_MAX]; + #endif + #if !defined(NDEBUG) || defined(DUMP) + int bin; + #endif + float f0_min, f0_max; + float f0_start, f0_end; + + f0_min = (float)SAMPLE_RATE/pmax; + f0_max = (float)SAMPLE_RATE/pmin; + + /* Now look for local maxima. Each local maxima is a candidate + that we test using the MBE pitch estimation algotithm */ + + #ifdef DUMP + for(i=0; i Fw[i-1].real) && (Fw[i].real > Fw[i+1].real)) { + + /* local maxima found, lets test if it's big enough */ + + if (Fw[i].real > T*gmax) { + + /* OK, sample MBE cost function over +/- 10Hz range in 2.5Hz steps */ + + candidate_f0 = (float)i*SAMPLE_RATE/(PE_FFT_SIZE*DEC); + f0_start = candidate_f0-20; + f0_end = candidate_f0+20; + if (f0_start < f0_min) f0_start = f0_min; + if (f0_end > f0_max) f0_end = f0_max; + + for(f0=f0_start; f0<=f0_end; f0+= 2.5) { + e = test_candidate_mbe(Sw, W, f0); + #if !defined(NDEBUG) || defined(DUMP) + bin = floorf(f0); assert((bin > 0) && (bin < F0_MAX)); + #endif + #ifdef DUMP + e_hz[bin] = e; + #endif + if (e < e_min) { + e_min = e; + best_f0 = f0; + } + } + + } + } + } + + /* finally sample MBE cost function around previous pitch estimate + (form of pitch tracking) */ + + candidate_f0 = *prev_Wo * SAMPLE_RATE/TWO_PI; + f0_start = candidate_f0-20; + f0_end = candidate_f0+20; + if (f0_start < f0_min) f0_start = f0_min; + if (f0_end > f0_max) f0_end = f0_max; + + for(f0=f0_start; f0<=f0_end; f0+= 2.5) { + e = test_candidate_mbe(Sw, W, f0); + #if !defined(NDEBUG) || defined(DUMP) + bin = floorf(f0); assert((bin > 0) && (bin < F0_MAX)); + #endif + #ifdef DUMP + e_hz[bin] = e; + #endif + if (e < e_min) { + e_min = e; + best_f0 = f0; + } + } + + #ifdef DUMP + dump_e(e_hz); + #endif + + return best_f0; +} + +/*---------------------------------------------------------------------------*\ + + test_candidate_mbe() + + Returns the error of the MBE cost function for the input f0. + + Note: I think a lot of the operations below can be simplified as + W[].imag = 0 and has been normalised such that den always equals 1. + +\*---------------------------------------------------------------------------*/ + +float test_candidate_mbe( + COMP Sw[], + COMP W[], + float f0 +) +{ + COMP Sw_[FFT_ENC]; /* DFT of all voiced synthesised signal */ + int l,al,bl,m; /* loop variables */ + COMP Am; /* amplitude sample for this band */ + int offset; /* centers Hw[] about current harmonic */ + float den; /* denominator of Am expression */ + float error; /* accumulated error between originl and synthesised */ + float Wo; /* current "test" fundamental freq. */ + int L; + + L = floorf((SAMPLE_RATE/2.0)/f0); + Wo = f0*(2*PI/SAMPLE_RATE); + + error = 0.0; + + /* Just test across the harmonics in the first 1000 Hz (L/4) */ + + for(l=1; l. +*/ + +#ifndef __NLP__ +#define __NLP__ + +#include "comp.h" + +void *nlp_create(C2CONST *c2const); +void nlp_destroy(void *nlp_state); +float nlp(void *nlp_state, float Sn[], int n, + float *pitch_samples, COMP Sw[], COMP W[], float *prev_f0); + +#endif diff --git a/os.h b/os.h new file mode 100644 index 0000000..14b4713 --- /dev/null +++ b/os.h @@ -0,0 +1,53 @@ +/* Generate using fir1(47,1/2) in Octave */ + +static const float fdmdv_os_filter[]= { + -0.0008215855034550382, + -0.0007833023901802921, + 0.001075563790768233, + 0.001199092367787555, + -0.001765309502928316, + -0.002055372115328064, + 0.002986877604154257, + 0.003462567920638414, + -0.004856570111126334, + -0.005563143845031497, + 0.007533613299748122, + 0.008563932468880897, + -0.01126857129039911, + -0.01280782411693687, + 0.01651443896361847, + 0.01894875110322284, + -0.02421604439474981, + -0.02845107338464062, + 0.03672973563400258, + 0.04542046150312214, + -0.06189165826716491, + -0.08721876380763803, + 0.1496157094199961, + 0.4497962274137046, + 0.4497962274137046, + 0.1496157094199961, + -0.08721876380763803, + -0.0618916582671649, + 0.04542046150312216, + 0.03672973563400257, + -0.02845107338464062, + -0.02421604439474984, + 0.01894875110322284, + 0.01651443896361848, + -0.01280782411693687, + -0.0112685712903991, + 0.008563932468880899, + 0.007533613299748123, + -0.005563143845031501, + -0.004856570111126346, + 0.003462567920638419, + 0.002986877604154259, + -0.002055372115328063, + -0.001765309502928318, + 0.001199092367787557, + 0.001075563790768233, + -0.0007833023901802925, + -0.0008215855034550383 +}; + diff --git a/pack.c b/pack.c new file mode 100644 index 0000000..1c07230 --- /dev/null +++ b/pack.c @@ -0,0 +1,140 @@ +/* + Copyright (C) 2010 Perens LLC + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#include "defines.h" +#include "quantise.h" +#include + +/* Compile-time constants */ +/* Size of unsigned char in bits. Assumes 8 bits-per-char. */ +static const unsigned int WordSize = 8; + +/* Mask to pick the bit component out of bitIndex. */ +static const unsigned int IndexMask = 0x7; + +/* Used to pick the word component out of bitIndex. */ +static const unsigned int ShiftRight = 3; + +/** Pack a bit field into a bit string, encoding the field in Gray code. + * + * The output is an array of unsigned char data. The fields are efficiently + * packed into the bit string. The Gray coding is a naive attempt to reduce + * the effect of single-bit errors, we expect to do a better job as the + * codec develops. + * + * This code would be simpler if it just set one bit at a time in the string, + * but would hit the same cache line more often. I'm not sure the complexity + * gains us anything here. + * + * Although field is currently of int type rather than unsigned for + * compatibility with the rest of the code, indices are always expected to + * be >= 0. + */ +void +pack( + unsigned char * bitArray, /* The output bit string. */ + unsigned int * bitIndex, /* Index into the string in BITS, not bytes.*/ + int field, /* The bit field to be packed. */ + unsigned int fieldWidth/* Width of the field in BITS, not bytes. */ + ) +{ + pack_natural_or_gray(bitArray, bitIndex, field, fieldWidth, 1); +} + +void +pack_natural_or_gray( + unsigned char * bitArray, /* The output bit string. */ + unsigned int * bitIndex, /* Index into the string in BITS, not bytes.*/ + int field, /* The bit field to be packed. */ + unsigned int fieldWidth,/* Width of the field in BITS, not bytes. */ + unsigned int gray /* non-zero for gray coding */ + ) +{ + if (gray) { + /* Convert the field to Gray code */ + field = (field >> 1) ^ field; + } + + do { + unsigned int bI = *bitIndex; + unsigned int bitsLeft = WordSize - (bI & IndexMask); + unsigned int sliceWidth = + bitsLeft < fieldWidth ? bitsLeft : fieldWidth; + unsigned int wordIndex = bI >> ShiftRight; + + bitArray[wordIndex] |= + ((unsigned char)((field >> (fieldWidth - sliceWidth)) + << (bitsLeft - sliceWidth))); + + *bitIndex = bI + sliceWidth; + fieldWidth -= sliceWidth; + } while ( fieldWidth != 0 ); +} + +/** Unpack a field from a bit string, converting from Gray code to binary. + * + */ +int +unpack( + const unsigned char * bitArray, /* The input bit string. */ + unsigned int * bitIndex, /* Index into the string in BITS, not bytes.*/ + unsigned int fieldWidth/* Width of the field in BITS, not bytes. */ + ) +{ + return unpack_natural_or_gray(bitArray, bitIndex, fieldWidth, 1); +} + +/** Unpack a field from a bit string, to binary, optionally using + * natural or Gray code. + * + */ +int +unpack_natural_or_gray( + const unsigned char * bitArray, /* The input bit string. */ + unsigned int * bitIndex, /* Index into the string in BITS, not bytes.*/ + unsigned int fieldWidth,/* Width of the field in BITS, not bytes. */ + unsigned int gray /* non-zero for Gray coding */ + ) +{ + unsigned int field = 0; + unsigned int t; + + do { + unsigned int bI = *bitIndex; + unsigned int bitsLeft = WordSize - (bI & IndexMask); + unsigned int sliceWidth = + bitsLeft < fieldWidth ? bitsLeft : fieldWidth; + + field |= (((bitArray[bI >> ShiftRight] >> (bitsLeft - sliceWidth)) & ((1 << sliceWidth) - 1)) << (fieldWidth - sliceWidth)); + + *bitIndex = bI + sliceWidth; + fieldWidth -= sliceWidth; + } while ( fieldWidth != 0 ); + + if (gray) { + /* Convert from Gray code to binary. Works for maximum 8-bit fields. */ + t = field ^ (field >> 8); + t ^= (t >> 4); + t ^= (t >> 2); + t ^= (t >> 1); + } + else { + t = field; + } + + return t; +} diff --git a/phase.c b/phase.c new file mode 100644 index 0000000..e486613 --- /dev/null +++ b/phase.c @@ -0,0 +1,289 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: phase.c + AUTHOR......: David Rowe + DATE CREATED: 1/2/09 + + Functions for modelling and synthesising phase. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2009 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not,see . +*/ + +#include "defines.h" +#include "phase.h" +#include "kiss_fft.h" +#include "comp.h" +#include "comp_prim.h" +#include "sine.h" + +#include +#include +#include +#include +#include + +/*---------------------------------------------------------------------------*\ + + sample_phase() + + Samples phase at centre of each harmonic from and array of FFT_ENC + DFT samples. + +\*---------------------------------------------------------------------------*/ + +void sample_phase(MODEL *model, + COMP H[], + COMP A[] /* LPC analysis filter in freq domain */ + ) +{ + int m, b; + float r; + + r = TWO_PI/(FFT_ENC); + + /* Sample phase at harmonics */ + + for(m=1; m<=model->L; m++) { + b = (int)(m*model->Wo/r + 0.5); + H[m] = cconj(A[b]); /* synth filter 1/A is opposite phase to analysis filter */ + } +} + + +/*---------------------------------------------------------------------------*\ + + phase_synth_zero_order() + + Synthesises phases based on SNR and a rule based approach. No phase + parameters are required apart from the SNR (which can be reduced to a + 1 bit V/UV decision per frame). + + The phase of each harmonic is modelled as the phase of a synthesis + filter excited by an impulse. In many Codec 2 modes the synthesis + filter is a LPC filter. Unlike the first order model the position + of the impulse is not transmitted, so we create an excitation pulse + train using a rule based approach. + + Consider a pulse train with a pulse starting time n=0, with pulses + repeated at a rate of Wo, the fundamental frequency. A pulse train + in the time domain is equivalent to harmonics in the frequency + domain. We can make an excitation pulse train using a sum of + sinsusoids: + + for(m=1; m<=L; m++) + ex[n] = cos(m*Wo*n) + + Note: the Octave script ../octave/phase.m is an example of this if + you would like to try making a pulse train. + + The phase of each excitation harmonic is: + + arg(E[m]) = mWo + + where E[m] are the complex excitation (freq domain) samples, + arg(x), just returns the phase of a complex sample x. + + As we don't transmit the pulse position for this model, we need to + synthesise it. Now the excitation pulses occur at a rate of Wo. + This means the phase of the first harmonic advances by N_SAMP samples + over a synthesis frame of N_SAMP samples. For example if Wo is pi/20 + (200 Hz), then over a 10ms frame (N_SAMP=80 samples), the phase of the + first harmonic would advance (pi/20)*80 = 4*pi or two complete + cycles. + + We generate the excitation phase of the fundamental (first + harmonic): + + arg[E[1]] = Wo*N_SAMP; + + We then relate the phase of the m-th excitation harmonic to the + phase of the fundamental as: + + arg(E[m]) = m*arg(E[1]) + + This E[m] then gets passed through the LPC synthesis filter to + determine the final harmonic phase. + + Comparing to speech synthesised using original phases: + + - Through headphones speech synthesised with this model is not as + good. Through a loudspeaker it is very close to original phases. + + - If there are voicing errors, the speech can sound clicky or + staticy. If V speech is mistakenly declared UV, this model tends to + synthesise impulses or clicks, as there is usually very little shift or + dispersion through the LPC synthesis filter. + + - When combined with LPC amplitude modelling there is an additional + drop in quality. I am not sure why, theory is interformant energy + is raised making any phase errors more obvious. + + NOTES: + + 1/ This synthesis model is effectively the same as a simple LPC-10 + vocoders, and yet sounds much better. Why? Conventional wisdom + (AMBE, MELP) says mixed voicing is required for high quality + speech. + + 2/ I am pretty sure the Lincoln Lab sinusoidal coding guys (like xMBE + also from MIT) first described this zero phase model, I need to look + up the paper. + + 3/ Note that this approach could cause some discontinuities in + the phase at the edge of synthesis frames, as no attempt is made + to make sure that the phase tracks are continuous (the excitation + phases are continuous, but not the final phases after filtering + by the LPC spectra). Technically this is a bad thing. However + this may actually be a good thing, disturbing the phase tracks a + bit. More research needed, e.g. test a synthesis model that adds + a small delta-W to make phase tracks line up for voiced + harmonics. + +\*---------------------------------------------------------------------------*/ + +void phase_synth_zero_order( + int n_samp, + MODEL *model, + float *ex_phase, /* excitation phase of fundamental */ + COMP H[] /* L synthesis filter freq domain samples */ + +) +{ + int m; + float new_phi; + COMP Ex[MAX_AMP+1]; /* excitation samples */ + COMP A_[MAX_AMP+1]; /* synthesised harmonic samples */ + + /* + Update excitation fundamental phase track, this sets the position + of each pitch pulse during voiced speech. After much experiment + I found that using just this frame's Wo improved quality for UV + sounds compared to interpolating two frames Wo like this: + + ex_phase[0] += (*prev_Wo+model->Wo)*N_SAMP/2; + */ + + ex_phase[0] += (model->Wo)*n_samp; + ex_phase[0] -= TWO_PI*floorf(ex_phase[0]/TWO_PI + 0.5); + + for(m=1; m<=model->L; m++) { + + /* generate excitation */ + + if (model->voiced) { + + Ex[m].real = cosf(ex_phase[0]*m); + Ex[m].imag = sinf(ex_phase[0]*m); + } + else { + + /* When a few samples were tested I found that LPC filter + phase is not needed in the unvoiced case, but no harm in + keeping it. + */ + float phi = TWO_PI*(float)codec2_rand()/CODEC2_RAND_MAX; + Ex[m].real = cosf(phi); + Ex[m].imag = sinf(phi); + } + + /* filter using LPC filter */ + + A_[m].real = H[m].real*Ex[m].real - H[m].imag*Ex[m].imag; + A_[m].imag = H[m].imag*Ex[m].real + H[m].real*Ex[m].imag; + + /* modify sinusoidal phase */ + + new_phi = atan2f(A_[m].imag, A_[m].real+1E-12); + model->phi[m] = new_phi; + } + +} + + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: mag_to_phase + AUTHOR......: David Rowe + DATE CREATED: Jan 2017 + + Algorithm for http://www.dsprelated.com/showcode/20.php ported to C. See + also Octave function mag_to_phase.m + + Given a magnitude spectrum in dB, returns a minimum-phase phase + spectra. + +\*---------------------------------------------------------------------------*/ + +void mag_to_phase(float phase[], /* Nfft/2+1 output phase samples in radians */ + float Gdbfk[], /* Nfft/2+1 postive freq amplitudes samples in dB */ + int Nfft, + codec2_fft_cfg fft_fwd_cfg, + codec2_fft_cfg fft_inv_cfg + ) +{ + COMP Sdb[Nfft], c[Nfft], cf[Nfft], Cf[Nfft]; + int Ns = Nfft/2+1; + int i; + + /* install negative frequency components, 1/Nfft takes into + account kiss fft lack of scaling on ifft */ + + Sdb[0].real = Gdbfk[0]; + Sdb[0].imag = 0.0; + for(i=1; i. +*/ + +#ifndef __PHASE__ +#define __PHASE__ + +#include "codec2_fft.h" +#include "comp.h" + +void sample_phase(MODEL *model, COMP filter_phase[], COMP A[]); +void phase_synth_zero_order(int n_samp, MODEL *model, float *ex_phase, COMP filter_phase[]); + +void mag_to_phase(float phase[], float Gdbfk[], int Nfft, codec2_fft_cfg fwd_cfg, codec2_fft_cfg inv_cfg); + +#endif diff --git a/postfilter.c b/postfilter.c new file mode 100644 index 0000000..6542c7c --- /dev/null +++ b/postfilter.c @@ -0,0 +1,142 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: postfilter.c + AUTHOR......: David Rowe + DATE CREATED: 13/09/09 + + Postfilter to improve sound quality for speech with high levels of + background noise. Unlike mixed-excitation models requires no bits + to be transmitted to handle background noise. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2009 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#include +#include +#include +#include + +#include "defines.h" +#include "comp.h" +#include "dump.h" +#include "sine.h" +#include "postfilter.h" + +/*---------------------------------------------------------------------------*\ + + DEFINES + +\*---------------------------------------------------------------------------*/ + +#define BG_THRESH 40.0 /* only consider low levels signals for bg_est */ +#define BG_BETA 0.1 /* averaging filter constant */ +#define BG_MARGIN 6.0 /* harmonics this far above BG noise are + randomised. Helped make bg noise less + spikey (impulsive) for mmt1, but speech was + perhaps a little rougher. + */ + +/*---------------------------------------------------------------------------*\ + + postfilter() + + The post filter is designed to help with speech corrupted by + background noise. The zero phase model tends to make speech with + background noise sound "clicky". With high levels of background + noise the low level inter-formant parts of the spectrum will contain + noise rather than speech harmonics, so modelling them as voiced + (i.e. a continuous, non-random phase track) is inaccurate. + + Some codecs (like MBE) have a mixed voicing model that breaks the + spectrum into voiced and unvoiced regions. Several bits/frame + (5-12) are required to transmit the frequency selective voicing + information. Mixed excitation also requires accurate voicing + estimation (parameter estimators always break occasionally under + exceptional conditions). + + In our case we use a post filter approach which requires no + additional bits to be transmitted. The decoder measures the average + level of the background noise during unvoiced frames. If a harmonic + is less than this level it is made unvoiced by randomising it's + phases. + + This idea is rather experimental. Some potential problems that may + happen: + + 1/ If someone says "aaaaaaaahhhhhhhhh" will background estimator track + up to speech level? This would be a bad thing. + + 2/ If background noise suddenly dissapears from the source speech does + estimate drop quickly? What is noise suddenly re-appears? + + 3/ Background noise with a non-flat sepctrum. Current algorithm just + comsiders scpetrum as a whole, but this could be broken up into + bands, each with their own estimator. + + 4/ Males and females with the same level of background noise. Check + performance the same. Changing Wo affects width of each band, may + affect bg energy estimates. + + 5/ Not sure what happens during long periods of voiced speech + e.g. "sshhhhhhh" + +\*---------------------------------------------------------------------------*/ + +void postfilter( + MODEL *model, + float *bg_est +) +{ + int m, uv; + float e, thresh; + + /* determine average energy across spectrum */ + + e = 1E-12; + for(m=1; m<=model->L; m++) + e += model->A[m]*model->A[m]; + + assert(e > 0.0); + e = 10.0*log10f(e/model->L); + + /* If beneath threhold, update bg estimate. The idea + of the threshold is to prevent updating during high level + speech. */ + + if ((e < BG_THRESH) && !model->voiced) + *bg_est = *bg_est*(1.0 - BG_BETA) + e*BG_BETA; + + /* now mess with phases during voiced frames to make any harmonics + less then our background estimate unvoiced. + */ + + uv = 0; + thresh = POW10F((*bg_est + BG_MARGIN)/20.0); + if (model->voiced) + for(m=1; m<=model->L; m++) + if (model->A[m] < thresh) { + model->phi[m] = (TWO_PI/CODEC2_RAND_MAX)*(float)codec2_rand(); + uv++; + } + +#ifdef DUMP + dump_bg(e, *bg_est, 100.0*uv/model->L); +#endif + +} diff --git a/postfilter.h b/postfilter.h new file mode 100644 index 0000000..156714e --- /dev/null +++ b/postfilter.h @@ -0,0 +1,33 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: postfilter.h + AUTHOR......: David Rowe + DATE CREATED: 13/09/09 + + Postfilter header file. + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2009 David Rowe + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __POSTFILTER__ +#define __POSTFILTER__ + +void postfilter(MODEL *model, float *bg_est); + +#endif diff --git a/quantise.c b/quantise.c new file mode 100644 index 0000000..37bf8be --- /dev/null +++ b/quantise.c @@ -0,0 +1,2051 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: quantise.c + AUTHOR......: David Rowe + DATE CREATED: 31/5/92 + + Quantisation functions for the sinusoidal coder. + +\*---------------------------------------------------------------------------*/ + +/* + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . + +*/ + +#include +#include +#include +#include +#include +#include + +#include "defines.h" +#include "dump.h" +#include "quantise.h" +#include "lpc.h" +#include "lsp.h" +#include "codec2_fft.h" +#include "phase.h" +#include "mbest.h" + +#undef PROFILE +#include "machdep.h" + +#define LSP_DELTA1 0.01 /* grid spacing for LSP root searches */ + +/*---------------------------------------------------------------------------*\ + + FUNCTION HEADERS + +\*---------------------------------------------------------------------------*/ + +float speech_to_uq_lsps(float lsp[], float ak[], float Sn[], float w[], + int m_pitch, int order); + +/*---------------------------------------------------------------------------*\ + + FUNCTIONS + +\*---------------------------------------------------------------------------*/ + +int lsp_bits(int i) { + return lsp_cb[i].log2m; +} + +int lspd_bits(int i) { + return lsp_cbd[i].log2m; +} + +#ifndef CORTEX_M4 +int mel_bits(int i) { + return mel_cb[i].log2m; +} + +int lspmelvq_cb_bits(int i) { + return lspmelvq_cb[i].log2m; +} +#endif + +#ifdef __EXPERIMENTAL__ +int lspdt_bits(int i) { + return lsp_cbdt[i].log2m; +} +#endif + +int lsp_pred_vq_bits(int i) { + return lsp_cbjvm[i].log2m; +} + +/*---------------------------------------------------------------------------*\ + + quantise_init + + Loads the entire LSP quantiser comprised of several vector quantisers + (codebooks). + +\*---------------------------------------------------------------------------*/ + +void quantise_init() +{ +} + +/*---------------------------------------------------------------------------*\ + + quantise + + Quantises vec by choosing the nearest vector in codebook cb, and + returns the vector index. The squared error of the quantised vector + is added to se. + +\*---------------------------------------------------------------------------*/ + +long quantise(const float * cb, float vec[], float w[], int k, int m, float *se) +/* float cb[][K]; current VQ codebook */ +/* float vec[]; vector to quantise */ +/* float w[]; weighting vector */ +/* int k; dimension of vectors */ +/* int m; size of codebook */ +/* float *se; accumulated squared error */ +{ + float e; /* current error */ + long besti; /* best index so far */ + float beste; /* best error so far */ + long j; + int i; + float diff; + + besti = 0; + beste = 1E32; + for(j=0; jlist[j].index[0]; + for(i=0; ilist[j].index[1]; + index[1] = n2 = mbest_stage2->list[j].index[0]; + for(i=0; ilist[0].index[2]; + n2 = mbest_stage3->list[0].index[1]; + n3 = mbest_stage3->list[0].index[0]; + mse = 0.0; + for (i=0;i max_Rw) + max_Rw = Rw[i]; + if (Rw[i] < min_Rw) + min_Rw = Rw[i]; + + } + + PROFILE_SAMPLE_AND_LOG(tr, tww, " R"); + + #ifdef DUMP + if (dump) + dump_Rw(Rw); + #endif + + /* create post filter mag spectrum and apply ------------------*/ + + /* measure energy before post filtering */ + + e_before = 1E-4; + for(i=0; i 242 ms + // so please leave it as is or improve further + // since this code is called 4 times it results in almost 4ms gain (21ms -> 17ms per audio frame decode @ 1300 ) + + for(i=0; iL; m++) { + am = (int)((m - 0.5)*model->Wo/r + 0.5); + bm = (int)((m + 0.5)*model->Wo/r + 0.5); + + // FIXME: With arm_rfft_fast_f32 we have to use this + // otherwise sometimes a to high bm is calculated + // which causes trouble later in the calculation + // chain + // it seems for some reason model->Wo is calculated somewhat too high + if (bm>FFT_ENC/2) + { + bm = FFT_ENC/2; + } + Em = 0.0; + + for(i=am; iA[m]*model->A[m]; + noise += (model->A[m] - Am)*(model->A[m] - Am); + + /* This code significantly improves perf of LPC model, in + particular when combined with phase0. The LPC spectrum tends + to track just under the peaks of the spectral envelope, and + just above nulls. This algorithm does the reverse to + compensate - raising the amplitudes of spectral peaks, while + attenuating the null. This enhances the formants, and + supresses the energy between formants. */ + + if (sim_pf) { + if (Am > model->A[m]) + Am *= 0.7; + if (Am < model->A[m]) + Am *= 1.4; + } + model->A[m] = Am; + } + *snr = 10.0*log10f(signal/noise); + + PROFILE_SAMPLE_AND_LOG2(tpf, " rec"); +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: encode_Wo() + AUTHOR......: David Rowe + DATE CREATED: 22/8/2010 + + Encodes Wo using a WO_LEVELS quantiser. + +\*---------------------------------------------------------------------------*/ + +int encode_Wo(C2CONST *c2const, float Wo, int bits) +{ + int index, Wo_levels = 1<Wo_min; + float Wo_max = c2const->Wo_max; + float norm; + + norm = (Wo - Wo_min)/(Wo_max - Wo_min); + index = floorf(Wo_levels * norm + 0.5); + if (index < 0 ) index = 0; + if (index > (Wo_levels-1)) index = Wo_levels-1; + + return index; +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: decode_Wo() + AUTHOR......: David Rowe + DATE CREATED: 22/8/2010 + + Decodes Wo using a WO_LEVELS quantiser. + +\*---------------------------------------------------------------------------*/ + +float decode_Wo(C2CONST *c2const, int index, int bits) +{ + float Wo_min = c2const->Wo_min; + float Wo_max = c2const->Wo_max; + float step; + float Wo; + int Wo_levels = 1<Wo_min; + float Wo_max = c2const->Wo_max; + float norm; + + norm = (log10f(Wo) - log10f(Wo_min))/(log10f(Wo_max) - log10f(Wo_min)); + index = floorf(Wo_levels * norm + 0.5); + if (index < 0 ) index = 0; + if (index > (Wo_levels-1)) index = Wo_levels-1; + + return index; +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: decode_log_Wo() + AUTHOR......: David Rowe + DATE CREATED: 22/8/2010 + + Decodes Wo using a WO_LEVELS quantiser in the log domain. + +\*---------------------------------------------------------------------------*/ + +float decode_log_Wo(C2CONST *c2const, int index, int bits) +{ + float Wo_min = c2const->Wo_min; + float Wo_max = c2const->Wo_max; + float step; + float Wo; + int Wo_levels = 1<Wo_min; + float Wo_max = c2const->Wo_max; + float norm; + + norm = (Wo - prev_Wo)/(Wo_max - Wo_min); + index = floorf(WO_LEVELS * norm + 0.5); + //printf("ENC index: %d ", index); + + /* hard limit */ + + max_index = (1 << (WO_DT_BITS-1)) - 1; + min_index = - (max_index+1); + if (index > max_index) index = max_index; + if (index < min_index) index = min_index; + //printf("max_index: %d min_index: %d hard index: %d ", + // max_index, min_index, index); + + /* mask so that only LSB WO_DT_BITS remain, bit WO_DT_BITS is the sign bit */ + + mask = ((1 << WO_DT_BITS) - 1); + index &= mask; + //printf("mask: 0x%x index: 0x%x\n", mask, index); + + return index; +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: decode_Wo_dt() + AUTHOR......: David Rowe + DATE CREATED: 6 Nov 2011 + + Decodes Wo using WO_DT_BITS difference from last frame. + +\*---------------------------------------------------------------------------*/ + +float decode_Wo_dt(C2CONST *c2const, int index, float prev_Wo) +{ + float Wo_min = c2const->Wo_min; + float Wo_max = c2const->Wo_max; + float step; + float Wo; + int mask; + + /* sign extend index */ + + //printf("DEC index: %d "); + if (index & (1 << (WO_DT_BITS-1))) { + mask = ~((1 << WO_DT_BITS) - 1); + index |= mask; + } + //printf("DEC mask: 0x%x index: %d \n", mask, index); + + step = (Wo_max - Wo_min)/WO_LEVELS; + Wo = prev_Wo + step*(index); + + /* bit errors can make us go out of range leading to all sorts of + probs like seg faults */ + + if (Wo > Wo_max) Wo = Wo_max; + if (Wo < Wo_min) Wo = Wo_min; + + return Wo; +} +#endif + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: speech_to_uq_lsps() + AUTHOR......: David Rowe + DATE CREATED: 22/8/2010 + + Analyse a windowed frame of time domain speech to determine LPCs + which are the converted to LSPs for quantisation and transmission + over the channel. + +\*---------------------------------------------------------------------------*/ + +float speech_to_uq_lsps(float lsp[], + float ak[], + float Sn[], + float w[], + int m_pitch, + int order +) +{ + int i, roots; + float Wn[m_pitch]; + float R[order+1]; + float e, E; + + e = 0.0; + for(i=0; iWo < (PI*150.0/4000)) { + model->A[1] *= 0.032; + } +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: encode_energy() + AUTHOR......: David Rowe + DATE CREATED: 22/8/2010 + + Encodes LPC energy using an E_LEVELS quantiser. + +\*---------------------------------------------------------------------------*/ + +int encode_energy(float e, int bits) +{ + int index, e_levels = 1< (e_levels-1)) index = e_levels-1; + + return index; +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: decode_energy() + AUTHOR......: David Rowe + DATE CREATED: 22/8/2010 + + Decodes energy using a E_LEVELS quantiser. + +\*---------------------------------------------------------------------------*/ + +float decode_energy(int index, int bits) +{ + float e_min = E_MIN_DB; + float e_max = E_MAX_DB; + float step; + float e; + int e_levels = 1<.5) /* Lower if not stable */ + { + w[0] *= .5; + } + + /* Lower weight for low energy */ + if (x[1] < xp[1]-10) + { + w[1] *= .5; + } + if (x[1] < xp[1]-20) + { + w[1] *= .5; + } + + //w[0] = 30; + //w[1] = 1; + + /* Square the weights because it's applied on the squared error */ + w[0] *= w[0]; + w[1] *= w[1]; + +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: quantise_WoE() + AUTHOR......: Jean-Marc Valin & David Rowe + DATE CREATED: 29 Feb 2012 + + Experimental joint Wo and LPC energy vector quantiser developed by + Jean-Marc Valin. Exploits correlations between the difference in + the log pitch and log energy from frame to frame. For example + both the pitch and energy tend to only change by small amounts + during voiced speech, however it is important that these changes be + coded carefully. During unvoiced speech they both change a lot but + the ear is less sensitve to errors so coarser quantisation is OK. + + The ear is sensitive to log energy and loq pitch so we quantise in + these domains. That way the error measure used to quantise the + values is close to way the ear senses errors. + + See http://jmspeex.livejournal.com/10446.html + +\*---------------------------------------------------------------------------*/ + +void quantise_WoE(C2CONST *c2const, MODEL *model, float *e, float xq[]) +{ + int i, n1; + float x[2]; + float err[2]; + float w[2]; + const float *codebook1 = ge_cb[0].cb; + int nb_entries = ge_cb[0].m; + int ndim = ge_cb[0].k; + float Wo_min = c2const->Wo_min; + float Wo_max = c2const->Wo_max; + float Fs = c2const->Fs; + + /* VQ is only trained for Fs = 8000 Hz */ + + assert(Fs == 8000); + + x[0] = log10f((model->Wo/PI)*4000.0/50.0)/log10f(2); + x[1] = 10.0*log10f(1e-4 + *e); + + compute_weights2(x, xq, w); + for (i=0;iWo = powf(2.0, xq[0])*(PI*50.0)/4000.0; + + /* bit errors can make us go out of range leading to all sorts of + probs like seg faults */ + + if (model->Wo > Wo_max) model->Wo = Wo_max; + if (model->Wo < Wo_min) model->Wo = Wo_min; + + model->L = PI/model->Wo; /* if we quantise Wo re-compute L */ + + *e = POW10F(xq[1]/10.0); +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: encode_WoE() + AUTHOR......: Jean-Marc Valin & David Rowe + DATE CREATED: 11 May 2012 + + Joint Wo and LPC energy vector quantiser developed my Jean-Marc + Valin. Returns index, and updated states xq[]. + +\*---------------------------------------------------------------------------*/ + +int encode_WoE(MODEL *model, float e, float xq[]) +{ + int i, n1; + float x[2]; + float err[2]; + float w[2]; + const float *codebook1 = ge_cb[0].cb; + int nb_entries = ge_cb[0].m; + int ndim = ge_cb[0].k; + + assert((1<Wo/PI)*4000.0/50.0)/log10f(2); + x[1] = 10.0*log10f(1e-4 + e); + + compute_weights2(x, xq, w); + for (i=0;iWo_min; + float Wo_max = c2const->Wo_max; + + for (i=0;iWo = powf(2.0, xq[0])*(PI*50.0)/4000.0; + + /* bit errors can make us go out of range leading to all sorts of + probs like seg faults */ + + if (model->Wo > Wo_max) model->Wo = Wo_max; + if (model->Wo < Wo_min) model->Wo = Wo_min; + + model->L = PI/model->Wo; /* if we quantise Wo re-compute L */ + + *e = POW10F(xq[1]/10.0); +} + diff --git a/quantise.h b/quantise.h new file mode 100644 index 0000000..4baa87c --- /dev/null +++ b/quantise.h @@ -0,0 +1,141 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: quantise.h + AUTHOR......: David Rowe + DATE CREATED: 31/5/92 + + Quantisation functions for the sinusoidal coder. + +\*---------------------------------------------------------------------------*/ + +/* + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +#ifndef __QUANTISE__ +#define __QUANTISE__ + +#include "codec2_fft.h" +#include "comp.h" + +#define WO_BITS 7 +#define WO_LEVELS (1<. +*/ + +/*---------------------------------------------------------------------------*\ + + INCLUDES + +\*---------------------------------------------------------------------------*/ + +#include +#include +#include + +#include "defines.h" +#include "sine.h" +#include "kiss_fft.h" + +#define HPF_BETA 0.125 + +/*---------------------------------------------------------------------------*\ + + HEADERS + +\*---------------------------------------------------------------------------*/ + +void hs_pitch_refinement(MODEL *model, COMP Sw[], float pmin, float pmax, + float pstep); + +/*---------------------------------------------------------------------------*\ + + FUNCTIONS + +\*---------------------------------------------------------------------------*/ + +C2CONST c2const_create(int Fs, float framelength_s) { + C2CONST c2const; + + assert((Fs == 8000) || (Fs = 16000)); + c2const.Fs = Fs; + c2const.n_samp = round(Fs*framelength_s); + c2const.max_amp = floor(Fs*P_MIN_S/2); + c2const.p_min = floor(Fs*P_MIN_S); + c2const.p_max = floor(Fs*P_MAX_S); + c2const.m_pitch = floor(Fs*M_PITCH_S); + c2const.Wo_min = TWO_PI/c2const.p_max; + c2const.Wo_max = TWO_PI/c2const.p_min; + + if (Fs == 8000) { + c2const.nw = 279; + } else { + c2const.nw = 511; /* actually a bit shorter in time but lets us maintain constant FFT size */ + } + + c2const.tw = Fs*TW_S; + + /* + fprintf(stderr, "max_amp: %d m_pitch: %d\n", c2const.n_samp, c2const.m_pitch); + fprintf(stderr, "p_min: %d p_max: %d\n", c2const.p_min, c2const.p_max); + fprintf(stderr, "Wo_min: %f Wo_max: %f\n", c2const.Wo_min, c2const.Wo_max); + fprintf(stderr, "nw: %d tw: %d\n", c2const.nw, c2const.tw); + */ + + return c2const; +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: make_analysis_window + AUTHOR......: David Rowe + DATE CREATED: 11/5/94 + + Init function that generates the time domain analysis window and it's DFT. + +\*---------------------------------------------------------------------------*/ + +void make_analysis_window(C2CONST *c2const, codec2_fft_cfg fft_fwd_cfg, float w[], COMP W[]) +{ + float m; + COMP wshift[FFT_ENC]; + COMP temp; + int i,j; + int m_pitch = c2const->m_pitch; + int nw = c2const->nw; + + /* + Generate Hamming window centered on M-sample pitch analysis window + + 0 M/2 M-1 + |-------------|-------------| + |-------|-------| + nw samples + + All our analysis/synthsis is centred on the M/2 sample. + */ + + m = 0.0; + for(i=0; im_pitch; + int nw = c2const->nw; + + for(i=0; iWo + 5; + pmin = TWO_PI/model->Wo - 5; + pstep = 1.0; + hs_pitch_refinement(model,Sw,pmin,pmax,pstep); + + /* Fine refinement */ + + pmax = TWO_PI/model->Wo + 1; + pmin = TWO_PI/model->Wo - 1; + pstep = 0.25; + hs_pitch_refinement(model,Sw,pmin,pmax,pstep); + + /* Limit range */ + + if (model->Wo < TWO_PI/c2const->p_max) + model->Wo = TWO_PI/c2const->p_max; + if (model->Wo > TWO_PI/c2const->p_min) + model->Wo = TWO_PI/c2const->p_min; + + model->L = floorf(PI/model->Wo); + + /* trap occasional round off issues with floorf() */ + if (model->Wo*model->L >= 0.95*PI) { + model->L--; + } + assert(model->Wo*model->L < PI); +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: hs_pitch_refinement + AUTHOR......: David Rowe + DATE CREATED: 27/5/94 + + Harmonic sum pitch refinement function. + + pmin pitch search range minimum + pmax pitch search range maximum + step pitch search step size + model current pitch estimate in model.Wo + + model refined pitch estimate in model.Wo + +\*---------------------------------------------------------------------------*/ + +void hs_pitch_refinement(MODEL *model, COMP Sw[], float pmin, float pmax, float pstep) +{ + int m; /* loop variable */ + int b; /* bin for current harmonic centre */ + float E; /* energy for current pitch*/ + float Wo; /* current "test" fundamental freq. */ + float Wom; /* Wo that maximises E */ + float Em; /* mamimum energy */ + float r, one_on_r; /* number of rads/bin */ + float p; /* current pitch */ + + /* Initialisation */ + + model->L = PI/model->Wo; /* use initial pitch est. for L */ + Wom = model->Wo; + Em = 0.0; + r = TWO_PI/FFT_ENC; + one_on_r = 1.0/r; + + /* Determine harmonic sum for a range of Wo values */ + + for(p=pmin; p<=pmax; p+=pstep) { + E = 0.0; + Wo = TWO_PI/p; + + /* Sum harmonic magnitudes */ + for(m=1; m<=model->L; m++) { + b = (int)(m*Wo*one_on_r + 0.5); + E += Sw[b].real*Sw[b].real + Sw[b].imag*Sw[b].imag; + } + /* Compare to see if this is a maximum */ + + if (E > Em) { + Em = E; + Wom = Wo; + } + } + + model->Wo = Wom; +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: estimate_amplitudes + AUTHOR......: David Rowe + DATE CREATED: 27/5/94 + + Estimates the complex amplitudes of the harmonics. + +\*---------------------------------------------------------------------------*/ + +void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[], int est_phase) +{ + int i,m; /* loop variables */ + int am,bm; /* bounds of current harmonic */ + int b; /* DFT bin of centre of current harmonic */ + float den; /* denominator of amplitude expression */ + float r, one_on_r; /* number of rads/bin */ + int offset; + COMP Am; + + r = TWO_PI/FFT_ENC; + one_on_r = 1.0/r; + + for(m=1; m<=model->L; m++) { + den = 0.0; + am = (int)((m - 0.5)*model->Wo*one_on_r + 0.5); + bm = (int)((m + 0.5)*model->Wo*one_on_r + 0.5); + b = (int)(m*model->Wo/r + 0.5); + + /* Estimate ampltude of harmonic */ + + den = 0.0; + Am.real = Am.imag = 0.0; + offset = FFT_ENC/2 - (int)(m*model->Wo*one_on_r + 0.5); + for(i=am; iA[m] = sqrtf(den); + + if (est_phase) { + + /* Estimate phase of harmonic, this is expensive in CPU for + embedded devicesso we make it an option */ + + model->phi[m] = atan2f(Sw[b].imag,Sw[b].real); + } + } +} + +/*---------------------------------------------------------------------------*\ + + est_voicing_mbe() + + Returns the error of the MBE cost function for a fiven F0. + + Note: I think a lot of the operations below can be simplified as + W[].imag = 0 and has been normalised such that den always equals 1. + +\*---------------------------------------------------------------------------*/ + +float est_voicing_mbe( + C2CONST *c2const, + MODEL *model, + COMP Sw[], + COMP W[] + ) +{ + int l,al,bl,m; /* loop variables */ + COMP Am; /* amplitude sample for this band */ + int offset; /* centers Hw[] about current harmonic */ + float den; /* denominator of Am expression */ + float error; /* accumulated error between original and synthesised */ + float Wo; + float sig, snr; + float elow, ehigh, eratio; + float sixty; + COMP Ew; + Ew.real = 0; + Ew.imag = 0; + + int l_1000hz = model->L*1000.0/(c2const->Fs/2); + sig = 1E-4; + for(l=1; l<=l_1000hz; l++) { + sig += model->A[l]*model->A[l]; + } + + Wo = model->Wo; + error = 1E-4; + + /* Just test across the harmonics in the first 1000 Hz */ + + for(l=1; l<=l_1000hz; l++) { + Am.real = 0.0; + Am.imag = 0.0; + den = 0.0; + al = ceilf((l - 0.5)*Wo*FFT_ENC/TWO_PI); + bl = ceilf((l + 0.5)*Wo*FFT_ENC/TWO_PI); + + /* Estimate amplitude of harmonic assuming harmonic is totally voiced */ + + offset = FFT_ENC/2 - l*Wo*FFT_ENC/TWO_PI + 0.5; + for(m=al; m V_THRESH) + model->voiced = 1; + else + model->voiced = 0; + + /* post processing, helps clean up some voicing errors ------------------*/ + + /* + Determine the ratio of low freqency to high frequency energy, + voiced speech tends to be dominated by low frequency energy, + unvoiced by high frequency. This measure can be used to + determine if we have made any gross errors. + */ + + int l_2000hz = model->L*2000.0/(c2const->Fs/2); + int l_4000hz = model->L*4000.0/(c2const->Fs/2); + elow = ehigh = 1E-4; + for(l=1; l<=l_2000hz; l++) { + elow += model->A[l]*model->A[l]; + } + for(l=l_2000hz; l<=l_4000hz; l++) { + ehigh += model->A[l]*model->A[l]; + } + eratio = 10.0*log10f(elow/ehigh); + + /* Look for Type 1 errors, strongly V speech that has been + accidentally declared UV */ + + if (model->voiced == 0) + if (eratio > 10.0) + model->voiced = 1; + + /* Look for Type 2 errors, strongly UV speech that has been + accidentally declared V */ + + if (model->voiced == 1) { + if (eratio < -10.0) + model->voiced = 0; + + /* A common source of Type 2 errors is the pitch estimator + gives a low (50Hz) estimate for UV speech, which gives a + good match with noise due to the close harmoonic spacing. + These errors are much more common than people with 50Hz3 + pitch, so we have just a small eratio threshold. */ + + sixty = 60.0*TWO_PI/c2const->Fs; + if ((eratio < -4.0) && (model->Wo <= sixty)) + model->voiced = 0; + } + //printf(" v: %d snr: %f eratio: %3.2f %f\n",model->voiced,snr,eratio,dF0); + + return snr; +} + +/*---------------------------------------------------------------------------*\ + + FUNCTION....: make_synthesis_window + AUTHOR......: David Rowe + DATE CREATED: 11/5/94 + + Init function that generates the trapezoidal (Parzen) sythesis window. + +\*---------------------------------------------------------------------------*/ + +void make_synthesis_window(C2CONST *c2const, float Pn[]) +{ + int i; + float win; + int n_samp = c2const->n_samp; + int tw = c2const->tw; + + /* Generate Parzen window in time domain */ + + win = 0.0; + for(i=0; iL; l++) { + b = (int)(l*model->Wo*FFT_DEC/TWO_PI + 0.5); + if (b > ((FFT_DEC/2)-1)) { + b = (FFT_DEC/2)-1; + } + Sw_[b].real = model->A[l]*cosf(model->phi[l]); + Sw_[b].imag = model->A[l]*sinf(model->phi[l]); + } + + /* Perform inverse DFT */ + + codec2_fftri(fftr_inv_cfg, Sw_,sw_); + + /* Overlap add to previous samples */ + + #ifdef USE_KISS_FFT + #define FFTI_FACTOR ((float)1.0) + #else + #define FFTI_FACTOR ((float32_t)FFT_DEC) + #endif + + for(i=0; i. +*/ + +#ifndef __SINE__ +#define __SINE__ + +#include "defines.h" +#include "comp.h" +#include "codec2_fft.h" + +C2CONST c2const_create(int Fs, float framelength_ms); + +void make_analysis_window(C2CONST *c2const, codec2_fft_cfg fft_fwd_cfg, float w[], COMP W[]); +float hpf(float x, float states[]); +void dft_speech(C2CONST *c2const, codec2_fft_cfg fft_fwd_cfg, COMP Sw[], float Sn[], float w[]); +void two_stage_pitch_refinement(C2CONST *c2const, MODEL *model, COMP Sw[]); +void estimate_amplitudes(MODEL *model, COMP Sw[], COMP W[], int est_phase); +float est_voicing_mbe(C2CONST *c2const, MODEL *model, COMP Sw[], COMP W[]); +void make_synthesis_window(C2CONST *c2const, float Pn[]); +void synthesise(int n_samp, codec2_fftr_cfg fftr_inv_cfg, float Sn_[], MODEL *model, float Pn[], int shift); + +#define CODEC2_RAND_MAX 32767 +int codec2_rand(void); + +#endif diff --git a/stripdown.sh b/stripdown.sh new file mode 100755 index 0000000..2e4466e --- /dev/null +++ b/stripdown.sh @@ -0,0 +1,120 @@ +#!/bin/sh + +BUILDDIR=build_stripped +DESTDIR=codec2lite + +LIBSRC="codebook.c codebookd.c codebookge.c codebookjvm.c codebooknewamp1.c codebooknewamp1_energy.c codec2.c codec2_fft.c interp.c kiss_fft.c kiss_fftr.c lpc.c lsp.c mbest.c newamp1.c newamp2.c nlp.c pack.c phase.c postfilter.c quantise.c sine.c" +LIBGENSRC="codebooklspmelvq.c codebookmel.c codebooknewamp2.c codebooknewamp2_energy.c" + +LIBINC="_kiss_fft_guts.h comp_prim.h lpc.h os.h bpf.h lsp.h phase.h bpfb.h defines.h machdep.h postfilter.h mbest.h quantise.h codec2_fft.h interp.h newamp1.h sine.h codec2_internal.h kiss_fft.h newamp2.h comp.h kiss_fftr.h nlp.h" +LIBGENINC="version.h" + +EMPTYINC="c2wideband.h dump.h" + +rm -rf "${BUILDDIR}" "${DESTDIR}" +mkdir "${BUILDDIR}" "${DESTDIR}" + +# copy LICENSE +cp COPYING "${DESTDIR}"/ + +# copy static sources +for file in ${LIBSRC} ${LIBINC}; do + cp src/"${file}" "${DESTDIR}"/ +done + +# fixup one include +sed s:codec2/version.h:version.h: src/codec2.h > "${DESTDIR}"/codec2.h + +cat > "${DESTDIR}"/debug_alloc.h <<'EOF' +#define FREE free +#define MALLOC malloc +EOF + +for file in ${EMPTYINC}; do + touch "${DESTDIR}"/"${file}" +done + +cd ${BUILDDIR} +cmake .. +make tnewamp1 + +# copy generated files +for file in ${LIBGENSRC}; do + cp src/"${file}" ../"${DESTDIR}"/ +done + +for file in ${LIBGENINC}; do + cp codec2/"${file}" ../"${DESTDIR}"/ +done + +cd .. +rm -r "${BUILDDIR}" + +cat > "${DESTDIR}"/Makefile <<'EOF' +CFLAGS = -Wall -Wno-strict-overflow -std=gnu11 -fPIC -g -O2 -I. +CFLAGS += -DHORUS_L2_RX -DINTERLEAVER -DRUN_TIME_TABLES -DSCRAMBLER -Dcodec2_EXPORTS +CFLAGS += -Wno-incompatible-pointer-types-discards-qualifiers + +LIBSRC=codebook.c codebookd.c codebookge.c codebookmel.c codebooklspmelvq.c codebookjvm.c \ + codebooknewamp1.c codebooknewamp1_energy.c codebooknewamp2.c codebooknewamp2_energy.c \ + codec2.c codec2_fft.c interp.c kiss_fft.c kiss_fftr.c lpc.c lsp.c mbest.c \ + newamp1.c newamp2.c nlp.c pack.c phase.c postfilter.c quantise.c sine.c + +all: main + +main: main.c $(LIBSRC) + clang $(CFLAGS) -o $@ $^ + +.PHONY: clean +clean: + rm -f main +EOF + +cat > "${DESTDIR}"/main.c <<'EOF' +#include +#include + +#include "codec2.h" + +int main() { + struct timespec tstart={0,0}, tend={0,0}; + short input[976692]; + FILE * recoded = fopen("count-recoded.raw", "w+"); + FILE * f = fopen("count.raw", "r"); + void * codec2 = codec2_create(CODEC2_MODE_700C); + int nsam = codec2_samples_per_frame(codec2); + int nbit = codec2_bits_per_frame(codec2); + int off = 0; + unsigned char bits[128]; + + fread(input, 976692, 1, f); + fclose(f); + + clock_gettime(CLOCK_MONOTONIC, &tstart); + + while (off < 976692 / 2) { + codec2_encode(codec2, bits, input + off); + codec2_decode(codec2, input + off, bits); + off += 320; + } + + clock_gettime(CLOCK_MONOTONIC, &tend); + printf("%lf\n", ((double)tend.tv_sec + 1.0e-9*tend.tv_nsec) - ((double)tstart.tv_sec + 1.0e-9*tstart.tv_nsec)); + + fwrite(input, 976692, 1, recoded); + + codec2_destroy(codec2); +} +EOF + +cat > ${DESTDIR}/README <<'EOF' + +This project is meant to generate a subset of the amazing codec2 library containing only the actual speech codec and having no further dependencies than a C99 compiler. + +The generate a stripped down version of codec2 that does not need CMake etc, just copy the stripdown.sh file to your codec2 directory and run it. This will generate the directory you see here. + +Codec 2 is an open source (LGPL 2.1) low bit rate speech codec: + +http://rowetel.com/codec2.html + +EOF diff --git a/version.h b/version.h new file mode 100644 index 0000000..fc9891d --- /dev/null +++ b/version.h @@ -0,0 +1,37 @@ +/*---------------------------------------------------------------------------*\ + + FILE........: version.h + AUTHOR......: Tomas Härdin + DATE CREATED: 03 November 2017 + + Codec 2 VERSION #defines + +\*---------------------------------------------------------------------------*/ + +/* + Copyright (C) 2017 Tomas Härdin + + All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 2.1, as + published by the Free Software Foundation. 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 Lesser General Public License + along with this program; if not, see . +*/ + +//this functions both as an include guard and your typical HAVE macro +#ifndef CODEC2_HAVE_VERSION +#define CODEC2_HAVE_VERSION + +#define CODEC2_VERSION_MAJOR 0 +#define CODEC2_VERSION_MINOR 9 +/* #undef CODEC2_VERSION_PATCH */ +#define CODEC2_VERSION "0.9" + +#endif //CODEC2_HAVE_VERSION -- cgit v1.2.3